diff options
Diffstat (limited to 'main/vim/vim-7.3.806.patch')
-rw-r--r-- | main/vim/vim-7.3.806.patch | 132911 |
1 files changed, 0 insertions, 132911 deletions
diff --git a/main/vim/vim-7.3.806.patch b/main/vim/vim-7.3.806.patch deleted file mode 100644 index af813b1522..0000000000 --- a/main/vim/vim-7.3.806.patch +++ /dev/null @@ -1,132911 +0,0 @@ -To: vim-dev@vim.org -Subject: Patch 7.3.001 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.001 -Problem: When editing "src/main.c" and 'path' set to "./proto", - ":find e<C-D" shows ./proto/eval.pro instead of eval.pro. -Solution: Check for path separator when comparing names. (Nazri Ramliy) -Files: src/misc1.c - - -*** ../vim-7.3.000/src/misc1.c 2010-08-15 21:57:27.000000000 +0200 ---- src/misc1.c 2010-08-16 20:43:25.000000000 +0200 -*************** -*** 9317,9323 **** - continue; /* it's different when it's shorter */ - - rival = other_paths[j] + other_path_len - candidate_len; -! if (fnamecmp(maybe_unique, rival) == 0) - return FALSE; /* match */ - } - ---- 9317,9324 ---- - continue; /* it's different when it's shorter */ - - rival = other_paths[j] + other_path_len - candidate_len; -! if (fnamecmp(maybe_unique, rival) == 0 -! && (rival == other_paths[j] || vim_ispathsep(*(rival - 1)))) - return FALSE; /* match */ - } - -*** ../vim-7.3.000/src/version.c 2010-08-15 21:57:25.000000000 +0200 ---- src/version.c 2010-08-16 20:53:09.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 1, - /**/ - - --- -From "know your smileys": - (:-# Said something he shouldn't have - - /// 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 /// -To: vim-dev@vim.org -Subject: Patch 7.3.002 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.002 -Problem: ":find" completion doesn't work when halfway an environment - variable. (Dominique Pelle) -Solution: Only use in-path completion when expanding file names. (Nazri - Ramliy) -Files: src/ex_docmd.c - - -*** ../vim-7.3.001/src/ex_docmd.c 2010-08-15 21:57:27.000000000 +0200 ---- src/ex_docmd.c 2010-08-16 20:51:22.000000000 +0200 -*************** -*** 3465,3471 **** - case CMD_find: - case CMD_sfind: - case CMD_tabfind: -! xp->xp_context = EXPAND_FILES_IN_PATH; - break; - case CMD_cd: - case CMD_chdir: ---- 3465,3472 ---- - case CMD_find: - case CMD_sfind: - case CMD_tabfind: -! if (xp->xp_context == EXPAND_FILES) -! xp->xp_context = EXPAND_FILES_IN_PATH; - break; - case CMD_cd: - case CMD_chdir: -*** ../vim-7.3.001/src/version.c 2010-08-16 21:46:12.000000000 +0200 ---- src/version.c 2010-08-16 22:33:13.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 2, - /**/ - --- -Warning label on a superhero Halloween costume: -"Caution: Cape does not enable user to fly." - - /// 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 /// -To: vim-dev@vim.org -Subject: Patch 7.3.003 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.1.003 -Problem: Crash with specific BufWritePost autocmd. (Peter Odding) -Solution: Don't free the quickfix title twice. (Lech Lorens) -Files: src/quickfix.c - - -*** ../vim-7.3.002/src/quickfix.c 2010-08-15 21:57:26.000000000 +0200 ---- src/quickfix.c 2010-08-16 21:15:44.000000000 +0200 -*************** -*** 2125,2130 **** ---- 2125,2131 ---- - --qi->qf_lists[idx].qf_count; - } - vim_free(qi->qf_lists[idx].qf_title); -+ qi->qf_lists[idx].qf_title = NULL; - } - - /* -*** ../vim-7.3.002/src/version.c 2010-08-16 22:33:55.000000000 +0200 ---- src/version.c 2010-08-17 20:23:05.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 3, - /**/ - --- -From "know your smileys": - :-X My lips are sealed - - /// 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 /// -To: vim-dev@vim.org -Subject: Patch 7.3.004 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.004 -Problem: Crash when using very long regexp. (Peter Odding) -Solution: Reset reg_toolong. (Carlo Teubner) -Files: src/regexp.c - - -*** ../vim-7.3.003/src/regexp.c 2010-08-15 21:57:29.000000000 +0200 ---- src/regexp.c 2010-09-14 10:51:22.000000000 +0200 -*************** -*** 3538,3543 **** ---- 3538,3544 ---- - - regline = line; - reglnum = 0; -+ reg_toolong = FALSE; - - /* Simplest case: Anchored match need be tried only once. */ - if (prog->reganch) -*** ../vim-7.3.003/src/version.c 2010-08-17 20:23:18.000000000 +0200 ---- src/version.c 2010-09-14 10:52:09.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 4, - /**/ - --- -I have a watch cat! Just break in and she'll watch. - - /// 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 /// -To: vim-dev@vim.org -Subject: Patch 7.3.005 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.005 -Problem: Crash when using undotree(). (Christian Brabandt) -Solution: Increase the list reference count. Add a test for undotree() - (Lech Lorens) -Files: src/eval.c, src/testdir/Makefile, src/testdir/test61.in - - -*** ../vim-7.3.004/src/eval.c 2010-08-15 21:57:26.000000000 +0200 ---- src/eval.c 2010-09-14 12:43:04.000000000 +0200 -*************** -*** 7075,7081 **** - } - - /* -! * Add a list entry to dictionary "d". - * Returns FAIL when out of memory and when key already exists. - */ - int ---- 7075,7081 ---- - } - - /* -! * Add a list entry to dictionary "d". - * Returns FAIL when out of memory and when key already exists. - */ - int -*************** -*** 7097,7102 **** ---- 7097,7103 ---- - dictitem_free(item); - return FAIL; - } -+ ++list->lv_refcount; - return OK; - } - -*** ../vim-7.3.004/src/testdir/Makefile 2010-08-15 21:57:29.000000000 +0200 ---- src/testdir/Makefile 2010-09-14 12:38:56.000000000 +0200 -*************** -*** 44,50 **** - $(SCRIPTS) $(SCRIPTS_GUI): $(VIMPROG) - - clean: -! -rm -rf *.out *.failed *.rej *.orig test.log tiny.vim small.vim mbyte.vim mzscheme.vim test.ok X* valgrind.pid* viminfo - - test1.out: test1.in - -rm -f $*.failed tiny.vim small.vim mbyte.vim mzscheme.vim test.ok X* viminfo ---- 44,50 ---- - $(SCRIPTS) $(SCRIPTS_GUI): $(VIMPROG) - - clean: -! -rm -rf *.out *.failed *.rej *.orig test.log tiny.vim small.vim mbyte.vim mzscheme.vim test.ok X* valgrind.* viminfo - - test1.out: test1.in - -rm -f $*.failed tiny.vim small.vim mbyte.vim mzscheme.vim test.ok X* viminfo -*** ../vim-7.3.004/src/testdir/test61.in 2010-08-15 21:57:29.000000000 +0200 ---- src/testdir/test61.in 2010-09-14 12:38:56.000000000 +0200 -*************** -*** 4,9 **** ---- 4,13 ---- - Also tests :earlier and :later. - - STARTTEST -+ :echo undotree().entries -+ ENDTEST -+ -+ STARTTEST - :" Delete three characters and undo - Gx:set ul=100 - x:set ul=100 -*** ../vim-7.3.004/src/version.c 2010-09-14 10:55:24.000000000 +0200 ---- src/version.c 2010-09-14 12:39:59.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 5, - /**/ - --- -I'm writing a book. I've got the page numbers done. - - /// 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 /// -To: vim-dev@vim.org -Subject: Patch 7.3.006 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.006 -Problem: Can't build some multi-byte code with C89. -Solution: Move code to after declarations. (Joachim Schmitz) -Files: src/mbyte.c, src/spell.c - - -*** ../vim-7.3.005/src/mbyte.c 2010-08-15 21:57:28.000000000 +0200 ---- src/mbyte.c 2010-09-18 13:32:40.000000000 +0200 -*************** -*** 5167,5182 **** - void - xim_set_preedit() - { -- if (xic == NULL) -- return; -- -- xim_set_focus(TRUE); -- - XVaNestedList attr_list; - XRectangle spot_area; - XPoint over_spot; - int line_space; - - if (!xim_has_focus) - { - /* hide XIM cursor */ ---- 5167,5182 ---- - void - xim_set_preedit() - { - XVaNestedList attr_list; - XRectangle spot_area; - XPoint over_spot; - int line_space; - -+ if (xic == NULL) -+ return; -+ -+ xim_set_focus(TRUE); -+ - if (!xim_has_focus) - { - /* hide XIM cursor */ -*************** -*** 5554,5565 **** - void - xim_set_status_area() - { -- if (xic == NULL) -- return; -- - XVaNestedList preedit_list = 0, status_list = 0, list = 0; - XRectangle pre_area, status_area; - - if (input_style & XIMStatusArea) - { - if (input_style & XIMPreeditArea) ---- 5554,5565 ---- - void - xim_set_status_area() - { - XVaNestedList preedit_list = 0, status_list = 0, list = 0; - XRectangle pre_area, status_area; - -+ if (xic == NULL) -+ return; -+ - if (input_style & XIMStatusArea) - { - if (input_style & XIMPreeditArea) -*** ../vim-7.3.005/src/spell.c 2010-08-15 21:57:32.000000000 +0200 ---- src/spell.c 2010-09-18 13:34:11.000000000 +0200 -*************** -*** 4679,4685 **** - buf_T *buf; - char_u fname[MAXPATHL]; - -! /* Go through all buffers and handle 'spelllang'. */ //<VN> - for (buf = firstbuf; buf != NULL; buf = buf->b_next) - ga_clear(&buf->b_s.b_langp); - ---- 4679,4685 ---- - buf_T *buf; - char_u fname[MAXPATHL]; - -! /* Go through all buffers and handle 'spelllang'. <VN> */ - for (buf = firstbuf; buf != NULL; buf = buf->b_next) - ga_clear(&buf->b_s.b_langp); - -*** ../vim-7.3.005/src/version.c 2010-09-14 12:47:30.000000000 +0200 ---- src/version.c 2010-09-18 13:34:23.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 6, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -163. You go outside for the fresh air (at -30 degrees) but open the - window first to hear new mail arrive. - - /// 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 /// -To: vim-dev@vim.org -Subject: Patch 7.3.007 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.007 -Problem: Python code defines global "buffer". Re-implements a grow-array. -Solution: Use a grow-array instead of coding the same functionality. Handle - out-of-memory situation properly. -Files: src/if_py_both.h - - -*** ../vim-7.3.006/src/if_py_both.h 2010-08-15 21:57:27.000000000 +0200 ---- src/if_py_both.h 2010-09-21 16:00:54.000000000 +0200 -*************** -*** 34,39 **** ---- 34,40 ---- - static PyObject *OutputWrite(PyObject *, PyObject *); - static PyObject *OutputWritelines(PyObject *, PyObject *); - -+ /* Function to write a line, points to either msg() or emsg(). */ - typedef void (*writefn)(char_u *); - static void writer(writefn fn, char_u *str, PyInt n); - -*************** -*** 122,173 **** - return Py_None; - } - -! static char_u *buffer = NULL; -! static PyInt buffer_len = 0; -! static PyInt buffer_size = 0; -! - static writefn old_fn = NULL; - - static void -- buffer_ensure(PyInt n) -- { -- PyInt new_size; -- char_u *new_buffer; -- -- if (n < buffer_size) -- return; -- -- new_size = buffer_size; -- while (new_size < n) -- new_size += 80; -- -- if (new_size != buffer_size) -- { -- new_buffer = alloc((unsigned)new_size); -- if (new_buffer == NULL) -- return; -- -- if (buffer) -- { -- memcpy(new_buffer, buffer, buffer_len); -- vim_free(buffer); -- } -- -- buffer = new_buffer; -- buffer_size = new_size; -- } -- } -- -- static void - PythonIO_Flush(void) - { -! if (old_fn && buffer_len) - { -! buffer[buffer_len] = 0; -! old_fn(buffer); - } -! -! buffer_len = 0; - } - - static void ---- 123,141 ---- - return Py_None; - } - -! /* Buffer IO, we write one whole line at a time. */ -! static garray_T io_ga = {0, 0, 1, 80, NULL}; - static writefn old_fn = NULL; - - static void - PythonIO_Flush(void) - { -! if (old_fn != NULL && io_ga.ga_len > 0) - { -! ((char_u *)io_ga.ga_data)[io_ga.ga_len] = NUL; -! old_fn((char_u *)io_ga.ga_data); - } -! io_ga.ga_len = 0; - } - - static void -*************** -*** 175,204 **** - { - char_u *ptr; - -! if (fn != old_fn && old_fn != NULL) - PythonIO_Flush(); -- - old_fn = fn; - - while (n > 0 && (ptr = memchr(str, '\n', n)) != NULL) - { - PyInt len = ptr - str; - -! buffer_ensure(buffer_len + len + 1); - -! memcpy(buffer + buffer_len, str, len); -! buffer_len += len; -! buffer[buffer_len] = 0; -! fn(buffer); - str = ptr + 1; - n -= len + 1; -! buffer_len = 0; - } - -! /* Put the remaining text into the buffer for later printing */ -! buffer_ensure(buffer_len + n + 1); -! memcpy(buffer + buffer_len, str, n); -! buffer_len += n; - } - - /***************/ ---- 143,176 ---- - { - char_u *ptr; - -! /* Flush when switching output function. */ -! if (fn != old_fn) - PythonIO_Flush(); - old_fn = fn; - -+ /* Write each NL separated line. Text after the last NL is kept for -+ * writing later. */ - while (n > 0 && (ptr = memchr(str, '\n', n)) != NULL) - { - PyInt len = ptr - str; - -! if (ga_grow(&io_ga, len + 1) == FAIL) -! break; - -! mch_memmove(((char *)io_ga.ga_data) + io_ga.ga_len, str, (size_t)len); -! ((char *)io_ga.ga_data)[io_ga.ga_len + len] = NUL; -! fn((char_u *)io_ga.ga_data); - str = ptr + 1; - n -= len + 1; -! io_ga.ga_len = 0; - } - -! /* Put the remaining text into io_ga for later printing. */ -! if (n > 0 && ga_grow(&io_ga, n + 1) == OK) -! { -! mch_memmove(((char *)io_ga.ga_data) + io_ga.ga_len, str, (size_t)n); -! io_ga.ga_len += n; -! } - } - - /***************/ -*** ../vim-7.3.006/src/version.c 2010-09-18 13:36:41.000000000 +0200 ---- src/version.c 2010-09-21 16:49:13.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 7, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -180. You maintain more than six e-mail addresses. - - /// 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 /// -To: vim-dev@vim.org -Subject: Patch 7.3.008 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.008 -Problem: 'cursorbind' is kept in places where 'scrollbind' is reset. -Solution: Reset 'cursorbind'. -Files: src/buffer.c, src/diff.c, src/ex_cmds.c, src/ex_cmds2.c, - src/ex_docmd.c, src/ex_getln.c, src/if_cscope.c, src/macros.h, - src/quickfix.c, src/search.c, src/tag.c, src/window.c - - -*** ../vim-7.3.007/src/buffer.c 2010-08-15 21:57:32.000000000 +0200 ---- src/buffer.c 2010-09-21 16:54:19.000000000 +0200 -*************** -*** 1288,1296 **** - /* Go to the other buffer. */ - set_curbuf(buf, action); - -! #if defined(FEAT_LISTCMDS) && defined(FEAT_SCROLLBIND) - if (action == DOBUF_SPLIT) -! curwin->w_p_scb = FALSE; /* reset 'scrollbind' */ - #endif - - #if defined(FEAT_AUTOCMD) && defined(FEAT_EVAL) ---- 1288,1299 ---- - /* Go to the other buffer. */ - set_curbuf(buf, action); - -! #if defined(FEAT_LISTCMDS) \ -! && (defined(FEAT_SCROLLBIND) || defined(FEAT_CURSORBIND)) - if (action == DOBUF_SPLIT) -! { -! RESET_BINDING(curwin); /* reset 'scrollbind' and 'cursorbind' */ -! } - #endif - - #if defined(FEAT_AUTOCMD) && defined(FEAT_EVAL) -*************** -*** 1917,1925 **** - tabpage_new(); - else if (win_split(0, 0) == FAIL) /* Open in a new window */ - return FAIL; -! # ifdef FEAT_SCROLLBIND -! curwin->w_p_scb = FALSE; -! # endif - } - } - #endif ---- 1920,1926 ---- - tabpage_new(); - else if (win_split(0, 0) == FAIL) /* Open in a new window */ - return FAIL; -! RESET_BINDING(curwin); - } - } - #endif -*** ../vim-7.3.007/src/diff.c 2010-08-15 21:57:32.000000000 +0200 ---- src/diff.c 2010-09-21 16:14:07.000000000 +0200 -*************** -*** 1127,1137 **** - # endif - - wp->w_p_diff = TRUE; - #ifdef FEAT_CURSORBIND -- /* Use cursorbind if it's available */ - wp->w_p_crb = TRUE; - #endif -- wp->w_p_scb = TRUE; - wp->w_p_wrap = FALSE; - # ifdef FEAT_FOLDING - curwin = wp; ---- 1127,1139 ---- - # endif - - wp->w_p_diff = TRUE; -+ /* Use 'scrollbind' and 'cursorbind' when available */ -+ #ifdef FEAT_SCROLLBIND -+ wp->w_p_scb = TRUE; -+ #endif - #ifdef FEAT_CURSORBIND - wp->w_p_crb = TRUE; - #endif - wp->w_p_wrap = FALSE; - # ifdef FEAT_FOLDING - curwin = wp; -*************** -*** 1177,1186 **** - { - /* Set 'diff', 'scrollbind' off and 'wrap' on. */ - wp->w_p_diff = FALSE; -! #ifdef FEAT_CURSORBIND -! wp->w_p_crb = FALSE; -! #endif -! wp->w_p_scb = FALSE; - wp->w_p_wrap = TRUE; - #ifdef FEAT_FOLDING - curwin = wp; ---- 1179,1185 ---- - { - /* Set 'diff', 'scrollbind' off and 'wrap' on. */ - wp->w_p_diff = FALSE; -! RESET_BINDING(wp); - wp->w_p_wrap = TRUE; - #ifdef FEAT_FOLDING - curwin = wp; -*** ../vim-7.3.007/src/ex_cmds.c 2010-08-15 21:57:26.000000000 +0200 ---- src/ex_cmds.c 2010-09-21 16:15:07.000000000 +0200 -*************** -*** 3498,3506 **** - curbuf->b_p_bin = FALSE; /* reset 'bin' before reading file */ - curwin->w_p_nu = 0; /* no line numbers */ - curwin->w_p_rnu = 0; /* no relative line numbers */ -! #ifdef FEAT_SCROLLBIND -! curwin->w_p_scb = FALSE; /* no scroll binding */ -! #endif - #ifdef FEAT_ARABIC - curwin->w_p_arab = FALSE; /* no arabic mode */ - #endif ---- 3498,3504 ---- - curbuf->b_p_bin = FALSE; /* reset 'bin' before reading file */ - curwin->w_p_nu = 0; /* no line numbers */ - curwin->w_p_rnu = 0; /* no relative line numbers */ -! RESET_BINDING(curwin); /* no scroll or cursor binding */ - #ifdef FEAT_ARABIC - curwin->w_p_arab = FALSE; /* no arabic mode */ - #endif -*************** -*** 5471,5479 **** - return FALSE; - curwin->w_p_pvw = TRUE; - curwin->w_p_wfh = TRUE; -! # ifdef FEAT_SCROLLBIND -! curwin->w_p_scb = FALSE; /* don't take over 'scrollbind' */ -! # endif - # ifdef FEAT_DIFF - curwin->w_p_diff = FALSE; /* no 'diff' */ - # endif ---- 5469,5476 ---- - return FALSE; - curwin->w_p_pvw = TRUE; - curwin->w_p_wfh = TRUE; -! RESET_BINDING(curwin); /* don't take over 'scrollbind' -! and 'cursorbind' */ - # ifdef FEAT_DIFF - curwin->w_p_diff = FALSE; /* no 'diff' */ - # endif -*** ../vim-7.3.007/src/ex_cmds2.c 2010-08-15 21:57:31.000000000 +0200 ---- src/ex_cmds2.c 2010-09-21 16:15:17.000000000 +0200 -*************** -*** 2165,2173 **** - { - if (win_split(0, 0) == FAIL) - return; -! # ifdef FEAT_SCROLLBIND -! curwin->w_p_scb = FALSE; -! # endif - } - else - #endif ---- 2165,2171 ---- - { - if (win_split(0, 0) == FAIL) - return; -! RESET_BINDING(curwin); - } - else - #endif -*** ../vim-7.3.007/src/ex_docmd.c 2010-08-16 22:33:55.000000000 +0200 ---- src/ex_docmd.c 2010-09-21 16:15:39.000000000 +0200 -*************** -*** 6898,6906 **** - # ifdef FEAT_WINDOWS - if (win_split(0, 0) == FAIL) - return; -! # ifdef FEAT_SCROLLBIND -! curwin->w_p_scb = FALSE; -! # endif - - /* When splitting the window, create a new alist. Otherwise the - * existing one is overwritten. */ ---- 6898,6904 ---- - # ifdef FEAT_WINDOWS - if (win_split(0, 0) == FAIL) - return; -! RESET_BINDING(curwin); - - /* When splitting the window, create a new alist. Otherwise the - * existing one is overwritten. */ -*************** -*** 7300,7306 **** - || cmdmod.browse - # endif - ) -! curwin->w_p_scb = FALSE; - else - do_check_scrollbind(FALSE); - # endif ---- 7298,7306 ---- - || cmdmod.browse - # endif - ) -! { -! RESET_BINDING(curwin); -! } - else - do_check_scrollbind(FALSE); - # endif -*** ../vim-7.3.007/src/ex_getln.c 2010-08-15 21:57:28.000000000 +0200 ---- src/ex_getln.c 2010-09-21 16:15:55.000000000 +0200 -*************** -*** 6147,6155 **** - curwin->w_p_rl = cmdmsg_rl; - cmdmsg_rl = FALSE; - # endif -! # ifdef FEAT_SCROLLBIND -! curwin->w_p_scb = FALSE; -! # endif - - # ifdef FEAT_AUTOCMD - /* Do execute autocommands for setting the filetype (load syntax). */ ---- 6147,6153 ---- - curwin->w_p_rl = cmdmsg_rl; - cmdmsg_rl = FALSE; - # endif -! RESET_BINDING(curwin); - - # ifdef FEAT_AUTOCMD - /* Do execute autocommands for setting the filetype (load syntax). */ -*** ../vim-7.3.007/src/if_cscope.c 2010-08-15 21:57:32.000000000 +0200 ---- src/if_cscope.c 2010-09-21 16:16:26.000000000 +0200 -*************** -*** 1274,1282 **** - { - win_split(postponed_split > 0 ? postponed_split : 0, - postponed_split_flags); -! # ifdef FEAT_SCROLLBIND -! curwin->w_p_scb = FALSE; -! # endif - postponed_split = 0; - } - # endif ---- 1274,1280 ---- - { - win_split(postponed_split > 0 ? postponed_split : 0, - postponed_split_flags); -! RESET_BINDING(curwin); - postponed_split = 0; - } - # endif -*** ../vim-7.3.007/src/macros.h 2010-08-15 21:57:28.000000000 +0200 ---- src/macros.h 2010-09-21 16:13:10.000000000 +0200 -*************** -*** 285,287 **** ---- 285,301 ---- - #else - # define DO_AUTOCHDIR - #endif -+ -+ #if defined(FEAT_SCROLLBIND) && defined(FEAT_CURSORBIND) -+ # define RESET_BINDING(wp) (wp)->w_p_scb = FALSE; (wp)->w_p_crb = FALSE -+ #else -+ # if defined(FEAT_SCROLLBIND) -+ # define RESET_BINDING(wp) (wp)->w_p_scb = FALSE -+ # else -+ # if defined(FEAT_CURSORBIND) -+ # define RESET_BINDING(wp) (wp)->w_p_crb = FALSE -+ # else -+ # define RESET_BINDING(wp) -+ # endif -+ # endif -+ #endif -*** ../vim-7.3.007/src/quickfix.c 2010-08-17 20:23:18.000000000 +0200 ---- src/quickfix.c 2010-09-21 16:17:17.000000000 +0200 -*************** -*** 1656,1664 **** - opened_window = TRUE; /* close it when fail */ - p_swb = empty_option; /* don't split again */ - swb_flags = 0; -! # ifdef FEAT_SCROLLBIND -! curwin->w_p_scb = FALSE; -! # endif - if (ll_ref != NULL) - { - /* The new window should use the location list from the ---- 1656,1662 ---- - opened_window = TRUE; /* close it when fail */ - p_swb = empty_option; /* don't split again */ - swb_flags = 0; -! RESET_BINDING(curwin); - if (ll_ref != NULL) - { - /* The new window should use the location list from the -*************** -*** 2334,2342 **** - win_goto(lastwin); - if (win_split(height, WSP_BELOW | WSP_NEWLOC) == FAIL) - return; /* not enough room for window */ -! #ifdef FEAT_SCROLLBIND -! curwin->w_p_scb = FALSE; -! #endif - - if (eap->cmdidx == CMD_lopen || eap->cmdidx == CMD_lwindow) - { ---- 2332,2338 ---- - win_goto(lastwin); - if (win_split(height, WSP_BELOW | WSP_NEWLOC) == FAIL) - return; /* not enough room for window */ -! RESET_BINDING(curwin); - - if (eap->cmdidx == CMD_lopen || eap->cmdidx == CMD_lwindow) - { -*** ../vim-7.3.007/src/search.c 2010-08-15 21:57:32.000000000 +0200 ---- src/search.c 2010-09-21 16:17:28.000000000 +0200 -*************** -*** 5075,5083 **** - if (win_split(0, 0) == FAIL) - #endif - break; -! #ifdef FEAT_SCROLLBIND -! curwin->w_p_scb = FALSE; -! #endif - } - if (depth == -1) - { ---- 5075,5081 ---- - if (win_split(0, 0) == FAIL) - #endif - break; -! RESET_BINDING(curwin); - } - if (depth == -1) - { -*** ../vim-7.3.007/src/tag.c 2010-08-15 21:57:25.000000000 +0200 ---- src/tag.c 2010-09-21 16:17:51.000000000 +0200 -*************** -*** 3143,3151 **** - { - win_split(postponed_split > 0 ? postponed_split : 0, - postponed_split_flags); -! # ifdef FEAT_SCROLLBIND -! curwin->w_p_scb = FALSE; -! # endif - } - #endif - ---- 3143,3149 ---- - { - win_split(postponed_split > 0 ? postponed_split : 0, - postponed_split_flags); -! RESET_BINDING(curwin); - } - #endif - -*** ../vim-7.3.007/src/window.c 2010-08-15 21:57:32.000000000 +0200 ---- src/window.c 2010-09-21 16:18:44.000000000 +0200 -*************** -*** 525,533 **** - setpcmark(); - if (win_split(0, 0) == OK) - { -! # ifdef FEAT_SCROLLBIND -! curwin->w_p_scb = FALSE; -! # endif - (void)do_ecmd(0, ptr, NULL, NULL, ECMD_LASTL, - ECMD_HIDE, NULL); - if (nchar == 'F' && lnum >= 0) ---- 525,531 ---- - setpcmark(); - if (win_split(0, 0) == OK) - { -! RESET_BINDING(curwin); - (void)do_ecmd(0, ptr, NULL, NULL, ECMD_LASTL, - ECMD_HIDE, NULL); - if (nchar == 'F' && lnum >= 0) -*************** -*** 3277,3285 **** - if (aucmd_win != NULL) - { - win_init_some(aucmd_win, curwin); -! # ifdef FEAT_SCROLLBIND -! aucmd_win->w_p_scb = FALSE; -! # endif - new_frame(aucmd_win); - } - } ---- 3275,3281 ---- - if (aucmd_win != NULL) - { - win_init_some(aucmd_win, curwin); -! RESET_BINDING(aucmd_win); - new_frame(aucmd_win); - } - } -*************** -*** 3320,3329 **** - /* First window in new tab page, initialize it from "oldwin". */ - win_init(curwin, oldwin, 0); - -! # ifdef FEAT_SCROLLBIND -! /* We don't want scroll-binding in the first window. */ -! curwin->w_p_scb = FALSE; -! # endif - } - #endif - ---- 3316,3323 ---- - /* First window in new tab page, initialize it from "oldwin". */ - win_init(curwin, oldwin, 0); - -! /* We don't want cursor- and scroll-binding in the first window. */ -! RESET_BINDING(curwin); - } - #endif - -*** ../vim-7.3.007/src/version.c 2010-09-21 16:49:29.000000000 +0200 ---- src/version.c 2010-09-21 16:53:16.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 8, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -181. You make up words that go with the "happy tune" your modem makes - while dialing your ISP. - - /// 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 /// -To: vim-dev@vim.org -Subject: Patch 7.3.009 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.009 -Problem: Win32: Crash on Windows when using a bad argument for strftime(). - (Christian Brabandt) -Solution: Use the bad_param_handler(). (Mike Williams) -Files: src/os_win32.c - - -*** ../vim-7.3.008/src/os_win32.c 2010-08-15 21:57:27.000000000 +0200 ---- src/os_win32.c 2010-09-21 17:02:54.000000000 +0200 -*************** -*** 1615,1620 **** ---- 1615,1649 ---- - return TRUE; - } - -+ #if ((defined(__MINGW32__) || defined (__CYGWIN32__)) && \ -+ __MSVCRT_VERSION__ >= 0x800) || (defined(_MSC_VER) && _MSC_VER >= 1400) -+ /* -+ * Bad parameter handler. -+ * -+ * Certain MS CRT functions will intentionally crash when passed invalid -+ * parameters to highlight possible security holes. Setting this function as -+ * the bad parameter handler will prevent the crash. -+ * -+ * In debug builds the parameters contain CRT information that might help track -+ * down the source of a problem, but in non-debug builds the arguments are all -+ * NULL/0. Debug builds will also produce assert dialogs from the CRT, it is -+ * worth allowing these to make debugging of issues easier. -+ */ -+ static void -+ bad_param_handler(const wchar_t *expression, -+ const wchar_t *function, -+ const wchar_t *file, -+ unsigned int line, -+ uintptr_t pReserved) -+ { -+ } -+ -+ # define SET_INVALID_PARAM_HANDLER \ -+ ((void)_set_invalid_parameter_handler(bad_param_handler)) -+ #else -+ # define SET_INVALID_PARAM_HANDLER -+ #endif -+ - #ifdef FEAT_GUI_W32 - - /* -*************** -*** 1627,1632 **** ---- 1656,1664 ---- - extern int _fmode; - #endif - -+ /* Silently handle invalid parameters to CRT functions */ -+ SET_INVALID_PARAM_HANDLER; -+ - /* Let critical errors result in a failure, not in a dialog box. Required - * for the timestamp test to work on removed floppies. */ - SetErrorMode(SEM_FAILCRITICALERRORS); -*************** -*** 2103,2108 **** ---- 2135,2143 ---- - extern int _fmode; - #endif - -+ /* Silently handle invalid parameters to CRT functions */ -+ SET_INVALID_PARAM_HANDLER; -+ - /* Let critical errors result in a failure, not in a dialog box. Required - * for the timestamp test to work on removed floppies. */ - SetErrorMode(SEM_FAILCRITICALERRORS); -*** ../vim-7.3.008/src/version.c 2010-09-21 16:56:29.000000000 +0200 ---- src/version.c 2010-09-21 17:27:36.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 9, - /**/ - --- -Wizards had always known that the act of observation changed the thing that -was observed, and sometimes forgot that it also changed the observer too. - Terry Pratchett - Interesting times - - /// 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 /// -To: vim-dev@vim.org -Subject: Patch 7.3.010 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.010 -Problem: Mac GUI: Missing break statements. -Solution: Add the break statements. (Dominique Pelle) -Files: src/gui_mac.c - - -*** ../vim-7.3.009/src/gui_mac.c 2010-08-15 21:57:28.000000000 +0200 ---- src/gui_mac.c 2010-09-21 17:33:13.000000000 +0200 -*************** -*** 1480,1486 **** - * - * Returns the index inside the menu wher - */ -! short /* Shoulde we return MenuItemIndex? */ - gui_mac_get_menu_item_index(vimmenu_T *pMenu) - { - short index; ---- 1480,1486 ---- - * - * Returns the index inside the menu wher - */ -! short /* Should we return MenuItemIndex? */ - gui_mac_get_menu_item_index(vimmenu_T *pMenu) - { - short index; -*************** -*** 1823,1829 **** - p.h += gui.scrollbar_width; - if (gui.which_scrollbars[SBAR_RIGHT]) - p.h += gui.scrollbar_width; -! /* ideal height is as heigh as we can get */ - p.v = 15 * 1024; - - thePart = IsWindowInStandardState(whichWindow, &p, &r) ---- 1823,1829 ---- - p.h += gui.scrollbar_width; - if (gui.which_scrollbars[SBAR_RIGHT]) - p.h += gui.scrollbar_width; -! /* ideal height is as high as we can get */ - p.v = 15 * 1024; - - thePart = IsWindowInStandardState(whichWindow, &p, &r) -*************** -*** 4481,4487 **** - * event arrives. No need to check for input_buf_full because we are - * returning as soon as it contains a single char. - */ -! /* TODO: reduce wtime accordinly??? */ - if (wtime > -1) - sleeppyTick = 60 * wtime / 1000; - else ---- 4481,4487 ---- - * event arrives. No need to check for input_buf_full because we are - * returning as soon as it contains a single char. - */ -! /* TODO: reduce wtime accordingly??? */ - if (wtime > -1) - sleeppyTick = 60 * wtime / 1000; - else -*************** -*** 5723,5735 **** - iconDITL = GetResource('DITL', 131); - switch (type) - { -! case VIM_GENERIC: useIcon = kNoteIcon; -! case VIM_ERROR: useIcon = kStopIcon; -! case VIM_WARNING: useIcon = kCautionIcon; -! case VIM_INFO: useIcon = kNoteIcon; -! case VIM_QUESTION: useIcon = kNoteIcon; -! default: useIcon = kStopIcon; -! }; - AppendDITL(theDialog, iconDITL, overlayDITL); - ReleaseResource(iconDITL); - GetDialogItem(theDialog, iconItm.idx, &itemType, &itemHandle, &box); ---- 5723,5735 ---- - iconDITL = GetResource('DITL', 131); - switch (type) - { -! case VIM_GENERIC: -! case VIM_INFO: -! case VIM_QUESTION: useIcon = kNoteIcon; break; -! case VIM_WARNING: useIcon = kCautionIcon; break; -! case VIM_ERROR: useIcon = kStopIcon; break; -! default: useIcon = kStopIcon; -! } - AppendDITL(theDialog, iconDITL, overlayDITL); - ReleaseResource(iconDITL); - GetDialogItem(theDialog, iconItm.idx, &itemType, &itemHandle, &box); -*************** -*** 5892,5898 **** - - return itemHit; - /* -! * Usefull thing which could be used - * SetDialogTimeout(): Auto click a button after timeout - * SetDialogTracksCursor() : Get the I-beam cursor over input box - * MoveDialogItem(): Probably better than SetDialogItem ---- 5892,5898 ---- - - return itemHit; - /* -! * Useful thing which could be used - * SetDialogTimeout(): Auto click a button after timeout - * SetDialogTracksCursor() : Get the I-beam cursor over input box - * MoveDialogItem(): Probably better than SetDialogItem -*************** -*** 6100,6106 **** - #endif - - /* -! * Transfered from os_mac.c for MacOS X using os_unix.c prep work - */ - - int ---- 6100,6106 ---- - #endif - - /* -! * Transferred from os_mac.c for MacOS X using os_unix.c prep work - */ - - int -*************** -*** 6543,6549 **** - static ControlRef dataBrowser = NULL; - - // when the tabline is hidden, vim doesn't call update_tabline(). When -! // the tabline is shown again, show_tabline() is called before upate_tabline(), - // and because of this, the tab labels and vims internal tabs are out of sync - // for a very short time. to prevent inconsistent state, we store the labels - // of the tabs, not pointers to the tabs (which are invalid for a short time). ---- 6543,6549 ---- - static ControlRef dataBrowser = NULL; - - // when the tabline is hidden, vim doesn't call update_tabline(). When -! // the tabline is shown again, show_tabline() is called before update_tabline(), - // and because of this, the tab labels and vims internal tabs are out of sync - // for a very short time. to prevent inconsistent state, we store the labels - // of the tabs, not pointers to the tabs (which are invalid for a short time). -*** ../vim-7.3.009/src/version.c 2010-09-21 17:29:19.000000000 +0200 ---- src/version.c 2010-09-21 17:33:22.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 10, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -182. You may not know what is happening in the world, but you know - every bit of net-gossip there is. - - /// 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 /// -To: vim-dev@vim.org -Subject: Patch 7.3.011 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.011 -Problem: X11 clipboard doesn't work in Athena/Motif GUI. First selection - after a shell command doesn't work. -Solution: When using the GUI use XtLastTimestampProcessed() instead of - changing a property. (partly by Toni Ronkko) - When executing a shell command disown the selection. -Files: src/ui.c, src/os_unix.c - - -*** ../vim-7.3.010/src/ui.c 2010-08-15 21:57:31.000000000 +0200 ---- src/ui.c 2010-09-21 22:08:22.000000000 +0200 -*************** -*** 469,475 **** - */ - #ifdef FEAT_X11 - /* Always own the selection, we might have lost it without being -! * notified. */ - if (cbd->available) - { - int was_owned = cbd->owned; ---- 469,475 ---- - */ - #ifdef FEAT_X11 - /* Always own the selection, we might have lost it without being -! * notified, e.g. during a ":sh" command. */ - if (cbd->available) - { - int was_owned = cbd->owned; -*************** -*** 1944,1953 **** - */ - - static Boolean clip_x11_convert_selection_cb __ARGS((Widget, Atom *, Atom *, Atom *, XtPointer *, long_u *, int *)); -- - static void clip_x11_lose_ownership_cb __ARGS((Widget, Atom *)); -- - static void clip_x11_timestamp_cb __ARGS((Widget w, XtPointer n, XEvent *event, Boolean *cont)); - - /* - * Property callback to get a timestamp for XtOwnSelection. ---- 1944,1952 ---- - */ - - static Boolean clip_x11_convert_selection_cb __ARGS((Widget, Atom *, Atom *, Atom *, XtPointer *, long_u *, int *)); - static void clip_x11_lose_ownership_cb __ARGS((Widget, Atom *)); - static void clip_x11_timestamp_cb __ARGS((Widget w, XtPointer n, XEvent *event, Boolean *cont)); -+ static void clip_x11_request_selection_cb __ARGS((Widget, XtPointer, Atom *, Atom *, XtPointer, long_u *, int *)); - - /* - * Property callback to get a timestamp for XtOwnSelection. -*************** -*** 1985,1992 **** - return; - - /* Get the selection, using the event timestamp. */ -! XtOwnSelection(w, xproperty->atom, xproperty->time, -! clip_x11_convert_selection_cb, clip_x11_lose_ownership_cb, NULL); - } - - void ---- 1984,2000 ---- - return; - - /* Get the selection, using the event timestamp. */ -! if (XtOwnSelection(w, xproperty->atom, xproperty->time, -! clip_x11_convert_selection_cb, clip_x11_lose_ownership_cb, -! NULL) == OK) -! { -! /* Set the "owned" flag now, there may have been a call to -! * lose_ownership_cb in between. */ -! if (xproperty->atom == clip_plus.sel_atom) -! clip_plus.owned = TRUE; -! else -! clip_star.owned = TRUE; -! } - } - - void -*************** -*** 1997,2004 **** - /*(XtEventHandler)*/clip_x11_timestamp_cb, (XtPointer)NULL); - } - -- static void clip_x11_request_selection_cb __ARGS((Widget, XtPointer, Atom *, Atom *, XtPointer, long_u *, int *)); -- - static void - clip_x11_request_selection_cb(w, success, sel_atom, type, value, length, - format) ---- 2005,2010 ---- -*************** -*** 2336,2342 **** - - void - clip_x11_lose_selection(myShell, cbd) -! Widget myShell; - VimClipboard *cbd; - { - XtDisownSelection(myShell, cbd->sel_atom, CurrentTime); ---- 2342,2348 ---- - - void - clip_x11_lose_selection(myShell, cbd) -! Widget myShell; - VimClipboard *cbd; - { - XtDisownSelection(myShell, cbd->sel_atom, CurrentTime); -*************** -*** 2344,2357 **** - - int - clip_x11_own_selection(myShell, cbd) -! Widget myShell; - VimClipboard *cbd; - { -! /* Get the time by a zero-length append, clip_x11_timestamp_cb will be -! * called with the current timestamp. */ -! if (!XChangeProperty(XtDisplay(myShell), XtWindow(myShell), cbd->sel_atom, -! timestamp_atom, 32, PropModeAppend, NULL, 0)) - return FAIL; - /* Flush is required in a terminal as nothing else is doing it. */ - XFlush(XtDisplay(myShell)); - return OK; ---- 2350,2378 ---- - - int - clip_x11_own_selection(myShell, cbd) -! Widget myShell; - VimClipboard *cbd; - { -! /* When using the GUI we have proper timestamps, use the one of the last -! * event. When in the console we don't get events (the terminal gets -! * them), Get the time by a zero-length append, clip_x11_timestamp_cb will -! * be called with the current timestamp. */ -! #ifdef FEAT_GUI -! if (gui.in_use) -! { -! if (XtOwnSelection(myShell, cbd->sel_atom, -! XtLastTimestampProcessed(XtDisplay(myShell)), -! clip_x11_convert_selection_cb, clip_x11_lose_ownership_cb, -! NULL) == False) - return FAIL; -+ } -+ else -+ #endif -+ { -+ if (!XChangeProperty(XtDisplay(myShell), XtWindow(myShell), -+ cbd->sel_atom, timestamp_atom, 32, PropModeAppend, NULL, 0)) -+ return FAIL; -+ } - /* Flush is required in a terminal as nothing else is doing it. */ - XFlush(XtDisplay(myShell)); - return OK; -*** ../vim-7.3.010/src/os_unix.c 2010-08-15 21:57:30.000000000 +0200 ---- src/os_unix.c 2010-09-21 21:59:25.000000000 +0200 -*************** -*** 1123,1128 **** ---- 1123,1152 ---- - } - #endif - -+ # if defined(FEAT_CLIPBOARD) && defined(FEAT_X11) -+ static void loose_clipboard __ARGS((void)); -+ -+ /* -+ * Called when Vim is going to sleep or execute a shell command. -+ * We can't respond to requests for the X selections. Lose them, otherwise -+ * other applications will hang. But first copy the text to cut buffer 0. -+ */ -+ static void -+ loose_clipboard() -+ { -+ if (clip_star.owned || clip_plus.owned) -+ { -+ x11_export_final_selection(); -+ if (clip_star.owned) -+ clip_lose_selection(&clip_star); -+ if (clip_plus.owned) -+ clip_lose_selection(&clip_plus); -+ if (x11_display != NULL) -+ XFlush(x11_display); -+ } -+ } -+ #endif -+ - /* - * If the machine has job control, use it to suspend the program, - * otherwise fake it by starting a new shell. -*************** -*** 1137,1155 **** - out_flush(); /* needed to disable mouse on some systems */ - - # if defined(FEAT_CLIPBOARD) && defined(FEAT_X11) -! /* Since we are going to sleep, we can't respond to requests for the X -! * selections. Lose them, otherwise other applications will hang. But -! * first copy the text to cut buffer 0. */ -! if (clip_star.owned || clip_plus.owned) -! { -! x11_export_final_selection(); -! if (clip_star.owned) -! clip_lose_selection(&clip_star); -! if (clip_plus.owned) -! clip_lose_selection(&clip_plus); -! if (x11_display != NULL) -! XFlush(x11_display); -! } - # endif - - # if defined(_REENTRANT) && defined(SIGCONT) ---- 1161,1167 ---- - out_flush(); /* needed to disable mouse on some systems */ - - # if defined(FEAT_CLIPBOARD) && defined(FEAT_X11) -! loose_clipboard(); - # endif - - # if defined(_REENTRANT) && defined(SIGCONT) -*************** -*** 3706,3711 **** ---- 3718,3727 ---- - if (options & SHELL_COOKED) - settmode(TMODE_COOK); /* set to normal mode */ - -+ # if defined(FEAT_CLIPBOARD) && defined(FEAT_X11) -+ loose_clipboard(); -+ # endif -+ - # ifdef __EMX__ - if (cmd == NULL) - x = system(""); /* this starts an interactive shell in emx */ -*************** -*** 3814,3826 **** - # endif - int did_settmode = FALSE; /* settmode(TMODE_RAW) called */ - - out_flush(); - if (options & SHELL_COOKED) - settmode(TMODE_COOK); /* set to normal mode */ - -! newcmd = vim_strsave(p_sh); -! if (newcmd == NULL) /* out of memory */ -! goto error; - - /* - * Do this loop twice: ---- 3830,3846 ---- - # endif - int did_settmode = FALSE; /* settmode(TMODE_RAW) called */ - -+ newcmd = vim_strsave(p_sh); -+ if (newcmd == NULL) /* out of memory */ -+ goto error; -+ - out_flush(); - if (options & SHELL_COOKED) - settmode(TMODE_COOK); /* set to normal mode */ - -! # if defined(FEAT_CLIPBOARD) && defined(FEAT_X11) -! loose_clipboard(); -! # endif - - /* - * Do this loop twice: -*** ../vim-7.3.010/src/version.c 2010-09-21 17:34:26.000000000 +0200 ---- src/version.c 2010-09-21 20:45:02.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 11, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -184. You no longer ask prospective dates what their sign is, instead - your line is "Hi, what's your URL?" - - /// 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 /// -To: vim-dev@vim.org -Subject: Patch 7.3.012 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.012 -Problem: Problems building with MingW. -Solution: Adjust the MingW makefiles. (Jon) -Files: src/Make_ming.mak, src/GvimExt/Make_ming.mak - - -*** ../vim-7.3.011/src/Make_ming.mak 2010-08-15 21:57:32.000000000 +0200 ---- src/Make_ming.mak 2010-09-29 12:32:13.000000000 +0200 -*************** -*** 303,309 **** - endif - endif - CC := $(CROSS_COMPILE)gcc -! WINDRES := $(CROSS_COMPILE)windres - - #>>>>> end of choices - ########################################################################### ---- 303,309 ---- - endif - endif - CC := $(CROSS_COMPILE)gcc -! WINDRES := $(CROSS_COMPILE)windres --preprocessor="$(CC) -E -xc" - - - #>>>>> end of choices - ########################################################################### -*** ../vim-7.3.011/src/GvimExt/Make_ming.mak 2010-08-15 21:57:29.000000000 +0200 ---- src/GvimExt/Make_ming.mak 2010-09-29 12:31:07.000000000 +0200 -*************** -*** 33,39 **** - endif - endif - CXX := $(CROSS_COMPILE)g++ -! WINDRES := $(CROSS_COMPILE)windres - LIBS := -luuid - RES := gvimext.res - DEFFILE = gvimext_ming.def ---- 33,39 ---- - endif - endif - CXX := $(CROSS_COMPILE)g++ -! WINDRES := $(CROSS_COMPILE)windres --preprocessor="$(CXX) -E -xc" - - LIBS := -luuid - RES := gvimext.res - DEFFILE = gvimext_ming.def -*** ../vim-7.3.011/src/version.c 2010-09-21 22:09:28.000000000 +0200 ---- src/version.c 2010-09-29 12:36:42.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 12, - /**/ - --- -If evolution theories are correct, humans will soon grow a third -hand for operating the mouse. - - /// 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 /// -To: vim-dev@vim.org -Subject: Patch 7.3.013 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.013 -Problem: Dynamic loading with Ruby doesn't work for 1.9.2. -Solution: Handle rb_str2cstr differently. Also support dynamic loading on - Unix. (Jon Maken) -Files: src/if_ruby.c - - -*** ../vim-7.3.012/src/if_ruby.c 2010-08-15 21:57:25.000000000 +0200 ---- src/if_ruby.c 2010-09-29 12:49:50.000000000 +0200 -*************** -*** 4,9 **** ---- 4,10 ---- - * - * Ruby interface by Shugo Maeda - * with improvements by SegPhault (Ryan Paul) -+ * with improvements by Jon Maken - * - * Do ":help uganda" in Vim to read copying and usage conditions. - * Do ":help credits" in Vim to see a list of people who contributed. -*************** -*** 26,37 **** - # define RUBYEXTERN extern - #endif - - /* - * This is tricky. In ruby.h there is (inline) function rb_class_of() - * definition. This function use these variables. But we want function to - * use dll_* variables. - */ -- #ifdef DYNAMIC_RUBY - # define rb_cFalseClass (*dll_rb_cFalseClass) - # define rb_cFixnum (*dll_rb_cFixnum) - # define rb_cNilClass (*dll_rb_cNilClass) ---- 27,38 ---- - # define RUBYEXTERN extern - #endif - -+ #ifdef DYNAMIC_RUBY - /* - * This is tricky. In ruby.h there is (inline) function rb_class_of() - * definition. This function use these variables. But we want function to - * use dll_* variables. - */ - # define rb_cFalseClass (*dll_rb_cFalseClass) - # define rb_cFixnum (*dll_rb_cFixnum) - # define rb_cNilClass (*dll_rb_cNilClass) -*************** -*** 46,53 **** ---- 47,67 ---- - */ - # define RUBY_EXPORT - # endif -+ -+ #if !(defined(WIN32) || defined(_WIN64)) -+ # include <dlfcn.h> -+ # define HANDLE void* -+ # define load_dll(n) dlopen((n), RTLD_LAZY|RTLD_GLOBAL) -+ # define symbol_from_dll dlsym -+ # define close_dll dlclose -+ #else -+ # define load_dll LoadLibrary -+ # define symbol_from_dll GetProcAddress -+ # define close_dll FreeLibrary - #endif - -+ #endif /* ifdef DYNAMIC_RUBY */ -+ - /* suggested by Ariya Mizutani */ - #if (_MSC_VER == 1200) - # undef _WIN32_WINNT -*************** -*** 166,172 **** - #define rb_obj_as_string dll_rb_obj_as_string - #define rb_obj_id dll_rb_obj_id - #define rb_raise dll_rb_raise -- #define rb_str2cstr dll_rb_str2cstr - #define rb_str_cat dll_rb_str_cat - #define rb_str_concat dll_rb_str_concat - #define rb_str_new dll_rb_str_new ---- 180,185 ---- -*************** -*** 178,187 **** ---- 191,203 ---- - # define rb_str_new2 dll_rb_str_new2 - #endif - #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18 -+ # define rb_string_value dll_rb_string_value - # define rb_string_value_ptr dll_rb_string_value_ptr - # define rb_float_new dll_rb_float_new - # define rb_ary_new dll_rb_ary_new - # define rb_ary_push dll_rb_ary_push -+ #else -+ # define rb_str2cstr dll_rb_str2cstr - #endif - #ifdef RUBY19_OR_LATER - # define rb_errinfo dll_rb_errinfo -*************** -*** 246,252 **** ---- 262,272 ---- - static VALUE (*dll_rb_obj_as_string) (VALUE); - static VALUE (*dll_rb_obj_id) (VALUE); - static void (*dll_rb_raise) (VALUE, const char*, ...); -+ #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18 -+ static VALUE (*dll_rb_string_value) (volatile VALUE*); -+ #else - static char *(*dll_rb_str2cstr) (VALUE,int*); -+ #endif - static VALUE (*dll_rb_str_cat) (VALUE, const char*, long); - static VALUE (*dll_rb_str_concat) (VALUE, VALUE); - static VALUE (*dll_rb_str_new) (const char*, long); -*************** -*** 347,353 **** ---- 367,377 ---- - {"rb_obj_as_string", (RUBY_PROC*)&dll_rb_obj_as_string}, - {"rb_obj_id", (RUBY_PROC*)&dll_rb_obj_id}, - {"rb_raise", (RUBY_PROC*)&dll_rb_raise}, -+ #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18 -+ {"rb_string_value", (RUBY_PROC*)&dll_rb_string_value}, -+ #else - {"rb_str2cstr", (RUBY_PROC*)&dll_rb_str2cstr}, -+ #endif - {"rb_str_cat", (RUBY_PROC*)&dll_rb_str_cat}, - {"rb_str_concat", (RUBY_PROC*)&dll_rb_str_concat}, - {"rb_str_new", (RUBY_PROC*)&dll_rb_str_new}, -*************** -*** 399,405 **** - { - if (hinstRuby) - { -! FreeLibrary(hinstRuby); - hinstRuby = 0; - } - } ---- 423,429 ---- - { - if (hinstRuby) - { -! close_dll(hinstRuby); - hinstRuby = 0; - } - } -*************** -*** 416,422 **** - - if (hinstRuby) - return OK; -! hinstRuby = LoadLibrary(libname); - if (!hinstRuby) - { - if (verbose) ---- 440,446 ---- - - if (hinstRuby) - return OK; -! hinstRuby = load_dll(libname); - if (!hinstRuby) - { - if (verbose) -*************** -*** 426,435 **** - - for (i = 0; ruby_funcname_table[i].ptr; ++i) - { -! if (!(*ruby_funcname_table[i].ptr = GetProcAddress(hinstRuby, - ruby_funcname_table[i].name))) - { -! FreeLibrary(hinstRuby); - hinstRuby = 0; - if (verbose) - EMSG2(_(e_loadfunc), ruby_funcname_table[i].name); ---- 450,459 ---- - - for (i = 0; ruby_funcname_table[i].ptr; ++i) - { -! if (!(*ruby_funcname_table[i].ptr = symbol_from_dll(hinstRuby, - ruby_funcname_table[i].name))) - { -! close_dll(hinstRuby); - hinstRuby = 0; - if (verbose) - EMSG2(_(e_loadfunc), ruby_funcname_table[i].name); -*** ../vim-7.3.012/src/version.c 2010-09-29 12:37:53.000000000 +0200 ---- src/version.c 2010-09-29 13:00:42.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 13, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -223. You set up a web-cam as your home's security system. - - /// 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 /// -To: vim-dev@vim.org -Subject: Patch 7.3.014 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.014 -Problem: Ending a line in a backslash inside an ":append" or ":insert" - command in Ex mode doesn't work properly. (Ray Frush) -Solution: Halve the number of backslashes, only insert a NUL after an odd - number of backslashes. -Files: src/ex_getln.c - - -*** ../vim-7.3.013/src/ex_getln.c 2010-09-21 16:56:29.000000000 +0200 ---- src/ex_getln.c 2010-09-29 15:47:56.000000000 +0200 -*************** -*** 2342,2356 **** - windgoto(msg_row, msg_col); - pend = (char_u *)(line_ga.ga_data) + line_ga.ga_len; - -! /* we are done when a NL is entered, but not when it comes after a -! * backslash */ -! if (line_ga.ga_len > 0 && pend[-1] == '\n' -! && (line_ga.ga_len <= 1 || pend[-2] != '\\')) -! { -! --line_ga.ga_len; -! --pend; -! *pend = NUL; -! break; - } - } - ---- 2342,2372 ---- - windgoto(msg_row, msg_col); - pend = (char_u *)(line_ga.ga_data) + line_ga.ga_len; - -! /* We are done when a NL is entered, but not when it comes after an -! * odd number of backslashes, that results in a NUL. */ -! if (line_ga.ga_len > 0 && pend[-1] == '\n') -! { -! int bcount = 0; -! -! while (line_ga.ga_len - 2 >= bcount && pend[-2 - bcount] == '\\') -! ++bcount; -! -! if (bcount > 0) -! { -! /* Halve the number of backslashes: "\NL" -> "NUL", "\\NL" -> -! * "\NL", etc. */ -! line_ga.ga_len -= (bcount + 1) / 2; -! pend -= (bcount + 1) / 2; -! pend[-1] = '\n'; -! } -! -! if ((bcount & 1) == 0) -! { -! --line_ga.ga_len; -! --pend; -! *pend = NUL; -! break; -! } - } - } - -*** ../vim-7.3.013/src/version.c 2010-09-29 13:02:48.000000000 +0200 ---- src/version.c 2010-09-29 15:45:57.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 14, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -224. You set up your own Web page. You set up a Web page for each - of your kids... and your pets. - - /// 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 /// -To: vim-dev@vim.org -Subject: Patch 7.3.015 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.015 -Problem: Test is using error message that no longer exists. -Solution: Change E106 to E121. (Dominique Pelle) -Files: src/testdir/test49.vim - - -*** ../vim-7.3.014/src/testdir/test49.vim 2010-08-15 21:57:29.000000000 +0200 ---- src/testdir/test49.vim 2010-09-29 16:52:06.000000000 +0200 -*************** -*** 1,6 **** - " Vim script language tests - " Author: Servatius Brandt <Servatius.Brandt@fujitsu-siemens.com> -! " Last Change: 2006 Apr 28 - - "------------------------------------------------------------------------------- - " Test environment {{{1 ---- 1,6 ---- - " Vim script language tests - " Author: Servatius Brandt <Servatius.Brandt@fujitsu-siemens.com> -! " Last Change: 2010 Sep 29 - - "------------------------------------------------------------------------------- - " Test environment {{{1 -*************** -*** 8711,8717 **** - endif - else - if cmd == "let" -! let match = MATCH(0, thrmsg, 'E106', "Unknown variable") - elseif cmd == "unlet" - let match = MATCH(0, thrmsg, 'E108', "No such variable") - endif ---- 8711,8717 ---- - endif - else - if cmd == "let" -! let match = MATCH(0, thrmsg, 'E121', "Undefined variable") - elseif cmd == "unlet" - let match = MATCH(0, thrmsg, 'E108', "No such variable") - endif -*** ../vim-7.3.014/src/version.c 2010-09-29 15:50:14.000000000 +0200 ---- src/version.c 2010-09-29 16:55:03.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 15, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -228. You spend Saturday night making the counter on your home page - pass that 2000 mark. - - /// 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 /// -To: vim-dev@vim.org -Subject: Patch 7.3.016 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.016 -Problem: Netbeans doesn't work under Athena. -Solution: Support Athena, just like Motif. (Xavier de Gaye) -Files: runtime/doc/netbeans.txt, src/gui.c, src/main.c, src/netbeans.c - - -*** ../vim-7.3.015/runtime/doc/netbeans.txt 2010-08-15 21:57:13.000000000 +0200 ---- runtime/doc/netbeans.txt 2010-09-29 17:13:43.000000000 +0200 -*************** -*** 1,4 **** -! *netbeans.txt* For Vim version 7.3. Last change: 2010 Jul 20 - - - VIM REFERENCE MANUAL by Gordon Prieur et al. ---- 1,4 ---- -! *netbeans.txt* For Vim version 7.3. Last change: 2010 Aug 20 - - - VIM REFERENCE MANUAL by Gordon Prieur et al. -*************** -*** 118,124 **** - uncommenting a line with "--disable-netbeans" in the Makefile. - - Currently the NetBeans interface is supported by Vim running in a terminal and -! by GVim when it is run with one of the following GUIs: GTK, GNOME, and Motif. - - If Motif support is required the user must supply XPM libraries. See - |workshop-xpm| for details on obtaining the latest version of XPM. ---- 118,125 ---- - uncommenting a line with "--disable-netbeans" in the Makefile. - - Currently the NetBeans interface is supported by Vim running in a terminal and -! by GVim when it is run with one of the following GUIs: GTK, GNOME, Windows, -! Athena and Motif. - - If Motif support is required the user must supply XPM libraries. See - |workshop-xpm| for details on obtaining the latest version of XPM. -*** ../vim-7.3.015/src/gui.c 2010-08-15 21:57:28.000000000 +0200 ---- src/gui.c 2010-09-29 17:13:43.000000000 +0200 -*************** -*** 2352,2358 **** - if (draw_sign) - /* Draw the sign on top of the spaces. */ - gui_mch_drawsign(gui.row, col, gui.highlight_mask); -! # if defined(FEAT_NETBEANS_INTG) && (defined(FEAT_GUI_MOTIF) \ - || defined(FEAT_GUI_GTK) || defined(FEAT_GUI_W32)) - if (multi_sign) - netbeans_draw_multisign_indicator(gui.row); ---- 2352,2358 ---- - if (draw_sign) - /* Draw the sign on top of the spaces. */ - gui_mch_drawsign(gui.row, col, gui.highlight_mask); -! # if defined(FEAT_NETBEANS_INTG) && (defined(FEAT_GUI_X11) \ - || defined(FEAT_GUI_GTK) || defined(FEAT_GUI_W32)) - if (multi_sign) - netbeans_draw_multisign_indicator(gui.row); -*** ../vim-7.3.015/src/main.c 2010-08-15 21:57:28.000000000 +0200 ---- src/main.c 2010-09-29 17:13:43.000000000 +0200 -*************** -*** 940,946 **** - if (netbeansArg != NULL && strncmp("-nb", netbeansArg, 3) == 0) - { - # ifdef FEAT_GUI -! # if !defined(FEAT_GUI_MOTIF) && !defined(FEAT_GUI_GTK) \ - && !defined(FEAT_GUI_W32) - if (gui.in_use) - { ---- 940,946 ---- - if (netbeansArg != NULL && strncmp("-nb", netbeansArg, 3) == 0) - { - # ifdef FEAT_GUI -! # if !defined(FEAT_GUI_X11) && !defined(FEAT_GUI_GTK) \ - && !defined(FEAT_GUI_W32) - if (gui.in_use) - { -*** ../vim-7.3.015/src/netbeans.c 2010-08-15 21:57:26.000000000 +0200 ---- src/netbeans.c 2010-09-29 17:13:43.000000000 +0200 -*************** -*** 87,93 **** - static void nb_init_graphics __ARGS((void)); - static void coloncmd __ARGS((char *cmd, ...)); - static void nb_set_curbuf __ARGS((buf_T *buf)); -! #ifdef FEAT_GUI_MOTIF - static void messageFromNetbeans __ARGS((XtPointer, int *, XtInputId *)); - #endif - #ifdef FEAT_GUI_GTK ---- 87,93 ---- - static void nb_init_graphics __ARGS((void)); - static void coloncmd __ARGS((char *cmd, ...)); - static void nb_set_curbuf __ARGS((buf_T *buf)); -! #ifdef FEAT_GUI_X11 - static void messageFromNetbeans __ARGS((XtPointer, int *, XtInputId *)); - #endif - #ifdef FEAT_GUI_GTK -*************** -*** 112,118 **** - static NBSOCK nbsock = -1; /* socket fd for Netbeans connection */ - #define NETBEANS_OPEN (nbsock != -1) - -! #ifdef FEAT_GUI_MOTIF - static XtInputId inputHandler = (XtInputId)NULL; /* Cookie for input */ - #endif - #ifdef FEAT_GUI_GTK ---- 112,118 ---- - static NBSOCK nbsock = -1; /* socket fd for Netbeans connection */ - #define NETBEANS_OPEN (nbsock != -1) - -! #ifdef FEAT_GUI_X11 - static XtInputId inputHandler = (XtInputId)NULL; /* Cookie for input */ - #endif - #ifdef FEAT_GUI_GTK -*************** -*** 143,149 **** - - netbeans_send_disconnect(); - -! #ifdef FEAT_GUI_MOTIF - if (inputHandler != (XtInputId)NULL) - { - XtRemoveInput(inputHandler); ---- 143,149 ---- - - netbeans_send_disconnect(); - -! #ifdef FEAT_GUI_X11 - if (inputHandler != (XtInputId)NULL) - { - XtRemoveInput(inputHandler); -*************** -*** 700,706 **** - /* - * Read a command from netbeans. - */ -! #ifdef FEAT_GUI_MOTIF - static void - messageFromNetbeans(XtPointer clientData UNUSED, - int *unused1 UNUSED, ---- 700,706 ---- - /* - * Read a command from netbeans. - */ -! #ifdef FEAT_GUI_X11 - static void - messageFromNetbeans(XtPointer clientData UNUSED, - int *unused1 UNUSED, -*************** -*** 2937,2943 **** - if (!NB_HAS_GUI || !NETBEANS_OPEN) - return; - -! # ifdef FEAT_GUI_MOTIF - /* tell notifier we are interested in being called - * when there is input on the editor connection socket - */ ---- 2937,2943 ---- - if (!NB_HAS_GUI || !NETBEANS_OPEN) - return; - -! # ifdef FEAT_GUI_X11 - /* tell notifier we are interested in being called - * when there is input on the editor connection socket - */ -*************** -*** 3027,3033 **** - } - } - -! #if defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_W32) || defined(PROTO) - /* - * Tell netbeans that the window was moved or resized. - */ ---- 3027,3033 ---- - } - } - -! #if defined(FEAT_GUI_X11) || defined(FEAT_GUI_W32) || defined(PROTO) - /* - * Tell netbeans that the window was moved or resized. - */ -*************** -*** 3458,3464 **** - return FALSE; - } - -! #if defined(FEAT_GUI_MOTIF) || defined(PROTO) - /* - * We have multiple signs to draw at the same location. Draw the - * multi-sign indicator instead. This is the Motif version. ---- 3458,3464 ---- - return FALSE; - } - -! #if defined(FEAT_GUI_X11) || defined(PROTO) - /* - * We have multiple signs to draw at the same location. Draw the - * multi-sign indicator instead. This is the Motif version. -*************** -*** 3487,3493 **** - XDrawPoint(gui.dpy, gui.wid, gui.text_gc, x+3, y++); - XDrawPoint(gui.dpy, gui.wid, gui.text_gc, x+2, y); - } -! #endif /* FEAT_GUI_MOTIF */ - - #if defined(FEAT_GUI_GTK) && !defined(PROTO) - /* ---- 3487,3493 ---- - XDrawPoint(gui.dpy, gui.wid, gui.text_gc, x+3, y++); - XDrawPoint(gui.dpy, gui.wid, gui.text_gc, x+2, y); - } -! #endif /* FEAT_GUI_X11 */ - - #if defined(FEAT_GUI_GTK) && !defined(PROTO) - /* -*** ../vim-7.3.015/src/version.c 2010-09-29 16:55:45.000000000 +0200 ---- src/version.c 2010-09-29 17:14:47.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 16, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -229. You spend so much time thinking what to add on this list. - - /// 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 /// -To: vim-dev@vim.org -Subject: Patch 7.3.017 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.017 -Problem: smatch reports errors. -Solution: Fix the reported errors. (Dominique Pelle) -Files: src/spell.c, src/syntax.c - - -*** ../vim-7.3.016/src/spell.c 2010-09-18 13:36:41.000000000 +0200 ---- src/spell.c 2010-09-29 18:25:09.000000000 +0200 -*************** -*** 4951,4957 **** - char_u *si_info; /* info text chars or NULL */ - int si_region_count; /* number of regions supported (1 when there - are no regions) */ -! char_u si_region_name[16]; /* region names; used only if - * si_region_count > 1) */ - - garray_T si_rep; /* list of fromto_T entries from REP lines */ ---- 4951,4957 ---- - char_u *si_info; /* info text chars or NULL */ - int si_region_count; /* number of regions supported (1 when there - are no regions) */ -! char_u si_region_name[17]; /* region names; used only if - * si_region_count > 1) */ - - garray_T si_rep; /* list of fromto_T entries from REP lines */ -*************** -*** 9530,9536 **** - if (aspath) - /* Use directory of an entry with path, e.g., for - * "/dir/lg.utf-8.spl" use "/dir". */ -! vim_strncpy(buf, curbuf->b_s.b_p_spl, lstart - curbuf->b_s.b_p_spl - 1); - else - /* Copy the path from 'runtimepath' to buf[]. */ - copy_option_part(&rtp, buf, MAXPATHL, ","); ---- 9530,9537 ---- - if (aspath) - /* Use directory of an entry with path, e.g., for - * "/dir/lg.utf-8.spl" use "/dir". */ -! vim_strncpy(buf, curbuf->b_s.b_p_spl, -! lstart - curbuf->b_s.b_p_spl - 1); - else - /* Copy the path from 'runtimepath' to buf[]. */ - copy_option_part(&rtp, buf, MAXPATHL, ","); -*************** -*** 9539,9551 **** - /* Use the first language name from 'spelllang' and the - * encoding used in the first loaded .spl file. */ - if (aspath) -! vim_strncpy(buf, curbuf->b_s.b_p_spl, lend - curbuf->b_s.b_p_spl); - else - { - /* Create the "spell" directory if it doesn't exist yet. */ - l = (int)STRLEN(buf); - vim_snprintf((char *)buf + l, MAXPATHL - l, "/spell"); -! if (!filewritable(buf) != 2) - vim_mkdir(buf, 0755); - - l = (int)STRLEN(buf); ---- 9540,9553 ---- - /* Use the first language name from 'spelllang' and the - * encoding used in the first loaded .spl file. */ - if (aspath) -! vim_strncpy(buf, curbuf->b_s.b_p_spl, -! lend - curbuf->b_s.b_p_spl); - else - { - /* Create the "spell" directory if it doesn't exist yet. */ - l = (int)STRLEN(buf); - vim_snprintf((char *)buf + l, MAXPATHL - l, "/spell"); -! if (filewritable(buf) != 2) - vim_mkdir(buf, 0755); - - l = (int)STRLEN(buf); -*** ../vim-7.3.016/src/syntax.c 2010-08-15 21:57:32.000000000 +0200 ---- src/syntax.c 2010-09-29 18:28:26.000000000 +0200 -*************** -*** 7600,7609 **** - /* - * Copy characters from arg[] to buf[], translating <> codes. - */ -! for (p = arg, off = 0; off < 100 && *p; ) - { - len = trans_special(&p, buf + off, FALSE); -! if (len) /* recognized special char */ - off += len; - else /* copy as normal char */ - buf[off++] = *p++; ---- 7600,7609 ---- - /* - * Copy characters from arg[] to buf[], translating <> codes. - */ -! for (p = arg, off = 0; off < 100 - 6 && *p; ) - { - len = trans_special(&p, buf + off, FALSE); -! if (len > 0) /* recognized special char */ - off += len; - else /* copy as normal char */ - buf[off++] = *p++; -*** ../vim-7.3.016/src/version.c 2010-09-29 17:26:57.000000000 +0200 ---- src/version.c 2010-09-29 17:47:27.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 17, - /**/ - --- -A computer without Windows is like a fish without a bicycle. - - /// 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 /// -To: vim-dev@vim.org -Subject: Patch 7.3.018 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.018 (after 7.3.012) -Problem: Missing argument to windres in MingW makefiles. -Solution: Add the argument that was wrapped in the patch. (Jon Maken) -Files: src/Make_ming.mak, src/GvimExt/Make_ming.mak - - -*** ../vim-7.3.017/src/Make_ming.mak 2010-09-29 12:37:53.000000000 +0200 ---- src/Make_ming.mak 2010-09-29 18:37:08.000000000 +0200 -*************** -*** 303,309 **** - endif - endif - CC := $(CROSS_COMPILE)gcc -! WINDRES := $(CROSS_COMPILE)windres --preprocessor="$(CC) -E -xc" - - - #>>>>> end of choices - ########################################################################### ---- 303,309 ---- - endif - endif - CC := $(CROSS_COMPILE)gcc -! WINDRES := $(CROSS_COMPILE)windres --preprocessor="$(CC) -E -xc" -DRC_INVOKED - - #>>>>> end of choices - ########################################################################### -*** ../vim-7.3.017/src/GvimExt/Make_ming.mak 2010-09-29 12:37:53.000000000 +0200 ---- src/GvimExt/Make_ming.mak 2010-09-29 18:36:39.000000000 +0200 -*************** -*** 33,39 **** - endif - endif - CXX := $(CROSS_COMPILE)g++ -! WINDRES := $(CROSS_COMPILE)windres --preprocessor="$(CXX) -E -xc" - - LIBS := -luuid - RES := gvimext.res - DEFFILE = gvimext_ming.def ---- 33,39 ---- - endif - endif - CXX := $(CROSS_COMPILE)g++ -! WINDRES := $(CROSS_COMPILE)windres --preprocessor="$(CXX) -E -xc" -DRC_INVOKED - LIBS := -luuid - RES := gvimext.res - DEFFILE = gvimext_ming.def -*** ../vim-7.3.017/src/version.c 2010-09-29 18:32:47.000000000 +0200 ---- src/version.c 2010-09-29 18:41:53.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 18, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -231. You sprinkle Carpet Fresh on the rugs and put your vacuum cleaner - in the front doorway permanently so it always looks like you are - actually attempting to do something about that mess that has amassed - since you discovered the Internet. - - /// 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 /// -To: vim-dev@vim.org -Subject: Patch 7.3.019 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.019 -Problem: ":nbstart" can fail silently. -Solution: Give an error when netbeans is not supported by the GUI. (Xavier - de Gaye) -Files: src/netbeans.c - - -*** ../vim-7.3.018/src/netbeans.c 2010-09-29 17:26:57.000000000 +0200 ---- src/netbeans.c 2010-09-29 17:35:37.000000000 +0200 -*************** -*** 2773,2778 **** ---- 2773,2788 ---- - ex_nbstart(eap) - exarg_T *eap; - { -+ #ifdef FEAT_GUI -+ # if !defined(FEAT_GUI_X11) && !defined(FEAT_GUI_GTK) \ -+ && !defined(FEAT_GUI_W32) -+ if (gui.in_use) -+ { -+ EMSG(_("E838: netbeans is not supported with this GUI")); -+ return; -+ } -+ # endif -+ #endif - netbeans_open((char *)eap->arg, FALSE); - } - -*** ../vim-7.3.018/src/version.c 2010-09-29 18:42:25.000000000 +0200 ---- src/version.c 2010-09-30 21:02:03.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 19, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -233. You start dreaming about web pages...in html. - - /// 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 /// -To: vim-dev@vim.org -Subject: Patch 7.3.020 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.020 -Problem: Cursor position wrong when joining multiple lines and - 'formatoptions' contains "a". (Moshe Kamensky) -Solution: Adjust cursor position for skipped indent. (Carlo Teubner) -Files: src/ops.c, src/testdir/test68.in, src/testdir/test68.ok - - -*** ../vim-7.3.019/src/ops.c 2010-08-15 21:57:28.000000000 +0200 ---- src/ops.c 2010-10-09 17:00:35.000000000 +0200 -*************** -*** 4153,4161 **** - int save_undo; - { - char_u *curr = NULL; - char_u *cend; - char_u *newp; -! char_u *spaces; /* number of spaces inserte before a line */ - int endcurr1 = NUL; - int endcurr2 = NUL; - int currsize = 0; /* size of the current line */ ---- 4153,4162 ---- - int save_undo; - { - char_u *curr = NULL; -+ char_u *curr_start = NULL; - char_u *cend; - char_u *newp; -! char_u *spaces; /* number of spaces inserted before a line */ - int endcurr1 = NUL; - int endcurr2 = NUL; - int currsize = 0; /* size of the current line */ -*************** -*** 4181,4187 **** - */ - for (t = 0; t < count; ++t) - { -! curr = ml_get((linenr_T)(curwin->w_cursor.lnum + t)); - if (insert_space && t > 0) - { - curr = skipwhite(curr); ---- 4182,4188 ---- - */ - for (t = 0; t < count; ++t) - { -! curr = curr_start = ml_get((linenr_T)(curwin->w_cursor.lnum + t)); - if (insert_space && t > 0) - { - curr = skipwhite(curr); -*************** -*** 4265,4274 **** - copy_spaces(cend, (size_t)(spaces[t])); - } - mark_col_adjust(curwin->w_cursor.lnum + t, (colnr_T)0, (linenr_T)-t, -! (long)(cend - newp + spaces[t])); - if (t == 0) - break; -! curr = ml_get((linenr_T)(curwin->w_cursor.lnum + t - 1)); - if (insert_space && t > 1) - curr = skipwhite(curr); - currsize = (int)STRLEN(curr); ---- 4266,4275 ---- - copy_spaces(cend, (size_t)(spaces[t])); - } - mark_col_adjust(curwin->w_cursor.lnum + t, (colnr_T)0, (linenr_T)-t, -! (long)(cend - newp + spaces[t] - (curr - curr_start))); - if (t == 0) - break; -! curr = curr_start = ml_get((linenr_T)(curwin->w_cursor.lnum + t - 1)); - if (insert_space && t > 1) - curr = skipwhite(curr); - currsize = (int)STRLEN(curr); -*** ../vim-7.3.019/src/testdir/test68.in 2010-08-15 21:57:29.000000000 +0200 ---- src/testdir/test68.in 2010-10-09 16:53:02.000000000 +0200 -*************** -*** 51,56 **** ---- 51,67 ---- - } - - STARTTEST -+ /^{/+2 -+ :set tw& fo=a -+ I^^ -+ ENDTEST -+ -+ { -+ 1aa -+ 2bb -+ } -+ -+ STARTTEST - :g/^STARTTEST/.,/^ENDTEST/d - :1;/^Results/,$wq! test.out - ENDTEST -*** ../vim-7.3.019/src/testdir/test68.ok 2010-08-15 21:57:29.000000000 +0200 ---- src/testdir/test68.ok 2010-10-09 16:53:02.000000000 +0200 -*************** -*** 33,35 **** ---- 33,38 ---- - #a b - } - -+ -+ { 1aa ^^2bb } -+ -*** ../vim-7.3.019/src/version.c 2010-09-30 21:03:13.000000000 +0200 ---- src/version.c 2010-10-09 17:05:31.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 20, - /**/ - --- -Did you hear about the new 3 million dollar West Virginia State Lottery? -The winner gets 3 dollars a year for a million years. - - /// 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 /// -To: vim-dev@vim.org -Subject: Patch 7.3.021 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.021 -Problem: Conflict for defining Boolean in Mac header files. -Solution: Define NO_X11_INCLUDES. (Rainer Muller) -Files: src/os_macosx.m, src/vim.h - - -*** ../vim-7.3.020/src/os_macosx.m 2010-08-15 21:57:29.000000000 +0200 ---- src/os_macosx.m 2010-10-10 17:01:55.000000000 +0200 -*************** -*** 15,20 **** ---- 15,24 ---- - Error: MACOS 9 is no longer supported in Vim 7 - #endif - -+ /* Avoid a conflict for the definition of Boolean between Mac header files and -+ * X11 header files. */ -+ #define NO_X11_INCLUDES -+ - #include "vim.h" - #import <Cocoa/Cocoa.h> - -*** ../vim-7.3.020/src/vim.h 2010-08-15 21:57:29.000000000 +0200 ---- src/vim.h 2010-10-10 17:02:56.000000000 +0200 -*************** -*** 192,199 **** - #endif - - #ifdef NO_X11_INCLUDES -! /* In os_mac_conv.c NO_X11_INCLUDES is defined to avoid X11 headers. -! * Disable all X11 related things to avoid conflicts. */ - # ifdef FEAT_X11 - # undef FEAT_X11 - # endif ---- 192,199 ---- - #endif - - #ifdef NO_X11_INCLUDES -! /* In os_mac_conv.c and os_macosx.m NO_X11_INCLUDES is defined to avoid -! * X11 headers. Disable all X11 related things to avoid conflicts. */ - # ifdef FEAT_X11 - # undef FEAT_X11 - # endif -*** ../vim-7.3.020/src/version.c 2010-10-09 17:21:42.000000000 +0200 ---- src/version.c 2010-10-10 17:05:19.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 21, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -259. When you enter your name in the AltaVista search engine, the top ten - matches do indeed refer to you. - - /// 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 /// -To: vim-dev@vim.org -Subject: Patch 7.3.022 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.022 -Problem: When opening a new window the 'spellcapcheck' option is cleared. -Solution: Copy the correct option value. (Christian Brabandt) -Files: src/option.c - - -*** ../vim-7.3.021/src/option.c 2010-08-15 21:57:28.000000000 +0200 ---- src/option.c 2010-10-13 13:48:46.000000000 +0200 -*************** -*** 10011,10017 **** - buf->b_p_smc = p_smc; - #endif - #ifdef FEAT_SPELL -! buf->b_s.b_p_spc = vim_strsave(p_spf); - (void)compile_cap_prog(&buf->b_s); - buf->b_s.b_p_spf = vim_strsave(p_spf); - buf->b_s.b_p_spl = vim_strsave(p_spl); ---- 10011,10017 ---- - buf->b_p_smc = p_smc; - #endif - #ifdef FEAT_SPELL -! buf->b_s.b_p_spc = vim_strsave(p_spc); - (void)compile_cap_prog(&buf->b_s); - buf->b_s.b_p_spf = vim_strsave(p_spf); - buf->b_s.b_p_spl = vim_strsave(p_spl); -*** ../vim-7.3.021/src/version.c 2010-10-10 17:08:28.000000000 +0200 ---- src/version.c 2010-10-13 14:02:08.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 22, - /**/ - --- -GALAHAD: Camelot ... -LAUNCELOT: Camelot ... -GAWAIN: It's only a model. - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim-dev@vim.org -Subject: Patch 7.3.023 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.023 -Problem: External program may hang when it tries to write to the tty. -Solution: Don't close the slave tty until after the child exits. (Nikola - Knezevic) -Files: src/os_unix.c - - -*** ../vim-7.3.022/src/os_unix.c 2010-09-21 22:09:28.000000000 +0200 ---- src/os_unix.c 2010-10-13 16:17:33.000000000 +0200 -*************** -*** 4168,4174 **** - # ifdef FEAT_GUI - if (pty_master_fd >= 0) - { -- close(pty_slave_fd); /* close slave side of pty */ - fromshell_fd = pty_master_fd; - toshell_fd = dup(pty_master_fd); - } ---- 4168,4173 ---- -*************** -*** 4637,4642 **** ---- 4636,4649 ---- - break; - } - -+ # ifdef FEAT_GUI -+ /* Close slave side of pty. Only do this after the child has -+ * exited, otherwise the child may hang when it tries to write on -+ * the pty. */ -+ if (pty_master_fd >= 0) -+ close(pty_slave_fd); -+ # endif -+ - /* Make sure the child that writes to the external program is - * dead. */ - if (wpid > 0) -*** ../vim-7.3.022/src/version.c 2010-10-13 14:05:29.000000000 +0200 ---- src/version.c 2010-10-13 16:20:48.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 23, - /**/ - --- - We're knights of the Round Table - Our shows are formidable - But many times - We're given rhymes - That are quite unsingable - We're opera mad in Camelot - We sing from the diaphragm a lot. - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim-dev@vim.org -Subject: Patch 7.3.024 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.024 -Problem: Named signs do not use a negative number as intended. -Solution: Fix the numbering of named signs. (Xavier de Gaye) -Files: src/ex_cmds.c - - -*** ../vim-7.3.023/src/ex_cmds.c 2010-09-21 16:56:29.000000000 +0200 ---- src/ex_cmds.c 2010-10-13 16:37:18.000000000 +0200 -*************** -*** 6670,6680 **** - sp = (sign_T *)alloc_clear((unsigned)sizeof(sign_T)); - if (sp == NULL) - return; -- if (sp_prev == NULL) -- first_sign = sp; -- else -- sp_prev->sn_next = sp; -- sp->sn_name = vim_strnsave(arg, (int)(p - arg)); - - /* If the name is a number use that for the typenr, - * otherwise use a negative number. */ ---- 6670,6675 ---- -*************** -*** 6687,6699 **** - - for (lp = first_sign; lp != NULL; lp = lp->sn_next) - { -! if (lp->sn_typenr == last_sign_typenr) - { - --last_sign_typenr; - if (last_sign_typenr == 0) - last_sign_typenr = MAX_TYPENR; - if (last_sign_typenr == start) - { - EMSG(_("E612: Too many signs defined")); - return; - } ---- 6682,6695 ---- - - for (lp = first_sign; lp != NULL; lp = lp->sn_next) - { -! if (lp->sn_typenr == -last_sign_typenr) - { - --last_sign_typenr; - if (last_sign_typenr == 0) - last_sign_typenr = MAX_TYPENR; - if (last_sign_typenr == start) - { -+ vim_free(sp); - EMSG(_("E612: Too many signs defined")); - return; - } -*************** -*** 6702,6711 **** - } - } - -! sp->sn_typenr = last_sign_typenr--; -! if (last_sign_typenr == 0) - last_sign_typenr = MAX_TYPENR; /* wrap around */ - } - } - - /* set values for a defined sign. */ ---- 6698,6714 ---- - } - } - -! sp->sn_typenr = -last_sign_typenr; -! if (--last_sign_typenr == 0) - last_sign_typenr = MAX_TYPENR; /* wrap around */ - } -+ -+ /* add the new sign to the list of signs */ -+ if (sp_prev == NULL) -+ first_sign = sp; -+ else -+ sp_prev->sn_next = sp; -+ sp->sn_name = vim_strnsave(arg, (int)(p - arg)); - } - - /* set values for a defined sign. */ -*** ../vim-7.3.023/src/version.c 2010-10-13 16:22:05.000000000 +0200 ---- src/version.c 2010-10-13 16:42:14.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 24, - /**/ - --- - In war we're tough and able. - Quite indefatigable - Between our quests - We sequin vests - And impersonate Clark Gable - It's a busy life in Camelot. - I have to push the pram a lot. - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim-dev@vim.org -Subject: Patch 7.3.025 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.025 -Problem: ":mksession" does not square brackets escape file name properly. -Solution: Improve escapging of file names. (partly by Peter Odding) -Files: src/ex_docmd.c - - -*** ../vim-7.3.024/src/ex_docmd.c 2010-09-21 16:56:29.000000000 +0200 ---- src/ex_docmd.c 2010-10-13 17:39:17.000000000 +0200 -*************** -*** 10708,10714 **** - * Write a file name to the session file. - * Takes care of the "slash" option in 'sessionoptions' and escapes special - * characters. -! * Returns FAIL if writing fails. - */ - static int - ses_put_fname(fd, name, flagp) ---- 10708,10714 ---- - * Write a file name to the session file. - * Takes care of the "slash" option in 'sessionoptions' and escapes special - * characters. -! * Returns FAIL if writing fails or out of memory. - */ - static int - ses_put_fname(fd, name, flagp) -*************** -*** 10717,10765 **** - unsigned *flagp; - { - char_u *sname; - int retval = OK; -- int c; - - sname = home_replace_save(NULL, name); -! if (sname != NULL) -! name = sname; -! while (*name != NUL) -! { -! #ifdef FEAT_MBYTE -! { -! int l; - -! if (has_mbyte && (l = (*mb_ptr2len)(name)) > 1) -! { -! /* copy a multibyte char */ -! while (--l >= 0) -! { -! if (putc(*name, fd) != *name) -! retval = FAIL; -! ++name; -! } -! continue; -! } -! } -! #endif -! c = *name++; -! if (c == '\\' && (*flagp & SSOP_SLASH)) -! /* change a backslash to a forward slash */ -! c = '/'; -! else if ((vim_strchr(escape_chars, c) != NULL -! #ifdef BACKSLASH_IN_FILENAME -! && c != '\\' -! #endif -! ) || c == '#' || c == '%') -! { -! /* escape a special character with a backslash */ -! if (putc('\\', fd) != '\\') -! retval = FAIL; -! } -! if (putc(c, fd) != c) -! retval = FAIL; - } - vim_free(sname); - return retval; - } - ---- 10717,10748 ---- - unsigned *flagp; - { - char_u *sname; -+ char_u *p; - int retval = OK; - - sname = home_replace_save(NULL, name); -! if (sname == NULL) -! return FAIL; - -! if (*flagp & SSOP_SLASH) -! { -! /* change all backslashes to forward slashes */ -! for (p = sname; *p != NUL; mb_ptr_adv(p)) -! if (*p == '\\') -! *p = '/'; - } -+ -+ /* escapse special characters */ -+ p = vim_strsave_fnameescape(sname, FALSE); - vim_free(sname); -+ if (p == NULL) -+ return FAIL; -+ -+ /* write the result */ -+ if (fputs((char *)p, fd) < 0) -+ retval = FAIL; -+ -+ vim_free(p); - return retval; - } - -*** ../vim-7.3.024/src/version.c 2010-10-13 16:44:17.000000000 +0200 ---- src/version.c 2010-10-13 17:49:15.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 25, - /**/ - --- -"Time flies like an arrow". So I put an arrow on my desk, now -awaiting one of these time flies showing up. - - /// 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 /// -To: vim-dev@vim.org -Subject: Patch 7.3.026 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.026 -Problem: CTRL-] in a help file doesn't always work. (Tony Mechelynck) -Solution: Don't escape special characters. (Carlo Teubner) -Files: src/normal.c - - -*** ../vim-7.3.025/src/normal.c 2010-08-15 21:57:28.000000000 +0200 ---- src/normal.c 2010-10-13 18:01:03.000000000 +0200 -*************** -*** 5666,5673 **** - else if (cmdchar == '#') - aux_ptr = (char_u *)(p_magic ? "/?.*~[^$\\" : "/?^$\\"); - else if (tag_cmd) -! /* Don't escape spaces and Tabs in a tag with a backslash */ -! aux_ptr = (char_u *)"\\|\"\n["; - else - aux_ptr = (char_u *)"\\|\"\n*?["; - ---- 5666,5678 ---- - else if (cmdchar == '#') - aux_ptr = (char_u *)(p_magic ? "/?.*~[^$\\" : "/?^$\\"); - else if (tag_cmd) -! { -! if (curbuf->b_help) -! /* ":help" handles unescaped argument */ -! aux_ptr = (char_u *)""; -! else -! aux_ptr = (char_u *)"\\|\"\n["; -! } - else - aux_ptr = (char_u *)"\\|\"\n*?["; - -*** ../vim-7.3.025/src/version.c 2010-10-13 17:50:02.000000000 +0200 ---- src/version.c 2010-10-13 18:04:54.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 26, - /**/ - --- -MAN: Fetchez la vache! -GUARD: Quoi? -MAN: Fetchez la vache! - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim-dev@vim.org -Subject: Patch 7.3.027 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.027 -Problem: Opening a file on a network share is very slow. -Solution: When fixing file name case append "\*" to directory, server and - network share names. (David Anderson, John Beckett) -Files: src/os_win32.c - - -*** ../vim-7.3.026/src/os_win32.c 2010-09-21 17:29:19.000000000 +0200 ---- src/os_win32.c 2010-10-13 20:31:32.000000000 +0200 -*************** -*** 2308,2319 **** ---- 2308,2321 ---- - int len) - { - char szTrueName[_MAX_PATH + 2]; -+ char szTrueNameTemp[_MAX_PATH + 2]; - char *ptrue, *ptruePrev; - char *porig, *porigPrev; - int flen; - WIN32_FIND_DATA fb; - HANDLE hFind; - int c; -+ int slen; - - flen = (int)STRLEN(name); - if (flen == 0 || flen > _MAX_PATH) -*************** -*** 2358,2369 **** - } - *ptrue = NUL; - - /* Skip "", "." and "..". */ - if (ptrue > ptruePrev - && (ptruePrev[0] != '.' - || (ptruePrev[1] != NUL - && (ptruePrev[1] != '.' || ptruePrev[2] != NUL))) -! && (hFind = FindFirstFile(szTrueName, &fb)) - != INVALID_HANDLE_VALUE) - { - c = *porig; ---- 2360,2378 ---- - } - *ptrue = NUL; - -+ /* To avoid a slow failure append "\*" when searching a directory, -+ * server or network share. */ -+ STRCPY(szTrueNameTemp, szTrueName); -+ slen = strlen(szTrueNameTemp); -+ if (*porig == psepc && slen + 2 < _MAX_PATH) -+ STRCPY(szTrueNameTemp + slen, "\\*"); -+ - /* Skip "", "." and "..". */ - if (ptrue > ptruePrev - && (ptruePrev[0] != '.' - || (ptruePrev[1] != NUL - && (ptruePrev[1] != '.' || ptruePrev[2] != NUL))) -! && (hFind = FindFirstFile(szTrueNameTemp, &fb)) - != INVALID_HANDLE_VALUE) - { - c = *porig; -*** ../vim-7.3.026/src/version.c 2010-10-13 18:06:42.000000000 +0200 ---- src/version.c 2010-10-13 20:37:00.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 27, - /**/ - --- - A cow comes flying over the battlements, lowing aggressively. The cow - lands on GALAHAD'S PAGE, squashing him completely. - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim-dev@vim.org -Subject: Patch 7.3.028 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.028 (after 7.3.024) -Problem: Signs don't show up. (Charles Campbell) -Solution: Don't use negative numbers. Also assign a number to signs that - have a name of all digits to avoid using a sign number twice. -Files: src/ex_cmds.c - - -*** ../vim-7.3.027/src/ex_cmds.c 2010-10-13 16:44:17.000000000 +0200 ---- src/ex_cmds.c 2010-10-14 20:59:04.000000000 +0200 -*************** -*** 6569,6575 **** - }; - - static sign_T *first_sign = NULL; -! static int last_sign_typenr = MAX_TYPENR; /* is decremented */ - - static int sign_cmd_idx __ARGS((char_u *begin_cmd, char_u *end_cmd)); - static void sign_list_defined __ARGS((sign_T *sp)); ---- 6569,6575 ---- - }; - - static sign_T *first_sign = NULL; -! static int next_sign_typenr = 1; - - static int sign_cmd_idx __ARGS((char_u *begin_cmd, char_u *end_cmd)); - static void sign_list_defined __ARGS((sign_T *sp)); -*************** -*** 6651,6659 **** ---- 6651,6664 ---- - EMSG(_("E156: Missing sign name")); - else - { -+ /* Isolate the sign name. If it's a number skip leading zeroes, -+ * so that "099" and "99" are the same sign. But keep "0". */ - p = skiptowhite(arg); - if (*p != NUL) - *p++ = NUL; -+ while (arg[0] == '0' && arg[1] != NUL) -+ ++arg; -+ - sp_prev = NULL; - for (sp = first_sign; sp != NULL; sp = sp->sn_next) - { -*************** -*** 6666,6706 **** - /* ":sign define {name} ...": define a sign */ - if (sp == NULL) - { - /* Allocate a new sign. */ - sp = (sign_T *)alloc_clear((unsigned)sizeof(sign_T)); - if (sp == NULL) - return; - -! /* If the name is a number use that for the typenr, -! * otherwise use a negative number. */ -! if (VIM_ISDIGIT(*arg)) -! sp->sn_typenr = atoi((char *)arg); -! else - { -! sign_T *lp; -! int start = last_sign_typenr; -! -! for (lp = first_sign; lp != NULL; lp = lp->sn_next) - { -! if (lp->sn_typenr == -last_sign_typenr) - { -! --last_sign_typenr; -! if (last_sign_typenr == 0) -! last_sign_typenr = MAX_TYPENR; -! if (last_sign_typenr == start) -! { -! vim_free(sp); -! EMSG(_("E612: Too many signs defined")); -! return; -! } -! lp = first_sign; -! continue; - } - } - -! sp->sn_typenr = -last_sign_typenr; -! if (--last_sign_typenr == 0) -! last_sign_typenr = MAX_TYPENR; /* wrap around */ - } - - /* add the new sign to the list of signs */ ---- 6671,6715 ---- - /* ":sign define {name} ...": define a sign */ - if (sp == NULL) - { -+ sign_T *lp; -+ int start = next_sign_typenr; -+ - /* Allocate a new sign. */ - sp = (sign_T *)alloc_clear((unsigned)sizeof(sign_T)); - if (sp == NULL) - return; - -! /* Check that next_sign_typenr is not already being used. -! * This only happens after wrapping around. Hopefully -! * another one got deleted and we can use its number. */ -! for (lp = first_sign; lp != NULL; ) - { -! if (lp->sn_typenr == next_sign_typenr) - { -! ++next_sign_typenr; -! if (next_sign_typenr == MAX_TYPENR) -! next_sign_typenr = 1; -! if (next_sign_typenr == start) - { -! vim_free(sp); -! EMSG(_("E612: Too many signs defined")); -! return; - } -+ lp = first_sign; /* start all over */ -+ continue; - } -+ lp = lp->sn_next; -+ } -+ -+ sp->sn_typenr = next_sign_typenr; -+ if (++next_sign_typenr == MAX_TYPENR) -+ next_sign_typenr = 1; /* wrap around */ - -! sp->sn_name = vim_strsave(arg); -! if (sp->sn_name == NULL) /* out of memory */ -! { -! vim_free(sp); -! return; - } - - /* add the new sign to the list of signs */ -*************** -*** 6708,6714 **** - first_sign = sp; - else - sp_prev->sn_next = sp; -- sp->sn_name = vim_strnsave(arg, (int)(p - arg)); - } - - /* set values for a defined sign. */ ---- 6717,6722 ---- -*************** -*** 6886,6891 **** ---- 6894,6901 ---- - arg = skiptowhite(arg); - if (*arg != NUL) - *arg++ = NUL; -+ while (sign_name[0] == '0' && sign_name[1] != NUL) -+ ++sign_name; - } - else if (STRNCMP(arg, "file=", 5) == 0) - { -*** ../vim-7.3.027/src/version.c 2010-10-13 20:37:37.000000000 +0200 ---- src/version.c 2010-10-14 20:50:54.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 28, - /**/ - --- -This is an airconditioned room, do not open Windows. - - /// 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 /// -To: vim-dev@vim.org -Subject: Patch 7.3.029 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.029 -Problem: ":sort n" sorts lines without a number as number zero. (Beeyawned) -Solution: Make lines without a number sort before lines with a number. Also - fix sorting negative numbers. -Files: src/ex_cmds.c, src/testdir/test57.in, src/testdir/test57.ok - - -*** ../vim-7.3.028/src/ex_cmds.c 2010-10-14 21:29:31.000000000 +0200 ---- src/ex_cmds.c 2010-10-15 20:04:25.000000000 +0200 -*************** -*** 323,329 **** - /* When sorting numbers "start_col_nr" is the number, not the column - * number. */ - if (sort_nr) -! result = l1.start_col_nr - l2.start_col_nr; - else - { - /* We need to copy one line into "sortbuf1", because there is no ---- 323,330 ---- - /* When sorting numbers "start_col_nr" is the number, not the column - * number. */ - if (sort_nr) -! result = l1.start_col_nr == l2.start_col_nr ? 0 -! : l1.start_col_nr > l2.start_col_nr ? 1 : -1; - else - { - /* We need to copy one line into "sortbuf1", because there is no -*************** -*** 482,488 **** - * of the match, by temporarily terminating the string there */ - s2 = s + end_col; - c = *s2; -! (*s2) = 0; - /* Sorting on number: Store the number itself. */ - p = s + start_col; - if (sort_hex) ---- 483,489 ---- - * of the match, by temporarily terminating the string there */ - s2 = s + end_col; - c = *s2; -! *s2 = NUL; - /* Sorting on number: Store the number itself. */ - p = s + start_col; - if (sort_hex) -*************** -*** 491,499 **** - s = skiptodigit(p); - if (s > p && s[-1] == '-') - --s; /* include preceding negative sign */ -! vim_str2nr(s, NULL, NULL, sort_oct, sort_hex, -! &nrs[lnum - eap->line1].start_col_nr, NULL); -! (*s2) = c; - } - else - { ---- 492,504 ---- - s = skiptodigit(p); - if (s > p && s[-1] == '-') - --s; /* include preceding negative sign */ -! if (*s == NUL) -! /* empty line should sort before any number */ -! nrs[lnum - eap->line1].start_col_nr = -MAXLNUM; -! else -! vim_str2nr(s, NULL, NULL, sort_oct, sort_hex, -! &nrs[lnum - eap->line1].start_col_nr, NULL); -! *s2 = c; - } - else - { -*************** -*** 6556,6563 **** - struct sign - { - sign_T *sn_next; /* next sign in list */ -! int sn_typenr; /* type number of sign (negative if not equal -! to name) */ - char_u *sn_name; /* name of sign */ - char_u *sn_icon; /* name of pixmap */ - #ifdef FEAT_SIGN_ICONS ---- 6561,6567 ---- - struct sign - { - sign_T *sn_next; /* next sign in list */ -! int sn_typenr; /* type number of sign */ - char_u *sn_name; /* name of sign */ - char_u *sn_icon; /* name of pixmap */ - #ifdef FEAT_SIGN_ICONS -*** ../vim-7.3.028/src/testdir/test57.in 2010-08-15 21:57:29.000000000 +0200 ---- src/testdir/test57.in 2010-10-15 20:12:23.000000000 +0200 -*************** -*** 53,67 **** - t02: numeric - abc - ab -- a - a321 - a123 - a122 - b321 - b123 - c123d - 123b - c321d - b322b - b321 - b321b ---- 53,71 ---- - t02: numeric - abc - ab - a321 - a123 - a122 -+ a -+ x-22 - b321 - b123 -+ - c123d -+ -24 - 123b - c321d -+ 0 - b322b - b321 - b321b -*** ../vim-7.3.028/src/testdir/test57.ok 2010-08-15 21:57:29.000000000 +0200 ---- src/testdir/test57.ok 2010-10-15 20:11:42.000000000 +0200 -*************** -*** 21,26 **** ---- 21,30 ---- - a - - -+ -+ -24 -+ x-22 -+ 0 - a122 - a123 - b123 -*** ../vim-7.3.028/src/version.c 2010-10-14 21:29:31.000000000 +0200 ---- src/version.c 2010-10-15 20:13:52.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 29, - /**/ - --- - When danger reared its ugly head, - He bravely turned his tail and fled - Yes, Brave Sir Robin turned about - And gallantly he chickened out - Bravely taking to his feet - He beat a very brave retreat - Bravest of the brave Sir Robin - Petrified of being dead - Soiled his pants then brave Sir Robin - Turned away and fled. - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim-dev@vim.org -Subject: Patch 7.3.030 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.030 -Problem: Cannot store Dict and List in viminfo file. -Solution: Add support for this. (Christian Brabandt) -Files: runtime/doc/options.txt, src/eval.c, src/testdir/Make_amiga.mak, - src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, - src/testdir/Make_os2.mak, src/testdir/Make_vms.mms, - src/testdir/Makefile, src/testdir/main.aap, src/testdir/test74.in, - src/testdir/test74.ok - - -*** ../vim-7.3.029/runtime/doc/options.txt 2010-08-15 21:57:17.000000000 +0200 ---- runtime/doc/options.txt 2010-10-20 17:41:18.000000000 +0200 -*************** -*** 7530,7537 **** - ! When included, save and restore global variables that start - with an uppercase letter, and don't contain a lowercase - letter. Thus "KEEPTHIS and "K_L_M" are stored, but "KeepThis" -! and "_K_L_M" are not. Only String and Number types are -! stored. - " Maximum number of lines saved for each register. Old name of - the '<' item, with the disadvantage that you need to put a - backslash before the ", otherwise it will be recognized as the ---- 7530,7538 ---- - ! When included, save and restore global variables that start - with an uppercase letter, and don't contain a lowercase - letter. Thus "KEEPTHIS and "K_L_M" are stored, but "KeepThis" -! and "_K_L_M" are not. Nested List and Dict items may not be -! read back correctly, you end up with a string representation -! instead. - " Maximum number of lines saved for each register. Old name of - the '<' item, with the disadvantage that you need to put a - backslash before the ", otherwise it will be recognized as the -*** ../vim-7.3.029/src/eval.c 2010-09-14 12:47:30.000000000 +0200 ---- src/eval.c 2010-10-20 16:25:54.000000000 +0200 -*************** -*** 22520,22537 **** - if (tab != NULL) - { - *tab++ = '\0'; /* isolate the variable name */ -! if (*tab == 'S') /* string var */ -! type = VAR_STRING; - #ifdef FEAT_FLOAT -! else if (*tab == 'F') -! type = VAR_FLOAT; - #endif - - tab = vim_strchr(tab, '\t'); - if (tab != NULL) - { - tv.v_type = type; -! if (type == VAR_STRING) - tv.vval.v_string = viminfo_readstring(virp, - (int)(tab - virp->vir_line + 1), TRUE); - #ifdef FEAT_FLOAT ---- 22520,22540 ---- - if (tab != NULL) - { - *tab++ = '\0'; /* isolate the variable name */ -! switch (*tab) -! { -! case 'S': type = VAR_STRING; break; - #ifdef FEAT_FLOAT -! case 'F': type = VAR_FLOAT; break; - #endif -+ case 'D': type = VAR_DICT; break; -+ case 'L': type = VAR_LIST; break; -+ } - - tab = vim_strchr(tab, '\t'); - if (tab != NULL) - { - tv.v_type = type; -! if (type == VAR_STRING || type == VAR_DICT || type == VAR_LIST) - tv.vval.v_string = viminfo_readstring(virp, - (int)(tab - virp->vir_line + 1), TRUE); - #ifdef FEAT_FLOAT -*************** -*** 22540,22548 **** - #endif - else - tv.vval.v_number = atol((char *)tab + 1); - set_var(virp->vir_line + 1, &tv, FALSE); -! if (type == VAR_STRING) - vim_free(tv.vval.v_string); - } - } - } ---- 22543,22569 ---- - #endif - else - tv.vval.v_number = atol((char *)tab + 1); -+ if (type == VAR_DICT || type == VAR_LIST) -+ { -+ typval_T *etv = eval_expr(tv.vval.v_string, NULL); -+ -+ if (etv == NULL) -+ /* Failed to parse back the dict or list, use it as a -+ * string. */ -+ tv.v_type = VAR_STRING; -+ else -+ { -+ vim_free(tv.vval.v_string); -+ tv = *etv; -+ } -+ } -+ - set_var(virp->vir_line + 1, &tv, FALSE); -! -! if (tv.v_type == VAR_STRING) - vim_free(tv.vval.v_string); -+ else if (tv.v_type == VAR_DICT || tv.v_type == VAR_LIST) -+ clear_tv(&tv); - } - } - } -*************** -*** 22584,22591 **** - case VAR_STRING: s = "STR"; break; - case VAR_NUMBER: s = "NUM"; break; - #ifdef FEAT_FLOAT -! case VAR_FLOAT: s = "FLO"; break; - #endif - default: continue; - } - fprintf(fp, "!%s\t%s\t", this_var->di_key, s); ---- 22605,22614 ---- - case VAR_STRING: s = "STR"; break; - case VAR_NUMBER: s = "NUM"; break; - #ifdef FEAT_FLOAT -! case VAR_FLOAT: s = "FLO"; break; - #endif -+ case VAR_DICT: s = "DIC"; break; -+ case VAR_LIST: s = "LIS"; break; - default: continue; - } - fprintf(fp, "!%s\t%s\t", this_var->di_key, s); -*** ../vim-7.3.029/src/testdir/Make_amiga.mak 2010-08-15 21:57:29.000000000 +0200 ---- src/testdir/Make_amiga.mak 2010-10-20 16:27:19.000000000 +0200 -*************** -*** 27,33 **** - test56.out test57.out test58.out test59.out test60.out \ - test61.out test62.out test63.out test64.out test65.out \ - test66.out test67.out test68.out test69.out test70.out \ -! test71.out test72.out test73.out - - .SUFFIXES: .in .out - ---- 27,33 ---- - test56.out test57.out test58.out test59.out test60.out \ - test61.out test62.out test63.out test64.out test65.out \ - test66.out test67.out test68.out test69.out test70.out \ -! test71.out test72.out test73.out test74.out - - .SUFFIXES: .in .out - -*************** -*** 120,122 **** ---- 120,123 ---- - test71.out: test71.in - test72.out: test72.in - test73.out: test73.in -+ test74.out: test74.in -*** ../vim-7.3.029/src/testdir/Make_dos.mak 2010-08-15 21:57:29.000000000 +0200 ---- src/testdir/Make_dos.mak 2010-10-20 16:13:35.000000000 +0200 -*************** -*** 27,33 **** - test30.out test31.out test32.out test33.out test34.out \ - test37.out test38.out test39.out test40.out test41.out \ - test42.out test52.out test65.out test66.out test67.out \ -! test68.out test69.out test71.out test72.out test73.out - - SCRIPTS32 = test50.out test70.out - ---- 27,34 ---- - test30.out test31.out test32.out test33.out test34.out \ - test37.out test38.out test39.out test40.out test41.out \ - test42.out test52.out test65.out test66.out test67.out \ -! test68.out test69.out test71.out test72.out test73.out \ -! test74.out - - SCRIPTS32 = test50.out test70.out - -*** ../vim-7.3.029/src/testdir/Make_ming.mak 2010-08-15 21:57:29.000000000 +0200 ---- src/testdir/Make_ming.mak 2010-10-20 16:26:54.000000000 +0200 -*************** -*** 47,53 **** - test30.out test31.out test32.out test33.out test34.out \ - test37.out test38.out test39.out test40.out test41.out \ - test42.out test52.out test65.out test66.out test67.out \ -! test68.out test69.out test71.out test72.out test72.out - - SCRIPTS32 = test50.out test70.out - ---- 47,54 ---- - test30.out test31.out test32.out test33.out test34.out \ - test37.out test38.out test39.out test40.out test41.out \ - test42.out test52.out test65.out test66.out test67.out \ -! test68.out test69.out test71.out test72.out test73.out \ -! test74.out - - SCRIPTS32 = test50.out test70.out - -*** ../vim-7.3.029/src/testdir/Make_os2.mak 2010-08-15 21:57:29.000000000 +0200 ---- src/testdir/Make_os2.mak 2010-10-20 16:13:35.000000000 +0200 -*************** -*** 27,33 **** - test56.out test57.out test58.out test59.out test60.out \ - test61.out test62.out test63.out test64.out test65.out \ - test66.out test67.out test68.out test69.out test70.out \ -! test71.out test72.out test73.out - - .SUFFIXES: .in .out - ---- 27,33 ---- - test56.out test57.out test58.out test59.out test60.out \ - test61.out test62.out test63.out test64.out test65.out \ - test66.out test67.out test68.out test69.out test70.out \ -! test71.out test72.out test73.out test74.out - - .SUFFIXES: .in .out - -*** ../vim-7.3.029/src/testdir/Make_vms.mms 2010-08-15 21:57:29.000000000 +0200 ---- src/testdir/Make_vms.mms 2010-10-20 16:13:35.000000000 +0200 -*************** -*** 74,80 **** - test56.out test57.out test60.out \ - test61.out test62.out test63.out test64.out test65.out \ - test66.out test67.out test68.out test69.out \ -! test71.out test72.out - - # Known problems: - # Test 30: a problem around mac format - unknown reason ---- 74,80 ---- - test56.out test57.out test60.out \ - test61.out test62.out test63.out test64.out test65.out \ - test66.out test67.out test68.out test69.out \ -! test71.out test72.out test74.out - - # Known problems: - # Test 30: a problem around mac format - unknown reason -*** ../vim-7.3.029/src/testdir/Makefile 2010-09-14 12:47:30.000000000 +0200 ---- src/testdir/Makefile 2010-10-20 16:13:35.000000000 +0200 -*************** -*** 10,15 **** ---- 10,16 ---- - # This will make testing about 10 times as slow. - # VALGRIND = valgrind --tool=memcheck --leak-check=yes --num-callers=15 --log-file=valgrind.$* - -+ - SCRIPTS = test1.out test2.out test3.out test4.out test5.out test6.out \ - test7.out test8.out test9.out test10.out test11.out \ - test12.out test13.out test14.out test15.out test17.out \ -*************** -*** 23,29 **** - test54.out test55.out test56.out test57.out test58.out \ - test59.out test60.out test61.out test62.out test63.out \ - test64.out test65.out test66.out test67.out test68.out \ -! test69.out test70.out test71.out test72.out test73.out - - SCRIPTS_GUI = test16.out - ---- 24,31 ---- - test54.out test55.out test56.out test57.out test58.out \ - test59.out test60.out test61.out test62.out test63.out \ - test64.out test65.out test66.out test67.out test68.out \ -! test69.out test70.out test71.out test72.out test73.out \ -! test74.out - - SCRIPTS_GUI = test16.out - -*** ../vim-7.3.029/src/testdir/main.aap 2010-08-15 21:57:29.000000000 +0200 ---- src/testdir/main.aap 2010-10-20 16:13:35.000000000 +0200 -*************** -*** 13,19 **** - test33.out test34.out test35.out test36.out test37.out - test38.out test39.out test40.out test41.out test42.out - test43.out test44.out test45.out test46.out test47.out -! test48.out test49.out - - ScriptsGUI = test16.out - ---- 13,19 ---- - test33.out test34.out test35.out test36.out test37.out - test38.out test39.out test40.out test41.out test42.out - test43.out test44.out test45.out test46.out test47.out -! test48.out test49.out test74.out - - ScriptsGUI = test16.out - -*** ../vim-7.3.029/src/testdir/test74.in 2010-10-20 17:41:30.000000000 +0200 ---- src/testdir/test74.in 2010-10-20 17:37:52.000000000 +0200 -*************** -*** 0 **** ---- 1,36 ---- -+ " Tests for storing global variables in the .viminfo file vim: set ft=vim: -+ -+ STARTTEST -+ :so small.vim -+ :" Do all test in a separate window to avoid E211 when we recursively -+ :" delete the Xfind directory during cleanup -+ :" -+ :" This will cause a few errors, do it silently. -+ :set visualbell -+ :set nocp viminfo+=!,nviminfo -+ :let MY_GLOBAL_DICT={'foo': 1, 'bar': 0, 'longvarible': 1000} -+ :" store a really long list, so line wrapping will occur in viminfo file -+ :let MY_GLOBAL_LIST=range(1,100) -+ :wv! Xviminfo -+ :unlet MY_GLOBAL_DICT -+ :unlet MY_GLOBAL_LIST -+ :rv! Xviminfo -+ :call delete('Xviminfo') -+ :if exists("MY_GLOBAL_DICT") -+ :redir >> test.out -+ :echo MY_GLOBAL_DICT -+ :redir end -+ :endif -+ :if exists("MY_GLOBAL_LIST") -+ :redir >> test.out -+ :echo MY_GLOBAL_LIST -+ :redir end -+ :endif -+ :redir >> test.out -+ :echo "foobar" -+ :redir end -+ :endif -+ :qa! -+ ENDTEST -+ -+ eof -*** ../vim-7.3.029/src/testdir/test74.ok 2010-10-20 17:41:30.000000000 +0200 ---- src/testdir/test74.ok 2010-10-20 17:36:57.000000000 +0200 -*************** -*** 0 **** ---- 1,5 ---- -+ -+ {'foo': 1, 'longvarible': 1000, 'bar': 0} -+ [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100] -+ -+ foobar -*** ../vim-7.3.029/src/version.c 2010-10-15 20:20:00.000000000 +0200 ---- src/version.c 2010-10-20 17:23:54.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 30, - /**/ - --- -Not too long ago, cut and paste was done with scissors and glue... - - /// 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 /// -To: vim-dev@vim.org -Subject: Patch 7.3.031 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.031 -Problem: Can't pass the X window ID to another application. -Solution: Add v:windowid. (Christian J. Robinson, Lech Lorens) -Files: runtime/doc/eval.txt, src/eval.c, src/gui.c, src/vim.h, - src/os_unix.c - - -*** ../vim-7.3.030/runtime/doc/eval.txt 2010-08-15 21:57:15.000000000 +0200 ---- runtime/doc/eval.txt 2010-10-20 19:11:03.000000000 +0200 -*************** -*** 1657,1662 **** ---- 1657,1667 ---- - *v:warningmsg* *warningmsg-variable* - v:warningmsg Last given warning message. It's allowed to set this variable. - -+ *v:windowid* *windowid-variable* -+ v:windowid When any X11 based GUI is running or when running in a -+ terminal and Vim connects to the X server (|-X|) this will be -+ set to the window ID. Otherwise the value is zero. -+ - ============================================================================== - 4. Builtin Functions *functions* - -*** ../vim-7.3.030/src/eval.c 2010-10-20 17:44:01.000000000 +0200 ---- src/eval.c 2010-10-20 18:48:40.000000000 +0200 -*************** -*** 362,367 **** ---- 362,368 ---- - {VV_NAME("operator", VAR_STRING), VV_RO}, - {VV_NAME("searchforward", VAR_NUMBER), 0}, - {VV_NAME("oldfiles", VAR_LIST), 0}, -+ {VV_NAME("windowid", VAR_NUMBER), VV_RO}, - }; - - /* shorthand */ -*** ../vim-7.3.030/src/gui.c 2010-09-29 17:26:57.000000000 +0200 ---- src/gui.c 2010-10-20 19:15:56.000000000 +0200 -*************** -*** 105,112 **** ---- 105,122 ---- - - #if defined(FEAT_GUI_GTK) || defined(FEAT_GUI_X11) - if (gui.in_use) -+ { -+ # ifdef FEAT_EVAL -+ Window x11_window; -+ Display *x11_display; -+ -+ if (gui_get_x11_windis(&x11_window, &x11_display) == OK) -+ set_vim_var_nr(VV_WINDOWID, (long)x11_window); -+ # endif -+ - /* Display error messages in a dialog now. */ - display_errors(); -+ } - #endif - - #if defined(MAY_FORK) && !defined(__QNXNTO__) -*** ../vim-7.3.030/src/vim.h 2010-10-10 17:08:28.000000000 +0200 ---- src/vim.h 2010-10-20 18:48:40.000000000 +0200 -*************** -*** 1842,1848 **** - #define VV_OP 52 - #define VV_SEARCHFORWARD 53 - #define VV_OLDFILES 54 -! #define VV_LEN 55 /* number of v: vars */ - - #ifdef FEAT_CLIPBOARD - ---- 1842,1849 ---- - #define VV_OP 52 - #define VV_SEARCHFORWARD 53 - #define VV_OLDFILES 54 -! #define VV_WINDOWID 55 -! #define VV_LEN 56 /* number of v: vars */ - - #ifdef FEAT_CLIPBOARD - -*** ../vim-7.3.030/src/os_unix.c 2010-10-13 16:22:05.000000000 +0200 ---- src/os_unix.c 2010-10-20 19:15:46.000000000 +0200 -*************** -*** 1738,1743 **** ---- 1738,1748 ---- - } - if (x11_window == 0 || x11_display == NULL) - return (result = FAIL); -+ -+ # ifdef FEAT_EVAL -+ set_vim_var_nr(VV_WINDOWID, (long)x11_window); -+ # endif -+ - return (result = OK); - } - -*** ../vim-7.3.030/src/version.c 2010-10-20 17:44:01.000000000 +0200 ---- src/version.c 2010-10-20 19:11:31.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 31, - /**/ - --- -What the word 'politics' means: 'Poli' in Latin meaning 'many' and 'tics' -meaning 'bloodsucking creatures'. - - /// 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 /// -To: vim-dev@vim.org -Subject: Patch 7.3.032 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.032 -Problem: maparg() doesn't return the flags, such as <buffer>, <script>, - <silent>. These are needed to save and restore a mapping. -Solution: Improve maparg(). (also by Christian Brabandt) -Files: runtime/doc/eval.txt, src/eval.c, src/getchar.c, src/gui_w48.c, src/message.c, src/proto/getchar.pro, src/proto/message.pro, src/structs.h src/testdir/test75.in, src/testdir/test75.ok - - -*** ../vim-7.3.031/runtime/doc/eval.txt 2010-10-20 19:17:43.000000000 +0200 ---- runtime/doc/eval.txt 2010-10-20 19:44:41.000000000 +0200 -*************** -*** 1827,1833 **** - log( {expr}) Float natural logarithm (base e) of {expr} - log10( {expr}) Float logarithm of Float {expr} to base 10 - map( {expr}, {string}) List/Dict change each item in {expr} to {expr} -! maparg( {name}[, {mode} [, {abbr}]]) - String rhs of mapping {name} in mode {mode} - mapcheck( {name}[, {mode} [, {abbr}]]) - String check for mappings matching {name} ---- 1827,1833 ---- - log( {expr}) Float natural logarithm (base e) of {expr} - log10( {expr}) Float logarithm of Float {expr} to base 10 - map( {expr}, {string}) List/Dict change each item in {expr} to {expr} -! maparg( {name}[, {mode} [, {abbr} [, {dict}]]]) - String rhs of mapping {name} in mode {mode} - mapcheck( {name}[, {mode} [, {abbr}]]) - String check for mappings matching {name} -*************** -*** 3971,3993 **** - further items in {expr} are processed. - - -! maparg({name}[, {mode} [, {abbr}]]) *maparg()* -! Return the rhs of mapping {name} in mode {mode}. When there -! is no mapping for {name}, an empty String is returned. - {mode} can be one of these strings: - "n" Normal -! "v" Visual - "o" Operator-pending - "i" Insert - "c" Cmd-line - "l" langmap |language-mapping| - "" Normal, Visual and Operator-pending - When {mode} is omitted, the modes for "" are used. - When {abbr} is there and it is non-zero use abbreviations - instead of mappings. -! The {name} can have special key names, like in the ":map" -! command. The returned String has special characters -! translated like in the output of the ":map" command listing. - The mappings local to the current buffer are checked first, - then the global mappings. - This function can be used to map a key even when it's already ---- 3972,4022 ---- - further items in {expr} are processed. - - -! maparg({name}[, {mode} [, {abbr} [, {dict}]]]) *maparg()* -! When {dict} is omitted or zero: Return the rhs of mapping -! {name} in mode {mode}. The returned String has special -! characters translated like in the output of the ":map" command -! listing. -! -! When there is no mapping for {name}, an empty String is -! returned. -! -! The {name} can have special key names, like in the ":map" -! command. -! - {mode} can be one of these strings: - "n" Normal -! "v" Visual (including Select) - "o" Operator-pending - "i" Insert - "c" Cmd-line -+ "s" Select -+ "x" Visual - "l" langmap |language-mapping| - "" Normal, Visual and Operator-pending - When {mode} is omitted, the modes for "" are used. -+ - When {abbr} is there and it is non-zero use abbreviations - instead of mappings. -! -! When {dict} is there and it is non-zero return a dictionary -! containing all the information of the mapping with the -! following items: -! "lhs" The {lhs} of the mapping. -! "rhs" The {rhs} of the mapping as typed. -! "silent" 1 for a |:map-silent| mapping, else 0. -! "noremap" 1 if the {rhs} of the mapping is remappable. -! "expr" 1 for an expression mapping (|:map-<expr>|). -! "buffer" 1 for a buffer local mapping (|:map-local|). -! "mode" Modes for which the mapping is defined. In -! addition to the modes mentioned above, these -! characters will be used: -! " " Normal, Visual and Operator-pending -! "!" Insert and Commandline mode -! (|mapmpde-ic|) -! "sid" the Script local ID, used for <sid> mappings -! (|<SID>|) -! - The mappings local to the current buffer are checked first, - then the global mappings. - This function can be used to map a key even when it's already -*** ../vim-7.3.031/src/eval.c 2010-10-20 19:17:43.000000000 +0200 ---- src/eval.c 2010-10-20 21:15:55.000000000 +0200 -*************** -*** 7804,7810 **** - {"log10", 1, 1, f_log10}, - #endif - {"map", 2, 2, f_map}, -! {"maparg", 1, 3, f_maparg}, - {"mapcheck", 1, 3, f_mapcheck}, - {"match", 2, 4, f_match}, - {"matchadd", 2, 4, f_matchadd}, ---- 7804,7810 ---- - {"log10", 1, 1, f_log10}, - #endif - {"map", 2, 2, f_map}, -! {"maparg", 1, 4, f_maparg}, - {"mapcheck", 1, 3, f_mapcheck}, - {"match", 2, 4, f_match}, - {"matchadd", 2, 4, f_matchadd}, -*************** -*** 13292,13299 **** - char_u *keys_buf = NULL; - char_u *rhs; - int mode; -- garray_T ga; - int abbr = FALSE; - - /* return empty string for failure */ - rettv->v_type = VAR_STRING; ---- 13292,13301 ---- - char_u *keys_buf = NULL; - char_u *rhs; - int mode; - int abbr = FALSE; -+ int get_dict = FALSE; -+ mapblock_T *mp; -+ int buffer_local; - - /* return empty string for failure */ - rettv->v_type = VAR_STRING; -*************** -*** 13307,13313 **** ---- 13309,13319 ---- - { - which = get_tv_string_buf_chk(&argvars[1], buf); - if (argvars[2].v_type != VAR_UNKNOWN) -+ { - abbr = get_tv_number(&argvars[2]); -+ if (argvars[3].v_type != VAR_UNKNOWN) -+ get_dict = get_tv_number(&argvars[3]); -+ } - } - else - which = (char_u *)""; -*************** -*** 13317,13335 **** - mode = get_map_mode(&which, 0); - - keys = replace_termcodes(keys, &keys_buf, TRUE, TRUE, FALSE); -! rhs = check_map(keys, mode, exact, FALSE, abbr); - vim_free(keys_buf); -- if (rhs != NULL) -- { -- ga_init(&ga); -- ga.ga_itemsize = 1; -- ga.ga_growsize = 40; - -! while (*rhs != NUL) -! ga_concat(&ga, str2special(&rhs, FALSE)); - -! ga_append(&ga, NUL); -! rettv->vval.v_string = (char_u *)ga.ga_data; - } - } - ---- 13323,13356 ---- - mode = get_map_mode(&which, 0); - - keys = replace_termcodes(keys, &keys_buf, TRUE, TRUE, FALSE); -! rhs = check_map(keys, mode, exact, FALSE, abbr, &mp, &buffer_local); - vim_free(keys_buf); - -! if (!get_dict) -! { -! /* Return a string. */ -! if (rhs != NULL) -! rettv->vval.v_string = str2special_save(rhs, FALSE); -! -! } -! else if (rettv_dict_alloc(rettv) != FAIL && rhs != NULL) -! { -! /* Return a dictionary. */ -! char_u *lhs = str2special_save(mp->m_keys, TRUE); -! char_u *mapmode = map_mode_to_chars(mp->m_mode); -! dict_T *dict = rettv->vval.v_dict; -! -! dict_add_nr_str(dict, "lhs", 0L, lhs); -! dict_add_nr_str(dict, "rhs", 0L, mp->m_orig_str); -! dict_add_nr_str(dict, "noremap", mp->m_noremap ? 1L : 0L , NULL); -! dict_add_nr_str(dict, "expr", mp->m_expr ? 1L : 0L, NULL); -! dict_add_nr_str(dict, "silent", mp->m_silent ? 1L : 0L, NULL); -! dict_add_nr_str(dict, "sid", (long)mp->m_script_ID, NULL); -! dict_add_nr_str(dict, "buffer", (long)buffer_local, NULL); -! dict_add_nr_str(dict, "mode", 0L, mapmode); - -! vim_free(lhs); -! vim_free(mapmode); - } - } - -*** ../vim-7.3.031/src/getchar.c 2010-08-15 21:57:25.000000000 +0200 ---- src/getchar.c 2010-10-20 21:16:24.000000000 +0200 -*************** -*** 3168,3173 **** ---- 3168,3174 ---- - int expr = FALSE; - #endif - int noremap; -+ char_u *orig_rhs; - - keys = arg; - map_table = maphash; -*************** -*** 3266,3271 **** ---- 3267,3273 ---- - } - if (*p != NUL) - *p++ = NUL; -+ - p = skipwhite(p); - rhs = p; - hasarg = (*rhs != NUL); -*************** -*** 3290,3295 **** ---- 3292,3298 ---- - keys = replace_termcodes(keys, &keys_buf, TRUE, TRUE, special); - if (hasarg) - { -+ orig_rhs = rhs; - if (STRICMP(rhs, "<nop>") == 0) /* "<Nop>" means nothing */ - rhs = (char_u *)""; - else -*************** -*** 3298,3304 **** - - #ifdef FEAT_FKMAP - /* -! * when in right-to-left mode and alternate keymap option set, - * reverse the character flow in the rhs in Farsi. - */ - if (p_altkeymap && curwin->w_p_rl) ---- 3301,3307 ---- - - #ifdef FEAT_FKMAP - /* -! * When in right-to-left mode and alternate keymap option set, - * reverse the character flow in the rhs in Farsi. - */ - if (p_altkeymap && curwin->w_p_rl) -*************** -*** 3556,3561 **** ---- 3559,3566 ---- - } - vim_free(mp->m_str); - mp->m_str = newstr; -+ vim_free(mp->m_orig_str); -+ mp->m_orig_str = vim_strsave(orig_rhs); - mp->m_noremap = noremap; - mp->m_silent = silent; - mp->m_mode = mode; -*************** -*** 3633,3642 **** ---- 3638,3649 ---- - - mp->m_keys = vim_strsave(keys); - mp->m_str = vim_strsave(rhs); -+ mp->m_orig_str = vim_strsave(orig_rhs); - if (mp->m_keys == NULL || mp->m_str == NULL) - { - vim_free(mp->m_keys); - vim_free(mp->m_str); -+ vim_free(mp->m_orig_str); - vim_free(mp); - retval = 4; /* no mem */ - goto theend; -*************** -*** 3682,3687 **** ---- 3689,3695 ---- - mp = *mpp; - vim_free(mp->m_keys); - vim_free(mp->m_str); -+ vim_free(mp->m_orig_str); - *mpp = mp->m_next; - vim_free(mp); - } -*************** -*** 3851,3862 **** - } - } - - static void - showmap(mp, local) - mapblock_T *mp; - int local; /* TRUE for buffer-local map */ - { -! int len = 1; - - if (msg_didout || msg_silent != 0) - { ---- 3859,3915 ---- - } - } - -+ /* -+ * Return characters to represent the map mode in an allocated string. -+ * Returns NULL when out of memory. -+ */ -+ char_u * -+ map_mode_to_chars(mode) -+ int mode; -+ { -+ garray_T mapmode; -+ -+ ga_init2(&mapmode, 1, 7); -+ -+ if ((mode & (INSERT + CMDLINE)) == INSERT + CMDLINE) -+ ga_append(&mapmode, '!'); /* :map! */ -+ else if (mode & INSERT) -+ ga_append(&mapmode, 'i'); /* :imap */ -+ else if (mode & LANGMAP) -+ ga_append(&mapmode, 'l'); /* :lmap */ -+ else if (mode & CMDLINE) -+ ga_append(&mapmode, 'c'); /* :cmap */ -+ else if ((mode & (NORMAL + VISUAL + SELECTMODE + OP_PENDING)) -+ == NORMAL + VISUAL + SELECTMODE + OP_PENDING) -+ ga_append(&mapmode, ' '); /* :map */ -+ else -+ { -+ if (mode & NORMAL) -+ ga_append(&mapmode, 'n'); /* :nmap */ -+ if (mode & OP_PENDING) -+ ga_append(&mapmode, 'o'); /* :omap */ -+ if ((mode & (VISUAL + SELECTMODE)) == VISUAL + SELECTMODE) -+ ga_append(&mapmode, 'v'); /* :vmap */ -+ else -+ { -+ if (mode & VISUAL) -+ ga_append(&mapmode, 'x'); /* :xmap */ -+ if (mode & SELECTMODE) -+ ga_append(&mapmode, 's'); /* :smap */ -+ } -+ } -+ -+ ga_append(&mapmode, NUL); -+ return (char_u *)mapmode.ga_data; -+ } -+ - static void - showmap(mp, local) - mapblock_T *mp; - int local; /* TRUE for buffer-local map */ - { -! int len = 1; -! char_u *mapchars; - - if (msg_didout || msg_silent != 0) - { -*************** -*** 3864,3912 **** - if (got_int) /* 'q' typed at MORE prompt */ - return; - } -! if ((mp->m_mode & (INSERT + CMDLINE)) == INSERT + CMDLINE) -! msg_putchar('!'); /* :map! */ -! else if (mp->m_mode & INSERT) -! msg_putchar('i'); /* :imap */ -! else if (mp->m_mode & LANGMAP) -! msg_putchar('l'); /* :lmap */ -! else if (mp->m_mode & CMDLINE) -! msg_putchar('c'); /* :cmap */ -! else if ((mp->m_mode & (NORMAL + VISUAL + SELECTMODE + OP_PENDING)) -! == NORMAL + VISUAL + SELECTMODE + OP_PENDING) -! msg_putchar(' '); /* :map */ -! else - { -! len = 0; -! if (mp->m_mode & NORMAL) -! { -! msg_putchar('n'); /* :nmap */ -! ++len; -! } -! if (mp->m_mode & OP_PENDING) -! { -! msg_putchar('o'); /* :omap */ -! ++len; -! } -! if ((mp->m_mode & (VISUAL + SELECTMODE)) == VISUAL + SELECTMODE) -! { -! msg_putchar('v'); /* :vmap */ -! ++len; -! } -! else -! { -! if (mp->m_mode & VISUAL) -! { -! msg_putchar('x'); /* :xmap */ -! ++len; -! } -! if (mp->m_mode & SELECTMODE) -! { -! msg_putchar('s'); /* :smap */ -! ++len; -! } -! } - } - while (++len <= 3) - msg_putchar(' '); - ---- 3917,3931 ---- - if (got_int) /* 'q' typed at MORE prompt */ - return; - } -! -! mapchars = map_mode_to_chars(mp->m_mode); -! if (mapchars != NULL) - { -! msg_puts(mapchars); -! len = STRLEN(mapchars); -! vim_free(mapchars); - } -+ - while (++len <= 3) - msg_putchar(' '); - -*************** -*** 3931,3938 **** - msg_putchar(' '); - - /* Use FALSE below if we only want things like <Up> to show up as such on -! * the rhs, and not M-x etc, TRUE gets both -- webb -! */ - if (*mp->m_str == NUL) - msg_puts_attr((char_u *)"<Nop>", hl_attr(HLF_8)); - else ---- 3950,3956 ---- - msg_putchar(' '); - - /* Use FALSE below if we only want things like <Up> to show up as such on -! * the rhs, and not M-x etc, TRUE gets both -- webb */ - if (*mp->m_str == NUL) - msg_puts_attr((char_u *)"<Nop>", hl_attr(HLF_8)); - else -*************** -*** 4995,5013 **** - sourcing_name = save_name; - } - -! #ifdef FEAT_EVAL - /* -! * Check the string "keys" against the lhs of all mappings -! * Return pointer to rhs of mapping (mapblock->m_str) -! * NULL otherwise - */ - char_u * -! check_map(keys, mode, exact, ign_mod, abbr) - char_u *keys; - int mode; - int exact; /* require exact match */ - int ign_mod; /* ignore preceding modifier */ - int abbr; /* do abbreviations */ - { - int hash; - int len, minlen; ---- 5013,5033 ---- - sourcing_name = save_name; - } - -! #if defined(FEAT_EVAL) || defined(PROTO) - /* -! * Check the string "keys" against the lhs of all mappings. -! * Return pointer to rhs of mapping (mapblock->m_str). -! * NULL when no mapping found. - */ - char_u * -! check_map(keys, mode, exact, ign_mod, abbr, mp_ptr, local_ptr) - char_u *keys; - int mode; - int exact; /* require exact match */ - int ign_mod; /* ignore preceding modifier */ - int abbr; /* do abbreviations */ -+ mapblock_T **mp_ptr; /* return: pointer to mapblock or NULL */ -+ int *local_ptr; /* return: buffer-local mapping or NULL */ - { - int hash; - int len, minlen; -*************** -*** 5062,5068 **** ---- 5082,5094 ---- - minlen = mp->m_keylen - 3; - } - if (STRNCMP(s, keys, minlen) == 0) -+ { -+ if (mp_ptr != NULL) -+ *mp_ptr = mp; -+ if (local_ptr != NULL) -+ *local_ptr = local; - return mp->m_str; -+ } - } - } - } -*** ../vim-7.3.031/src/gui_w48.c 2010-08-15 21:57:29.000000000 +0200 ---- src/gui_w48.c 2010-10-20 20:29:20.000000000 +0200 -*************** -*** 1810,1816 **** - * mapped we want to use the mapping instead. */ - if (vk == VK_F10 - && gui.menu_is_active -! && check_map(k10, State, FALSE, TRUE, FALSE) == NULL) - break; - #endif - if (GetKeyState(VK_SHIFT) & 0x8000) ---- 1810,1817 ---- - * mapped we want to use the mapping instead. */ - if (vk == VK_F10 - && gui.menu_is_active -! && check_map(k10, State, FALSE, TRUE, FALSE, -! NULL, NULL) == NULL) - break; - #endif - if (GetKeyState(VK_SHIFT) & 0x8000) -*************** -*** 1924,1930 **** - /* Check for <F10>: Default effect is to select the menu. When <F10> is - * mapped we need to stop it here to avoid strange effects (e.g., for the - * key-up event) */ -! if (vk != VK_F10 || check_map(k10, State, FALSE, TRUE, FALSE) == NULL) - #endif - DispatchMessage(&msg); - } ---- 1925,1932 ---- - /* Check for <F10>: Default effect is to select the menu. When <F10> is - * mapped we need to stop it here to avoid strange effects (e.g., for the - * key-up event) */ -! if (vk != VK_F10 || check_map(k10, State, FALSE, TRUE, FALSE, -! NULL, NULL) == NULL) - #endif - DispatchMessage(&msg); - } -*** ../vim-7.3.031/src/message.c 2010-08-15 21:57:29.000000000 +0200 ---- src/message.c 2010-10-20 20:31:33.000000000 +0200 -*************** -*** 1477,1482 **** ---- 1477,1503 ---- - return retval; - } - -+ #if defined(FEAT_EVAL) || defined(PROTO) -+ /* -+ * Return the lhs or rhs of a mapping, with the key codes turned into printable -+ * strings, in an allocated string. -+ */ -+ char_u * -+ str2special_save(str, is_lhs) -+ char_u *str; -+ int is_lhs; /* TRUE for lhs, FALSE for rhs */ -+ { -+ garray_T ga; -+ char_u *p = str; -+ -+ ga_init2(&ga, 1, 40); -+ while (*p != NUL) -+ ga_concat(&ga, str2special(&p, is_lhs)); -+ ga_append(&ga, NUL); -+ return (char_u *)ga.ga_data; -+ } -+ #endif -+ - /* - * Return the printable string for the key codes at "*sp". - * Used for translating the lhs or rhs of a mapping to printable chars. -*** ../vim-7.3.031/src/proto/getchar.pro 2010-08-15 21:57:28.000000000 +0200 ---- src/proto/getchar.pro 2010-10-20 21:06:01.000000000 +0200 -*************** -*** 51,56 **** ---- 51,57 ---- - int get_map_mode __ARGS((char_u **cmdp, int forceit)); - void map_clear __ARGS((char_u *cmdp, char_u *arg, int forceit, int abbr)); - void map_clear_int __ARGS((buf_T *buf, int mode, int local, int abbr)); -+ char_u *map_mode_to_chars __ARGS((int mode)); - int map_to_exists __ARGS((char_u *str, char_u *modechars, int abbr)); - int map_to_exists_mode __ARGS((char_u *rhs, int mode, int abbr)); - char_u *set_context_in_map_cmd __ARGS((expand_T *xp, char_u *cmd, char_u *arg, int forceit, int isabbrev, int isunmap, cmdidx_T cmdidx)); -*************** -*** 61,67 **** - int makemap __ARGS((FILE *fd, buf_T *buf)); - int put_escstr __ARGS((FILE *fd, char_u *strstart, int what)); - void check_map_keycodes __ARGS((void)); -! char_u *check_map __ARGS((char_u *keys, int mode, int exact, int ign_mod, int abbr)); - void init_mappings __ARGS((void)); - void add_map __ARGS((char_u *map, int mode)); - /* vim: set ft=c : */ ---- 62,68 ---- - int makemap __ARGS((FILE *fd, buf_T *buf)); - int put_escstr __ARGS((FILE *fd, char_u *strstart, int what)); - void check_map_keycodes __ARGS((void)); -! char_u *check_map __ARGS((char_u *keys, int mode, int exact, int ign_mod, int abbr, mapblock_T **mp_ptr, int *local_ptr)); - void init_mappings __ARGS((void)); - void add_map __ARGS((char_u *map, int mode)); - /* vim: set ft=c : */ -*** ../vim-7.3.031/src/proto/message.pro 2010-08-15 21:57:28.000000000 +0200 ---- src/proto/message.pro 2010-10-20 20:31:25.000000000 +0200 -*************** -*** 33,38 **** ---- 33,39 ---- - int msg_outtrans_len_attr __ARGS((char_u *msgstr, int len, int attr)); - void msg_make __ARGS((char_u *arg)); - int msg_outtrans_special __ARGS((char_u *strstart, int from)); -+ char_u *str2special_save __ARGS((char_u *str, int is_lhs)); - char_u *str2special __ARGS((char_u **sp, int from)); - void str2specialbuf __ARGS((char_u *sp, char_u *buf, int len)); - void msg_prt_line __ARGS((char_u *s, int list)); -*** ../vim-7.3.031/src/structs.h 2010-08-15 21:57:28.000000000 +0200 ---- src/structs.h 2010-10-20 20:23:38.000000000 +0200 -*************** -*** 979,987 **** - struct mapblock - { - mapblock_T *m_next; /* next mapblock in list */ -! char_u *m_keys; /* mapped from */ - int m_keylen; /* strlen(m_keys) */ -! char_u *m_str; /* mapped to */ - int m_mode; /* valid mode */ - int m_noremap; /* if non-zero no re-mapping for m_str */ - char m_silent; /* <silent> used, don't echo commands */ ---- 979,988 ---- - struct mapblock - { - mapblock_T *m_next; /* next mapblock in list */ -! char_u *m_keys; /* mapped from, lhs */ - int m_keylen; /* strlen(m_keys) */ -! char_u *m_str; /* mapped to, rhs */ -! char_u *m_orig_str; /* rhs as entered by the user */ - int m_mode; /* valid mode */ - int m_noremap; /* if non-zero no re-mapping for m_str */ - char m_silent; /* <silent> used, don't echo commands */ -*** ../vim-7.3.031/src/testdir/test75.in 2010-10-20 21:13:30.000000000 +0200 ---- src/testdir/test75.in 2010-10-20 20:54:04.000000000 +0200 -*************** -*** 0 **** ---- 1,16 ---- -+ " Tests for functions. -+ -+ STARTTEST -+ :so small.vim -+ :" Test maparg() with a string result -+ :map foo<C-V> is<F4>foo -+ :vnoremap <script> <buffer> <expr> <silent> bar isbar -+ :call append('$', maparg('foo<C-V>')) -+ :call append('$', string(maparg('foo<C-V>', '', 0, 1))) -+ :call append('$', string(maparg('bar', '', 0, 1))) -+ :" -+ :/^eof/+1,$w! test.out -+ :qa! -+ ENDTEST -+ -+ eof -*** ../vim-7.3.031/src/testdir/test75.ok 2010-10-20 21:13:30.000000000 +0200 ---- src/testdir/test75.ok 2010-10-20 20:54:08.000000000 +0200 -*************** -*** 0 **** ---- 1,3 ---- -+ is<F4>foo -+ {'silent': 0, 'noremap': 0, 'lhs': 'foo<C-V>', 'mode': ' ', 'expr': 0, 'sid': 0, 'rhs': 'is<F4>foo', 'buffer': 0} -+ {'silent': 1, 'noremap': 1, 'lhs': 'bar', 'mode': 'v', 'expr': 1, 'sid': 0, 'rhs': 'isbar', 'buffer': 1} -*** ../vim-7.3.031/src/version.c 2010-10-20 19:17:43.000000000 +0200 ---- src/version.c 2010-10-20 21:13:18.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 32, - /**/ - --- -Not too long ago, compress was something you did to garbage... - - /// 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 /// -To: vim-dev@vim.org -Subject: Patch 7.3.033 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.033 (after 7.3.032) -Problem: Can't build without FEAT_LOCALMAP. -Solution: Add an #ifdef. (John Marriott) -Files: src/getchar.c - - -*** ../vim-7.3.032/src/getchar.c 2010-10-20 21:22:17.000000000 +0200 ---- src/getchar.c 2010-10-22 22:09:40.000000000 +0200 -*************** -*** 5086,5092 **** ---- 5086,5096 ---- - if (mp_ptr != NULL) - *mp_ptr = mp; - if (local_ptr != NULL) -+ #ifdef FEAT_LOCALMAP - *local_ptr = local; -+ #else -+ *local_ptr = 0; -+ #endif - return mp->m_str; - } - } -*** ../vim-7.3.032/src/version.c 2010-10-20 21:22:17.000000000 +0200 ---- src/version.c 2010-10-22 21:18:30.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 33, - /**/ - --- -Futility Factor: No experiment is ever a complete failure - it can always -serve as a negative example. - - /// 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 /// -To: vim-dev@vim.org -Subject: Patch 7.3.034 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.034 -Problem: Win32: may be loading .dll from the wrong directory. -Solution: Go to the Vim executable directory when opening a library. -Files: src/gui_w32.c, src/if_lua.c, src/if_mzsch.c, src/if_perl.xs, - src/if_python.c, src/if_python3.c, src/if_ruby.c, src/mbyte.c, - src/os_mswin.c, src/os_win32.c, src/proto/os_win32.pro - - -*** ../vim-7.3.033/src/gui_w32.c 2010-08-15 21:57:25.000000000 +0200 ---- src/gui_w32.c 2010-10-22 21:49:27.000000000 +0200 -*************** -*** 1260,1266 **** - - /* try and load the user32.dll library and get the entry points for - * multi-monitor-support. */ -! if ((user32_lib = LoadLibrary("User32.dll")) != NULL) - { - pMonitorFromWindow = (TMonitorFromWindow)GetProcAddress(user32_lib, - "MonitorFromWindow"); ---- 1260,1266 ---- - - /* try and load the user32.dll library and get the entry points for - * multi-monitor-support. */ -! if ((user32_lib = vimLoadLib("User32.dll")) != NULL) - { - pMonitorFromWindow = (TMonitorFromWindow)GetProcAddress(user32_lib, - "MonitorFromWindow"); -*************** -*** 4188,4194 **** - static void - dyn_imm_load(void) - { -! hLibImm = LoadLibrary("imm32.dll"); - if (hLibImm == NULL) - return; - ---- 4188,4194 ---- - static void - dyn_imm_load(void) - { -! hLibImm = vimLoadLib("imm32.dll"); - if (hLibImm == NULL) - return; - -*** ../vim-7.3.033/src/if_lua.c 2010-08-15 21:57:28.000000000 +0200 ---- src/if_lua.c 2010-10-22 21:49:39.000000000 +0200 -*************** -*** 49,55 **** - # define symbol_from_dll dlsym - # define close_dll dlclose - #else -! # define load_dll LoadLibrary - # define symbol_from_dll GetProcAddress - # define close_dll FreeLibrary - #endif ---- 49,55 ---- - # define symbol_from_dll dlsym - # define close_dll dlclose - #else -! # define load_dll vimLoadLib - # define symbol_from_dll GetProcAddress - # define close_dll FreeLibrary - #endif -*** ../vim-7.3.033/src/if_mzsch.c 2010-08-15 21:57:32.000000000 +0200 ---- src/if_mzsch.c 2010-10-22 21:49:53.000000000 +0200 -*************** -*** 556,563 **** - - if (hMzGC && hMzSch) - return OK; -! hMzSch = LoadLibrary(sch_dll); -! hMzGC = LoadLibrary(gc_dll); - - if (!hMzSch) - { ---- 556,563 ---- - - if (hMzGC && hMzSch) - return OK; -! hMzSch = vimLoadLib(sch_dll); -! hMzGC = vimLoadLib(gc_dll); - - if (!hMzSch) - { -*** ../vim-7.3.033/src/if_perl.xs 2010-08-15 21:57:30.000000000 +0200 ---- src/if_perl.xs 2010-10-22 21:53:06.000000000 +0200 -*************** -*** 106,112 **** - #define close_dll dlclose - #else - #define PERL_PROC FARPROC -! #define load_dll LoadLibrary - #define symbol_from_dll GetProcAddress - #define close_dll FreeLibrary - #endif ---- 106,112 ---- - #define close_dll dlclose - #else - #define PERL_PROC FARPROC -! #define load_dll vimLoadLib - #define symbol_from_dll GetProcAddress - #define close_dll FreeLibrary - #endif -*** ../vim-7.3.033/src/if_python.c 2010-08-15 21:57:28.000000000 +0200 ---- src/if_python.c 2010-10-22 21:49:57.000000000 +0200 -*************** -*** 110,116 **** - # define close_dll dlclose - # define symbol_from_dll dlsym - # else -! # define load_dll LoadLibrary - # define close_dll FreeLibrary - # define symbol_from_dll GetProcAddress - # endif ---- 110,116 ---- - # define close_dll dlclose - # define symbol_from_dll dlsym - # else -! # define load_dll vimLoadLib - # define close_dll FreeLibrary - # define symbol_from_dll GetProcAddress - # endif -*** ../vim-7.3.033/src/if_python3.c 2010-08-15 21:57:28.000000000 +0200 ---- src/if_python3.c 2010-10-22 21:50:01.000000000 +0200 -*************** -*** 88,94 **** - # define close_dll dlclose - # define symbol_from_dll dlsym - # else -! # define load_dll LoadLibrary - # define close_dll FreeLibrary - # define symbol_from_dll GetProcAddress - # endif ---- 88,94 ---- - # define close_dll dlclose - # define symbol_from_dll dlsym - # else -! # define load_dll vimLoadLib - # define close_dll FreeLibrary - # define symbol_from_dll GetProcAddress - # endif -*** ../vim-7.3.033/src/if_ruby.c 2010-09-29 13:02:48.000000000 +0200 ---- src/if_ruby.c 2010-10-22 21:50:04.000000000 +0200 -*************** -*** 55,61 **** - # define symbol_from_dll dlsym - # define close_dll dlclose - #else -! # define load_dll LoadLibrary - # define symbol_from_dll GetProcAddress - # define close_dll FreeLibrary - #endif ---- 55,61 ---- - # define symbol_from_dll dlsym - # define close_dll dlclose - #else -! # define load_dll vimLoadLib - # define symbol_from_dll GetProcAddress - # define close_dll FreeLibrary - #endif -*** ../vim-7.3.033/src/mbyte.c 2010-09-18 13:36:41.000000000 +0200 ---- src/mbyte.c 2010-10-22 21:50:09.000000000 +0200 -*************** -*** 4159,4169 **** - { - if (hIconvDLL != 0 && hMsvcrtDLL != 0) - return TRUE; -! hIconvDLL = LoadLibrary(DYNAMIC_ICONV_DLL); - if (hIconvDLL == 0) /* sometimes it's called libiconv.dll */ -! hIconvDLL = LoadLibrary(DYNAMIC_ICONV_DLL_ALT); - if (hIconvDLL != 0) -! hMsvcrtDLL = LoadLibrary(DYNAMIC_MSVCRT_DLL); - if (hIconvDLL == 0 || hMsvcrtDLL == 0) - { - /* Only give the message when 'verbose' is set, otherwise it might be ---- 4159,4169 ---- - { - if (hIconvDLL != 0 && hMsvcrtDLL != 0) - return TRUE; -! hIconvDLL = vimLoadLib(DYNAMIC_ICONV_DLL); - if (hIconvDLL == 0) /* sometimes it's called libiconv.dll */ -! hIconvDLL = vimLoadLib(DYNAMIC_ICONV_DLL_ALT); - if (hIconvDLL != 0) -! hMsvcrtDLL = vimLoadLib(DYNAMIC_MSVCRT_DLL); - if (hIconvDLL == 0 || hMsvcrtDLL == 0) - { - /* Only give the message when 'verbose' is set, otherwise it might be -*** ../vim-7.3.033/src/os_mswin.c 2010-08-15 21:57:29.000000000 +0200 ---- src/os_mswin.c 2010-10-22 22:03:26.000000000 +0200 -*************** -*** 817,823 **** ---- 817,827 ---- - BOOL fRunTimeLinkSuccess = FALSE; - - // Get a handle to the DLL module. -+ # ifdef WIN16 - hinstLib = LoadLibrary(libname); -+ # else -+ hinstLib = vimLoadLib(libname); -+ # endif - - // If the handle is valid, try to get the function address. - if (hinstLib != NULL) -*** ../vim-7.3.033/src/os_win32.c 2010-10-13 20:37:37.000000000 +0200 ---- src/os_win32.c 2010-10-23 13:16:55.000000000 +0200 -*************** -*** 206,247 **** - static int suppress_winsize = 1; /* don't fiddle with console */ - #endif - - static void - get_exe_name(void) - { -! char temp[256]; -! static int did_set_PATH = FALSE; - - if (exe_name == NULL) - { - /* store the name of the executable, may be used for $VIM */ -! GetModuleFileName(NULL, temp, 255); - if (*temp != NUL) - exe_name = FullName_save((char_u *)temp, FALSE); - } - -! if (!did_set_PATH && exe_name != NULL) - { -! char_u *p; -! char_u *newpath; -! -! /* Append our starting directory to $PATH, so that when doing "!xxd" -! * it's found in our starting directory. Needed because SearchPath() -! * also looks there. */ -! p = mch_getenv("PATH"); -! newpath = alloc((unsigned)(STRLEN(p) + STRLEN(exe_name) + 2)); -! if (newpath != NULL) -! { -! STRCPY(newpath, p); -! STRCAT(newpath, ";"); -! vim_strncpy(newpath + STRLEN(newpath), exe_name, -! gettail_sep(exe_name) - exe_name); -! vim_setenv((char_u *)"PATH", newpath); -! vim_free(newpath); - } - -! did_set_PATH = TRUE; - } - } - - #if defined(DYNAMIC_GETTEXT) || defined(PROTO) ---- 206,268 ---- - static int suppress_winsize = 1; /* don't fiddle with console */ - #endif - -+ static char_u *exe_path = NULL; -+ - static void - get_exe_name(void) - { -! char temp[MAXPATHL]; -! char_u *p; - - if (exe_name == NULL) - { - /* store the name of the executable, may be used for $VIM */ -! GetModuleFileName(NULL, temp, MAXPATHL - 1); - if (*temp != NUL) - exe_name = FullName_save((char_u *)temp, FALSE); - } - -! if (exe_path == NULL && exe_name != NULL) - { -! exe_path = vim_strnsave(exe_name, gettail_sep(exe_name) - exe_name); -! if (exe_path != NULL) -! { -! /* Append our starting directory to $PATH, so that when doing -! * "!xxd" it's found in our starting directory. Needed because -! * SearchPath() also looks there. */ -! p = mch_getenv("PATH"); -! if (STRLEN(p) + STRLEN(exe_path) + 2 < MAXPATHL); -! { -! STRCPY(temp, p); -! STRCAT(temp, ";"); -! STRCAT(temp, exe_path); -! vim_setenv((char_u *)"PATH", temp); -! } - } -+ } -+ } -+ -+ /* -+ * Load library "name". -+ */ -+ HINSTANCE -+ vimLoadLib(char *name) -+ { -+ HINSTANCE dll = NULL; -+ char old_dir[MAXPATHL]; - -! if (exe_path == NULL) -! get_exe_name(); -! if (exe_path != NULL && mch_dirname(old_dir, MAXPATHL) == OK) -! { -! /* Change directory to where the executable is, both to make sure we -! * find a .dll there and to avoid looking for a .dll in the current -! * directory. */ -! mch_chdir(exe_path); -! dll = LoadLibrary(name); -! mch_chdir(old_dir); - } -+ return dll; - } - - #if defined(DYNAMIC_GETTEXT) || defined(PROTO) -*************** -*** 254,260 **** - static char *null_libintl_bindtextdomain(const char *, const char *); - static char *null_libintl_bind_textdomain_codeset(const char *, const char *); - -! static HINSTANCE hLibintlDLL = 0; - char *(*dyn_libintl_gettext)(const char *) = null_libintl_gettext; - char *(*dyn_libintl_textdomain)(const char *) = null_libintl_textdomain; - char *(*dyn_libintl_bindtextdomain)(const char *, const char *) ---- 275,281 ---- - static char *null_libintl_bindtextdomain(const char *, const char *); - static char *null_libintl_bind_textdomain_codeset(const char *, const char *); - -! static HINSTANCE hLibintlDLL = NULL; - char *(*dyn_libintl_gettext)(const char *) = null_libintl_gettext; - char *(*dyn_libintl_textdomain)(const char *) = null_libintl_textdomain; - char *(*dyn_libintl_bindtextdomain)(const char *, const char *) -*************** -*** 282,307 **** - if (hLibintlDLL) - return 1; - /* Load gettext library (libintl.dll) */ -! hLibintlDLL = LoadLibrary(libname != NULL ? libname : GETTEXT_DLL); - if (!hLibintlDLL) - { -! char_u dirname[_MAX_PATH]; -! -! /* Try using the path from gvim.exe to find the .dll there. */ -! get_exe_name(); -! STRCPY(dirname, exe_name); -! STRCPY(gettail(dirname), GETTEXT_DLL); -! hLibintlDLL = LoadLibrary((char *)dirname); -! if (!hLibintlDLL) - { -! if (p_verbose > 0) -! { -! verbose_enter(); -! EMSG2(_(e_loadlib), GETTEXT_DLL); -! verbose_leave(); -! } -! return 0; - } - } - for (i = 0; libintl_entry[i].name != NULL - && libintl_entry[i].ptr != NULL; ++i) ---- 303,318 ---- - if (hLibintlDLL) - return 1; - /* Load gettext library (libintl.dll) */ -! hLibintlDLL = vimLoadLib(libname != NULL ? libname : GETTEXT_DLL); - if (!hLibintlDLL) - { -! if (p_verbose > 0) - { -! verbose_enter(); -! EMSG2(_(e_loadlib), GETTEXT_DLL); -! verbose_leave(); - } -+ return 0; - } - for (i = 0; libintl_entry[i].name != NULL - && libintl_entry[i].ptr != NULL; ++i) -*************** -*** 430,436 **** - * Seems like a lot of overhead to load/unload ADVAPI32.DLL each - * time we verify security... - */ -! advapi_lib = LoadLibrary("ADVAPI32.DLL"); - if (advapi_lib != NULL) - { - pSetNamedSecurityInfo = (PSNSECINFO)GetProcAddress(advapi_lib, ---- 441,447 ---- - * Seems like a lot of overhead to load/unload ADVAPI32.DLL each - * time we verify security... - */ -! advapi_lib = vimLoadLib("ADVAPI32.DLL"); - if (advapi_lib != NULL) - { - pSetNamedSecurityInfo = (PSNSECINFO)GetProcAddress(advapi_lib, -*** ../vim-7.3.033/src/proto/os_win32.pro 2010-08-15 21:57:28.000000000 +0200 ---- src/proto/os_win32.pro 2010-10-22 22:05:35.000000000 +0200 -*************** -*** 1,4 **** ---- 1,5 ---- - /* os_win32.c */ -+ HINSTANCE vimLoadLib __ARGS((char *name)); - int dyn_libintl_init __ARGS((char *libname)); - void dyn_libintl_end __ARGS((void)); - void PlatformId __ARGS((void)); -*** ../vim-7.3.033/src/version.c 2010-10-22 22:13:47.000000000 +0200 ---- src/version.c 2010-10-23 13:55:21.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 34, - /**/ - --- -This is the polymorph virus! Follow these instructions carefully: -1. Send this message to everybody you know. -2. Format your harddisk. -Thank you for your cooperation in spreading the most powerful virus ever! - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.035 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.035 (after 7.3.034) -Problem: Stray semicolon after if statement. (Hari G) -Solution: Remove the semicolon. -Files: src/os_win32.c - - -*** ../vim-7.3.034/src/os_win32.c 2010-10-23 14:02:48.000000000 +0200 ---- src/os_win32.c 2010-10-24 14:31:04.000000000 +0200 -*************** -*** 231,237 **** - * "!xxd" it's found in our starting directory. Needed because - * SearchPath() also looks there. */ - p = mch_getenv("PATH"); -! if (STRLEN(p) + STRLEN(exe_path) + 2 < MAXPATHL); - { - STRCPY(temp, p); - STRCAT(temp, ";"); ---- 231,237 ---- - * "!xxd" it's found in our starting directory. Needed because - * SearchPath() also looks there. */ - p = mch_getenv("PATH"); -! if (STRLEN(p) + STRLEN(exe_path) + 2 < MAXPATHL) - { - STRCPY(temp, p); - STRCAT(temp, ";"); -*** ../vim-7.3.034/src/version.c 2010-10-23 14:02:48.000000000 +0200 ---- src/version.c 2010-10-24 14:32:04.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 35, - /**/ - --- - [clop clop] -ARTHUR: Old woman! -DENNIS: Man! -ARTHUR: Man, sorry. What knight lives in that castle over there? -DENNIS: I'm thirty seven. -ARTHUR: What? -DENNIS: I'm thirty seven -- I'm not old! - The Quest for the Holy Grail (Monty Python) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.036 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.036 -Problem: Win32 GUI: When building without menus, the font for dialogs and - tab page headers also changes. -Solution: Define USE_SYSMENU_FONT always. (Harig G.) -Files: src/gui_w32.c - - -*** ../vim-7.3.035/src/gui_w32.c 2010-10-23 14:02:48.000000000 +0200 ---- src/gui_w32.c 2010-10-25 20:29:15.000000000 +0200 -*************** -*** 289,301 **** - - #ifdef FEAT_MENU - static UINT s_menu_id = 100; - - /* - * Use the system font for dialogs and tear-off menus. Remove this line to - * use DLG_FONT_NAME. - */ -! # define USE_SYSMENU_FONT -! #endif - - #define VIM_NAME "vim" - #define VIM_CLASS "Vim" ---- 289,301 ---- - - #ifdef FEAT_MENU - static UINT s_menu_id = 100; -+ #endif - - /* - * Use the system font for dialogs and tear-off menus. Remove this line to - * use DLG_FONT_NAME. - */ -! #define USE_SYSMENU_FONT - - #define VIM_NAME "vim" - #define VIM_CLASS "Vim" -*** ../vim-7.3.035/src/version.c 2010-10-24 14:33:38.000000000 +0200 ---- src/version.c 2010-10-27 12:14:39.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 36, - /**/ - --- -ARTHUR: Bloody peasant! -DENNIS: Oh, what a give away. Did you hear that, did you hear that, eh? - That's what I'm on about -- did you see him repressing me, you saw it - didn't you? - The Quest for the Holy Grail (Monty Python) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.037 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.037 -Problem: Compiler warnings for loss of data. (Mike Williams) -Solution: Add type casts. -Files: src/if_py_both.h, src/getchar.c, src/os_win32.c - - -*** ../vim-7.3.036/src/if_py_both.h 2010-09-21 16:49:29.000000000 +0200 ---- src/if_py_both.h 2010-10-25 20:37:07.000000000 +0200 -*************** -*** 154,160 **** - { - PyInt len = ptr - str; - -! if (ga_grow(&io_ga, len + 1) == FAIL) - break; - - mch_memmove(((char *)io_ga.ga_data) + io_ga.ga_len, str, (size_t)len); ---- 154,160 ---- - { - PyInt len = ptr - str; - -! if (ga_grow(&io_ga, (int)(len + 1)) == FAIL) - break; - - mch_memmove(((char *)io_ga.ga_data) + io_ga.ga_len, str, (size_t)len); -*************** -*** 166,175 **** - } - - /* Put the remaining text into io_ga for later printing. */ -! if (n > 0 && ga_grow(&io_ga, n + 1) == OK) - { - mch_memmove(((char *)io_ga.ga_data) + io_ga.ga_len, str, (size_t)n); -! io_ga.ga_len += n; - } - } - ---- 166,175 ---- - } - - /* Put the remaining text into io_ga for later printing. */ -! if (n > 0 && ga_grow(&io_ga, (int)(n + 1)) == OK) - { - mch_memmove(((char *)io_ga.ga_data) + io_ga.ga_len, str, (size_t)n); -! io_ga.ga_len += (int)n; - } - } - -*** ../vim-7.3.036/src/getchar.c 2010-10-22 22:13:47.000000000 +0200 ---- src/getchar.c 2010-10-25 20:39:31.000000000 +0200 -*************** -*** 3922,3928 **** - if (mapchars != NULL) - { - msg_puts(mapchars); -! len = STRLEN(mapchars); - vim_free(mapchars); - } - ---- 3922,3928 ---- - if (mapchars != NULL) - { - msg_puts(mapchars); -! len = (int)STRLEN(mapchars); - vim_free(mapchars); - } - -*** ../vim-7.3.036/src/os_win32.c 2010-10-24 14:33:38.000000000 +0200 ---- src/os_win32.c 2010-10-25 20:38:49.000000000 +0200 -*************** -*** 224,230 **** - - if (exe_path == NULL && exe_name != NULL) - { -! exe_path = vim_strnsave(exe_name, gettail_sep(exe_name) - exe_name); - if (exe_path != NULL) - { - /* Append our starting directory to $PATH, so that when doing ---- 224,231 ---- - - if (exe_path == NULL && exe_name != NULL) - { -! exe_path = vim_strnsave(exe_name, -! (int)(gettail_sep(exe_name) - exe_name)); - if (exe_path != NULL) - { - /* Append our starting directory to $PATH, so that when doing -*************** -*** 2374,2380 **** - /* To avoid a slow failure append "\*" when searching a directory, - * server or network share. */ - STRCPY(szTrueNameTemp, szTrueName); -! slen = strlen(szTrueNameTemp); - if (*porig == psepc && slen + 2 < _MAX_PATH) - STRCPY(szTrueNameTemp + slen, "\\*"); - ---- 2375,2381 ---- - /* To avoid a slow failure append "\*" when searching a directory, - * server or network share. */ - STRCPY(szTrueNameTemp, szTrueName); -! slen = (int)strlen(szTrueNameTemp); - if (*porig == psepc && slen + 2 < _MAX_PATH) - STRCPY(szTrueNameTemp + slen, "\\*"); - -*** ../vim-7.3.036/src/version.c 2010-10-27 12:15:28.000000000 +0200 ---- src/version.c 2010-10-27 12:16:53.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 37, - /**/ - --- -ARTHUR: You fight with the strength of many men, Sir knight. - I am Arthur, King of the Britons. [pause] - I seek the finest and the bravest knights in the land to join me - in my Court of Camelot. [pause] - You have proved yourself worthy; will you join me? [pause] - You make me sad. So be it. Come, Patsy. -BLACK KNIGHT: None shall pass. - The Quest for the Holy Grail (Monty Python) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.038 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.038 -Problem: v:windowid isn't set on MS-Windows. -Solution: Set it to the window handle. (Chris Sutcliffe) -Files: runtime/doc/eval.txt, src/gui_w32.c - - -*** ../vim-7.3.037/runtime/doc/eval.txt 2010-10-20 21:22:17.000000000 +0200 ---- runtime/doc/eval.txt 2010-10-27 12:23:37.000000000 +0200 -*************** -*** 1660,1666 **** - *v:windowid* *windowid-variable* - v:windowid When any X11 based GUI is running or when running in a - terminal and Vim connects to the X server (|-X|) this will be -! set to the window ID. Otherwise the value is zero. - - ============================================================================== - 4. Builtin Functions *functions* ---- 1660,1670 ---- - *v:windowid* *windowid-variable* - v:windowid When any X11 based GUI is running or when running in a - terminal and Vim connects to the X server (|-X|) this will be -! set to the window ID. -! When an MS-Windows GUI is running this will be set to the -! window handle. -! Otherwise the value is zero. -! Note: for windows inside Vim use |winnr()|. - - ============================================================================== - 4. Builtin Functions *functions* -*** ../vim-7.3.037/src/gui_w32.c 2010-10-27 12:15:28.000000000 +0200 ---- src/gui_w32.c 2010-10-27 12:21:22.000000000 +0200 -*************** -*** 1573,1578 **** ---- 1573,1583 ---- - # endif - #endif - -+ #ifdef FEAT_EVAL -+ /* set the v:windowid variable */ -+ set_vim_var_nr(VV_WINDOWID, (long)s_hwnd); -+ #endif -+ - theend: - /* Display any pending error messages */ - display_errors(); -*** ../vim-7.3.037/src/version.c 2010-10-27 12:17:54.000000000 +0200 ---- src/version.c 2010-10-27 12:24:38.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 38, - /**/ - --- -ARTHUR: What? -BLACK KNIGHT: None shall pass. -ARTHUR: I have no quarrel with you, good Sir knight, but I must cross - this bridge. -BLACK KNIGHT: Then you shall die. - The Quest for the Holy Grail (Monty Python) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.039 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.039 -Problem: Crash when using skk.vim plugin. -Solution: Get length of expression evaluation result only after checking for - NULL. (Noriaki Yagi, Dominique Pelle) -Files: src/ex_getln.c - - -*** ../vim-7.3.038/src/ex_getln.c 2010-09-29 15:50:14.000000000 +0200 ---- src/ex_getln.c 2010-10-27 12:42:00.000000000 +0200 -*************** -*** 688,711 **** - p = get_expr_line(); - --textlock; - restore_cmdline(&save_ccline); -- len = (int)STRLEN(p); - -! if (p != NULL && realloc_cmdbuff(len + 1) == OK) - { -! ccline.cmdlen = len; -! STRCPY(ccline.cmdbuff, p); -! vim_free(p); -! -! /* Restore the cursor or use the position set with -! * set_cmdline_pos(). */ -! if (new_cmdpos > ccline.cmdlen) -! ccline.cmdpos = ccline.cmdlen; -! else -! ccline.cmdpos = new_cmdpos; -! -! KeyTyped = FALSE; /* Don't do p_wc completion. */ -! redrawcmd(); -! goto cmdline_changed; - } - } - beep_flush(); ---- 688,714 ---- - p = get_expr_line(); - --textlock; - restore_cmdline(&save_ccline); - -! if (p != NULL) - { -! len = (int)STRLEN(p); -! if (realloc_cmdbuff(len + 1) == OK) -! { -! ccline.cmdlen = len; -! STRCPY(ccline.cmdbuff, p); -! vim_free(p); -! -! /* Restore the cursor or use the position set with -! * set_cmdline_pos(). */ -! if (new_cmdpos > ccline.cmdlen) -! ccline.cmdpos = ccline.cmdlen; -! else -! ccline.cmdpos = new_cmdpos; -! -! KeyTyped = FALSE; /* Don't do p_wc completion. */ -! redrawcmd(); -! goto cmdline_changed; -! } - } - } - beep_flush(); -*** ../vim-7.3.038/src/version.c 2010-10-27 12:33:12.000000000 +0200 ---- src/version.c 2010-10-27 12:43:40.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 39, - /**/ - --- -"Hegel was right when he said that we learn from history that man can -never learn anything from history." (George Bernard Shaw) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.040 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.040 -Problem: Comparing strings while ignoring case goes beyond end of the - string when there are illegal bytes. (Dominique Pelle) -Solution: Explicitly check for illegal bytes. -Files: src/mbyte.c - - -*** ../vim-7.3.039/src/mbyte.c 2010-10-23 14:02:48.000000000 +0200 ---- src/mbyte.c 2010-10-27 13:34:16.000000000 +0200 -*************** -*** 3124,3129 **** ---- 3124,3132 ---- - /* If one of the two characters is incomplete return -1. */ - if (incomplete || i + utf_byte2len(s2[i]) > n) - return -1; -+ /* Don't case-fold illegal bytes or truncated characters. */ -+ if (utf_ptr2len(s1 + i) < l || utf_ptr2len(s2 + i) < l) -+ return -1; - cdiff = utf_fold(utf_ptr2char(s1 + i)) - - utf_fold(utf_ptr2char(s2 + i)); - if (cdiff != 0) -*** ../vim-7.3.039/src/version.c 2010-10-27 12:58:19.000000000 +0200 ---- src/version.c 2010-10-27 13:25:16.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 40, - /**/ - --- - With sufficient thrust, pigs fly just fine. - -- RFC 1925 - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.041 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.041 -Problem: Compiler warning for accessing mediumVersion. (Tony Mechelynck) -Solution: Use the pointer instead of the array itself. (Dominique Pelle) -Files: src/version.c - - -*** ../vim-7.3.040/src/version.c 2010-10-27 13:37:39.000000000 +0200 ---- src/version.c 2010-10-27 15:58:26.000000000 +0200 -*************** -*** 1342,1350 **** - if (highest_patch()) - { - /* Check for 9.9x or 9.9xx, alpha/beta version */ -! if (isalpha((int)mediumVersion[3])) - { -! if (isalpha((int)mediumVersion[4])) - sprintf((char *)vers + 5, ".%d%s", highest_patch(), - mediumVersion + 5); - else ---- 1344,1352 ---- - if (highest_patch()) - { - /* Check for 9.9x or 9.9xx, alpha/beta version */ -! if (isalpha((int)vers[3])) - { -! if (isalpha((int)vers[4])) - sprintf((char *)vers + 5, ".%d%s", highest_patch(), - mediumVersion + 5); - else -*** ../vim-7.3.040/src/version.c 2010-10-27 13:37:39.000000000 +0200 ---- src/version.c 2010-10-27 15:58:26.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 41, - /**/ - --- -ARTHUR: I command you as King of the Britons to stand aside! -BLACK KNIGHT: I move for no man. - The Quest for the Holy Grail (Monty Python) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.042 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.042 -Problem: No spell highlighting when re-using an empty buffer. -Solution: Clear the spell checking info only when clearing the options for a - buffer. (James Vega) -Files: src/buffer.c - - -*** ../vim-7.3.041/src/buffer.c 2010-09-21 16:56:29.000000000 +0200 ---- src/buffer.c 2010-10-27 16:09:26.000000000 +0200 -*************** -*** 639,644 **** ---- 639,647 ---- - { - clear_wininfo(buf); /* including window-local options */ - free_buf_options(buf, TRUE); -+ #ifdef FEAT_SPELL -+ ga_clear(&buf->b_s.b_langp); -+ #endif - } - #ifdef FEAT_EVAL - vars_clear(&buf->b_vars.dv_hashtab); /* free all internal variables */ -*************** -*** 661,669 **** - vim_free(buf->b_start_fenc); - buf->b_start_fenc = NULL; - #endif -- #ifdef FEAT_SPELL -- ga_clear(&buf->b_s.b_langp); -- #endif - } - - /* ---- 664,669 ---- -*** ../vim-7.3.041/src/version.c 2010-10-27 16:01:17.000000000 +0200 ---- src/version.c 2010-10-27 16:10:33.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 42, - /**/ - --- -BLACK KNIGHT: I move for no man. -ARTHUR: So be it! - [hah] [parry thrust] - [ARTHUR chops the BLACK KNIGHT's left arm off] -ARTHUR: Now stand aside, worthy adversary. -BLACK KNIGHT: 'Tis but a scratch. - The Quest for the Holy Grail (Monty Python) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.043 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.043 -Problem: Can't load Ruby dynamically on Unix. -Solution: Adjust the configure script. (James Vega) -Files: src/Makefile, src/config.h.in, src/configure.in, - src/auto/configure, src/if_ruby.c - - -*** ../vim-7.3.042/src/Makefile 2010-08-16 21:59:00.000000000 +0200 ---- src/Makefile 2010-10-27 16:46:41.000000000 +0200 -*************** -*** 414,425 **** ---- 414,429 ---- - # However, this may still cause problems, such as "import termios" failing. - # Build two separate versions of Vim in that case. - #CONF_OPT_PYTHON = --enable-pythoninterp -+ #CONF_OPT_PYTHON = --enable-pythoninterp=dynamic - #CONF_OPT_PYTHON3 = --enable-python3interp -+ #CONF_OPT_PYTHON3 = --enable-python3interp=dynamic - - # RUBY - # Uncomment this when you want to include the Ruby interface. -+ # First one for static linking, second one for loading when used. - # Note: you need the development package (e.g., ruby1.9.1-dev on Ubuntu). - #CONF_OPT_RUBY = --enable-rubyinterp -+ #CONF_OPT_RUBY = --enable-rubyinterp=dynamic - #CONF_OPT_RUBY = --enable-rubyinterp --with-ruby-command=ruby1.9.1 - - # TCL -*************** -*** 1047,1054 **** - INSTALL_DATA = cp - INSTALL_DATA_R = cp -r - -! ### Program to run on installed binary - #STRIP = strip - - ### Permissions for binaries {{{1 - BINMOD = 755 ---- 1051,1059 ---- - INSTALL_DATA = cp - INSTALL_DATA_R = cp -r - -! ### Program to run on installed binary. Use the second one to disable strip. - #STRIP = strip -+ #STRIP = /bin/true - - ### Permissions for binaries {{{1 - BINMOD = 755 -*************** -*** 1321,1327 **** - .SUFFIXES: .c .o .pro - - PRE_DEFS = -Iproto $(DEFS) $(GUI_DEFS) $(GUI_IPATH) $(CPPFLAGS) $(EXTRA_IPATHS) -! POST_DEFS = $(X_CFLAGS) $(MZSCHEME_CFLAGS) $(TCL_CFLAGS) $(RUBY_CFLAGS) $(EXTRA_DEFS) - - ALL_CFLAGS = $(PRE_DEFS) $(CFLAGS) $(PROFILE_CFLAGS) $(POST_DEFS) - ---- 1326,1332 ---- - .SUFFIXES: .c .o .pro - - PRE_DEFS = -Iproto $(DEFS) $(GUI_DEFS) $(GUI_IPATH) $(CPPFLAGS) $(EXTRA_IPATHS) -! POST_DEFS = $(X_CFLAGS) $(MZSCHEME_CFLAGS) $(TCL_CFLAGS) $(EXTRA_DEFS) - - ALL_CFLAGS = $(PRE_DEFS) $(CFLAGS) $(PROFILE_CFLAGS) $(POST_DEFS) - -*************** -*** 1329,1335 **** - # with "-E". - OSDEF_CFLAGS = $(PRE_DEFS) $(POST_DEFS) - -! LINT_CFLAGS = -DLINT -I. $(PRE_DEFS) $(POST_DEFS) $(LUA_CFLAGS) $(PERL_CFLAGS) $(PYTHON_CFLAGS) -Dinline= -D__extension__= -Dalloca=alloca - - LINT_EXTRA = -DUSE_SNIFF -DHANGUL_INPUT -D"__attribute__(x)=" - ---- 1334,1340 ---- - # with "-E". - OSDEF_CFLAGS = $(PRE_DEFS) $(POST_DEFS) - -! LINT_CFLAGS = -DLINT -I. $(PRE_DEFS) $(POST_DEFS) $(RUBY_CFLAGS) $(LUA_CFLAGS) $(PERL_CFLAGS) $(PYTHON_CFLAGS) -Dinline= -D__extension__= -Dalloca=alloca - - LINT_EXTRA = -DUSE_SNIFF -DHANGUL_INPUT -D"__attribute__(x)=" - -*************** -*** 2532,2538 **** - $(CCC) $(PYTHON3_CFLAGS) $(PYTHON3_CFLAGS_EXTRA) -o $@ if_python3.c - - objects/if_ruby.o: if_ruby.c -! $(CCC) -o $@ if_ruby.c - - objects/if_sniff.o: if_sniff.c - $(CCC) -o $@ if_sniff.c ---- 2537,2543 ---- - $(CCC) $(PYTHON3_CFLAGS) $(PYTHON3_CFLAGS_EXTRA) -o $@ if_python3.c - - objects/if_ruby.o: if_ruby.c -! $(CCC) $(RUBY_CFLAGS) -o $@ if_ruby.c - - objects/if_sniff.o: if_sniff.c - $(CCC) -o $@ if_sniff.c -*** ../vim-7.3.042/src/config.h.in 2010-08-15 21:57:32.000000000 +0200 ---- src/config.h.in 2010-10-27 16:21:24.000000000 +0200 -*************** -*** 349,354 **** ---- 349,357 ---- - /* Define if you want to include the Ruby interpreter. */ - #undef FEAT_RUBY - -+ /* Define for linking via dlopen() or LoadLibrary() */ -+ #undef DYNAMIC_RUBY -+ - /* Define if you want to include the Tcl interpreter. */ - #undef FEAT_TCL - -*** ../vim-7.3.042/src/configure.in 2010-08-15 21:57:28.000000000 +0200 ---- src/configure.in 2010-10-27 16:20:53.000000000 +0200 -*************** -*** 1299,1308 **** - - AC_MSG_CHECKING(--enable-rubyinterp argument) - AC_ARG_ENABLE(rubyinterp, -! [ --enable-rubyinterp Include Ruby interpreter.], , - [enable_rubyinterp="no"]) - AC_MSG_RESULT($enable_rubyinterp) -! if test "$enable_rubyinterp" = "yes"; then - AC_MSG_CHECKING(--with-ruby-command argument) - AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)], - RUBY_CMD="$withval"; AC_MSG_RESULT($RUBY_CMD), ---- 1299,1308 ---- - - AC_MSG_CHECKING(--enable-rubyinterp argument) - AC_ARG_ENABLE(rubyinterp, -! [ --enable-rubyinterp[=OPTS] Include Ruby interpreter. [default=no] [OPTS=no/yes/dynamic]], , - [enable_rubyinterp="no"]) - AC_MSG_RESULT($enable_rubyinterp) -! if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then - AC_MSG_CHECKING(--with-ruby-command argument) - AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)], - RUBY_CMD="$withval"; AC_MSG_RESULT($RUBY_CMD), -*************** -*** 1360,1365 **** ---- 1360,1371 ---- - RUBY_OBJ="objects/if_ruby.o" - RUBY_PRO="if_ruby.pro" - AC_DEFINE(FEAT_RUBY) -+ if test "$enable_rubyinterp" = "dynamic"; then -+ libruby=`$vi_cv_path_ruby -r rbconfig -e 'printf "lib%s.%s\n", Config::CONFIG[["RUBY_SO_NAME"]], Config::CONFIG[["DLEXT"]]'` -+ AC_DEFINE(DYNAMIC_RUBY) -+ RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS" -+ RUBY_LIBS= -+ fi - else - AC_MSG_RESULT(not found; disabling Ruby) - fi -*** ../vim-7.3.042/src/auto/configure 2010-08-15 21:57:27.000000000 +0200 ---- src/auto/configure 2010-10-27 16:28:10.000000000 +0200 -*************** -*** 1427,1433 **** - --enable-pythoninterp=OPTS Include Python interpreter. default=no OPTS=no/yes/dynamic - --enable-python3interp=OPTS Include Python3 interpreter. default=no OPTS=no/yes/dynamic - --enable-tclinterp Include Tcl interpreter. -! --enable-rubyinterp Include Ruby interpreter. - --enable-cscope Include cscope interface. - --enable-workshop Include Sun Visual Workshop support. - --disable-netbeans Disable NetBeans integration support. ---- 1427,1433 ---- - --enable-pythoninterp=OPTS Include Python interpreter. default=no OPTS=no/yes/dynamic - --enable-python3interp=OPTS Include Python3 interpreter. default=no OPTS=no/yes/dynamic - --enable-tclinterp Include Tcl interpreter. -! --enable-rubyinterp=OPTS Include Ruby interpreter. default=no OPTS=no/yes/dynamic - --enable-cscope Include cscope interface. - --enable-workshop Include Sun Visual Workshop support. - --disable-netbeans Disable NetBeans integration support. -*************** -*** 6103,6109 **** - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_rubyinterp" >&5 - $as_echo "$enable_rubyinterp" >&6; } -! if test "$enable_rubyinterp" = "yes"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking --with-ruby-command argument" >&5 - $as_echo_n "checking --with-ruby-command argument... " >&6; } - ---- 6103,6109 ---- - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_rubyinterp" >&5 - $as_echo "$enable_rubyinterp" >&6; } -! if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking --with-ruby-command argument" >&5 - $as_echo_n "checking --with-ruby-command argument... " >&6; } - -*************** -*** 6209,6214 **** ---- 6209,6221 ---- - RUBY_PRO="if_ruby.pro" - $as_echo "#define FEAT_RUBY 1" >>confdefs.h - -+ if test "$enable_rubyinterp" = "dynamic"; then -+ libruby=`$vi_cv_path_ruby -r rbconfig -e 'printf "lib%s.%s\n", Config::CONFIG["RUBY_SO_NAME"], Config::CONFIG["DLEXT"]'` -+ $as_echo "#define DYNAMIC_RUBY 1" >>confdefs.h -+ -+ RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS" -+ RUBY_LIBS= -+ fi - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found; disabling Ruby" >&5 - $as_echo "not found; disabling Ruby" >&6; } -*** ../vim-7.3.042/src/if_ruby.c 2010-10-23 14:02:48.000000000 +0200 ---- src/if_ruby.c 2010-10-27 16:40:27.000000000 +0200 -*************** -*** 14,19 **** ---- 14,21 ---- - #include <stdio.h> - #include <string.h> - -+ #include "auto/config.h" -+ - #ifdef _WIN32 - # if !defined(DYNAMIC_RUBY_VER) || (DYNAMIC_RUBY_VER < 18) - # define NT -*************** -*** 48,60 **** - # define RUBY_EXPORT - # endif - -! #if !(defined(WIN32) || defined(_WIN64)) - # include <dlfcn.h> -! # define HANDLE void* - # define load_dll(n) dlopen((n), RTLD_LAZY|RTLD_GLOBAL) - # define symbol_from_dll dlsym - # define close_dll dlclose - #else - # define load_dll vimLoadLib - # define symbol_from_dll GetProcAddress - # define close_dll FreeLibrary ---- 50,64 ---- - # define RUBY_EXPORT - # endif - -! #ifndef WIN3264 - # include <dlfcn.h> -! # define HINSTANCE void* -! # define RUBY_PROC void* - # define load_dll(n) dlopen((n), RTLD_LAZY|RTLD_GLOBAL) - # define symbol_from_dll dlsym - # define close_dll dlclose - #else -+ # define RUBY_PROC FARPROC - # define load_dll vimLoadLib - # define symbol_from_dll GetProcAddress - # define close_dll FreeLibrary -*************** -*** 174,180 **** ---- 178,186 ---- - #define rb_lastline_get dll_rb_lastline_get - #define rb_lastline_set dll_rb_lastline_set - #define rb_load_protect dll_rb_load_protect -+ #ifndef RUBY19_OR_LATER - #define rb_num2long dll_rb_num2long -+ #endif - #define rb_num2ulong dll_rb_num2ulong - #define rb_obj_alloc dll_rb_obj_alloc - #define rb_obj_as_string dll_rb_obj_as_string -*************** -*** 186,191 **** ---- 192,200 ---- - #ifdef rb_str_new2 - /* Ruby may #define rb_str_new2 to use rb_str_new_cstr. */ - # define need_rb_str_new_cstr 1 -+ /* Ruby's headers #define rb_str_new_cstr to make use of GCC's -+ * __builtin_constant_p extension. */ -+ # undef rb_str_new_cstr - # define rb_str_new_cstr dll_rb_str_new_cstr - #else - # define rb_str_new2 dll_rb_str_new2 -*************** -*** 206,214 **** - #endif - #define ruby_init dll_ruby_init - #define ruby_init_loadpath dll_ruby_init_loadpath -! #define NtInitialize dll_NtInitialize -! #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18 -! # define rb_w32_snprintf dll_rb_w32_snprintf - #endif - - #ifdef RUBY19_OR_LATER ---- 215,225 ---- - #endif - #define ruby_init dll_ruby_init - #define ruby_init_loadpath dll_ruby_init_loadpath -! #ifdef WIN3264 -! # define NtInitialize dll_NtInitialize -! # if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18 -! # define rb_w32_snprintf dll_rb_w32_snprintf -! # endif - #endif - - #ifdef RUBY19_OR_LATER -*************** -*** 283,289 **** ---- 294,305 ---- - #endif - static void (*dll_ruby_init) (void); - static void (*dll_ruby_init_loadpath) (void); -+ #ifdef WIN3264 - static void (*dll_NtInitialize) (int*, char***); -+ # if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18 -+ static int (*dll_rb_w32_snprintf)(char*, size_t, const char*, ...); -+ # endif -+ #endif - #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18 - static char * (*dll_rb_string_value_ptr) (volatile VALUE*); - static VALUE (*dll_rb_float_new) (double); -*************** -*** 293,301 **** - #ifdef RUBY19_OR_LATER - static VALUE (*dll_rb_int2big)(SIGNED_VALUE); - #endif -- #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18 -- static int (*dll_rb_w32_snprintf)(char*, size_t, const char*, ...); -- #endif - - #ifdef RUBY19_OR_LATER - static void (*dll_ruby_script) (const char*); ---- 309,314 ---- -*************** -*** 317,328 **** - } - #endif - -! static HINSTANCE hinstRuby = 0; /* Instance of ruby.dll */ - - /* - * Table of name to function pointer of ruby. - */ -- #define RUBY_PROC FARPROC - static struct - { - char *name; ---- 330,340 ---- - } - #endif - -! static HINSTANCE hinstRuby = NULL; /* Instance of ruby.dll */ - - /* - * Table of name to function pointer of ruby. - */ - static struct - { - char *name; -*************** -*** 387,401 **** - #endif - {"ruby_init", (RUBY_PROC*)&dll_ruby_init}, - {"ruby_init_loadpath", (RUBY_PROC*)&dll_ruby_init_loadpath}, - { -! #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER < 19 - "NtInitialize", -! #else - "ruby_sysinit", -! #endif - (RUBY_PROC*)&dll_NtInitialize}, -! #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18 - {"rb_w32_snprintf", (RUBY_PROC*)&dll_rb_w32_snprintf}, - #endif - #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18 - {"rb_string_value_ptr", (RUBY_PROC*)&dll_rb_string_value_ptr}, ---- 399,415 ---- - #endif - {"ruby_init", (RUBY_PROC*)&dll_ruby_init}, - {"ruby_init_loadpath", (RUBY_PROC*)&dll_ruby_init_loadpath}, -+ #ifdef WIN3264 - { -! # if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER < 19 - "NtInitialize", -! # else - "ruby_sysinit", -! # endif - (RUBY_PROC*)&dll_NtInitialize}, -! # if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18 - {"rb_w32_snprintf", (RUBY_PROC*)&dll_rb_w32_snprintf}, -+ # endif - #endif - #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18 - {"rb_string_value_ptr", (RUBY_PROC*)&dll_rb_string_value_ptr}, -*************** -*** 424,430 **** - if (hinstRuby) - { - close_dll(hinstRuby); -! hinstRuby = 0; - } - } - ---- 438,444 ---- - if (hinstRuby) - { - close_dll(hinstRuby); -! hinstRuby = NULL; - } - } - -*************** -*** 454,460 **** - ruby_funcname_table[i].name))) - { - close_dll(hinstRuby); -! hinstRuby = 0; - if (verbose) - EMSG2(_(e_loadfunc), ruby_funcname_table[i].name); - return FAIL; ---- 468,474 ---- - ruby_funcname_table[i].name))) - { - close_dll(hinstRuby); -! hinstRuby = NULL; - if (verbose) - EMSG2(_(e_loadfunc), ruby_funcname_table[i].name); - return FAIL; -*************** -*** 936,944 **** - return line ? vim_str2rb_enc_str(line) : Qnil; - } - rb_raise(rb_eIndexError, "line number %ld out of range", (long)n); -- #ifndef __GNUC__ - return Qnil; /* For stop warning */ -- #endif - } - - static VALUE buffer_aref(VALUE self, VALUE num) ---- 950,956 ---- -*** ../vim-7.3.042/src/version.c 2010-10-27 16:17:56.000000000 +0200 ---- src/version.c 2010-10-27 16:45:28.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 43, - /**/ - --- -ARTHUR: A scratch? Your arm's off! -BLACK KNIGHT: No, it isn't. -ARTHUR: Well, what's that then? -BLACK KNIGHT: I've had worse. - The Quest for the Holy Grail (Monty Python) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.044 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.044 -Problem: The preview window opened by the popup menu is larger than - specified with 'previewheight'. (Benjamin Haskell) -Solution: Use 'previewheight' if it's set and smaller. -Files: src/popupmnu.c - - -*** ../vim-7.3.043/src/popupmnu.c 2010-08-15 21:57:25.000000000 +0200 ---- src/popupmnu.c 2010-10-27 17:04:31.000000000 +0200 -*************** -*** 558,565 **** - win_T *curwin_save = curwin; - int res = OK; - -! /* Open a preview window. 3 lines by default. */ - g_do_tagpreview = 3; - resized = prepare_tagpreview(FALSE); - g_do_tagpreview = 0; - ---- 558,568 ---- - win_T *curwin_save = curwin; - int res = OK; - -! /* Open a preview window. 3 lines by default. Prefer -! * 'previewheight' if set and smaller. */ - g_do_tagpreview = 3; -+ if (p_pvh > 0 && p_pvh < g_do_tagpreview) -+ g_do_tagpreview = p_pvh; - resized = prepare_tagpreview(FALSE); - g_do_tagpreview = 0; - -*** ../vim-7.3.043/src/version.c 2010-10-27 16:49:41.000000000 +0200 ---- src/version.c 2010-10-27 17:08:37.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 44, - /**/ - --- -"It's so simple to be wise. Just think of something stupid to say -and then don't say it." -- Sam Levenson - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.045 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.045 -Problem: Compiler warning for uninitialized variable. -Solution: Initialize the variable always. -Files: src/getchar.c - - -*** ../vim-7.3.044/src/getchar.c 2010-10-27 12:17:54.000000000 +0200 ---- src/getchar.c 2010-10-27 17:28:45.000000000 +0200 -*************** -*** 3290,3298 **** - */ - if (haskey) - keys = replace_termcodes(keys, &keys_buf, TRUE, TRUE, special); - if (hasarg) - { -- orig_rhs = rhs; - if (STRICMP(rhs, "<nop>") == 0) /* "<Nop>" means nothing */ - rhs = (char_u *)""; - else ---- 3290,3298 ---- - */ - if (haskey) - keys = replace_termcodes(keys, &keys_buf, TRUE, TRUE, special); -+ orig_rhs = rhs; - if (hasarg) - { - if (STRICMP(rhs, "<nop>") == 0) /* "<Nop>" means nothing */ - rhs = (char_u *)""; - else -*** ../vim-7.3.044/src/version.c 2010-10-27 17:11:11.000000000 +0200 ---- src/version.c 2010-10-27 17:30:11.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 45, - /**/ - --- -MARTHA'S WAY: Don't throw out all that leftover wine. Freeze into ice cubes - for future use in casseroles and sauces. -MY WAY: What leftover wine? - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.046 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.046 (after 7.3.043) -Problem: Can't build Ruby on MS-Windows. -Solution: Add #ifdef, don't use WIN3264 before including vim.h. -Files: src/if_ruby.c - - -*** ../vim-7.3.045/src/if_ruby.c 2010-10-27 16:49:41.000000000 +0200 ---- src/if_ruby.c 2010-10-27 17:37:05.000000000 +0200 -*************** -*** 14,20 **** - #include <stdio.h> - #include <string.h> - -! #include "auto/config.h" - - #ifdef _WIN32 - # if !defined(DYNAMIC_RUBY_VER) || (DYNAMIC_RUBY_VER < 18) ---- 14,22 ---- - #include <stdio.h> - #include <string.h> - -! #ifdef HAVE_CONFIG_H -! # include "auto/config.h" -! #endif - - #ifdef _WIN32 - # if !defined(DYNAMIC_RUBY_VER) || (DYNAMIC_RUBY_VER < 18) -*************** -*** 50,56 **** - # define RUBY_EXPORT - # endif - -! #ifndef WIN3264 - # include <dlfcn.h> - # define HINSTANCE void* - # define RUBY_PROC void* ---- 52,58 ---- - # define RUBY_EXPORT - # endif - -! #if !(defined(WIN32) || defined(_WIN64)) - # include <dlfcn.h> - # define HINSTANCE void* - # define RUBY_PROC void* -*** ../vim-7.3.045/src/version.c 2010-10-27 17:39:00.000000000 +0200 ---- src/version.c 2010-10-27 17:39:59.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 46, - /**/ - --- -BLACK KNIGHT: Come on you pansy! - [hah] [parry thrust] - [ARTHUR chops the BLACK KNIGHT's right arm off] -ARTHUR: Victory is mine! [kneeling] - We thank thee Lord, that in thy merc- - [Black Knight kicks Arthur in the head while he is praying] - The Quest for the Holy Grail (Monty Python) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.047 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.047 (after 7.3.032) -Problem: Missing makefile updates for test 75. -Solution: Update the makefiles. -Files: src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, - src/testdir/Makefile, src/testdir/Make_ming.mak, - src/testdir/Make_os2.mak, src/testdir/Make_vms.mms - - -*** ../vim-7.3.046/src/testdir/Make_amiga.mak 2010-10-20 17:44:01.000000000 +0200 ---- src/testdir/Make_amiga.mak 2010-10-20 20:43:25.000000000 +0200 -*************** -*** 27,33 **** - test56.out test57.out test58.out test59.out test60.out \ - test61.out test62.out test63.out test64.out test65.out \ - test66.out test67.out test68.out test69.out test70.out \ -! test71.out test72.out test73.out test74.out - - .SUFFIXES: .in .out - ---- 27,33 ---- - test56.out test57.out test58.out test59.out test60.out \ - test61.out test62.out test63.out test64.out test65.out \ - test66.out test67.out test68.out test69.out test70.out \ -! test71.out test72.out test73.out test74.out test75.out - - .SUFFIXES: .in .out - -*************** -*** 121,123 **** ---- 121,124 ---- - test72.out: test72.in - test73.out: test73.in - test74.out: test74.in -+ test75.out: test75.in -*** ../vim-7.3.046/src/testdir/Make_dos.mak 2010-10-20 17:44:01.000000000 +0200 ---- src/testdir/Make_dos.mak 2010-10-20 20:43:48.000000000 +0200 -*************** -*** 28,34 **** - test37.out test38.out test39.out test40.out test41.out \ - test42.out test52.out test65.out test66.out test67.out \ - test68.out test69.out test71.out test72.out test73.out \ -! test74.out - - SCRIPTS32 = test50.out test70.out - ---- 28,34 ---- - test37.out test38.out test39.out test40.out test41.out \ - test42.out test52.out test65.out test66.out test67.out \ - test68.out test69.out test71.out test72.out test73.out \ -! test74.out test75.out - - SCRIPTS32 = test50.out test70.out - -*** ../vim-7.3.046/src/testdir/Makefile 2010-10-20 17:44:01.000000000 +0200 ---- src/testdir/Makefile 2010-10-20 20:44:10.000000000 +0200 -*************** -*** 25,31 **** - test59.out test60.out test61.out test62.out test63.out \ - test64.out test65.out test66.out test67.out test68.out \ - test69.out test70.out test71.out test72.out test73.out \ -! test74.out - - SCRIPTS_GUI = test16.out - ---- 25,31 ---- - test59.out test60.out test61.out test62.out test63.out \ - test64.out test65.out test66.out test67.out test68.out \ - test69.out test70.out test71.out test72.out test73.out \ -! test74.out test75.out - - SCRIPTS_GUI = test16.out - -*** ../vim-7.3.046/src/testdir/Make_ming.mak 2010-10-20 17:44:01.000000000 +0200 ---- src/testdir/Make_ming.mak 2010-10-20 20:43:53.000000000 +0200 -*************** -*** 48,54 **** - test37.out test38.out test39.out test40.out test41.out \ - test42.out test52.out test65.out test66.out test67.out \ - test68.out test69.out test71.out test72.out test73.out \ -! test74.out - - SCRIPTS32 = test50.out test70.out - ---- 48,54 ---- - test37.out test38.out test39.out test40.out test41.out \ - test42.out test52.out test65.out test66.out test67.out \ - test68.out test69.out test71.out test72.out test73.out \ -! test74.out test75.out - - SCRIPTS32 = test50.out test70.out - -*** ../vim-7.3.046/src/testdir/Make_os2.mak 2010-10-20 17:44:01.000000000 +0200 ---- src/testdir/Make_os2.mak 2010-10-20 20:44:00.000000000 +0200 -*************** -*** 27,33 **** - test56.out test57.out test58.out test59.out test60.out \ - test61.out test62.out test63.out test64.out test65.out \ - test66.out test67.out test68.out test69.out test70.out \ -! test71.out test72.out test73.out test74.out - - .SUFFIXES: .in .out - ---- 27,33 ---- - test56.out test57.out test58.out test59.out test60.out \ - test61.out test62.out test63.out test64.out test65.out \ - test66.out test67.out test68.out test69.out test70.out \ -! test71.out test72.out test73.out test74.out test75.out - - .SUFFIXES: .in .out - -*** ../vim-7.3.046/src/testdir/Make_vms.mms 2010-10-20 17:44:01.000000000 +0200 ---- src/testdir/Make_vms.mms 2010-10-20 20:44:05.000000000 +0200 -*************** -*** 4,10 **** - # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> - # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> - # -! # Last change: 2010 Aug 04 - # - # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. - # Edit the lines in the Configuration section below to select. ---- 4,10 ---- - # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> - # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> - # -! # Last change: 2010 Oct 20 - # - # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. - # Edit the lines in the Configuration section below to select. -*************** -*** 74,80 **** - test56.out test57.out test60.out \ - test61.out test62.out test63.out test64.out test65.out \ - test66.out test67.out test68.out test69.out \ -! test71.out test72.out test74.out - - # Known problems: - # Test 30: a problem around mac format - unknown reason ---- 74,80 ---- - test56.out test57.out test60.out \ - test61.out test62.out test63.out test64.out test65.out \ - test66.out test67.out test68.out test69.out \ -! test71.out test72.out test74.out test75.out - - # Known problems: - # Test 30: a problem around mac format - unknown reason -*** ../vim-7.3.046/src/version.c 2010-10-27 17:40:53.000000000 +0200 ---- src/version.c 2010-10-27 18:34:20.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 47, - /**/ - --- -5 out of 4 people have trouble with fractions. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.048 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.048 -Problem: ":earlier 1f" doesn't work after loading undo file. -Solution: Set b_u_save_nr_cur when loading an undo file. (Christian - Brabandt) - Fix only showing time in ":undolist" -Files: src/undo.c - - -*** ../vim-7.3.047/src/undo.c 2010-08-15 21:57:28.000000000 +0200 ---- src/undo.c 2010-11-03 19:26:38.000000000 +0100 -*************** -*** 1861,1866 **** ---- 1861,1867 ---- - curbuf->b_u_seq_cur = seq_cur; - curbuf->b_u_time_cur = seq_time; - curbuf->b_u_save_nr_last = last_save_nr; -+ curbuf->b_u_save_nr_cur = last_save_nr; - - curbuf->b_u_synced = TRUE; - vim_free(uhp_table); -*************** -*** 2794,2800 **** - uhp->uh_time); - if (uhp->uh_save_nr > 0) - { -! while (STRLEN(IObuff) < 32) - STRCAT(IObuff, " "); - vim_snprintf_add((char *)IObuff, IOSIZE, - " %3ld", uhp->uh_save_nr); ---- 2795,2801 ---- - uhp->uh_time); - if (uhp->uh_save_nr > 0) - { -! while (STRLEN(IObuff) < 33) - STRCAT(IObuff, " "); - vim_snprintf_add((char *)IObuff, IOSIZE, - " %3ld", uhp->uh_save_nr); -*************** -*** 2849,2855 **** - sort_strings((char_u **)ga.ga_data, ga.ga_len); - - msg_start(); -! msg_puts_attr((char_u *)_("number changes time saved"), - hl_attr(HLF_T)); - for (i = 0; i < ga.ga_len && !got_int; ++i) - { ---- 2850,2856 ---- - sort_strings((char_u **)ga.ga_data, ga.ga_len); - - msg_start(); -! msg_puts_attr((char_u *)_("number changes when saved"), - hl_attr(HLF_T)); - for (i = 0; i < ga.ga_len && !got_int; ++i) - { -*************** -*** 2879,2885 **** - if (time(NULL) - tt >= 100) - { - curtime = localtime(&tt); -! (void)strftime((char *)buf, buflen, "%H:%M:%S", curtime); - } - else - #endif ---- 2880,2894 ---- - if (time(NULL) - tt >= 100) - { - curtime = localtime(&tt); -! if (time(NULL) - tt < (60L * 60L * 12L)) -! /* within 12 hours */ -! (void)strftime((char *)buf, buflen, "%H:%M:%S", curtime); -! else if (time(NULL) - tt < (60L * 60L * 24L * 180L)) -! /* within 6 months */ -! (void)strftime((char *)buf, buflen, "%m/%d %H:%M:%S", curtime); -! else -! /* long ago */ -! (void)strftime((char *)buf, buflen, "%y/%m/%d %H:%M:%S", curtime); - } - else - #endif -*** ../vim-7.3.047/src/version.c 2010-10-27 18:36:32.000000000 +0200 ---- src/version.c 2010-11-03 19:27:07.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 48, - /**/ - --- -TIM: To the north there lies a cave, the cave of Caerbannog, wherein, carved - in mystic runes, upon the very living rock, the last words of Olfin - Bedwere of Rheged make plain the last resting place of the most Holy - Grail. - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.049 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.049 -Problem: PLT has rebranded their Scheme to Racket. -Solution: Add support for Racket 5.x. (Sergey Khorev) -Files: src/Make_cyg.mak, src/Make_ming.mak, src/Make_mvc.mak, - src/auto/configure, src/configure.in, src/if_mzsch.c - - -*** ../vim-7.3.048/src/Make_cyg.mak 2010-08-15 21:57:27.000000000 +0200 ---- src/Make_cyg.mak 2010-11-03 21:50:42.000000000 +0100 -*************** -*** 1,6 **** - # - # Makefile for VIM on Win32, using Cygnus gcc -! # Last updated by Dan Sharp. Last Change: 2010 Feb 24 - # - # Also read INSTALLpc.txt! - # ---- 1,6 ---- - # - # Makefile for VIM on Win32, using Cygnus gcc -! # Last updated by Dan Sharp. Last Change: 2010 Nov 03 - # - # Also read INSTALLpc.txt! - # -*************** -*** 27,32 **** ---- 27,33 ---- - # MZSCHEME_VER define to version of MzScheme being used (209_000) - # DYNAMIC_MZSCHEME no or yes: use yes to load the MzScheme DLLs dynamically (yes) - # MZSCHEME_DLLS path to MzScheme DLLs (libmzgc and libmzsch), for "static" build. -+ # MZSCHEME_USE_RACKET define to use "racket" instead of "mzsch". - # LUA define to path to Lua dir to get Lua support (not defined) - # LUA_VER define to version of Lua being used (51) - # DYNAMIC_LUA no or yes: use yes to load the Lua DLL dynamically (yes) -*************** -*** 254,269 **** - MZSCHEME_GENERATE_BASE=no - endif - - ifeq (yes, $(DYNAMIC_MZSCHEME)) -! DEFINES += -DDYNAMIC_MZSCHEME -DDYNAMIC_MZSCH_DLL=\"libmzsch$(MZSCHEME_VER).dll\" -DDYNAMIC_MZGC_DLL=\"libmzgc$(MZSCHEME_VER).dll\" - else - ifndef MZSCHEME_DLLS - MZSCHEME_DLLS = $(MZSCHEME) - endif - ifeq (yes,$(MZSCHEME_PRECISE_GC)) -! MZSCHEME_LIB=-lmzsch$(MZSCHEME_VER) - else -! MZSCHEME_LIB = -lmzsch$(MZSCHEME_VER) -lmzgc$(MZSCHEME_VER) - endif - EXTRA_LIBS += -L$(MZSCHEME_DLLS) -L$(MZSCHEME_DLLS)/lib $(MZSCHEME_LIB) - endif ---- 255,276 ---- - MZSCHEME_GENERATE_BASE=no - endif - -+ ifndef MZSCHEME_USE_RACKET -+ MZSCHEME_MAIN_LIB=mzsch -+ else -+ MZSCHEME_MAIN_LIB=racket -+ endif -+ - ifeq (yes, $(DYNAMIC_MZSCHEME)) -! DEFINES += -DDYNAMIC_MZSCHEME -DDYNAMIC_MZSCH_DLL=\"lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).dll\" -DDYNAMIC_MZGC_DLL=\"libmzgc$(MZSCHEME_VER).dll\" - else - ifndef MZSCHEME_DLLS - MZSCHEME_DLLS = $(MZSCHEME) - endif - ifeq (yes,$(MZSCHEME_PRECISE_GC)) -! MZSCHEME_LIB=-l$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER) - else -! MZSCHEME_LIB = -l$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER) -lmzgc$(MZSCHEME_VER) - endif - EXTRA_LIBS += -L$(MZSCHEME_DLLS) -L$(MZSCHEME_DLLS)/lib $(MZSCHEME_LIB) - endif -*** ../vim-7.3.048/src/Make_ming.mak 2010-09-29 18:42:25.000000000 +0200 ---- src/Make_ming.mak 2010-11-03 21:48:14.000000000 +0100 -*************** -*** 141,151 **** - MZSCHEME_GENERATE_BASE=no - endif - - ifeq (no,$(DYNAMIC_MZSCHEME)) - ifeq (yes,$(MZSCHEME_PRECISE_GC)) -! MZSCHEME_LIB=-lmzsch$(MZSCHEME_VER) - else -! MZSCHEME_LIB = -lmzsch$(MZSCHEME_VER) -lmzgc$(MZSCHEME_VER) - endif - # the modern MinGW can dynamically link to dlls directly. - # point MZSCHEME_DLLS to where you put libmzschXXXXXXX.dll and libgcXXXXXXX.dll ---- 141,157 ---- - MZSCHEME_GENERATE_BASE=no - endif - -+ ifndef MZSCHEME_USE_RACKET -+ MZSCHEME_MAIN_LIB=mzsch -+ else -+ MZSCHEME_MAIN_LIB=racket -+ endif -+ - ifeq (no,$(DYNAMIC_MZSCHEME)) - ifeq (yes,$(MZSCHEME_PRECISE_GC)) -! MZSCHEME_LIB=-l$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER) - else -! MZSCHEME_LIB = -l$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER) -lmzgc$(MZSCHEME_VER) - endif - # the modern MinGW can dynamically link to dlls directly. - # point MZSCHEME_DLLS to where you put libmzschXXXXXXX.dll and libgcXXXXXXX.dll -*************** -*** 343,349 **** - ifdef MZSCHEME - CFLAGS += -I$(MZSCHEME)/include -DFEAT_MZSCHEME -DMZSCHEME_COLLECTS=\"$(MZSCHEME)/collects\" - ifeq (yes, $(DYNAMIC_MZSCHEME)) -! CFLAGS += -DDYNAMIC_MZSCHEME -DDYNAMIC_MZSCH_DLL=\"libmzsch$(MZSCHEME_VER).dll\" -DDYNAMIC_MZGC_DLL=\"libmzgc$(MZSCHEME_VER).dll\" - endif - endif - ---- 349,355 ---- - ifdef MZSCHEME - CFLAGS += -I$(MZSCHEME)/include -DFEAT_MZSCHEME -DMZSCHEME_COLLECTS=\"$(MZSCHEME)/collects\" - ifeq (yes, $(DYNAMIC_MZSCHEME)) -! CFLAGS += -DDYNAMIC_MZSCHEME -DDYNAMIC_MZSCH_DLL=\"lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).dll\" -DDYNAMIC_MZGC_DLL=\"libmzgc$(MZSCHEME_VER).dll\" - endif - endif - -*** ../vim-7.3.048/src/Make_mvc.mak 2010-08-15 21:57:27.000000000 +0200 ---- src/Make_mvc.mak 2010-11-03 21:48:14.000000000 +0100 -*************** -*** 705,716 **** - MZSCHEME_VER = 205_000 - !endif - CFLAGS = $(CFLAGS) -DFEAT_MZSCHEME -I $(MZSCHEME)\include -! !if EXIST("$(MZSCHEME)\collects\scheme\base.ss") -! # for MzScheme 4.x we need to include byte code for basic Scheme stuff - MZSCHEME_EXTRA_DEP = mzscheme_base.c - CFLAGS = $(CFLAGS) -DINCLUDE_MZSCHEME_BASE - !endif -! !if EXIST("$(MZSCHEME)\lib\msvc\libmzsch$(MZSCHEME_VER).lib") \ - && !EXIST("$(MZSCHEME)\lib\msvc\libmzgc$(MZSCHEME_VER).lib") - !message Building with Precise GC - MZSCHEME_PRECISE_GC = yes ---- 705,722 ---- - MZSCHEME_VER = 205_000 - !endif - CFLAGS = $(CFLAGS) -DFEAT_MZSCHEME -I $(MZSCHEME)\include -! !if EXIST("$(MZSCHEME)\collects\scheme\base.ss") \ -! || EXIST("$(MZSCHEME)\collects\scheme\base.rkt") -! # for MzScheme >= 4 we need to include byte code for basic Scheme stuff - MZSCHEME_EXTRA_DEP = mzscheme_base.c - CFLAGS = $(CFLAGS) -DINCLUDE_MZSCHEME_BASE - !endif -! !if EXIST("$(MZSCHEME)\lib\msvc\libmzsch$(MZSCHEME_VER).lib") -! MZSCHEME_MAIN_LIB=mzsch -! !else -! MZSCHEME_MAIN_LIB=racket -! !endif -! !if EXIST("$(MZSCHEME)\lib\msvc\lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).lib") \ - && !EXIST("$(MZSCHEME)\lib\msvc\libmzgc$(MZSCHEME_VER).lib") - !message Building with Precise GC - MZSCHEME_PRECISE_GC = yes -*************** -*** 722,728 **** - !endif - !message MzScheme DLLs will be loaded dynamically - CFLAGS = $(CFLAGS) -DDYNAMIC_MZSCHEME \ -! -DDYNAMIC_MZSCH_DLL=\"libmzsch$(MZSCHEME_VER).dll\" \ - -DDYNAMIC_MZGC_DLL=\"libmzgc$(MZSCHEME_VER).dll\" - !else - !if "$(MZSCHEME_DEBUG)" == "yes" ---- 728,734 ---- - !endif - !message MzScheme DLLs will be loaded dynamically - CFLAGS = $(CFLAGS) -DDYNAMIC_MZSCHEME \ -! -DDYNAMIC_MZSCH_DLL=\"lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).dll\" \ - -DDYNAMIC_MZGC_DLL=\"libmzgc$(MZSCHEME_VER).dll\" - !else - !if "$(MZSCHEME_DEBUG)" == "yes" -*************** -*** 730,739 **** - !endif - !if "$(MZSCHEME_PRECISE_GC)" == "yes" - # Precise GC does not use separate dll -! MZSCHEME_LIB = $(MZSCHEME)\lib\msvc\libmzsch$(MZSCHEME_VER).lib - !else - MZSCHEME_LIB = $(MZSCHEME)\lib\msvc\libmzgc$(MZSCHEME_VER).lib \ -! $(MZSCHEME)\lib\msvc\libmzsch$(MZSCHEME_VER).lib - !endif - !endif - MZSCHEME_OBJ = $(OUTDIR)\if_mzsch.obj ---- 736,745 ---- - !endif - !if "$(MZSCHEME_PRECISE_GC)" == "yes" - # Precise GC does not use separate dll -! MZSCHEME_LIB = $(MZSCHEME)\lib\msvc\lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).lib - !else - MZSCHEME_LIB = $(MZSCHEME)\lib\msvc\libmzgc$(MZSCHEME_VER).lib \ -! $(MZSCHEME)\lib\msvc\lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).lib - !endif - !endif - MZSCHEME_OBJ = $(OUTDIR)\if_mzsch.obj -*** ../vim-7.3.048/src/auto/configure 2010-10-27 16:49:41.000000000 +0200 ---- src/auto/configure 2010-11-03 21:53:09.000000000 +0100 -*************** -*** 4862,4877 **** - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 - $as_echo "no" >&6; } -! { $as_echo "$as_me:${as_lineno-$LINENO}: checking if scheme.h can be found in /usr/include/plt/" >&5 -! $as_echo_n "checking if scheme.h can be found in /usr/include/plt/... " >&6; } -! if test -f /usr/include/plt/scheme.h; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 - $as_echo "yes" >&6; } -! SCHEME_INC=/usr/include/plt - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 - $as_echo "no" >&6; } -! vi_cv_path_mzscheme_pfx= - fi - fi - fi ---- 4862,4897 ---- - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 - $as_echo "no" >&6; } -! { $as_echo "$as_me:${as_lineno-$LINENO}: checking if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/racket" >&5 -! $as_echo_n "checking if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/racket... " >&6; } -! if test -f $vi_cv_path_mzscheme_pfx/include/racket/scheme.h; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 - $as_echo "yes" >&6; } -! SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/racket - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 - $as_echo "no" >&6; } -! { $as_echo "$as_me:${as_lineno-$LINENO}: checking if scheme.h can be found in /usr/include/plt/" >&5 -! $as_echo_n "checking if scheme.h can be found in /usr/include/plt/... " >&6; } -! if test -f /usr/include/plt/scheme.h; then -! { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -! $as_echo "yes" >&6; } -! SCHEME_INC=/usr/include/plt -! else -! { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -! $as_echo "no" >&6; } -! { $as_echo "$as_me:${as_lineno-$LINENO}: checking if scheme.h can be found in /usr/include/racket/" >&5 -! $as_echo_n "checking if scheme.h can be found in /usr/include/racket/... " >&6; } -! if test -f /usr/include/racket/scheme.h; then -! { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -! $as_echo "yes" >&6; } -! SCHEME_INC=/usr/include/racket -! else -! { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -! $as_echo "no" >&6; } -! vi_cv_path_mzscheme_pfx= -! fi -! fi - fi - fi - fi -*************** -*** 4883,4894 **** - elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then - MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a" - MZSCHEME_CFLAGS="-DMZ_PRECISE_GC" -! elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"; then - MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a" - else - if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.so"; then - MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme3m" - MZSCHEME_CFLAGS="-DMZ_PRECISE_GC" - else - MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc" - fi ---- 4903,4924 ---- - elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then - MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a" - MZSCHEME_CFLAGS="-DMZ_PRECISE_GC" -! elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"; then -! MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a" -! MZSCHEME_CFLAGS="-DMZ_PRECISE_GC" -! elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.a"; then -! MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a" -! elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a"; then - MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a" - else - if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.so"; then - MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme3m" - MZSCHEME_CFLAGS="-DMZ_PRECISE_GC" -+ elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.so"; then -+ MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket3m" -+ MZSCHEME_CFLAGS="-DMZ_PRECISE_GC" -+ elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.so"; then -+ MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket -lmzgc" - else - MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc" - fi -*************** -*** 4901,4910 **** - fi - if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then - SCHEME_COLLECTS=lib/plt/ - fi - if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.ss" ; then -! MZSCHEME_EXTRA="mzscheme_base.c" -! MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE" - MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc" - fi - MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \ ---- 4931,4950 ---- - fi - if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then - SCHEME_COLLECTS=lib/plt/ -+ else -+ if test -d $vi_cv_path_mzscheme_pfx/lib/racket/collects; then -+ SCHEME_COLLECTS=lib/racket/ -+ fi - fi - if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.ss" ; then -! MZSCHEME_EXTRA="mzscheme_base.c" -! else -! if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.rkt" ; then -! MZSCHEME_EXTRA="mzscheme_base.c" -! fi -! fi -! if test "X$MZSCHEME_EXTRA" != "X" ; then -! MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE" - MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc" - fi - MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \ -*** ../vim-7.3.048/src/configure.in 2010-10-27 16:49:41.000000000 +0200 ---- src/configure.in 2010-11-03 21:48:14.000000000 +0100 -*************** -*** 568,580 **** - SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/plt - else - AC_MSG_RESULT(no) -! AC_MSG_CHECKING(if scheme.h can be found in /usr/include/plt/) -! if test -f /usr/include/plt/scheme.h; then - AC_MSG_RESULT(yes) -! SCHEME_INC=/usr/include/plt - else - AC_MSG_RESULT(no) -! vi_cv_path_mzscheme_pfx= - fi - fi - fi ---- 568,594 ---- - SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/plt - else - AC_MSG_RESULT(no) -! AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/racket) -! if test -f $vi_cv_path_mzscheme_pfx/include/racket/scheme.h; then - AC_MSG_RESULT(yes) -! SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/racket - else - AC_MSG_RESULT(no) -! AC_MSG_CHECKING(if scheme.h can be found in /usr/include/plt/) -! if test -f /usr/include/plt/scheme.h; then -! AC_MSG_RESULT(yes) -! SCHEME_INC=/usr/include/plt -! else -! AC_MSG_RESULT(no) -! AC_MSG_CHECKING(if scheme.h can be found in /usr/include/racket/) -! if test -f /usr/include/racket/scheme.h; then -! AC_MSG_RESULT(yes) -! SCHEME_INC=/usr/include/racket -! else -! AC_MSG_RESULT(no) -! vi_cv_path_mzscheme_pfx= -! fi -! fi - fi - fi - fi -*************** -*** 586,598 **** - elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then - MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a" - MZSCHEME_CFLAGS="-DMZ_PRECISE_GC" -! elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"; then - MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a" - else - dnl Using shared objects - if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.so"; then - MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme3m" - MZSCHEME_CFLAGS="-DMZ_PRECISE_GC" - else - MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc" - fi ---- 600,622 ---- - elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then - MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a" - MZSCHEME_CFLAGS="-DMZ_PRECISE_GC" -! elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"; then -! MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a" -! MZSCHEME_CFLAGS="-DMZ_PRECISE_GC" -! elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.a"; then -! MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a" -! elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a"; then - MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a" - else - dnl Using shared objects - if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.so"; then - MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme3m" - MZSCHEME_CFLAGS="-DMZ_PRECISE_GC" -+ elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.so"; then -+ MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket3m" -+ MZSCHEME_CFLAGS="-DMZ_PRECISE_GC" -+ elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.so"; then -+ MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket -lmzgc" - else - MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc" - fi -*************** -*** 607,616 **** - fi - if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then - SCHEME_COLLECTS=lib/plt/ - fi - if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.ss" ; then -- dnl need to generate bytecode for MzScheme base - MZSCHEME_EXTRA="mzscheme_base.c" - MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE" - MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc" - fi ---- 631,650 ---- - fi - if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then - SCHEME_COLLECTS=lib/plt/ -+ else -+ if test -d $vi_cv_path_mzscheme_pfx/lib/racket/collects; then -+ SCHEME_COLLECTS=lib/racket/ -+ fi - fi - if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.ss" ; then - MZSCHEME_EXTRA="mzscheme_base.c" -+ else -+ if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.rkt" ; then -+ MZSCHEME_EXTRA="mzscheme_base.c" -+ fi -+ fi -+ if test "X$MZSCHEME_EXTRA" != "X" ; then -+ dnl need to generate bytecode for MzScheme base - MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE" - MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc" - fi -*** ../vim-7.3.048/src/if_mzsch.c 2010-10-23 14:02:48.000000000 +0200 ---- src/if_mzsch.c 2010-11-03 21:48:14.000000000 +0100 -*************** -*** 794,802 **** ---- 794,809 ---- - #endif - } - -+ #if MZSCHEME_VERSION_MAJOR >= 500 && defined(WIN32) && defined(USE_THREAD_LOCAL) -+ static __declspec(thread) void *tls_space; -+ #endif -+ - void - mzscheme_main(void) - { -+ #if MZSCHEME_VERSION_MAJOR >= 500 && defined(WIN32) && defined(USE_THREAD_LOCAL) -+ scheme_register_tls_space(&tls_space, 0); -+ #endif - #if defined(MZ_PRECISE_GC) && MZSCHEME_VERSION_MAJOR >= 400 - /* use trampoline for precise GC in MzScheme >= 4.x */ - scheme_main_setup(TRUE, mzscheme_env_main, 0, NULL); -*** ../vim-7.3.048/src/version.c 2010-11-03 19:32:36.000000000 +0100 ---- src/version.c 2010-11-03 21:57:04.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 49, - /**/ - --- -TIM: But follow only if you are men of valour. For the entrance to this cave - is guarded by a monster, a creature so foul and cruel that no man yet has - fought with it and lived. Bones of full fifty men lie strewn about its - lair ... - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.050 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.050 -Problem: The link script is clumsy. -Solution: Use the --as-needed linker option if available. (Kirill A. - Shutemov) -Files: src/Makefile, src/auto/configure, src/config.mk.in, - src/configure.in, src/link.sh - - -*** ../vim-7.3.049/src/Makefile 2010-10-27 16:49:41.000000000 +0200 ---- src/Makefile 2010-11-03 22:26:45.000000000 +0100 -*************** -*** 1700,1706 **** - $(CCC) version.c -o objects/version.o - @LINK="$(PURIFY) $(SHRPENV) $(CClink) $(ALL_LIB_DIRS) $(LDFLAGS) \ - -o $(VIMTARGET) $(OBJ) objects/version.o $(ALL_LIBS)" \ -! MAKE="$(MAKE)" sh $(srcdir)/link.sh - - xxd/xxd$(EXEEXT): xxd/xxd.c - cd xxd; CC="$(CC)" CFLAGS="$(CPPFLAGS) $(CFLAGS)" \ ---- 1700,1707 ---- - $(CCC) version.c -o objects/version.o - @LINK="$(PURIFY) $(SHRPENV) $(CClink) $(ALL_LIB_DIRS) $(LDFLAGS) \ - -o $(VIMTARGET) $(OBJ) objects/version.o $(ALL_LIBS)" \ -! MAKE="$(MAKE)" LINK_AS_NEEDED=$(LINK_AS_NEEDED) \ -! sh $(srcdir)/link.sh - - xxd/xxd$(EXEEXT): xxd/xxd.c - cd xxd; CC="$(CC)" CFLAGS="$(CPPFLAGS) $(CFLAGS)" \ -*** ../vim-7.3.049/src/auto/configure 2010-11-03 21:59:23.000000000 +0100 ---- src/auto/configure 2010-11-03 22:28:03.000000000 +0100 -*************** -*** 593,598 **** ---- 593,599 ---- - - ac_subst_vars='LTLIBOBJS - LIBOBJS -+ LINK_AS_NEEDED - DEPEND_CFLAGS_FILTER - MAKEMO - MSGFMT -*************** -*** 12404,12409 **** ---- 12405,12427 ---- - fi - - -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking linker --as-needed support" >&5 -+ $as_echo_n "checking linker --as-needed support... " >&6; } -+ LINK_AS_NEEDED= -+ # Check if linker supports --as-needed and --no-as-needed options -+ if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then -+ LDFLAGS="$LDFLAGS -Wl,--as-needed" -+ LINK_AS_NEEDED=yes -+ fi -+ if test "$LINK_AS_NEEDED" = yes; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -+ $as_echo "yes" >&6; } -+ else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ $as_echo "no" >&6; } -+ fi -+ -+ - ac_config_files="$ac_config_files auto/config.mk:config.mk.in" - - cat >confcache <<\_ACEOF -*** ../vim-7.3.049/src/config.mk.in 2010-08-15 21:57:28.000000000 +0200 ---- src/config.mk.in 2010-11-03 22:26:24.000000000 +0100 -*************** -*** 30,35 **** ---- 30,36 ---- - CPP = @CPP@ - CPP_MM = @CPP_MM@ - DEPEND_CFLAGS_FILTER = @DEPEND_CFLAGS_FILTER@ -+ LINK_AS_NEEDED = @LINK_AS_NEEDED@ - X_CFLAGS = @X_CFLAGS@ - X_LIBS_DIR = @X_LIBS@ - X_PRE_LIBS = @X_PRE_LIBS@ -*** ../vim-7.3.049/src/configure.in 2010-11-03 21:59:23.000000000 +0100 ---- src/configure.in 2010-11-03 22:26:16.000000000 +0100 -*************** -*** 3527,3532 **** ---- 3527,3549 ---- - fi - AC_SUBST(DEPEND_CFLAGS_FILTER) - -+ dnl link.sh tries to avoid overlinking in a hackish way. -+ dnl At least GNU ld supports --as-needed which provides the same functionality -+ dnl at linker level. Let's use it. -+ AC_MSG_CHECKING(linker --as-needed support) -+ LINK_AS_NEEDED= -+ # Check if linker supports --as-needed and --no-as-needed options -+ if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then -+ LDFLAGS="$LDFLAGS -Wl,--as-needed" -+ LINK_AS_NEEDED=yes -+ fi -+ if test "$LINK_AS_NEEDED" = yes; then -+ AC_MSG_RESULT(yes) -+ else -+ AC_MSG_RESULT(no) -+ fi -+ AC_SUBST(LINK_AS_NEEDED) -+ - dnl write output files - AC_OUTPUT(auto/config.mk:config.mk.in) - -*** ../vim-7.3.049/src/link.sh 2010-08-15 21:57:25.000000000 +0200 ---- src/link.sh 2010-11-03 22:26:08.000000000 +0100 -*************** -*** 5,11 **** - # libraries when they exist, but this doesn't mean they are needed for Vim. - # - # Author: Bram Moolenaar -! # Last change: 2006 Sep 26 - # License: Public domain - # - # Warning: This fails miserably if the linker doesn't return an error code! ---- 5,11 ---- - # libraries when they exist, but this doesn't mean they are needed for Vim. - # - # Author: Bram Moolenaar -! # Last change: 2010 Nov 03 - # License: Public domain - # - # Warning: This fails miserably if the linker doesn't return an error code! -*************** -*** 16,26 **** - echo "$LINK " >link.cmd - exit_value=0 - - # - # If auto/link.sed already exists, use it. We assume a previous run of - # link.sh has found the correct set of libraries. - # -- if test -f auto/link.sed; then - echo "link.sh: The file 'auto/link.sed' exists, which is going to be used now." - echo "link.sh: If linking fails, try deleting the auto/link.sed file." - echo "link.sh: If this fails too, try creating an empty auto/link.sed file." ---- 16,38 ---- - echo "$LINK " >link.cmd - exit_value=0 - -+ if test "$LINK_AS_NEEDED" = yes; then -+ echo "link.sh: \$LINK_AS_NEEDED set to 'yes': invoking linker directly." -+ cat link.cmd -+ if sh link.cmd; then -+ exit_value=0 -+ echo "link.sh: Linked fine" -+ else -+ exit_value=$? -+ echo "link.sh: Linking failed" -+ fi -+ else -+ if test -f auto/link.sed; then -+ - # - # If auto/link.sed already exists, use it. We assume a previous run of - # link.sh has found the correct set of libraries. - # - echo "link.sh: The file 'auto/link.sed' exists, which is going to be used now." - echo "link.sh: If linking fails, try deleting the auto/link.sed file." - echo "link.sh: If this fails too, try creating an empty auto/link.sed file." -*************** -*** 124,129 **** ---- 136,143 ---- - fi - fi - -+ fi -+ - # - # cleanup - # -*** ../vim-7.3.049/src/version.c 2010-11-03 21:59:23.000000000 +0100 ---- src/version.c 2010-11-03 22:30:17.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 50, - /**/ - --- -Save the plankton - eat a whale. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.051 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.051 -Problem: Crash when $PATH is empty. -Solution: Check for vim_getenv() returning NULL. (Yasuhiro Matsumoto) -Files: src/ex_getln.c, src/os_win32.c - - -*** ../vim-7.3.050/src/ex_getln.c 2010-10-27 12:58:19.000000000 +0200 ---- src/ex_getln.c 2010-11-10 15:31:33.000000000 +0100 -*************** -*** 4747,4753 **** ---- 4747,4757 ---- - || (pat[1] == '.' && vim_ispathsep(pat[2]))))) - path = (char_u *)"."; - else -+ { - path = vim_getenv((char_u *)"PATH", &mustfree); -+ if (path == NULL) -+ path = (char_u *)""; -+ } - - /* - * Go over all directories in $PATH. Expand matches in that directory and -*** ../vim-7.3.050/src/os_win32.c 2010-10-27 12:17:54.000000000 +0200 ---- src/os_win32.c 2010-11-10 15:30:36.000000000 +0100 -*************** -*** 211,223 **** - static void - get_exe_name(void) - { -! char temp[MAXPATHL]; - char_u *p; - - if (exe_name == NULL) - { - /* store the name of the executable, may be used for $VIM */ -! GetModuleFileName(NULL, temp, MAXPATHL - 1); - if (*temp != NUL) - exe_name = FullName_save((char_u *)temp, FALSE); - } ---- 211,226 ---- - static void - get_exe_name(void) - { -! /* Maximum length of $PATH is more than MAXPATHL. 8191 is often mentioned -! * as the maximum length that works (plus a NUL byte). */ -! #define MAX_ENV_PATH_LEN 8192 -! char temp[MAX_ENV_PATH_LEN]; - char_u *p; - - if (exe_name == NULL) - { - /* store the name of the executable, may be used for $VIM */ -! GetModuleFileName(NULL, temp, MAX_ENV_PATH_LEN - 1); - if (*temp != NUL) - exe_name = FullName_save((char_u *)temp, FALSE); - } -*************** -*** 232,241 **** - * "!xxd" it's found in our starting directory. Needed because - * SearchPath() also looks there. */ - p = mch_getenv("PATH"); -! if (STRLEN(p) + STRLEN(exe_path) + 2 < MAXPATHL) - { -! STRCPY(temp, p); -! STRCAT(temp, ";"); - STRCAT(temp, exe_path); - vim_setenv((char_u *)"PATH", temp); - } ---- 235,250 ---- - * "!xxd" it's found in our starting directory. Needed because - * SearchPath() also looks there. */ - p = mch_getenv("PATH"); -! if (p == NULL -! || STRLEN(p) + STRLEN(exe_path) + 2 < MAX_ENV_PATH_LEN) - { -! if (p == NULL || *p == NUL) -! temp[0] = NUL; -! else -! { -! STRCPY(temp, p); -! STRCAT(temp, ";"); -! } - STRCAT(temp, exe_path); - vim_setenv((char_u *)"PATH", temp); - } -*** ../vim-7.3.050/src/version.c 2010-11-03 22:32:18.000000000 +0100 ---- src/version.c 2010-11-10 15:34:43.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 51, - /**/ - --- -SIGFUN -- signature too funny (core dumped) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.052 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.052 -Problem: When 'completefunc' opens a new window all kinds of errors follow. - (Xavier Deguillard) -Solution: When 'completefunc' goes to another window or buffer and when it - deletes text abort completion. Add a test for 'completefunc'. -Files: src/edit.c, src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, - src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, - src/testdir/Make_vms.mms, src/testdir/Makefile, - src/testdir/test76.in, src/testdir/test76.ok - - -*** ../vim-7.3.051/src/edit.c 2010-08-15 21:57:25.000000000 +0200 ---- src/edit.c 2010-11-10 16:50:12.000000000 +0100 -*************** -*** 58,63 **** ---- 58,67 ---- - }; - - static char e_hitend[] = N_("Hit end of paragraph"); -+ #ifdef FEAT_COMPL_FUNC -+ static char e_complwin[] = N_("E839: Completion function changed window"); -+ static char e_compldel[] = N_("E840: Completion function deleted text"); -+ #endif - - /* - * Structure used to store one match for insert completion. -*************** -*** 3833,3838 **** ---- 3837,3844 ---- - char_u *args[2]; - char_u *funcname; - pos_T pos; -+ win_T *curwin_save; -+ buf_T *curbuf_save; - - funcname = (type == CTRL_X_FUNCTION) ? curbuf->b_p_cfu : curbuf->b_p_ofu; - if (*funcname == NUL) -*************** -*** 3843,3855 **** - args[1] = base; - - pos = curwin->w_cursor; - matchlist = call_func_retlist(funcname, 2, args, FALSE); - curwin->w_cursor = pos; /* restore the cursor position */ -! if (matchlist == NULL) -! return; - -! ins_compl_add_list(matchlist); -! list_unref(matchlist); - } - #endif /* FEAT_COMPL_FUNC */ - ---- 3849,3875 ---- - args[1] = base; - - pos = curwin->w_cursor; -+ curwin_save = curwin; -+ curbuf_save = curbuf; - matchlist = call_func_retlist(funcname, 2, args, FALSE); -+ if (curwin_save != curwin || curbuf_save != curbuf) -+ { -+ EMSG(_(e_complwin)); -+ goto theend; -+ } - curwin->w_cursor = pos; /* restore the cursor position */ -! check_cursor(); -! if (!equalpos(curwin->w_cursor, pos)) -! { -! EMSG(_(e_compldel)); -! goto theend; -! } -! if (matchlist != NULL) -! ins_compl_add_list(matchlist); - -! theend: -! if (matchlist != NULL) -! list_unref(matchlist); - } - #endif /* FEAT_COMPL_FUNC */ - -*************** -*** 4994,4999 **** ---- 5014,5021 ---- - int col; - char_u *funcname; - pos_T pos; -+ win_T *curwin_save; -+ buf_T *curbuf_save; - - /* Call 'completefunc' or 'omnifunc' and get pattern length as a - * string */ -*************** -*** 5009,5016 **** ---- 5031,5051 ---- - args[0] = (char_u *)"1"; - args[1] = NULL; - pos = curwin->w_cursor; -+ curwin_save = curwin; -+ curbuf_save = curbuf; - col = call_func_retnr(funcname, 2, args, FALSE); -+ if (curwin_save != curwin || curbuf_save != curbuf) -+ { -+ EMSG(_(e_complwin)); -+ return FAIL; -+ } - curwin->w_cursor = pos; /* restore the cursor position */ -+ check_cursor(); -+ if (!equalpos(curwin->w_cursor, pos)) -+ { -+ EMSG(_(e_compldel)); -+ return FAIL; -+ } - - if (col < 0) - col = curs_col; -*** ../vim-7.3.051/src/testdir/Make_amiga.mak 2010-10-27 18:36:32.000000000 +0200 ---- src/testdir/Make_amiga.mak 2010-11-10 15:48:30.000000000 +0100 -*************** -*** 27,33 **** - test56.out test57.out test58.out test59.out test60.out \ - test61.out test62.out test63.out test64.out test65.out \ - test66.out test67.out test68.out test69.out test70.out \ -! test71.out test72.out test73.out test74.out test75.out - - .SUFFIXES: .in .out - ---- 27,34 ---- - test56.out test57.out test58.out test59.out test60.out \ - test61.out test62.out test63.out test64.out test65.out \ - test66.out test67.out test68.out test69.out test70.out \ -! test71.out test72.out test73.out test74.out test75.out \ -! test76.out - - .SUFFIXES: .in .out - -*************** -*** 122,124 **** ---- 123,126 ---- - test73.out: test73.in - test74.out: test74.in - test75.out: test75.in -+ test76.out: test76.in -*** ../vim-7.3.051/src/testdir/Make_dos.mak 2010-10-27 18:36:32.000000000 +0200 ---- src/testdir/Make_dos.mak 2010-11-10 15:48:38.000000000 +0100 -*************** -*** 28,34 **** - test37.out test38.out test39.out test40.out test41.out \ - test42.out test52.out test65.out test66.out test67.out \ - test68.out test69.out test71.out test72.out test73.out \ -! test74.out test75.out - - SCRIPTS32 = test50.out test70.out - ---- 28,34 ---- - test37.out test38.out test39.out test40.out test41.out \ - test42.out test52.out test65.out test66.out test67.out \ - test68.out test69.out test71.out test72.out test73.out \ -! test74.out test75.out test76.out - - SCRIPTS32 = test50.out test70.out - -*** ../vim-7.3.051/src/testdir/Make_ming.mak 2010-10-27 18:36:32.000000000 +0200 ---- src/testdir/Make_ming.mak 2010-11-10 15:48:53.000000000 +0100 -*************** -*** 48,54 **** - test37.out test38.out test39.out test40.out test41.out \ - test42.out test52.out test65.out test66.out test67.out \ - test68.out test69.out test71.out test72.out test73.out \ -! test74.out test75.out - - SCRIPTS32 = test50.out test70.out - ---- 48,54 ---- - test37.out test38.out test39.out test40.out test41.out \ - test42.out test52.out test65.out test66.out test67.out \ - test68.out test69.out test71.out test72.out test73.out \ -! test74.out test75.out test76.out - - SCRIPTS32 = test50.out test70.out - -*** ../vim-7.3.051/src/testdir/Make_os2.mak 2010-10-27 18:36:32.000000000 +0200 ---- src/testdir/Make_os2.mak 2010-11-10 15:49:10.000000000 +0100 -*************** -*** 27,33 **** - test56.out test57.out test58.out test59.out test60.out \ - test61.out test62.out test63.out test64.out test65.out \ - test66.out test67.out test68.out test69.out test70.out \ -! test71.out test72.out test73.out test74.out test75.out - - .SUFFIXES: .in .out - ---- 27,34 ---- - test56.out test57.out test58.out test59.out test60.out \ - test61.out test62.out test63.out test64.out test65.out \ - test66.out test67.out test68.out test69.out test70.out \ -! test71.out test72.out test73.out test74.out test75.out \ -! test76.out - - .SUFFIXES: .in .out - -*** ../vim-7.3.051/src/testdir/Make_vms.mms 2010-10-27 18:36:32.000000000 +0200 ---- src/testdir/Make_vms.mms 2010-11-10 15:49:32.000000000 +0100 -*************** -*** 4,10 **** - # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> - # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> - # -! # Last change: 2010 Oct 20 - # - # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. - # Edit the lines in the Configuration section below to select. ---- 4,10 ---- - # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> - # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> - # -! # Last change: 2010 Nov 10 - # - # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. - # Edit the lines in the Configuration section below to select. -*************** -*** 74,80 **** - test56.out test57.out test60.out \ - test61.out test62.out test63.out test64.out test65.out \ - test66.out test67.out test68.out test69.out \ -! test71.out test72.out test74.out test75.out - - # Known problems: - # Test 30: a problem around mac format - unknown reason ---- 74,80 ---- - test56.out test57.out test60.out \ - test61.out test62.out test63.out test64.out test65.out \ - test66.out test67.out test68.out test69.out \ -! test71.out test72.out test74.out test75.out test76.out - - # Known problems: - # Test 30: a problem around mac format - unknown reason -*** ../vim-7.3.051/src/testdir/Makefile 2010-10-27 18:36:32.000000000 +0200 ---- src/testdir/Makefile 2010-11-10 15:47:32.000000000 +0100 -*************** -*** 25,31 **** - test59.out test60.out test61.out test62.out test63.out \ - test64.out test65.out test66.out test67.out test68.out \ - test69.out test70.out test71.out test72.out test73.out \ -! test74.out test75.out - - SCRIPTS_GUI = test16.out - ---- 25,31 ---- - test59.out test60.out test61.out test62.out test63.out \ - test64.out test65.out test66.out test67.out test68.out \ - test69.out test70.out test71.out test72.out test73.out \ -! test74.out test75.out test76.out - - SCRIPTS_GUI = test16.out - -*** ../vim-7.3.051/src/testdir/test76.in 2010-11-10 16:51:45.000000000 +0100 ---- src/testdir/test76.in 2010-11-10 16:38:45.000000000 +0100 -*************** -*** 0 **** ---- 1,46 ---- -+ Tests for completefunc/omnifunc. vim: set ft=vim : -+ -+ STARTTEST -+ :"Test that nothing happens if the 'completefunc' opens -+ :"a new window (no completion, no crash) -+ :so small.vim -+ :function! DummyCompleteOne(findstart, base) -+ : if a:findstart -+ : return 0 -+ : else -+ : wincmd n -+ : return ['onedef', 'oneDEF'] -+ : endif -+ :endfunction -+ :setlocal completefunc=DummyCompleteOne -+ /^one -+ A:q! -+ :function! DummyCompleteTwo(findstart, base) -+ : if a:findstart -+ : wincmd n -+ : return 0 -+ : else -+ : return ['twodef', 'twoDEF'] -+ : endif -+ :endfunction -+ :setlocal completefunc=DummyCompleteTwo -+ /^two -+ A:q! -+ :"Test that 'completefunc' works when it's OK. -+ :function! DummyCompleteThree(findstart, base) -+ : if a:findstart -+ : return 0 -+ : else -+ : return ['threedef', 'threeDEF'] -+ : endif -+ :endfunction -+ :setlocal completefunc=DummyCompleteThree -+ /^three -+ A:/^+++/,/^three/w! test.out -+ :qa! -+ ENDTEST -+ -+ +++ -+ one -+ two -+ three -*** ../vim-7.3.051/src/testdir/test76.ok 2010-11-10 16:51:45.000000000 +0100 ---- src/testdir/test76.ok 2010-11-10 16:38:58.000000000 +0100 -*************** -*** 0 **** ---- 1,4 ---- -+ +++ -+ -+ two -+ threeDEF -*** ../vim-7.3.051/src/version.c 2010-11-10 15:37:00.000000000 +0100 ---- src/version.c 2010-11-10 16:40:29.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 52, - /**/ - --- -BRIDGEKEEPER: What is the air-speed velocity of an unladen swallow? -ARTHUR: What do you mean? An African or European swallow? -BRIDGEKEEPER: Er ... I don't know that ... Aaaaarrrrrrggghhh! - BRIDGEKEEPER is cast into the gorge. - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.053 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.053 -Problem: complete() function doesn't reset complete direction. Can't use - an empty string in the list of matches. -Solution: Set compl_direction to FORWARD. Add "empty" key to allow empty - words. (Kikuchan) -Files: src/edit.c - - -*** ../vim-7.3.052/src/edit.c 2010-11-10 16:54:16.000000000 +0100 ---- src/edit.c 2010-11-10 17:03:23.000000000 +0100 -*************** -*** 2662,2667 **** ---- 2662,2668 ---- - if (stop_arrow() == FAIL) - return; - -+ compl_direction = FORWARD; - if (startcol > curwin->w_cursor.col) - startcol = curwin->w_cursor.col; - compl_col = startcol; -*************** -*** 3909,3914 **** ---- 3910,3916 ---- - char_u *word; - int icase = FALSE; - int adup = FALSE; -+ int aempty = FALSE; - char_u *(cptext[CPT_COUNT]); - - if (tv->v_type == VAR_DICT && tv->vval.v_dict != NULL) -*************** -*** 3926,3938 **** - icase = get_dict_number(tv->vval.v_dict, (char_u *)"icase"); - if (get_dict_string(tv->vval.v_dict, (char_u *)"dup", FALSE) != NULL) - adup = get_dict_number(tv->vval.v_dict, (char_u *)"dup"); - } - else - { - word = get_tv_string_chk(tv); - vim_memset(cptext, 0, sizeof(cptext)); - } -! if (word == NULL || *word == NUL) - return FAIL; - return ins_compl_add(word, -1, icase, NULL, cptext, dir, 0, adup); - } ---- 3928,3942 ---- - icase = get_dict_number(tv->vval.v_dict, (char_u *)"icase"); - if (get_dict_string(tv->vval.v_dict, (char_u *)"dup", FALSE) != NULL) - adup = get_dict_number(tv->vval.v_dict, (char_u *)"dup"); -+ if (get_dict_string(tv->vval.v_dict, (char_u *)"empty", FALSE) != NULL) -+ aempty = get_dict_number(tv->vval.v_dict, (char_u *)"empty"); - } - else - { - word = get_tv_string_chk(tv); - vim_memset(cptext, 0, sizeof(cptext)); - } -! if (word == NULL || (!aempty && *word == NUL)) - return FAIL; - return ins_compl_add(word, -1, icase, NULL, cptext, dir, 0, adup); - } -*** ../vim-7.3.052/src/version.c 2010-11-10 16:54:16.000000000 +0100 ---- src/version.c 2010-11-10 17:10:39.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 53, - /**/ - --- -BEDEVERE: How do you know so much about swallows? -ARTHUR: Well you have to know these things when you're a king, you know. - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.054 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.054 -Problem: Can define a user command for :Print, but it doesn't work. (Aaron - Thoma) -Solution: Let user command :Print overrule the builtin command (Christian - Brabandt) Disallow :X and :Next as a user defined command. -Files: src/ex_docmd.c - - -*** ../vim-7.3.053/src/ex_docmd.c 2010-10-13 17:50:02.000000000 +0200 ---- src/ex_docmd.c 2010-11-10 18:33:18.000000000 +0100 -*************** -*** 2871,2878 **** - } - - #ifdef FEAT_USR_CMDS -! /* Look for a user defined command as a last resort */ -! if (eap->cmdidx == CMD_SIZE && *eap->cmd >= 'A' && *eap->cmd <= 'Z') - { - /* User defined commands may contain digits. */ - while (ASCII_ISALNUM(*p)) ---- 2871,2880 ---- - } - - #ifdef FEAT_USR_CMDS -! /* Look for a user defined command as a last resort. Let ":Print" be -! * overruled by a user defined command. */ -! if ((eap->cmdidx == CMD_SIZE || eap->cmdidx == CMD_Print) -! && *eap->cmd >= 'A' && *eap->cmd <= 'Z') - { - /* User defined commands may contain digits. */ - while (ASCII_ISALNUM(*p)) -*************** -*** 5588,5593 **** ---- 5590,5596 ---- - int compl = EXPAND_NOTHING; - char_u *compl_arg = NULL; - int has_attr = (eap->arg[0] == '-'); -+ int name_len; - - p = eap->arg; - -*************** -*** 5613,5618 **** ---- 5616,5622 ---- - return; - } - end = p; -+ name_len = (int)(end - name); - - /* If there is nothing after the name, and no attributes were specified, - * we are listing commands -*************** -*** 5627,5632 **** ---- 5631,5643 ---- - EMSG(_("E183: User defined commands must start with an uppercase letter")); - return; - } -+ else if ((name_len == 1 && *name == 'X') -+ || (name_len <= 4 -+ && STRNCMP(name, "Next", name_len > 4 ? 4 : name_len) == 0)) -+ { -+ EMSG(_("E841: Reserved name, cannot be used for user defined command")); -+ return; -+ } - else - uc_add_command(name, end - name, p, argt, def, flags, compl, compl_arg, - eap->forceit); -*************** -*** 9394,9400 **** - ex_ptag(eap) - exarg_T *eap; - { -! g_do_tagpreview = p_pvh; - ex_tag_cmd(eap, cmdnames[eap->cmdidx].cmd_name + 1); - } - ---- 9405,9411 ---- - ex_ptag(eap) - exarg_T *eap; - { -! g_do_tagpreview = p_pvh; /* will be reset to 0 in ex_tag_cmd() */ - ex_tag_cmd(eap, cmdnames[eap->cmdidx].cmd_name + 1); - } - -*** ../vim-7.3.053/src/version.c 2010-11-10 17:11:29.000000000 +0100 ---- src/version.c 2010-11-10 18:58:28.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 54, - /**/ - --- -You can be stopped by the police for biking over 65 miles per hour. -You are not allowed to walk across a street on your hands. - [real standing laws in Connecticut, United States of America] - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.055 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.055 -Problem: Recursively nested lists and dictionaries cause a near-endless - loop when comparing them with a copy. (ZyX) -Solution: Limit recursiveness in a way that non-recursive structures can - still be nested very deep. -Files: src/eval.c, src/testdir/test55.in, src/testdir/test55.ok - - -*** ../vim-7.3.054/src/eval.c 2010-10-20 21:22:17.000000000 +0200 ---- src/eval.c 2010-11-10 20:02:57.000000000 +0100 -*************** -*** 434,442 **** - static void listitem_free __ARGS((listitem_T *item)); - static void listitem_remove __ARGS((list_T *l, listitem_T *item)); - static long list_len __ARGS((list_T *l)); -! static int list_equal __ARGS((list_T *l1, list_T *l2, int ic)); -! static int dict_equal __ARGS((dict_T *d1, dict_T *d2, int ic)); -! static int tv_equal __ARGS((typval_T *tv1, typval_T *tv2, int ic)); - static listitem_T *list_find __ARGS((list_T *l, long n)); - static long list_find_nr __ARGS((list_T *l, long idx, int *errorp)); - static long list_idx_of_item __ARGS((list_T *l, listitem_T *item)); ---- 434,442 ---- - static void listitem_free __ARGS((listitem_T *item)); - static void listitem_remove __ARGS((list_T *l, listitem_T *item)); - static long list_len __ARGS((list_T *l)); -! static int list_equal __ARGS((list_T *l1, list_T *l2, int ic, int recursive)); -! static int dict_equal __ARGS((dict_T *d1, dict_T *d2, int ic, int recursive)); -! static int tv_equal __ARGS((typval_T *tv1, typval_T *tv2, int ic, int recursive)); - static listitem_T *list_find __ARGS((list_T *l, long n)); - static long list_find_nr __ARGS((list_T *l, long idx, int *errorp)); - static long list_idx_of_item __ARGS((list_T *l, listitem_T *item)); -*************** -*** 4350,4356 **** - else - { - /* Compare two Lists for being equal or unequal. */ -! n1 = list_equal(rettv->vval.v_list, var2.vval.v_list, ic); - if (type == TYPE_NEQUAL) - n1 = !n1; - } ---- 4350,4357 ---- - else - { - /* Compare two Lists for being equal or unequal. */ -! n1 = list_equal(rettv->vval.v_list, var2.vval.v_list, -! ic, FALSE); - if (type == TYPE_NEQUAL) - n1 = !n1; - } -*************** -*** 4379,4385 **** - else - { - /* Compare two Dictionaries for being equal or unequal. */ -! n1 = dict_equal(rettv->vval.v_dict, var2.vval.v_dict, ic); - if (type == TYPE_NEQUAL) - n1 = !n1; - } ---- 4380,4387 ---- - else - { - /* Compare two Dictionaries for being equal or unequal. */ -! n1 = dict_equal(rettv->vval.v_dict, var2.vval.v_dict, -! ic, FALSE); - if (type == TYPE_NEQUAL) - n1 = !n1; - } -*************** -*** 5914,5923 **** - * Return TRUE when two lists have exactly the same values. - */ - static int -! list_equal(l1, l2, ic) - list_T *l1; - list_T *l2; - int ic; /* ignore case for strings */ - { - listitem_T *item1, *item2; - ---- 5916,5926 ---- - * Return TRUE when two lists have exactly the same values. - */ - static int -! list_equal(l1, l2, ic, recursive) - list_T *l1; - list_T *l2; - int ic; /* ignore case for strings */ -+ int recursive; /* TRUE when used recursively */ - { - listitem_T *item1, *item2; - -*************** -*** 5931,5937 **** - for (item1 = l1->lv_first, item2 = l2->lv_first; - item1 != NULL && item2 != NULL; - item1 = item1->li_next, item2 = item2->li_next) -! if (!tv_equal(&item1->li_tv, &item2->li_tv, ic)) - return FALSE; - return item1 == NULL && item2 == NULL; - } ---- 5934,5940 ---- - for (item1 = l1->lv_first, item2 = l2->lv_first; - item1 != NULL && item2 != NULL; - item1 = item1->li_next, item2 = item2->li_next) -! if (!tv_equal(&item1->li_tv, &item2->li_tv, ic, recursive)) - return FALSE; - return item1 == NULL && item2 == NULL; - } -*************** -*** 5953,5962 **** - * Return TRUE when two dictionaries have exactly the same key/values. - */ - static int -! dict_equal(d1, d2, ic) - dict_T *d1; - dict_T *d2; - int ic; /* ignore case for strings */ - { - hashitem_T *hi; - dictitem_T *item2; ---- 5956,5966 ---- - * Return TRUE when two dictionaries have exactly the same key/values. - */ - static int -! dict_equal(d1, d2, ic, recursive) - dict_T *d1; - dict_T *d2; - int ic; /* ignore case for strings */ -+ int recursive; /* TRUE when used recursively */ - { - hashitem_T *hi; - dictitem_T *item2; -*************** -*** 5977,5983 **** - item2 = dict_find(d2, hi->hi_key, -1); - if (item2 == NULL) - return FALSE; -! if (!tv_equal(&HI2DI(hi)->di_tv, &item2->di_tv, ic)) - return FALSE; - --todo; - } ---- 5981,5987 ---- - item2 = dict_find(d2, hi->hi_key, -1); - if (item2 == NULL) - return FALSE; -! if (!tv_equal(&HI2DI(hi)->di_tv, &item2->di_tv, ic, recursive)) - return FALSE; - --todo; - } -*************** -*** 5985,6025 **** - return TRUE; - } - - /* - * Return TRUE if "tv1" and "tv2" have the same value. - * Compares the items just like "==" would compare them, but strings and - * numbers are different. Floats and numbers are also different. - */ - static int -! tv_equal(tv1, tv2, ic) - typval_T *tv1; - typval_T *tv2; -! int ic; /* ignore case */ - { - char_u buf1[NUMBUFLEN], buf2[NUMBUFLEN]; - char_u *s1, *s2; -! static int recursive = 0; /* cach recursive loops */ - int r; - - if (tv1->v_type != tv2->v_type) - return FALSE; - /* Catch lists and dicts that have an endless loop by limiting -! * recursiveness to 1000. We guess they are equal then. */ -! if (recursive >= 1000) - return TRUE; - - switch (tv1->v_type) - { - case VAR_LIST: -! ++recursive; -! r = list_equal(tv1->vval.v_list, tv2->vval.v_list, ic); -! --recursive; - return r; - - case VAR_DICT: -! ++recursive; -! r = dict_equal(tv1->vval.v_dict, tv2->vval.v_dict, ic); -! --recursive; - return r; - - case VAR_FUNC: ---- 5989,6042 ---- - return TRUE; - } - -+ static int tv_equal_recurse_limit; -+ - /* - * Return TRUE if "tv1" and "tv2" have the same value. - * Compares the items just like "==" would compare them, but strings and - * numbers are different. Floats and numbers are also different. - */ - static int -! tv_equal(tv1, tv2, ic, recursive) - typval_T *tv1; - typval_T *tv2; -! int ic; /* ignore case */ -! int recursive; /* TRUE when used recursively */ - { - char_u buf1[NUMBUFLEN], buf2[NUMBUFLEN]; - char_u *s1, *s2; -! static int recursive_cnt = 0; /* catch recursive loops */ - int r; - - if (tv1->v_type != tv2->v_type) - return FALSE; -+ - /* Catch lists and dicts that have an endless loop by limiting -! * recursiveness to a limit. We guess they are equal then. -! * A fixed limit has the problem of still taking an awful long time. -! * Reduce the limit every time running into it. That should work fine for -! * deeply linked structures that are not recursively linked and catch -! * recursiveness quickly. */ -! if (!recursive) -! tv_equal_recurse_limit = 1000; -! if (recursive_cnt >= tv_equal_recurse_limit) -! { -! --tv_equal_recurse_limit; - return TRUE; -+ } - - switch (tv1->v_type) - { - case VAR_LIST: -! ++recursive_cnt; -! r = list_equal(tv1->vval.v_list, tv2->vval.v_list, ic, TRUE); -! --recursive_cnt; - return r; - - case VAR_DICT: -! ++recursive_cnt; -! r = dict_equal(tv1->vval.v_dict, tv2->vval.v_dict, ic, TRUE); -! --recursive_cnt; - return r; - - case VAR_FUNC: -*************** -*** 9391,9397 **** - } - - for ( ; li != NULL; li = li->li_next) -! if (tv_equal(&li->li_tv, &argvars[1], ic)) - ++n; - } - } ---- 9408,9414 ---- - } - - for ( ; li != NULL; li = li->li_next) -! if (tv_equal(&li->li_tv, &argvars[1], ic, FALSE)) - ++n; - } - } -*************** -*** 9418,9424 **** - if (!HASHITEM_EMPTY(hi)) - { - --todo; -! if (tv_equal(&HI2DI(hi)->di_tv, &argvars[1], ic)) - ++n; - } - } ---- 9435,9441 ---- - if (!HASHITEM_EMPTY(hi)) - { - --todo; -! if (tv_equal(&HI2DI(hi)->di_tv, &argvars[1], ic, FALSE)) - ++n; - } - } -*************** -*** 12574,12580 **** - } - - for ( ; item != NULL; item = item->li_next, ++idx) -! if (tv_equal(&item->li_tv, &argvars[1], ic)) - { - rettv->vval.v_number = idx; - break; ---- 12591,12597 ---- - } - - for ( ; item != NULL; item = item->li_next, ++idx) -! if (tv_equal(&item->li_tv, &argvars[1], ic, FALSE)) - { - rettv->vval.v_number = idx; - break; -*** ../vim-7.3.054/src/testdir/test55.in 2010-08-15 21:57:29.000000000 +0200 ---- src/testdir/test55.in 2010-11-10 20:15:27.000000000 +0100 -*************** -*** 342,348 **** ---- 342,359 ---- - :$put =(d == d) - :$put =(l != deepcopy(l)) - :$put =(d != deepcopy(d)) -+ :" -+ :" compare complex recursively linked list and dict -+ :let l = [] -+ :call add(l, l) -+ :let dict4 = {"l": l} -+ :call add(dict4.l, dict4) -+ :let lcopy = deepcopy(l) -+ :let dict4copy = deepcopy(dict4) -+ :$put =(l == lcopy) -+ :$put =(dict4 == dict4copy) - :endfun -+ :" - :call Test(1, 2, [3, 4], {5: 6}) " This may take a while - :" - :delfunc Test -*** ../vim-7.3.054/src/testdir/test55.ok 2010-08-15 21:57:29.000000000 +0200 ---- src/testdir/test55.ok 2010-11-10 20:16:37.000000000 +0100 -*************** -*** 109,111 **** ---- 109,113 ---- - 1 - 0 - 0 -+ 1 -+ 1 -*** ../vim-7.3.054/src/version.c 2010-11-10 18:59:50.000000000 +0100 ---- src/version.c 2010-11-10 20:10:51.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 55, - /**/ - --- -A special law prohibits unmarried women from parachuting on Sunday or she -shall risk arrest, fine, and/or jailing. - [real standing law in Florida, United States of America] - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.056 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.056 -Problem: "getline" argument in do_cmdline() shadows global. -Solution: Rename the argument. -Files: src/ex_docmd.c - - -*** ../vim-7.3.055/src/ex_docmd.c 2010-11-10 18:59:50.000000000 +0100 ---- src/ex_docmd.c 2010-11-16 11:24:40.000000000 +0100 -*************** -*** 733,739 **** - * do_cmdline(): execute one Ex command line - * - * 1. Execute "cmdline" when it is not NULL. -! * If "cmdline" is NULL, or more lines are needed, getline() is used. - * 2. Split up in parts separated with '|'. - * - * This function can be called recursively! ---- 733,739 ---- - * do_cmdline(): execute one Ex command line - * - * 1. Execute "cmdline" when it is not NULL. -! * If "cmdline" is NULL, or more lines are needed, fgetline() is used. - * 2. Split up in parts separated with '|'. - * - * This function can be called recursively! -*************** -*** 741,747 **** - * flags: - * DOCMD_VERBOSE - The command will be included in the error message. - * DOCMD_NOWAIT - Don't call wait_return() and friends. -! * DOCMD_REPEAT - Repeat execution until getline() returns NULL. - * DOCMD_KEYTYPED - Don't reset KeyTyped. - * DOCMD_EXCRESET - Reset the exception environment (used for debugging). - * DOCMD_KEEPLINE - Store first typed line (for repeating with "."). ---- 741,747 ---- - * flags: - * DOCMD_VERBOSE - The command will be included in the error message. - * DOCMD_NOWAIT - Don't call wait_return() and friends. -! * DOCMD_REPEAT - Repeat execution until fgetline() returns NULL. - * DOCMD_KEYTYPED - Don't reset KeyTyped. - * DOCMD_EXCRESET - Reset the exception environment (used for debugging). - * DOCMD_KEEPLINE - Store first typed line (for repeating with "."). -*************** -*** 749,763 **** - * return FAIL if cmdline could not be executed, OK otherwise - */ - int -! do_cmdline(cmdline, getline, cookie, flags) - char_u *cmdline; -! char_u *(*getline) __ARGS((int, void *, int)); -! void *cookie; /* argument for getline() */ - int flags; - { - char_u *next_cmdline; /* next cmd to execute */ - char_u *cmdline_copy = NULL; /* copy of cmd line */ -! int used_getline = FALSE; /* used "getline" to obtain command */ - static int recursive = 0; /* recursive depth */ - int msg_didout_before_start = 0; - int count = 0; /* line number count */ ---- 749,763 ---- - * return FAIL if cmdline could not be executed, OK otherwise - */ - int -! do_cmdline(cmdline, fgetline, cookie, flags) - char_u *cmdline; -! char_u *(*fgetline) __ARGS((int, void *, int)); -! void *cookie; /* argument for fgetline() */ - int flags; - { - char_u *next_cmdline; /* next cmd to execute */ - char_u *cmdline_copy = NULL; /* copy of cmd line */ -! int used_getline = FALSE; /* used "fgetline" to obtain command */ - static int recursive = 0; /* recursive depth */ - int msg_didout_before_start = 0; - int count = 0; /* line number count */ -*************** -*** 775,788 **** - struct msglist **saved_msg_list = NULL; - struct msglist *private_msg_list; - -! /* "getline" and "cookie" passed to do_one_cmd() */ - char_u *(*cmd_getline) __ARGS((int, void *, int)); - void *cmd_cookie; - struct loop_cookie cmd_loop_cookie; - void *real_cookie; - int getline_is_func; - #else -! # define cmd_getline getline - # define cmd_cookie cookie - #endif - static int call_depth = 0; /* recursiveness */ ---- 775,788 ---- - struct msglist **saved_msg_list = NULL; - struct msglist *private_msg_list; - -! /* "fgetline" and "cookie" passed to do_one_cmd() */ - char_u *(*cmd_getline) __ARGS((int, void *, int)); - void *cmd_cookie; - struct loop_cookie cmd_loop_cookie; - void *real_cookie; - int getline_is_func; - #else -! # define cmd_getline fgetline - # define cmd_cookie cookie - #endif - static int call_depth = 0; /* recursiveness */ -*************** -*** 822,831 **** - cstack.cs_lflags = 0; - ga_init2(&lines_ga, (int)sizeof(wcmd_T), 10); - -! real_cookie = getline_cookie(getline, cookie); - - /* Inside a function use a higher nesting level. */ -! getline_is_func = getline_equal(getline, cookie, get_func_line); - if (getline_is_func && ex_nesting_level == func_level(real_cookie)) - ++ex_nesting_level; - ---- 822,831 ---- - cstack.cs_lflags = 0; - ga_init2(&lines_ga, (int)sizeof(wcmd_T), 10); - -! real_cookie = getline_cookie(fgetline, cookie); - - /* Inside a function use a higher nesting level. */ -! getline_is_func = getline_equal(fgetline, cookie, get_func_line); - if (getline_is_func && ex_nesting_level == func_level(real_cookie)) - ++ex_nesting_level; - -*************** -*** 837,843 **** - breakpoint = func_breakpoint(real_cookie); - dbg_tick = func_dbg_tick(real_cookie); - } -! else if (getline_equal(getline, cookie, getsourceline)) - { - fname = sourcing_name; - breakpoint = source_breakpoint(real_cookie); ---- 837,843 ---- - breakpoint = func_breakpoint(real_cookie); - dbg_tick = func_dbg_tick(real_cookie); - } -! else if (getline_equal(fgetline, cookie, getsourceline)) - { - fname = sourcing_name; - breakpoint = source_breakpoint(real_cookie); -*************** -*** 881,887 **** - * KeyTyped is only set when calling vgetc(). Reset it here when not - * calling vgetc() (sourced command lines). - */ -! if (!(flags & DOCMD_KEYTYPED) && !getline_equal(getline, cookie, getexline)) - KeyTyped = FALSE; - - /* ---- 881,888 ---- - * KeyTyped is only set when calling vgetc(). Reset it here when not - * calling vgetc() (sourced command lines). - */ -! if (!(flags & DOCMD_KEYTYPED) -! && !getline_equal(fgetline, cookie, getexline)) - KeyTyped = FALSE; - - /* -*************** -*** 894,900 **** - do - { - #ifdef FEAT_EVAL -! getline_is_func = getline_equal(getline, cookie, get_func_line); - #endif - - /* stop skipping cmds for an error msg after all endif/while/for */ ---- 895,901 ---- - do - { - #ifdef FEAT_EVAL -! getline_is_func = getline_equal(fgetline, cookie, get_func_line); - #endif - - /* stop skipping cmds for an error msg after all endif/while/for */ -*************** -*** 909,915 **** - - /* - * 1. If repeating a line in a loop, get a line from lines_ga. -! * 2. If no line given: Get an allocated line with getline(). - * 3. If a line is given: Make a copy, so we can mess with it. - */ - ---- 910,916 ---- - - /* - * 1. If repeating a line in a loop, get a line from lines_ga. -! * 2. If no line given: Get an allocated line with fgetline(). - * 3. If a line is given: Make a copy, so we can mess with it. - */ - -*************** -*** 938,949 **** - } - #ifdef FEAT_PROFILE - else if (do_profiling == PROF_YES -! && getline_equal(getline, cookie, getsourceline)) - script_line_end(); - #endif - - /* Check if a sourced file hit a ":finish" command. */ -! if (source_finished(getline, cookie)) - { - retval = FAIL; - break; ---- 939,950 ---- - } - #ifdef FEAT_PROFILE - else if (do_profiling == PROF_YES -! && getline_equal(fgetline, cookie, getsourceline)) - script_line_end(); - #endif - - /* Check if a sourced file hit a ":finish" command. */ -! if (source_finished(fgetline, cookie)) - { - retval = FAIL; - break; -*************** -*** 954,960 **** - && *dbg_tick != debug_tick) - { - *breakpoint = dbg_find_breakpoint( -! getline_equal(getline, cookie, getsourceline), - fname, sourcing_lnum); - *dbg_tick = debug_tick; - } ---- 955,961 ---- - && *dbg_tick != debug_tick) - { - *breakpoint = dbg_find_breakpoint( -! getline_equal(fgetline, cookie, getsourceline), - fname, sourcing_lnum); - *dbg_tick = debug_tick; - } -*************** -*** 969,975 **** - dbg_breakpoint(fname, sourcing_lnum); - /* Find next breakpoint. */ - *breakpoint = dbg_find_breakpoint( -! getline_equal(getline, cookie, getsourceline), - fname, sourcing_lnum); - *dbg_tick = debug_tick; - } ---- 970,976 ---- - dbg_breakpoint(fname, sourcing_lnum); - /* Find next breakpoint. */ - *breakpoint = dbg_find_breakpoint( -! getline_equal(fgetline, cookie, getsourceline), - fname, sourcing_lnum); - *dbg_tick = debug_tick; - } -*************** -*** 978,984 **** - { - if (getline_is_func) - func_line_start(real_cookie); -! else if (getline_equal(getline, cookie, getsourceline)) - script_line_start(); - } - # endif ---- 979,985 ---- - { - if (getline_is_func) - func_line_start(real_cookie); -! else if (getline_equal(fgetline, cookie, getsourceline)) - script_line_start(); - } - # endif -*************** -*** 987,993 **** - if (cstack.cs_looplevel > 0) - { - /* Inside a while/for loop we need to store the lines and use them -! * again. Pass a different "getline" function to do_one_cmd() - * below, so that it stores lines in or reads them from - * "lines_ga". Makes it possible to define a function inside a - * while/for loop. */ ---- 988,994 ---- - if (cstack.cs_looplevel > 0) - { - /* Inside a while/for loop we need to store the lines and use them -! * again. Pass a different "fgetline" function to do_one_cmd() - * below, so that it stores lines in or reads them from - * "lines_ga". Makes it possible to define a function inside a - * while/for loop. */ -*************** -*** 995,1021 **** - cmd_cookie = (void *)&cmd_loop_cookie; - cmd_loop_cookie.lines_gap = &lines_ga; - cmd_loop_cookie.current_line = current_line; -! cmd_loop_cookie.getline = getline; - cmd_loop_cookie.cookie = cookie; - cmd_loop_cookie.repeating = (current_line < lines_ga.ga_len); - } - else - { -! cmd_getline = getline; - cmd_cookie = cookie; - } - #endif - -! /* 2. If no line given, get an allocated line with getline(). */ - if (next_cmdline == NULL) - { - /* - * Need to set msg_didout for the first line after an ":if", - * otherwise the ":if" will be overwritten. - */ -! if (count == 1 && getline_equal(getline, cookie, getexline)) - msg_didout = TRUE; -! if (getline == NULL || (next_cmdline = getline(':', cookie, - #ifdef FEAT_EVAL - cstack.cs_idx < 0 ? 0 : (cstack.cs_idx + 1) * 2 - #else ---- 996,1022 ---- - cmd_cookie = (void *)&cmd_loop_cookie; - cmd_loop_cookie.lines_gap = &lines_ga; - cmd_loop_cookie.current_line = current_line; -! cmd_loop_cookie.getline = fgetline; - cmd_loop_cookie.cookie = cookie; - cmd_loop_cookie.repeating = (current_line < lines_ga.ga_len); - } - else - { -! cmd_getline = fgetline; - cmd_cookie = cookie; - } - #endif - -! /* 2. If no line given, get an allocated line with fgetline(). */ - if (next_cmdline == NULL) - { - /* - * Need to set msg_didout for the first line after an ":if", - * otherwise the ":if" will be overwritten. - */ -! if (count == 1 && getline_equal(fgetline, cookie, getexline)) - msg_didout = TRUE; -! if (fgetline == NULL || (next_cmdline = fgetline(':', cookie, - #ifdef FEAT_EVAL - cstack.cs_idx < 0 ? 0 : (cstack.cs_idx + 1) * 2 - #else -*************** -*** 1142,1148 **** - * If the command was typed, remember it for the ':' register. - * Do this AFTER executing the command to make :@: work. - */ -! if (getline_equal(getline, cookie, getexline) - && new_last_cmdline != NULL) - { - vim_free(last_cmdline); ---- 1143,1149 ---- - * If the command was typed, remember it for the ':' register. - * Do this AFTER executing the command to make :@: work. - */ -! if (getline_equal(fgetline, cookie, getexline) - && new_last_cmdline != NULL) - { - vim_free(last_cmdline); -*************** -*** 1163,1169 **** - #ifdef FEAT_EVAL - /* reset did_emsg for a function that is not aborted by an error */ - if (did_emsg && !force_abort -! && getline_equal(getline, cookie, get_func_line) - && !func_has_abort(real_cookie)) - did_emsg = FALSE; - ---- 1164,1170 ---- - #ifdef FEAT_EVAL - /* reset did_emsg for a function that is not aborted by an error */ - if (did_emsg && !force_abort -! && getline_equal(fgetline, cookie, get_func_line) - && !func_has_abort(real_cookie)) - did_emsg = FALSE; - -*************** -*** 1202,1208 **** - if (breakpoint != NULL) - { - *breakpoint = dbg_find_breakpoint( -! getline_equal(getline, cookie, getsourceline), - fname, - ((wcmd_T *)lines_ga.ga_data)[current_line].lnum-1); - *dbg_tick = debug_tick; ---- 1203,1209 ---- - if (breakpoint != NULL) - { - *breakpoint = dbg_find_breakpoint( -! getline_equal(fgetline, cookie, getsourceline), - fname, - ((wcmd_T *)lines_ga.ga_data)[current_line].lnum-1); - *dbg_tick = debug_tick; -*************** -*** 1296,1303 **** - #endif - ) - && !(did_emsg && used_getline -! && (getline_equal(getline, cookie, getexmodeline) -! || getline_equal(getline, cookie, getexline))) - && (next_cmdline != NULL - #ifdef FEAT_EVAL - || cstack.cs_idx >= 0 ---- 1297,1304 ---- - #endif - ) - && !(did_emsg && used_getline -! && (getline_equal(fgetline, cookie, getexmodeline) -! || getline_equal(fgetline, cookie, getexline))) - && (next_cmdline != NULL - #ifdef FEAT_EVAL - || cstack.cs_idx >= 0 -*************** -*** 1316,1324 **** - * unclosed conditional. - */ - if (!got_int && !did_throw -! && ((getline_equal(getline, cookie, getsourceline) -! && !source_finished(getline, cookie)) -! || (getline_equal(getline, cookie, get_func_line) - && !func_has_ended(real_cookie)))) - { - if (cstack.cs_flags[cstack.cs_idx] & CSF_TRY) ---- 1317,1325 ---- - * unclosed conditional. - */ - if (!got_int && !did_throw -! && ((getline_equal(fgetline, cookie, getsourceline) -! && !source_finished(fgetline, cookie)) -! || (getline_equal(fgetline, cookie, get_func_line) - && !func_has_ended(real_cookie)))) - { - if (cstack.cs_flags[cstack.cs_idx] & CSF_TRY) -*************** -*** 1354,1360 **** - /* If a missing ":endtry", ":endwhile", ":endfor", or ":endif" or a memory - * lack was reported above and the error message is to be converted to an - * exception, do this now after rewinding the cstack. */ -! do_errthrow(&cstack, getline_equal(getline, cookie, get_func_line) - ? (char_u *)"endfunction" : (char_u *)NULL); - - if (trylevel == 0) ---- 1355,1361 ---- - /* If a missing ":endtry", ":endwhile", ":endfor", or ":endif" or a memory - * lack was reported above and the error message is to be converted to an - * exception, do this now after rewinding the cstack. */ -! do_errthrow(&cstack, getline_equal(fgetline, cookie, get_func_line) - ? (char_u *)"endfunction" : (char_u *)NULL); - - if (trylevel == 0) -*************** -*** 1449,1457 **** - */ - if (did_throw) - need_rethrow = TRUE; -! if ((getline_equal(getline, cookie, getsourceline) - && ex_nesting_level > source_level(real_cookie)) -! || (getline_equal(getline, cookie, get_func_line) - && ex_nesting_level > func_level(real_cookie) + 1)) - { - if (!did_throw) ---- 1450,1458 ---- - */ - if (did_throw) - need_rethrow = TRUE; -! if ((getline_equal(fgetline, cookie, getsourceline) - && ex_nesting_level > source_level(real_cookie)) -! || (getline_equal(fgetline, cookie, get_func_line) - && ex_nesting_level > func_level(real_cookie) + 1)) - { - if (!did_throw) -*************** -*** 1460,1475 **** - else - { - /* When leaving a function, reduce nesting level. */ -! if (getline_equal(getline, cookie, get_func_line)) - --ex_nesting_level; - /* - * Go to debug mode when returning from a function in which we are - * single-stepping. - */ -! if ((getline_equal(getline, cookie, getsourceline) -! || getline_equal(getline, cookie, get_func_line)) - && ex_nesting_level + 1 <= debug_break_level) -! do_debug(getline_equal(getline, cookie, getsourceline) - ? (char_u *)_("End of sourced file") - : (char_u *)_("End of function")); - } ---- 1461,1476 ---- - else - { - /* When leaving a function, reduce nesting level. */ -! if (getline_equal(fgetline, cookie, get_func_line)) - --ex_nesting_level; - /* - * Go to debug mode when returning from a function in which we are - * single-stepping. - */ -! if ((getline_equal(fgetline, cookie, getsourceline) -! || getline_equal(fgetline, cookie, get_func_line)) - && ex_nesting_level + 1 <= debug_break_level) -! do_debug(getline_equal(fgetline, cookie, getsourceline) - ? (char_u *)_("End of sourced file") - : (char_u *)_("End of function")); - } -*** ../vim-7.3.055/src/version.c 2010-11-16 11:28:33.000000000 +0100 ---- src/version.c 2010-11-16 11:27:09.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 56, - /**/ - --- -Lawmakers made it obligatory for everybody to take at least one bath -each week -- on Saturday night. - [real standing law in Vermont, United States of America] - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.057 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.057 -Problem: Segfault with command line abbreviation. (Randy Morris) -Solution: Don't retrigger the abbreviation when abandoning the command line. - Continue editing the command line after the error. -Files: src/ex_getln.c - - -*** ../vim-7.3.056/src/ex_getln.c 2010-11-10 15:37:00.000000000 +0100 ---- src/ex_getln.c 2010-11-16 14:03:09.000000000 +0100 -*************** -*** 712,718 **** - } - } - beep_flush(); -! c = ESC; - } - #endif - else ---- 712,722 ---- - } - } - beep_flush(); -! got_int = FALSE; /* don't abandon the command line */ -! did_emsg = FALSE; -! emsg_on_display = FALSE; -! redrawcmd(); -! goto cmdline_not_changed; - } - #endif - else -*** ../vim-7.3.056/src/version.c 2010-11-16 11:29:30.000000000 +0100 ---- src/version.c 2010-11-16 14:04:25.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 57, - /**/ - --- -FROG: How you English say: I one more time, mac, I unclog my nose towards - you, sons of a window-dresser, so, you think you could out-clever us - French fellows with your silly knees-bent creeping about advancing - behaviour. (blows a raspberry) I wave my private parts at your aunties, - you brightly-coloured, mealy-templed, cranberry-smelling, electric - donkey-bottom biters. - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.058 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.058 -Problem: Error "code converter not found" when loading Ruby script. -Solution: Load Gem module. (Yasuhiro Matsumoto) -Files: src/if_ruby.c - - -*** ../vim-7.3.057/src/if_ruby.c 2010-10-27 17:40:53.000000000 +0200 ---- src/if_ruby.c 2010-11-16 14:37:48.000000000 +0100 -*************** -*** 229,234 **** ---- 229,237 ---- - # define rb_enc_find_index dll_rb_enc_find_index - # define rb_enc_find dll_rb_enc_find - # define rb_enc_str_new dll_rb_enc_str_new -+ # define rb_intern2 dll_rb_intern2 -+ # define rb_const_remove dll_rb_const_remove -+ # define Init_prelude dll_Init_prelude - # define rb_sprintf dll_rb_sprintf - # define ruby_init_stack dll_ruby_init_stack - #endif -*************** -*** 317,322 **** ---- 320,328 ---- - static int (*dll_rb_enc_find_index) (const char*); - static rb_encoding* (*dll_rb_enc_find) (const char*); - static VALUE (*dll_rb_enc_str_new) (const char*, long, rb_encoding*); -+ static ID (*dll_rb_intern2) (const char*, long); -+ static void (*dll_Init_prelude) (void); -+ static VALUE (*dll_rb_const_remove) (VALUE, ID); - static VALUE (*dll_rb_sprintf) (const char*, ...); - static void (*ruby_init_stack)(VALUE*); - #endif -*************** -*** 425,430 **** ---- 431,439 ---- - {"rb_enc_find_index", (RUBY_PROC*)&dll_rb_enc_find_index}, - {"rb_enc_find", (RUBY_PROC*)&dll_rb_enc_find}, - {"rb_enc_str_new", (RUBY_PROC*)&dll_rb_enc_str_new}, -+ {"rb_intern2", (RUBY_PROC*)&dll_rb_intern2}, -+ {"rb_const_remove", (RUBY_PROC*)&dll_rb_const_remove}, -+ {"Init_prelude", (RUBY_PROC*)&dll_Init_prelude}, - {"rb_sprintf", (RUBY_PROC*)&dll_rb_sprintf}, - {"ruby_init_stack", (RUBY_PROC*)&dll_ruby_init_stack}, - #endif -*************** -*** 662,667 **** ---- 671,682 ---- - ruby_io_init(); - #ifdef RUBY19_OR_LATER - rb_enc_find_index("encdb"); -+ -+ /* This avoids the error "Encoding::ConverterNotFoundError: code -+ * converter not found (UTF-16LE to ASCII-8BIT)". */ -+ rb_define_module("Gem"); -+ Init_prelude(); -+ rb_const_remove(rb_cObject, rb_intern2("TMP_RUBY_PREFIX", 15)); - #endif - ruby_vim_init(); - ruby_initialized = 1; -*************** -*** 946,958 **** - - static VALUE get_buffer_line(buf_T *buf, linenr_T n) - { -! if (n > 0 && n <= buf->b_ml.ml_line_count) -! { -! char *line = (char *)ml_get_buf(buf, n, FALSE); -! return line ? vim_str2rb_enc_str(line) : Qnil; -! } -! rb_raise(rb_eIndexError, "line number %ld out of range", (long)n); -! return Qnil; /* For stop warning */ - } - - static VALUE buffer_aref(VALUE self, VALUE num) ---- 961,969 ---- - - static VALUE get_buffer_line(buf_T *buf, linenr_T n) - { -! if (n <= 0 || n > buf->b_ml.ml_line_count) -! rb_raise(rb_eIndexError, "line number %ld out of range", (long)n); -! return vim_str2rb_enc_str((char *)ml_get_buf(buf, n, FALSE)); - } - - static VALUE buffer_aref(VALUE self, VALUE num) -*************** -*** 991,999 **** - else - { - rb_raise(rb_eIndexError, "line number %ld out of range", (long)n); -- #ifndef __GNUC__ -- return Qnil; /* For stop warning */ -- #endif - } - return str; - } ---- 1002,1007 ---- -*************** -*** 1048,1054 **** - long n = NUM2LONG(num); - aco_save_T aco; - -! if (line == NULL) { - rb_raise(rb_eIndexError, "NULL line"); - } - else if (n >= 0 && n <= buf->b_ml.ml_line_count) ---- 1056,1063 ---- - long n = NUM2LONG(num); - aco_save_T aco; - -! if (line == NULL) -! { - rb_raise(rb_eIndexError, "NULL line"); - } - else if (n >= 0 && n <= buf->b_ml.ml_line_count) -*************** -*** 1072,1078 **** - - update_curbuf(NOT_VALID); - } -! else { - rb_raise(rb_eIndexError, "line number %ld out of range", n); - } - return str; ---- 1081,1088 ---- - - update_curbuf(NOT_VALID); - } -! else -! { - rb_raise(rb_eIndexError, "line number %ld out of range", n); - } - return str; -*** ../vim-7.3.057/src/version.c 2010-11-16 14:05:48.000000000 +0100 ---- src/version.c 2010-11-16 14:44:42.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 58, - /**/ - --- -SIGIRO -- irony detected (iron core dumped) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.059 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.059 -Problem: Netbeans: Problem with recursively handling messages for Athena - and Motif. -Solution: Call netbeans_parse_messages() in the main loop, like it's done - for GTK. (Xavier de Gaye) -Files: src/gui_x11.c, src/netbeans.c - - -*** ../vim-7.3.058/src/gui_x11.c 2010-08-15 21:57:25.000000000 +0200 ---- src/gui_x11.c 2010-11-16 14:53:18.000000000 +0100 -*************** -*** 2895,2900 **** ---- 2895,2905 ---- - focus = gui.in_focus; - } - -+ #if defined(FEAT_NETBEANS_INTG) -+ /* Process any queued netbeans messages. */ -+ netbeans_parse_messages(); -+ #endif -+ - /* - * Don't use gui_mch_update() because then we will spin-lock until a - * char arrives, instead we use XtAppProcessEvent() to hang until an -*** ../vim-7.3.058/src/netbeans.c 2010-09-30 21:03:13.000000000 +0200 ---- src/netbeans.c 2010-11-16 14:52:55.000000000 +0100 -*************** -*** 726,734 **** - static char_u *buf = NULL; - int len = 0; - int readlen = 0; -- #if defined(NB_HAS_GUI) && !defined(FEAT_GUI_GTK) && !defined(FEAT_GUI_W32) -- static int level = 0; -- #endif - #ifdef HAVE_SELECT - struct timeval tval; - fd_set rfds; ---- 726,731 ---- -*************** -*** 744,756 **** - return; - } - -- #if defined(NB_HAS_GUI) && !defined(FEAT_GUI_GTK) && !defined(FEAT_GUI_W32) -- /* recursion guard; this will be called from the X event loop at unknown -- * moments */ -- if (NB_HAS_GUI) -- ++level; -- #endif -- - /* Allocate a buffer to read into. */ - if (buf == NULL) - { ---- 741,746 ---- -*************** -*** 803,823 **** - return; /* don't try to parse it */ - } - -! #if defined(NB_HAS_GUI) && !defined(FEAT_GUI_W32) -! /* Let the main loop handle messages. */ -! if (NB_HAS_GUI) -! { -! # ifdef FEAT_GUI_GTK -! if (gtk_main_level() > 0) -! gtk_main_quit(); -! # else -! /* Parse the messages now, but avoid recursion. */ -! if (level == 1) -! netbeans_parse_messages(); -! -! --level; -! # endif -! } - #endif - } - ---- 793,801 ---- - return; /* don't try to parse it */ - } - -! #if defined(NB_HAS_GUI) && defined(FEAT_GUI_GTK) -! if (NB_HAS_GUI && gtk_main_level() > 0) -! gtk_main_quit(); - #endif - } - -*** ../vim-7.3.058/src/version.c 2010-11-16 14:46:14.000000000 +0100 ---- src/version.c 2010-11-16 14:50:57.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 59, - /**/ - - --- -ARTHUR: If you do not open these doors, we will take this castle by force ... - [A bucket of slops land on ARTHUR. He tries to retain his dignity.] - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.060 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.060 -Problem: Netbeans: crash when socket is disconnected unexpectedly. -Solution: Don't cleanup when a read fails, put a message in the queue and - disconnect later. (Xavier de Gaye) -Files: src/netbeans.c - - -*** ../vim-7.3.059/src/netbeans.c 2010-11-16 15:04:51.000000000 +0100 ---- src/netbeans.c 2010-11-16 15:48:36.000000000 +0100 -*************** -*** 135,148 **** - static int needupdate = 0; - static int inAtomic = 0; - - static void -! netbeans_close(void) - { -- if (!NETBEANS_OPEN) -- return; -- -- netbeans_send_disconnect(); -- - #ifdef FEAT_GUI_X11 - if (inputHandler != (XtInputId)NULL) - { ---- 135,146 ---- - static int needupdate = 0; - static int inAtomic = 0; - -+ /* -+ * Close the socket and remove the input handlers. -+ */ - static void -! nb_close_socket(void) - { - #ifdef FEAT_GUI_X11 - if (inputHandler != (XtInputId)NULL) - { -*************** -*** 167,179 **** - # endif - #endif - - #ifdef FEAT_BEVAL - bevalServers &= ~BEVAL_NETBEANS; - #endif - -- sock_close(nbsock); -- nbsock = -1; -- - needupdate = 0; - inAtomic = 0; - nb_free(); ---- 165,191 ---- - # endif - #endif - -+ sock_close(nbsock); -+ nbsock = -1; -+ } -+ -+ /* -+ * Close the connection and cleanup. -+ * May be called when nb_close_socket() was called earlier. -+ */ -+ static void -+ netbeans_close(void) -+ { -+ if (NETBEANS_OPEN) -+ { -+ netbeans_send_disconnect(); -+ nb_close_socket(); -+ } -+ - #ifdef FEAT_BEVAL - bevalServers &= ~BEVAL_NETBEANS; - #endif - - needupdate = 0; - inAtomic = 0; - nb_free(); -*************** -*** 632,640 **** - char_u *p; - queue_T *node; - -- if (!NETBEANS_OPEN) -- return; -- - while (head.next != NULL && head.next != &head) - { - node = head.next; ---- 644,649 ---- -*************** -*** 720,725 **** ---- 729,736 ---- - } - #endif - -+ #define DETACH_MSG "DETACH\n" -+ - void - netbeans_read() - { -*************** -*** 780,801 **** - break; /* did read everything that's available */ - } - - if (readlen <= 0) - { -! /* read error or didn't read anything */ -! netbeans_close(); -! nbdebug(("messageFromNetbeans: Error in read() from socket\n")); - if (len < 0) - { - nbdebug(("read from Netbeans socket\n")); - PERROR(_("read from Netbeans socket")); - } -- return; /* don't try to parse it */ - } - - #if defined(NB_HAS_GUI) && defined(FEAT_GUI_GTK) - if (NB_HAS_GUI && gtk_main_level() > 0) -! gtk_main_quit(); - #endif - } - ---- 791,822 ---- - break; /* did read everything that's available */ - } - -+ /* Reading a socket disconnection (readlen == 0), or a socket error. */ - if (readlen <= 0) - { -! /* Queue a "DETACH" netbeans message in the command queue in order to -! * terminate the netbeans session later. Do not end the session here -! * directly as we may be running in the context of a call to -! * netbeans_parse_messages(): -! * netbeans_parse_messages -! * -> autocmd triggered while processing the netbeans cmd -! * -> ui_breakcheck -! * -> gui event loop or select loop -! * -> netbeans_read() -! */ -! save((char_u *)DETACH_MSG, strlen(DETACH_MSG)); -! nb_close_socket(); -! - if (len < 0) - { - nbdebug(("read from Netbeans socket\n")); - PERROR(_("read from Netbeans socket")); - } - } - - #if defined(NB_HAS_GUI) && defined(FEAT_GUI_GTK) - if (NB_HAS_GUI && gtk_main_level() > 0) -! gtk_main_quit(); - #endif - } - -*************** -*** 1164,1169 **** ---- 1185,1194 ---- - - nbdebug(("REP %d: <none>\n", cmdno)); - -+ /* Avoid printing an annoying error message. */ -+ if (!NETBEANS_OPEN) -+ return; -+ - sprintf(reply, "%d\n", cmdno); - nb_send(reply, "nb_reply_nil"); - } -*************** -*** 2753,2763 **** - { - #ifdef FEAT_GUI - # if !defined(FEAT_GUI_X11) && !defined(FEAT_GUI_GTK) \ -! && !defined(FEAT_GUI_W32) - if (gui.in_use) - { -! EMSG(_("E838: netbeans is not supported with this GUI")); -! return; - } - # endif - #endif ---- 2778,2788 ---- - { - #ifdef FEAT_GUI - # if !defined(FEAT_GUI_X11) && !defined(FEAT_GUI_GTK) \ -! && !defined(FEAT_GUI_W32) - if (gui.in_use) - { -! EMSG(_("E838: netbeans is not supported with this GUI")); -! return; - } - # endif - #endif -*** ../vim-7.3.059/src/version.c 2010-11-16 15:04:51.000000000 +0100 ---- src/version.c 2010-11-16 15:22:39.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 60, - /**/ - --- - Another bucket of what can only be described as human ordure hits ARTHUR. -ARTHUR: ... Right! (to the KNIGHTS) That settles it! - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.061 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.061 -Problem: Remote ":drop" does not respect 'autochdir'. (Peter Odding) -Solution: Don't restore the directory when 'autochdir' is set. (Benjamin - Fritz) -Files: src/main.c - - -*** ../vim-7.3.060/src/main.c 2010-09-29 17:26:57.000000000 +0200 ---- src/main.c 2010-11-16 16:16:11.000000000 +0100 -*************** -*** 3817,3822 **** ---- 3817,3824 ---- - /* Check if we have at least one argument. */ - if (filec <= 0) - mainerr_arg_missing((char_u *)filev[-1]); -+ -+ /* Temporarily cd to the current directory to handle relative file names. */ - if (mch_dirname(cwd, MAXPATHL) != OK) - return NULL; - if ((p = vim_strsave_escaped_ext(cwd, -*************** -*** 3858,3870 **** - ga_concat(&ga, p); - vim_free(p); - } - /* The :drop commands goes to Insert mode when 'insertmode' is set, use - * CTRL-\ CTRL-N again. */ -! ga_concat(&ga, (char_u *)"|if exists('*inputrestore')|call inputrestore()|endif<CR>"); -! ga_concat(&ga, (char_u *)"<C-\\><C-N>:cd -"); - if (sendReply) -! ga_concat(&ga, (char_u *)"<CR>:call SetupRemoteReplies()"); -! ga_concat(&ga, (char_u *)"<CR>:"); - if (inicmd != NULL) - { - /* Can't use <CR> after "inicmd", because an "startinsert" would cause ---- 3860,3879 ---- - ga_concat(&ga, p); - vim_free(p); - } -+ ga_concat(&ga, (char_u *)"|if exists('*inputrestore')|call inputrestore()|endif<CR>"); -+ - /* The :drop commands goes to Insert mode when 'insertmode' is set, use - * CTRL-\ CTRL-N again. */ -! ga_concat(&ga, (char_u *)"<C-\\><C-N>"); -! -! /* Switch back to the correct current directory (prior to temporary path -! * switch) unless 'autochdir' is set, in which case it will already be -! * correct after the :drop command. */ -! ga_concat(&ga, (char_u *)":if !exists('+acd')||!&acd|cd -|endif<CR>"); -! - if (sendReply) -! ga_concat(&ga, (char_u *)":call SetupRemoteReplies()<CR>"); -! ga_concat(&ga, (char_u *)":"); - if (inicmd != NULL) - { - /* Can't use <CR> after "inicmd", because an "startinsert" would cause -*** ../vim-7.3.060/src/version.c 2010-11-16 15:48:57.000000000 +0100 ---- src/version.c 2010-11-16 16:19:58.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 61, - /**/ - --- -BEDEVERE: Stand by for attack!! - [CUT TO enormous army forming up. Trebuchets, rows of PIKEMEN, siege - towers, pennants flying, shouts of "Stand by for attack!" Traditional - army build-up shots. The shouts echo across the ranks of the army. - We see various groups reacting, and stirring themselves in readiness.] -ARTHUR: Who are they? -BEDEVERE: Oh, just some friends! - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.062 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.062 -Problem: Python doesn't work properly when installed in another directory - than expected. -Solution: Figure out home directory in configure and use Py_SetPythonHome() - at runtime. (Roland Puntaier) -Files: src/configure.in, src/auto/configure, src/if_python.c, - src/if_python3.c - - -*** ../vim-7.3.061/src/configure.in 2010-11-03 22:32:18.000000000 +0100 ---- src/configure.in 2010-11-16 17:47:36.000000000 +0100 -*************** -*** 891,899 **** - - PYTHON_LIBS="${vi_cv_path_python_plibs}" - if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then -! PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version}" - else -! PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -I${vi_cv_path_python_epfx}/include/python${vi_cv_var_python_version}" - fi - PYTHON_SRC="if_python.c" - dnl For Mac OSX 10.2 config.o is included in the Python library. ---- 891,899 ---- - - PYTHON_LIBS="${vi_cv_path_python_plibs}" - if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then -! PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -DPYTHON_HOME=\\\"${vi_cv_path_python_pfx}\\\"" - else -! PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -I${vi_cv_path_python_epfx}/include/python${vi_cv_var_python_version} -DPYTHON_HOME=\\\"${vi_cv_path_python_pfx}\\\"" - fi - PYTHON_SRC="if_python.c" - dnl For Mac OSX 10.2 config.o is included in the Python library. -*************** -*** 905,911 **** - if test "${vi_cv_var_python_version}" = "1.4"; then - PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o" - fi -! PYTHON_GETPATH_CFLAGS="-DPYTHONPATH='\"${vi_cv_path_pythonpath}\"' -DPREFIX='\"${vi_cv_path_python_pfx}\"' -DEXEC_PREFIX='\"${vi_cv_path_python_epfx}\"'" - - dnl On FreeBSD linking with "-pthread" is required to use threads. - dnl _THREAD_SAFE must be used for compiling then. ---- 905,911 ---- - if test "${vi_cv_var_python_version}" = "1.4"; then - PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o" - fi -! PYTHON_GETPATH_CFLAGS="-DPYTHONPATH='\"${vi_cv_path_pythonpath}\"' -DPREFIX='\"${vi_cv_path_python_pfx}\"' -DEXEC_PREFIX='\"${vi_cv_path_python_epfx}\"'" - - dnl On FreeBSD linking with "-pthread" is required to use threads. - dnl _THREAD_SAFE must be used for compiling then. -*************** -*** 1063,1071 **** - - PYTHON3_LIBS="${vi_cv_path_python3_plibs}" - if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then -! PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}" - else -! PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version}" - fi - PYTHON3_SRC="if_python3.c" - dnl For Mac OSX 10.2 config.o is included in the Python library. ---- 1063,1071 ---- - - PYTHON3_LIBS="${vi_cv_path_python3_plibs}" - if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then -! PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\"" - else -! PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\"" - fi - PYTHON3_SRC="if_python3.c" - dnl For Mac OSX 10.2 config.o is included in the Python library. -*************** -*** 1143,1151 **** - if test "$python_ok" = yes && test "$python3_ok" = yes; then - AC_DEFINE(DYNAMIC_PYTHON) - AC_DEFINE(DYNAMIC_PYTHON3) -! AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL) - cflags_save=$CFLAGS -! CFLAGS="$CFLAGS $PYTHON3_CFLAGS" - ldflags_save=$LDFLAGS - LDFLAGS="$LDFLAGS -ldl" - AC_RUN_IFELSE([ ---- 1143,1151 ---- - if test "$python_ok" = yes && test "$python3_ok" = yes; then - AC_DEFINE(DYNAMIC_PYTHON) - AC_DEFINE(DYNAMIC_PYTHON3) -! AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python) - cflags_save=$CFLAGS -! CFLAGS="$CFLAGS $PYTHON_CFLAGS" - ldflags_save=$LDFLAGS - LDFLAGS="$LDFLAGS -ldl" - AC_RUN_IFELSE([ -*************** -*** 1156,1170 **** - * Only the first pyhton version used will be switched on. - */ - -! int no_rtl_global_needed_for(char *python_instsoname) - { - int needed = 0; - void* pylib = dlopen(python_instsoname, RTLD_LAZY); - if (pylib != 0) - { - void (*init)(void) = dlsym(pylib, "Py_Initialize"); - int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString"); - void (*final)(void) = dlsym(pylib, "Py_Finalize"); - (*init)(); - needed = (*simple)("import termios") == -1; - (*final)(); ---- 1156,1172 ---- - * Only the first pyhton version used will be switched on. - */ - -! int no_rtl_global_needed_for(char *python_instsoname, char *prefix) - { - int needed = 0; - void* pylib = dlopen(python_instsoname, RTLD_LAZY); - if (pylib != 0) - { -+ void (*pfx)(char *home) = dlsym(pylib, "Py_SetPythonHome"); - void (*init)(void) = dlsym(pylib, "Py_Initialize"); - int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString"); - void (*final)(void) = dlsym(pylib, "Py_Finalize"); -+ (*pfx)(prefix); - (*init)(); - needed = (*simple)("import termios") == -1; - (*final)(); -*************** -*** 1176,1188 **** - int main(int argc, char** argv) - { - int not_needed = 0; -! if (no_rtl_global_needed_for("libpython2.7.so.1.0") && no_rtl_global_needed_for("libpython3.1.so.1.0")) - not_needed = 1; - return !not_needed; - }], - [AC_MSG_RESULT(yes);AC_DEFINE(PY_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)]) - CFLAGS=$cflags_save - LDFLAGS=$ldflags_save - PYTHON_SRC="if_python.c" - PYTHON_OBJ="objects/if_python.o" - PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\"" ---- 1178,1237 ---- - int main(int argc, char** argv) - { - int not_needed = 0; -! if (no_rtl_global_needed_for("${python_INSTSONAME}", "${vi_cv_path_python_pfx}")) - not_needed = 1; - return !not_needed; - }], - [AC_MSG_RESULT(yes);AC_DEFINE(PY_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)]) -+ - CFLAGS=$cflags_save - LDFLAGS=$ldflags_save -+ -+ AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python3) -+ cflags_save=$CFLAGS -+ CFLAGS="$CFLAGS $PYTHON3_CFLAGS" -+ ldflags_save=$LDFLAGS -+ LDFLAGS="$LDFLAGS -ldl" -+ AC_RUN_IFELSE([ -+ #include <dlfcn.h> -+ #include <wchar.h> -+ /* If this program fails, then RTLD_GLOBAL is needed. -+ * RTLD_GLOBAL will be used and then it is not possible to -+ * have both python versions enabled in the same vim instance. -+ * Only the first pyhton version used will be switched on. -+ */ -+ -+ int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix) -+ { -+ int needed = 0; -+ void* pylib = dlopen(python_instsoname, RTLD_LAZY); -+ if (pylib != 0) -+ { -+ void (*pfx)(wchar_t *home) = dlsym(pylib, "Py_SetPythonHome"); -+ void (*init)(void) = dlsym(pylib, "Py_Initialize"); -+ int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString"); -+ void (*final)(void) = dlsym(pylib, "Py_Finalize"); -+ (*pfx)(prefix); -+ (*init)(); -+ needed = (*simple)("import termios") == -1; -+ (*final)(); -+ dlclose(pylib); -+ } -+ return !needed; -+ } -+ -+ int main(int argc, char** argv) -+ { -+ int not_needed = 0; -+ if (no_rtl_global_needed_for("${python3_INSTSONAME}", L"${vi_cv_path_python3_pfx}")) -+ not_needed = 1; -+ return !not_needed; -+ }], -+ [AC_MSG_RESULT(yes);AC_DEFINE(PY3_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)]) -+ -+ CFLAGS=$cflags_save -+ LDFLAGS=$ldflags_save -+ - PYTHON_SRC="if_python.c" - PYTHON_OBJ="objects/if_python.o" - PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\"" -*** ../vim-7.3.061/src/auto/configure 2010-11-03 22:32:18.000000000 +0100 ---- src/auto/configure 2010-11-16 17:47:42.000000000 +0100 -*************** -*** 5326,5334 **** - - PYTHON_LIBS="${vi_cv_path_python_plibs}" - if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then -! PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version}" - else -! PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -I${vi_cv_path_python_epfx}/include/python${vi_cv_var_python_version}" - fi - PYTHON_SRC="if_python.c" - if test "x$MACOSX" = "xyes"; then ---- 5326,5334 ---- - - PYTHON_LIBS="${vi_cv_path_python_plibs}" - if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then -! PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -DPYTHON_HOME=\\\"${vi_cv_path_python_pfx}\\\"" - else -! PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -I${vi_cv_path_python_epfx}/include/python${vi_cv_var_python_version} -DPYTHON_HOME=\\\"${vi_cv_path_python_pfx}\\\"" - fi - PYTHON_SRC="if_python.c" - if test "x$MACOSX" = "xyes"; then -*************** -*** 5339,5345 **** - if test "${vi_cv_var_python_version}" = "1.4"; then - PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o" - fi -! PYTHON_GETPATH_CFLAGS="-DPYTHONPATH='\"${vi_cv_path_pythonpath}\"' -DPREFIX='\"${vi_cv_path_python_pfx}\"' -DEXEC_PREFIX='\"${vi_cv_path_python_epfx}\"'" - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if -pthread should be used" >&5 - $as_echo_n "checking if -pthread should be used... " >&6; } ---- 5339,5345 ---- - if test "${vi_cv_var_python_version}" = "1.4"; then - PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o" - fi -! PYTHON_GETPATH_CFLAGS="-DPYTHONPATH='\"${vi_cv_path_pythonpath}\"' -DPREFIX='\"${vi_cv_path_python_pfx}\"' -DEXEC_PREFIX='\"${vi_cv_path_python_epfx}\"'" - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if -pthread should be used" >&5 - $as_echo_n "checking if -pthread should be used... " >&6; } -*************** -*** 5601,5609 **** - - PYTHON3_LIBS="${vi_cv_path_python3_plibs}" - if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then -! PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}" - else -! PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version}" - fi - PYTHON3_SRC="if_python3.c" - if test "x$MACOSX" = "xyes"; then ---- 5601,5609 ---- - - PYTHON3_LIBS="${vi_cv_path_python3_plibs}" - if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then -! PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\"" - else -! PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\"" - fi - PYTHON3_SRC="if_python3.c" - if test "x$MACOSX" = "xyes"; then -*************** -*** 5708,5717 **** - - $as_echo "#define DYNAMIC_PYTHON3 1" >>confdefs.h - -! { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we can do without RTLD_GLOBAL" >&5 -! $as_echo_n "checking whether we can do without RTLD_GLOBAL... " >&6; } - cflags_save=$CFLAGS -! CFLAGS="$CFLAGS $PYTHON3_CFLAGS" - ldflags_save=$LDFLAGS - LDFLAGS="$LDFLAGS -ldl" - if test "$cross_compiling" = yes; then : ---- 5708,5717 ---- - - $as_echo "#define DYNAMIC_PYTHON3 1" >>confdefs.h - -! { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we can do without RTLD_GLOBAL for Python" >&5 -! $as_echo_n "checking whether we can do without RTLD_GLOBAL for Python... " >&6; } - cflags_save=$CFLAGS -! CFLAGS="$CFLAGS $PYTHON_CFLAGS" - ldflags_save=$LDFLAGS - LDFLAGS="$LDFLAGS -ldl" - if test "$cross_compiling" = yes; then : -*************** -*** 5730,5744 **** - * Only the first pyhton version used will be switched on. - */ - -! int no_rtl_global_needed_for(char *python_instsoname) - { - int needed = 0; - void* pylib = dlopen(python_instsoname, RTLD_LAZY); - if (pylib != 0) - { - void (*init)(void) = dlsym(pylib, "Py_Initialize"); - int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString"); - void (*final)(void) = dlsym(pylib, "Py_Finalize"); - (*init)(); - needed = (*simple)("import termios") == -1; - (*final)(); ---- 5730,5746 ---- - * Only the first pyhton version used will be switched on. - */ - -! int no_rtl_global_needed_for(char *python_instsoname, char *prefix) - { - int needed = 0; - void* pylib = dlopen(python_instsoname, RTLD_LAZY); - if (pylib != 0) - { -+ void (*pfx)(char *home) = dlsym(pylib, "Py_SetPythonHome"); - void (*init)(void) = dlsym(pylib, "Py_Initialize"); - int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString"); - void (*final)(void) = dlsym(pylib, "Py_Finalize"); -+ (*pfx)(prefix); - (*init)(); - needed = (*simple)("import termios") == -1; - (*final)(); -*************** -*** 5750,5756 **** - int main(int argc, char** argv) - { - int not_needed = 0; -! if (no_rtl_global_needed_for("libpython2.7.so.1.0") && no_rtl_global_needed_for("libpython3.1.so.1.0")) - not_needed = 1; - return !not_needed; - } ---- 5752,5758 ---- - int main(int argc, char** argv) - { - int not_needed = 0; -! if (no_rtl_global_needed_for("${python_INSTSONAME}", "${vi_cv_path_python_pfx}")) - not_needed = 1; - return !not_needed; - } -*************** -*** 5767,5774 **** ---- 5769,5844 ---- - conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - -+ - CFLAGS=$cflags_save - LDFLAGS=$ldflags_save -+ -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we can do without RTLD_GLOBAL for Python3" >&5 -+ $as_echo_n "checking whether we can do without RTLD_GLOBAL for Python3... " >&6; } -+ cflags_save=$CFLAGS -+ CFLAGS="$CFLAGS $PYTHON3_CFLAGS" -+ ldflags_save=$LDFLAGS -+ LDFLAGS="$LDFLAGS -ldl" -+ if test "$cross_compiling" = yes; then : -+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -+ $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -+ as_fn_error "cannot run test program while cross compiling -+ See \`config.log' for more details." "$LINENO" 5; } -+ else -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+ /* end confdefs.h. */ -+ -+ #include <dlfcn.h> -+ #include <wchar.h> -+ /* If this program fails, then RTLD_GLOBAL is needed. -+ * RTLD_GLOBAL will be used and then it is not possible to -+ * have both python versions enabled in the same vim instance. -+ * Only the first pyhton version used will be switched on. -+ */ -+ -+ int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix) -+ { -+ int needed = 0; -+ void* pylib = dlopen(python_instsoname, RTLD_LAZY); -+ if (pylib != 0) -+ { -+ void (*pfx)(wchar_t *home) = dlsym(pylib, "Py_SetPythonHome"); -+ void (*init)(void) = dlsym(pylib, "Py_Initialize"); -+ int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString"); -+ void (*final)(void) = dlsym(pylib, "Py_Finalize"); -+ (*pfx)(prefix); -+ (*init)(); -+ needed = (*simple)("import termios") == -1; -+ (*final)(); -+ dlclose(pylib); -+ } -+ return !needed; -+ } -+ -+ int main(int argc, char** argv) -+ { -+ int not_needed = 0; -+ if (no_rtl_global_needed_for("${python3_INSTSONAME}", L"${vi_cv_path_python3_pfx}")) -+ not_needed = 1; -+ return !not_needed; -+ } -+ _ACEOF -+ if ac_fn_c_try_run "$LINENO"; then : -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -+ $as_echo "yes" >&6; };$as_echo "#define PY3_NO_RTLD_GLOBAL 1" >>confdefs.h -+ -+ else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ $as_echo "no" >&6; } -+ fi -+ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ -+ conftest.$ac_objext conftest.beam conftest.$ac_ext -+ fi -+ -+ -+ CFLAGS=$cflags_save -+ LDFLAGS=$ldflags_save -+ - PYTHON_SRC="if_python.c" - PYTHON_OBJ="objects/if_python.o" - PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\"" -*** ../vim-7.3.061/src/if_python.c 2010-10-23 14:02:48.000000000 +0200 ---- src/if_python.c 2010-11-16 17:07:00.000000000 +0100 -*************** -*** 102,108 **** - # include <dlfcn.h> - # define FARPROC void* - # define HINSTANCE void* -! # ifdef PY_NO_RTLD_GLOBAL - # define load_dll(n) dlopen((n), RTLD_LAZY) - # else - # define load_dll(n) dlopen((n), RTLD_LAZY|RTLD_GLOBAL) ---- 102,108 ---- - # include <dlfcn.h> - # define FARPROC void* - # define HINSTANCE void* -! # if defined(PY_NO_RTLD_GLOBAL) && defined(PY3_NO_RTLD_GLOBAL) - # define load_dll(n) dlopen((n), RTLD_LAZY) - # else - # define load_dll(n) dlopen((n), RTLD_LAZY|RTLD_GLOBAL) -*************** -*** 168,173 **** ---- 168,174 ---- - # define Py_BuildValue dll_Py_BuildValue - # define Py_FindMethod dll_Py_FindMethod - # define Py_InitModule4 dll_Py_InitModule4 -+ # define Py_SetPythonHome dll_Py_SetPythonHome - # define Py_Initialize dll_Py_Initialize - # define Py_Finalize dll_Py_Finalize - # define Py_IsInitialized dll_Py_IsInitialized -*************** -*** 226,231 **** ---- 227,233 ---- - static PyObject*(*dll_Py_BuildValue)(char *, ...); - static PyObject*(*dll_Py_FindMethod)(struct PyMethodDef[], PyObject *, char *); - static PyObject*(*dll_Py_InitModule4)(char *, struct PyMethodDef *, char *, PyObject *, int); -+ static void(*dll_Py_SetPythonHome)(char *home); - static void(*dll_Py_Initialize)(void); - static void(*dll_Py_Finalize)(void); - static int(*dll_Py_IsInitialized)(void); -*************** -*** 310,315 **** ---- 312,318 ---- - # else - {"Py_InitModule4", (PYTHON_PROC*)&dll_Py_InitModule4}, - # endif -+ {"Py_SetPythonHome", (PYTHON_PROC*)&dll_Py_SetPythonHome}, - {"Py_Initialize", (PYTHON_PROC*)&dll_Py_Initialize}, - {"Py_Finalize", (PYTHON_PROC*)&dll_Py_Finalize}, - {"Py_IsInitialized", (PYTHON_PROC*)&dll_Py_IsInitialized}, -*************** -*** 349,355 **** - { - int i; - -! #if !defined(PY_NO_RTLD_GLOBAL) && defined(UNIX) && defined(FEAT_PYTHON3) - /* Can't have Python and Python3 loaded at the same time. - * It cause a crash, because RTLD_GLOBAL is needed for - * standard C extension libraries of one or both python versions. */ ---- 352,358 ---- - { - int i; - -! #if !(defined(PY_NO_RTLD_GLOBAL) && defined(PY3_NO_RTLD_GLOBAL)) && defined(UNIX) && defined(FEAT_PYTHON3) - /* Can't have Python and Python3 loaded at the same time. - * It cause a crash, because RTLD_GLOBAL is needed for - * standard C extension libraries of one or both python versions. */ -*************** -*** 543,548 **** ---- 546,555 ---- - } - #endif - -+ #ifdef PYTHON_HOME -+ Py_SetPythonHome(PYTHON_HOME); -+ #endif -+ - init_structs(); - - #if !defined(MACOS) || defined(MACOS_X_UNIX) -*** ../vim-7.3.061/src/if_python3.c 2010-10-23 14:02:48.000000000 +0200 ---- src/if_python3.c 2010-11-16 17:07:26.000000000 +0100 -*************** -*** 80,86 **** - # include <dlfcn.h> - # define FARPROC void* - # define HINSTANCE void* -! # ifdef PY_NO_RTLD_GLOBAL - # define load_dll(n) dlopen((n), RTLD_LAZY) - # else - # define load_dll(n) dlopen((n), RTLD_LAZY|RTLD_GLOBAL) ---- 80,86 ---- - # include <dlfcn.h> - # define FARPROC void* - # define HINSTANCE void* -! # if defined(PY_NO_RTLD_GLOBAL) && defined(PY3_NO_RTLD_GLOBAL) - # define load_dll(n) dlopen((n), RTLD_LAZY) - # else - # define load_dll(n) dlopen((n), RTLD_LAZY|RTLD_GLOBAL) -*************** -*** 132,137 **** ---- 132,138 ---- - # define PyType_Ready py3_PyType_Ready - #undef Py_BuildValue - # define Py_BuildValue py3_Py_BuildValue -+ # define Py_SetPythonHome py3_Py_SetPythonHome - # define Py_Initialize py3_Py_Initialize - # define Py_Finalize py3_Py_Finalize - # define Py_IsInitialized py3_Py_IsInitialized -*************** -*** 170,175 **** ---- 171,177 ---- - * Pointers for dynamic link - */ - static int (*py3_PySys_SetArgv)(int, wchar_t **); -+ static void (*py3_Py_SetPythonHome)(wchar_t *home); - static void (*py3_Py_Initialize)(void); - static PyObject* (*py3_PyList_New)(Py_ssize_t size); - static PyGILState_STATE (*py3_PyGILState_Ensure)(void); -*************** -*** 254,259 **** ---- 256,262 ---- - } py3_funcname_table[] = - { - {"PySys_SetArgv", (PYTHON_PROC*)&py3_PySys_SetArgv}, -+ {"Py_SetPythonHome", (PYTHON_PROC*)&py3_Py_SetPythonHome}, - {"Py_Initialize", (PYTHON_PROC*)&py3_Py_Initialize}, - {"PyArg_ParseTuple", (PYTHON_PROC*)&py3_PyArg_ParseTuple}, - {"PyList_New", (PYTHON_PROC*)&py3_PyList_New}, -*************** -*** 336,342 **** - int i; - void *ucs_from_string, *ucs_from_string_and_size; - -! # if !defined(PY_NO_RTLD_GLOBAL) && defined(UNIX) && defined(FEAT_PYTHON) - /* Can't have Python and Python3 loaded at the same time. - * It cause a crash, because RTLD_GLOBAL is needed for - * standard C extension libraries of one or both python versions. */ ---- 339,345 ---- - int i; - void *ucs_from_string, *ucs_from_string_and_size; - -! # if !(defined(PY_NO_RTLD_GLOBAL) && defined(PY3_NO_RTLD_GLOBAL)) && defined(UNIX) && defined(FEAT_PYTHON) - /* Can't have Python and Python3 loaded at the same time. - * It cause a crash, because RTLD_GLOBAL is needed for - * standard C extension libraries of one or both python versions. */ -*************** -*** 539,544 **** ---- 542,552 ---- - - init_structs(); - -+ -+ #ifdef PYTHON3_HOME -+ Py_SetPythonHome(PYTHON3_HOME); -+ #endif -+ - /* initialise threads */ - PyEval_InitThreads(); - -*** ../vim-7.3.061/src/version.c 2010-11-16 16:25:46.000000000 +0100 ---- src/version.c 2010-11-16 17:12:40.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 62, - /**/ - --- -ARTHUR: CHARGE! - [The mighty ARMY charges. Thundering noise of feet. Clatter of coconuts. - Shouts etc. Suddenly there is a wail of a siren and a couple of police - cars roar round in front of the charging ARMY and the POLICE leap out and - stop them. TWO POLICEMAN and the HISTORIAN'S WIFE. Black Marias skid up - behind them.] -HISTORIAN'S WIFE: They're the ones, I'm sure. - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.063 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.063 -Problem: Win32: Running a filter command makes Vim lose focus. -Solution: Use SW_SHOWMINNOACTIVE instead of SW_SHOWMINIMIZED. (Hong Xu) -Files: src/os_win32.c - - -*** ../vim-7.3.062/src/os_win32.c 2010-11-10 15:37:00.000000000 +0100 ---- src/os_win32.c 2010-11-24 12:31:46.000000000 +0100 -*************** -*** 3185,3193 **** - * It's nicer to run a filter command in a minimized window, but in - * Windows 95 this makes the command MUCH slower. We can't do it under - * Win32s either as it stops the synchronous spawn workaround working. - */ - if ((options & SHELL_DOOUT) && !mch_windows95() && !gui_is_win32s()) -! si.wShowWindow = SW_SHOWMINIMIZED; - else - si.wShowWindow = SW_SHOWNORMAL; - si.cbReserved2 = 0; ---- 3185,3194 ---- - * It's nicer to run a filter command in a minimized window, but in - * Windows 95 this makes the command MUCH slower. We can't do it under - * Win32s either as it stops the synchronous spawn workaround working. -+ * Don't activate the window to keep focus on Vim. - */ - if ((options & SHELL_DOOUT) && !mch_windows95() && !gui_is_win32s()) -! si.wShowWindow = SW_SHOWMINNOACTIVE; - else - si.wShowWindow = SW_SHOWNORMAL; - si.cbReserved2 = 0; -*** ../vim-7.3.062/src/version.c 2010-11-16 19:25:56.000000000 +0100 ---- src/version.c 2010-11-24 12:32:52.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 63, - /**/ - --- -SOLDIER: Where did you get the coconuts? -ARTHUR: Through ... We found them. -SOLDIER: Found them? In Mercea. The coconut's tropical! - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.064 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.064 -Problem: Win32: ":dis +" shows nothing, but "+p does insert text. -Solution: Display the * register, since that's what will be inserted. - (Christian Brabandt) -Files: src/globals.h, src/ops.c - - -*** ../vim-7.3.063/src/globals.h 2010-08-15 21:57:27.000000000 +0200 ---- src/globals.h 2010-11-24 14:06:47.000000000 +0100 -*************** -*** 510,515 **** ---- 510,516 ---- - EXTERN VimClipboard clip_plus; /* CLIPBOARD selection in X11 */ - # else - # define clip_plus clip_star /* there is only one clipboard */ -+ # define ONE_CLIPBOARD - # endif - EXTERN int clip_unnamed INIT(= FALSE); - EXTERN int clip_autoselect INIT(= FALSE); -*** ../vim-7.3.063/src/ops.c 2010-10-09 17:21:42.000000000 +0200 ---- src/ops.c 2010-11-24 14:26:25.000000000 +0100 -*************** -*** 3979,3985 **** - for (i = -1; i < NUM_REGISTERS && !got_int; ++i) - { - name = get_register_name(i); -! if (arg != NULL && vim_strchr(arg, name) == NULL) - continue; /* did not ask for this register */ - - #ifdef FEAT_CLIPBOARD ---- 3979,3990 ---- - for (i = -1; i < NUM_REGISTERS && !got_int; ++i) - { - name = get_register_name(i); -! if (arg != NULL && vim_strchr(arg, name) == NULL -! #ifdef ONE_CLIPBOARD -! /* Star register and plus register contain the same thing. */ -! && (name != '*' || vim_strchr(arg, '+') == NULL) -! #endif -! ) - continue; /* did not ask for this register */ - - #ifdef FEAT_CLIPBOARD -*** ../vim-7.3.063/src/version.c 2010-11-24 12:35:14.000000000 +0100 ---- src/version.c 2010-11-24 14:24:03.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 64, - /**/ - --- -FIRST SOLDIER: So they wouldn't be able to bring a coconut back anyway. -SECOND SOLDIER: Wait a minute! Suppose two swallows carried it together? -FIRST SOLDIER: No, they'd have to have it on a line. - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.065 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.065 -Problem: Can't get current line number in a source file. -Solution: Add the <slnum> item, similar to <sfile>. -Files: src/ex_docmd.c - - -*** ../vim-7.3.064/src/ex_docmd.c 2010-11-16 11:29:30.000000000 +0100 ---- src/ex_docmd.c 2010-11-24 15:41:51.000000000 +0100 -*************** -*** 9538,9554 **** - #define SPEC_CFILE 4 - "<sfile>", /* ":so" file name */ - #define SPEC_SFILE 5 - #ifdef FEAT_AUTOCMD - "<afile>", /* autocommand file name */ -! # define SPEC_AFILE 6 - "<abuf>", /* autocommand buffer number */ -! # define SPEC_ABUF 7 - "<amatch>", /* autocommand match name */ -! # define SPEC_AMATCH 8 - #endif - #ifdef FEAT_CLIENTSERVER - "<client>" -! # define SPEC_CLIENT 9 - #endif - }; - ---- 9538,9560 ---- - #define SPEC_CFILE 4 - "<sfile>", /* ":so" file name */ - #define SPEC_SFILE 5 -+ "<slnum>", /* ":so" file line number */ -+ #define SPEC_SLNUM 6 - #ifdef FEAT_AUTOCMD - "<afile>", /* autocommand file name */ -! # define SPEC_AFILE 7 - "<abuf>", /* autocommand buffer number */ -! # define SPEC_ABUF 8 - "<amatch>", /* autocommand match name */ -! # define SPEC_AMATCH 9 - #endif - #ifdef FEAT_CLIENTSERVER - "<client>" -! # ifdef FEAT_AUTOCMD -! # define SPEC_CLIENT 10 -! # else -! # define SPEC_CLIENT 7 -! # endif - #endif - }; - -*************** -*** 9573,9578 **** ---- 9579,9585 ---- - * '<cWORD>' to WORD under the cursor - * '<cfile>' to path name under the cursor - * '<sfile>' to sourced file name -+ * '<slnum>' to sourced file line number - * '<afile>' to file name for autocommand - * '<abuf>' to buffer number for autocommand - * '<amatch>' to matching name for autocommand -*************** -*** 9604,9613 **** - #ifdef FEAT_MODIFY_FNAME - int skip_mod = FALSE; - #endif -- -- #if defined(FEAT_AUTOCMD) || defined(FEAT_CLIENTSERVER) - char_u strbuf[30]; -- #endif - - *errormsg = NULL; - if (escaped != NULL) ---- 9611,9617 ---- -*************** -*** 9796,9801 **** ---- 9800,9814 ---- - return NULL; - } - break; -+ case SPEC_SLNUM: /* line in file for ":so" command */ -+ if (sourcing_name == NULL || sourcing_lnum == 0) -+ { -+ *errormsg = (char_u *)_("E842: no line number to use for \"<slnum>\""); -+ return NULL; -+ } -+ sprintf((char *)strbuf, "%ld", (long)sourcing_lnum); -+ result = strbuf; -+ break; - #if defined(FEAT_CLIENTSERVER) - case SPEC_CLIENT: /* Source of last submitted input */ - sprintf((char *)strbuf, PRINTF_HEX_LONG_U, -*** ../vim-7.3.064/src/version.c 2010-11-24 14:28:53.000000000 +0100 ---- src/version.c 2010-11-24 15:49:57.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 65, - /**/ - - --- -If you don't get everything you want, think of -everything you didn't get and don't want. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.066 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.066 -Problem: Crash when changing to another window while in a :vimgrep command. - (Christian Brabandt) -Solution: When wiping out the dummy before, remove it from aucmd_win. -Files: src/quickfix.c - - -*** ../vim-7.3.065/src/quickfix.c 2010-09-21 16:56:29.000000000 +0200 ---- src/quickfix.c 2010-11-24 16:27:40.000000000 +0100 -*************** -*** 3432,3437 **** ---- 3432,3438 ---- - char_u *fname; - { - buf_T *newbuf; -+ buf_T *newbuf_to_wipe = NULL; - int failed = TRUE; - aco_save_T aco; - -*************** -*** 3468,3482 **** - failed = FALSE; - if (curbuf != newbuf) - { -! /* Bloody autocommands changed the buffer! */ -! if (buf_valid(newbuf)) -! wipe_buffer(newbuf, FALSE); - newbuf = curbuf; - } - } - - /* restore curwin/curbuf and a few other things */ - aucmd_restbuf(&aco); - } - - if (!buf_valid(newbuf)) ---- 3469,3487 ---- - failed = FALSE; - if (curbuf != newbuf) - { -! /* Bloody autocommands changed the buffer! Can happen when -! * using netrw and editing a remote file. Use the current -! * buffer instead, delete the dummy one after restoring the -! * window stuff. */ -! newbuf_to_wipe = newbuf; - newbuf = curbuf; - } - } - - /* restore curwin/curbuf and a few other things */ - aucmd_restbuf(&aco); -+ if (newbuf_to_wipe != NULL && buf_valid(newbuf_to_wipe)) -+ wipe_buffer(newbuf_to_wipe, FALSE); - } - - if (!buf_valid(newbuf)) -*** ../vim-7.3.065/src/version.c 2010-11-24 15:50:54.000000000 +0100 ---- src/version.c 2010-11-24 16:30:44.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 66, - /**/ - --- -CART DRIVER: Bring out your dead! - We follow the cart through a wretched, impoverished plague-ridden village. - A few starved mongrels run about in the mud scavenging. In the open - doorway of one house perhaps we jug glimpse a pair of legs dangling from - the ceiling. In another doorway an OLD WOMAN is beating a cat against a - wall rather like one does with a mat. The cart passes round a dead donkey - or cow in the mud. And a MAN tied to a cart is being hammered to death by - four NUNS with huge mallets. - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.067 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.067 (after 7.3.058) -Problem: Ruby: Init_prelude is not always available. -Solution: Remove use of Init_prelude. (Yasuhiro Matsumoto) -Files: src/if_ruby.c - - -*** ../vim-7.3.066/src/if_ruby.c 2010-11-16 14:46:14.000000000 +0100 ---- src/if_ruby.c 2010-11-24 16:53:06.000000000 +0100 -*************** -*** 231,237 **** - # define rb_enc_str_new dll_rb_enc_str_new - # define rb_intern2 dll_rb_intern2 - # define rb_const_remove dll_rb_const_remove -- # define Init_prelude dll_Init_prelude - # define rb_sprintf dll_rb_sprintf - # define ruby_init_stack dll_ruby_init_stack - #endif ---- 231,236 ---- -*************** -*** 433,439 **** - {"rb_enc_str_new", (RUBY_PROC*)&dll_rb_enc_str_new}, - {"rb_intern2", (RUBY_PROC*)&dll_rb_intern2}, - {"rb_const_remove", (RUBY_PROC*)&dll_rb_const_remove}, -- {"Init_prelude", (RUBY_PROC*)&dll_Init_prelude}, - {"rb_sprintf", (RUBY_PROC*)&dll_rb_sprintf}, - {"ruby_init_stack", (RUBY_PROC*)&dll_ruby_init_stack}, - #endif ---- 432,437 ---- -*************** -*** 675,681 **** - /* This avoids the error "Encoding::ConverterNotFoundError: code - * converter not found (UTF-16LE to ASCII-8BIT)". */ - rb_define_module("Gem"); -- Init_prelude(); - rb_const_remove(rb_cObject, rb_intern2("TMP_RUBY_PREFIX", 15)); - #endif - ruby_vim_init(); ---- 673,678 ---- -*** ../vim-7.3.066/src/version.c 2010-11-24 16:31:55.000000000 +0100 ---- src/version.c 2010-11-24 16:53:35.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 67, - /**/ - --- -CART DRIVER: Bring out your dead! -LARGE MAN: Here's one! -CART DRIVER: Ninepence. -BODY: I'm not dead! - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.068 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.068 -Problem: Using freed memory when doing ":saveas" and an autocommand sets - 'autochdir'. (Kevin Klement) -Solution: Get the value of fname again after executing autocommands. -Files: src/ex_cmds.c - - -*** ../vim-7.3.067/src/ex_cmds.c 2010-10-15 20:20:00.000000000 +0200 ---- src/ex_cmds.c 2010-11-24 17:53:07.000000000 +0100 -*************** -*** 2705,2710 **** ---- 2705,2714 ---- - TRUE); - do_modelines(0); - } -+ -+ /* Autocommands may have changed buffer names, esp. when -+ * 'autochdir' is set. */ -+ fname = curbuf->b_sfname; - #endif - } - -*** ../vim-7.3.067/src/version.c 2010-11-24 17:03:34.000000000 +0100 ---- src/version.c 2010-11-24 17:55:11.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 68, - /**/ - --- -I used to wonder about the meaning of life. But I looked it -up in the dictionary under "L" and there it was - the meaning -of life. It was less than I expected. - Dogbert - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.069 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.069 -Problem: GTK: pressing Enter in inputdialog() doesn't work like clicking OK - as documented. -Solution: call gtk_entry_set_activates_default(). (Britton Kerin) -Files: src/gui_gtk.c - - -*** ../vim-7.3.068/src/gui_gtk.c 2010-08-15 21:57:32.000000000 +0200 ---- src/gui_gtk.c 2010-11-24 18:44:21.000000000 +0100 -*************** -*** 1287,1292 **** ---- 1287,1295 ---- - entry = gtk_entry_new(); - gtk_widget_show(entry); - -+ /* Make Enter work like pressing OK. */ -+ gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE); -+ - text = CONVERT_TO_UTF8(textfield); - gtk_entry_set_text(GTK_ENTRY(entry), (const char *)text); - CONVERT_TO_UTF8_FREE(text); -*** ../vim-7.3.068/src/version.c 2010-11-24 17:59:27.000000000 +0100 ---- src/version.c 2010-11-24 18:46:39.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 69, - /**/ - --- -Why I like vim: -> I like VIM because, when I ask a question in this newsgroup, I get a -> one-line answer. With xemacs, I get a 1Kb lisp script with bugs in it ;-) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.070 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.070 -Problem: Can set environment variables in the sandbox, could be abused. -Solution: Disallow it. -Files: src/eval.c - - -*** ../vim-7.3.069/src/eval.c 2010-11-10 20:31:24.000000000 +0100 ---- src/eval.c 2010-12-02 14:42:31.000000000 +0100 -*************** -*** 2326,2332 **** - else if (endchars != NULL - && vim_strchr(endchars, *skipwhite(arg)) == NULL) - EMSG(_(e_letunexp)); -! else - { - c1 = name[len]; - name[len] = NUL; ---- 2326,2332 ---- - else if (endchars != NULL - && vim_strchr(endchars, *skipwhite(arg)) == NULL) - EMSG(_(e_letunexp)); -! else if (!check_secure()) - { - c1 = name[len]; - name[len] = NUL; -*** ../vim-7.3.069/src/version.c 2010-11-24 18:48:08.000000000 +0100 ---- src/version.c 2010-12-02 14:46:44.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 70, - /**/ - --- -The only way the average employee can speak to an executive is by taking a -second job as a golf caddie. - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.071 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.071 -Problem: Editing a file in a window that's in diff mode resets 'diff' - but not cursor binding. -Solution: Reset cursor binding in two more places. -Files: src/quickfix.c, src/option.c - - -*** ../vim-7.3.070/src/quickfix.c 2010-11-24 16:31:55.000000000 +0100 ---- src/quickfix.c 2010-12-02 15:02:00.000000000 +0100 -*************** -*** 2359,2364 **** ---- 2359,2365 ---- - set_option_value((char_u *)"bt", 0L, (char_u *)"quickfix", - OPT_LOCAL); - set_option_value((char_u *)"bh", 0L, (char_u *)"wipe", OPT_LOCAL); -+ RESET_BINDING(curwin); - #ifdef FEAT_DIFF - curwin->w_p_diff = FALSE; - #endif -*** ../vim-7.3.070/src/option.c 2010-10-13 14:05:29.000000000 +0200 ---- src/option.c 2010-12-02 15:12:02.000000000 +0100 -*************** -*** 9756,9761 **** ---- 9759,9767 ---- - #ifdef FEAT_SCROLLBIND - to->wo_scb = from->wo_scb; - #endif -+ #ifdef FEAT_CURSORBIND -+ to->wo_crb = from->wo_crb; -+ #endif - #ifdef FEAT_SPELL - to->wo_spell = from->wo_spell; - #endif -*** ../vim-7.3.070/src/version.c 2010-12-02 14:47:56.000000000 +0100 ---- src/version.c 2010-12-02 15:31:12.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 71, - /**/ - --- -A salesperson says: Translation: -"backward compatible" Old technology -"Premium" Overpriced -"Can't keep it on the shelf" Unavailable -"Stands alone" Piece of shit -"Proprietary" Incompatible - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.072 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.072 -Problem: Can't complete file names while ignoring case. -Solution: Add 'wildignorecase'. -Files: src/ex_docmd.c, src/ex_getln.c, src/misc1.c, src/option.c, - src/option.h, src/vim.h, runtime/doc/options.txt - - -*** ../vim-7.3.071/src/ex_docmd.c 2010-11-24 15:50:54.000000000 +0100 ---- src/ex_docmd.c 2010-12-02 15:58:10.000000000 +0100 -*************** -*** 4524,4535 **** - else /* n == 2 */ - { - expand_T xpc; - - ExpandInit(&xpc); - xpc.xp_context = EXPAND_FILES; - p = ExpandOne(&xpc, eap->arg, NULL, -! WILD_LIST_NOTFOUND|WILD_ADD_SLASH, -! WILD_EXPAND_FREE); - if (p == NULL) - return FAIL; - } ---- 4524,4537 ---- - else /* n == 2 */ - { - expand_T xpc; -+ int options = WILD_LIST_NOTFOUND|WILD_ADD_SLASH; - - ExpandInit(&xpc); - xpc.xp_context = EXPAND_FILES; -+ if (p_wic) -+ options += WILD_ICASE; - p = ExpandOne(&xpc, eap->arg, NULL, -! options, WILD_EXPAND_FREE); - if (p == NULL) - return FAIL; - } -*** ../vim-7.3.071/src/ex_getln.c 2010-11-16 14:05:48.000000000 +0100 ---- src/ex_getln.c 2010-11-28 15:07:49.000000000 +0100 -*************** -*** 3339,3348 **** - p2 = NULL; - else - { - p2 = ExpandOne(xp, p1, - vim_strnsave(&ccline.cmdbuff[i], xp->xp_pattern_len), -! WILD_HOME_REPLACE|WILD_ADD_SLASH|WILD_SILENT|WILD_ESCAPE -! |options, type); - vim_free(p1); - /* longest match: make sure it is not shorter, happens with :help */ - if (p2 != NULL && type == WILD_LONGEST) ---- 3339,3352 ---- - p2 = NULL; - else - { -+ int use_options = options | -+ WILD_HOME_REPLACE|WILD_ADD_SLASH|WILD_SILENT|WILD_ESCAPE; -+ -+ if (p_wic) -+ use_options += WILD_ICASE; - p2 = ExpandOne(xp, p1, - vim_strnsave(&ccline.cmdbuff[i], xp->xp_pattern_len), -! use_options, type); - vim_free(p1); - /* longest match: make sure it is not shorter, happens with :help */ - if (p2 != NULL && type == WILD_LONGEST) -*************** -*** 3428,3433 **** ---- 3432,3438 ---- - * options = WILD_KEEP_ALL: don't remove 'wildignore' entries - * options = WILD_SILENT: don't print warning messages - * options = WILD_ESCAPE: put backslash before special chars -+ * options = WILD_ICASE: ignore case for files - * - * The variables xp->xp_context and xp->xp_backslash must have been set! - */ -*************** -*** 4361,4366 **** ---- 4366,4372 ---- - char_u ***matches; /* return: array of pointers to matches */ - { - char_u *file_str = NULL; -+ int options = WILD_ADD_SLASH|WILD_SILENT; - - if (xp->xp_context == EXPAND_UNSUCCESSFUL) - { -*************** -*** 4379,4387 **** - if (file_str == NULL) - return EXPAND_UNSUCCESSFUL; - - /* find all files that match the description */ -! if (ExpandFromContext(xp, file_str, matchcount, matches, -! WILD_ADD_SLASH|WILD_SILENT) == FAIL) - { - *matchcount = 0; - *matches = NULL; ---- 4385,4395 ---- - if (file_str == NULL) - return EXPAND_UNSUCCESSFUL; - -+ if (p_wic) -+ options += WILD_ICASE; -+ - /* find all files that match the description */ -! if (ExpandFromContext(xp, file_str, matchcount, matches, options) == FAIL) - { - *matchcount = 0; - *matches = NULL; -*************** -*** 4433,4439 **** - char_u *pat; - int *num_file; - char_u ***file; -! int options; - { - #ifdef FEAT_CMDL_COMPL - regmatch_T regmatch; ---- 4441,4447 ---- - char_u *pat; - int *num_file; - char_u ***file; -! int options; /* EW_ flags */ - { - #ifdef FEAT_CMDL_COMPL - regmatch_T regmatch; -*************** -*** 4487,4492 **** ---- 4495,4503 ---- - flags |= (EW_FILE | EW_PATH); - else - flags = (flags | EW_DIR) & ~EW_FILE; -+ if (options & WILD_ICASE) -+ flags |= EW_ICASE; -+ - /* Expand wildcards, supporting %:h and the like. */ - ret = expand_wildcards_eval(&pat, num_file, file, flags); - if (free_pat) -*** ../vim-7.3.071/src/misc1.c 2010-08-16 21:46:12.000000000 +0200 ---- src/misc1.c 2010-11-28 15:02:57.000000000 +0100 -*************** -*** 9161,9167 **** - #ifdef CASE_INSENSITIVE_FILENAME - regmatch.rm_ic = TRUE; /* Behave like Terminal.app */ - #else -! regmatch.rm_ic = FALSE; /* Don't ever ignore case */ - #endif - regmatch.regprog = vim_regcomp(pat, RE_MAGIC); - vim_free(pat); ---- 9161,9170 ---- - #ifdef CASE_INSENSITIVE_FILENAME - regmatch.rm_ic = TRUE; /* Behave like Terminal.app */ - #else -! if (flags & EW_ICASE) -! regmatch.rm_ic = TRUE; /* 'wildignorecase' set */ -! else -! regmatch.rm_ic = FALSE; /* Don't ignore case */ - #endif - regmatch.regprog = vim_regcomp(pat, RE_MAGIC); - vim_free(pat); -*************** -*** 9643,9649 **** - if (paths == NULL) - return 0; - -! files = globpath(paths, pattern, 0); - vim_free(paths); - if (files == NULL) - return 0; ---- 9646,9652 ---- - if (paths == NULL) - return 0; - -! files = globpath(paths, pattern, (flags & EW_ICASE) ? WILD_ICASE : 0); - vim_free(paths); - if (files == NULL) - return 0; -*** ../vim-7.3.071/src/option.c 2010-12-02 15:33:10.000000000 +0100 ---- src/option.c 2010-12-02 15:12:02.000000000 +0100 -*************** -*** 2740,2746 **** - (char_u *)&p_wc, PV_NONE, - {(char_u *)(long)Ctrl_E, (char_u *)(long)TAB} - SCRIPTID_INIT}, -! {"wildcharm", "wcm", P_NUM|P_VI_DEF, - (char_u *)&p_wcm, PV_NONE, - {(char_u *)0L, (char_u *)0L} SCRIPTID_INIT}, - {"wildignore", "wig", P_STRING|P_VI_DEF|P_COMMA|P_NODUP, ---- 2740,2746 ---- - (char_u *)&p_wc, PV_NONE, - {(char_u *)(long)Ctrl_E, (char_u *)(long)TAB} - SCRIPTID_INIT}, -! {"wildcharm", "wcm", P_NUM|P_VI_DEF, - (char_u *)&p_wcm, PV_NONE, - {(char_u *)0L, (char_u *)0L} SCRIPTID_INIT}, - {"wildignore", "wig", P_STRING|P_VI_DEF|P_COMMA|P_NODUP, -*************** -*** 2750,2755 **** ---- 2750,2758 ---- - (char_u *)NULL, PV_NONE, - #endif - {(char_u *)"", (char_u *)0L} SCRIPTID_INIT}, -+ {"wildignorecase", "wic", P_BOOL|P_VI_DEF, -+ (char_u *)&p_wic, PV_NONE, -+ {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT}, - {"wildmenu", "wmnu", P_BOOL|P_VI_DEF, - #ifdef FEAT_WILDMENU - (char_u *)&p_wmnu, PV_NONE, -*** ../vim-7.3.071/src/option.h 2010-08-15 21:57:28.000000000 +0200 ---- src/option.h 2010-11-28 14:29:18.000000000 +0100 -*************** -*** 872,877 **** ---- 872,878 ---- - EXTERN char_u *p_ww; /* 'whichwrap' */ - EXTERN long p_wc; /* 'wildchar' */ - EXTERN long p_wcm; /* 'wildcharm' */ -+ EXTERN long p_wic; /* 'wildignorecase' */ - EXTERN char_u *p_wim; /* 'wildmode' */ - #ifdef FEAT_WILDMENU - EXTERN int p_wmnu; /* 'wildmenu' */ -*** ../vim-7.3.071/src/vim.h 2010-10-20 19:17:43.000000000 +0200 ---- src/vim.h 2010-11-28 14:49:02.000000000 +0100 -*************** -*** 798,803 **** ---- 798,804 ---- - #define WILD_KEEP_ALL 32 - #define WILD_SILENT 64 - #define WILD_ESCAPE 128 -+ #define WILD_ICASE 256 - - /* Flags for expand_wildcards() */ - #define EW_DIR 0x01 /* include directory names */ -*************** -*** 808,813 **** ---- 809,815 ---- - #define EW_SILENT 0x20 /* don't print "1 returned" from shell */ - #define EW_EXEC 0x40 /* executable files */ - #define EW_PATH 0x80 /* search in 'path' too */ -+ #define EW_ICASE 0x100 /* ignore case */ - /* Note: mostly EW_NOTFOUND and EW_SILENT are mutually exclusive: EW_NOTFOUND - * is used when executing commands and EW_SILENT for interactive expanding. */ - -*** ../vim-7.3.071/runtime/doc/options.txt 2010-10-20 17:44:01.000000000 +0200 ---- runtime/doc/options.txt 2010-12-02 11:15:01.000000000 +0100 -*************** -*** 7748,7753 **** ---- 7756,7772 ---- - a pattern from the list. This avoids problems when a future version - uses another default. - -+ -+ *'wildignorecase* *'wic'* *'nowildignorecase* *'nowic'* -+ 'wildignorecase' 'wic' boolean (default off) -+ global -+ {not in Vi} -+ When set case is ignored when completing file names and directories. -+ Has no effect on systems where file name case is generally ignored. -+ Does not apply when the shell is used to expand wildcards, which -+ happens when there are special characters. -+ -+ - *'wildmenu'* *'wmnu'* *'nowildmenu'* *'nowmnu'* - 'wildmenu' 'wmnu' boolean (default off) - global -*** ../vim-7.3.071/src/version.c 2010-12-02 15:33:10.000000000 +0100 ---- src/version.c 2010-12-02 15:57:14.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 72, - /**/ - --- -I recommend ordering large cargo containers of paper towels to make up -whatever budget underruns you have. Paper products are always useful and they -have the advantage of being completely flushable if you need to make room in -the storage area later. - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.073 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.073 -Problem: Double free memory when netbeans command follows DETACH. -Solution: Only free the node when owned. (Xavier de Gaye) -Files: src/netbeans.c - - -*** ../vim-7.3.072/src/netbeans.c 2010-11-16 15:48:57.000000000 +0100 ---- src/netbeans.c 2010-12-02 16:59:11.000000000 +0100 -*************** -*** 643,648 **** ---- 643,649 ---- - { - char_u *p; - queue_T *node; -+ int own_node; - - while (head.next != NULL && head.next != &head) - { -*************** -*** 681,700 **** - *p++ = NUL; - if (*p == NUL) - { - head.next = node->next; - node->next->prev = node->prev; - } - - /* now, parse and execute the commands */ - nb_parse_cmd(node->buffer); - -! if (*p == NUL) - { - /* buffer finished, dispose of the node and buffer */ - vim_free(node->buffer); - vim_free(node); - } -! else - { - /* more follows, move to the start */ - STRMOVE(node->buffer, p); ---- 682,706 ---- - *p++ = NUL; - if (*p == NUL) - { -+ own_node = TRUE; - head.next = node->next; - node->next->prev = node->prev; - } -+ else -+ own_node = FALSE; - - /* now, parse and execute the commands */ - nb_parse_cmd(node->buffer); - -! if (own_node) - { - /* buffer finished, dispose of the node and buffer */ - vim_free(node->buffer); - vim_free(node); - } -! /* Check that "head" wasn't changed under our fingers, e.g. when a -! * DETACH command was handled. */ -! else if (head.next == node) - { - /* more follows, move to the start */ - STRMOVE(node->buffer, p); -*** ../vim-7.3.072/src/version.c 2010-12-02 16:01:23.000000000 +0100 ---- src/version.c 2010-12-02 17:00:29.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 73, - /**/ - --- -If the Universe is constantly expanding, why can't I ever find a parking space? - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.074 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.074 -Problem: Can't use the "+ register like "* for yank and put. -Solution: Add "unnamedplus" to the 'clipboard' option. (Ivan Krasilnikov) -Files: runtime/doc/options.txt, src/eval.c, src/globals.h, src/ops.c, - src/option.c - - -*** ../vim-7.3.073/runtime/doc/options.txt 2010-12-02 16:01:23.000000000 +0100 ---- runtime/doc/options.txt 2010-12-02 21:22:48.000000000 +0100 -*************** -*** 1434,1439 **** ---- 1434,1448 ---- - explicitly accessed using the "* notation. Also see - |gui-clipboard|. - -+ unnamedplus A variant of "unnamed" flag which uses the clipboard -+ register '+' (|quoteplus|) instead of register '*' for -+ all operations except yank. Yank shall copy the text -+ into register '+' and also into '*' when "unnamed" is -+ included. -+ Only available with the |+x11| feature. -+ Availability can be checked with: > -+ if has('unnamedplus') -+ < - autoselect Works like the 'a' flag in 'guioptions': If present, - then whenever Visual mode is started, or the Visual - area extended, Vim tries to become the owner of the -*** ../vim-7.3.073/src/eval.c 2010-12-02 14:47:56.000000000 +0100 ---- src/eval.c 2010-12-02 17:30:23.000000000 +0100 -*************** -*** 12135,12140 **** ---- 12139,12147 ---- - #ifdef FEAT_TOOLBAR - "toolbar", - #endif -+ #if defined(FEAT_CLIPBOARD) && defined(FEAT_X11) -+ "unnamedplus", -+ #endif - #ifdef FEAT_USR_CMDS - "user-commands", /* was accidentally included in 5.4 */ - "user_commands", -*** ../vim-7.3.073/src/globals.h 2010-11-24 14:28:53.000000000 +0100 ---- src/globals.h 2010-12-02 20:07:42.000000000 +0100 -*************** -*** 512,518 **** - # define clip_plus clip_star /* there is only one clipboard */ - # define ONE_CLIPBOARD - # endif -! EXTERN int clip_unnamed INIT(= FALSE); - EXTERN int clip_autoselect INIT(= FALSE); - EXTERN int clip_autoselectml INIT(= FALSE); - EXTERN int clip_html INIT(= FALSE); ---- 512,522 ---- - # define clip_plus clip_star /* there is only one clipboard */ - # define ONE_CLIPBOARD - # endif -! -! #define CLIP_UNNAMED 1 -! #define CLIP_UNNAMED_PLUS 2 -! EXTERN int clip_unnamed INIT(= 0); /* above two values or'ed */ -! - EXTERN int clip_autoselect INIT(= FALSE); - EXTERN int clip_autoselectml INIT(= FALSE); - EXTERN int clip_html INIT(= FALSE); -*** ../vim-7.3.073/src/ops.c 2010-11-24 14:28:53.000000000 +0100 ---- src/ops.c 2010-12-02 21:33:04.000000000 +0100 -*************** -*** 1584,1592 **** - adjust_clip_reg(rp) - int *rp; - { -! /* If no reg. specified, and "unnamed" is in 'clipboard', use '*' reg. */ -! if (*rp == 0 && clip_unnamed) -! *rp = '*'; - if (!clip_star.available && *rp == '*') - *rp = 0; - if (!clip_plus.available && *rp == '+') ---- 1584,1594 ---- - adjust_clip_reg(rp) - int *rp; - { -! /* If no reg. specified, and "unnamed" or "unnamedplus" is in 'clipboard', -! * use '*' or '+' reg, respectively. "unnamedplus" prevails. */ -! if (*rp == 0 && clip_unnamed != 0) -! *rp = ((clip_unnamed & CLIP_UNNAMED_PLUS) && clip_plus.available) -! ? '+' : '*'; - if (!clip_star.available && *rp == '*') - *rp = 0; - if (!clip_plus.available && *rp == '+') -*************** -*** 2842,2847 **** ---- 2844,2850 ---- - char_u *p; - char_u *pnew; - struct block_def bd; -+ int did_star = FALSE; - - /* check for read-only register */ - if (oap->regname != 0 && !valid_yank_reg(oap->regname, TRUE)) -*************** -*** 3115,3121 **** - */ - if (clip_star.available - && (curr == &(y_regs[STAR_REGISTER]) -! || (!deleting && oap->regname == 0 && clip_unnamed))) - { - if (curr != &(y_regs[STAR_REGISTER])) - /* Copy the text from register 0 to the clipboard register. */ ---- 3118,3125 ---- - */ - if (clip_star.available - && (curr == &(y_regs[STAR_REGISTER]) -! || (!deleting && oap->regname == 0 -! && (clip_unnamed & CLIP_UNNAMED)))) - { - if (curr != &(y_regs[STAR_REGISTER])) - /* Copy the text from register 0 to the clipboard register. */ -*************** -*** 3123,3128 **** ---- 3127,3133 ---- - - clip_own_selection(&clip_star); - clip_gen_set_selection(&clip_star); -+ did_star = TRUE; - } - - # ifdef FEAT_X11 -*************** -*** 3130,3141 **** - * If we were yanking to the '+' register, send result to selection. - * Also copy to the '*' register, in case auto-select is off. - */ -! else if (clip_plus.available && curr == &(y_regs[PLUS_REGISTER])) - { - /* No need to copy to * register upon 'unnamed' now - see below */ - clip_own_selection(&clip_plus); - clip_gen_set_selection(&clip_plus); -! if (!clip_isautosel()) - { - copy_yank_reg(&(y_regs[STAR_REGISTER])); - clip_own_selection(&clip_star); ---- 3135,3153 ---- - * If we were yanking to the '+' register, send result to selection. - * Also copy to the '*' register, in case auto-select is off. - */ -! if (clip_plus.available -! && (curr == &(y_regs[PLUS_REGISTER]) -! || (!deleting && oap->regname == 0 -! && (clip_unnamed & CLIP_UNNAMED_PLUS)))) - { -+ if (curr != &(y_regs[PLUS_REGISTER])) -+ /* Copy the text from register 0 to the clipboard register. */ -+ copy_yank_reg(&(y_regs[PLUS_REGISTER])); -+ - /* No need to copy to * register upon 'unnamed' now - see below */ - clip_own_selection(&clip_plus); - clip_gen_set_selection(&clip_plus); -! if (!clip_isautosel() && !did_star) - { - copy_yank_reg(&(y_regs[STAR_REGISTER])); - clip_own_selection(&clip_star); -*** ../vim-7.3.073/src/option.c 2010-12-02 16:01:23.000000000 +0100 ---- src/option.c 2010-12-02 21:41:32.000000000 +0100 -*************** -*** 7307,7313 **** - static char_u * - check_clipboard_option() - { -! int new_unnamed = FALSE; - int new_autoselect = FALSE; - int new_autoselectml = FALSE; - int new_html = FALSE; ---- 7307,7313 ---- - static char_u * - check_clipboard_option() - { -! int new_unnamed = 0; - int new_autoselect = FALSE; - int new_autoselectml = FALSE; - int new_html = FALSE; -*************** -*** 7319,7327 **** - { - if (STRNCMP(p, "unnamed", 7) == 0 && (p[7] == ',' || p[7] == NUL)) - { -! new_unnamed = TRUE; - p += 7; - } - else if (STRNCMP(p, "autoselect", 10) == 0 - && (p[10] == ',' || p[10] == NUL)) - { ---- 7319,7333 ---- - { - if (STRNCMP(p, "unnamed", 7) == 0 && (p[7] == ',' || p[7] == NUL)) - { -! new_unnamed |= CLIP_UNNAMED; - p += 7; - } -+ else if (STRNCMP(p, "unnamedplus", 11) == 0 -+ && (p[11] == ',' || p[11] == NUL)) -+ { -+ new_unnamed |= CLIP_UNNAMED_PLUS; -+ p += 11; -+ } - else if (STRNCMP(p, "autoselect", 10) == 0 - && (p[10] == ',' || p[10] == NUL)) - { -*** ../vim-7.3.073/src/version.c 2010-12-02 17:09:48.000000000 +0100 ---- src/version.c 2010-12-02 21:34:40.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 74, - /**/ - --- -The budget process was invented by an alien race of sadistic beings who -resemble large cats. - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.075 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.075 (after 7.3.072) -Problem: Missing part of 'wildignorecase' -Solution: Also adjust expand() -Files: src/eval.c - - -*** ../vim-7.3.074/src/eval.c 2010-12-02 21:43:10.000000000 +0100 ---- src/eval.c 2010-12-02 17:30:23.000000000 +0100 -*************** -*** 9876,9882 **** - char_u *s; - int len; - char_u *errormsg; -! int flags = WILD_SILENT|WILD_USE_NL|WILD_LIST_NOTFOUND; - expand_T xpc; - int error = FALSE; - ---- 9876,9882 ---- - char_u *s; - int len; - char_u *errormsg; -! int options = WILD_SILENT|WILD_USE_NL|WILD_LIST_NOTFOUND; - expand_T xpc; - int error = FALSE; - -*************** -*** 9894,9905 **** - * for 'wildignore' and don't put matches for 'suffixes' at the end. */ - if (argvars[1].v_type != VAR_UNKNOWN - && get_tv_number_chk(&argvars[1], &error)) -! flags |= WILD_KEEP_ALL; - if (!error) - { - ExpandInit(&xpc); - xpc.xp_context = EXPAND_FILES; -! rettv->vval.v_string = ExpandOne(&xpc, s, NULL, flags, WILD_ALL); - } - else - rettv->vval.v_string = NULL; ---- 9894,9907 ---- - * for 'wildignore' and don't put matches for 'suffixes' at the end. */ - if (argvars[1].v_type != VAR_UNKNOWN - && get_tv_number_chk(&argvars[1], &error)) -! options |= WILD_KEEP_ALL; - if (!error) - { - ExpandInit(&xpc); - xpc.xp_context = EXPAND_FILES; -! if (p_wic) -! options += WILD_ICASE; -! rettv->vval.v_string = ExpandOne(&xpc, s, NULL, options, WILD_ALL); - } - else - rettv->vval.v_string = NULL; -*************** -*** 11672,11678 **** - typval_T *argvars; - typval_T *rettv; - { -! int flags = WILD_SILENT|WILD_USE_NL; - expand_T xpc; - int error = FALSE; - ---- 11674,11680 ---- - typval_T *argvars; - typval_T *rettv; - { -! int options = WILD_SILENT|WILD_USE_NL; - expand_T xpc; - int error = FALSE; - -*************** -*** 11680,11693 **** - * for 'wildignore' and don't put matches for 'suffixes' at the end. */ - if (argvars[1].v_type != VAR_UNKNOWN - && get_tv_number_chk(&argvars[1], &error)) -! flags |= WILD_KEEP_ALL; - rettv->v_type = VAR_STRING; - if (!error) - { - ExpandInit(&xpc); - xpc.xp_context = EXPAND_FILES; - rettv->vval.v_string = ExpandOne(&xpc, get_tv_string(&argvars[0]), -! NULL, flags, WILD_ALL); - } - else - rettv->vval.v_string = NULL; ---- 11682,11697 ---- - * for 'wildignore' and don't put matches for 'suffixes' at the end. */ - if (argvars[1].v_type != VAR_UNKNOWN - && get_tv_number_chk(&argvars[1], &error)) -! options |= WILD_KEEP_ALL; - rettv->v_type = VAR_STRING; - if (!error) - { - ExpandInit(&xpc); - xpc.xp_context = EXPAND_FILES; -+ if (p_wic) -+ options += WILD_ICASE; - rettv->vval.v_string = ExpandOne(&xpc, get_tv_string(&argvars[0]), -! NULL, options, WILD_ALL); - } - else - rettv->vval.v_string = NULL; -*** ../vim-7.3.074/src/version.c 2010-12-02 21:43:10.000000000 +0100 ---- src/version.c 2010-12-02 21:43:59.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 75, - /**/ - --- -Engineers will go without food and hygiene for days to solve a problem. -(Other times just because they forgot.) - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.076 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.076 -Problem: Clang warnings for dead code. -Solution: Remove it. (Carlo Teubner) -Files: src/gui_gtk.c, src/if_ruby.c, src/misc2.c, src/netbeans.c, - src/spell.c - - -*** ../vim-7.3.075/src/gui_gtk.c 2010-11-24 18:48:08.000000000 +0100 ---- src/gui_gtk.c 2010-12-08 12:25:17.000000000 +0100 -*************** -*** 1798,1804 **** - char_u *repl_text; - gboolean direction_down; - SharedFindReplace *sfr; -- int rc; - - flags = (int)(long)data; /* avoid a lint warning here */ - ---- 1798,1803 ---- -*************** -*** 1824,1830 **** - - repl_text = CONVERT_FROM_UTF8(repl_text); - find_text = CONVERT_FROM_UTF8(find_text); -! rc = gui_do_findrepl(flags, find_text, repl_text, direction_down); - CONVERT_FROM_UTF8_FREE(repl_text); - CONVERT_FROM_UTF8_FREE(find_text); - } ---- 1823,1829 ---- - - repl_text = CONVERT_FROM_UTF8(repl_text); - find_text = CONVERT_FROM_UTF8(find_text); -! gui_do_findrepl(flags, find_text, repl_text, direction_down); - CONVERT_FROM_UTF8_FREE(repl_text); - CONVERT_FROM_UTF8_FREE(find_text); - } -*** ../vim-7.3.075/src/if_ruby.c 2010-11-24 17:03:34.000000000 +0100 ---- src/if_ruby.c 2010-12-08 12:30:38.000000000 +0100 -*************** -*** 586,594 **** - if (u_save(eap->line1 - 1, eap->line2 + 1) != OK) - return; - for (i = eap->line1; i <= eap->line2; i++) { -! VALUE line, oldline; - -! line = oldline = vim_str2rb_enc_str((char *)ml_get(i)); - rb_lastline_set(line); - eval_enc_string_protect((char *) eap->arg, &state); - if (state) { ---- 586,594 ---- - if (u_save(eap->line1 - 1, eap->line2 + 1) != OK) - return; - for (i = eap->line1; i <= eap->line2; i++) { -! VALUE line; - -! line = vim_str2rb_enc_str((char *)ml_get(i)); - rb_lastline_set(line); - eval_enc_string_protect((char *) eap->arg, &state); - if (state) { -*** ../vim-7.3.075/src/misc2.c 2010-08-15 21:57:32.000000000 +0200 ---- src/misc2.c 2010-12-08 12:42:44.000000000 +0100 -*************** -*** 200,206 **** - } - #endif - -- idx = -1; - ptr = line; - while (col <= wcol && *ptr != NUL) - { ---- 200,205 ---- -*************** -*** 1223,1229 **** - #endif - - /* -! * copy a string into newly allocated memory - */ - char_u * - vim_strsave(string) ---- 1222,1228 ---- - #endif - - /* -! * Copy "string" into newly allocated memory. - */ - char_u * - vim_strsave(string) -*************** -*** 1239,1244 **** ---- 1238,1249 ---- - return p; - } - -+ /* -+ * Copy up to "len" bytes of "string" into newly allocated memory and -+ * terminate with a NUL. -+ * The allocated memory always has size "len + 1", also when "string" is -+ * shorter. -+ */ - char_u * - vim_strnsave(string, len) - char_u *string; -*** ../vim-7.3.075/src/netbeans.c 2010-12-02 17:09:48.000000000 +0100 ---- src/netbeans.c 2010-12-08 12:43:57.000000000 +0100 -*************** -*** 960,966 **** - keyQ_T *key_node = keyHead.next; - queue_T *cmd_node = head.next; - nbbuf_T buf; -- buf_T *bufp; - int i; - - /* free the netbeans buffer list */ ---- 960,965 ---- -*************** -*** 969,975 **** - buf = buf_list[i]; - vim_free(buf.displayname); - vim_free(buf.signmap); -! if ((bufp=buf.bufp) != NULL) - { - buf.bufp->b_netbeans_file = FALSE; - buf.bufp->b_was_netbeans_file = FALSE; ---- 968,974 ---- - buf = buf_list[i]; - vim_free(buf.displayname); - vim_free(buf.signmap); -! if (buf.bufp != NULL) - { - buf.bufp->b_netbeans_file = FALSE; - buf.bufp->b_was_netbeans_file = FALSE; -*** ../vim-7.3.075/src/spell.c 2010-09-29 18:32:47.000000000 +0200 ---- src/spell.c 2010-12-08 12:47:13.000000000 +0100 -*************** -*** 9839,9848 **** - { - /* be quick for ASCII */ - if (wp->w_s->b_spell_ismw[*p]) -- { - s = p + 1; /* skip a mid-word character */ -- l = MB_BYTE2LEN(*s); -- } - } - else - { ---- 9839,9845 ---- -*************** -*** 9850,9859 **** - if (c < 256 ? wp->w_s->b_spell_ismw[c] - : (wp->w_s->b_spell_ismw_mb != NULL - && vim_strchr(wp->w_s->b_spell_ismw_mb, c) != NULL)) -- { - s = p + l; -- l = MB_BYTE2LEN(*s); -- } - } - - c = mb_ptr2char(s); ---- 9847,9853 ---- -*************** -*** 13813,13823 **** - su->su_sfmaxscore = cleanup_suggestions(gap, - su->su_sfmaxscore, SUG_CLEAN_COUNT(su)); - else -- { -- i = su->su_maxscore; - su->su_maxscore = cleanup_suggestions(gap, - su->su_maxscore, SUG_CLEAN_COUNT(su)); -- } - } - } - } ---- 13807,13814 ---- -*** ../vim-7.3.075/src/version.c 2010-12-02 21:44:35.000000000 +0100 ---- src/version.c 2010-12-08 13:10:00.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 76, - /**/ - --- -Never enter the boss's office unless it's absolutely necessary. Every boss -saves one corner of the desk for useless assignments that are doled out like -Halloween candy to each visitor. - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.077 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.077 -Problem: When updating crypt of swapfile fails there is no error message. - (Carlo Teubner) -Solution: Add the error message. -Files: src/memline.c - - -*** ../vim-7.3.076/src/memline.c 2010-08-15 21:57:31.000000000 +0200 ---- src/memline.c 2010-12-08 12:39:10.000000000 +0100 -*************** -*** 582,587 **** ---- 582,590 ---- - idx = ip->ip_index + 1; /* go to next index */ - page_count = 1; - } -+ -+ if (error > 0) -+ EMSG(_("E843: Error while updating swap file crypt")); - } - - mfp->mf_old_key = NULL; -*************** -*** 2384,2390 **** - * Make a copy of the line if necessary. - */ - /* -! * get a pointer to a (read-only copy of a) line - * - * On failure an error message is given and IObuff is returned (to avoid - * having to check for error everywhere). ---- 2387,2393 ---- - * Make a copy of the line if necessary. - */ - /* -! * Return a pointer to a (read-only copy of a) line. - * - * On failure an error message is given and IObuff is returned (to avoid - * having to check for error everywhere). -*************** -*** 2397,2403 **** - } - - /* -! * ml_get_pos: get pointer to position 'pos' - */ - char_u * - ml_get_pos(pos) ---- 2400,2406 ---- - } - - /* -! * Return pointer to position "pos". - */ - char_u * - ml_get_pos(pos) -*************** -*** 2407,2413 **** - } - - /* -! * ml_get_curline: get pointer to cursor line. - */ - char_u * - ml_get_curline() ---- 2410,2416 ---- - } - - /* -! * Return pointer to cursor line. - */ - char_u * - ml_get_curline() -*************** -*** 2416,2422 **** - } - - /* -! * ml_get_cursor: get pointer to cursor position - */ - char_u * - ml_get_cursor() ---- 2419,2425 ---- - } - - /* -! * Return pointer to cursor position. - */ - char_u * - ml_get_cursor() -*************** -*** 2426,2432 **** - } - - /* -! * get a pointer to a line in a specific buffer - * - * "will_change": if TRUE mark the buffer dirty (chars in the line will be - * changed) ---- 2429,2435 ---- - } - - /* -! * Return a pointer to a line in a specific buffer - * - * "will_change": if TRUE mark the buffer dirty (chars in the line will be - * changed) -*** ../vim-7.3.076/src/version.c 2010-12-08 13:11:15.000000000 +0100 ---- src/version.c 2010-12-08 13:15:44.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 77, - /**/ - --- -An operatingsystem is just a name you give to the rest of bloating -idiosyncratic machine-based-features you left out of your editor. - (author unknown) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.078 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.078 -Problem: Warning for unused variable. -Solution: Adjuste #ifdefs. -Files: src/ops.c - - -*** ../vim-7.3.077/src/ops.c 2010-12-02 21:43:10.000000000 +0100 ---- src/ops.c 2010-12-08 14:21:48.000000000 +0100 -*************** -*** 2844,2850 **** ---- 2844,2852 ---- - char_u *p; - char_u *pnew; - struct block_def bd; -+ #if defined(FEAT_CLIPBOARD) && defined(FEAT_X11) - int did_star = FALSE; -+ #endif - - /* check for read-only register */ - if (oap->regname != 0 && !valid_yank_reg(oap->regname, TRUE)) -*************** -*** 3127,3133 **** ---- 3129,3137 ---- - - clip_own_selection(&clip_star); - clip_gen_set_selection(&clip_star); -+ # ifdef FEAT_X11 - did_star = TRUE; -+ # endif - } - - # ifdef FEAT_X11 -*** ../vim-7.3.077/src/version.c 2010-12-08 13:16:58.000000000 +0100 ---- src/version.c 2010-12-08 14:22:42.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 78, - /**/ - --- -A)bort, R)etry, D)o it right this time - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.079 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.079 -Problem: Duplicate lines in makefile. -Solution: Remove the lines. (Hong Xu) -Files: src/Make_mvc.mak - - -*** ../vim-7.3.078/src/Make_mvc.mak 2010-11-03 21:59:23.000000000 +0100 ---- src/Make_mvc.mak 2010-12-08 14:53:16.000000000 +0100 -*************** -*** 380,388 **** - !if "$(_NMAKE_VER)" == "10.00.30319.01" - MSVCVER = 10.0 - !endif -- !if "$(_NMAKE_VER)" == "9.00.30729.01" -- MSVCVER = 9.0 -- !endif - !endif - - # Abort bulding VIM if version of VC is unrecognised. ---- 380,385 ---- -*** ../vim-7.3.078/src/version.c 2010-12-08 14:23:08.000000000 +0100 ---- src/version.c 2010-12-08 14:54:02.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 79, - /**/ - --- -login: yes -password: I don't know, please tell me -password is incorrect -login: yes -password: incorrect - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.080 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.080 -Problem: Spell doesn't work on VMS. -Solution: Use different file names. (Zoltan Bartos, Zoltan Arpadffy) -Files: src/spell.c - - -*** ../vim-7.3.079/src/spell.c 2010-12-08 13:11:15.000000000 +0100 ---- src/spell.c 2010-12-08 17:01:13.000000000 +0100 -*************** -*** 327,332 **** ---- 327,342 ---- - typedef long idx_T; - #endif - -+ #ifdef VMS -+ # define SPL_FNAME_TMPL "%s_%s.spl" -+ # define SPL_FNAME_ADD "_add." -+ # define SPL_FNAME_ASCII "_ascii." -+ #else -+ # define SPL_FNAME_TMPL "%s.%s.spl" -+ # define SPL_FNAME_ADD ".add." -+ # define SPL_FNAME_ASCII ".ascii." -+ #endif -+ - /* Flags used for a word. Only the lowest byte can be used, the region byte - * comes above it. */ - #define WF_REGION 0x01 /* region byte follows */ -*************** -*** 2471,2484 **** - * Find the first spell file for "lang" in 'runtimepath' and load it. - */ - vim_snprintf((char *)fname_enc, sizeof(fname_enc) - 5, -! "spell/%s.%s.spl", lang, spell_enc()); - r = do_in_runtimepath(fname_enc, FALSE, spell_load_cb, &sl); - - if (r == FAIL && *sl.sl_lang != NUL) - { - /* Try loading the ASCII version. */ - vim_snprintf((char *)fname_enc, sizeof(fname_enc) - 5, -! "spell/%s.ascii.spl", lang); - r = do_in_runtimepath(fname_enc, FALSE, spell_load_cb, &sl); - - #ifdef FEAT_AUTOCMD ---- 2481,2504 ---- - * Find the first spell file for "lang" in 'runtimepath' and load it. - */ - vim_snprintf((char *)fname_enc, sizeof(fname_enc) - 5, -! #ifdef VMS -! "spell/%s_%s.spl", -! #else -! "spell/%s.%s.spl", -! #endif -! lang, spell_enc()); - r = do_in_runtimepath(fname_enc, FALSE, spell_load_cb, &sl); - - if (r == FAIL && *sl.sl_lang != NUL) - { - /* Try loading the ASCII version. */ - vim_snprintf((char *)fname_enc, sizeof(fname_enc) - 5, -! #ifdef VMS -! "spell/%s_ascii.spl", -! #else -! "spell/%s.ascii.spl", -! #endif -! lang); - r = do_in_runtimepath(fname_enc, FALSE, spell_load_cb, &sl); - - #ifdef FEAT_AUTOCMD -*************** -*** 2496,2502 **** - - if (r == FAIL) - { -! smsg((char_u *)_("Warning: Cannot find word list \"%s.%s.spl\" or \"%s.ascii.spl\""), - lang, spell_enc(), lang); - } - else if (sl.sl_slang != NULL) ---- 2516,2527 ---- - - if (r == FAIL) - { -! smsg((char_u *) -! #ifdef VMS -! _("Warning: Cannot find word list \"%s_%s.spl\" or \"%s_ascii.spl\""), -! #else -! _("Warning: Cannot find word list \"%s.%s.spl\" or \"%s.ascii.spl\""), -! #endif - lang, spell_enc(), lang); - } - else if (sl.sl_slang != NULL) -*************** -*** 2530,2536 **** - int_wordlist_spl(fname) - char_u *fname; - { -! vim_snprintf((char *)fname, MAXPATHL, "%s.%s.spl", - int_wordlist, spell_enc()); - } - ---- 2555,2561 ---- - int_wordlist_spl(fname) - char_u *fname; - { -! vim_snprintf((char *)fname, MAXPATHL, SPL_FNAME_TMPL, - int_wordlist, spell_enc()); - } - -*************** -*** 2785,2792 **** - if (lp->sl_fname == NULL) - goto endFAIL; - -! /* Check for .add.spl. */ -! lp->sl_add = strstr((char *)gettail(fname), ".add.") != NULL; - } - else - lp = old_lp; ---- 2810,2817 ---- - if (lp->sl_fname == NULL) - goto endFAIL; - -! /* Check for .add.spl (_add.spl for VMS). */ -! lp->sl_add = strstr((char *)gettail(fname), SPL_FNAME_ADD) != NULL; - } - else - lp = old_lp; -*************** -*** 9109,9116 **** - /* For ":mkspell path/vim" output file is "path/vim.latin1.spl". */ - innames = &fnames[0]; - incount = 1; -! vim_snprintf((char *)wfname, sizeof(wfname), "%s.%s.spl", fnames[0], -! spin.si_ascii ? (char_u *)"ascii" : spell_enc()); - } - else if (len > 4 && STRCMP(fnames[0] + len - 4, ".spl") == 0) - { ---- 9134,9141 ---- - /* For ":mkspell path/vim" output file is "path/vim.latin1.spl". */ - innames = &fnames[0]; - incount = 1; -! vim_snprintf((char *)wfname, sizeof(wfname), SPL_FNAME_TMPL, -! fnames[0], spin.si_ascii ? (char_u *)"ascii" : spell_enc()); - } - else if (len > 4 && STRCMP(fnames[0] + len - 4, ".spl") == 0) - { -*************** -*** 9119,9133 **** - } - else - /* Name should be language, make the file name from it. */ -! vim_snprintf((char *)wfname, sizeof(wfname), "%s.%s.spl", fnames[0], -! spin.si_ascii ? (char_u *)"ascii" : spell_enc()); - - /* Check for .ascii.spl. */ -! if (strstr((char *)gettail(wfname), ".ascii.") != NULL) - spin.si_ascii = TRUE; - - /* Check for .add.spl. */ -! if (strstr((char *)gettail(wfname), ".add.") != NULL) - spin.si_add = TRUE; - } - ---- 9144,9158 ---- - } - else - /* Name should be language, make the file name from it. */ -! vim_snprintf((char *)wfname, sizeof(wfname), SPL_FNAME_TMPL, -! fnames[0], spin.si_ascii ? (char_u *)"ascii" : spell_enc()); - - /* Check for .ascii.spl. */ -! if (strstr((char *)gettail(wfname), SPL_FNAME_ASCII) != NULL) - spin.si_ascii = TRUE; - - /* Check for .add.spl. */ -! if (strstr((char *)gettail(wfname), SPL_FNAME_ADD) != NULL) - spin.si_add = TRUE; - } - -*** ../vim-7.3.079/src/version.c 2010-12-08 14:54:58.000000000 +0100 ---- src/version.c 2010-12-08 16:58:03.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 80, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -5. You find yourself brainstorming for new subjects to search. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.081 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.081 -Problem: Non-printable characters in 'statusline' cause trouble. (ZyX) -Solution: Use transstr(). (partly by Caio Ariede) -Files: src/screen.c - - -*** ../vim-7.3.080/src/screen.c 2010-08-15 21:57:32.000000000 +0200 ---- src/screen.c 2010-12-08 19:27:20.000000000 +0100 -*************** -*** 3405,3413 **** - # endif - ) - { -! int_u text_sign; - # ifdef FEAT_SIGN_ICONS -! int_u icon_sign; - # endif - - /* Draw two cells with the sign value or blank. */ ---- 3405,3413 ---- - # endif - ) - { -! int text_sign; - # ifdef FEAT_SIGN_ICONS -! int icon_sign; - # endif - - /* Draw two cells with the sign value or blank. */ -*************** -*** 6522,6529 **** - stl, use_sandbox, - fillchar, maxwidth, hltab, tabtab); - vim_free(stl); -- len = (int)STRLEN(buf); - - while (width < maxwidth && len < (int)sizeof(buf) - 1) - { - #ifdef FEAT_MBYTE ---- 6522,6538 ---- - stl, use_sandbox, - fillchar, maxwidth, hltab, tabtab); - vim_free(stl); - -+ /* Make all characters printable. */ -+ p = transstr(buf); -+ if (p != NULL) -+ { -+ vim_strncpy(buf, p, sizeof(buf) - 1); -+ vim_free(p); -+ } -+ -+ /* fill up with "fillchar" */ -+ len = (int)STRLEN(buf); - while (width < maxwidth && len < (int)sizeof(buf) - 1) - { - #ifdef FEAT_MBYTE -*** ../vim-7.3.080/src/version.c 2010-12-08 17:09:27.000000000 +0100 ---- src/version.c 2010-12-08 19:31:40.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 81, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -6. You refuse to go to a vacation spot with no electricity and no phone lines. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.082 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.082 -Problem: Leaking file descriptor when hostname doesn't exist. -Solution: Remove old debugging lines. -Files: src/netbeans.c - - -*** ../vim-7.3.081/src/netbeans.c 2010-12-08 13:11:15.000000000 +0100 ---- src/netbeans.c 2010-12-17 12:13:32.000000000 +0100 -*************** -*** 323,334 **** - server.sin_port = htons(port); - if ((host = gethostbyname(hostname)) == NULL) - { -- if (mch_access(hostname, R_OK) >= 0) -- { -- /* DEBUG: input file */ -- sd = mch_open(hostname, O_RDONLY, 0); -- goto theend; -- } - nbdebug(("error in gethostbyname() in netbeans_connect()\n")); - PERROR("gethostbyname() in netbeans_connect()"); - goto theend; ---- 323,328 ---- -*** ../vim-7.3.081/src/version.c 2010-12-08 19:56:52.000000000 +0100 ---- src/version.c 2010-12-17 12:17:11.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 82, - /**/ - --- -How To Keep A Healthy Level Of Insanity: -1. At lunch time, sit in your parked car with sunglasses on and point - a hair dryer at passing cars. See if they slow down. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.083 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.083 -Problem: When a read() or write() is interrupted by a signal it fails. -Solution: Add read_eintr() and write_eintr(). -Files: src/fileio.c, src/proto/fileio.pro, src/memfile.c, src/memline.c, - src/os_unix.c, src/undo.c, src/vim.h - - -*** ../vim-7.3.082/src/fileio.c 2010-08-15 21:57:26.000000000 +0200 ---- src/fileio.c 2010-12-17 16:04:30.000000000 +0100 -*************** -*** 918,924 **** - { - /* Read the first line (and a bit more). Immediately rewind to - * the start of the file. If the read() fails "len" is -1. */ -! len = vim_read(fd, firstline, 80); - lseek(fd, (off_t)0L, SEEK_SET); - for (p = firstline; p < firstline + len; ++p) - if (*p >= 0x80) ---- 918,924 ---- - { - /* Read the first line (and a bit more). Immediately rewind to - * the start of the file. If the read() fails "len" is -1. */ -! len = read_eintr(fd, firstline, 80); - lseek(fd, (off_t)0L, SEEK_SET); - for (p = firstline; p < firstline + len; ++p) - if (*p >= 0x80) -*************** -*** 1373,1379 **** - /* - * Read bytes from the file. - */ -! size = vim_read(fd, ptr, size); - } - - if (size <= 0) ---- 1373,1379 ---- - /* - * Read bytes from the file. - */ -! size = read_eintr(fd, ptr, size); - } - - if (size <= 0) -*************** -*** 4000,4006 **** - #ifdef HAS_BW_FLAGS - write_info.bw_flags = FIO_NOCONVERT; - #endif -! while ((write_info.bw_len = vim_read(fd, copybuf, - BUFSIZE)) > 0) - { - if (buf_write_bytes(&write_info) == FAIL) ---- 4000,4006 ---- - #ifdef HAS_BW_FLAGS - write_info.bw_flags = FIO_NOCONVERT; - #endif -! while ((write_info.bw_len = read_eintr(fd, copybuf, - BUFSIZE)) > 0) - { - if (buf_write_bytes(&write_info) == FAIL) -*************** -*** 4813,4819 **** - #ifdef HAS_BW_FLAGS - write_info.bw_flags = FIO_NOCONVERT; - #endif -! while ((write_info.bw_len = vim_read(fd, smallbuf, - SMBUFSIZE)) > 0) - if (buf_write_bytes(&write_info) == FAIL) - break; ---- 4813,4819 ---- - #ifdef HAS_BW_FLAGS - write_info.bw_flags = FIO_NOCONVERT; - #endif -! while ((write_info.bw_len = read_eintr(fd, smallbuf, - SMBUFSIZE)) > 0) - if (buf_write_bytes(&write_info) == FAIL) - break; -*************** -*** 5330,5336 **** - - /* - * Call write() to write a number of bytes to the file. -! * Also handles encryption and 'encoding' conversion. - * - * Return FAIL for failure, OK otherwise. - */ ---- 5330,5336 ---- - - /* - * Call write() to write a number of bytes to the file. -! * Handles encryption and 'encoding' conversion. - * - * Return FAIL for failure, OK otherwise. - */ -*************** -*** 5702,5717 **** - crypt_encode(buf, len, buf); - #endif - -! /* Repeat the write(), it may be interrupted by a signal. */ -! while (len > 0) -! { -! wlen = vim_write(ip->bw_fd, buf, len); -! if (wlen <= 0) /* error! */ -! return FAIL; -! len -= wlen; -! buf += wlen; -! } -! return OK; - } - - #ifdef FEAT_MBYTE ---- 5702,5709 ---- - crypt_encode(buf, len, buf); - #endif - -! wlen = write_eintr(ip->bw_fd, buf, len); -! return (wlen < len) ? FAIL : OK; - } - - #ifdef FEAT_MBYTE -*************** -*** 6662,6669 **** - return -1; - } - -! while ((n = vim_read(fd_in, buffer, BUFSIZE)) > 0) -! if (vim_write(fd_out, buffer, n) != n) - { - errmsg = _("E208: Error writing to \"%s\""); - break; ---- 6654,6661 ---- - return -1; - } - -! while ((n = read_eintr(fd_in, buffer, BUFSIZE)) > 0) -! if (write_eintr(fd_out, buffer, n) != n) - { - errmsg = _("E208: Error writing to \"%s\""); - break; -*************** -*** 10304,10306 **** ---- 10296,10350 ---- - } - return reg_pat; - } -+ -+ #if defined(EINTR) || defined(PROTO) -+ /* -+ * Version of read() that retries when interrupted by EINTR (possibly -+ * by a SIGWINCH). -+ */ -+ long -+ read_eintr(fd, buf, bufsize) -+ int fd; -+ void *buf; -+ size_t bufsize; -+ { -+ long ret; -+ -+ for (;;) -+ { -+ ret = vim_read(fd, buf, bufsize); -+ if (ret >= 0 || errno != EINTR) -+ break; -+ } -+ return ret; -+ } -+ -+ /* -+ * Version of write() that retries when interrupted by EINTR (possibly -+ * by a SIGWINCH). -+ */ -+ long -+ write_eintr(fd, buf, bufsize) -+ int fd; -+ void *buf; -+ size_t bufsize; -+ { -+ long ret = 0; -+ long wlen; -+ -+ /* Repeat the write() so long it didn't fail, other than being interrupted -+ * by a signal. */ -+ while (ret < (long)bufsize) -+ { -+ wlen = vim_write(fd, buf + ret, bufsize - ret); -+ if (wlen < 0) -+ { -+ if (errno != EINTR) -+ break; -+ } -+ else -+ ret += wlen; -+ } -+ return ret; -+ } -+ #endif -*** ../vim-7.3.082/src/proto/fileio.pro 2010-08-15 21:57:28.000000000 +0200 ---- src/proto/fileio.pro 2010-12-17 15:01:26.000000000 +0100 -*************** -*** 54,57 **** ---- 54,59 ---- - int match_file_pat __ARGS((char_u *pattern, regprog_T *prog, char_u *fname, char_u *sfname, char_u *tail, int allow_dirs)); - int match_file_list __ARGS((char_u *list, char_u *sfname, char_u *ffname)); - char_u *file_pat_to_reg_pat __ARGS((char_u *pat, char_u *pat_end, char *allow_dirs, int no_bslash)); -+ long read_eintr __ARGS((int fd, void *buf, size_t bufsize)); -+ long write_eintr __ARGS((int fd, void *buf, size_t bufsize)); - /* vim: set ft=c : */ -*** ../vim-7.3.082/src/memfile.c 2010-08-15 21:57:25.000000000 +0200 ---- src/memfile.c 2010-12-17 16:02:54.000000000 +0100 -*************** -*** 1049,1055 **** - PERROR(_("E294: Seek error in swap file read")); - return FAIL; - } -! if ((unsigned)vim_read(mfp->mf_fd, hp->bh_data, size) != size) - { - PERROR(_("E295: Read error in swap file")); - return FAIL; ---- 1049,1055 ---- - PERROR(_("E294: Seek error in swap file read")); - return FAIL; - } -! if ((unsigned)read_eintr(mfp->mf_fd, hp->bh_data, size) != size) - { - PERROR(_("E295: Read error in swap file")); - return FAIL; -*************** -*** 1168,1174 **** - } - #endif - -! if ((unsigned)vim_write(mfp->mf_fd, data, size) != size) - result = FAIL; - - #ifdef FEAT_CRYPT ---- 1168,1174 ---- - } - #endif - -! if ((unsigned)write_eintr(mfp->mf_fd, data, size) != size) - result = FAIL; - - #ifdef FEAT_CRYPT -*** ../vim-7.3.082/src/memline.c 2010-12-08 13:16:58.000000000 +0100 ---- src/memline.c 2010-12-17 15:46:49.000000000 +0100 -*************** -*** 2062,2068 **** - fd = mch_open((char *)fname, O_RDONLY | O_EXTRA, 0); - if (fd >= 0) - { -! if (read(fd, (char *)&b0, sizeof(b0)) == sizeof(b0)) - { - if (STRNCMP(b0.b0_version, "VIM 3.0", 7) == 0) - { ---- 2062,2068 ---- - fd = mch_open((char *)fname, O_RDONLY | O_EXTRA, 0); - if (fd >= 0) - { -! if (read_eintr(fd, &b0, sizeof(b0)) == sizeof(b0)) - { - if (STRNCMP(b0.b0_version, "VIM 3.0", 7) == 0) - { -*************** -*** 4392,4398 **** - fd = mch_open((char *)fname, O_RDONLY | O_EXTRA, 0); - if (fd >= 0) - { -! if (read(fd, (char *)&b0, sizeof(b0)) == sizeof(b0)) - { - /* - * If the swapfile has the same directory as the ---- 4392,4398 ---- - fd = mch_open((char *)fname, O_RDONLY | O_EXTRA, 0); - if (fd >= 0) - { -! if (read_eintr(fd, &b0, sizeof(b0)) == sizeof(b0)) - { - /* - * If the swapfile has the same directory as the -*** ../vim-7.3.082/src/os_unix.c 2010-10-20 19:17:43.000000000 +0200 ---- src/os_unix.c 2010-12-17 16:17:43.000000000 +0100 -*************** -*** 4454,4460 **** - ++noread_cnt; - while (RealWaitForChar(fromshell_fd, 10L, NULL)) - { -! len = read(fromshell_fd, (char *)buffer - # ifdef FEAT_MBYTE - + buffer_off, (size_t)(BUFLEN - buffer_off) - # else ---- 4454,4460 ---- - ++noread_cnt; - while (RealWaitForChar(fromshell_fd, 10L, NULL)) - { -! len = read_eintr(fromshell_fd, buffer - # ifdef FEAT_MBYTE - + buffer_off, (size_t)(BUFLEN - buffer_off) - # else -*** ../vim-7.3.082/src/undo.c 2010-11-03 19:32:36.000000000 +0100 ---- src/undo.c 2010-12-17 15:39:24.000000000 +0100 -*************** -*** 1386,1392 **** - char_u mbuf[UF_START_MAGIC_LEN]; - int len; - -! len = vim_read(fd, mbuf, UF_START_MAGIC_LEN); - close(fd); - if (len < UF_START_MAGIC_LEN - || memcmp(mbuf, UF_START_MAGIC, UF_START_MAGIC_LEN) != 0) ---- 1386,1392 ---- - char_u mbuf[UF_START_MAGIC_LEN]; - int len; - -! len = read_eintr(fd, mbuf, UF_START_MAGIC_LEN); - close(fd); - if (len < UF_START_MAGIC_LEN - || memcmp(mbuf, UF_START_MAGIC, UF_START_MAGIC_LEN) != 0) -*** ../vim-7.3.082/src/vim.h 2010-12-02 16:01:23.000000000 +0100 ---- src/vim.h 2010-12-17 14:55:04.000000000 +0100 -*************** -*** 1642,1647 **** ---- 1642,1652 ---- - # define USE_INPUT_BUF - #endif - -+ #ifndef EINTR -+ # define read_eintr(fd, buf, count) vim_read((fd), (buf), (count)) -+ # define write_eintr(fd, buf, count) vim_write((fd), (buf), (count)) -+ #endif -+ - #ifdef MSWIN - /* On MS-Windows the third argument isn't size_t. This matters for Win64, - * where sizeof(size_t)==8, not 4 */ -*** ../vim-7.3.082/src/version.c 2010-12-17 12:19:14.000000000 +0100 ---- src/version.c 2010-12-17 16:10:58.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 83, - /**/ - --- -How To Keep A Healthy Level Of Insanity: -9. As often as possible, skip rather than walk. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.084 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.084 -Problem: When splitting the window, the new one scrolls with the cursor at - the top. -Solution: Compute w_fraction before setting the new height. -Files: src/window.c - - -*** ../vim-7.3.083/src/window.c 2010-09-21 16:56:29.000000000 +0200 ---- src/window.c 2010-12-17 17:09:51.000000000 +0100 -*************** -*** 70,76 **** - #endif /* FEAT_WINDOWS */ - - static win_T *win_alloc __ARGS((win_T *after, int hidden)); -! static void win_new_height __ARGS((win_T *, int)); - - #define URL_SLASH 1 /* path_is_url() has found "://" */ - #define URL_BACKSLASH 2 /* path_is_url() has found ":\\" */ ---- 70,77 ---- - #endif /* FEAT_WINDOWS */ - - static win_T *win_alloc __ARGS((win_T *after, int hidden)); -! static void set_fraction __ARGS((win_T *wp)); -! static void win_new_height __ARGS((win_T *wp, int height)); - - #define URL_SLASH 1 /* path_is_url() has found "://" */ - #define URL_BACKSLASH 2 /* path_is_url() has found ":\\" */ -*************** -*** 983,992 **** ---- 984,999 ---- - else - frame_append(curfrp, frp); - -+ /* Set w_fraction now so that the cursor keeps the same relative -+ * vertical position. */ -+ set_fraction(oldwin); -+ wp->w_fraction = oldwin->w_fraction; -+ - #ifdef FEAT_VERTSPLIT - if (flags & WSP_VERT) - { - wp->w_p_scr = curwin->w_p_scr; -+ - if (need_status) - { - win_new_height(oldwin, oldwin->w_height - 1); -*************** -*** 5453,5458 **** ---- 5460,5478 ---- - - #endif /* FEAT_WINDOWS */ - -+ #define FRACTION_MULT 16384L -+ -+ /* -+ * Set wp->w_fraction for the current w_wrow and w_height. -+ */ -+ static void -+ set_fraction(wp) -+ win_T *wp; -+ { -+ wp->w_fraction = ((long)wp->w_wrow * FRACTION_MULT -+ + FRACTION_MULT / 2) / (long)wp->w_height; -+ } -+ - /* - * Set the height of a window. - * This takes care of the things inside the window, not what happens to the -*************** -*** 5465,5471 **** - { - linenr_T lnum; - int sline, line_size; -- #define FRACTION_MULT 16384L - - /* Don't want a negative height. Happens when splitting a tiny window. - * Will equalize heights soon to fix it. */ ---- 5485,5490 ---- -*************** -*** 5475,5482 **** - return; /* nothing to do */ - - if (wp->w_wrow != wp->w_prev_fraction_row && wp->w_height > 0) -! wp->w_fraction = ((long)wp->w_wrow * FRACTION_MULT -! + FRACTION_MULT / 2) / (long)wp->w_height; - - wp->w_height = height; - wp->w_skipcol = 0; ---- 5494,5500 ---- - return; /* nothing to do */ - - if (wp->w_wrow != wp->w_prev_fraction_row && wp->w_height > 0) -! set_fraction(wp); - - wp->w_height = height; - wp->w_skipcol = 0; -*** ../vim-7.3.083/src/version.c 2010-12-17 16:27:10.000000000 +0100 ---- src/version.c 2010-12-17 17:14:19.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 84, - /**/ - --- -How To Keep A Healthy Level Of Insanity: -12. Sing along at the opera. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.085 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.085 (after 7.3.083) -Problem: Inconsistency with preproc symbols. void * computation. -Solution: Include vimio.h from vim.h. Add type cast. -Files: src/eval.c, src/ex_cmds.c, src/ex_cmds2.c, src/fileio.c, - src/if_cscope.c, src/if_sniff.c, src/main.c, src/memfile.c, - src/memline.c, src/netbeans.c, src/os_msdos.c, src/os_mswin.c, - src/os_win16.c, src/os_win32.c, src/spell.c, src/tag.c, - src/undo.c, src/vim.h - - -*** ../vim-7.3.084/src/eval.c 2010-12-02 21:44:35.000000000 +0100 ---- src/eval.c 2010-12-17 17:45:37.000000000 +0100 -*************** -*** 10,18 **** - /* - * eval.c: Expression evaluation. - */ -- #if defined(MSDOS) || defined(WIN16) || defined(WIN32) || defined(_WIN64) -- # include "vimio.h" /* for mch_open(), must be before vim.h */ -- #endif - - #include "vim.h" - ---- 10,15 ---- -*** ../vim-7.3.084/src/ex_cmds.c 2010-11-24 17:59:27.000000000 +0100 ---- src/ex_cmds.c 2010-12-17 17:46:09.000000000 +0100 -*************** -*** 11,20 **** - * ex_cmds.c: some functions for command line commands - */ - -- #if defined(MSDOS) || defined(WIN16) || defined(WIN32) || defined(_WIN64) -- # include "vimio.h" /* for mch_open(), must be before vim.h */ -- #endif -- - #include "vim.h" - #include "version.h" - ---- 11,16 ---- -*** ../vim-7.3.084/src/ex_cmds2.c 2010-09-21 16:56:29.000000000 +0200 ---- src/ex_cmds2.c 2010-12-17 17:46:26.000000000 +0100 -*************** -*** 11,20 **** - * ex_cmds2.c: some more functions for command line commands - */ - -- #if defined(MSDOS) || defined(WIN16) || defined(WIN32) || defined(_WIN64) -- # include "vimio.h" /* for mch_open(), must be before vim.h */ -- #endif -- - #include "vim.h" - #include "version.h" - ---- 11,16 ---- -*** ../vim-7.3.084/src/fileio.c 2010-12-17 16:27:09.000000000 +0100 ---- src/fileio.c 2010-12-17 17:52:42.000000000 +0100 -*************** -*** 11,24 **** - * fileio.c: read from and write to a file - */ - -- #if defined(MSDOS) || defined(WIN16) || defined(WIN32) || defined(_WIN64) -- # include "vimio.h" /* for lseek(), must be before vim.h */ -- #endif -- -- #if defined __EMX__ -- # include "vimio.h" /* for mktemp(), CJW 1997-12-03 */ -- #endif -- - #include "vim.h" - - #if defined(__TANDEM) || defined(__MINT__) ---- 11,16 ---- -*************** -*** 10336,10342 **** - * by a signal. */ - while (ret < (long)bufsize) - { -! wlen = vim_write(fd, buf + ret, bufsize - ret); - if (wlen < 0) - { - if (errno != EINTR) ---- 10328,10334 ---- - * by a signal. */ - while (ret < (long)bufsize) - { -! wlen = vim_write(fd, (char *)buf + ret, bufsize - ret); - if (wlen < 0) - { - if (errno != EINTR) -*** ../vim-7.3.084/src/if_cscope.c 2010-09-21 16:56:29.000000000 +0200 ---- src/if_cscope.c 2010-12-17 17:47:02.000000000 +0100 -*************** -*** 20,28 **** - #include <sys/stat.h> - #if defined(UNIX) - # include <sys/wait.h> -- #else -- /* not UNIX, must be WIN32 */ -- # include "vimio.h" - #endif - #include "if_cscope.h" - ---- 20,25 ---- -*** ../vim-7.3.084/src/if_sniff.c 2010-08-15 21:57:25.000000000 +0200 ---- src/if_sniff.c 2010-12-17 17:47:20.000000000 +0100 -*************** -*** 9,15 **** - - #ifdef WIN32 - # include <stdio.h> -- # include "vimio.h" - # include <process.h> - # include <string.h> - # include <assert.h> ---- 9,14 ---- -*** ../vim-7.3.084/src/main.c 2010-11-16 16:25:46.000000000 +0100 ---- src/main.c 2010-12-17 17:47:41.000000000 +0100 -*************** -*** 7,16 **** - * See README.txt for an overview of the Vim source code. - */ - -- #if defined(MSDOS) || defined(WIN16) || defined(WIN32) || defined(_WIN64) -- # include "vimio.h" /* for close() and dup() */ -- #endif -- - #define EXTERN - #include "vim.h" - ---- 7,12 ---- -*** ../vim-7.3.084/src/memfile.c 2010-12-17 16:27:10.000000000 +0100 ---- src/memfile.c 2010-12-17 17:47:54.000000000 +0100 -*************** -*** 32,41 **** - * file is opened. - */ - -- #if defined(MSDOS) || defined(WIN16) || defined(WIN32) || defined(_WIN64) -- # include "vimio.h" /* for lseek(), must be before vim.h */ -- #endif -- - #include "vim.h" - - /* ---- 32,37 ---- -*** ../vim-7.3.084/src/memline.c 2010-12-17 16:27:10.000000000 +0100 ---- src/memline.c 2010-12-17 17:48:06.000000000 +0100 -*************** -*** 42,51 **** - * mf_get(). - */ - -- #if defined(MSDOS) || defined(WIN16) || defined(WIN32) || defined(_WIN64) -- # include "vimio.h" /* for mch_open(), must be before vim.h */ -- #endif -- - #include "vim.h" - - #ifndef UNIX /* it's in os_unix.h for Unix */ ---- 42,47 ---- -*** ../vim-7.3.084/src/netbeans.c 2010-12-17 12:19:14.000000000 +0100 ---- src/netbeans.c 2010-12-17 17:48:19.000000000 +0100 -*************** -*** 16,25 **** - * See ":help netbeans-protocol" for explanation. - */ - -- #if defined(MSDOS) || defined(WIN16) || defined(WIN32) || defined(_WIN64) -- # include "vimio.h" /* for mch_open(), must be before vim.h */ -- #endif -- - #include "vim.h" - - #if defined(FEAT_NETBEANS_INTG) || defined(PROTO) ---- 16,21 ---- -*** ../vim-7.3.084/src/os_msdos.c 2010-08-15 21:57:25.000000000 +0200 ---- src/os_msdos.c 2010-12-17 17:48:40.000000000 +0100 -*************** -*** 21,27 **** - * Some functions are also used for Win16 (MS-Windows 3.1). - */ - -- #include "vimio.h" - #include "vim.h" - - #include <conio.h> ---- 21,26 ---- -*** ../vim-7.3.084/src/os_mswin.c 2010-10-23 14:02:48.000000000 +0200 ---- src/os_mswin.c 2010-12-17 17:48:51.000000000 +0100 -*************** -*** 22,28 **** - # endif - #endif - -- #include "vimio.h" - #include "vim.h" - - #ifdef WIN16 ---- 22,27 ---- -*** ../vim-7.3.084/src/os_win16.c 2010-08-15 21:57:32.000000000 +0200 ---- src/os_win16.c 2010-12-17 17:49:02.000000000 +0100 -*************** -*** 20,26 **** - # pragma warn -obs - #endif - -- #include "vimio.h" - #include "vim.h" - - #include <dos.h> ---- 20,25 ---- -*** ../vim-7.3.084/src/os_win32.c 2010-11-24 12:35:14.000000000 +0100 ---- src/os_win32.c 2010-12-17 17:49:11.000000000 +0100 -*************** -*** 20,26 **** - * Roger Knobbe <rogerk@wonderware.com> did the initial port of Vim 3.0. - */ - -- #include "vimio.h" - #include "vim.h" - - #ifdef FEAT_MZSCHEME ---- 20,25 ---- -*** ../vim-7.3.084/src/spell.c 2010-12-08 17:09:27.000000000 +0100 ---- src/spell.c 2010-12-17 17:49:24.000000000 +0100 -*************** -*** 303,312 **** - * few bytes as possible, see offset2bytes()) - */ - -- #if defined(MSDOS) || defined(WIN16) || defined(WIN32) || defined(_WIN64) -- # include "vimio.h" /* for lseek(), must be before vim.h */ -- #endif -- - #include "vim.h" - - #if defined(FEAT_SPELL) || defined(PROTO) ---- 303,308 ---- -*** ../vim-7.3.084/src/tag.c 2010-09-21 16:56:29.000000000 +0200 ---- src/tag.c 2010-12-17 17:49:35.000000000 +0100 -*************** -*** 11,20 **** - * Code to handle tags and the tag stack - */ - -- #if defined(MSDOS) || defined(WIN16) || defined(WIN32) || defined(_WIN64) -- # include "vimio.h" /* for lseek(), must be before vim.h */ -- #endif -- - #include "vim.h" - - /* ---- 11,16 ---- -*** ../vim-7.3.084/src/undo.c 2010-12-17 16:27:10.000000000 +0100 ---- src/undo.c 2010-12-17 17:49:59.000000000 +0100 -*************** -*** 81,90 **** - #define UH_MAGIC 0x18dade /* value for uh_magic when in use */ - #define UE_MAGIC 0xabc123 /* value for ue_magic when in use */ - -- #if defined(MSDOS) || defined(WIN16) || defined(WIN32) || defined(_WIN64) -- # include "vimio.h" /* for vim_read(), must be before vim.h */ -- #endif -- - #include "vim.h" - - static void u_unch_branch __ARGS((u_header_T *uhp)); ---- 81,86 ---- -*** ../vim-7.3.084/src/vim.h 2010-12-17 16:27:10.000000000 +0100 ---- src/vim.h 2010-12-17 17:51:43.000000000 +0100 -*************** -*** 27,32 **** ---- 27,37 ---- - # endif - #endif - -+ #if defined(MSDOS) || defined(WIN16) || defined(WIN32) || defined(_WIN64) \ -+ || defined(__EMX__) -+ # include "vimio.h" -+ #endif -+ - /* ============ the header file puzzle (ca. 50-100 pieces) ========= */ - - #ifdef HAVE_CONFIG_H /* GNU autoconf (or something else) was here */ -*** ../vim-7.3.084/src/version.c 2010-12-17 17:35:05.000000000 +0100 ---- src/version.c 2010-12-17 17:55:39.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 85, - /**/ - --- -How To Keep A Healthy Level Of Insanity: -14. Put mosquito netting around your work area. Play a tape of jungle - sounds all day. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.086 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.086 -Problem: When using a mapping with an expression and there was no count, - v:count has the value of the previous command. (ZyX) -Solution: Also set v:count and v:count1 before getting the character that - could be a command or a count. -Files: src/normal.c - - -*** ../vim-7.3.085/src/normal.c 2010-10-13 18:06:42.000000000 +0200 ---- src/normal.c 2010-12-17 18:46:56.000000000 +0100 -*************** -*** 25,30 **** ---- 25,33 ---- - static int restart_VIsual_select = 0; - #endif - -+ #ifdef FEAT_EVAL -+ static void set_vcount_ca __ARGS((cmdarg_T *cap, int *set_prevcount)); -+ #endif - static int - # ifdef __BORLANDC__ - _RTLENTRYF -*************** -*** 648,653 **** ---- 651,664 ---- - dont_scroll = FALSE; /* allow scrolling here */ - #endif - -+ #ifdef FEAT_EVAL -+ /* Set v:count here, when called from main() and not a stuffed -+ * command, so that v:count can be used in an expression mapping -+ * when there is no count. */ -+ if (toplevel && stuff_empty()) -+ set_vcount_ca(&ca, &set_prevcount); -+ #endif -+ - /* - * Get the command character from the user. - */ -*************** -*** 725,739 **** - * command, so that v:count can be used in an expression mapping - * right after the count. */ - if (toplevel && stuff_empty()) -! { -! long count = ca.count0; -! -! /* multiply with ca.opcount the same way as below */ -! if (ca.opcount != 0) -! count = ca.opcount * (count == 0 ? 1 : count); -! set_vcount(count, count == 0 ? 1 : count, set_prevcount); -! set_prevcount = FALSE; /* only set v:prevcount once */ -! } - #endif - if (ctrl_w) - { ---- 736,742 ---- - * command, so that v:count can be used in an expression mapping - * right after the count. */ - if (toplevel && stuff_empty()) -! set_vcount_ca(&ca, &set_prevcount); - #endif - if (ctrl_w) - { -*************** -*** 1386,1391 **** ---- 1389,1414 ---- - opcount = ca.opcount; - } - -+ #ifdef FEAT_EVAL -+ /* -+ * Set v:count and v:count1 according to "cap". -+ * Set v:prevcount only when "set_prevcount" is TRUE. -+ */ -+ static void -+ set_vcount_ca(cap, set_prevcount) -+ cmdarg_T *cap; -+ int *set_prevcount; -+ { -+ long count = cap->count0; -+ -+ /* multiply with cap->opcount the same way as above */ -+ if (cap->opcount != 0) -+ count = cap->opcount * (count == 0 ? 1 : count); -+ set_vcount(count, count == 0 ? 1 : count, *set_prevcount); -+ *set_prevcount = FALSE; /* only set v:prevcount once */ -+ } -+ #endif -+ - /* - * Handle an operator after visual mode or when the movement is finished - */ -*************** -*** 8529,8535 **** - else - curwin->w_curswant = 0; - /* keep curswant at the column where we wanted to go, not where -! we ended; differs if line is too short */ - curwin->w_set_curswant = FALSE; - } - ---- 8552,8558 ---- - else - curwin->w_curswant = 0; - /* keep curswant at the column where we wanted to go, not where -! * we ended; differs if line is too short */ - curwin->w_set_curswant = FALSE; - } - -*** ../vim-7.3.085/src/version.c 2010-12-17 18:06:00.000000000 +0100 ---- src/version.c 2010-12-17 18:51:20.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 86, - /**/ - --- -How To Keep A Healthy Level Of Insanity: -15. Five days in advance, tell your friends you can't attend their - party because you're not in the mood. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.087 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.087 -Problem: EINTR is not always defined. -Solution: Include errno.h in vim.h. -Files: src/if_cscope.c, src/if_tcl.c, src/integration.c, src/memline.c, - src/os_mswin.c, src/os_win16.c, src/os_win32.c, src/vim.h, - src/workshop.c - - -*** ../vim-7.3.086/src/if_cscope.c 2010-12-17 18:06:00.000000000 +0100 ---- src/if_cscope.c 2010-12-17 20:06:01.000000000 +0100 -*************** -*** 13,20 **** - - #if defined(FEAT_CSCOPE) || defined(PROTO) - -- #include <string.h> -- #include <errno.h> - #include <assert.h> - #include <sys/types.h> - #include <sys/stat.h> ---- 13,18 ---- -*** ../vim-7.3.086/src/if_tcl.c 2010-08-15 21:57:27.000000000 +0200 ---- src/if_tcl.c 2010-12-17 20:06:56.000000000 +0100 -*************** -*** 74,80 **** - #endif - - #include <tcl.h> -- #include <errno.h> - #include <string.h> - - typedef struct ---- 74,79 ---- -*** ../vim-7.3.086/src/integration.c 2010-08-15 21:57:29.000000000 +0200 ---- src/integration.c 2010-12-17 20:07:12.000000000 +0100 -*************** -*** 33,39 **** - #include <sys/un.h> - #endif - -- #include <errno.h> - #include <sys/types.h> - #include <sys/socket.h> - #include <sys/param.h> ---- 33,38 ---- -*** ../vim-7.3.086/src/memline.c 2010-12-17 18:06:00.000000000 +0100 ---- src/memline.c 2010-12-17 20:07:31.000000000 +0100 -*************** -*** 52,61 **** - # include <proto/dos.h> /* for Open() and Close() */ - #endif - -- #ifdef HAVE_ERRNO_H -- # include <errno.h> -- #endif -- - typedef struct block0 ZERO_BL; /* contents of the first block */ - typedef struct pointer_block PTR_BL; /* contents of a pointer block */ - typedef struct data_block DATA_BL; /* contents of a data block */ ---- 52,57 ---- -*** ../vim-7.3.086/src/os_mswin.c 2010-12-17 18:06:00.000000000 +0100 ---- src/os_mswin.c 2010-12-17 20:08:14.000000000 +0100 -*************** -*** 30,36 **** - # include <string.h> - #endif - #include <sys/types.h> -- #include <errno.h> - #include <signal.h> - #include <limits.h> - #include <process.h> ---- 30,35 ---- -*** ../vim-7.3.086/src/os_win16.c 2010-12-17 18:06:00.000000000 +0100 ---- src/os_win16.c 2010-12-17 20:08:53.000000000 +0100 -*************** -*** 25,31 **** - #include <dos.h> - #include <string.h> - #include <sys/types.h> -- #include <errno.h> - #include <signal.h> - #include <limits.h> - #include <process.h> ---- 25,30 ---- -*** ../vim-7.3.086/src/os_win32.c 2010-12-17 18:06:00.000000000 +0100 ---- src/os_win32.c 2010-12-17 20:09:18.000000000 +0100 -*************** -*** 27,33 **** - #endif - - #include <sys/types.h> -- #include <errno.h> - #include <signal.h> - #include <limits.h> - #include <process.h> ---- 27,32 ---- -*** ../vim-7.3.086/src/vim.h 2010-12-17 18:06:00.000000000 +0100 ---- src/vim.h 2010-12-17 20:09:56.000000000 +0100 -*************** -*** 480,485 **** ---- 480,490 ---- - # include <sys/stat.h> - #endif - -+ #if defined(HAVE_ERRNO_H) || defined(DJGPP) || defined(WIN16) \ -+ || defined(WIN32) || defined(_WIN64) || defined(__EMX__) -+ # include <errno.h> -+ #endif -+ - /* - * Allow other (non-unix) systems to configure themselves now - * These are also in os_unix.h, because osdef.sh needs them there. -*** ../vim-7.3.086/src/workshop.c 2010-08-15 21:57:26.000000000 +0200 ---- src/workshop.c 2010-12-17 20:09:31.000000000 +0100 -*************** -*** 16,22 **** - #include <sys/types.h> - #include <netdb.h> - #include <netinet/in.h> -- #include <errno.h> - #include <sys/socket.h> - #ifdef HAVE_LIBGEN_H - # include <libgen.h> ---- 16,21 ---- -*** ../vim-7.3.086/src/version.c 2010-12-17 18:52:56.000000000 +0100 ---- src/version.c 2010-12-17 20:14:49.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 87, - /**/ - --- -How To Keep A Healthy Level Of Insanity: -17. When the money comes out the ATM, scream "I won!, I won! 3rd - time this week!!!!!" - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.088 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.088 -Problem: Ruby can't load Gems sometimes, may cause a crash. -Solution: Undefine off_t. Use ruby_process_options(). (Yasuhiro Matsumoto) -Files: src/if_ruby.c - - -*** ../vim-7.3.087/src/if_ruby.c 2010-12-08 13:11:15.000000000 +0100 ---- src/if_ruby.c 2010-12-24 12:18:31.000000000 +0100 -*************** -*** 90,95 **** ---- 90,96 ---- - # include <ruby/encoding.h> - #endif - -+ #undef off_t /* ruby defines off_t as _int64, Mingw uses long */ - #undef EXTERN - #undef _ - -*************** -*** 229,238 **** - # define rb_enc_find_index dll_rb_enc_find_index - # define rb_enc_find dll_rb_enc_find - # define rb_enc_str_new dll_rb_enc_str_new -- # define rb_intern2 dll_rb_intern2 -- # define rb_const_remove dll_rb_const_remove - # define rb_sprintf dll_rb_sprintf - # define ruby_init_stack dll_ruby_init_stack - #endif - - /* ---- 230,239 ---- - # define rb_enc_find_index dll_rb_enc_find_index - # define rb_enc_find dll_rb_enc_find - # define rb_enc_str_new dll_rb_enc_str_new - # define rb_sprintf dll_rb_sprintf -+ # define rb_require dll_rb_require - # define ruby_init_stack dll_ruby_init_stack -+ # define ruby_process_options dll_ruby_process_options - #endif - - /* -*************** -*** 319,329 **** - static int (*dll_rb_enc_find_index) (const char*); - static rb_encoding* (*dll_rb_enc_find) (const char*); - static VALUE (*dll_rb_enc_str_new) (const char*, long, rb_encoding*); -- static ID (*dll_rb_intern2) (const char*, long); -- static void (*dll_Init_prelude) (void); -- static VALUE (*dll_rb_const_remove) (VALUE, ID); - static VALUE (*dll_rb_sprintf) (const char*, ...); - static void (*ruby_init_stack)(VALUE*); - #endif - - #ifdef RUBY19_OR_LATER ---- 320,329 ---- - static int (*dll_rb_enc_find_index) (const char*); - static rb_encoding* (*dll_rb_enc_find) (const char*); - static VALUE (*dll_rb_enc_str_new) (const char*, long, rb_encoding*); - static VALUE (*dll_rb_sprintf) (const char*, ...); -+ static VALUE (*dll_rb_require) (const char*); - static void (*ruby_init_stack)(VALUE*); -+ static void* (*ruby_process_options)(int, char**); - #endif - - #ifdef RUBY19_OR_LATER -*************** -*** 430,439 **** - {"rb_enc_find_index", (RUBY_PROC*)&dll_rb_enc_find_index}, - {"rb_enc_find", (RUBY_PROC*)&dll_rb_enc_find}, - {"rb_enc_str_new", (RUBY_PROC*)&dll_rb_enc_str_new}, -- {"rb_intern2", (RUBY_PROC*)&dll_rb_intern2}, -- {"rb_const_remove", (RUBY_PROC*)&dll_rb_const_remove}, - {"rb_sprintf", (RUBY_PROC*)&dll_rb_sprintf}, - {"ruby_init_stack", (RUBY_PROC*)&dll_ruby_init_stack}, - #endif - {"", NULL}, - }; ---- 430,439 ---- - {"rb_enc_find_index", (RUBY_PROC*)&dll_rb_enc_find_index}, - {"rb_enc_find", (RUBY_PROC*)&dll_rb_enc_find}, - {"rb_enc_str_new", (RUBY_PROC*)&dll_rb_enc_str_new}, - {"rb_sprintf", (RUBY_PROC*)&dll_rb_sprintf}, -+ {"rb_require", (RUBY_PROC*)&dll_rb_require}, - {"ruby_init_stack", (RUBY_PROC*)&dll_ruby_init_stack}, -+ {"ruby_process_options", (RUBY_PROC*)&dll_ruby_process_options}, - #endif - {"", NULL}, - }; -*************** -*** 663,680 **** - ruby_init(); - } - #ifdef RUBY19_OR_LATER - ruby_script("vim-ruby"); -! #endif - ruby_init_loadpath(); -- ruby_io_init(); -- #ifdef RUBY19_OR_LATER -- rb_enc_find_index("encdb"); -- -- /* This avoids the error "Encoding::ConverterNotFoundError: code -- * converter not found (UTF-16LE to ASCII-8BIT)". */ -- rb_define_module("Gem"); -- rb_const_remove(rb_cObject, rb_intern2("TMP_RUBY_PREFIX", 15)); - #endif - ruby_vim_init(); - ruby_initialized = 1; - #ifdef DYNAMIC_RUBY ---- 663,678 ---- - ruby_init(); - } - #ifdef RUBY19_OR_LATER -+ { -+ int dummy_argc = 2; -+ char *dummy_argv[] = {"vim-ruby", "-e0"}; -+ ruby_process_options(dummy_argc, dummy_argv); -+ } - ruby_script("vim-ruby"); -! #else - ruby_init_loadpath(); - #endif -+ ruby_io_init(); - ruby_vim_init(); - ruby_initialized = 1; - #ifdef DYNAMIC_RUBY -*** ../vim-7.3.087/src/version.c 2010-12-17 20:23:56.000000000 +0100 ---- src/version.c 2010-12-24 13:38:51.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 88, - /**/ - --- -It is hard to understand how a cemetery raised its burial -cost and blamed it on the cost of living. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.089 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.089 -Problem: Compiler warning on 64 bit MS-Windows. -Solution: Add type cast. (Mike Williams) -Files: src/netbeans.c - - -*** ../vim-7.3.088/src/netbeans.c 2010-12-17 18:06:00.000000000 +0100 ---- src/netbeans.c 2010-12-17 20:21:05.000000000 +0100 -*************** -*** 800,806 **** - * -> gui event loop or select loop - * -> netbeans_read() - */ -! save((char_u *)DETACH_MSG, strlen(DETACH_MSG)); - nb_close_socket(); - - if (len < 0) ---- 800,806 ---- - * -> gui event loop or select loop - * -> netbeans_read() - */ -! save((char_u *)DETACH_MSG, (int)strlen(DETACH_MSG)); - nb_close_socket(); - - if (len < 0) -*** ../vim-7.3.088/src/version.c 2010-12-24 13:39:29.000000000 +0100 ---- src/version.c 2010-12-24 13:59:03.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 89, - /**/ - --- -The 50-50-90 rule: Anytime you have a 50-50 chance of getting -something right, there's a 90% probability you'll get it wrong. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.090 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.090 -Problem: Wrong help text for Cscope. -Solution: Adjust the help text for "t". (Dominique Pelle) -Files: src/if_cscope.c - - -*** ../vim-7.3.089/src/if_cscope.c 2010-12-17 20:23:56.000000000 +0100 ---- src/if_cscope.c 2010-12-30 11:35:37.000000000 +0100 -*************** -*** 1346,1352 **** - " g: Find this definition\n" - " i: Find files #including this file\n" - " s: Find this C symbol\n" -! " t: Find assignments to\n")); - - cmdp++; - } ---- 1346,1352 ---- - " g: Find this definition\n" - " i: Find files #including this file\n" - " s: Find this C symbol\n" -! " t: Find this text string\n")); - - cmdp++; - } -*************** -*** 1657,1663 **** - /* - * PRIVATE: cs_make_vim_style_matches - * -! * convert the cscope output into into a ctags style entry (as might be found - * in a ctags tags file). there's one catch though: cscope doesn't tell you - * the type of the tag you are looking for. for example, in Darren Hiebert's - * ctags (the one that comes with vim), #define's use a line number to find the ---- 1657,1663 ---- - /* - * PRIVATE: cs_make_vim_style_matches - * -! * convert the cscope output into a ctags style entry (as might be found - * in a ctags tags file). there's one catch though: cscope doesn't tell you - * the type of the tag you are looking for. for example, in Darren Hiebert's - * ctags (the one that comes with vim), #define's use a line number to find the -*** ../vim-7.3.089/src/version.c 2010-12-24 14:00:09.000000000 +0100 ---- src/version.c 2010-12-30 11:36:33.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 90, - /**/ - --- -ERROR 047: Keyboard not found. Press RETURN to continue. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.091 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.091 -Problem: "vim -w foo" writes special key codes for removed escape - sequences. (Josh Triplett) -Solution: Don't write K_IGNORE codes. -Files: src/getchar.c, src/misc1.c, src/term.c, src/vim.h - - -*** ../vim-7.3.090/src/getchar.c 2010-10-27 17:39:00.000000000 +0200 ---- src/getchar.c 2010-12-30 12:16:36.000000000 +0100 -*************** -*** 1506,1514 **** - } - } - -- #define KL_PART_KEY -1 /* keylen value for incomplete key-code */ -- #define KL_PART_MAP -2 /* keylen value for incomplete mapping */ -- - /* - * Get the next input character. - * Can return a special key or a multi-byte character. ---- 1506,1511 ---- -*************** -*** 2171,2177 **** - if (!timedout) - { - /* break at a partly match */ -! keylen = KL_PART_MAP; - break; - } - } ---- 2168,2174 ---- - if (!timedout) - { - /* break at a partly match */ -! keylen = KEYLEN_PART_MAP; - break; - } - } -*************** -*** 2192,2198 **** - - /* If no partly match found, use the longest full - * match. */ -! if (keylen != KL_PART_MAP) - { - mp = mp_match; - keylen = mp_match_len; ---- 2189,2195 ---- - - /* If no partly match found, use the longest full - * match. */ -! if (keylen != KEYLEN_PART_MAP) - { - mp = mp_match; - keylen = mp_match_len; -*************** -*** 2230,2236 **** - } - /* Need more chars for partly match. */ - if (mlen == typebuf.tb_len) -! keylen = KL_PART_KEY; - else if (max_mlen < mlen) - /* no match, may have to check for termcode at - * next character */ ---- 2227,2233 ---- - } - /* Need more chars for partly match. */ - if (mlen == typebuf.tb_len) -! keylen = KEYLEN_PART_KEY; - else if (max_mlen < mlen) - /* no match, may have to check for termcode at - * next character */ -*************** -*** 2238,2244 **** - } - - if ((mp == NULL || max_mlen >= mp_match_len) -! && keylen != KL_PART_MAP) - { - int save_keylen = keylen; - ---- 2235,2241 ---- - } - - if ((mp == NULL || max_mlen >= mp_match_len) -! && keylen != KEYLEN_PART_MAP) - { - int save_keylen = keylen; - -*************** -*** 2264,2271 **** - /* If no termcode matched but 'pastetoggle' - * matched partially it's like an incomplete key - * sequence. */ -! if (keylen == 0 && save_keylen == KL_PART_KEY) -! keylen = KL_PART_KEY; - - /* - * When getting a partial match, but the last ---- 2261,2268 ---- - /* If no termcode matched but 'pastetoggle' - * matched partially it's like an incomplete key - * sequence. */ -! if (keylen == 0 && save_keylen == KEYLEN_PART_KEY) -! keylen = KEYLEN_PART_KEY; - - /* - * When getting a partial match, but the last -*************** -*** 2302,2308 **** - continue; - } - if (*s == NUL) /* need more characters */ -! keylen = KL_PART_KEY; - } - if (keylen >= 0) - #endif ---- 2299,2305 ---- - continue; - } - if (*s == NUL) /* need more characters */ -! keylen = KEYLEN_PART_KEY; - } - if (keylen >= 0) - #endif -*************** -*** 2339,2345 **** - if (keylen > 0) /* full matching terminal code */ - { - #if defined(FEAT_GUI) && defined(FEAT_MENU) -! if (typebuf.tb_buf[typebuf.tb_off] == K_SPECIAL - && typebuf.tb_buf[typebuf.tb_off + 1] - == KS_MENU) - { ---- 2336,2343 ---- - if (keylen > 0) /* full matching terminal code */ - { - #if defined(FEAT_GUI) && defined(FEAT_MENU) -! if (typebuf.tb_len >= 2 -! && typebuf.tb_buf[typebuf.tb_off] == K_SPECIAL - && typebuf.tb_buf[typebuf.tb_off + 1] - == KS_MENU) - { -*************** -*** 2381,2387 **** - /* Partial match: get some more characters. When a - * matching mapping was found use that one. */ - if (mp == NULL || keylen < 0) -! keylen = KL_PART_KEY; - else - keylen = mp_match_len; - } ---- 2379,2385 ---- - /* Partial match: get some more characters. When a - * matching mapping was found use that one. */ - if (mp == NULL || keylen < 0) -! keylen = KEYLEN_PART_KEY; - else - keylen = mp_match_len; - } -*************** -*** 2553,2559 **** - #endif - && typebuf.tb_maplen == 0 - && (State & INSERT) -! && (p_timeout || (keylen == KL_PART_KEY && p_ttimeout)) - && (c = inchar(typebuf.tb_buf + typebuf.tb_off - + typebuf.tb_len, 3, 25L, - typebuf.tb_change_cnt)) == 0) ---- 2551,2558 ---- - #endif - && typebuf.tb_maplen == 0 - && (State & INSERT) -! && (p_timeout -! || (keylen == KEYLEN_PART_KEY && p_ttimeout)) - && (c = inchar(typebuf.tb_buf + typebuf.tb_off - + typebuf.tb_len, 3, 25L, - typebuf.tb_change_cnt)) == 0) -*************** -*** 2783,2791 **** - ? 0 - : ((typebuf.tb_len == 0 - || !(p_timeout || (p_ttimeout -! && keylen == KL_PART_KEY))) - ? -1L -! : ((keylen == KL_PART_KEY && p_ttm >= 0) - ? p_ttm - : p_tm)), typebuf.tb_change_cnt); - ---- 2782,2790 ---- - ? 0 - : ((typebuf.tb_len == 0 - || !(p_timeout || (p_ttimeout -! && keylen == KEYLEN_PART_KEY))) - ? -1L -! : ((keylen == KEYLEN_PART_KEY && p_ttm >= 0) - ? p_ttm - : p_tm)), typebuf.tb_change_cnt); - -*** ../vim-7.3.090/src/misc1.c 2010-12-02 16:01:23.000000000 +0100 ---- src/misc1.c 2010-12-30 12:28:59.000000000 +0100 -*************** -*** 3114,3123 **** - && (!p_ttimeout || waited * 100L < (p_ttm < 0 ? p_tm : p_ttm))) - continue; - -! /* found a termcode: adjust length */ -! if (n > 0) - len = n; -! if (len == 0) /* nothing typed yet */ - continue; - - /* Handle modifier and/or special key code. */ ---- 3114,3124 ---- - && (!p_ttimeout || waited * 100L < (p_ttm < 0 ? p_tm : p_ttm))) - continue; - -! if (n == KEYLEN_REMOVED) /* key code removed */ -! continue; -! if (n > 0) /* found a termcode: adjust length */ - len = n; -! if (len == 0) /* nothing typed yet */ - continue; - - /* Handle modifier and/or special key code. */ -*** ../vim-7.3.090/src/term.c 2010-08-15 21:57:32.000000000 +0200 ---- src/term.c 2010-12-30 12:14:48.000000000 +0100 -*************** -*** 3828,3833 **** ---- 3831,3837 ---- - * Check from typebuf.tb_buf[typebuf.tb_off] to typebuf.tb_buf[typebuf.tb_off - * + max_offset]. - * Return 0 for no match, -1 for partial match, > 0 for full match. -+ * Return KEYLEN_REMOVED when a key code was deleted. - * With a match, the match is removed, the replacement code is inserted in - * typebuf.tb_buf[] and the number of characters in typebuf.tb_buf[] is - * returned. -*************** -*** 3845,3850 **** ---- 3849,3855 ---- - int slen = 0; /* init for GCC */ - int modslen; - int len; -+ int retval = 0; - int offset; - char_u key_name[2]; - int modifiers; -*************** -*** 4940,4945 **** ---- 4945,4957 ---- - #endif - string[new_slen++] = key_name[1]; - } -+ else if (new_slen == 0 && key_name[0] == KS_EXTRA -+ && key_name[1] == KE_IGNORE) -+ { -+ /* Do not put K_IGNORE into the buffer, do return KEYLEN_REMOVED -+ * to indicate what happened. */ -+ retval = KEYLEN_REMOVED; -+ } - else - { - string[new_slen++] = K_SPECIAL; -*************** -*** 4976,4982 **** - (size_t)(buflen - offset)); - mch_memmove(buf + offset, string, (size_t)new_slen); - } -! return (len + extra + offset); - } - - return 0; /* no match found */ ---- 4988,4994 ---- - (size_t)(buflen - offset)); - mch_memmove(buf + offset, string, (size_t)new_slen); - } -! return retval == 0 ? (len + extra + offset) : retval; - } - - return 0; /* no match found */ -*** ../vim-7.3.090/src/vim.h 2010-12-17 20:23:56.000000000 +0100 ---- src/vim.h 2010-12-30 12:06:45.000000000 +0100 -*************** -*** 2211,2214 **** ---- 2211,2218 ---- - #define MSCR_LEFT -1 - #define MSCR_RIGHT -2 - -+ #define KEYLEN_PART_KEY -1 /* keylen value for incomplete key-code */ -+ #define KEYLEN_PART_MAP -2 /* keylen value for incomplete mapping */ -+ #define KEYLEN_REMOVED 9999 /* keylen value for removed sequence */ -+ - #endif /* VIM__H */ -*** ../vim-7.3.090/src/version.c 2010-12-30 11:41:05.000000000 +0100 ---- src/version.c 2010-12-30 12:24:56.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 91, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -56. You leave the modem speaker on after connecting because you think it - sounds like the ocean wind...the perfect soundtrack for "surfing the net". - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.092 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.092 -Problem: Resizing the window when exiting. -Solution: Don't resize when exiting. -Files: src/term.c - - -*** ../vim-7.3.091/src/term.c 2010-12-30 12:30:26.000000000 +0100 ---- src/term.c 2010-12-30 12:14:48.000000000 +0100 -*************** -*** 3053,3062 **** - int old_Rows = Rows; - int old_Columns = Columns; - -! (void)ui_get_shellsize(); -! check_shellsize(); -! if (old_Rows != Rows || old_Columns != Columns) -! shell_resized(); - } - - /* ---- 3053,3065 ---- - int old_Rows = Rows; - int old_Columns = Columns; - -! if (!exiting) -! { -! (void)ui_get_shellsize(); -! check_shellsize(); -! if (old_Rows != Rows || old_Columns != Columns) -! shell_resized(); -! } - } - - /* -*** ../vim-7.3.091/src/version.c 2010-12-30 12:30:26.000000000 +0100 ---- src/version.c 2010-12-30 14:47:04.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 92, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -57. You begin to wonder how on earth your service provider is allowed to call - 200 hours per month "unlimited." - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.093 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.093 -Problem: New DLL dependencies in MingW with gcc 4.5.0. -Solution: Add STATIC_STDCPLUS, LDFLAGS and split up WINDRES. (Guopeng Wen) -Files: src/GvimExt/Make_ming.mak, src/Make_ming.mak - - -*** ../vim-7.3.092/src/GvimExt/Make_ming.mak 2010-09-29 18:42:25.000000000 +0200 ---- src/GvimExt/Make_ming.mak 2010-12-30 14:42:51.000000000 +0100 -*************** -*** 17,22 **** ---- 17,33 ---- - # check also the executables - MINGWOLD = no - -+ # Link against the shared versions of libgcc/libstdc++ by default. Set -+ # STATIC_STDCPLUS to "yes" to link against static versions instead. -+ STATIC_STDCPLUS=no -+ #STATIC_STDCPLUS=yes -+ -+ # Note: -static-libstdc++ is not available until gcc 4.5.x. -+ LDFLAGS += -shared -+ ifeq (yes, $(STATIC_STDCPLUS)) -+ LDFLAGS += -static-libgcc -static-libstdc++ -+ endif -+ - ifeq ($(CROSS),yes) - DEL = rm - ifeq ($(MINGWOLD),yes) -*************** -*** 33,39 **** - endif - endif - CXX := $(CROSS_COMPILE)g++ -! WINDRES := $(CROSS_COMPILE)windres --preprocessor="$(CXX) -E -xc" -DRC_INVOKED - LIBS := -luuid - RES := gvimext.res - DEFFILE = gvimext_ming.def ---- 44,52 ---- - endif - endif - CXX := $(CROSS_COMPILE)g++ -! WINDRES := $(CROSS_COMPILE)windres -! WINDRES_CXX = $(CXX) -! WINDRES_FLAGS = --preprocessor="$(WINDRES_CXX) -E -xc" -DRC_INVOKED - LIBS := -luuid - RES := gvimext.res - DEFFILE = gvimext_ming.def -*************** -*** 46,52 **** - all: all-before $(DLL) all-after - - $(DLL): $(OBJ) $(RES) $(DEFFILE) -! $(CXX) -shared $(CXXFLAGS) -s -o $@ \ - -Wl,--enable-auto-image-base \ - -Wl,--enable-auto-import \ - -Wl,--whole-archive \ ---- 59,65 ---- - all: all-before $(DLL) all-after - - $(DLL): $(OBJ) $(RES) $(DEFFILE) -! $(CXX) $(LDFLAGS) $(CXXFLAGS) -s -o $@ \ - -Wl,--enable-auto-image-base \ - -Wl,--enable-auto-import \ - -Wl,--whole-archive \ -*************** -*** 58,64 **** - $(CXX) $(CXXFLAGS) -DFEAT_GETTEXT -c $? -o $@ - - $(RES): gvimext_ming.rc -! $(WINDRES) --input-format=rc --output-format=coff -DMING $? -o $@ - - clean: clean-custom - -$(DEL) $(OBJ) $(RES) $(DLL) ---- 71,77 ---- - $(CXX) $(CXXFLAGS) -DFEAT_GETTEXT -c $? -o $@ - - $(RES): gvimext_ming.rc -! $(WINDRES) $(WINDRES_FLAGS) --input-format=rc --output-format=coff -DMING $? -o $@ - - clean: clean-custom - -$(DEL) $(OBJ) $(RES) $(DLL) -*** ../vim-7.3.092/src/Make_ming.mak 2010-11-03 21:59:23.000000000 +0100 ---- src/Make_ming.mak 2010-12-30 14:42:51.000000000 +0100 -*************** -*** 56,61 **** ---- 56,67 ---- - NETBEANS=$(GUI) - - -+ # Link against the shared version of libstdc++ by default. Set -+ # STATIC_STDCPLUS to "yes" to link against static version instead. -+ ifndef STATIC_STDCPLUS -+ STATIC_STDCPLUS=no -+ endif -+ - # If the user doesn't want gettext, undefine it. - ifeq (no, $(GETTEXT)) - GETTEXT= -*************** -*** 309,320 **** - endif - endif - CC := $(CROSS_COMPILE)gcc -! WINDRES := $(CROSS_COMPILE)windres --preprocessor="$(CC) -E -xc" -DRC_INVOKED - - #>>>>> end of choices - ########################################################################### - - CFLAGS = -Iproto $(DEFINES) -pipe -w -march=$(ARCH) -Wall - - ifdef GETTEXT - DEFINES += -DHAVE_GETTEXT -DHAVE_LOCALE_H ---- 315,328 ---- - endif - endif - CC := $(CROSS_COMPILE)gcc -! WINDRES := $(CROSS_COMPILE)windres -! WINDRES_CC = $(CC) - - #>>>>> end of choices - ########################################################################### - - CFLAGS = -Iproto $(DEFINES) -pipe -w -march=$(ARCH) -Wall -+ WINDRES_FLAGS = --preprocessor="$(WINDRES_CC) -E -xc" -DRC_INVOKED - - ifdef GETTEXT - DEFINES += -DHAVE_GETTEXT -DHAVE_LOCALE_H -*************** -*** 577,584 **** - endif - - ifeq (yes, $(OLE)) -! LIB += -loleaut32 -lstdc++ - OBJ += $(OUTDIR)/if_ole.o - endif - - ifeq (yes, $(MBYTE)) ---- 585,597 ---- - endif - - ifeq (yes, $(OLE)) -! LIB += -loleaut32 - OBJ += $(OUTDIR)/if_ole.o -+ ifeq (yes, $(STATIC_STDCPLUS)) -+ LIB += -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic -+ else -+ LIB += -lstdc++ -+ endif - endif - - ifeq (yes, $(MBYTE)) -*************** -*** 656,665 **** - $(CC) -c $(CFLAGS) $< -o $@ - - $(OUTDIR)/vimres.res: vim.rc version.h gui_w32_rc.h -! $(WINDRES) $(DEFINES) vim.rc $(OUTDIR)/vimres.res - - $(OUTDIR)/vimrc.o: $(OUTDIR)/vimres.res -! $(WINDRES) $(OUTDIR)/vimres.res $(OUTDIR)/vimrc.o - - $(OUTDIR): - $(MKDIR) $(OUTDIR) ---- 669,678 ---- - $(CC) -c $(CFLAGS) $< -o $@ - - $(OUTDIR)/vimres.res: vim.rc version.h gui_w32_rc.h -! $(WINDRES) $(WINDRES_FLAGS) $(DEFINES) vim.rc $(OUTDIR)/vimres.res - - $(OUTDIR)/vimrc.o: $(OUTDIR)/vimres.res -! $(WINDRES) $(WINDRES_FLAGS) $(OUTDIR)/vimres.res $(OUTDIR)/vimrc.o - - $(OUTDIR): - $(MKDIR) $(OUTDIR) -*** ../vim-7.3.092/src/version.c 2010-12-30 14:47:32.000000000 +0100 ---- src/version.c 2010-12-30 14:48:34.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 93, - /**/ - --- -Creating the world with Emacs: M-x let-there-be-light -Creating the world with Vim: :make world - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.094 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.094 -Problem: Using abs() requires type cast to int. -Solution: Use labs() so that the value remains long. (Hong Xu) -Files: src/screen.c - - -*** ../vim-7.3.093/src/screen.c 2010-12-08 19:56:52.000000000 +0100 ---- src/screen.c 2010-12-30 14:54:08.000000000 +0100 -*************** -*** 2317,2323 **** - num = (long)lnum; - else - /* 'relativenumber', don't use negative numbers */ -! num = (long)abs((int)get_cursor_rel_lnum(wp, lnum)); - - sprintf((char *)buf, "%*ld ", w, num); - #ifdef FEAT_RIGHTLEFT ---- 2317,2323 ---- - num = (long)lnum; - else - /* 'relativenumber', don't use negative numbers */ -! num = labs((long)get_cursor_rel_lnum(wp, lnum)); - - sprintf((char *)buf, "%*ld ", w, num); - #ifdef FEAT_RIGHTLEFT -*************** -*** 3475,3482 **** - num = (long)lnum; - else - /* 'relativenumber', don't use negative numbers */ -! num = (long)abs((int)get_cursor_rel_lnum(wp, -! lnum)); - - sprintf((char *)extra, "%*ld ", - number_width(wp), num); ---- 3475,3481 ---- - num = (long)lnum; - else - /* 'relativenumber', don't use negative numbers */ -! num = labs((long)get_cursor_rel_lnum(wp, lnum)); - - sprintf((char *)extra, "%*ld ", - number_width(wp), num); -*** ../vim-7.3.093/src/version.c 2010-12-30 14:50:46.000000000 +0100 ---- src/version.c 2010-12-30 14:56:32.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 94, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -58. You turn on your computer and turn off your wife. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.095 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.095 -Problem: Win32: In Chinese tear-off menu doesn't work. (Weasley) -Solution: Use menu_name_equal(). (Alex Jakushev) -Files: src/menu.c - - -*** ../vim-7.3.094/src/menu.c 2010-08-15 21:57:25.000000000 +0200 ---- src/menu.c 2011-01-04 17:41:38.000000000 +0100 -*************** -*** 1512,1519 **** - { - #ifdef FEAT_MULTI_LANG - if (menu->en_name != NULL -! && (menu_namecmp(name,menu->en_name) -! || menu_namecmp(name,menu->en_dname))) - return TRUE; - #endif - return menu_namecmp(name, menu->name) || menu_namecmp(name, menu->dname); ---- 1512,1519 ---- - { - #ifdef FEAT_MULTI_LANG - if (menu->en_name != NULL -! && (menu_namecmp(name, menu->en_name) -! || menu_namecmp(name, menu->en_dname))) - return TRUE; - #endif - return menu_namecmp(name, menu->name) || menu_namecmp(name, menu->dname); -*************** -*** 2342,2348 **** - - while (menu != NULL) - { -! if (STRCMP(name, menu->name) == 0 || STRCMP(name, menu->dname) == 0) - { - if (menu->children == NULL) - { ---- 2342,2348 ---- - - while (menu != NULL) - { -! if (menu_name_equal(name, menu)) - { - if (menu->children == NULL) - { -*** ../vim-7.3.094/src/version.c 2010-12-30 14:57:03.000000000 +0100 ---- src/version.c 2011-01-04 17:43:41.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 95, - /**/ - --- -If your nose runs, and your feet smell, you might be upside down. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.096 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.096 -Problem: "gvim -nb" is not interruptable. Leaking file descriptor on - netbeans connection error. -Solution: Check for CTRL-C typed. Free file descriptor. (Xavier de Gaye) -Files: src/netbeans.c - - -*** ../vim-7.3.095/src/netbeans.c 2010-12-24 14:00:09.000000000 +0100 ---- src/netbeans.c 2011-01-04 18:00:35.000000000 +0100 -*************** -*** 321,326 **** ---- 321,327 ---- - { - nbdebug(("error in gethostbyname() in netbeans_connect()\n")); - PERROR("gethostbyname() in netbeans_connect()"); -+ sock_close(sd); - goto theend; - } - memcpy((char *)&server.sin_addr, host->h_addr, host->h_length); -*************** -*** 370,384 **** - || (errno == EINTR))) - { - nbdebug(("retrying...\n")); -! sleep(5); -! if (!doabort) - { -! ui_breakcheck(); -! if (got_int) -! { -! errno = EINTR; -! break; -! } - } - if (connect(sd, (struct sockaddr *)&server, - sizeof(server)) == 0) ---- 371,382 ---- - || (errno == EINTR))) - { - nbdebug(("retrying...\n")); -! mch_delay(3000L, TRUE); -! ui_breakcheck(); -! if (got_int) - { -! errno = EINTR; -! break; - } - if (connect(sd, (struct sockaddr *)&server, - sizeof(server)) == 0) -*************** -*** 393,398 **** ---- 391,397 ---- - /* Get here when the server can't be found. */ - nbdebug(("Cannot connect to Netbeans #2\n")); - PERROR(_("Cannot connect to Netbeans #2")); -+ sock_close(sd); - if (doabort) - getout(1); - goto theend; -*************** -*** 403,408 **** ---- 402,408 ---- - { - nbdebug(("Cannot connect to Netbeans\n")); - PERROR(_("Cannot connect to Netbeans")); -+ sock_close(sd); - if (doabort) - getout(1); - goto theend; -*** ../vim-7.3.095/src/version.c 2011-01-04 17:49:25.000000000 +0100 ---- src/version.c 2011-01-04 18:09:46.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 96, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -85. Choice between paying Compuserve bill and paying for kids education - is a no brainer -- although a bit painful for your kids. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.097 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.097 -Problem: Using ":call" inside "if 0" does not see that a function returns a - Dict and gives error for "." as string concatenation. -Solution: Use eval0() to skip over the expression. (Yasuhiro Matsumoto) -Files: src/eval.c - - -*** ../vim-7.3.096/src/eval.c 2010-12-17 18:06:00.000000000 +0100 ---- src/eval.c 2011-01-04 18:54:27.000000000 +0100 -*************** -*** 3335,3340 **** ---- 3335,3349 ---- - int failed = FALSE; - funcdict_T fudi; - -+ if (eap->skip) -+ { -+ /* trans_function_name() doesn't work well when skipping, use eval0() -+ * instead to skip to any following command, e.g. for: -+ * :if 0 | call dict.foo().bar() | endif */ -+ eval0(eap->arg, &rettv, &eap->nextcmd, FALSE); -+ return; -+ } -+ - tofree = trans_function_name(&arg, eap->skip, TFN_INT, &fudi); - if (fudi.fd_newkey != NULL) - { -*** ../vim-7.3.096/src/version.c 2011-01-04 18:11:39.000000000 +0100 ---- src/version.c 2011-01-04 19:00:21.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 97, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -86. E-mail Deficiency Depression (EDD) forces you to e-mail yourself. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.098 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.098 -Problem: Function that ignores error still causes called_emsg to be set. - E.g. when expand() fails the status line is disabled. -Solution: Move check for emsg_not_now() up. (James Vega) -Files: src/message.c - - -*** ../vim-7.3.097/src/message.c 2010-10-20 21:22:17.000000000 +0200 ---- src/message.c 2011-01-04 19:19:04.000000000 +0100 -*************** -*** 569,574 **** ---- 569,578 ---- - int severe; - #endif - -+ /* Skip this if not giving error messages at the moment. */ -+ if (emsg_not_now()) -+ return TRUE; -+ - called_emsg = TRUE; - ex_exitval = 1; - -*************** -*** 581,590 **** - emsg_severe = FALSE; - #endif - -- /* Skip this if not giving error messages at the moment. */ -- if (emsg_not_now()) -- return TRUE; -- - if (!emsg_off || vim_strchr(p_debug, 't') != NULL) - { - #ifdef FEAT_EVAL ---- 585,590 ---- -*** ../vim-7.3.097/src/version.c 2011-01-04 19:03:22.000000000 +0100 ---- src/version.c 2011-01-04 19:24:30.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 98, - /**/ - --- -Ed's Radiator Shop: The Best Place in Town to Take a Leak. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.099 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.099 -Problem: Crash when splitting a window with zero height. (Yukihiro - Nakadaira) -Solution: Don't set the fraction in a window with zero height. -Files: src/window.c - - -*** ../vim-7.3.098/src/window.c 2010-12-17 17:35:05.000000000 +0100 ---- src/window.c 2011-01-08 14:41:32.000000000 +0100 -*************** -*** 986,992 **** - - /* Set w_fraction now so that the cursor keeps the same relative - * vertical position. */ -! set_fraction(oldwin); - wp->w_fraction = oldwin->w_fraction; - - #ifdef FEAT_VERTSPLIT ---- 986,993 ---- - - /* Set w_fraction now so that the cursor keeps the same relative - * vertical position. */ -! if (oldwin->w_height > 0) -! set_fraction(oldwin); - wp->w_fraction = oldwin->w_fraction; - - #ifdef FEAT_VERTSPLIT -*** ../vim-7.3.098/src/version.c 2011-01-04 19:25:46.000000000 +0100 ---- src/version.c 2011-01-08 14:44:02.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 99, - /**/ - --- -From "know your smileys": - 8-O "Omigod!!" (done "rm -rf *" ?) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.100 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.100 -Problem: When using :normal v:count isn't set. -Solution: Call normal_cmd() with toplevel set to TRUE. -Files: src/ex_docmd.c - - -*** ../vim-7.3.099/src/ex_docmd.c 2010-12-02 16:01:23.000000000 +0100 ---- src/ex_docmd.c 2011-01-06 17:23:43.000000000 +0100 -*************** -*** 9310,9316 **** - && !got_int) - { - update_topline_cursor(); -! normal_cmd(&oa, FALSE); /* execute a Normal mode cmd */ - } - } - #endif ---- 9310,9316 ---- - && !got_int) - { - update_topline_cursor(); -! normal_cmd(&oa, TRUE); /* execute a Normal mode cmd */ - } - } - #endif -*** ../vim-7.3.099/src/version.c 2011-01-08 14:45:57.000000000 +0100 ---- src/version.c 2011-01-17 19:49:07.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 100, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -109. You actually read -- and enjoy -- lists like this. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.1 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.101 -Problem: ino_t defined with wrong size. -Solution: Move including auto/config.h before other includes. (Marius - Geminas) -Files: src/if_ruby.c, src/if_lua.c - - -*** ../vim-7.3.100/src/if_ruby.c 2010-12-24 13:39:29.000000000 +0100 ---- src/if_ruby.c 2011-01-09 14:43:14.000000000 +0100 -*************** -*** 11,23 **** - * See README.txt for an overview of the Vim source code. - */ - -- #include <stdio.h> -- #include <string.h> -- - #ifdef HAVE_CONFIG_H - # include "auto/config.h" - #endif - - #ifdef _WIN32 - # if !defined(DYNAMIC_RUBY_VER) || (DYNAMIC_RUBY_VER < 18) - # define NT ---- 11,23 ---- - * See README.txt for an overview of the Vim source code. - */ - - #ifdef HAVE_CONFIG_H - # include "auto/config.h" - #endif - -+ #include <stdio.h> -+ #include <string.h> -+ - #ifdef _WIN32 - # if !defined(DYNAMIC_RUBY_VER) || (DYNAMIC_RUBY_VER < 18) - # define NT -*** ../vim-7.3.100/src/if_lua.c 2010-10-23 14:02:48.000000000 +0200 ---- src/if_lua.c 2011-01-09 14:46:46.000000000 +0100 -*************** -*** 9,20 **** - * See README.txt for an overview of the Vim source code. - */ - -! #include <stdio.h> -! #include <string.h> - #include <lua.h> - #include <lualib.h> - #include <lauxlib.h> -- #include "vim.h" - - /* Only do the following when the feature is enabled. Needed for "make - * depend". */ ---- 9,19 ---- - * See README.txt for an overview of the Vim source code. - */ - -! #include "vim.h" -! - #include <lua.h> - #include <lualib.h> - #include <lauxlib.h> - - /* Only do the following when the feature is enabled. Needed for "make - * depend". */ -*** ../vim-7.3.100/src/version.c 2011-01-17 19:50:01.000000000 +0100 ---- src/version.c 2011-01-17 19:51:40.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 101, - /**/ - --- -In a world without walls and borders, who needs windows and gates? - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.102 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.102 -Problem: When using ":make", typing the next command and then getting the - "reload" prompt the next command is (partly) eaten by the reload - prompt. -Solution: Accept ':' as a special character at the reload prompt to accept - the default choice and execute the command. -Files: src/eval.c, src/fileio.c, src/gui.c, src/gui_xmdlg.c, - src/memline.c, src/message.c, src/proto/message.pro, - src/gui_athena.c, src/gui_gtk.c, src/gui_mac.c, src/gui_motif.c, - src/gui_photon.c, src/gui_w16.c, src/gui_w32.c, src/os_mswin.c - src/proto/gui_athena.pro, src/proto/gui_gtk.pro, - src/proto/gui_mac.pro, src/proto/gui_motif.pro, - src/proto/gui_photon.pro, src/proto/gui_w16.pro, - src/proto/gui_w32.pro - - -*** ../vim-7.3.101/src/eval.c 2011-01-04 19:03:22.000000000 +0100 ---- src/eval.c 2011-01-16 00:14:21.000000000 +0100 -*************** -*** 9323,9329 **** - - if (!error) - rettv->vval.v_number = do_dialog(type, NULL, message, buttons, -! def, NULL); - #endif - } - ---- 9323,9329 ---- - - if (!error) - rettv->vval.v_number = do_dialog(type, NULL, message, buttons, -! def, NULL, FALSE); - #endif - } - -*************** -*** 12744,12750 **** - IObuff[0] = NUL; - if (message != NULL && defstr != NULL - && do_dialog(VIM_QUESTION, NULL, message, -! (char_u *)_("&OK\n&Cancel"), 1, IObuff) == 1) - rettv->vval.v_string = vim_strsave(IObuff); - else - { ---- 12744,12750 ---- - IObuff[0] = NUL; - if (message != NULL && defstr != NULL - && do_dialog(VIM_QUESTION, NULL, message, -! (char_u *)_("&OK\n&Cancel"), 1, IObuff, FALSE) == 1) - rettv->vval.v_string = vim_strsave(IObuff); - else - { -*** ../vim-7.3.101/src/fileio.c 2010-12-17 18:06:00.000000000 +0100 ---- src/fileio.c 2011-01-16 00:14:37.000000000 +0100 -*************** -*** 7008,7014 **** - STRCAT(tbuf, mesg2); - } - if (do_dialog(VIM_WARNING, (char_u *)_("Warning"), tbuf, -! (char_u *)_("&OK\n&Load File"), 1, NULL) == 2) - reload = TRUE; - } - else ---- 7008,7014 ---- - STRCAT(tbuf, mesg2); - } - if (do_dialog(VIM_WARNING, (char_u *)_("Warning"), tbuf, -! (char_u *)_("&OK\n&Load File"), 1, NULL, TRUE) == 2) - reload = TRUE; - } - else -*** ../vim-7.3.101/src/gui.c 2010-10-20 19:17:43.000000000 +0200 ---- src/gui.c 2011-01-16 00:14:56.000000000 +0100 -*************** -*** 4903,4909 **** - if (STRLEN(p) > 2000) - STRCPY(p + 2000 - 14, "...(truncated)"); - (void)do_dialog(VIM_ERROR, (char_u *)_("Error"), -! p, (char_u *)_("&Ok"), 1, NULL); - break; - } - ga_clear(&error_ga); ---- 4903,4909 ---- - if (STRLEN(p) > 2000) - STRCPY(p + 2000 - 14, "...(truncated)"); - (void)do_dialog(VIM_ERROR, (char_u *)_("Error"), -! p, (char_u *)_("&Ok"), 1, NULL, FALSE); - break; - } - ga_clear(&error_ga); -*** ../vim-7.3.101/src/gui_xmdlg.c 2010-08-15 21:57:32.000000000 +0200 ---- src/gui_xmdlg.c 2011-01-16 00:15:33.000000000 +0100 -*************** -*** 688,694 **** - do_dialog(VIM_ERROR, - (char_u *)_("Error"), - (char_u *)_("Invalid font specification"), -! (char_u *)_("&Dismiss"), 1, NULL); - - return True; - } ---- 688,694 ---- - do_dialog(VIM_ERROR, - (char_u *)_("Error"), - (char_u *)_("Invalid font specification"), -! (char_u *)_("&Dismiss"), 1, NULL, FALSE); - - return True; - } -*************** -*** 807,813 **** - do_dialog(VIM_ERROR, - (char_u *)_("Error"), - (char_u *)_("Invalid font specification"), -! (char_u *)_("&Dismiss"), 1, NULL); - XFreeFontNames(name); - } - else ---- 807,813 ---- - do_dialog(VIM_ERROR, - (char_u *)_("Error"), - (char_u *)_("Invalid font specification"), -! (char_u *)_("&Dismiss"), 1, NULL, FALSE); - XFreeFontNames(name); - } - else -*** ../vim-7.3.101/src/memline.c 2010-12-17 20:23:56.000000000 +0100 ---- src/memline.c 2011-01-16 00:15:47.000000000 +0100 -*************** -*** 4516,4522 **** - process_still_running - ? (char_u *)_("&Open Read-Only\n&Edit anyway\n&Recover\n&Quit\n&Abort") : - # endif -! (char_u *)_("&Open Read-Only\n&Edit anyway\n&Recover\n&Delete it\n&Quit\n&Abort"), 1, NULL); - - # if defined(UNIX) || defined(__EMX__) || defined(VMS) - if (process_still_running && choice >= 4) ---- 4516,4522 ---- - process_still_running - ? (char_u *)_("&Open Read-Only\n&Edit anyway\n&Recover\n&Quit\n&Abort") : - # endif -! (char_u *)_("&Open Read-Only\n&Edit anyway\n&Recover\n&Delete it\n&Quit\n&Abort"), 1, NULL, FALSE); - - # if defined(UNIX) || defined(__EMX__) || defined(VMS) - if (process_still_running && choice >= 4) -*** ../vim-7.3.101/src/message.c 2011-01-04 19:25:46.000000000 +0100 ---- src/message.c 2011-01-17 19:57:30.000000000 +0100 -*************** -*** 3315,3321 **** - * different letter. - */ - int -! do_dialog(type, title, message, buttons, dfltbutton, textfield) - int type UNUSED; - char_u *title UNUSED; - char_u *message; ---- 3315,3321 ---- - * different letter. - */ - int -! do_dialog(type, title, message, buttons, dfltbutton, textfield, ex_cmd) - int type UNUSED; - char_u *title UNUSED; - char_u *message; -*************** -*** 3323,3328 **** ---- 3323,3330 ---- - int dfltbutton; - char_u *textfield UNUSED; /* IObuff for inputdialog(), NULL - otherwise */ -+ int ex_cmd; /* when TRUE pressing : accepts default and starts -+ Ex command */ - { - int oldState; - int retval = 0; -*************** -*** 3341,3347 **** - if (gui.in_use && vim_strchr(p_go, GO_CONDIALOG) == NULL) - { - c = gui_mch_dialog(type, title, message, buttons, dfltbutton, -! textfield); - /* avoid a hit-enter prompt without clearing the cmdline */ - need_wait_return = FALSE; - emsg_on_display = FALSE; ---- 3343,3349 ---- - if (gui.in_use && vim_strchr(p_go, GO_CONDIALOG) == NULL) - { - c = gui_mch_dialog(type, title, message, buttons, dfltbutton, -! textfield, ex_cmd); - /* avoid a hit-enter prompt without clearing the cmdline */ - need_wait_return = FALSE; - emsg_on_display = FALSE; -*************** -*** 3388,3393 **** ---- 3390,3402 ---- - default: /* Could be a hotkey? */ - if (c < 0) /* special keys are ignored here */ - continue; -+ if (c == ':' && ex_cmd) -+ { -+ retval = dfltbutton; -+ ins_char_typebuf(':'); -+ break; -+ } -+ - /* Make the character lowercase, as chars in "hotkeys" are. */ - c = MB_TOLOWER(c); - retval = 1; -*************** -*** 3661,3667 **** - if (do_dialog(type, - title == NULL ? (char_u *)_("Question") : title, - message, -! (char_u *)_("&Yes\n&No"), dflt, NULL) == 1) - return VIM_YES; - return VIM_NO; - } ---- 3670,3676 ---- - if (do_dialog(type, - title == NULL ? (char_u *)_("Question") : title, - message, -! (char_u *)_("&Yes\n&No"), dflt, NULL, FALSE) == 1) - return VIM_YES; - return VIM_NO; - } -*************** -*** 3676,3682 **** - switch (do_dialog(type, - title == NULL ? (char_u *)_("Question") : title, - message, -! (char_u *)_("&Yes\n&No\n&Cancel"), dflt, NULL)) - { - case 1: return VIM_YES; - case 2: return VIM_NO; ---- 3685,3691 ---- - switch (do_dialog(type, - title == NULL ? (char_u *)_("Question") : title, - message, -! (char_u *)_("&Yes\n&No\n&Cancel"), dflt, NULL, FALSE)) - { - case 1: return VIM_YES; - case 2: return VIM_NO; -*************** -*** 3695,3701 **** - title == NULL ? (char_u *)"Question" : title, - message, - (char_u *)_("&Yes\n&No\nSave &All\n&Discard All\n&Cancel"), -! dflt, NULL)) - { - case 1: return VIM_YES; - case 2: return VIM_NO; ---- 3704,3710 ---- - title == NULL ? (char_u *)"Question" : title, - message, - (char_u *)_("&Yes\n&No\nSave &All\n&Discard All\n&Cancel"), -! dflt, NULL, FALSE)) - { - case 1: return VIM_YES; - case 2: return VIM_NO; -*** ../vim-7.3.101/src/proto/message.pro 2010-10-20 21:22:17.000000000 +0200 ---- src/proto/message.pro 2011-01-16 00:22:36.000000000 +0100 -*************** -*** 64,70 **** - int verbose_open __ARGS((void)); - void give_warning __ARGS((char_u *message, int hl)); - void msg_advance __ARGS((int col)); -! int do_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int dfltbutton, char_u *textfield)); - void display_confirm_msg __ARGS((void)); - int vim_dialog_yesno __ARGS((int type, char_u *title, char_u *message, int dflt)); - int vim_dialog_yesnocancel __ARGS((int type, char_u *title, char_u *message, int dflt)); ---- 64,70 ---- - int verbose_open __ARGS((void)); - void give_warning __ARGS((char_u *message, int hl)); - void msg_advance __ARGS((int col)); -! int do_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int dfltbutton, char_u *textfield, int ex_cmd)); - void display_confirm_msg __ARGS((void)); - int vim_dialog_yesno __ARGS((int type, char_u *title, char_u *message, int dflt)); - int vim_dialog_yesnocancel __ARGS((int type, char_u *title, char_u *message, int dflt)); -*** ../vim-7.3.101/src/gui_athena.c 2010-08-15 21:57:25.000000000 +0200 ---- src/gui_athena.c 2011-01-16 00:18:47.000000000 +0100 -*************** -*** 2117,2129 **** - } - - int -! gui_mch_dialog(type, title, message, buttons, dfltbutton, textfield) - int type UNUSED; - char_u *title; - char_u *message; - char_u *buttons; - int dfltbutton UNUSED; - char_u *textfield; - { - char_u *buts; - char_u *p, *next; ---- 2117,2130 ---- - } - - int -! gui_mch_dialog(type, title, message, buttons, dfltbutton, textfield, ex_cmd) - int type UNUSED; - char_u *title; - char_u *message; - char_u *buttons; - int dfltbutton UNUSED; - char_u *textfield; -+ int ex_cmd UNUSED; - { - char_u *buts; - char_u *p, *next; -*** ../vim-7.3.101/src/gui_gtk.c 2010-12-08 13:11:15.000000000 +0100 ---- src/gui_gtk.c 2011-01-16 00:24:44.000000000 +0100 -*************** -*** 1268,1274 **** - char_u *message, /* message text */ - char_u *buttons, /* names of buttons */ - int def_but, /* default button */ -! char_u *textfield) /* text for textfield or NULL */ - { - GtkWidget *dialog; - GtkWidget *entry = NULL; ---- 1268,1275 ---- - char_u *message, /* message text */ - char_u *buttons, /* names of buttons */ - int def_but, /* default button */ -! char_u *textfield, /* text for textfield or NULL */ -! int ex_cmd UNUSED) - { - GtkWidget *dialog; - GtkWidget *entry = NULL; -*** ../vim-7.3.101/src/gui_mac.c 2010-09-21 17:34:26.000000000 +0200 ---- src/gui_mac.c 2011-01-16 00:19:52.000000000 +0100 -*************** -*** 5583,5589 **** - char_u *message, - char_u *buttons, - int dfltbutton, -! char_u *textfield) - { - Handle buttonDITL; - Handle iconDITL; ---- 5583,5590 ---- - char_u *message, - char_u *buttons, - int dfltbutton, -! char_u *textfield, -! int ex_cmd) - { - Handle buttonDITL; - Handle iconDITL; -*** ../vim-7.3.101/src/gui_motif.c 2010-08-15 21:57:28.000000000 +0200 ---- src/gui_motif.c 2011-01-16 00:20:14.000000000 +0100 -*************** -*** 2549,2561 **** - #endif - - int -! gui_mch_dialog(type, title, message, button_names, dfltbutton, textfield) - int type UNUSED; - char_u *title; - char_u *message; - char_u *button_names; - int dfltbutton; - char_u *textfield; /* buffer of size IOSIZE */ - { - char_u *buts; - char_u *p, *next; ---- 2549,2562 ---- - #endif - - int -! gui_mch_dialog(type, title, message, button_names, dfltbutton, textfield, ex_cmd) - int type UNUSED; - char_u *title; - char_u *message; - char_u *button_names; - int dfltbutton; - char_u *textfield; /* buffer of size IOSIZE */ -+ int ex_cmd UNUSED; - { - char_u *buts; - char_u *p, *next; -*** ../vim-7.3.101/src/gui_photon.c 2010-08-15 21:57:27.000000000 +0200 ---- src/gui_photon.c 2011-01-16 00:20:28.000000000 +0100 -*************** -*** 1502,1508 **** - char_u *message, - char_u *buttons, - int default_button, -! char_u *textfield) - { - char_u *str; - char_u **button_array; ---- 1502,1509 ---- - char_u *message, - char_u *buttons, - int default_button, -! char_u *textfield, -! int ex_cmd) - { - char_u *str; - char_u **button_array; -*** ../vim-7.3.101/src/gui_w16.c 2010-08-15 21:57:28.000000000 +0200 ---- src/gui_w16.c 2011-01-16 00:20:48.000000000 +0100 -*************** -*** 1098,1104 **** - char_u *message, - char_u *buttons, - int dfltbutton, -! char_u *textfield) - { - FARPROC dp; - LPWORD p, pnumitems; ---- 1098,1105 ---- - char_u *message, - char_u *buttons, - int dfltbutton, -! char_u *textfield, -! int ex_cmd) - { - FARPROC dp; - LPWORD p, pnumitems; -*** ../vim-7.3.101/src/gui_w32.c 2010-10-27 12:33:12.000000000 +0200 ---- src/gui_w32.c 2011-01-16 00:21:08.000000000 +0100 -*************** -*** 3005,3011 **** - char_u *message, - char_u *buttons, - int dfltbutton, -! char_u *textfield) - { - WORD *p, *pdlgtemplate, *pnumitems; - DWORD *dwp; ---- 3005,3012 ---- - char_u *message, - char_u *buttons, - int dfltbutton, -! char_u *textfield, -! int ex_cmd) - { - WORD *p, *pdlgtemplate, *pnumitems; - DWORD *dwp; -*** ../vim-7.3.101/src/os_mswin.c 2010-12-17 20:23:56.000000000 +0100 ---- src/os_mswin.c 2011-01-16 00:21:41.000000000 +0100 -*************** -*** 593,599 **** - gui.starting ? (char_u *)_("Message") : - #endif - (char_u *)_("Error"), -! p, (char_u *)_("&Ok"), 1, NULL); - break; - } - ga_clear(&error_ga); ---- 593,599 ---- - gui.starting ? (char_u *)_("Message") : - #endif - (char_u *)_("Error"), -! p, (char_u *)_("&Ok"), 1, NULL, FALSE); - break; - } - ga_clear(&error_ga); -*** ../vim-7.3.101/src/proto/gui_athena.pro 2010-08-15 21:57:28.000000000 +0200 ---- src/proto/gui_athena.pro 2011-01-16 00:23:00.000000000 +0100 -*************** -*** 27,31 **** - void gui_mch_set_scrollbar_colors __ARGS((scrollbar_T *sb)); - Window gui_x11_get_wid __ARGS((void)); - char_u *gui_mch_browse __ARGS((int saving, char_u *title, char_u *dflt, char_u *ext, char_u *initdir, char_u *filter)); -! int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int dfltbutton, char_u *textfield)); - /* vim: set ft=c : */ ---- 27,31 ---- - void gui_mch_set_scrollbar_colors __ARGS((scrollbar_T *sb)); - Window gui_x11_get_wid __ARGS((void)); - char_u *gui_mch_browse __ARGS((int saving, char_u *title, char_u *dflt, char_u *ext, char_u *initdir, char_u *filter)); -! int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int dfltbutton, char_u *textfield, int ex_cmd)); - /* vim: set ft=c : */ -*** ../vim-7.3.101/src/proto/gui_gtk.pro 2010-08-15 21:57:28.000000000 +0200 ---- src/proto/gui_gtk.pro 2011-01-16 00:22:57.000000000 +0100 -*************** -*** 13,19 **** - void gui_mch_destroy_scrollbar __ARGS((scrollbar_T *sb)); - char_u *gui_mch_browse __ARGS((int saving, char_u *title, char_u *dflt, char_u *ext, char_u *initdir, char_u *filter)); - char_u *gui_mch_browsedir __ARGS((char_u *title, char_u *initdir)); -! int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int def_but, char_u *textfield)); - void gui_mch_show_popupmenu __ARGS((vimmenu_T *menu)); - void gui_make_popup __ARGS((char_u *path_name, int mouse_pos)); - void gui_mch_find_dialog __ARGS((exarg_T *eap)); ---- 13,19 ---- - void gui_mch_destroy_scrollbar __ARGS((scrollbar_T *sb)); - char_u *gui_mch_browse __ARGS((int saving, char_u *title, char_u *dflt, char_u *ext, char_u *initdir, char_u *filter)); - char_u *gui_mch_browsedir __ARGS((char_u *title, char_u *initdir)); -! int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int def_but, char_u *textfield, int ex_cmd)); - void gui_mch_show_popupmenu __ARGS((vimmenu_T *menu)); - void gui_make_popup __ARGS((char_u *path_name, int mouse_pos)); - void gui_mch_find_dialog __ARGS((exarg_T *eap)); -*** ../vim-7.3.101/src/proto/gui_mac.pro 2010-08-15 21:57:28.000000000 +0200 ---- src/proto/gui_mac.pro 2011-01-16 00:31:46.000000000 +0100 -*************** -*** 81,87 **** - int gui_mch_get_mouse_y __ARGS((void)); - void gui_mch_setmouse __ARGS((int x, int y)); - void gui_mch_show_popupmenu __ARGS((vimmenu_T *menu)); -! int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int dfltbutton, char_u *textfield)); - char_u *gui_mch_browse __ARGS((int saving, char_u *title, char_u *dflt, char_u *ext, char_u *initdir, char_u *filter)); - void gui_mch_set_foreground __ARGS((void)); - void gui_mch_show_tabline __ARGS((int showit)); ---- 81,87 ---- - int gui_mch_get_mouse_y __ARGS((void)); - void gui_mch_setmouse __ARGS((int x, int y)); - void gui_mch_show_popupmenu __ARGS((vimmenu_T *menu)); -! int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int dfltbutton, char_u *textfield, int ex_cmd)); - char_u *gui_mch_browse __ARGS((int saving, char_u *title, char_u *dflt, char_u *ext, char_u *initdir, char_u *filter)); - void gui_mch_set_foreground __ARGS((void)); - void gui_mch_show_tabline __ARGS((int showit)); -*** ../vim-7.3.101/src/proto/gui_motif.pro 2010-08-15 21:57:28.000000000 +0200 ---- src/proto/gui_motif.pro 2011-01-16 00:22:58.000000000 +0100 -*************** -*** 29,35 **** - void gui_mch_set_scrollbar_colors __ARGS((scrollbar_T *sb)); - Window gui_x11_get_wid __ARGS((void)); - char_u *gui_mch_browse __ARGS((int saving, char_u *title, char_u *dflt, char_u *ext, char_u *initdir, char_u *filter)); -! int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *button_names, int dfltbutton, char_u *textfield)); - void gui_mch_enable_footer __ARGS((int showit)); - void gui_mch_set_footer __ARGS((char_u *s)); - void gui_mch_show_toolbar __ARGS((int showit)); ---- 29,35 ---- - void gui_mch_set_scrollbar_colors __ARGS((scrollbar_T *sb)); - Window gui_x11_get_wid __ARGS((void)); - char_u *gui_mch_browse __ARGS((int saving, char_u *title, char_u *dflt, char_u *ext, char_u *initdir, char_u *filter)); -! int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *button_names, int dfltbutton, char_u *textfield, int ex_cmd)); - void gui_mch_enable_footer __ARGS((int showit)); - void gui_mch_set_footer __ARGS((char_u *s)); - void gui_mch_show_toolbar __ARGS((int showit)); -*** ../vim-7.3.101/src/proto/gui_photon.pro 2010-08-15 21:57:28.000000000 +0200 ---- src/proto/gui_photon.pro 2011-01-16 00:32:33.000000000 +0100 -*************** -*** 8,14 **** - void gui_mch_update __ARGS((void)); - int gui_mch_wait_for_chars __ARGS((int wtime)); - char_u *gui_mch_browse __ARGS((int saving, char_u *title, char_u *default_name, char_u *ext, char_u *initdir, char_u *filter)); -! int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int default_button, char_u *textfield)); - int gui_mch_get_winpos __ARGS((int *x, int *y)); - void gui_mch_set_winpos __ARGS((int x, int y)); - void gui_mch_set_shellsize __ARGS((int width, int height, int min_width, int min_height, int base_width, int base_height, int direction)); ---- 8,14 ---- - void gui_mch_update __ARGS((void)); - int gui_mch_wait_for_chars __ARGS((int wtime)); - char_u *gui_mch_browse __ARGS((int saving, char_u *title, char_u *default_name, char_u *ext, char_u *initdir, char_u *filter)); -! int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int default_button, char_u *textfield, int ex_cmd)); - int gui_mch_get_winpos __ARGS((int *x, int *y)); - void gui_mch_set_winpos __ARGS((int x, int y)); - void gui_mch_set_shellsize __ARGS((int width, int height, int min_width, int min_height, int base_width, int base_height, int direction)); -*** ../vim-7.3.101/src/proto/gui_w16.pro 2010-08-15 21:57:28.000000000 +0200 ---- src/proto/gui_w16.pro 2011-01-16 00:34:36.000000000 +0100 -*************** -*** 74,79 **** - void gui_mch_add_menu_item __ARGS((vimmenu_T *menu, int idx)); - void gui_mch_destroy_menu __ARGS((vimmenu_T *menu)); - void gui_mch_menu_grey __ARGS((vimmenu_T *menu, int grey)); -! int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int dfltbutton, char_u *textfield)); - void gui_mch_set_foreground __ARGS((void)); - /* vim: set ft=c : */ ---- 74,79 ---- - void gui_mch_add_menu_item __ARGS((vimmenu_T *menu, int idx)); - void gui_mch_destroy_menu __ARGS((vimmenu_T *menu)); - void gui_mch_menu_grey __ARGS((vimmenu_T *menu, int grey)); -! int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int dfltbutton, char_u *textfield, int ex_cmd)); - void gui_mch_set_foreground __ARGS((void)); - /* vim: set ft=c : */ -*** ../vim-7.3.101/src/proto/gui_w32.pro 2010-08-15 21:57:28.000000000 +0200 ---- src/proto/gui_w32.pro 2011-01-16 00:33:12.000000000 +0100 -*************** -*** 81,87 **** - void gui_mch_add_menu_item __ARGS((vimmenu_T *menu, int idx)); - void gui_mch_destroy_menu __ARGS((vimmenu_T *menu)); - void gui_mch_menu_grey __ARGS((vimmenu_T *menu, int grey)); -! int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int dfltbutton, char_u *textfield)); - void gui_mch_set_foreground __ARGS((void)); - void gui_mch_drawsign __ARGS((int row, int col, int typenr)); - void *gui_mch_register_sign __ARGS((char_u *signfile)); ---- 81,87 ---- - void gui_mch_add_menu_item __ARGS((vimmenu_T *menu, int idx)); - void gui_mch_destroy_menu __ARGS((vimmenu_T *menu)); - void gui_mch_menu_grey __ARGS((vimmenu_T *menu, int grey)); -! int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int dfltbutton, char_u *textfield, int ex_cmd)); - void gui_mch_set_foreground __ARGS((void)); - void gui_mch_drawsign __ARGS((int row, int col, int typenr)); - void *gui_mch_register_sign __ARGS((char_u *signfile)); -*** ../vim-7.3.101/src/version.c 2011-01-17 19:53:20.000000000 +0100 ---- src/version.c 2011-01-17 20:05:02.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 102, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -110. You actually volunteer to become your employer's webmaster. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.103 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.103 -Problem: Changing 'fileformat' and then using ":w" in an empty file sets - the 'modified' option. -Solution: In unchanged() don't ignore 'ff' for an empty file. -Files: src/misc1.c, src/option.c, src/proto/option.pro, src/undo.c - - -*** ../vim-7.3.102/src/misc1.c 2010-12-30 12:30:26.000000000 +0100 ---- src/misc1.c 2011-01-22 00:00:24.000000000 +0100 -*************** -*** 2919,2925 **** - buf_T *buf; - int ff; /* also reset 'fileformat' */ - { -! if (buf->b_changed || (ff && file_ff_differs(buf))) - { - buf->b_changed = 0; - ml_setflags(buf); ---- 2919,2925 ---- - buf_T *buf; - int ff; /* also reset 'fileformat' */ - { -! if (buf->b_changed || (ff && file_ff_differs(buf, FALSE))) - { - buf->b_changed = 0; - ml_setflags(buf); -*** ../vim-7.3.102/src/option.c 2010-12-02 21:43:10.000000000 +0100 ---- src/option.c 2011-01-22 00:03:40.000000000 +0100 -*************** -*** 11296,11311 **** - * from when editing started (save_file_ff() called). - * Also when 'endofline' was changed and 'binary' is set, or when 'bomb' was - * changed and 'binary' is not set. -! * Don't consider a new, empty buffer to be changed. - */ - int -! file_ff_differs(buf) - buf_T *buf; - { - /* In a buffer that was never loaded the options are not valid. */ - if (buf->b_flags & BF_NEVERLOADED) - return FALSE; -! if ((buf->b_flags & BF_NEW) - && buf->b_ml.ml_line_count == 1 - && *ml_get_buf(buf, (linenr_T)1, FALSE) == NUL) - return FALSE; ---- 11296,11314 ---- - * from when editing started (save_file_ff() called). - * Also when 'endofline' was changed and 'binary' is set, or when 'bomb' was - * changed and 'binary' is not set. -! * When "ignore_empty" is true don't consider a new, empty buffer to be -! * changed. - */ - int -! file_ff_differs(buf, ignore_empty) - buf_T *buf; -+ int ignore_empty; - { - /* In a buffer that was never loaded the options are not valid. */ - if (buf->b_flags & BF_NEVERLOADED) - return FALSE; -! if (ignore_empty -! && (buf->b_flags & BF_NEW) - && buf->b_ml.ml_line_count == 1 - && *ml_get_buf(buf, (linenr_T)1, FALSE) == NUL) - return FALSE; -*** ../vim-7.3.102/src/proto/option.pro 2010-08-15 21:57:28.000000000 +0200 ---- src/proto/option.pro 2011-01-22 00:04:35.000000000 +0100 -*************** -*** 54,59 **** - int option_was_set __ARGS((char_u *name)); - int can_bs __ARGS((int what)); - void save_file_ff __ARGS((buf_T *buf)); -! int file_ff_differs __ARGS((buf_T *buf)); - int check_ff_value __ARGS((char_u *p)); - /* vim: set ft=c : */ ---- 54,59 ---- - int option_was_set __ARGS((char_u *name)); - int can_bs __ARGS((int what)); - void save_file_ff __ARGS((buf_T *buf)); -! int file_ff_differs __ARGS((buf_T *buf, int ignore_empty)); - int check_ff_value __ARGS((char_u *p)); - /* vim: set ft=c : */ -*** ../vim-7.3.102/src/undo.c 2010-12-17 18:06:00.000000000 +0100 ---- src/undo.c 2011-01-22 00:03:58.000000000 +0100 -*************** -*** 3304,3310 **** - #ifdef FEAT_QUICKFIX - !bt_dontwrite(buf) && - #endif -! (buf->b_changed || file_ff_differs(buf)); - } - - int ---- 3304,3310 ---- - #ifdef FEAT_QUICKFIX - !bt_dontwrite(buf) && - #endif -! (buf->b_changed || file_ff_differs(buf, TRUE)); - } - - int -*************** -*** 3314,3320 **** - #ifdef FEAT_QUICKFIX - !bt_dontwrite(curbuf) && - #endif -! (curbuf->b_changed || file_ff_differs(curbuf)); - } - - #if defined(FEAT_EVAL) || defined(PROTO) ---- 3314,3320 ---- - #ifdef FEAT_QUICKFIX - !bt_dontwrite(curbuf) && - #endif -! (curbuf->b_changed || file_ff_differs(curbuf, TRUE)); - } - - #if defined(FEAT_EVAL) || defined(PROTO) -*** ../vim-7.3.102/src/version.c 2011-01-17 20:08:03.000000000 +0100 ---- src/version.c 2011-01-22 00:07:56.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 103, - /**/ - --- -In a world without fences, who needs Gates and Windows? - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.104 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Problem: Conceal: using Tab for cchar causes problems. (ZyX) -Solution: Do not accept a control character for cchar. -Files: src/syntax.c - - -*** ../vim-7.3.103/src/syntax.c 2010-09-29 18:32:47.000000000 +0200 ---- src/syntax.c 2011-01-22 00:50:20.000000000 +0100 -*************** -*** 4537,4542 **** ---- 4537,4549 ---- - ; - #endif - } -+ #ifdef FEAT_CONCEAL -+ if (!vim_isprintc_strict(*conceal_char)) -+ { -+ EMSG(_("E844: invalid cchar value")); -+ return NULL; -+ } -+ #endif - arg = skipwhite(arg + 7); - } - else -*** ../vim-7.3.103/src/version.c 2011-01-22 00:11:42.000000000 +0100 ---- src/version.c 2011-01-22 00:54:56.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 104, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -132. You come back and check this list every half-hour. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.105 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.105 -Problem: Can't get the value of "b:changedtick" with getbufvar(). -Solution: Make it work. (Christian Brabandt) -Files: src/eval.c - - -*** ../vim-7.3.104/src/eval.c 2011-01-17 20:08:03.000000000 +0100 ---- src/eval.c 2011-01-22 01:10:42.000000000 +0100 -*************** -*** 10866,10871 **** ---- 10866,10876 ---- - - if (*varname == '&') /* buffer-local-option */ - get_option_tv(&varname, rettv, TRUE); -+ else if (STRCMP(varname, "changedtick") == 0) -+ { -+ rettv->v_type = VAR_NUMBER; -+ rettv->vval.v_number = curbuf->b_changedtick; -+ } - else - { - if (*varname == NUL) -*** ../vim-7.3.104/src/version.c 2011-01-22 00:58:15.000000000 +0100 ---- src/version.c 2011-01-22 01:13:19.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 105, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -133. You communicate with people on other continents more than you - do with your own neighbors. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.106 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.106 -Problem: When 'cursorbind' is set another window may scroll unexpectedly - when 'scrollbind' is also set. (Xavier Wang) -Solution: Don't call update_topline() if 'scrollbind' is set. -Files: src/move.c - - -*** ../vim-7.3.105/src/move.c 2010-08-15 21:57:29.000000000 +0200 ---- src/move.c 2011-01-22 20:58:50.000000000 +0100 -*************** -*** 2882,2890 **** - if (has_mbyte) - mb_adjust_cursor(); - # endif -- - redraw_later(VALID); -! update_topline(); - # ifdef FEAT_WINDOWS - curwin->w_redr_status = TRUE; - # endif ---- 2882,2892 ---- - if (has_mbyte) - mb_adjust_cursor(); - # endif - redraw_later(VALID); -! -! /* Only scroll when 'scrollbind' hasn't done this. */ -! if (!curwin->w_p_scb) -! update_topline(); - # ifdef FEAT_WINDOWS - curwin->w_redr_status = TRUE; - # endif -*** ../vim-7.3.105/src/version.c 2011-01-22 01:13:33.000000000 +0100 ---- src/version.c 2011-01-22 21:03:21.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 106, - /**/ - --- -Never eat yellow snow. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.107 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.107 -Problem: Year number for :undolist can be confused with month or day. -Solution: Change "%y" to "%Y". -Files: src/undo.c - - -*** ../vim-7.3.106/src/undo.c 2011-01-22 00:11:42.000000000 +0100 ---- src/undo.c 2011-01-22 00:03:58.000000000 +0100 -*************** -*** 2884,2890 **** - (void)strftime((char *)buf, buflen, "%m/%d %H:%M:%S", curtime); - else - /* long ago */ -! (void)strftime((char *)buf, buflen, "%y/%m/%d %H:%M:%S", curtime); - } - else - #endif ---- 2884,2890 ---- - (void)strftime((char *)buf, buflen, "%m/%d %H:%M:%S", curtime); - else - /* long ago */ -! (void)strftime((char *)buf, buflen, "%Y/%m/%d %H:%M:%S", curtime); - } - else - #endif -*** ../vim-7.3.106/src/version.c 2011-01-22 21:05:02.000000000 +0100 ---- src/version.c 2011-01-22 21:24:07.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 107, - /**/ - --- -"The sun oozed over the horizon, shoved aside darkness, crept along the -greensward, and, with sickly fingers, pushed through the castle window, -revealing the pillaged princess, hand at throat, crown asunder, gaping -in frenzied horror at the sated, sodden amphibian lying beside her, -disbelieving the magnitude of the frog's deception, screaming madly, -"You lied!" - - Winner of the Bulwer-Lytton contest (San Jose State University), - wherein one writes only the first line of a bad novel - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.108 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.108 -Problem: Useless check for NULL when calling vim_free(). -Solution: Remove the check. (Dominique Pelle) -Files: src/eval.c, src/ex_cmds.c, src/os_win32.c - - -*** ../vim-7.3.107/src/eval.c 2011-01-22 01:13:33.000000000 +0100 ---- src/eval.c 2011-01-30 21:37:53.000000000 +0100 -*************** -*** 5106,5114 **** - else - ret = OK; - } -! -! if (alias != NULL) -! vim_free(alias); - } - - *arg = skipwhite(*arg); ---- 5106,5112 ---- - else - ret = OK; - } -! vim_free(alias); - } - - *arg = skipwhite(*arg); -*************** -*** 19807,19813 **** - EMSG2(_("E704: Funcref variable name must start with a capital: %s"), name); - return; - } -! /* Don't allow hiding a function. When "v" is not NULL we migth be - * assigning another function to the same var, the type is checked - * below. */ - if (v == NULL && function_exists(name)) ---- 19805,19811 ---- - EMSG2(_("E704: Funcref variable name must start with a capital: %s"), name); - return; - } -! /* Don't allow hiding a function. When "v" is not NULL we might be - * assigning another function to the same var, the type is checked - * below. */ - if (v == NULL && function_exists(name)) -*** ../vim-7.3.107/src/ex_cmds.c 2010-12-17 18:06:00.000000000 +0100 ---- src/ex_cmds.c 2011-01-30 21:37:53.000000000 +0100 -*************** -*** 5412,5418 **** - vir_T *virp; - int force; - { -! if (old_sub != NULL && force) - vim_free(old_sub); - if (force || old_sub == NULL) - old_sub = viminfo_readstring(virp, 1, TRUE); ---- 5412,5418 ---- - vir_T *virp; - int force; - { -! if (force) - vim_free(old_sub); - if (force || old_sub == NULL) - old_sub = viminfo_readstring(virp, 1, TRUE); -*** ../vim-7.3.107/src/os_win32.c 2010-12-17 20:23:56.000000000 +0100 ---- src/os_win32.c 2011-01-30 21:37:53.000000000 +0100 -*************** -*** 1886,1893 **** - cb->BufferSize.X = cb->Info.dwSize.X; - cb->BufferSize.Y = cb->Info.dwSize.Y; - NumCells = cb->BufferSize.X * cb->BufferSize.Y; -! if (cb->Buffer != NULL) -! vim_free(cb->Buffer); - cb->Buffer = (PCHAR_INFO)alloc(NumCells * sizeof(CHAR_INFO)); - if (cb->Buffer == NULL) - return FALSE; ---- 1886,1892 ---- - cb->BufferSize.X = cb->Info.dwSize.X; - cb->BufferSize.Y = cb->Info.dwSize.Y; - NumCells = cb->BufferSize.X * cb->BufferSize.Y; -! vim_free(cb->Buffer); - cb->Buffer = (PCHAR_INFO)alloc(NumCells * sizeof(CHAR_INFO)); - if (cb->Buffer == NULL) - return FALSE; -*** ../vim-7.3.107/src/version.c 2011-01-22 21:25:07.000000000 +0100 ---- src/version.c 2011-02-01 13:47:07.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 108, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -173. You keep tracking down the email addresses of all your friends - (even childhood friends). - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.109 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.109 -Problem: Processing new Esperanto spell file fails and crashes Vim. - (Dominique Pelle) -Solution: When running out of memory give an error. Handle '?' in - COMPOUNDRULE properly. -Files: src/spell.c - - -*** ../vim-7.3.108/src/spell.c 2010-12-17 18:06:00.000000000 +0100 ---- src/spell.c 2011-02-01 13:43:52.000000000 +0100 -*************** -*** 3634,3640 **** - } - - /* Add all flags to "sl_compallflags". */ -! if (vim_strchr((char_u *)"+*[]/", c) == NULL - && !byte_in_str(slang->sl_compallflags, c)) - { - *ap++ = c; ---- 3634,3640 ---- - } - - /* Add all flags to "sl_compallflags". */ -! if (vim_strchr((char_u *)"?*+[]/", c) == NULL - && !byte_in_str(slang->sl_compallflags, c)) - { - *ap++ = c; -*************** -*** 3664,3670 **** - /* Copy flag to "sl_comprules", unless we run into a wildcard. */ - if (crp != NULL) - { -! if (c == '+' || c == '*') - { - vim_free(slang->sl_comprules); - slang->sl_comprules = NULL; ---- 3664,3670 ---- - /* Copy flag to "sl_comprules", unless we run into a wildcard. */ - if (crp != NULL) - { -! if (c == '?' || c == '+' || c == '*') - { - vim_free(slang->sl_comprules); - slang->sl_comprules = NULL; -*************** -*** 3682,3689 **** - } - else /* normal char, "[abc]" and '*' are copied as-is */ - { -! if (c == '+' || c == '~') -! *pp++ = '\\'; /* "a+" becomes "a\+" */ - #ifdef FEAT_MBYTE - if (enc_utf8) - pp += mb_char2bytes(c, pp); ---- 3682,3689 ---- - } - else /* normal char, "[abc]" and '*' are copied as-is */ - { -! if (c == '?' || c == '+' || c == '~') -! *pp++ = '\\'; /* "a?" becomes "a\?", "a+" becomes "a\+" */ - #ifdef FEAT_MBYTE - if (enc_utf8) - pp += mb_char2bytes(c, pp); -*************** -*** 4951,4956 **** ---- 4951,4958 ---- - - sblock_T *si_blocks; /* memory blocks used */ - long si_blocks_cnt; /* memory blocks allocated */ -+ int si_did_emsg; /* TRUE when ran out of memory */ -+ - long si_compress_cnt; /* words to add before lowering - compression limit */ - wordnode_T *si_first_free; /* List of nodes that have been freed during -*************** -*** 5477,5497 **** - } - else if (is_aff_rule(items, itemcnt, "COMPOUNDRULE", 2)) - { -! /* Concatenate this string to previously defined ones, using a -! * slash to separate them. */ -! l = (int)STRLEN(items[1]) + 1; -! if (compflags != NULL) -! l += (int)STRLEN(compflags) + 1; -! p = getroom(spin, l, FALSE); -! if (p != NULL) - { - if (compflags != NULL) - { -! STRCPY(p, compflags); -! STRCAT(p, "/"); - } -- STRCAT(p, items[1]); -- compflags = p; - } - } - else if (is_aff_rule(items, itemcnt, "COMPOUNDWORDMAX", 2) ---- 5479,5503 ---- - } - else if (is_aff_rule(items, itemcnt, "COMPOUNDRULE", 2)) - { -! /* Don't use the first rule if it is a number. */ -! if (compflags != NULL || *skipdigits(items[1]) != NUL) - { -+ /* Concatenate this string to previously defined ones, -+ * using a slash to separate them. */ -+ l = (int)STRLEN(items[1]) + 1; - if (compflags != NULL) -+ l += (int)STRLEN(compflags) + 1; -+ p = getroom(spin, l, FALSE); -+ if (p != NULL) - { -! if (compflags != NULL) -! { -! STRCPY(p, compflags); -! STRCAT(p, "/"); -! } -! STRCAT(p, items[1]); -! compflags = p; - } - } - } - else if (is_aff_rule(items, itemcnt, "COMPOUNDWORDMAX", 2) -*************** -*** 6291,6297 **** - - for (p = compflags; *p != NUL; ) - { -! if (vim_strchr((char_u *)"/*+[]", *p) != NULL) - /* Copy non-flag characters directly. */ - *tp++ = *p++; - else ---- 6297,6303 ---- - - for (p = compflags; *p != NUL; ) - { -! if (vim_strchr((char_u *)"/?*+[]", *p) != NULL) - /* Copy non-flag characters directly. */ - *tp++ = *p++; - else -*************** -*** 6320,6326 **** - { - check_renumber(spin); - id = spin->si_newcompID--; -! } while (vim_strchr((char_u *)"/+*[]\\-^", id) != NULL); - ci->ci_newID = id; - hash_add(&aff->af_comp, ci->ci_key); - } ---- 6326,6332 ---- - { - check_renumber(spin); - id = spin->si_newcompID--; -! } while (vim_strchr((char_u *)"/?*+[]\\-^", id) != NULL); - ci->ci_newID = id; - hash_add(&aff->af_comp, ci->ci_key); - } -*************** -*** 7364,7373 **** - - if (bl == NULL || bl->sb_used + len > SBLOCKSIZE) - { -! /* Allocate a block of memory. This is not freed until much later. */ -! bl = (sblock_T *)alloc_clear((unsigned)(sizeof(sblock_T) + SBLOCKSIZE)); - if (bl == NULL) - return NULL; - bl->sb_next = spin->si_blocks; - spin->si_blocks = bl; - bl->sb_used = 0; ---- 7370,7390 ---- - - if (bl == NULL || bl->sb_used + len > SBLOCKSIZE) - { -! if (len >= SBLOCKSIZE) -! bl = NULL; -! else -! /* Allocate a block of memory. It is not freed until much later. */ -! bl = (sblock_T *)alloc_clear( -! (unsigned)(sizeof(sblock_T) + SBLOCKSIZE)); - if (bl == NULL) -+ { -+ if (!spin->si_did_emsg) -+ { -+ EMSG(_("E845: Insufficient memory, word list will be incomplete")); -+ spin->si_did_emsg = TRUE; -+ } - return NULL; -+ } - bl->sb_next = spin->si_blocks; - spin->si_blocks = bl; - bl->sb_used = 0; -*************** -*** 7382,7387 **** ---- 7399,7405 ---- - - /* - * Make a copy of a string into memory allocated with getroom(). -+ * Returns NULL when out of memory. - */ - static char_u * - getroom_save(spin, s) -*************** -*** 7416,7421 **** ---- 7434,7440 ---- - - /* - * Allocate the root of a word tree. -+ * Returns NULL when out of memory. - */ - static wordnode_T * - wordtree_alloc(spin) -*************** -*** 7700,7705 **** ---- 7719,7725 ---- - /* - * Get a wordnode_T, either from the list of previously freed nodes or - * allocate a new one. -+ * Returns NULL when out of memory. - */ - static wordnode_T * - get_wordnode(spin) -*************** -*** 7717,7723 **** - --spin->si_free_count; - } - #ifdef SPELL_PRINTTREE -! n->wn_nr = ++spin->si_wordnode_nr; - #endif - return n; - } ---- 7737,7744 ---- - --spin->si_free_count; - } - #ifdef SPELL_PRINTTREE -! if (n != NULL) -! n->wn_nr = ++spin->si_wordnode_nr; - #endif - return n; - } -*** ../vim-7.3.108/src/version.c 2011-02-01 13:48:47.000000000 +0100 ---- src/version.c 2011-02-01 13:56:38.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 109, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -174. You know what a listserv is. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.110 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.110 -Problem: The "nbsp" item in 'listchars' isn't used for ":list". -Solution: Make it work. (Christian Brabandt) -Files: src/message.c - - -*** ../vim-7.3.109/src/message.c 2011-01-17 20:08:03.000000000 +0100 ---- src/message.c 2011-02-01 17:06:21.000000000 +0100 -*************** -*** 1637,1644 **** - else if (has_mbyte && (l = (*mb_ptr2len)(s)) > 1) - { - col += (*mb_ptr2cells)(s); -! mch_memmove(buf, s, (size_t)l); -! buf[l] = NUL; - msg_puts(buf); - s += l; - continue; ---- 1637,1652 ---- - else if (has_mbyte && (l = (*mb_ptr2len)(s)) > 1) - { - col += (*mb_ptr2cells)(s); -! if (lcs_nbsp != NUL && list && mb_ptr2char(s) == 160) -! { -! mb_char2bytes(lcs_nbsp, buf); -! buf[(*mb_ptr2len)(buf)] = NUL; -! } -! else -! { -! mch_memmove(buf, s, (size_t)l); -! buf[l] = NUL; -! } - msg_puts(buf); - s += l; - continue; -*************** -*** 1664,1669 **** ---- 1672,1682 ---- - attr = hl_attr(HLF_8); - } - } -+ else if (c == 160 && list && lcs_nbsp != NUL) -+ { -+ c = lcs_nbsp; -+ attr = hl_attr(HLF_8); -+ } - else if (c == NUL && list && lcs_eol != NUL) - { - p_extra = (char_u *)""; -*** ../vim-7.3.109/src/version.c 2011-02-01 13:59:44.000000000 +0100 ---- src/version.c 2011-02-01 17:08:31.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 110, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -176. You lie, even to user-friends, about how long you were online yesterday. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.111 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.111 (after 7.3.100) -Problem: Executing a :normal command in 'statusline' evaluation causes the - cursor to move. (Dominique Pelle) -Solution: When updating the cursor for 'cursorbind' allow the cursor beyond - the end of the line. When evaluating 'statusline' temporarily - reset 'cursorbind'. -Files: src/move.c, src/screen.c - - -*** ../vim-7.3.110/src/move.c 2011-01-22 21:05:02.000000000 +0100 ---- src/move.c 2011-02-01 17:36:10.000000000 +0100 -*************** -*** 2846,2851 **** ---- 2846,2852 ---- - colnr_T col = curwin->w_cursor.col; - win_T *old_curwin = curwin; - buf_T *old_curbuf = curbuf; -+ int restart_edit_save; - # ifdef FEAT_VISUAL - int old_VIsual_select = VIsual_select; - int old_VIsual_active = VIsual_active; -*************** -*** 2875,2882 **** - curwin->w_cursor.lnum = line; - curwin->w_cursor.col = col; - -! /* Make sure the cursor is in a valid position. */ - check_cursor(); - # ifdef FEAT_MBYTE - /* Correct cursor for multi-byte character. */ - if (has_mbyte) ---- 2876,2887 ---- - curwin->w_cursor.lnum = line; - curwin->w_cursor.col = col; - -! /* Make sure the cursor is in a valid position. Temporarily set -! * "restart_edit" to allow the cursor to be beyond the EOL. */ -! restart_edit_save = restart_edit; -! restart_edit = TRUE; - check_cursor(); -+ restart_edit = restart_edit_save; - # ifdef FEAT_MBYTE - /* Correct cursor for multi-byte character. */ - if (has_mbyte) -*** ../vim-7.3.110/src/screen.c 2010-12-30 14:57:03.000000000 +0100 ---- src/screen.c 2011-02-01 17:45:45.000000000 +0100 -*************** -*** 6435,6440 **** ---- 6435,6442 ---- - struct stl_hlrec hltab[STL_MAX_ITEM]; - struct stl_hlrec tabtab[STL_MAX_ITEM]; - int use_sandbox = FALSE; -+ win_T *ewp; -+ int p_crb_save; - - /* setup environment for the task at hand */ - if (wp == NULL) -*************** -*** 6513,6526 **** - if (maxwidth <= 0) - return; - - /* Make a copy, because the statusline may include a function call that - * might change the option value and free the memory. */ - stl = vim_strsave(stl); -! width = build_stl_str_hl(wp == NULL ? curwin : wp, -! buf, sizeof(buf), - stl, use_sandbox, - fillchar, maxwidth, hltab, tabtab); - vim_free(stl); - - /* Make all characters printable. */ - p = transstr(buf); ---- 6515,6534 ---- - if (maxwidth <= 0) - return; - -+ /* Temporarily reset 'cursorbind', we don't want a side effect from moving -+ * the cursor away and back. */ -+ ewp = wp == NULL ? curwin : wp; -+ p_crb_save = ewp->w_p_crb; -+ ewp->w_p_crb = FALSE; -+ - /* Make a copy, because the statusline may include a function call that - * might change the option value and free the memory. */ - stl = vim_strsave(stl); -! width = build_stl_str_hl(ewp, buf, sizeof(buf), - stl, use_sandbox, - fillchar, maxwidth, hltab, tabtab); - vim_free(stl); -+ ewp->w_p_crb = p_crb_save; - - /* Make all characters printable. */ - p = transstr(buf); -*** ../vim-7.3.110/src/version.c 2011-02-01 17:12:20.000000000 +0100 ---- src/version.c 2011-02-01 18:00:14.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 111, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -177. You log off of your system because it's time to go to work. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.112 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.112 -Problem: Setting 'statusline' to "%!'asdf%' reads uninitialized memory. -Solution: Check for NUL after %. -Files: src/buffer.c - - -*** ../vim-7.3.111/src/buffer.c 2010-10-27 16:17:56.000000000 +0200 ---- src/buffer.c 2011-02-01 21:40:17.000000000 +0100 -*************** -*** 3364,3370 **** - * or truncated if too long, fillchar is used for all whitespace. - */ - int -! build_stl_str_hl(wp, out, outlen, fmt, use_sandbox, fillchar, maxwidth, hltab, tabtab) - win_T *wp; - char_u *out; /* buffer to write into != NameBuff */ - size_t outlen; /* length of out[] */ ---- 3364,3371 ---- - * or truncated if too long, fillchar is used for all whitespace. - */ - int -! build_stl_str_hl(wp, out, outlen, fmt, use_sandbox, fillchar, -! maxwidth, hltab, tabtab) - win_T *wp; - char_u *out; /* buffer to write into != NameBuff */ - size_t outlen; /* length of out[] */ -*************** -*** 3474,3479 **** ---- 3475,3482 ---- - * Handle one '%' item. - */ - s++; -+ if (*s == NUL) /* ignore trailing % */ -+ break; - if (*s == '%') - { - if (p + 1 >= out + outlen) -*** ../vim-7.3.111/src/version.c 2011-02-01 18:01:06.000000000 +0100 ---- src/version.c 2011-02-01 21:54:01.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 112, - /**/ - --- -Rule #1: Don't give somebody a tool that he's going to hurt himself with. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.113 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.113 -Problem: Windows: Fall back directory for creating temp file is wrong. -Solution: Use "." instead of empty string. (Hong Xu) -Files: src/fileio.c - - -*** ../vim-7.3.112/src/fileio.c 2011-01-17 20:08:03.000000000 +0100 ---- src/fileio.c 2011-02-06 13:14:25.000000000 +0100 -*************** -*** 7459,7465 **** - - STRCPY(itmp, ""); - if (GetTempPath(_MAX_PATH, szTempFile) == 0) -! szTempFile[0] = NUL; /* GetTempPath() failed, use current dir */ - strcpy(buf4, "VIM"); - buf4[2] = extra_char; /* make it "VIa", "VIb", etc. */ - if (GetTempFileName(szTempFile, buf4, 0, itmp) == 0) ---- 7459,7468 ---- - - STRCPY(itmp, ""); - if (GetTempPath(_MAX_PATH, szTempFile) == 0) -! { -! szTempFile[0] = '.'; /* GetTempPath() failed, use current dir */ -! szTempFile[1] = NUL; -! } - strcpy(buf4, "VIM"); - buf4[2] = extra_char; /* make it "VIa", "VIb", etc. */ - if (GetTempFileName(szTempFile, buf4, 0, itmp) == 0) -*** ../vim-7.3.112/src/version.c 2011-02-01 21:54:56.000000000 +0100 ---- src/version.c 2011-02-09 14:46:12.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 113, - /**/ - --- -'Psychologist' -- Someone who looks at everyone else when -an attractive woman enters the room. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.114 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.114 -Problem: Potential problem in initialization when giving an error message - early. -Solution: Initialize 'verbosefile' empty. (Ben Schmidt) -Files: src/option.h - - -*** ../vim-7.3.113/src/option.h 2010-12-02 16:01:23.000000000 +0100 ---- src/option.h 2011-02-09 15:37:36.000000000 +0100 -*************** -*** 854,860 **** ---- 854,864 ---- - # define VE_ONEMORE 8 - #endif - EXTERN long p_verbose; /* 'verbose' */ -+ #ifdef IN_OPTION_C -+ char_u *p_vfile = (char_u *)""; /* used before options are initialized */ -+ #else - EXTERN char_u *p_vfile; /* 'verbosefile' */ -+ #endif - EXTERN int p_warn; /* 'warn' */ - #ifdef FEAT_CMDL_COMPL - EXTERN char_u *p_wop; /* 'wildoptions' */ -*** ../vim-7.3.113/src/version.c 2011-02-09 14:46:58.000000000 +0100 ---- src/version.c 2011-02-09 15:46:17.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 114, - /**/ - --- -From the classified section of a city newspaper: -Dog for sale: eats anything and is fond of children. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.115 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.115 -Problem: Vim can crash when tmpnam() returns NULL. -Solution: Check for NULL. (Hong Xu) -Files: src/fileio.c - - -*** ../vim-7.3.114/src/fileio.c 2011-02-09 14:46:58.000000000 +0100 ---- src/fileio.c 2011-02-09 16:14:35.000000000 +0100 -*************** -*** 7483,7490 **** - # else /* WIN3264 */ - - # ifdef USE_TMPNAM - /* tmpnam() will make its own name */ -! if (*tmpnam((char *)itmp) == NUL) - return NULL; - # else - char_u *p; ---- 7483,7493 ---- - # else /* WIN3264 */ - - # ifdef USE_TMPNAM -+ char_u *p; -+ - /* tmpnam() will make its own name */ -! p = tmpnam((char *)itmp); -! if (p == NULL || *p == NUL) - return NULL; - # else - char_u *p; -*** ../vim-7.3.114/src/version.c 2011-02-09 15:59:32.000000000 +0100 ---- src/version.c 2011-02-09 16:44:11.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 115, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -218. Your spouse hands you a gift wrapped magnet with your PC's name - on it and you accuse him or her of genocide. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.116 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.116 -Problem: 'cursorline' is displayed too short when there are concealed - characters and 'list' is set. (Dennis Preiser) -Solution: Check for 'cursorline' when 'list' is set. (Christian Brabandt) -Files: src/screen.c - - -*** ../vim-7.3.115/src/screen.c 2011-02-01 18:01:06.000000000 +0100 ---- src/screen.c 2011-02-09 16:59:28.000000000 +0100 -*************** -*** 5099,5105 **** - #ifdef FEAT_DIFF - || filler_todo > 0 - #endif -! || (wp->w_p_list && lcs_eol != NUL && p_extra != at_end_str) - || (n_extra != 0 && (c_extra != NUL || *p_extra != NUL))) - ) - { ---- 5099,5109 ---- - #ifdef FEAT_DIFF - || filler_todo > 0 - #endif -! || (wp->w_p_list && lcs_eol != NUL && p_extra != at_end_str -! #ifdef FEAT_SYN_HL -! && !wp->w_p_cul -! #endif -! ) - || (n_extra != 0 && (c_extra != NUL || *p_extra != NUL))) - ) - { -*** ../vim-7.3.115/src/version.c 2011-02-09 16:44:45.000000000 +0100 ---- src/version.c 2011-02-09 17:08:58.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 116, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -219. Your spouse has his or her lawyer deliver the divorce papers... - via e-mail. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.117 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.117 -Problem: On some systems --as-needed does not work, because the "tinfo" - library is included indirectly from "ncurses". (Charles Campbell) -Solution: In configure prefer using "tinfo" instead of "ncurses". -Files: src/configure.in, src/auto/configure - - -*** ../vim-7.3.116/src/configure.in 2010-11-16 19:25:56.000000000 +0100 ---- src/configure.in 2011-02-09 17:28:16.000000000 +0100 -*************** -*** 2618,2630 **** - AC_MSG_RESULT([empty: automatic terminal library selection]) - dnl On HP-UX 10.10 termcap or termlib should be used instead of - dnl curses, because curses is much slower. -! dnl Newer versions of ncurses are preferred over anything. - dnl Older versions of ncurses have bugs, get a new one! - dnl Digital Unix (OSF1) should use curses (Ronald Schild). - dnl On SCO Openserver should prefer termlib (Roger Cornelius). - case "`uname -s 2>/dev/null`" in -! OSF1|SCO_SV) tlibs="ncurses curses termlib termcap";; -! *) tlibs="ncurses termlib termcap curses";; - esac - for libname in $tlibs; do - AC_CHECK_LIB(${libname}, tgetent,,) ---- 2618,2631 ---- - AC_MSG_RESULT([empty: automatic terminal library selection]) - dnl On HP-UX 10.10 termcap or termlib should be used instead of - dnl curses, because curses is much slower. -! dnl Newer versions of ncurses are preferred over anything, except -! dnl when tinfo has been split off, it conains all we need. - dnl Older versions of ncurses have bugs, get a new one! - dnl Digital Unix (OSF1) should use curses (Ronald Schild). - dnl On SCO Openserver should prefer termlib (Roger Cornelius). - case "`uname -s 2>/dev/null`" in -! OSF1|SCO_SV) tlibs="tinfo ncurses curses termlib termcap";; -! *) tlibs="tinfo ncurses termlib termcap curses";; - esac - for libname in $tlibs; do - AC_CHECK_LIB(${libname}, tgetent,,) -*** ../vim-7.3.116/src/auto/configure 2010-11-16 19:25:56.000000000 +0100 ---- src/auto/configure 2011-02-09 17:29:13.000000000 +0100 -*************** -*** 9886,9894 **** - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: empty: automatic terminal library selection" >&5 - $as_echo "empty: automatic terminal library selection" >&6; } -! case "`uname -s 2>/dev/null`" in -! OSF1|SCO_SV) tlibs="ncurses curses termlib termcap";; -! *) tlibs="ncurses termlib termcap curses";; - esac - for libname in $tlibs; do - as_ac_Lib=`$as_echo "ac_cv_lib_${libname}''_tgetent" | $as_tr_sh` ---- 9886,9894 ---- - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: empty: automatic terminal library selection" >&5 - $as_echo "empty: automatic terminal library selection" >&6; } -! case "`uname -s 2>/dev/null`" in -! OSF1|SCO_SV) tlibs="tinfo ncurses curses termlib termcap";; -! *) tlibs="tinfo ncurses termlib termcap curses";; - esac - for libname in $tlibs; do - as_ac_Lib=`$as_echo "ac_cv_lib_${libname}''_tgetent" | $as_tr_sh` -*** ../vim-7.3.116/src/version.c 2011-02-09 17:09:26.000000000 +0100 ---- src/version.c 2011-02-09 17:41:37.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 117, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -220. Your wife asks for sex and you tell her where to find you on IRC. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.118 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.118 -Problem: Ruby uses SIGVTALARM which makes Vim exit. (Alec Tica) -Solution: Ignore SIGVTALARM. (Dominique Pelle) -Files: src/os_unix.c - - -*** ../vim-7.3.117/src/os_unix.c 2010-12-17 16:27:10.000000000 +0100 ---- src/os_unix.c 2011-02-09 18:19:57.000000000 +0100 -*************** -*** 283,289 **** - #ifdef SIGTERM - {SIGTERM, "TERM", TRUE}, - #endif -! #ifdef SIGVTALRM - {SIGVTALRM, "VTALRM", TRUE}, - #endif - #if defined(SIGPROF) && !defined(FEAT_MZSCHEME) && !defined(WE_ARE_PROFILING) ---- 283,289 ---- - #ifdef SIGTERM - {SIGTERM, "TERM", TRUE}, - #endif -! #if defined(SIGVTALRM) && !defined(FEAT_RUBY) - {SIGVTALRM, "VTALRM", TRUE}, - #endif - #if defined(SIGPROF) && !defined(FEAT_MZSCHEME) && !defined(WE_ARE_PROFILING) -*************** -*** 1107,1113 **** - * On Linux, signal is not always handled immediately either. - * See https://bugs.launchpad.net/bugs/291373 - * -! * volatile because it is used in in signal handler sigcont_handler(). - */ - static volatile int sigcont_received; - static RETSIGTYPE sigcont_handler __ARGS(SIGPROTOARG); ---- 1107,1113 ---- - * On Linux, signal is not always handled immediately either. - * See https://bugs.launchpad.net/bugs/291373 - * -! * volatile because it is used in signal handler sigcont_handler(). - */ - static volatile int sigcont_received; - static RETSIGTYPE sigcont_handler __ARGS(SIGPROTOARG); -*** ../vim-7.3.117/src/version.c 2011-02-09 17:42:53.000000000 +0100 ---- src/version.c 2011-02-09 18:46:53.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 118, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -221. Your wife melts your keyboard in the oven. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.1 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.119 -Problem: Build problem on Mac. (Nicholas Stallard) -Solution: Use "extern" instead of "EXTERN" for p_vfile. -Files: src/option.h - - -*** ../vim-7.3.118/src/option.h 2011-02-09 15:59:32.000000000 +0100 ---- src/option.h 2011-02-12 13:56:50.000000000 +0100 -*************** -*** 857,863 **** - #ifdef IN_OPTION_C - char_u *p_vfile = (char_u *)""; /* used before options are initialized */ - #else -! EXTERN char_u *p_vfile; /* 'verbosefile' */ - #endif - EXTERN int p_warn; /* 'warn' */ - #ifdef FEAT_CMDL_COMPL ---- 857,863 ---- - #ifdef IN_OPTION_C - char_u *p_vfile = (char_u *)""; /* used before options are initialized */ - #else -! extern char_u *p_vfile; /* 'verbosefile' */ - #endif - EXTERN int p_warn; /* 'warn' */ - #ifdef FEAT_CMDL_COMPL -*** ../vim-7.3.118/src/version.c 2011-02-09 18:47:36.000000000 +0100 ---- src/version.c 2011-02-12 13:59:41.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 119, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -237. You tattoo your email address on your forehead. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.120 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.120 -Problem: The message for an existing swap file is too long to fit in a 25 - line terminal. -Solution: Make the message shorter. (Chad Miller) -Files: src/memline.c - - -*** ../vim-7.3.119/src/memline.c 2011-01-17 20:08:03.000000000 +0100 ---- src/memline.c 2011-02-13 14:18:08.000000000 +0100 -*************** -*** 4071,4079 **** - } - /* Some of these messages are long to allow translation to - * other languages. */ -! MSG_PUTS(_("\n(1) Another program may be editing the same file.\n If this is the case, be careful not to end up with two\n different instances of the same file when making changes.\n")); -! MSG_PUTS(_(" Quit, or continue with caution.\n")); -! MSG_PUTS(_("\n(2) An edit session for this file crashed.\n")); - MSG_PUTS(_(" If this is the case, use \":recover\" or \"vim -r ")); - msg_outtrans(buf->b_fname); - MSG_PUTS(_("\"\n to recover the changes (see \":help recovery\").\n")); ---- 4071,4079 ---- - } - /* Some of these messages are long to allow translation to - * other languages. */ -! MSG_PUTS(_("\n(1) Another program may be editing the same file. If this is the case,\n be careful not to end up with two different instances of the same\n file when making changes.")); -! MSG_PUTS(_(" Quit, or continue with caution.\n")); -! MSG_PUTS(_("(2) An edit session for this file crashed.\n")); - MSG_PUTS(_(" If this is the case, use \":recover\" or \"vim -r ")); - msg_outtrans(buf->b_fname); - MSG_PUTS(_("\"\n to recover the changes (see \":help recovery\").\n")); -*** ../vim-7.3.119/src/version.c 2011-02-12 13:59:55.000000000 +0100 ---- src/version.c 2011-02-15 11:56:14.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 120, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -257. Your "hundred-and-one" lists include well over 101 items, since you - automatically interpret all numbers in hexadecimal notation. - (hex 101 = decimal 257) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.121 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.121 -Problem: Complicated 'statusline' causes a crash. (Christian Brabandt) -Solution: Check that the number of items is not too big. -Files: src/buffer.c - - -*** ../vim-7.3.120/src/buffer.c 2011-02-01 21:54:56.000000000 +0100 ---- src/buffer.c 2011-02-15 14:00:51.000000000 +0100 -*************** -*** 3460,3465 **** ---- 3461,3478 ---- - prevchar_isitem = FALSE; - for (s = usefmt; *s; ) - { -+ if (curitem == STL_MAX_ITEM) -+ { -+ /* There are too many items. Add the error code to the statusline -+ * to give the user a hint about what went wrong. */ -+ if (p + 6 < out + outlen) -+ { -+ mch_memmove(p, " E541", (size_t)5); -+ p += 5; -+ } -+ break; -+ } -+ - if (*s != NUL && *s != '%') - prevchar_isflag = prevchar_isitem = FALSE; - -*** ../vim-7.3.120/src/version.c 2011-02-15 11:56:56.000000000 +0100 ---- src/version.c 2011-02-15 14:23:39.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 121, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -265. Your reason for not staying in touch with family is that - they do not have e-mail addresses. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.122 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.122 -Problem: Having auto/config.mk in the repository causes problems. -Solution: Remove auto/config.mk from the distribution. In the toplevel - Makefile copy it from the "dist" file. -Files: Makefile, src/Makefile, src/auto/config.mk - - -*** ../vim-7.3.121/Makefile 2010-08-15 21:57:20.000000000 +0200 ---- Makefile 2011-02-12 14:28:09.000000000 +0100 -*************** -*** 23,28 **** ---- 23,31 ---- - # has run can result in compiling with $(CC) empty. - - first: -+ @if test ! -f src/auto/config.mk; then \ -+ cp src/config.mk.dist src/auto/config.mk; \ -+ fi - @echo "Starting make in the src directory." - @echo "If there are problems, cd to the src directory and run make there" - cd src && $(MAKE) $@ -*************** -*** 30,35 **** ---- 33,41 ---- - # Some make programs use the last target for the $@ default; put the other - # targets separately to always let $@ expand to "first" by default. - all install uninstall tools config configure reconfig proto depend lint tags types test testclean clean distclean: -+ @if test ! -f src/auto/config.mk; then \ -+ cp src/config.mk.dist src/auto/config.mk; \ -+ fi - @echo "Starting make in the src directory." - @echo "If there are problems, cd to the src directory and run make there" - cd src && $(MAKE) $@ -*** ../vim-7.3.121/src/Makefile 2010-11-03 22:32:18.000000000 +0100 ---- src/Makefile 2011-02-15 15:21:37.000000000 +0100 -*************** -*** 283,294 **** - - ######################## auto/config.mk ######################## {{{1 - # At this position auto/config.mk is included. When starting from the -! # distribution it is almost empty. After running auto/configure it contains -! # settings that have been discovered for your system. Settings below this -! # include override settings in auto/config.mk! -! -! # Note: if auto/config.mk is lost somehow (e.g., because configure was -! # interrupted), create an empty auto/config.mk file and do "make config". - - # (X) How to include auto/config.mk depends on the version of "make" you have, - # if the current choice doesn't work, try the other one. ---- 283,295 ---- - - ######################## auto/config.mk ######################## {{{1 - # At this position auto/config.mk is included. When starting from the -! # toplevel Makefile it is almost empty. After running auto/configure it -! # contains settings that have been discovered for your system. Settings below -! # this include override settings in auto/config.mk! -! -! # Note: If make fails because auto/config.mk does not exist (it is not -! # included in the repository), do: -! # cp config.mk.dist auto/config.mk - - # (X) How to include auto/config.mk depends on the version of "make" you have, - # if the current choice doesn't work, try the other one. -*** ../vim-7.3.121/src/auto/config.mk 2010-08-16 21:59:00.000000000 +0200 ---- src/auto/config.mk 1970-01-01 01:00:00.000000000 +0100 -*************** -*** 1,5 **** -- the first targets to make vim are: scratch config myself -- srcdir = . -- VIMNAME = vim -- EXNAME = ex -- VIEWNAME = view ---- 0 ---- -*** ../vim-7.3.121/src/version.c 2011-02-15 14:24:42.000000000 +0100 ---- src/version.c 2011-02-15 15:25:07.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 122, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -267. You get an extra phone line so you can get phone calls. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.123 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.123 -Problem: ml_get error when executing register being recorded into, deleting - lines and 'conceallevel' is set. (ZyX) -Solution: Don't redraw a line for concealing when it doesn't exist. -Files: src/main.c - - -*** ../vim-7.3.122/src/main.c 2010-12-17 18:06:00.000000000 +0100 ---- src/main.c 2011-02-15 16:09:41.000000000 +0100 -*************** -*** 1198,1204 **** - || conceal_cursor_line(curwin) - || need_cursor_line_redraw)) - { -! if (conceal_old_cursor_line != conceal_new_cursor_line) - update_single_line(curwin, conceal_old_cursor_line); - update_single_line(curwin, conceal_new_cursor_line); - curwin->w_valid &= ~VALID_CROW; ---- 1198,1206 ---- - || conceal_cursor_line(curwin) - || need_cursor_line_redraw)) - { -! if (conceal_old_cursor_line != conceal_new_cursor_line -! && conceal_old_cursor_line -! <= curbuf->b_ml.ml_line_count) - update_single_line(curwin, conceal_old_cursor_line); - update_single_line(curwin, conceal_new_cursor_line); - curwin->w_valid &= ~VALID_CROW; -*** ../vim-7.3.122/src/version.c 2011-02-15 15:27:00.000000000 +0100 ---- src/version.c 2011-02-15 16:15:28.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 123, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -268. You get up in the morning and go online before getting your coffee. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.124 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.124 -Problem: When writing a file in binary mode it may be missing the final EOL - if a file previously read was missing the EOL. (Kevin Goodsell) -Solution: Move the write_no_eol_lnum into the buffer struct. -Files: src/structs.h, src/fileio.c, src/globals.h, src/os_unix.c - - -*** ../vim-7.3.123/src/structs.h 2010-10-20 21:22:17.000000000 +0200 ---- src/structs.h 2011-02-15 17:06:34.000000000 +0100 -*************** -*** 1564,1569 **** ---- 1564,1572 ---- - - /* end of buffer options */ - -+ linenr_T b_no_eol_lnum; /* non-zero lnum when last line of next binary -+ * write should not have an end-of-line */ -+ - int b_start_eol; /* last line had eol when it was read */ - int b_start_ffc; /* first char of 'ff' when edit started */ - #ifdef FEAT_MBYTE -*** ../vim-7.3.123/src/fileio.c 2011-02-09 16:44:45.000000000 +0100 ---- src/fileio.c 2011-02-15 17:30:54.000000000 +0100 -*************** -*** 317,323 **** - int using_b_fname; - #endif - -! write_no_eol_lnum = 0; /* in case it was set by the previous read */ - - /* - * If there is no file name yet, use the one for the read file. ---- 317,323 ---- - int using_b_fname; - #endif - -! curbuf->b_no_eol_lnum = 0; /* in case it was set by the previous read */ - - /* - * If there is no file name yet, use the one for the read file. -*************** -*** 2599,2608 **** - - /* - * Trick: We remember if the last line of the read didn't have -! * an eol for when writing it again. This is required for - * ":autocmd FileReadPost *.gz set bin|'[,']!gunzip" to work. - */ -! write_no_eol_lnum = read_no_eol_lnum; - - /* When reloading a buffer put the cursor at the first line that is - * different. */ ---- 2599,2609 ---- - - /* - * Trick: We remember if the last line of the read didn't have -! * an eol even when 'binary' is off, for when writing it again with -! * 'binary' on. This is required for - * ":autocmd FileReadPost *.gz set bin|'[,']!gunzip" to work. - */ -! curbuf->b_no_eol_lnum = read_no_eol_lnum; - - /* When reloading a buffer put the cursor at the first line that is - * different. */ -*************** -*** 2650,2662 **** - FALSE, NULL, eap); - if (msg_scrolled == n) - msg_scroll = m; -! #ifdef FEAT_EVAL - if (aborting()) /* autocmds may abort script processing */ - return FAIL; -! #endif - } - #endif - - if (recoverymode && error) - return FAIL; - return OK; ---- 2651,2667 ---- - FALSE, NULL, eap); - if (msg_scrolled == n) - msg_scroll = m; -! # ifdef FEAT_EVAL - if (aborting()) /* autocmds may abort script processing */ - return FAIL; -! # endif - } - #endif - -+ /* Reset now, following writes should not omit the EOL. Also, the line -+ * number will become invalid because of edits. */ -+ curbuf->b_no_eol_lnum = 0; -+ - if (recoverymode && error) - return FAIL; - return OK; -*************** -*** 4560,4566 **** - if (end == 0 - || (lnum == end - && write_bin -! && (lnum == write_no_eol_lnum - || (lnum == buf->b_ml.ml_line_count && !buf->b_p_eol)))) - { - ++lnum; /* written the line, count it */ ---- 4565,4571 ---- - if (end == 0 - || (lnum == end - && write_bin -! && (lnum == buf->b_no_eol_lnum - || (lnum == buf->b_ml.ml_line_count && !buf->b_p_eol)))) - { - ++lnum; /* written the line, count it */ -*************** -*** 5086,5093 **** - { - aco_save_T aco; - -- write_no_eol_lnum = 0; /* in case it was set by the previous read */ -- - /* - * Apply POST autocommands. - * Careful: The autocommands may call buf_write() recursively! ---- 5091,5096 ---- -*************** -*** 7256,7263 **** - write_lnum_adjust(offset) - linenr_T offset; - { -! if (write_no_eol_lnum != 0) /* only if there is a missing eol */ -! write_no_eol_lnum += offset; - } - - #if defined(TEMPDIRNAMES) || defined(PROTO) ---- 7259,7266 ---- - write_lnum_adjust(offset) - linenr_T offset; - { -! if (curbuf->b_no_eol_lnum != 0) /* only if there is a missing eol */ -! curbuf->b_no_eol_lnum += offset; - } - - #if defined(TEMPDIRNAMES) || defined(PROTO) -*** ../vim-7.3.123/src/globals.h 2010-12-02 21:43:10.000000000 +0100 ---- src/globals.h 2011-02-15 17:06:06.000000000 +0100 -*************** -*** 1057,1066 **** - ; - #endif - -- EXTERN linenr_T write_no_eol_lnum INIT(= 0); /* non-zero lnum when last line -- of next binary write should -- not have an end-of-line */ -- - #ifdef FEAT_WINDOWS - EXTERN int postponed_split INIT(= 0); /* for CTRL-W CTRL-] command */ - EXTERN int postponed_split_flags INIT(= 0); /* args for win_split() */ ---- 1057,1062 ---- -*** ../vim-7.3.123/src/os_unix.c 2011-02-09 18:47:36.000000000 +0100 ---- src/os_unix.c 2011-02-15 17:07:22.000000000 +0100 -*************** -*** 4245,4251 **** - * should not have one. */ - if (lnum != curbuf->b_op_end.lnum - || !curbuf->b_p_bin -! || (lnum != write_no_eol_lnum - && (lnum != - curbuf->b_ml.ml_line_count - || curbuf->b_p_eol))) ---- 4245,4251 ---- - * should not have one. */ - if (lnum != curbuf->b_op_end.lnum - || !curbuf->b_p_bin -! || (lnum != curbuf->b_no_eol_lnum - && (lnum != - curbuf->b_ml.ml_line_count - || curbuf->b_p_eol))) -*************** -*** 4588,4597 **** - { - append_ga_line(&ga); - /* remember that the NL was missing */ -! write_no_eol_lnum = curwin->w_cursor.lnum; - } - else -! write_no_eol_lnum = 0; - ga_clear(&ga); - } - ---- 4588,4597 ---- - { - append_ga_line(&ga); - /* remember that the NL was missing */ -! curbuf->b_no_eol_lnum = curwin->w_cursor.lnum; - } - else -! curbuf->b_no_eol_lnum = 0; - ga_clear(&ga); - } - -*** ../vim-7.3.123/src/version.c 2011-02-15 16:29:54.000000000 +0100 ---- src/version.c 2011-02-15 17:37:38.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 124, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -270. You are subscribed to a mailing list for every piece of software - you use. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.125 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.125 -Problem: MSVC: Problem with quotes in link argument. -Solution: Escape backslashes and quotes. (Weasley) -Files: src/Make_mvc.mak - - -*** ../vim-7.3.124/src/Make_mvc.mak 2010-12-08 14:54:58.000000000 +0100 ---- src/Make_mvc.mak 2011-02-15 17:55:24.000000000 +0100 -*************** -*** 1159,1164 **** ---- 1159,1168 ---- - E0_CFLAGS = $(CFLAGS:\=\\) - E_CFLAGS = $(E0_CFLAGS:"=\") - # ") stop the string -+ # $LINKARGS2 may contain backslashes and double quotes, escape them both. -+ E0_LINKARGS2 = $(LINKARGS2:\=\\) -+ E_LINKARGS2 = $(E0_LINKARGS2:"=\") -+ # ") stop the string - - $(PATHDEF_SRC): auto - @echo creating $(PATHDEF_SRC) -*************** -*** 1167,1173 **** - @echo char_u *default_vim_dir = (char_u *)"$(VIMRCLOC:\=\\)"; >> $(PATHDEF_SRC) - @echo char_u *default_vimruntime_dir = (char_u *)"$(VIMRUNTIMEDIR:\=\\)"; >> $(PATHDEF_SRC) - @echo char_u *all_cflags = (char_u *)"$(CC:\=\\) $(E_CFLAGS)"; >> $(PATHDEF_SRC) -! @echo char_u *all_lflags = (char_u *)"$(link:\=\\) $(LINKARGS1:\=\\) $(LINKARGS2:\=\\)"; >> $(PATHDEF_SRC) - @echo char_u *compiled_user = (char_u *)"$(USERNAME)"; >> $(PATHDEF_SRC) - @echo char_u *compiled_sys = (char_u *)"$(USERDOMAIN)"; >> $(PATHDEF_SRC) - ---- 1171,1177 ---- - @echo char_u *default_vim_dir = (char_u *)"$(VIMRCLOC:\=\\)"; >> $(PATHDEF_SRC) - @echo char_u *default_vimruntime_dir = (char_u *)"$(VIMRUNTIMEDIR:\=\\)"; >> $(PATHDEF_SRC) - @echo char_u *all_cflags = (char_u *)"$(CC:\=\\) $(E_CFLAGS)"; >> $(PATHDEF_SRC) -! @echo char_u *all_lflags = (char_u *)"$(link:\=\\) $(LINKARGS1:\=\\) $(E_LINKARGS2)"; >> $(PATHDEF_SRC) - @echo char_u *compiled_user = (char_u *)"$(USERNAME)"; >> $(PATHDEF_SRC) - @echo char_u *compiled_sys = (char_u *)"$(USERDOMAIN)"; >> $(PATHDEF_SRC) - -*** ../vim-7.3.124/src/version.c 2011-02-15 17:39:14.000000000 +0100 ---- src/version.c 2011-02-15 17:55:49.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 125, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -271. You collect hilarious signatures from all 250 mailing lists you - are subscribed to. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.126 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.126 -Problem: Compiler warning for signed pointer. -Solution: Use unsigned int argument for sscanf(). -Files: src/blowfish.c - - -*** ../vim-7.3.125/src/blowfish.c 2010-08-15 21:57:28.000000000 +0200 ---- src/blowfish.c 2010-12-17 19:58:18.000000000 +0100 -*************** -*** 413,418 **** ---- 413,419 ---- - int salt_len; - { - int i, j, keypos = 0; -+ unsigned u; - UINT32_T val, data_l, data_r; - char_u *key; - int keylen; -*************** -*** 432,439 **** - } - for (i = 0; i < keylen; i++) - { -! sscanf((char *)&key[i * 2], "%2x", &j); -! key[i] = j; - } - - mch_memmove(sbx, sbi, 4 * 4 * 256); ---- 433,440 ---- - } - for (i = 0; i < keylen; i++) - { -! sscanf((char *)&key[i * 2], "%2x", &u); -! key[i] = u; - } - - mch_memmove(sbx, sbi, 4 * 4 * 256); -*** ../vim-7.3.125/src/version.c 2011-02-15 18:06:11.000000000 +0100 ---- src/version.c 2011-02-25 14:40:22.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 126, - /**/ - --- -Why doesn't Tarzan have a beard? - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.127 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.127 -Problem: Compiler complains about comma. -Solution: Remove comma after last enum element. -Files: src/ex_cmds2.c - - -*** ../vim-7.3.126/src/ex_cmds2.c 2010-12-17 18:06:00.000000000 +0100 ---- src/ex_cmds2.c 2010-12-17 19:58:37.000000000 +0100 -*************** -*** 1115,1121 **** - static enum - { - PEXP_SUBCMD, /* expand :profile sub-commands */ -! PEXP_FUNC, /* expand :profile func {funcname} */ - } pexpand_what; - - static char *pexpand_cmds[] = { ---- 1115,1121 ---- - static enum - { - PEXP_SUBCMD, /* expand :profile sub-commands */ -! PEXP_FUNC /* expand :profile func {funcname} */ - } pexpand_what; - - static char *pexpand_cmds[] = { -*** ../vim-7.3.126/src/version.c 2011-02-25 14:40:51.000000000 +0100 ---- src/version.c 2011-02-25 14:45:19.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 127, - /**/ - --- - LAUNCELOT leaps into SHOT with a mighty cry and runs the GUARD through and - hacks him to the floor. Blood. Swashbuckling music (perhaps). - LAUNCELOT races through into the castle screaming. -SECOND SENTRY: Hey! - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.128 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.128 -Problem: Another compiler warning for signed pointer. -Solution: Use unsigned int argument for sscanf(). -Files: src/mark.c - - -*** ../vim-7.3.127/src/mark.c 2010-08-15 21:57:25.000000000 +0200 ---- src/mark.c 2010-12-17 20:00:05.000000000 +0100 -*************** -*** 1750,1756 **** - { - if (line[1] != NUL) - { -! sscanf((char *)line + 2, "%ld %u", &pos.lnum, &pos.col); - switch (line[1]) - { - case '"': curbuf->b_last_cursor = pos; break; ---- 1750,1759 ---- - { - if (line[1] != NUL) - { -! unsigned u; -! -! sscanf((char *)line + 2, "%ld %u", &pos.lnum, &u); -! pos.col = u; - switch (line[1]) - { - case '"': curbuf->b_last_cursor = pos; break; -*** ../vim-7.3.127/src/version.c 2011-02-25 14:46:06.000000000 +0100 ---- src/version.c 2011-02-25 15:10:34.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 128, - /**/ - --- -FATHER: Who are you? -PRINCE: I'm ... your son ... -FATHER: Not you. -LAUNCELOT: I'm ... er ... Sir Launcelot, sir. - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.129 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.129 -Problem: Using integer like a boolean. -Solution: Nicer check for integer being non-zero. -Files: src/tag.c - - -*** ../vim-7.3.128/src/tag.c 2010-12-17 18:06:00.000000000 +0100 ---- src/tag.c 2010-12-17 17:49:35.000000000 +0100 -*************** -*** 204,210 **** - else - { - #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX) -! if (g_do_tagpreview) - use_tagstack = FALSE; - else - #endif ---- 204,210 ---- - else - { - #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX) -! if (g_do_tagpreview != 0) - use_tagstack = FALSE; - else - #endif -*************** -*** 222,228 **** - )) - { - #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX) -! if (g_do_tagpreview) - { - if (ptag_entry.tagname != NULL - && STRCMP(ptag_entry.tagname, tag) == 0) ---- 222,228 ---- - )) - { - #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX) -! if (g_do_tagpreview != 0) - { - if (ptag_entry.tagname != NULL - && STRCMP(ptag_entry.tagname, tag) == 0) -*************** -*** 278,284 **** - { - if ( - #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX) -! g_do_tagpreview ? ptag_entry.tagname == NULL : - #endif - tagstacklen == 0) - { ---- 278,284 ---- - { - if ( - #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX) -! g_do_tagpreview != 0 ? ptag_entry.tagname == NULL : - #endif - tagstacklen == 0) - { -*************** -*** 361,367 **** - ) - { - #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX) -! if (g_do_tagpreview) - { - cur_match = ptag_entry.cur_match; - cur_fnum = ptag_entry.cur_fnum; ---- 361,367 ---- - ) - { - #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX) -! if (g_do_tagpreview != 0) - { - cur_match = ptag_entry.cur_match; - cur_fnum = ptag_entry.cur_fnum; -*************** -*** 399,405 **** - prevtagstackidx = tagstackidx; - - #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX) -! if (g_do_tagpreview) - { - cur_match = ptag_entry.cur_match; - cur_fnum = ptag_entry.cur_fnum; ---- 399,405 ---- - prevtagstackidx = tagstackidx; - - #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX) -! if (g_do_tagpreview != 0) - { - cur_match = ptag_entry.cur_match; - cur_fnum = ptag_entry.cur_fnum; -*************** -*** 437,443 **** - } - - #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX) -! if (g_do_tagpreview) - { - if (type != DT_SELECT && type != DT_JUMP) - { ---- 437,443 ---- - } - - #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX) -! if (g_do_tagpreview != 0) - { - if (type != DT_SELECT && type != DT_JUMP) - { -*************** -*** 492,498 **** - if (use_tagstack) - name = tagstack[tagstackidx].tagname; - #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX) -! else if (g_do_tagpreview) - name = ptag_entry.tagname; - #endif - else ---- 492,498 ---- - if (use_tagstack) - name = tagstack[tagstackidx].tagname; - #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX) -! else if (g_do_tagpreview != 0) - name = ptag_entry.tagname; - #endif - else -*************** -*** 620,626 **** - parse_match(matches[i], &tagp); - if (!new_tag && ( - #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX) -! (g_do_tagpreview - && i == ptag_entry.cur_match) || - #endif - (use_tagstack ---- 620,626 ---- - parse_match(matches[i], &tagp); - if (!new_tag && ( - #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX) -! (g_do_tagpreview != 0 - && i == ptag_entry.cur_match) || - #endif - (use_tagstack -*************** -*** 962,968 **** - ++tagstackidx; - } - #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX) -! else if (g_do_tagpreview) - { - ptag_entry.cur_match = cur_match; - ptag_entry.cur_fnum = cur_fnum; ---- 962,968 ---- - ++tagstackidx; - } - #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX) -! else if (g_do_tagpreview != 0) - { - ptag_entry.cur_match = cur_match; - ptag_entry.cur_fnum = cur_fnum; -*************** -*** 3110,3116 **** - #endif - - #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX) -! if (g_do_tagpreview) - { - postponed_split = 0; /* don't split again below */ - curwin_save = curwin; /* Save current window */ ---- 3110,3116 ---- - #endif - - #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX) -! if (g_do_tagpreview != 0) - { - postponed_split = 0; /* don't split again below */ - curwin_save = curwin; /* Save current window */ -*************** -*** 3148,3154 **** - /* A :ta from a help file will keep the b_help flag set. For ":ptag" - * we need to use the flag from the window where we came from. */ - #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX) -! if (g_do_tagpreview) - keep_help_flag = curwin_save->w_buffer->b_help; - else - #endif ---- 3148,3154 ---- - /* A :ta from a help file will keep the b_help flag set. For ":ptag" - * we need to use the flag from the window where we came from. */ - #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX) -! if (g_do_tagpreview != 0) - keep_help_flag = curwin_save->w_buffer->b_help; - else - #endif -*************** -*** 3322,3328 **** - } - - #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX) -! if (g_do_tagpreview && curwin != curwin_save && win_valid(curwin_save)) - { - /* Return cursor to where we were */ - validate_cursor(); ---- 3322,3329 ---- - } - - #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX) -! if (g_do_tagpreview != 0 -! && curwin != curwin_save && win_valid(curwin_save)) - { - /* Return cursor to where we were */ - validate_cursor(); -*** ../vim-7.3.128/src/version.c 2011-02-25 15:11:17.000000000 +0100 ---- src/version.c 2011-02-25 15:12:25.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 129, - /**/ - --- -PRINCE: He's come to rescue me, father. -LAUNCELOT: (embarrassed) Well, let's not jump to conclusions ... - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.130 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.130 -Problem: Variable misplaced in #ifdef. -Solution: Move clipboard_event_time outside of #ifdef. -Files: src/gui_gtk_x11.c - - -*** ../vim-7.3.129/src/gui_gtk_x11.c 2010-08-15 21:57:31.000000000 +0200 ---- src/gui_gtk_x11.c 2010-12-04 15:26:41.000000000 +0100 -*************** -*** 86,94 **** - - #ifdef HAVE_X11_SUNKEYSYM_H - # include <X11/Sunkeysym.h> -- static guint32 clipboard_event_time = CurrentTime; - #endif - - /* - * Easy-to-use macro for multihead support. - */ ---- 86,95 ---- - - #ifdef HAVE_X11_SUNKEYSYM_H - # include <X11/Sunkeysym.h> - #endif - -+ static guint32 clipboard_event_time = CurrentTime; -+ - /* - * Easy-to-use macro for multihead support. - */ -*************** -*** 5419,5425 **** - } - - #if defined(FEAT_NETBEANS_INTG) -! /* Process the queued netbeans messages. */ - netbeans_parse_messages(); - #endif - ---- 5420,5426 ---- - } - - #if defined(FEAT_NETBEANS_INTG) -! /* Process any queued netbeans messages. */ - netbeans_parse_messages(); - #endif - -*** ../vim-7.3.129/src/version.c 2011-02-25 15:13:43.000000000 +0100 ---- src/version.c 2011-02-25 15:15:02.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 130, - /**/ - --- -A vacation is a period of travel during which you find that you -took twice as many clothes and half as much money as you needed. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.131 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.131 -Problem: Including errno.h too often. -Solution: Don't include errno.h in Unix header file. -Files: src/os_unix.h - - -*** ../vim-7.3.130/src/os_unix.h 2010-08-15 21:57:28.000000000 +0200 ---- src/os_unix.h 2010-12-17 20:05:34.000000000 +0100 -*************** -*** 184,193 **** - - #define BASENAMELEN (MAXNAMLEN - 5) - -- #ifdef HAVE_ERRNO_H -- # include <errno.h> -- #endif -- - #ifdef HAVE_PWD_H - # include <pwd.h> - #endif ---- 184,189 ---- -*** ../vim-7.3.130/src/version.c 2011-02-25 15:15:43.000000000 +0100 ---- src/version.c 2011-02-25 15:16:49.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 131, - /**/ - --- -Overflow on /dev/null, please empty the bit bucket. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.132 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.132 -Problem: C++ style comments. -Solution: Change to C comments. -Files: src/if_python3.c - - -*** ../vim-7.3.131/src/if_python3.c 2010-11-16 19:25:56.000000000 +0100 ---- src/if_python3.c 2011-01-16 01:28:35.000000000 +0100 -*************** -*** 22,29 **** - * Adaptations to support both python3.x and python2.x - */ - -! // uncomment this if used with the debug version of python -! // #define Py_DEBUG - - #include "vim.h" - ---- 22,29 ---- - * Adaptations to support both python3.x and python2.x - */ - -! /* uncomment this if used with the debug version of python */ -! /* #define Py_DEBUG */ - - #include "vim.h" - -*************** -*** 74,80 **** - #define PyString_Size(obj) PyUnicode_GET_SIZE(obj) - #define PyString_FromString(repr) PyUnicode_FromString(repr) - -! #if defined(DYNAMIC_PYTHON3) - - # ifndef WIN3264 - # include <dlfcn.h> ---- 74,80 ---- - #define PyString_Size(obj) PyUnicode_GET_SIZE(obj) - #define PyString_FromString(repr) PyUnicode_FromString(repr) - -! #if defined(DYNAMIC_PYTHON3) || defined(PROTO) - - # ifndef WIN3264 - # include <dlfcn.h> -*** ../vim-7.3.131/src/version.c 2011-02-25 15:17:14.000000000 +0100 ---- src/version.c 2011-02-25 15:18:18.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 132, - /**/ - --- - ** Hello and Welcome to the Psychiatric Hotline ** -If you are obsessive-compulsive, please press 1 repeatedly. -If you are co-dependent, please ask someone to press 2. -If you have multiple personalities, please press 3, 4, 5 and 6. -If you are paranoid-delusional, we know who you are and what you want - - just stay on the line so we can trace the call. -If you are schizophrenic, listen carefully and a little voice will - tell you which number to press next. -If you are manic-depressive, it doesn't matter which number you press - - no one will answer. -If you suffer from panic attacks, push every button you can find. -If you are sane, please hold on - we have the rest of humanity on the - other line and they desparately want to ask you a few questions. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.133 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.133 -Problem: When using encryption it's not clear what method was used. -Solution: In the file message show "blowfish" when using blowfish. -Files: src/fileio.c - - -*** ../vim-7.3.132/src/fileio.c 2011-02-15 17:39:14.000000000 +0100 ---- src/fileio.c 2011-02-25 16:30:19.000000000 +0100 -*************** -*** 250,255 **** ---- 250,256 ---- - #ifdef FEAT_CRYPT - char_u *cryptkey = NULL; - int did_ask_for_key = FALSE; -+ int crypt_method_used; - #endif - #ifdef FEAT_PERSISTENT_UNDO - context_sha256_T sha_ctx; -*************** -*** 2289,2294 **** ---- 2290,2296 ---- - save_file_ff(curbuf); /* remember the current file format */ - - #ifdef FEAT_CRYPT -+ crypt_method_used = use_crypt_method; - if (cryptkey != NULL) - { - crypt_pop_state(); -*************** -*** 2483,2489 **** - #ifdef FEAT_CRYPT - if (cryptkey != NULL) - { -! STRCAT(IObuff, _("[crypted]")); - c = TRUE; - } - #endif ---- 2485,2494 ---- - #ifdef FEAT_CRYPT - if (cryptkey != NULL) - { -! if (crypt_method_used == 1) -! STRCAT(IObuff, _("[blowfish]")); -! else -! STRCAT(IObuff, _("[crypted]")); - c = TRUE; - } - #endif -*************** -*** 3199,3204 **** ---- 3204,3212 ---- - int write_undo_file = FALSE; - context_sha256_T sha_ctx; - #endif -+ #ifdef FEAT_CRYPT -+ int crypt_method_used; -+ #endif - - if (fname == NULL || *fname == NUL) /* safety check */ - return FAIL; -*************** -*** 4728,4733 **** ---- 4736,4742 ---- - mch_set_acl(wfname, acl); - #endif - #ifdef FEAT_CRYPT -+ crypt_method_used = use_crypt_method; - if (wb_flags & FIO_ENCRYPTED) - crypt_pop_state(); - #endif -*************** -*** 4882,4888 **** - #ifdef FEAT_CRYPT - if (wb_flags & FIO_ENCRYPTED) - { -! STRCAT(IObuff, _("[crypted]")); - c = TRUE; - } - #endif ---- 4891,4900 ---- - #ifdef FEAT_CRYPT - if (wb_flags & FIO_ENCRYPTED) - { -! if (crypt_method_used == 1) -! STRCAT(IObuff, _("[blowfish]")); -! else -! STRCAT(IObuff, _("[crypted]")); - c = TRUE; - } - #endif -*** ../vim-7.3.132/src/version.c 2011-02-25 15:18:46.000000000 +0100 ---- src/version.c 2011-02-25 16:42:58.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 133, - /**/ - --- - [clop clop] -GUARD #1: Halt! Who goes there? -ARTHUR: It is I, Arthur, son of Uther Pendragon, from the castle of - Camelot. King of the Britons, defeator of the Saxons, sovereign of - all England! -GUARD #1: Pull the other one! - The Quest for the Holy Grail (Monty Python) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.134 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.134 -Problem: Drag-n-drop doesn't work in KDE Dolphin. -Solution: Add GDK_ACTION_MOVE flag. (Florian Degner) -Files: src/gui_gtk_x11.c - - -*** ../vim-7.3.133/src/gui_gtk_x11.c 2011-02-25 15:15:43.000000000 +0100 ---- src/gui_gtk_x11.c 2011-02-25 17:07:36.000000000 +0100 -*************** -*** 3094,3100 **** - gtk_drag_dest_set(gui.drawarea, - GTK_DEST_DEFAULT_ALL, - targets, n_targets, -! GDK_ACTION_COPY); - } - - /* ---- 3094,3100 ---- - gtk_drag_dest_set(gui.drawarea, - GTK_DEST_DEFAULT_ALL, - targets, n_targets, -! GDK_ACTION_COPY | GDK_ACTION_MOVE); - } - - /* -*** ../vim-7.3.133/src/version.c 2011-02-25 16:52:13.000000000 +0100 ---- src/version.c 2011-02-25 17:08:35.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 134, - /**/ - --- -Proverb: A nightingale that forgets the lyrics is a hummingbird. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.135 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.135 -Problem: When there is no previous substitute pattern, the previous search - pattern is used. The other way around doesn't work. -Solution: When there is no previous search pattern, use the previous - substitute pattern if possible. (Christian Brabandt) -Files: src/search.c - - -*** ../vim-7.3.134/src/search.c 2010-09-21 16:56:29.000000000 +0200 ---- src/search.c 2011-02-25 18:36:56.000000000 +0100 -*************** -*** 1161,1172 **** - { - if (spats[RE_SEARCH].pat == NULL) /* no previous pattern */ - { -! EMSG(_(e_noprevre)); -! retval = 0; -! goto end_do_search; - } -- /* make search_regcomp() use spats[RE_SEARCH].pat */ -- searchstr = (char_u *)""; - } - - if (pat != NULL && *pat != NUL) /* look for (new) offset */ ---- 1161,1180 ---- - { - if (spats[RE_SEARCH].pat == NULL) /* no previous pattern */ - { -! pat = spats[RE_SUBST].pat; -! if (pat == NULL) -! { -! EMSG(_(e_noprevre)); -! retval = 0; -! goto end_do_search; -! } -! searchstr = pat; -! } -! else -! { -! /* make search_regcomp() use spats[RE_SEARCH].pat */ -! searchstr = (char_u *)""; - } - } - - if (pat != NULL && *pat != NUL) /* look for (new) offset */ -*************** -*** 4527,4533 **** - #if defined(FEAT_FIND_ID) || defined(PROTO) - /* - * Find identifiers or defines in included files. -! * if p_ic && (compl_cont_status & CONT_SOL) then ptr must be in lowercase. - */ - void - find_pattern_in_path(ptr, dir, len, whole, skip_comments, ---- 4535,4541 ---- - #if defined(FEAT_FIND_ID) || defined(PROTO) - /* - * Find identifiers or defines in included files. -! * If p_ic && (compl_cont_status & CONT_SOL) then ptr must be in lowercase. - */ - void - find_pattern_in_path(ptr, dir, len, whole, skip_comments, -*** ../vim-7.3.134/src/version.c 2011-02-25 17:10:22.000000000 +0100 ---- src/version.c 2011-02-25 18:35:30.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 135, - /**/ - --- -A real patriot is the fellow who gets a parking ticket and rejoices -that the system works. - - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.136 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.136 -Problem: Duplicate include of assert.h. -Solution: Remove it. -Files: src/if_cscope.c - - -*** ../vim-7.3.135/src/if_cscope.c 2010-12-30 11:41:05.000000000 +0100 ---- src/if_cscope.c 2011-03-03 15:01:15.000000000 +0100 -*************** -*** 13,19 **** - - #if defined(FEAT_CSCOPE) || defined(PROTO) - -- #include <assert.h> - #include <sys/types.h> - #include <sys/stat.h> - #if defined(UNIX) ---- 13,18 ---- -*** ../vim-7.3.135/src/version.c 2011-02-25 18:38:29.000000000 +0100 ---- src/version.c 2011-03-03 14:59:32.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 136, - /**/ - --- -ARTHUR: You fight with the strength of many men, Sir knight. - I am Arthur, King of the Britons. [pause] - I seek the finest and the bravest knights in the land to join me - in my Court of Camelot. [pause] - You have proved yourself worthy; will you join me? [pause] - You make me sad. So be it. Come, Patsy. -BLACK KNIGHT: None shall pass. - The Quest for the Holy Grail (Monty Python) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.137 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.137 (after 7.3.091) -Problem: When 'lazyredraw' is set the screen may not be updated. (Ivan - Krasilnikov) -Solution: Call update_screen() before waiting for input. -Files: src/misc1.c, src/getchar.c - - -*** ../vim-7.3.136/src/misc1.c 2011-01-22 00:11:42.000000000 +0100 ---- src/misc1.c 2011-03-03 14:02:02.000000000 +0100 -*************** -*** 3115,3121 **** ---- 3115,3129 ---- - continue; - - if (n == KEYLEN_REMOVED) /* key code removed */ -+ { -+ if (must_redraw) -+ { -+ /* Redrawing was postponed, do it now. */ -+ update_screen(0); -+ setcursor(); /* put cursor back where it belongs */ -+ } - continue; -+ } - if (n > 0) /* found a termcode: adjust length */ - len = n; - if (len == 0) /* nothing typed yet */ -*** ../vim-7.3.136/src/getchar.c 2010-12-30 12:30:26.000000000 +0100 ---- src/getchar.c 2011-03-03 14:01:26.000000000 +0100 -*************** -*** 2710,2717 **** - * are still available. But when those available characters - * are part of a mapping, and we are going to do a blocking - * wait here. Need to update the screen to display the -! * changed text so far. */ -! if ((State & INSERT) && advance && must_redraw != 0) - { - update_screen(0); - setcursor(); /* put cursor back where it belongs */ ---- 2710,2719 ---- - * are still available. But when those available characters - * are part of a mapping, and we are going to do a blocking - * wait here. Need to update the screen to display the -! * changed text so far. Also for when 'lazyredraw' is set and -! * redrawing was postponed because there was something in the -! * input buffer (e.g., termresponse). */ -! if (((State & INSERT) || p_lz) && advance && must_redraw != 0) - { - update_screen(0); - setcursor(); /* put cursor back where it belongs */ -*** ../vim-7.3.136/src/version.c 2011-03-03 15:01:25.000000000 +0100 ---- src/version.c 2011-03-03 15:02:45.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 137, - /**/ - --- -ARTHUR: What? -BLACK KNIGHT: None shall pass. -ARTHUR: I have no quarrel with you, good Sir knight, but I must cross - this bridge. -BLACK KNIGHT: Then you shall die. - The Quest for the Holy Grail (Monty Python) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.138 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.138 -Problem: ":com" changes the multi-byte text of :echo. (Dimitar Dimitrov) -Solution: Search for K_SPECIAL as a byte, not a character. (Ben Schmidt) -Files: src/ex_docmd.c - - -*** ../vim-7.3.137/src/ex_docmd.c 2011-01-17 19:50:01.000000000 +0100 ---- src/ex_docmd.c 2011-03-03 15:47:00.000000000 +0100 -*************** -*** 6054,6068 **** - end = vim_strchr(start + 1, '>'); - if (buf != NULL) - { -! ksp = vim_strchr(p, K_SPECIAL); -! if (ksp != NULL && (start == NULL || ksp < start || end == NULL) - && ((ksp[1] == KS_SPECIAL && ksp[2] == KE_FILLER) - # ifdef FEAT_GUI - || (ksp[1] == KS_EXTRA && ksp[2] == (int)KE_CSI) - # endif - )) - { -! /* K_SPECIAL han been put in the buffer as K_SPECIAL - * KS_SPECIAL KE_FILLER, like for mappings, but - * do_cmdline() doesn't handle that, so convert it back. - * Also change K_SPECIAL KS_EXTRA KE_CSI into CSI. */ ---- 6054,6070 ---- - end = vim_strchr(start + 1, '>'); - if (buf != NULL) - { -! for (ksp = p; *ksp != NUL && *ksp != K_SPECIAL; ++ksp) -! ; -! if (*ksp == K_SPECIAL -! && (start == NULL || ksp < start || end == NULL) - && ((ksp[1] == KS_SPECIAL && ksp[2] == KE_FILLER) - # ifdef FEAT_GUI - || (ksp[1] == KS_EXTRA && ksp[2] == (int)KE_CSI) - # endif - )) - { -! /* K_SPECIAL has been put in the buffer as K_SPECIAL - * KS_SPECIAL KE_FILLER, like for mappings, but - * do_cmdline() doesn't handle that, so convert it back. - * Also change K_SPECIAL KS_EXTRA KE_CSI into CSI. */ -*** ../vim-7.3.137/src/version.c 2011-03-03 15:04:01.000000000 +0100 ---- src/version.c 2011-03-03 15:53:41.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 138, - /**/ - --- - f y cn rd ths thn y cn hv grt jb n cmptr prgrmmng - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.139 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.139 (after 7.3.137) -Problem: When 'lazyredraw' is set ":ver" output can't be read. -Solution: Don't redraw the screen when at a prompt or command line. -Files: src/getchar.c, src/message.c, src/misc1.c - - -*** ../vim-7.3.138/src/getchar.c 2011-03-03 15:04:01.000000000 +0100 ---- src/getchar.c 2011-03-22 12:16:23.000000000 +0100 -*************** -*** 2713,2719 **** - * changed text so far. Also for when 'lazyredraw' is set and - * redrawing was postponed because there was something in the - * input buffer (e.g., termresponse). */ -! if (((State & INSERT) || p_lz) && advance && must_redraw != 0) - { - update_screen(0); - setcursor(); /* put cursor back where it belongs */ ---- 2713,2720 ---- - * changed text so far. Also for when 'lazyredraw' is set and - * redrawing was postponed because there was something in the - * input buffer (e.g., termresponse). */ -! if (((State & INSERT) != 0 || p_lz) && (State & CMDLINE) == 0 -! && advance && must_redraw != 0 && !need_wait_return) - { - update_screen(0); - setcursor(); /* put cursor back where it belongs */ -*** ../vim-7.3.138/src/message.c 2011-02-01 17:12:20.000000000 +0100 ---- src/message.c 2011-03-22 13:06:24.000000000 +0100 -*************** -*** 879,894 **** - if (msg_silent != 0) - return; - -! /* -! * With the global command (and some others) we only need one return at the -! * end. Adjust cmdline_row to avoid the next message overwriting the last one. -! * When inside vgetc(), we can't wait for a typed character at all. -! */ - if (vgetc_busy > 0) - return; - if (no_wait_return) - { -- need_wait_return = TRUE; - if (!exmode_active) - cmdline_row = msg_row; - return; ---- 879,895 ---- - if (msg_silent != 0) - return; - -! /* -! * When inside vgetc(), we can't wait for a typed character at all. -! * With the global command (and some others) we only need one return at -! * the end. Adjust cmdline_row to avoid the next message overwriting the -! * last one. -! */ - if (vgetc_busy > 0) - return; -+ need_wait_return = TRUE; - if (no_wait_return) - { - if (!exmode_active) - cmdline_row = msg_row; - return; -*** ../vim-7.3.138/src/misc1.c 2011-03-03 15:04:01.000000000 +0100 ---- src/misc1.c 2011-03-22 12:15:26.000000000 +0100 -*************** -*** 3116,3122 **** - - if (n == KEYLEN_REMOVED) /* key code removed */ - { -! if (must_redraw) - { - /* Redrawing was postponed, do it now. */ - update_screen(0); ---- 3116,3122 ---- - - if (n == KEYLEN_REMOVED) /* key code removed */ - { -! if (must_redraw != 0 && !need_wait_return && (State & CMDLINE) == 0) - { - /* Redrawing was postponed, do it now. */ - update_screen(0); -*** ../vim-7.3.138/src/version.c 2011-03-03 15:54:45.000000000 +0100 ---- src/version.c 2011-03-22 13:06:33.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 139, - /**/ - --- -"Software is like sex... it's better when it's free." - -- Linus Torvalds, initiator of the free Linux OS -Makes me wonder what FSF stands for...? - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.140 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.140 -Problem: Crash when drawing the "$" at end-of-line for list mode just after - the window border and 'cursorline' is set. -Solution: Don't check for 'cursorline'. (Quentin Carbonneaux) -Files: src/screen.c - - -*** ../vim-7.3.139/src/screen.c 2011-02-09 17:09:26.000000000 +0100 ---- src/screen.c 2011-03-22 13:29:04.000000000 +0100 -*************** -*** 5099,5109 **** - #ifdef FEAT_DIFF - || filler_todo > 0 - #endif -! || (wp->w_p_list && lcs_eol != NUL && p_extra != at_end_str -! #ifdef FEAT_SYN_HL -! && !wp->w_p_cul -! #endif -! ) - || (n_extra != 0 && (c_extra != NUL || *p_extra != NUL))) - ) - { ---- 5099,5105 ---- - #ifdef FEAT_DIFF - || filler_todo > 0 - #endif -! || (wp->w_p_list && lcs_eol != NUL && p_extra != at_end_str) - || (n_extra != 0 && (c_extra != NUL || *p_extra != NUL))) - ) - { -*** ../vim-7.3.139/src/version.c 2011-03-22 13:07:19.000000000 +0100 ---- src/version.c 2011-03-22 13:27:26.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 140, - /**/ - --- -Lawmakers made it obligatory for everybody to take at least one bath -each week -- on Saturday night. - [real standing law in Vermont, United States of America] - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.141 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.141 -Problem: When a key code is not set get a confusing error message. -Solution: Change the error message to say the key code is not set. -Files: src/option.c, runtime/doc/options.txt - - -*** ../vim-7.3.140/src/option.c 2011-01-22 00:11:42.000000000 +0100 ---- src/option.c 2011-03-22 14:25:52.000000000 +0100 -*************** -*** 4352,4358 **** - p = find_termcode(key_name); - if (p == NULL) - { -! errmsg = (char_u *)N_("E518: Unknown option"); - goto skip; - } - else ---- 4352,4358 ---- - p = find_termcode(key_name); - if (p == NULL) - { -! errmsg = (char_u *)N_("E846: Key code not set"); - goto skip; - } - else -*************** -*** 4700,4707 **** - || s[i] == ',' - || s[i] == NUL)) - break; -! /* Count backspaces. Only a comma with an -! * even number of backspaces before it is - * recognized as a separator */ - if (s > origval && s[-1] == '\\') - ++bs; ---- 4700,4707 ---- - || s[i] == ',' - || s[i] == NUL)) - break; -! /* Count backslashes. Only a comma with an -! * even number of backslashes before it is - * recognized as a separator */ - if (s > origval && s[-1] == '\\') - ++bs; -*** ../vim-7.3.140/runtime/doc/options.txt 2010-12-02 21:43:10.000000000 +0100 ---- runtime/doc/options.txt 2011-03-22 14:32:14.000000000 +0100 -*************** -*** 150,155 **** ---- 150,167 ---- - (the ^[ is a real <Esc> here, use CTRL-V <Esc> to enter it) - The advantage over a mapping is that it works in all situations. - -+ You can define any key codes, e.g.: > -+ :set t_xy=^[foo; -+ There is no warning for using a name that isn't recognized. You can map these -+ codes as you like: > -+ :map <t_xy> something -+ < *E846* -+ When a key code is not set, it's like it does not exist. Trying to get its -+ value will result in an error: > -+ :set t_kb= -+ :set t_kb -+ E846: Key code not set: t_kb -+ - The t_xx options cannot be set from a |modeline| or in the |sandbox|, for - security reasons. - -*** ../vim-7.3.140/src/version.c 2011-03-22 13:29:20.000000000 +0100 ---- src/version.c 2011-03-22 14:32:59.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 141, - /**/ - --- -"I know that there are people who don't love their fellow man, -and I hate those people!" - Tom Lehrer - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.142 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.142 -Problem: Python stdout doesn't have a flush() method, causing an import to - fail. -Solution: Add a dummy flush() method. (Tobias Columbus) -Files: src/if_py_both.h - - -*** ../vim-7.3.141/src/if_py_both.h 2010-10-27 12:17:54.000000000 +0200 ---- src/if_py_both.h 2011-03-22 15:37:43.000000000 +0100 -*************** -*** 33,38 **** ---- 33,39 ---- - - static PyObject *OutputWrite(PyObject *, PyObject *); - static PyObject *OutputWritelines(PyObject *, PyObject *); -+ static PyObject *OutputFlush(PyObject *, PyObject *); - - /* Function to write a line, points to either msg() or emsg(). */ - typedef void (*writefn)(char_u *); -*************** -*** 47,55 **** - - static struct PyMethodDef OutputMethods[] = { - /* name, function, calling, documentation */ -! {"write", OutputWrite, 1, "" }, -! {"writelines", OutputWritelines, 1, "" }, -! { NULL, NULL, 0, NULL } - }; - - #define PyErr_SetVim(str) PyErr_SetString(VimError, str) ---- 48,57 ---- - - static struct PyMethodDef OutputMethods[] = { - /* name, function, calling, documentation */ -! {"write", OutputWrite, 1, ""}, -! {"writelines", OutputWritelines, 1, ""}, -! {"flush", OutputFlush, 1, ""}, -! { NULL, NULL, 0, NULL} - }; - - #define PyErr_SetVim(str) PyErr_SetString(VimError, str) -*************** -*** 123,128 **** ---- 125,139 ---- - return Py_None; - } - -+ static PyObject * -+ OutputFlush(PyObject *self UNUSED, PyObject *args UNUSED) -+ { -+ /* do nothing */ -+ Py_INCREF(Py_None); -+ return Py_None; -+ } -+ -+ - /* Buffer IO, we write one whole line at a time. */ - static garray_T io_ga = {0, 0, 1, 80, NULL}; - static writefn old_fn = NULL; -*** ../vim-7.3.141/src/version.c 2011-03-22 14:35:01.000000000 +0100 ---- src/version.c 2011-03-22 15:45:38.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 142, - /**/ - --- -Living on Earth includes an annual free trip around the Sun. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.143 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.143 -Problem: Memfile is not tested sufficiently. Looking up blocks in a - memfile is slow when there are many blocks. -Solution: Add high level test and unittest. Adjust the number of hash - buckets to the number of blocks. (Ivan Krasilnikov) -Files: Filelist, src/Makefile, src/main.c, src/memfile.c, - src/memfile_test.c src/structs.h src/testdir/Make_amiga.mak, - src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, - src/testdir/Make_os2.mak, src/testdir/Make_vms.mak, - src/testdir/Makefile, src/testdir/test77.in, src/testdir/test77.ok - - -*** ../vim-7.3.142/Filelist 2010-08-15 21:57:20.000000000 +0200 ---- Filelist 2011-03-22 17:39:22.000000000 +0100 -*************** -*** 39,44 **** ---- 39,45 ---- - src/mark.c \ - src/mbyte.c \ - src/memfile.c \ -+ src/memfile_test.c \ - src/memline.c \ - src/menu.c \ - src/message.c \ -*************** -*** 686,691 **** ---- 687,694 ---- - runtime/tutor/tutor.utf-8 \ - runtime/tutor/tutor.?? \ - runtime/tutor/tutor.??.* \ -+ runtime/tutor/tutor.bar \ -+ runtime/tutor/tutor.bar.* \ - runtime/spell/README.txt \ - runtime/spell/??/*.diff \ - runtime/spell/??/main.aap \ -*** ../vim-7.3.142/src/Makefile 2011-02-15 15:27:00.000000000 +0100 ---- src/Makefile 2011-03-22 18:07:25.000000000 +0100 -*************** -*** 561,567 **** - #CFLAGS = -g -O2 '-DSTARTUPTIME="vimstartup"' -fno-strength-reduce -Wall -Wmissing-prototypes - - # Use this with GCC to check for mistakes, unused arguments, etc. -! #CFLAGS = -g -Wall -Wextra -Wmissing-prototypes -Wunreachable-code -D_FORTIFY_SOURCE=1 -DU_DEBUG - #CFLAGS = -g -O2 -Wall -Wextra -Wmissing-prototypes -D_FORTIFY_SOURCE=1 -DU_DEBUG - #PYTHON_CFLAGS_EXTRA = -Wno-missing-field-initializers - #MZSCHEME_CFLAGS_EXTRA = -Wno-unreachable-code -Wno-unused-parameter ---- 561,567 ---- - #CFLAGS = -g -O2 '-DSTARTUPTIME="vimstartup"' -fno-strength-reduce -Wall -Wmissing-prototypes - - # Use this with GCC to check for mistakes, unused arguments, etc. -! #CFLAGS = -g -Wall -Wextra -Wmissing-prototypes -Wunreachable-code -D_FORTIFY_SOURCE=1 - #CFLAGS = -g -O2 -Wall -Wextra -Wmissing-prototypes -D_FORTIFY_SOURCE=1 -DU_DEBUG - #PYTHON_CFLAGS_EXTRA = -Wno-missing-field-initializers - #MZSCHEME_CFLAGS_EXTRA = -Wno-unreachable-code -Wno-unused-parameter -*************** -*** 594,601 **** - - # PROFILING - Uncomment the next two lines to do profiling with gcc and gprof. - # Might not work with GUI or Perl. -! # For unknown reasons adding "-lc" fixes a linking problem with GCC. That's -! # probably a bug in the "-pg" implementation. - # Need to recompile everything after changing this: "make clean" "make". - #PROFILE_CFLAGS = -pg -g -DWE_ARE_PROFILING - #PROFILE_LIBS = -pg ---- 594,602 ---- - - # PROFILING - Uncomment the next two lines to do profiling with gcc and gprof. - # Might not work with GUI or Perl. -! # For unknown reasons adding "-lc" fixes a linking problem with some versions -! # of GCC. That's probably a bug in the "-pg" implementation. -! # After running Vim see the profile result with: gmon vim gmon.out | vim - - # Need to recompile everything after changing this: "make clean" "make". - #PROFILE_CFLAGS = -pg -g -DWE_ARE_PROFILING - #PROFILE_LIBS = -pg -*************** -*** 606,613 **** - # Configuration is in the .ccmalloc or ~/.ccmalloc file. - # Doesn't work very well, since memory linked to from global variables - # (in libraries) is also marked as leaked memory. -! #PROFILE_CFLAGS = -DEXITFREE -! #PROFILE_LIBS = -lccmalloc - - ##################################################### - ### Specific systems, check if yours is listed! ### {{{ ---- 607,614 ---- - # Configuration is in the .ccmalloc or ~/.ccmalloc file. - # Doesn't work very well, since memory linked to from global variables - # (in libraries) is also marked as leaked memory. -! #LEAK_CFLAGS = -DEXITFREE -! #LEAK_LIBS = -lccmalloc - - ##################################################### - ### Specific systems, check if yours is listed! ### {{{ -*************** -*** 1329,1335 **** - PRE_DEFS = -Iproto $(DEFS) $(GUI_DEFS) $(GUI_IPATH) $(CPPFLAGS) $(EXTRA_IPATHS) - POST_DEFS = $(X_CFLAGS) $(MZSCHEME_CFLAGS) $(TCL_CFLAGS) $(EXTRA_DEFS) - -! ALL_CFLAGS = $(PRE_DEFS) $(CFLAGS) $(PROFILE_CFLAGS) $(POST_DEFS) - - # Exclude $CFLAGS for osdef.sh, for Mac 10.4 some flags don't work together - # with "-E". ---- 1330,1336 ---- - PRE_DEFS = -Iproto $(DEFS) $(GUI_DEFS) $(GUI_IPATH) $(CPPFLAGS) $(EXTRA_IPATHS) - POST_DEFS = $(X_CFLAGS) $(MZSCHEME_CFLAGS) $(TCL_CFLAGS) $(EXTRA_DEFS) - -! ALL_CFLAGS = $(PRE_DEFS) $(CFLAGS) $(PROFILE_CFLAGS) $(LEAK_CFLAGS) $(POST_DEFS) - - # Exclude $CFLAGS for osdef.sh, for Mac 10.4 some flags don't work together - # with "-E". -*************** -*** 1358,1364 **** - $(PYTHON3_LIBS) \ - $(TCL_LIBS) \ - $(RUBY_LIBS) \ -! $(PROFILE_LIBS) - - # abbreviations - DEST_BIN = $(DESTDIR)$(BINDIR) ---- 1359,1366 ---- - $(PYTHON3_LIBS) \ - $(TCL_LIBS) \ - $(RUBY_LIBS) \ -! $(PROFILE_LIBS) \ -! $(LEAK_LIBS) - - # abbreviations - DEST_BIN = $(DESTDIR)$(BINDIR) -*************** -*** 1480,1487 **** - if_python.c if_python3.c if_tcl.c if_ruby.c if_sniff.c \ - gui_beval.c workshop.c wsdebug.c integration.c netbeans.c - - # All sources, also the ones that are not configured -! ALL_SRC = $(BASIC_SRC) $(ALL_GUI_SRC) $(EXTRA_SRC) - - # Which files to check with lint. Select one of these three lines. ALL_SRC - # checks more, but may not work well for checking a GUI that wasn't configured. ---- 1482,1496 ---- - if_python.c if_python3.c if_tcl.c if_ruby.c if_sniff.c \ - gui_beval.c workshop.c wsdebug.c integration.c netbeans.c - -+ # Unittest files -+ MEMFILE_TEST_SRC = memfile_test.c -+ MEMFILE_TEST_TARGET = memfile_test$(EXEEXT) -+ -+ UNITTEST_SRC = $(MEMFILE_TEST_SRC) -+ UNITTEST_TARGETS = $(MEMFILE_TEST_TARGET) -+ - # All sources, also the ones that are not configured -! ALL_SRC = $(BASIC_SRC) $(ALL_GUI_SRC) $(UNITTEST_SRC) $(EXTRA_SRC) - - # Which files to check with lint. Select one of these three lines. ALL_SRC - # checks more, but may not work well for checking a GUI that wasn't configured. -*************** -*** 1492,1498 **** - #LINT_SRC = $(ALL_SRC) - #LINT_SRC = $(BASIC_SRC) - -! OBJ = \ - objects/buffer.o \ - objects/blowfish.o \ - objects/charset.o \ ---- 1501,1507 ---- - #LINT_SRC = $(ALL_SRC) - #LINT_SRC = $(BASIC_SRC) - -! OBJ_COMMON = \ - objects/buffer.o \ - objects/blowfish.o \ - objects/charset.o \ -*************** -*** 1513,1522 **** - $(HANGULIN_OBJ) \ - objects/if_cscope.o \ - objects/if_xcmdsrv.o \ -- objects/main.o \ - objects/mark.o \ -! objects/memfile.o \ -! objects/memline.o \ - objects/menu.o \ - objects/message.o \ - objects/misc1.o \ ---- 1522,1529 ---- - $(HANGULIN_OBJ) \ - objects/if_cscope.o \ - objects/if_xcmdsrv.o \ - objects/mark.o \ -! objects/memline.o \ - objects/menu.o \ - objects/message.o \ - objects/misc1.o \ -*************** -*** 1541,1546 **** ---- 1548,1554 ---- - objects/term.o \ - objects/ui.o \ - objects/undo.o \ -+ objects/version.o \ - objects/window.o \ - $(GUI_OBJ) \ - $(LUA_OBJ) \ -*************** -*** 1555,1560 **** ---- 1563,1575 ---- - $(NETBEANS_OBJ) \ - $(WSDEBUG_OBJ) - -+ OBJ = $(OBJ_COMMON) \ -+ objects/main.o \ -+ objects/memfile.o \ -+ -+ MEMFILE_TEST_OBJ = $(OBJ_COMMON) \ -+ objects/memfile_test.o -+ - PRO_AUTO = \ - blowfish.pro \ - buffer.pro \ -*************** -*** 1700,1706 **** - $(VIMTARGET): auto/config.mk objects $(OBJ) version.c version.h - $(CCC) version.c -o objects/version.o - @LINK="$(PURIFY) $(SHRPENV) $(CClink) $(ALL_LIB_DIRS) $(LDFLAGS) \ -! -o $(VIMTARGET) $(OBJ) objects/version.o $(ALL_LIBS)" \ - MAKE="$(MAKE)" LINK_AS_NEEDED=$(LINK_AS_NEEDED) \ - sh $(srcdir)/link.sh - ---- 1715,1721 ---- - $(VIMTARGET): auto/config.mk objects $(OBJ) version.c version.h - $(CCC) version.c -o objects/version.o - @LINK="$(PURIFY) $(SHRPENV) $(CClink) $(ALL_LIB_DIRS) $(LDFLAGS) \ -! -o $(VIMTARGET) $(OBJ) $(ALL_LIBS)" \ - MAKE="$(MAKE)" LINK_AS_NEEDED=$(LINK_AS_NEEDED) \ - sh $(srcdir)/link.sh - -*************** -*** 1825,1830 **** ---- 1840,1854 ---- - ln -s $(VIMTARGET) vim; \ - fi - cd testdir; $(MAKE) -f Makefile $(GUI_TESTTARGET) VIMPROG=../$(VIMTARGET) $(GUI_TESTARG) -+ $(MAKE) -f Makefile unittest -+ -+ unittesttargets: -+ $(MAKE) -f Makefile $(UNITTEST_TARGETS) -+ -+ unittest unittests: $(UNITTEST_TARGETS) -+ @for t in $(UNITTEST_TARGETS); do \ -+ ./$$t || exit 1; echo $$t passed; \ -+ done - - testclean: - cd testdir; $(MAKE) -f Makefile clean -*************** -*** 1832,1837 **** ---- 1856,1872 ---- - cd $(PODIR); $(MAKE) checkclean; \ - fi - -+ # Unittests -+ # It's build just like Vim to satisfy all dependencies. -+ $(MEMFILE_TEST_TARGET): auto/config.mk objects $(MEMFILE_TEST_OBJ) -+ $(CCC) version.c -o objects/version.o -+ @LINK="$(PURIFY) $(SHRPENV) $(CClink) $(ALL_LIB_DIRS) $(LDFLAGS) \ -+ -o $(MEMFILE_TEST_TARGET) $(MEMFILE_TEST_OBJ) $(ALL_LIBS)" \ -+ MAKE="$(MAKE)" LINK_AS_NEEDED=$(LINK_AS_NEEDED) \ -+ sh $(srcdir)/link.sh -+ -+ # install targets -+ - install: $(GUI_INSTALL) - - install_normal: installvim installtools $(INSTALL_LANGS) install-icons -*************** -*** 2265,2270 **** ---- 2300,2306 ---- - -rm -f *.o objects/* core $(VIMTARGET).core $(VIMTARGET) vim xxd/*.o - -rm -f $(TOOLS) auto/osdef.h auto/pathdef.c auto/if_perl.c - -rm -f conftest* *~ auto/link.sed -+ -rm -f $(UNITTEST_TARGETS) - -rm -f runtime pixmaps - -rm -rf $(APPDIR) - -rm -rf mzscheme_base.c -*************** -*** 2559,2564 **** ---- 2595,2603 ---- - objects/memfile.o: memfile.c - $(CCC) -o $@ memfile.c - -+ objects/memfile_test.o: memfile_test.c -+ $(CCC) -o $@ memfile_test.c -+ - objects/memline.o: memline.c - $(CCC) -o $@ memline.c - -*************** -*** 2877,2883 **** - objects/os_unix.o: os_unix.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \ - ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \ - gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \ -! arabic.h if_mzsch.h os_unixx.h - objects/pathdef.o: auto/pathdef.c vim.h auto/config.h feature.h os_unix.h \ - auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \ - regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h \ ---- 2916,2922 ---- - objects/os_unix.o: os_unix.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \ - ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \ - gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \ -! arabic.h os_unixx.h - objects/pathdef.o: auto/pathdef.c vim.h auto/config.h feature.h os_unix.h \ - auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \ - regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h \ -*************** -*** 3016,3021 **** ---- 3055,3064 ---- - objects/pty.o: pty.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h ascii.h \ - keymap.h term.h macros.h option.h structs.h regexp.h gui.h gui_beval.h \ - proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h arabic.h -+ objects/memfile_test.o: memfile_test.c main.c vim.h auto/config.h feature.h \ -+ os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h option.h \ -+ structs.h regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h \ -+ proto.h globals.h farsi.h arabic.h farsi.c arabic.c memfile.c - objects/hangulin.o: hangulin.c vim.h auto/config.h feature.h os_unix.h \ - auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \ - regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h \ -*************** -*** 3027,3033 **** - objects/if_mzsch.o: if_mzsch.c vim.h auto/config.h feature.h os_unix.h \ - auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \ - regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h \ -! globals.h farsi.h arabic.h if_mzsch.h mzscheme_base.c - objects/if_perl.o: auto/if_perl.c vim.h auto/config.h feature.h os_unix.h \ - auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \ - regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h \ ---- 3070,3076 ---- - objects/if_mzsch.o: if_mzsch.c vim.h auto/config.h feature.h os_unix.h \ - auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \ - regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h \ -! globals.h farsi.h arabic.h if_mzsch.h - objects/if_perl.o: auto/if_perl.c vim.h auto/config.h feature.h os_unix.h \ - auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \ - regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h \ -*************** -*** 3048,3054 **** - ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \ - gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \ - arabic.h -! objects/if_ruby.o: if_ruby.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \ - ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \ - gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \ - arabic.h version.h ---- 3091,3097 ---- - ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \ - gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \ - arabic.h -! objects/if_ruby.o: if_ruby.c auto/config.h vim.h feature.h os_unix.h auto/osdef.h \ - ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \ - gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \ - arabic.h version.h -*** ../vim-7.3.142/src/main.c 2011-02-15 16:29:54.000000000 +0100 ---- src/main.c 2011-03-18 13:19:48.000000000 +0100 -*************** -*** 92,128 **** - #define EDIT_TAG 3 /* tag name argument given, use tagname */ - #define EDIT_QF 4 /* start in quickfix mode */ - -! #if defined(UNIX) || defined(VMS) - static int file_owned __ARGS((char *fname)); - #endif - static void mainerr __ARGS((int, char_u *)); - static void main_msg __ARGS((char *s)); - static void usage __ARGS((void)); - static int get_number_arg __ARGS((char_u *p, int *idx, int def)); -! #if defined(HAVE_LOCALE_H) || defined(X_LOCALE) - static void init_locale __ARGS((void)); -! #endif - static void parse_command_name __ARGS((mparm_T *parmp)); - static void early_arg_scan __ARGS((mparm_T *parmp)); - static void command_line_scan __ARGS((mparm_T *parmp)); - static void check_tty __ARGS((mparm_T *parmp)); - static void read_stdin __ARGS((void)); - static void create_windows __ARGS((mparm_T *parmp)); -! #ifdef FEAT_WINDOWS - static void edit_buffers __ARGS((mparm_T *parmp)); -! #endif - static void exe_pre_commands __ARGS((mparm_T *parmp)); - static void exe_commands __ARGS((mparm_T *parmp)); - static void source_startup_scripts __ARGS((mparm_T *parmp)); - static void main_start_gui __ARGS((void)); -! #if defined(HAS_SWAP_EXISTS_ACTION) - static void check_swap_exists_action __ARGS((void)); -! #endif -! #ifdef FEAT_CLIENTSERVER - static void exec_on_server __ARGS((mparm_T *parmp)); - static void prepare_server __ARGS((mparm_T *parmp)); - static void cmdsrv_main __ARGS((int *argc, char **argv, char_u *serverName_arg, char_u **serverStr)); - static char_u *serverMakeName __ARGS((char_u *arg, char *cmd)); - #endif - - ---- 92,130 ---- - #define EDIT_TAG 3 /* tag name argument given, use tagname */ - #define EDIT_QF 4 /* start in quickfix mode */ - -! #if (defined(UNIX) || defined(VMS)) && !defined(NO_VIM_MAIN) - static int file_owned __ARGS((char *fname)); - #endif - static void mainerr __ARGS((int, char_u *)); -+ #ifndef NO_VIM_MAIN - static void main_msg __ARGS((char *s)); - static void usage __ARGS((void)); - static int get_number_arg __ARGS((char_u *p, int *idx, int def)); -! # if defined(HAVE_LOCALE_H) || defined(X_LOCALE) - static void init_locale __ARGS((void)); -! # endif - static void parse_command_name __ARGS((mparm_T *parmp)); - static void early_arg_scan __ARGS((mparm_T *parmp)); - static void command_line_scan __ARGS((mparm_T *parmp)); - static void check_tty __ARGS((mparm_T *parmp)); - static void read_stdin __ARGS((void)); - static void create_windows __ARGS((mparm_T *parmp)); -! # ifdef FEAT_WINDOWS - static void edit_buffers __ARGS((mparm_T *parmp)); -! # endif - static void exe_pre_commands __ARGS((mparm_T *parmp)); - static void exe_commands __ARGS((mparm_T *parmp)); - static void source_startup_scripts __ARGS((mparm_T *parmp)); - static void main_start_gui __ARGS((void)); -! # if defined(HAS_SWAP_EXISTS_ACTION) - static void check_swap_exists_action __ARGS((void)); -! # endif -! # if defined(FEAT_CLIENTSERVER) || defined(PROTO) - static void exec_on_server __ARGS((mparm_T *parmp)); - static void prepare_server __ARGS((mparm_T *parmp)); - static void cmdsrv_main __ARGS((int *argc, char **argv, char_u *serverName_arg, char_u **serverStr)); - static char_u *serverMakeName __ARGS((char_u *arg, char *cmd)); -+ # endif - #endif - - -*************** -*** 145,151 **** - #define ME_INVALID_ARG 5 - }; - -! #ifndef PROTO /* don't want a prototype for main() */ - int - # ifdef VIMDLL - _export ---- 147,154 ---- - #define ME_INVALID_ARG 5 - }; - -! #ifndef NO_VIM_MAIN /* skip this for unittests */ -! #ifndef PROTO /* don't want a prototype for main() */ - int - # ifdef VIMDLL - _export -*************** -*** 966,971 **** ---- 969,975 ---- - return 0; - } - #endif /* PROTO */ -+ #endif /* NO_VIM_MAIN */ - - /* - * Main loop: Execute Normal mode commands until exiting Vim. -*************** -*** 1430,1435 **** ---- 1434,1440 ---- - mch_exit(exitval); - } - -+ #ifndef NO_VIM_MAIN - /* - * Get a (optional) count for a Vim argument. - */ -*************** -*** 2994,2999 **** ---- 2999,3006 ---- - #endif - } - -+ #endif /* NO_VIM_MAIN */ -+ - /* - * Get an environment variable, and execute it as Ex commands. - * Returns FAIL if the environment variable was not executed, OK otherwise. -*************** -*** 3033,3039 **** - return FAIL; - } - -! #if defined(UNIX) || defined(VMS) - /* - * Return TRUE if we are certain the user owns the file "fname". - * Used for ".vimrc" and ".exrc". ---- 3040,3046 ---- - return FAIL; - } - -! #if (defined(UNIX) || defined(VMS)) && !defined(NO_VIM_MAIN) - /* - * Return TRUE if we are certain the user owns the file "fname". - * Used for ".vimrc" and ".exrc". -*************** -*** 3091,3096 **** ---- 3098,3104 ---- - mainerr(ME_ARG_MISSING, str); - } - -+ #ifndef NO_VIM_MAIN - /* - * print a message with three spaces prepended and '\n' appended. - */ -*************** -*** 3311,3316 **** ---- 3319,3326 ---- - } - #endif - -+ #endif -+ - #if defined(STARTUPTIME) || defined(PROTO) - static void time_diff __ARGS((struct timeval *then, struct timeval *now)); - -*************** -*** 3420,3426 **** - - #endif - -! #if defined(FEAT_CLIENTSERVER) || defined(PROTO) - - /* - * Common code for the X command server and the Win32 command server. ---- 3430,3436 ---- - - #endif - -! #if (defined(FEAT_CLIENTSERVER) && !defined(NO_VIM_MAIN)) || defined(PROTO) - - /* - * Common code for the X command server and the Win32 command server. -*************** -*** 3888,3893 **** ---- 3898,3929 ---- - } - - /* -+ * Make our basic server name: use the specified "arg" if given, otherwise use -+ * the tail of the command "cmd" we were started with. -+ * Return the name in allocated memory. This doesn't include a serial number. -+ */ -+ static char_u * -+ serverMakeName(arg, cmd) -+ char_u *arg; -+ char *cmd; -+ { -+ char_u *p; -+ -+ if (arg != NULL && *arg != NUL) -+ p = vim_strsave_up(arg); -+ else -+ { -+ p = vim_strsave_up(gettail((char_u *)cmd)); -+ /* Remove .exe or .bat from the name. */ -+ if (p != NULL && vim_strchr(p, '.') != NULL) -+ *vim_strchr(p, '.') = NUL; -+ } -+ return p; -+ } -+ #endif /* FEAT_CLIENTSERVER */ -+ -+ #if defined(FEAT_CLIENTSERVER) || defined(PROTO) -+ /* - * Replace termcodes such as <CR> and insert as key presses if there is room. - */ - void -*************** -*** 3998,4029 **** - # endif - return res; - } -! -! -! /* -! * Make our basic server name: use the specified "arg" if given, otherwise use -! * the tail of the command "cmd" we were started with. -! * Return the name in allocated memory. This doesn't include a serial number. -! */ -! static char_u * -! serverMakeName(arg, cmd) -! char_u *arg; -! char *cmd; -! { -! char_u *p; -! -! if (arg != NULL && *arg != NUL) -! p = vim_strsave_up(arg); -! else -! { -! p = vim_strsave_up(gettail((char_u *)cmd)); -! /* Remove .exe or .bat from the name. */ -! if (p != NULL && vim_strchr(p, '.') != NULL) -! *vim_strchr(p, '.') = NUL; -! } -! return p; -! } -! #endif /* FEAT_CLIENTSERVER */ - - /* - * When FEAT_FKMAP is defined, also compile the Farsi source code. ---- 4034,4040 ---- - # endif - return res; - } -! #endif - - /* - * When FEAT_FKMAP is defined, also compile the Farsi source code. -*** ../vim-7.3.142/src/memfile.c 2010-12-17 18:06:00.000000000 +0100 ---- src/memfile.c 2011-03-03 18:47:39.000000000 +0100 -*************** -*** 84,89 **** ---- 84,96 ---- - static int mf_write_block __ARGS((memfile_T *mfp, bhdr_T *hp, off_t offset, unsigned size)); - static int mf_trans_add __ARGS((memfile_T *, bhdr_T *)); - static void mf_do_open __ARGS((memfile_T *, char_u *, int)); -+ static void mf_hash_init __ARGS((mf_hashtab_T *)); -+ static void mf_hash_free __ARGS((mf_hashtab_T *)); -+ static void mf_hash_free_all __ARGS((mf_hashtab_T *)); -+ static mf_hashitem_T *mf_hash_find __ARGS((mf_hashtab_T *, blocknr_T)); -+ static void mf_hash_add_item __ARGS((mf_hashtab_T *, mf_hashitem_T *)); -+ static void mf_hash_rem_item __ARGS((mf_hashtab_T *, mf_hashitem_T *)); -+ static int mf_hash_grow __ARGS((mf_hashtab_T *)); - - /* - * The functions for using a memfile: -*************** -*** 119,125 **** - int flags; - { - memfile_T *mfp; -- int i; - off_t size; - #if defined(STATFS) && defined(UNIX) && !defined(__QNX__) - # define USE_FSTATFS ---- 126,131 ---- -*************** -*** 152,162 **** - mfp->mf_used_last = NULL; - mfp->mf_dirty = FALSE; - mfp->mf_used_count = 0; -! for (i = 0; i < MEMHASHSIZE; ++i) -! { -! mfp->mf_hash[i] = NULL; /* hash lists are empty */ -! mfp->mf_trans[i] = NULL; /* trans lists are empty */ -! } - mfp->mf_page_size = MEMFILE_PAGE_SIZE; - #ifdef FEAT_CRYPT - mfp->mf_old_key = NULL; ---- 158,165 ---- - mfp->mf_used_last = NULL; - mfp->mf_dirty = FALSE; - mfp->mf_used_count = 0; -! mf_hash_init(&mfp->mf_hash); -! mf_hash_init(&mfp->mf_trans); - mfp->mf_page_size = MEMFILE_PAGE_SIZE; - #ifdef FEAT_CRYPT - mfp->mf_old_key = NULL; -*************** -*** 242,249 **** - int del_file; - { - bhdr_T *hp, *nextp; -- NR_TRANS *tp, *tpnext; -- int i; - - if (mfp == NULL) /* safety check */ - return; ---- 245,250 ---- -*************** -*** 263,274 **** - } - while (mfp->mf_free_first != NULL) /* free entries in free list */ - vim_free(mf_rem_free(mfp)); -! for (i = 0; i < MEMHASHSIZE; ++i) /* free entries in trans lists */ -! for (tp = mfp->mf_trans[i]; tp != NULL; tp = tpnext) -! { -! tpnext = tp->nt_next; -! vim_free(tp); -! } - vim_free(mfp->mf_fname); - vim_free(mfp->mf_ffname); - vim_free(mfp); ---- 264,271 ---- - } - while (mfp->mf_free_first != NULL) /* free entries in free list */ - vim_free(mf_rem_free(mfp)); -! mf_hash_free(&mfp->mf_hash); -! mf_hash_free_all(&mfp->mf_trans); /* free hashtable and its items */ - vim_free(mfp->mf_fname); - vim_free(mfp->mf_ffname); - vim_free(mfp); -*************** -*** 743,758 **** - memfile_T *mfp; - bhdr_T *hp; - { -! bhdr_T *hhp; -! int hash; -! -! hash = MEMHASH(hp->bh_bnum); -! hhp = mfp->mf_hash[hash]; -! hp->bh_hash_next = hhp; -! hp->bh_hash_prev = NULL; -! if (hhp != NULL) -! hhp->bh_hash_prev = hp; -! mfp->mf_hash[hash] = hp; - } - - /* ---- 740,746 ---- - memfile_T *mfp; - bhdr_T *hp; - { -! mf_hash_add_item(&mfp->mf_hash, (mf_hashitem_T *)hp); - } - - /* -*************** -*** 763,775 **** - memfile_T *mfp; - bhdr_T *hp; - { -! if (hp->bh_hash_prev == NULL) -! mfp->mf_hash[MEMHASH(hp->bh_bnum)] = hp->bh_hash_next; -! else -! hp->bh_hash_prev->bh_hash_next = hp->bh_hash_next; -! -! if (hp->bh_hash_next) -! hp->bh_hash_next->bh_hash_prev = hp->bh_hash_prev; - } - - /* ---- 751,757 ---- - memfile_T *mfp; - bhdr_T *hp; - { -! mf_hash_rem_item(&mfp->mf_hash, (mf_hashitem_T *)hp); - } - - /* -*************** -*** 780,791 **** - memfile_T *mfp; - blocknr_T nr; - { -! bhdr_T *hp; -! -! for (hp = mfp->mf_hash[MEMHASH(nr)]; hp != NULL; hp = hp->bh_hash_next) -! if (hp->bh_bnum == nr) -! break; -! return hp; - } - - /* ---- 762,768 ---- - memfile_T *mfp; - blocknr_T nr; - { -! return (bhdr_T *)mf_hash_find(&mfp->mf_hash, nr); - } - - /* -*************** -*** 1187,1193 **** - { - bhdr_T *freep; - blocknr_T new_bnum; -- int hash; - NR_TRANS *np; - int page_count; - ---- 1164,1169 ---- -*************** -*** 1235,1246 **** - hp->bh_bnum = new_bnum; - mf_ins_hash(mfp, hp); /* insert in new hash list */ - -! hash = MEMHASH(np->nt_old_bnum); /* insert in trans list */ -! np->nt_next = mfp->mf_trans[hash]; -! mfp->mf_trans[hash] = np; -! if (np->nt_next != NULL) -! np->nt_next->nt_prev = np; -! np->nt_prev = NULL; - - return OK; - } ---- 1211,1218 ---- - hp->bh_bnum = new_bnum; - mf_ins_hash(mfp, hp); /* insert in new hash list */ - -! /* Insert "np" into "mf_trans" hashtable with key "np->nt_old_bnum" */ -! mf_hash_add_item(&mfp->mf_trans, (mf_hashitem_T *)np); - - return OK; - } -*************** -*** 1255,1279 **** - memfile_T *mfp; - blocknr_T old_nr; - { -- int hash; - NR_TRANS *np; - blocknr_T new_bnum; - -! hash = MEMHASH(old_nr); -! for (np = mfp->mf_trans[hash]; np != NULL; np = np->nt_next) -! if (np->nt_old_bnum == old_nr) -! break; - if (np == NULL) /* not found */ - return old_nr; - - mfp->mf_neg_count--; - new_bnum = np->nt_new_bnum; -! if (np->nt_prev != NULL) /* remove entry from the trans list */ -! np->nt_prev->nt_next = np->nt_next; -! else -! mfp->mf_trans[hash] = np->nt_next; -! if (np->nt_next != NULL) -! np->nt_next->nt_prev = np->nt_prev; - vim_free(np); - - return new_bnum; ---- 1227,1246 ---- - memfile_T *mfp; - blocknr_T old_nr; - { - NR_TRANS *np; - blocknr_T new_bnum; - -! np = (NR_TRANS *)mf_hash_find(&mfp->mf_trans, old_nr); -! - if (np == NULL) /* not found */ - return old_nr; - - mfp->mf_neg_count--; - new_bnum = np->nt_new_bnum; -! -! /* remove entry from the trans list */ -! mf_hash_rem_item(&mfp->mf_trans, (mf_hashitem_T *)np); -! - vim_free(np); - - return new_bnum; -*************** -*** 1397,1399 **** ---- 1364,1570 ---- - mch_hide(mfp->mf_fname); /* try setting the 'hidden' flag */ - } - } -+ -+ /* -+ * Implementation of mf_hashtab_T follows. -+ */ -+ -+ /* -+ * The number of buckets in the hashtable is increased by a factor of -+ * MHT_GROWTH_FACTOR when the average number of items per bucket -+ * exceeds 2 ^ MHT_LOG_LOAD_FACTOR. -+ */ -+ #define MHT_LOG_LOAD_FACTOR 6 -+ #define MHT_GROWTH_FACTOR 2 /* must be a power of two */ -+ -+ /* -+ * Initialize an empty hash table. -+ */ -+ static void -+ mf_hash_init(mht) -+ mf_hashtab_T *mht; -+ { -+ vim_memset(mht, 0, sizeof(mf_hashtab_T)); -+ mht->mht_buckets = mht->mht_small_buckets; -+ mht->mht_mask = MHT_INIT_SIZE - 1; -+ } -+ -+ /* -+ * Free the array of a hash table. Does not free the items it contains! -+ * The hash table must not be used again without another mf_hash_init() call. -+ */ -+ static void -+ mf_hash_free(mht) -+ mf_hashtab_T *mht; -+ { -+ if (mht->mht_buckets != mht->mht_small_buckets) -+ vim_free(mht->mht_buckets); -+ } -+ -+ /* -+ * Free the array of a hash table and all the items it contains. -+ */ -+ static void -+ mf_hash_free_all(mht) -+ mf_hashtab_T *mht; -+ { -+ long_u idx; -+ mf_hashitem_T *mhi; -+ mf_hashitem_T *next; -+ -+ for (idx = 0; idx <= mht->mht_mask; idx++) -+ for (mhi = mht->mht_buckets[idx]; mhi != NULL; mhi = next) -+ { -+ next = mhi->mhi_next; -+ vim_free(mhi); -+ } -+ -+ mf_hash_free(mht); -+ } -+ -+ /* -+ * Find "key" in hashtable "mht". -+ * Returns a pointer to a mf_hashitem_T or NULL if the item was not found. -+ */ -+ static mf_hashitem_T * -+ mf_hash_find(mht, key) -+ mf_hashtab_T *mht; -+ blocknr_T key; -+ { -+ mf_hashitem_T *mhi; -+ -+ mhi = mht->mht_buckets[key & mht->mht_mask]; -+ while (mhi != NULL && mhi->mhi_key != key) -+ mhi = mhi->mhi_next; -+ -+ return mhi; -+ } -+ -+ /* -+ * Add item "mhi" to hashtable "mht". -+ * "mhi" must not be NULL. -+ */ -+ static void -+ mf_hash_add_item(mht, mhi) -+ mf_hashtab_T *mht; -+ mf_hashitem_T *mhi; -+ { -+ long_u idx; -+ -+ idx = mhi->mhi_key & mht->mht_mask; -+ mhi->mhi_next = mht->mht_buckets[idx]; -+ mhi->mhi_prev = NULL; -+ if (mhi->mhi_next != NULL) -+ mhi->mhi_next->mhi_prev = mhi; -+ mht->mht_buckets[idx] = mhi; -+ -+ mht->mht_count++; -+ -+ /* -+ * Grow hashtable when we have more thank 2^MHT_LOG_LOAD_FACTOR -+ * items per bucket on average -+ */ -+ if (mht->mht_fixed == 0 -+ && (mht->mht_count >> MHT_LOG_LOAD_FACTOR) > mht->mht_mask) -+ { -+ if (mf_hash_grow(mht) == FAIL) -+ { -+ /* stop trying to grow after first failure to allocate memory */ -+ mht->mht_fixed = 1; -+ } -+ } -+ } -+ -+ /* -+ * Remove item "mhi" from hashtable "mht". -+ * "mhi" must not be NULL and must have been inserted into "mht". -+ */ -+ static void -+ mf_hash_rem_item(mht, mhi) -+ mf_hashtab_T *mht; -+ mf_hashitem_T *mhi; -+ { -+ if (mhi->mhi_prev == NULL) -+ mht->mht_buckets[mhi->mhi_key & mht->mht_mask] = mhi->mhi_next; -+ else -+ mhi->mhi_prev->mhi_next = mhi->mhi_next; -+ -+ if (mhi->mhi_next != NULL) -+ mhi->mhi_next->mhi_prev = mhi->mhi_prev; -+ -+ mht->mht_count--; -+ -+ /* We could shrink the table here, but it typically takes little memory, -+ * so why bother? */ -+ } -+ -+ /* -+ * Increase number of buckets in the hashtable by MHT_GROWTH_FACTOR and -+ * rehash items. -+ * Returns FAIL when out of memory. -+ */ -+ static int -+ mf_hash_grow(mht) -+ mf_hashtab_T *mht; -+ { -+ long_u i, j; -+ int shift; -+ mf_hashitem_T *mhi; -+ mf_hashitem_T *tails[MHT_GROWTH_FACTOR]; -+ mf_hashitem_T **buckets; -+ size_t size; -+ -+ size = (mht->mht_mask + 1) * MHT_GROWTH_FACTOR * sizeof(void *); -+ buckets = (mf_hashitem_T **)lalloc_clear(size, FALSE); -+ if (buckets == NULL) -+ return FAIL; -+ -+ shift = 0; -+ while ((mht->mht_mask >> shift) != 0) -+ shift++; -+ -+ for (i = 0; i <= mht->mht_mask; i++) -+ { -+ /* -+ * Traverse the items in the i-th original bucket and move them into -+ * MHT_GROWTH_FACTOR new buckets, preserving their relative order -+ * within each new bucket. Preserving the order is important because -+ * mf_get() tries to keep most recently used items at the front of -+ * each bucket. -+ * -+ * Here we strongly rely on the fact the hashes are computed modulo -+ * a power of two. -+ */ -+ -+ vim_memset(tails, 0, sizeof(tails)); -+ -+ for (mhi = mht->mht_buckets[i]; mhi != NULL; mhi = mhi->mhi_next) -+ { -+ j = (mhi->mhi_key >> shift) & (MHT_GROWTH_FACTOR - 1); -+ if (tails[j] == NULL) -+ { -+ buckets[i + (j << shift)] = mhi; -+ tails[j] = mhi; -+ mhi->mhi_prev = NULL; -+ } -+ else -+ { -+ tails[j]->mhi_next = mhi; -+ mhi->mhi_prev = tails[j]; -+ tails[j] = mhi; -+ } -+ } -+ -+ for (j = 0; j < MHT_GROWTH_FACTOR; j++) -+ if (tails[j] != NULL) -+ tails[j]->mhi_next = NULL; -+ } -+ -+ if (mht->mht_buckets != mht->mht_small_buckets) -+ vim_free(mht->mht_buckets); -+ -+ mht->mht_buckets = buckets; -+ mht->mht_mask = (mht->mht_mask + 1) * MHT_GROWTH_FACTOR - 1; -+ -+ return OK; -+ } -*** ../vim-7.3.142/src/memfile_test.c 2011-03-03 21:58:14.000000000 +0100 ---- src/memfile_test.c 2011-03-03 20:40:29.000000000 +0100 -*************** -*** 0 **** ---- 1,145 ---- -+ /* vi:set ts=8 sts=4 sw=4: -+ * -+ * VIM - Vi IMproved by Bram Moolenaar -+ * -+ * Do ":help uganda" in Vim to read copying and usage conditions. -+ * Do ":help credits" in Vim to see a list of people who contributed. -+ * See README.txt for an overview of the Vim source code. -+ */ -+ -+ /* -+ * memfile_test.c: Unittests for memfile.c -+ * Mostly by Ivan Krasilnikov. -+ */ -+ -+ #undef NDEBUG -+ #include <assert.h> -+ -+ /* Must include main.c because it contains much more than just main() */ -+ #define NO_VIM_MAIN -+ #include "main.c" -+ -+ /* This file has to be included because the tested functions are static */ -+ #include "memfile.c" -+ -+ #define index_to_key(i) ((i) ^ 15167) -+ #define TEST_COUNT 50000 -+ -+ static void test_mf_hash __ARGS((void)); -+ -+ /* -+ * Test mf_hash_*() functions. -+ */ -+ static void -+ test_mf_hash() -+ { -+ mf_hashtab_T ht; -+ mf_hashitem_T *item; -+ blocknr_T key; -+ long_u i; -+ long_u num_buckets; -+ -+ mf_hash_init(&ht); -+ -+ /* insert some items and check invariants */ -+ for (i = 0; i < TEST_COUNT; i++) -+ { -+ assert(ht.mht_count == i); -+ -+ /* check that number of buckets is a power of 2 */ -+ num_buckets = ht.mht_mask + 1; -+ assert(num_buckets > 0 && (num_buckets & (num_buckets - 1)) == 0); -+ -+ /* check load factor */ -+ assert(ht.mht_count <= (num_buckets << MHT_LOG_LOAD_FACTOR)); -+ -+ if (i < (MHT_INIT_SIZE << MHT_LOG_LOAD_FACTOR)) -+ { -+ /* first expansion shouldn't have occurred yet */ -+ assert(num_buckets == MHT_INIT_SIZE); -+ assert(ht.mht_buckets == ht.mht_small_buckets); -+ } -+ else -+ { -+ assert(num_buckets > MHT_INIT_SIZE); -+ assert(ht.mht_buckets != ht.mht_small_buckets); -+ } -+ -+ key = index_to_key(i); -+ assert(mf_hash_find(&ht, key) == NULL); -+ -+ /* allocate and add new item */ -+ item = (mf_hashitem_T *)lalloc_clear(sizeof(mf_hashtab_T), FALSE); -+ assert(item != NULL); -+ item->mhi_key = key; -+ mf_hash_add_item(&ht, item); -+ -+ assert(mf_hash_find(&ht, key) == item); -+ -+ if (ht.mht_mask + 1 != num_buckets) -+ { -+ /* hash table was expanded */ -+ assert(ht.mht_mask + 1 == num_buckets * MHT_GROWTH_FACTOR); -+ assert(i + 1 == (num_buckets << MHT_LOG_LOAD_FACTOR)); -+ } -+ } -+ -+ /* check presence of inserted items */ -+ for (i = 0; i < TEST_COUNT; i++) -+ { -+ key = index_to_key(i); -+ item = mf_hash_find(&ht, key); -+ assert(item != NULL); -+ assert(item->mhi_key == key); -+ } -+ -+ /* delete some items */ -+ for (i = 0; i < TEST_COUNT; i++) -+ { -+ if (i % 100 < 70) -+ { -+ key = index_to_key(i); -+ item = mf_hash_find(&ht, key); -+ assert(item != NULL); -+ assert(item->mhi_key == key); -+ -+ mf_hash_rem_item(&ht, item); -+ assert(mf_hash_find(&ht, key) == NULL); -+ -+ mf_hash_add_item(&ht, item); -+ assert(mf_hash_find(&ht, key) == item); -+ -+ mf_hash_rem_item(&ht, item); -+ assert(mf_hash_find(&ht, key) == NULL); -+ -+ vim_free(item); -+ } -+ } -+ -+ /* check again */ -+ for (i = 0; i < TEST_COUNT; i++) -+ { -+ key = index_to_key(i); -+ item = mf_hash_find(&ht, key); -+ -+ if (i % 100 < 70) -+ { -+ assert(item == NULL); -+ } -+ else -+ { -+ assert(item != NULL); -+ assert(item->mhi_key == key); -+ } -+ } -+ -+ /* free hash table and all remaining items */ -+ mf_hash_free_all(&ht); -+ } -+ -+ int -+ main() -+ { -+ test_mf_hash(); -+ return 0; -+ } -*** ../vim-7.3.142/src/structs.h 2011-02-15 17:39:14.000000000 +0100 ---- src/structs.h 2011-03-03 18:49:01.000000000 +0100 -*************** -*** 378,383 **** ---- 378,412 ---- - typedef long blocknr_T; - - /* -+ * mf_hashtab_T is a chained hashtable with blocknr_T key and arbitrary -+ * structures as items. This is an intrusive data structure: we require -+ * that items begin with mf_hashitem_T which contains the key and linked -+ * list pointers. List of items in each bucket is doubly-linked. -+ */ -+ -+ typedef struct mf_hashitem_S mf_hashitem_T; -+ -+ struct mf_hashitem_S -+ { -+ mf_hashitem_T *mhi_next; -+ mf_hashitem_T *mhi_prev; -+ blocknr_T mhi_key; -+ }; -+ -+ #define MHT_INIT_SIZE 64 -+ -+ typedef struct mf_hashtab_S -+ { -+ long_u mht_mask; /* mask used for hash value (nr of items -+ * in array is "mht_mask" + 1) */ -+ long_u mht_count; /* nr of items inserted into hashtable */ -+ mf_hashitem_T **mht_buckets; /* points to mht_small_buckets or -+ *dynamically allocated array */ -+ mf_hashitem_T *mht_small_buckets[MHT_INIT_SIZE]; /* initial buckets */ -+ char mht_fixed; /* non-zero value forbids growth */ -+ } mf_hashtab_T; -+ -+ /* - * for each (previously) used block in the memfile there is one block header. - * - * The block may be linked in the used list OR in the free list. -*************** -*** 394,404 **** - - struct block_hdr - { - bhdr_T *bh_next; /* next block_hdr in free or used list */ - bhdr_T *bh_prev; /* previous block_hdr in used list */ -- bhdr_T *bh_hash_next; /* next block_hdr in hash list */ -- bhdr_T *bh_hash_prev; /* previous block_hdr in hash list */ -- blocknr_T bh_bnum; /* block number */ - char_u *bh_data; /* pointer to memory (for used block) */ - int bh_page_count; /* number of pages in this block */ - ---- 423,433 ---- - - struct block_hdr - { -+ mf_hashitem_T bh_hashitem; /* header for hash table and key */ -+ #define bh_bnum bh_hashitem.mhi_key /* block number, part of bh_hashitem */ -+ - bhdr_T *bh_next; /* next block_hdr in free or used list */ - bhdr_T *bh_prev; /* previous block_hdr in used list */ - char_u *bh_data; /* pointer to memory (for used block) */ - int bh_page_count; /* number of pages in this block */ - -*************** -*** 417,425 **** - - struct nr_trans - { -! NR_TRANS *nt_next; /* next nr_trans in hash list */ -! NR_TRANS *nt_prev; /* previous nr_trans in hash list */ -! blocknr_T nt_old_bnum; /* old, negative, number */ - blocknr_T nt_new_bnum; /* new, positive, number */ - }; - ---- 446,454 ---- - - struct nr_trans - { -! mf_hashitem_T nt_hashitem; /* header for hash table and key */ -! #define nt_old_bnum nt_hashitem.mhi_key /* old, negative, number */ -! - blocknr_T nt_new_bnum; /* new, positive, number */ - }; - -*************** -*** 499,510 **** - - typedef struct file_buffer buf_T; /* forward declaration */ - -- /* -- * Simplistic hashing scheme to quickly locate the blocks in the used list. -- * 64 blocks are found directly (64 * 4K = 256K, most files are smaller). -- */ -- #define MEMHASHSIZE 64 -- #define MEMHASH(nr) ((nr) & (MEMHASHSIZE - 1)) - #define MF_SEED_LEN 8 - - struct memfile ---- 528,533 ---- -*************** -*** 517,524 **** - bhdr_T *mf_used_last; /* lru block_hdr in used list */ - unsigned mf_used_count; /* number of pages in used list */ - unsigned mf_used_count_max; /* maximum number of pages in memory */ -! bhdr_T *mf_hash[MEMHASHSIZE]; /* array of hash lists */ -! NR_TRANS *mf_trans[MEMHASHSIZE]; /* array of trans lists */ - blocknr_T mf_blocknr_max; /* highest positive block number + 1*/ - blocknr_T mf_blocknr_min; /* lowest negative block number - 1 */ - blocknr_T mf_neg_count; /* number of negative blocks numbers */ ---- 540,547 ---- - bhdr_T *mf_used_last; /* lru block_hdr in used list */ - unsigned mf_used_count; /* number of pages in used list */ - unsigned mf_used_count_max; /* maximum number of pages in memory */ -! mf_hashtab_T mf_hash; /* hash lists */ -! mf_hashtab_T mf_trans; /* trans lists */ - blocknr_T mf_blocknr_max; /* highest positive block number + 1*/ - blocknr_T mf_blocknr_min; /* lowest negative block number - 1 */ - blocknr_T mf_neg_count; /* number of negative blocks numbers */ -*** ../vim-7.3.142/src/testdir/Make_amiga.mak 2010-11-10 16:54:16.000000000 +0100 ---- src/testdir/Make_amiga.mak 2011-03-03 17:04:14.000000000 +0100 -*************** -*** 28,34 **** - test61.out test62.out test63.out test64.out test65.out \ - test66.out test67.out test68.out test69.out test70.out \ - test71.out test72.out test73.out test74.out test75.out \ -! test76.out - - .SUFFIXES: .in .out - ---- 28,34 ---- - test61.out test62.out test63.out test64.out test65.out \ - test66.out test67.out test68.out test69.out test70.out \ - test71.out test72.out test73.out test74.out test75.out \ -! test76.out test77.out - - .SUFFIXES: .in .out - -*************** -*** 124,126 **** ---- 124,127 ---- - test74.out: test74.in - test75.out: test75.in - test76.out: test76.in -+ test77.out: test77.in -*** ../vim-7.3.142/src/testdir/Make_dos.mak 2010-11-10 16:54:16.000000000 +0100 ---- src/testdir/Make_dos.mak 2011-03-03 17:04:20.000000000 +0100 -*************** -*** 28,34 **** - test37.out test38.out test39.out test40.out test41.out \ - test42.out test52.out test65.out test66.out test67.out \ - test68.out test69.out test71.out test72.out test73.out \ -! test74.out test75.out test76.out - - SCRIPTS32 = test50.out test70.out - ---- 28,34 ---- - test37.out test38.out test39.out test40.out test41.out \ - test42.out test52.out test65.out test66.out test67.out \ - test68.out test69.out test71.out test72.out test73.out \ -! test74.out test75.out test76.out test77.out - - SCRIPTS32 = test50.out test70.out - -*** ../vim-7.3.142/src/testdir/Make_ming.mak 2010-11-10 16:54:16.000000000 +0100 ---- src/testdir/Make_ming.mak 2011-03-03 17:04:32.000000000 +0100 -*************** -*** 48,54 **** - test37.out test38.out test39.out test40.out test41.out \ - test42.out test52.out test65.out test66.out test67.out \ - test68.out test69.out test71.out test72.out test73.out \ -! test74.out test75.out test76.out - - SCRIPTS32 = test50.out test70.out - ---- 48,54 ---- - test37.out test38.out test39.out test40.out test41.out \ - test42.out test52.out test65.out test66.out test67.out \ - test68.out test69.out test71.out test72.out test73.out \ -! test74.out test75.out test76.out test77.out - - SCRIPTS32 = test50.out test70.out - -*** ../vim-7.3.142/src/testdir/Make_os2.mak 2010-11-10 16:54:16.000000000 +0100 ---- src/testdir/Make_os2.mak 2011-03-03 17:04:48.000000000 +0100 -*************** -*** 28,34 **** - test61.out test62.out test63.out test64.out test65.out \ - test66.out test67.out test68.out test69.out test70.out \ - test71.out test72.out test73.out test74.out test75.out \ -! test76.out - - .SUFFIXES: .in .out - ---- 28,34 ---- - test61.out test62.out test63.out test64.out test65.out \ - test66.out test67.out test68.out test69.out test70.out \ - test71.out test72.out test73.out test74.out test75.out \ -! test76.out test77.out - - .SUFFIXES: .in .out - -*** ../vim-7.3.142/src/testdir/Makefile 2010-11-10 16:54:16.000000000 +0100 ---- src/testdir/Makefile 2011-03-22 17:03:25.000000000 +0100 -*************** -*** 25,31 **** - test59.out test60.out test61.out test62.out test63.out \ - test64.out test65.out test66.out test67.out test68.out \ - test69.out test70.out test71.out test72.out test73.out \ -! test74.out test75.out test76.out - - SCRIPTS_GUI = test16.out - ---- 25,31 ---- - test59.out test60.out test61.out test62.out test63.out \ - test64.out test65.out test66.out test67.out test68.out \ - test69.out test70.out test71.out test72.out test73.out \ -! test74.out test75.out test76.out test77.out - - SCRIPTS_GUI = test16.out - -*************** -*** 71,77 **** - fi \ - else echo $* NO OUTPUT >>test.log; \ - fi" -! -rm -rf X* test.ok viminfo - - test49.out: test49.vim - ---- 71,77 ---- - fi \ - else echo $* NO OUTPUT >>test.log; \ - fi" -! # -rm -rf X* test.ok viminfo - - test49.out: test49.vim - -*** ../vim-7.3.142/src/testdir/test77.in 2011-03-03 21:59:10.000000000 +0100 ---- src/testdir/test77.in 2011-03-22 17:12:38.000000000 +0100 -*************** -*** 0 **** ---- 1,27 ---- -+ Inserts 2 million lines with consecutive integers starting from 1 -+ (essentially, the output of GNU's seq 1 2000000), writes them to Xtest -+ and writes its cksum to test.out. -+ -+ We need 2 million lines to trigger a call to mf_hash_grow(). If it would mess -+ up the lines the checksum would differ. -+ -+ cksum is part of POSIX and so should be available on most Unixes. -+ If it isn't available then the test will be skipped. -+ -+ STARTTEST -+ :so small.vim -+ :if !executable("cksum") -+ : e! test.ok -+ : w! test.out -+ : qa! -+ :endif -+ :set fileformat=unix undolevels=-1 -+ ggdG -+ :let i = 1 -+ :while i <= 2000000 | call append(i, range(i, i + 99)) | let i += 100 | endwhile -+ ggdd -+ :w! Xtest -+ :!cksum Xtest > test.out -+ :qa! -+ ENDTEST -+ -*** ../vim-7.3.142/src/testdir/test77.ok 2011-03-03 21:59:10.000000000 +0100 ---- src/testdir/test77.ok 2011-03-22 17:10:14.000000000 +0100 -*************** -*** 0 **** ---- 1 ---- -+ 3678979763 14888896 Xtest -*** ../vim-7.3.142/src/version.c 2011-03-22 15:47:18.000000000 +0100 ---- src/version.c 2011-03-22 18:01:48.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 143, - /**/ - --- -SIGIRO -- irony detected (iron core dumped) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.144 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.144 -Problem: Crash with ":python help(dir)". (Kearn Holliday) -Solution: Fix the way the type is set on objects. (Tobias Columbus) -Files: src/if_python.c - - -*** ../vim-7.3.143/src/if_python.c 2010-11-16 19:25:56.000000000 +0100 ---- src/if_python.c 2011-03-26 13:54:22.000000000 +0100 -*************** -*** 780,786 **** - PythonIO_Init(void) - { - /* Fixups... */ -! OutputType.ob_type = &PyType_Type; - - return PythonIO_Init_io(); - } ---- 780,786 ---- - PythonIO_Init(void) - { - /* Fixups... */ -! PyType_Ready(&OutputType); - - return PythonIO_Init_io(); - } -*************** -*** 1402,1413 **** - static char *(argv[2]) = {"/must>not&exist/foo", NULL}; - - /* Fixups... */ -! BufferType.ob_type = &PyType_Type; -! RangeType.ob_type = &PyType_Type; -! WindowType.ob_type = &PyType_Type; -! BufListType.ob_type = &PyType_Type; -! WinListType.ob_type = &PyType_Type; -! CurrentType.ob_type = &PyType_Type; - - /* Set sys.argv[] to avoid a crash in warn(). */ - PySys_SetArgv(1, argv); ---- 1402,1413 ---- - static char *(argv[2]) = {"/must>not&exist/foo", NULL}; - - /* Fixups... */ -! PyType_Ready(&BufferType); -! PyType_Ready(&RangeType); -! PyType_Ready(&WindowType); -! PyType_Ready(&BufListType); -! PyType_Ready(&WinListType); -! PyType_Ready(&CurrentType); - - /* Set sys.argv[] to avoid a crash in warn(). */ - PySys_SetArgv(1, argv); -*** ../vim-7.3.143/src/version.c 2011-03-22 18:10:34.000000000 +0100 ---- src/version.c 2011-03-26 13:56:15.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 144, - /**/ - --- -The chat program is in public domain. This is not the GNU public license. -If it breaks then you get to keep both pieces. - -- Copyright notice for the chat program - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.145 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.145 (after 7.3.144) -Problem: Can't build with Python dynamically loading. -Solution: Add dll_PyType_Ready. -Files: src/if_python.c - - -*** ../vim-7.3.144/src/if_python.c 2011-03-26 13:56:41.000000000 +0100 ---- src/if_python.c 2011-03-26 18:10:00.000000000 +0100 -*************** -*** 165,170 **** ---- 165,171 ---- - # define PySys_SetObject dll_PySys_SetObject - # define PySys_SetArgv dll_PySys_SetArgv - # define PyType_Type (*dll_PyType_Type) -+ # define PyType_Ready (*dll_PyType_Ready) - # define Py_BuildValue dll_Py_BuildValue - # define Py_FindMethod dll_Py_FindMethod - # define Py_InitModule4 dll_Py_InitModule4 -*************** -*** 224,229 **** ---- 225,231 ---- - static int(*dll_PySys_SetObject)(char *, PyObject *); - static int(*dll_PySys_SetArgv)(int, char **); - static PyTypeObject* dll_PyType_Type; -+ static int (*dll_PyType_Ready)(PyTypeObject *type); - static PyObject*(*dll_Py_BuildValue)(char *, ...); - static PyObject*(*dll_Py_FindMethod)(struct PyMethodDef[], PyObject *, char *); - static PyObject*(*dll_Py_InitModule4)(char *, struct PyMethodDef *, char *, PyObject *, int); -*************** -*** 305,310 **** ---- 307,313 ---- - {"PySys_SetObject", (PYTHON_PROC*)&dll_PySys_SetObject}, - {"PySys_SetArgv", (PYTHON_PROC*)&dll_PySys_SetArgv}, - {"PyType_Type", (PYTHON_PROC*)&dll_PyType_Type}, -+ {"PyType_Ready", (PYTHON_PROC*)&dll_PyType_Ready}, - {"Py_BuildValue", (PYTHON_PROC*)&dll_Py_BuildValue}, - {"Py_FindMethod", (PYTHON_PROC*)&dll_Py_FindMethod}, - # if (PY_VERSION_HEX >= 0x02050000) && SIZEOF_SIZE_T != SIZEOF_INT -*** ../vim-7.3.144/src/version.c 2011-03-26 13:56:41.000000000 +0100 ---- src/version.c 2011-03-26 18:11:19.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 145, - /**/ - --- -This message contains 78% recycled characters. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.146 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.146 -Problem: It's possible to assign to a read-only member of a dict. - It's possible to create a global variable "0". (ZyX) - It's possible to add a v: variable with ":let v:.name = 1". -Solution: Add check for dict item being read-only. - Check the name of g: variables. - Disallow adding v: variables. -Files: src/eval.c - - -*** ../vim-7.3.145/src/eval.c 2011-02-01 13:48:47.000000000 +0100 ---- src/eval.c 2011-03-27 15:56:44.000000000 +0200 -*************** -*** 789,794 **** ---- 789,796 ---- - static void set_var __ARGS((char_u *name, typval_T *varp, int copy)); - static int var_check_ro __ARGS((int flags, char_u *name)); - static int var_check_fixed __ARGS((int flags, char_u *name)); -+ static int var_check_func_name __ARGS((char_u *name, int new_var)); -+ static int valid_varname __ARGS((char_u *varname)); - static int tv_check_lock __ARGS((int lock, char_u *name)); - static int item_copy __ARGS((typval_T *from, typval_T *to, int deep, int copyID)); - static char_u *find_option_end __ARGS((char_u **arg, int *opt_flags)); -*************** -*** 2716,2723 **** ---- 2718,2744 ---- - lp->ll_list = NULL; - lp->ll_dict = lp->ll_tv->vval.v_dict; - lp->ll_di = dict_find(lp->ll_dict, key, len); -+ -+ /* When assigning to g: check that a function and variable name is -+ * valid. */ -+ if (rettv != NULL && lp->ll_dict == &globvardict) -+ { -+ if (rettv->v_type == VAR_FUNC -+ && var_check_func_name(key, lp->ll_di == NULL)) -+ return NULL; -+ if (!valid_varname(key)) -+ return NULL; -+ } -+ - if (lp->ll_di == NULL) - { -+ /* Can't add "v:" variable. */ -+ if (lp->ll_dict == &vimvardict) -+ { -+ EMSG2(_(e_illvar), name); -+ return NULL; -+ } -+ - /* Key does not exist in dict: may need to add it. */ - if (*p == '[' || *p == '.' || unlet) - { -*************** -*** 2737,2742 **** ---- 2758,2767 ---- - p = NULL; - break; - } -+ /* existing variable, need to check if it can be changed */ -+ else if (var_check_ro(lp->ll_di->di_flags, name)) -+ return NULL; -+ - if (len == -1) - clear_tv(&var1); - lp->ll_tv = &lp->ll_di->di_tv; -*************** -*** 19786,19792 **** - dictitem_T *v; - char_u *varname; - hashtab_T *ht; -- char_u *p; - - ht = find_var_ht(name, &varname); - if (ht == NULL || *varname == NUL) ---- 19811,19816 ---- -*************** -*** 19796,19820 **** - } - v = find_var_in_ht(ht, varname, TRUE); - -! if (tv->v_type == VAR_FUNC) -! { -! if (!(vim_strchr((char_u *)"wbs", name[0]) != NULL && name[1] == ':') -! && !ASCII_ISUPPER((name[0] != NUL && name[1] == ':') -! ? name[2] : name[0])) -! { -! EMSG2(_("E704: Funcref variable name must start with a capital: %s"), name); -! return; -! } -! /* Don't allow hiding a function. When "v" is not NULL we might be -! * assigning another function to the same var, the type is checked -! * below. */ -! if (v == NULL && function_exists(name)) -! { -! EMSG2(_("E705: Variable name conflicts with existing function: %s"), -! name); -! return; -! } -! } - - if (v != NULL) - { ---- 19820,19827 ---- - } - v = find_var_in_ht(ht, varname, TRUE); - -! if (tv->v_type == VAR_FUNC && var_check_func_name(name, v == NULL)) -! return; - - if (v != NULL) - { -*************** -*** 19880,19892 **** - } - - /* Make sure the variable name is valid. */ -! for (p = varname; *p != NUL; ++p) -! if (!eval_isnamec1(*p) && (p == varname || !VIM_ISDIGIT(*p)) -! && *p != AUTOLOAD_CHAR) -! { -! EMSG2(_(e_illvar), varname); -! return; -! } - - v = (dictitem_T *)alloc((unsigned)(sizeof(dictitem_T) - + STRLEN(varname))); ---- 19887,19894 ---- - } - - /* Make sure the variable name is valid. */ -! if (!valid_varname(varname)) -! return; - - v = (dictitem_T *)alloc((unsigned)(sizeof(dictitem_T) - + STRLEN(varname))); -*************** -*** 19951,19956 **** ---- 19953,20007 ---- - } - - /* -+ * Check if a funcref is assigned to a valid variable name. -+ * Return TRUE and give an error if not. -+ */ -+ static int -+ var_check_func_name(name, new_var) -+ char_u *name; /* points to start of variable name */ -+ int new_var; /* TRUE when creating the variable */ -+ { -+ if (!(vim_strchr((char_u *)"wbs", name[0]) != NULL && name[1] == ':') -+ && !ASCII_ISUPPER((name[0] != NUL && name[1] == ':') -+ ? name[2] : name[0])) -+ { -+ EMSG2(_("E704: Funcref variable name must start with a capital: %s"), -+ name); -+ return TRUE; -+ } -+ /* Don't allow hiding a function. When "v" is not NULL we might be -+ * assigning another function to the same var, the type is checked -+ * below. */ -+ if (new_var && function_exists(name)) -+ { -+ EMSG2(_("E705: Variable name conflicts with existing function: %s"), -+ name); -+ return TRUE; -+ } -+ return FALSE; -+ } -+ -+ /* -+ * Check if a variable name is valid. -+ * Return FALSE and give an error if not. -+ */ -+ static int -+ valid_varname(varname) -+ char_u *varname; -+ { -+ char_u *p; -+ -+ for (p = varname; *p != NUL; ++p) -+ if (!eval_isnamec1(*p) && (p == varname || !VIM_ISDIGIT(*p)) -+ && *p != AUTOLOAD_CHAR) -+ { -+ EMSG2(_(e_illvar), varname); -+ return FALSE; -+ } -+ return TRUE; -+ } -+ -+ /* - * Return TRUE if typeval "tv" is set to be locked (immutable). - * Also give an error message, using "name". - */ -*** ../vim-7.3.145/src/version.c 2011-03-26 18:32:00.000000000 +0100 ---- src/version.c 2011-03-27 16:01:03.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 146, - /**/ - --- -ARTHUR: It is I, Arthur, son of Uther Pendragon, from the castle of Camelot. - King of all Britons, defeator of the Saxons, sovereign of all England! - [Pause] -SOLDIER: Get away! - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.147 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.147 (after 7.3.143) -Problem: Can't build on HP-UX. -Solution: Remove an unnecessary backslash. (John Marriott) -Files: src/Makefile - - -*** ../vim-7.3.146/src/Makefile 2011-03-22 18:10:34.000000000 +0100 ---- src/Makefile 2011-04-01 13:00:58.000000000 +0200 -*************** -*** 1565,1571 **** - - OBJ = $(OBJ_COMMON) \ - objects/main.o \ -! objects/memfile.o \ - - MEMFILE_TEST_OBJ = $(OBJ_COMMON) \ - objects/memfile_test.o ---- 1565,1571 ---- - - OBJ = $(OBJ_COMMON) \ - objects/main.o \ -! objects/memfile.o - - MEMFILE_TEST_OBJ = $(OBJ_COMMON) \ - objects/memfile_test.o -*** ../vim-7.3.146/src/version.c 2011-03-27 16:03:09.000000000 +0200 ---- src/version.c 2011-04-01 13:05:18.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 147, - /**/ - --- -DENNIS: You can't expect to wield supreme executive power just 'cause some - watery tart threw a sword at you! - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.148 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.148 -Problem: A syntax file with a huge number of items or clusters causes weird - behavior, a hang or a crash. (Yukihiro Nakadaira) -Solution: Check running out of IDs. (partly by Ben Schmidt) -Files: src/syntax.c - - -*** ../vim-7.3.147/src/syntax.c 2011-01-22 00:58:15.000000000 +0100 ---- src/syntax.c 2011-04-01 14:25:39.000000000 +0200 -*************** -*** 219,234 **** - - /* - * Syntax group IDs have different types: -! * 0 - 9999 normal syntax groups -! * 10000 - 14999 ALLBUT indicator (current_syn_inc_tag added) -! * 15000 - 19999 TOP indicator (current_syn_inc_tag added) -! * 20000 - 24999 CONTAINED indicator (current_syn_inc_tag added) -! * >= 25000 cluster IDs (subtract SYNID_CLUSTER for the cluster ID) -! */ -! #define SYNID_ALLBUT 10000 /* syntax group ID for contains=ALLBUT */ -! #define SYNID_TOP 15000 /* syntax group ID for contains=TOP */ -! #define SYNID_CONTAINED 20000 /* syntax group ID for contains=CONTAINED */ -! #define SYNID_CLUSTER 25000 /* first syntax group ID for clusters */ - - /* - * Annoying Hack(TM): ":syn include" needs this pointer to pass to ---- 219,238 ---- - - /* - * Syntax group IDs have different types: -! * 0 - 19999 normal syntax groups -! * 20000 - 20999 ALLBUT indicator (current_syn_inc_tag added) -! * 21000 - 21999 TOP indicator (current_syn_inc_tag added) -! * 22000 - 22999 CONTAINED indicator (current_syn_inc_tag added) -! * 23000 - 32767 cluster IDs (subtract SYNID_CLUSTER for the cluster ID) -! */ -! #define SYNID_ALLBUT 20000 /* syntax group ID for contains=ALLBUT */ -! #define SYNID_TOP 21000 /* syntax group ID for contains=TOP */ -! #define SYNID_CONTAINED 22000 /* syntax group ID for contains=CONTAINED */ -! #define SYNID_CLUSTER 23000 /* first syntax group ID for clusters */ -! -! #define MAX_SYNID SYNID_ALLBUT -! #define MAX_SYN_INC_TAG 999 /* maximum before the above overflow */ -! #define MAX_CLUSTER_ID (32767 - SYNID_CLUSTER) - - /* - * Annoying Hack(TM): ":syn include" needs this pointer to pass to -*************** -*** 3442,3447 **** ---- 3446,3454 ---- - /* free the stored states */ - syn_stack_free_all(block); - invalidate_current_state(); -+ -+ /* Reset the counter for ":syn include" */ -+ running_syn_inc_tag = 0; - } - - /* -*************** -*** 4661,4666 **** ---- 4668,4675 ---- - return; - } - sgl_id = syn_check_cluster(arg, (int)(group_name_end - arg)); -+ if (sgl_id == 0) -+ return; - /* separate_nextcmd() and expand_filename() depend on this */ - eap->arg = rest; - } -*************** -*** 4689,4694 **** ---- 4698,4708 ---- - * Save and restore the existing top-level grouplist id and ":syn - * include" tag around the actual inclusion. - */ -+ if (running_syn_inc_tag >= MAX_SYN_INC_TAG) -+ { -+ EMSG((char_u *)_("E847: Too many syntax includes")); -+ return; -+ } - prev_syn_inc_tag = current_syn_inc_tag; - current_syn_inc_tag = ++running_syn_inc_tag; - prev_toplvl_grp = curwin->w_s->b_syn_topgrp; -*************** -*** 4712,4718 **** - char_u *group_name_end; - int syn_id; - char_u *rest; -! char_u *keyword_copy; - char_u *p; - char_u *kw; - syn_opt_arg_T syn_opt_arg; ---- 4726,4732 ---- - char_u *group_name_end; - int syn_id; - char_u *rest; -! char_u *keyword_copy = NULL; - char_u *p; - char_u *kw; - syn_opt_arg_T syn_opt_arg; -*************** -*** 4724,4732 **** - if (rest != NULL) - { - syn_id = syn_check_group(arg, (int)(group_name_end - arg)); -! -! /* allocate a buffer, for removing the backslashes in the keyword */ -! keyword_copy = alloc((unsigned)STRLEN(rest) + 1); - if (keyword_copy != NULL) - { - syn_opt_arg.flags = 0; ---- 4738,4746 ---- - if (rest != NULL) - { - syn_id = syn_check_group(arg, (int)(group_name_end - arg)); -! if (syn_id != 0) -! /* allocate a buffer, for removing backslashes in the keyword */ -! keyword_copy = alloc((unsigned)STRLEN(rest) + 1); - if (keyword_copy != NULL) - { - syn_opt_arg.flags = 0; -*************** -*** 5133,5139 **** - (item == ITEM_SKIP) ? SPTYPE_SKIP : SPTYPE_END; - SYN_ITEMS(curwin->w_s)[idx].sp_flags |= syn_opt_arg.flags; - SYN_ITEMS(curwin->w_s)[idx].sp_syn.id = syn_id; -! SYN_ITEMS(curwin->w_s)[idx].sp_syn.inc_tag = current_syn_inc_tag; - SYN_ITEMS(curwin->w_s)[idx].sp_syn_match_id = - ppp->pp_matchgroup_id; - #ifdef FEAT_CONCEAL ---- 5147,5154 ---- - (item == ITEM_SKIP) ? SPTYPE_SKIP : SPTYPE_END; - SYN_ITEMS(curwin->w_s)[idx].sp_flags |= syn_opt_arg.flags; - SYN_ITEMS(curwin->w_s)[idx].sp_syn.id = syn_id; -! SYN_ITEMS(curwin->w_s)[idx].sp_syn.inc_tag = -! current_syn_inc_tag; - SYN_ITEMS(curwin->w_s)[idx].sp_syn_match_id = - ppp->pp_matchgroup_id; - #ifdef FEAT_CONCEAL -*************** -*** 5426,5431 **** ---- 5441,5454 ---- - curwin->w_s->b_syn_clusters.ga_growsize = 10; - } - -+ len = curwin->w_s->b_syn_clusters.ga_len; -+ if (len >= MAX_CLUSTER_ID) -+ { -+ EMSG((char_u *)_("E848: Too many syntax clusters")); -+ vim_free(name); -+ return 0; -+ } -+ - /* - * Make room for at least one other cluster entry. - */ -*************** -*** 5434,5440 **** - vim_free(name); - return 0; - } -- len = curwin->w_s->b_syn_clusters.ga_len; - - vim_memset(&(SYN_CLSTR(curwin->w_s)[len]), 0, sizeof(syn_cluster_T)); - SYN_CLSTR(curwin->w_s)[len].scl_name = name; ---- 5457,5462 ---- -*************** -*** 5476,5483 **** - - if (rest != NULL) - { -! scl_id = syn_check_cluster(arg, (int)(group_name_end - arg)) -! - SYNID_CLUSTER; - - for (;;) - { ---- 5498,5507 ---- - - if (rest != NULL) - { -! scl_id = syn_check_cluster(arg, (int)(group_name_end - arg)); -! if (scl_id == 0) -! return; -! scl_id -= SYNID_CLUSTER; - - for (;;) - { -*************** -*** 5516,5522 **** - if (got_clstr) - { - redraw_curbuf_later(SOME_VALID); -! syn_stack_free_all(curwin->w_s); /* Need to recompute all syntax. */ - } - } - ---- 5540,5546 ---- - if (got_clstr) - { - redraw_curbuf_later(SOME_VALID); -! syn_stack_free_all(curwin->w_s); /* Need to recompute all. */ - } - } - -*************** -*** 8972,8977 **** ---- 8996,9008 ---- - highlight_ga.ga_growsize = 10; - } - -+ if (highlight_ga.ga_len >= MAX_SYNID) -+ { -+ EMSG(_("E849: Too many syntax groups")); -+ vim_free(name); -+ return 0; -+ } -+ - /* - * Make room for at least one other syntax_highlight entry. - */ -*** ../vim-7.3.147/src/version.c 2011-04-01 13:05:37.000000000 +0200 ---- src/version.c 2011-04-01 14:26:44.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 148, - /**/ - --- -BLACK KNIGHT: None shall pass. -ARTHUR: I have no quarrel with you, brave Sir knight, but I must cross - this bridge. -BLACK KNIGHT: Then you shall die. - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.149 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.149 -Problem: The cursor disappears after the processing of the 'setDot' - netbeans command when vim runs in a terminal. -Solution: Show the cursor after a screen update. (Xavier de Gaye, 2011 -Files: src/netbeans.c - - -*** ../vim-7.3.148/src/netbeans.c 2011-01-04 18:11:39.000000000 +0100 ---- src/netbeans.c 2011-04-01 15:33:49.000000000 +0200 -*************** -*** 191,196 **** ---- 191,197 ---- - changed_window_setting(); - update_screen(CLEAR); - setcursor(); -+ cursor_on(); - out_flush(); - #ifdef FEAT_GUI - if (gui.in_use) -*************** -*** 2248,2253 **** ---- 2249,2255 ---- - update_topline(); /* scroll to show the line */ - update_screen(VALID); - setcursor(); -+ cursor_on(); - out_flush(); - #ifdef FEAT_GUI - if (gui.in_use) -*************** -*** 2642,2647 **** ---- 2644,2650 ---- - { - update_screen(NOT_VALID); - setcursor(); -+ cursor_on(); - out_flush(); - #ifdef FEAT_GUI - if (gui.in_use) -*************** -*** 3008,3013 **** ---- 3011,3017 ---- - changed_window_setting(); - update_screen(CLEAR); - setcursor(); -+ cursor_on(); - out_flush(); - #ifdef FEAT_GUI - if (gui.in_use) -*** ../vim-7.3.148/src/version.c 2011-04-01 14:44:54.000000000 +0200 ---- src/version.c 2011-04-01 15:33:21.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 149, - /**/ - --- -ARTHUR: You are indeed brave Sir knight, but the fight is mine. -BLACK KNIGHT: Had enough? -ARTHUR: You stupid bastard. You havn't got any arms left. - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.150 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.150 -Problem: readline() does not return the last line when the NL is missing. - (Hong Xu) -Solution: When at the end of the file Also check for a previous line. -Files: src/eval.c - - -*** ../vim-7.3.149/src/eval.c 2011-03-27 16:03:09.000000000 +0200 ---- src/eval.c 2011-04-01 16:06:04.000000000 +0200 -*************** -*** 14305,14313 **** - { - if (buf[filtd] == '\n' || readlen <= 0) - { -! /* Only when in binary mode add an empty list item when the -! * last line ends in a '\n'. */ -! if (!binary && readlen == 0 && filtd == 0) - break; - - /* Found end-of-line or end-of-file: add a text line to the ---- 14305,14313 ---- - { - if (buf[filtd] == '\n' || readlen <= 0) - { -! /* In binary mode add an empty list item when the last -! * non-empty line ends in a '\n'. */ -! if (!binary && readlen == 0 && filtd == 0 && prev == NULL) - break; - - /* Found end-of-line or end-of-file: add a text line to the -*************** -*** 14372,14396 **** - - if (tolist == 0) - { -! /* "buf" is full, need to move text to an allocated buffer */ -! if (prev == NULL) - { -! prev = vim_strnsave(buf, buflen); -! prevlen = buflen; -! } -! else -! { -! s = alloc((unsigned)(prevlen + buflen)); -! if (s != NULL) - { -! mch_memmove(s, prev, prevlen); -! mch_memmove(s + prevlen, buf, buflen); -! vim_free(prev); -! prev = s; -! prevlen += buflen; - } - } -- filtd = 0; - } - else - { ---- 14372,14399 ---- - - if (tolist == 0) - { -! if (buflen >= FREAD_SIZE / 2) - { -! /* "buf" is full, need to move text to an allocated buffer */ -! if (prev == NULL) -! { -! prev = vim_strnsave(buf, buflen); -! prevlen = buflen; -! } -! else - { -! s = alloc((unsigned)(prevlen + buflen)); -! if (s != NULL) -! { -! mch_memmove(s, prev, prevlen); -! mch_memmove(s + prevlen, buf, buflen); -! vim_free(prev); -! prev = s; -! prevlen += buflen; -! } - } -+ filtd = 0; - } - } - else - { -*** ../vim-7.3.149/src/version.c 2011-04-01 15:33:54.000000000 +0200 ---- src/version.c 2011-04-01 16:04:42.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 150, - /**/ - --- -ARTHUR: What are you going to do. bleed on me? - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.151 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.151 (after 7.3.074) -Problem: When "unnamedplus" is in 'clipboard' the selection is sometimes - also copied to the star register. -Solution: Avoid copy to the star register when undesired. (James Vega) -Files: src/ops.c - - -*** ../vim-7.3.150/src/ops.c 2010-12-08 14:23:08.000000000 +0100 ---- src/ops.c 2011-04-01 16:23:10.000000000 +0200 -*************** -*** 3148,3157 **** - /* Copy the text from register 0 to the clipboard register. */ - copy_yank_reg(&(y_regs[PLUS_REGISTER])); - -- /* No need to copy to * register upon 'unnamed' now - see below */ - clip_own_selection(&clip_plus); - clip_gen_set_selection(&clip_plus); -! if (!clip_isautosel() && !did_star) - { - copy_yank_reg(&(y_regs[STAR_REGISTER])); - clip_own_selection(&clip_star); ---- 3148,3156 ---- - /* Copy the text from register 0 to the clipboard register. */ - copy_yank_reg(&(y_regs[PLUS_REGISTER])); - - clip_own_selection(&clip_plus); - clip_gen_set_selection(&clip_plus); -! if (!clip_isautosel() && !did_star && curr == &(y_regs[PLUS_REGISTER])) - { - copy_yank_reg(&(y_regs[STAR_REGISTER])); - clip_own_selection(&clip_star); -*** ../vim-7.3.150/src/version.c 2011-04-01 16:07:41.000000000 +0200 ---- src/version.c 2011-04-01 16:25:40.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 151, - /**/ - --- -BLACK KNIGHT: I'm invincible! -ARTHUR: You're a looney. - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.152 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.152 -Problem: Xxd does not check for errors from library functions. -Solution: Add error checks. (Florian Zumbiehl) -Files: src/xxd/xxd.c - - -*** ../vim-7.3.151/src/xxd/xxd.c 2010-08-15 21:57:25.000000000 +0200 ---- src/xxd/xxd.c 2011-04-01 18:56:11.000000000 +0200 -*************** -*** 49,54 **** ---- 49,56 ---- - * option -b added: 01000101 binary output in normal format. - * 16.05.00 Added VAXC changes by Stephen P. Wall - * 16.05.00 Improved MMS file and merge for VMS by Zoltan Arpadffy -+ * 2011 March Better error handling by Florian Zumbiehl. -+ * 2011 April Formatting by Bram Moolenaar - * - * (c) 1990-1998 by Juergen Weigert (jnweiger@informatik.uni-erlangen.de) - * -*************** -*** 207,214 **** - - /* Let's collect some prototypes */ - /* CodeWarrior is really picky about missing prototypes */ -! static void exit_with_usage __P((char *)); -! static int huntype __P((FILE *, FILE *, FILE *, char *, int, int, long)); - static void xxdline __P((FILE *, char *, int)); - - #define TRY_SEEK /* attempt to use lseek, or skip forward by reading */ ---- 209,216 ---- - - /* Let's collect some prototypes */ - /* CodeWarrior is really picky about missing prototypes */ -! static void exit_with_usage __P((void)); -! static int huntype __P((FILE *, FILE *, FILE *, int, int, long)); - static void xxdline __P((FILE *, char *, int)); - - #define TRY_SEEK /* attempt to use lseek, or skip forward by reading */ -*************** -*** 223,231 **** - #define HEX_CINCLUDE 2 - #define HEX_BITS 3 /* not hex a dump, but bits: 01111001 */ - -! static void -! exit_with_usage(pname) -! char *pname; - { - fprintf(stderr, "Usage:\n %s [options] [infile [outfile]]\n", pname); - fprintf(stderr, " or\n %s -r [-s [-]offset] [-c cols] [-ps] [infile [outfile]]\n", pname); ---- 225,234 ---- - #define HEX_CINCLUDE 2 - #define HEX_BITS 3 /* not hex a dump, but bits: 01111001 */ - -! static char *pname; -! -! static void -! exit_with_usage() - { - fprintf(stderr, "Usage:\n %s [options] [infile [outfile]]\n", pname); - fprintf(stderr, " or\n %s -r [-s [-]offset] [-c cols] [-ps] [infile [outfile]]\n", pname); -*************** -*** 252,257 **** ---- 255,269 ---- - exit(1); - } - -+ static void -+ die(ret) -+ int ret; -+ { -+ fprintf(stderr, "%s: ", pname); -+ perror(NULL); -+ exit(ret); -+ } -+ - /* - * Max. cols binary characters are decoded from the input stream per line. - * Two adjacent garbage characters after evaluated data delimit valid data. -*************** -*** 259,270 **** - * - * The name is historic and came from 'undo type opt h'. - */ -! static int -! huntype(fpi, fpo, fperr, pname, cols, hextype, base_off) -! FILE *fpi, *fpo, *fperr; -! char *pname; -! int cols, hextype; -! long base_off; - { - int c, ign_garb = 1, n1 = -1, n2 = 0, n3, p = cols; - long have_off = 0, want_off = 0; ---- 271,281 ---- - * - * The name is historic and came from 'undo type opt h'. - */ -! static int -! huntype(fpi, fpo, fperr, cols, hextype, base_off) -! FILE *fpi, *fpo, *fperr; -! int cols, hextype; -! long base_off; - { - int c, ign_garb = 1, n1 = -1, n2 = 0, n3, p = cols; - long have_off = 0, want_off = 0; -*************** -*** 318,324 **** - - if (base_off + want_off != have_off) - { -! fflush(fpo); - #ifdef TRY_SEEK - c = fseek(fpo, base_off + want_off - have_off, 1); - if (c >= 0) ---- 329,336 ---- - - if (base_off + want_off != have_off) - { -! if (fflush(fpo) != 0) -! die(3); - #ifdef TRY_SEEK - c = fseek(fpo, base_off + want_off - have_off, 1); - if (c >= 0) -*************** -*** 330,341 **** - return 5; - } - for (; have_off < base_off + want_off; have_off++) -! putc(0, fpo); - } - - if (n2 >= 0 && n1 >= 0) - { -! putc((n2 << 4) | n1, fpo); - have_off++; - want_off++; - n1 = -1; ---- 342,355 ---- - return 5; - } - for (; have_off < base_off + want_off; have_off++) -! if (putc(0, fpo) == EOF) -! die(3); - } - - if (n2 >= 0 && n1 >= 0) - { -! if (putc((n2 << 4) | n1, fpo) == EOF) -! die(3); - have_off++; - want_off++; - n1 = -1; -*************** -*** 345,350 **** ---- 359,366 ---- - want_off = 0; - while ((c = getc(fpi)) != '\n' && c != EOF) - ; -+ if (c == EOF && ferror(fpi)) -+ die(2); - ign_garb = 1; - } - } -*************** -*** 355,369 **** - want_off = 0; - while ((c = getc(fpi)) != '\n' && c != EOF) - ; - ign_garb = 1; - } - } -! fflush(fpo); - #ifdef TRY_SEEK - fseek(fpo, 0L, 2); - #endif -! fclose(fpo); -! fclose(fpi); - return 0; - } - ---- 371,390 ---- - want_off = 0; - while ((c = getc(fpi)) != '\n' && c != EOF) - ; -+ if (c == EOF && ferror(fpi)) -+ die(2); - ign_garb = 1; - } - } -! if (fflush(fpo) != 0) -! die(3); - #ifdef TRY_SEEK - fseek(fpo, 0L, 2); - #endif -! if (fclose(fpo) != 0) -! die(3); -! if (fclose(fpi) != 0) -! die(2); - return 0; - } - -*************** -*** 379,389 **** - * - * If nz is always positive, lines are never suppressed. - */ -! static void - xxdline(fp, l, nz) -! FILE *fp; -! char *l; -! int nz; - { - static char z[LLEN+1]; - static int zero_seen = 0; ---- 400,410 ---- - * - * If nz is always positive, lines are never suppressed. - */ -! static void - xxdline(fp, l, nz) -! FILE *fp; -! char *l; -! int nz; - { - static char z[LLEN+1]; - static int zero_seen = 0; -*************** -*** 398,409 **** - if (nz < 0) - zero_seen--; - if (zero_seen == 2) -! fputs(z, fp); - if (zero_seen > 2) -! fputs("*\n", fp); - } - if (nz >= 0 || zero_seen > 0) -! fputs(l, fp); - if (nz) - zero_seen = 0; - } ---- 419,433 ---- - if (nz < 0) - zero_seen--; - if (zero_seen == 2) -! if (fputs(z, fp) == EOF) -! die(3); - if (zero_seen > 2) -! if (fputs("*\n", fp) == EOF) -! die(3); - } - if (nz >= 0 || zero_seen > 0) -! if (fputs(l, fp) == EOF) -! die(3); - if (nz) - zero_seen = 0; - } -*************** -*** 439,448 **** - 0070,0071,0372,0373,0374,0375,0376,0377 - }; - -! int - main(argc, argv) -! int argc; -! char *argv[]; - { - FILE *fp, *fpo; - int c, e, p = 0, relseek = 1, negseek = 0, revert = 0; ---- 463,472 ---- - 0070,0071,0372,0373,0374,0375,0376,0377 - }; - -! int - main(argc, argv) -! int argc; -! char *argv[]; - { - FILE *fp, *fpo; - int c, e, p = 0, relseek = 1, negseek = 0, revert = 0; -*************** -*** 452,458 **** - int grplen; /* total chars per octet group */ - long length = -1, n = 0, seekoff = 0; - char l[LLEN+1]; -! char *pname, *pp; - - #ifdef AMIGA - /* This program doesn't work when started from the Workbench */ ---- 476,482 ---- - int grplen; /* total chars per octet group */ - long length = -1, n = 0, seekoff = 0; - char l[LLEN+1]; -! char *pp; - - #ifdef AMIGA - /* This program doesn't work when started from the Workbench */ -*************** -*** 495,501 **** - else - { - if (!argv[2]) -! exit_with_usage(pname); - cols = (int)strtol(argv[2], NULL, 0); - argv++; - argc--; ---- 519,525 ---- - else - { - if (!argv[2]) -! exit_with_usage(); - cols = (int)strtol(argv[2], NULL, 0); - argv++; - argc--; -*************** -*** 508,514 **** - else - { - if (!argv[2]) -! exit_with_usage(pname); - octspergrp = (int)strtol(argv[2], NULL, 0); - argv++; - argc--; ---- 532,538 ---- - else - { - if (!argv[2]) -! exit_with_usage(); - octspergrp = (int)strtol(argv[2], NULL, 0); - argv++; - argc--; -*************** -*** 531,537 **** - else - { - if (!argv[2]) -! exit_with_usage(pname); - #ifdef TRY_SEEK - if (argv[2][0] == '+') - relseek++; ---- 555,561 ---- - else - { - if (!argv[2]) -! exit_with_usage(); - #ifdef TRY_SEEK - if (argv[2][0] == '+') - relseek++; -*************** -*** 550,556 **** - else - { - if (!argv[2]) -! exit_with_usage(pname); - length = strtol(argv[2], (char **)NULL, 0); - argv++; - argc--; ---- 574,580 ---- - else - { - if (!argv[2]) -! exit_with_usage(); - length = strtol(argv[2], (char **)NULL, 0); - argv++; - argc--; -*************** -*** 563,569 **** - break; - } - else if (pp[0] == '-' && pp[1]) /* unknown option */ -! exit_with_usage(pname); - else - break; /* not an option */ - ---- 587,593 ---- - break; - } - else if (pp[0] == '-' && pp[1]) /* unknown option */ -! exit_with_usage(); - else - break; /* not an option */ - -*************** -*** 602,608 **** - octspergrp = cols; - - if (argc > 3) -! exit_with_usage(pname); - - if (argc == 1 || (argv[1][0] == '-' && !argv[1][1])) - BIN_ASSIGN(fp = stdin, !revert); ---- 626,632 ---- - octspergrp = cols; - - if (argc > 3) -! exit_with_usage(); - - if (argc == 1 || (argv[1][0] == '-' && !argv[1][1])) - BIN_ASSIGN(fp = stdin, !revert); -*************** -*** 640,646 **** - fprintf(stderr, "%s: sorry, cannot revert this type of hexdump\n", pname); - return -1; - } -! return huntype(fp, fpo, stderr, pname, cols, hextype, - negseek ? -seekoff : seekoff); - } - ---- 664,670 ---- - fprintf(stderr, "%s: sorry, cannot revert this type of hexdump\n", pname); - return -1; - } -! return huntype(fp, fpo, stderr, cols, hextype, - negseek ? -seekoff : seekoff); - } - -*************** -*** 664,670 **** - long s = seekoff; - - while (s--) -! (void)getc(fp); - } - } - ---- 688,703 ---- - long s = seekoff; - - while (s--) -! if (getc(fp) == EOF) -! if (ferror(fp)) -! { -! die(2); -! } -! else -! { -! fprintf(stderr, "%s: sorry cannot seek.\n", pname); -! return 4; -! } - } - } - -*************** -*** 672,725 **** - { - if (fp != stdin) - { -! fprintf(fpo, "unsigned char %s", isdigit((int)argv[1][0]) ? "__" : ""); - for (e = 0; (c = argv[1][e]) != 0; e++) -! putc(isalnum(c) ? c : '_', fpo); -! fputs("[] = {\n", fpo); - } - - p = 0; - while ((length < 0 || p < length) && (c = getc(fp)) != EOF) - { -! fprintf(fpo, (hexx == hexxa) ? "%s0x%02x" : "%s0X%02X", -! (p % cols) ? ", " : ",\n "+2*!p, c); - p++; - } - - if (p) -! fputs("\n};\n"+3*(fp == stdin), fpo); - - if (fp != stdin) - { -! fprintf(fpo, "unsigned int %s", isdigit((int)argv[1][0]) ? "__" : ""); - for (e = 0; (c = argv[1][e]) != 0; e++) -! putc(isalnum(c) ? c : '_', fpo); -! fprintf(fpo, "_len = %d;\n", p); - } - -! fclose(fp); -! fclose(fpo); - return 0; - } - - if (hextype == HEX_POSTSCRIPT) - { - p = cols; - while ((length < 0 || n < length) && (e = getc(fp)) != EOF) - { -! putchar(hexx[(e >> 4) & 0xf]); -! putchar(hexx[(e ) & 0xf]); - n++; - if (!--p) - { -! putchar('\n'); - p = cols; - } - } - if (p < cols) -! putchar('\n'); -! fclose(fp); -! fclose(fpo); - return 0; - } - ---- 705,779 ---- - { - if (fp != stdin) - { -! if (fprintf(fpo, "unsigned char %s", isdigit((int)argv[1][0]) ? "__" : "") < 0) -! die(3); - for (e = 0; (c = argv[1][e]) != 0; e++) -! if (putc(isalnum(c) ? c : '_', fpo) == EOF) -! die(3); -! if (fputs("[] = {\n", fpo) == EOF) -! die(3); - } - - p = 0; -+ c = 0; - while ((length < 0 || p < length) && (c = getc(fp)) != EOF) - { -! if (fprintf(fpo, (hexx == hexxa) ? "%s0x%02x" : "%s0X%02X", -! (p % cols) ? ", " : ",\n "+2*!p, c) < 0) -! die(3); - p++; - } -+ if (c == EOF && ferror(fp)) -+ die(2); - - if (p) -! if (fputs("\n};\n" + 3 * (fp == stdin), fpo) == EOF) -! die(3); - - if (fp != stdin) - { -! if (fprintf(fpo, "unsigned int %s", isdigit((int)argv[1][0]) ? "__" : "") < 0) -! die(3); - for (e = 0; (c = argv[1][e]) != 0; e++) -! if (putc(isalnum(c) ? c : '_', fpo) == EOF) -! die(3); -! if (fprintf(fpo, "_len = %d;\n", p) < 0) -! die(3); - } - -! if (fclose(fp)) -! die(2); -! if (fclose(fpo)) -! die(3); - return 0; - } - - if (hextype == HEX_POSTSCRIPT) - { - p = cols; -+ e = 0; - while ((length < 0 || n < length) && (e = getc(fp)) != EOF) - { -! if (putc(hexx[(e >> 4) & 0xf], fpo) == EOF -! || putc(hexx[e & 0xf], fpo) == EOF) -! die(3); - n++; - if (!--p) - { -! if (putc('\n', fpo) == EOF) -! die(3); - p = cols; - } - } -+ if (e == EOF && ferror(fp)) -+ die(2); - if (p < cols) -! if (putc('\n', fpo) == EOF) -! die(3); -! if (fclose(fp)) -! die(2); -! if (fclose(fpo)) -! die(3); - return 0; - } - -*************** -*** 730,735 **** ---- 784,790 ---- - else /* hextype == HEX_BITS */ - grplen = 8 * octspergrp + 1; - -+ e = 0; - while ((length < 0 || n < length) && (e = getc(fp)) != EOF) - { - if (p == 0) -*************** -*** 771,776 **** ---- 826,833 ---- - p = 0; - } - } -+ if (e == EOF && ferror(fp)) -+ die(2); - if (p) - { - l[c = (11 + (grplen * cols - 1)/octspergrp + p)] = '\n'; l[++c] = '\0'; -*************** -*** 779,785 **** - else if (autoskip) - xxdline(fpo, l, -1); /* last chance to flush out suppressed lines */ - -! fclose(fp); -! fclose(fpo); - return 0; - } ---- 836,846 ---- - else if (autoskip) - xxdline(fpo, l, -1); /* last chance to flush out suppressed lines */ - -! if (fclose(fp)) -! die(2); -! if (fclose(fpo)) -! die(3); - return 0; - } -+ -+ /* vi:set ts=8 sw=4 sts=2 cino+={2 cino+=n-2 : */ -*** ../vim-7.3.151/src/version.c 2011-04-01 16:28:33.000000000 +0200 ---- src/version.c 2011-04-01 19:00:26.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 152, - /**/ - --- -Eye have a spelling checker, it came with my PC; -It plainly marks four my revue mistakes I cannot sea. -I've run this poem threw it, I'm sure your please to no, -It's letter perfect in it's weigh, my checker tolled me sew! - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.153 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.153 (after 7.3.152) -Problem: Compiler warning for ambiguous else, missing prototype. -Solution: Add braces. (Dominique Pelle) Add prototype for die(). -Files: src/xxd/xxd.c - - -*** ../vim-7.3.152/src/xxd/xxd.c 2011-04-01 19:14:35.000000000 +0200 ---- src/xxd/xxd.c 2011-04-02 14:42:54.000000000 +0200 -*************** -*** 210,215 **** ---- 210,216 ---- - /* Let's collect some prototypes */ - /* CodeWarrior is really picky about missing prototypes */ - static void exit_with_usage __P((void)); -+ static void die __P((int)); - static int huntype __P((FILE *, FILE *, FILE *, int, int, long)); - static void xxdline __P((FILE *, char *, int)); - -*************** -*** 689,694 **** ---- 690,696 ---- - - while (s--) - if (getc(fp) == EOF) -+ { - if (ferror(fp)) - { - die(2); -*************** -*** 698,703 **** ---- 700,706 ---- - fprintf(stderr, "%s: sorry cannot seek.\n", pname); - return 4; - } -+ } - } - } - -*** ../vim-7.3.152/src/version.c 2011-04-01 19:14:35.000000000 +0200 ---- src/version.c 2011-04-02 14:41:12.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 153, - /**/ - --- - | - -Ceci n'est pas une pipe. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.154 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.154 (after 7.3.148) -Problem: Can't compile with tiny features. (Tony Mechelynck) -Solution: Move #define outside of #ifdef. -Files: src/syntax.c - - -*** ../vim-7.3.153/src/syntax.c 2011-04-01 14:44:54.000000000 +0200 ---- src/syntax.c 2011-04-02 15:11:47.000000000 +0200 -*************** -*** 68,73 **** ---- 68,75 ---- - - #define HL_TABLE() ((struct hl_group *)((highlight_ga.ga_data))) - -+ #define MAX_HL_ID 20000 /* maximum value for a highlight ID. */ -+ - #ifdef FEAT_CMDL_COMPL - /* Flags to indicate an additional string for highlight name completion. */ - static int include_none = 0; /* when 1 include "None" */ -*************** -*** 225,236 **** - * 22000 - 22999 CONTAINED indicator (current_syn_inc_tag added) - * 23000 - 32767 cluster IDs (subtract SYNID_CLUSTER for the cluster ID) - */ -! #define SYNID_ALLBUT 20000 /* syntax group ID for contains=ALLBUT */ - #define SYNID_TOP 21000 /* syntax group ID for contains=TOP */ - #define SYNID_CONTAINED 22000 /* syntax group ID for contains=CONTAINED */ - #define SYNID_CLUSTER 23000 /* first syntax group ID for clusters */ - -- #define MAX_SYNID SYNID_ALLBUT - #define MAX_SYN_INC_TAG 999 /* maximum before the above overflow */ - #define MAX_CLUSTER_ID (32767 - SYNID_CLUSTER) - ---- 227,237 ---- - * 22000 - 22999 CONTAINED indicator (current_syn_inc_tag added) - * 23000 - 32767 cluster IDs (subtract SYNID_CLUSTER for the cluster ID) - */ -! #define SYNID_ALLBUT MAX_HL_ID /* syntax group ID for contains=ALLBUT */ - #define SYNID_TOP 21000 /* syntax group ID for contains=TOP */ - #define SYNID_CONTAINED 22000 /* syntax group ID for contains=CONTAINED */ - #define SYNID_CLUSTER 23000 /* first syntax group ID for clusters */ - - #define MAX_SYN_INC_TAG 999 /* maximum before the above overflow */ - #define MAX_CLUSTER_ID (32767 - SYNID_CLUSTER) - -*************** -*** 6462,6468 **** - - #endif /* FEAT_SYN_HL */ - -- - /************************************** - * Highlighting stuff * - **************************************/ ---- 6463,6468 ---- -*************** -*** 8996,9004 **** - highlight_ga.ga_growsize = 10; - } - -! if (highlight_ga.ga_len >= MAX_SYNID) - { -! EMSG(_("E849: Too many syntax groups")); - vim_free(name); - return 0; - } ---- 8996,9004 ---- - highlight_ga.ga_growsize = 10; - } - -! if (highlight_ga.ga_len >= MAX_HL_ID) - { -! EMSG(_("E849: Too many highlight and syntax groups")); - vim_free(name); - return 0; - } -*** ../vim-7.3.153/src/version.c 2011-04-02 14:44:50.000000000 +0200 ---- src/version.c 2011-04-02 14:52:33.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 154, - /**/ - --- -BEDEVERE: Why do you think she is a witch? -SECOND VILLAGER: She turned me into a newt. -BEDEVERE: A newt? -SECOND VILLAGER: (After looking at himself for some time) I got better. - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.155 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.155 -Problem: Crash when using map(), filter() and remove() on v:. (ZyX) - Also for extend(). (Yukihiro Nakadaira) -Solution: Mark v: as locked. Also correct locking error messages. -Files: src/eval.c - - -*** ../vim-7.3.154/src/eval.c 2011-04-01 16:07:41.000000000 +0200 ---- src/eval.c 2011-04-11 13:28:34.000000000 +0200 -*************** -*** 853,858 **** ---- 853,859 ---- - - init_var_dict(&globvardict, &globvars_var); - init_var_dict(&vimvardict, &vimvars_var); -+ vimvardict.dv_lock = VAR_FIXED; - hash_init(&compat_hashtab); - hash_init(&func_hashtab); - -*************** -*** 8545,8551 **** - if (argvars[0].v_type == VAR_LIST) - { - if ((l = argvars[0].vval.v_list) != NULL -! && !tv_check_lock(l->lv_lock, (char_u *)"add()") - && list_append_tv(l, &argvars[1]) == OK) - copy_tv(&argvars[0], rettv); - } ---- 8546,8552 ---- - if (argvars[0].v_type == VAR_LIST) - { - if ((l = argvars[0].vval.v_list) != NULL -! && !tv_check_lock(l->lv_lock, (char_u *)_("add() argument")) - && list_append_tv(l, &argvars[1]) == OK) - copy_tv(&argvars[0], rettv); - } -*************** -*** 9946,9951 **** ---- 9947,9954 ---- - typval_T *argvars; - typval_T *rettv; - { -+ char *arg_errmsg = N_("extend() argument"); -+ - if (argvars[0].v_type == VAR_LIST && argvars[1].v_type == VAR_LIST) - { - list_T *l1, *l2; -*************** -*** 9955,9961 **** - - l1 = argvars[0].vval.v_list; - l2 = argvars[1].vval.v_list; -! if (l1 != NULL && !tv_check_lock(l1->lv_lock, (char_u *)"extend()") - && l2 != NULL) - { - if (argvars[2].v_type != VAR_UNKNOWN) ---- 9958,9964 ---- - - l1 = argvars[0].vval.v_list; - l2 = argvars[1].vval.v_list; -! if (l1 != NULL && !tv_check_lock(l1->lv_lock, (char_u *)_(arg_errmsg)) - && l2 != NULL) - { - if (argvars[2].v_type != VAR_UNKNOWN) -*************** -*** 9994,10000 **** - - d1 = argvars[0].vval.v_dict; - d2 = argvars[1].vval.v_dict; -! if (d1 != NULL && !tv_check_lock(d1->dv_lock, (char_u *)"extend()") - && d2 != NULL) - { - /* Check the third argument. */ ---- 9997,10003 ---- - - d1 = argvars[0].vval.v_dict; - d2 = argvars[1].vval.v_dict; -! if (d1 != NULL && !tv_check_lock(d1->dv_lock, (char_u *)_(arg_errmsg)) - && d2 != NULL) - { - /* Check the third argument. */ -*************** -*** 10236,10255 **** - typval_T save_key; - int rem; - int todo; -! char_u *ermsg = map ? (char_u *)"map()" : (char_u *)"filter()"; - int save_did_emsg; - int idx = 0; - - if (argvars[0].v_type == VAR_LIST) - { - if ((l = argvars[0].vval.v_list) == NULL -! || (map && tv_check_lock(l->lv_lock, ermsg))) - return; - } - else if (argvars[0].v_type == VAR_DICT) - { - if ((d = argvars[0].vval.v_dict) == NULL -! || (map && tv_check_lock(d->dv_lock, ermsg))) - return; - } - else ---- 10239,10260 ---- - typval_T save_key; - int rem; - int todo; -! char_u *ermsg = (char_u *)(map ? "map()" : "filter()"); -! char *arg_errmsg = (map ? N_("map() argument") -! : N_("filter() argument")); - int save_did_emsg; - int idx = 0; - - if (argvars[0].v_type == VAR_LIST) - { - if ((l = argvars[0].vval.v_list) == NULL -! || tv_check_lock(l->lv_lock, (char_u *)_(arg_errmsg))) - return; - } - else if (argvars[0].v_type == VAR_DICT) - { - if ((d = argvars[0].vval.v_dict) == NULL -! || tv_check_lock(d->dv_lock, (char_u *)_(arg_errmsg))) - return; - } - else -*************** -*** 10286,10292 **** - { - --todo; - di = HI2DI(hi); -! if (tv_check_lock(di->di_tv.v_lock, ermsg)) - break; - vimvars[VV_KEY].vv_str = vim_strsave(di->di_key); - if (filter_map_one(&di->di_tv, expr, map, &rem) == FAIL ---- 10291,10298 ---- - { - --todo; - di = HI2DI(hi); -! if (tv_check_lock(di->di_tv.v_lock, -! (char_u *)_(arg_errmsg))) - break; - vimvars[VV_KEY].vv_str = vim_strsave(di->di_key); - if (filter_map_one(&di->di_tv, expr, map, &rem) == FAIL -*************** -*** 10305,10311 **** - - for (li = l->lv_first; li != NULL; li = nli) - { -! if (tv_check_lock(li->li_tv.v_lock, ermsg)) - break; - nli = li->li_next; - vimvars[VV_KEY].vv_nr = idx; ---- 10311,10317 ---- - - for (li = l->lv_first; li != NULL; li = nli) - { -! if (tv_check_lock(li->li_tv.v_lock, (char_u *)_(arg_errmsg))) - break; - nli = li->li_next; - vimvars[VV_KEY].vv_nr = idx; -*************** -*** 12910,12916 **** - if (argvars[0].v_type != VAR_LIST) - EMSG2(_(e_listarg), "insert()"); - else if ((l = argvars[0].vval.v_list) != NULL -! && !tv_check_lock(l->lv_lock, (char_u *)"insert()")) - { - if (argvars[2].v_type != VAR_UNKNOWN) - before = get_tv_number_chk(&argvars[2], &error); ---- 12916,12922 ---- - if (argvars[0].v_type != VAR_LIST) - EMSG2(_(e_listarg), "insert()"); - else if ((l = argvars[0].vval.v_list) != NULL -! && !tv_check_lock(l->lv_lock, (char_u *)_("insert() argument"))) - { - if (argvars[2].v_type != VAR_UNKNOWN) - before = get_tv_number_chk(&argvars[2], &error); -*************** -*** 14775,14787 **** - char_u *key; - dict_T *d; - dictitem_T *di; - - if (argvars[0].v_type == VAR_DICT) - { - if (argvars[2].v_type != VAR_UNKNOWN) - EMSG2(_(e_toomanyarg), "remove()"); - else if ((d = argvars[0].vval.v_dict) != NULL -! && !tv_check_lock(d->dv_lock, (char_u *)"remove() argument")) - { - key = get_tv_string_chk(&argvars[1]); - if (key != NULL) ---- 14781,14794 ---- - char_u *key; - dict_T *d; - dictitem_T *di; -+ char *arg_errmsg = N_("remove() argument"); - - if (argvars[0].v_type == VAR_DICT) - { - if (argvars[2].v_type != VAR_UNKNOWN) - EMSG2(_(e_toomanyarg), "remove()"); - else if ((d = argvars[0].vval.v_dict) != NULL -! && !tv_check_lock(d->dv_lock, (char_u *)_(arg_errmsg))) - { - key = get_tv_string_chk(&argvars[1]); - if (key != NULL) -*************** -*** 14801,14807 **** - else if (argvars[0].v_type != VAR_LIST) - EMSG2(_(e_listdictarg), "remove()"); - else if ((l = argvars[0].vval.v_list) != NULL -! && !tv_check_lock(l->lv_lock, (char_u *)"remove() argument")) - { - int error = FALSE; - ---- 14808,14814 ---- - else if (argvars[0].v_type != VAR_LIST) - EMSG2(_(e_listdictarg), "remove()"); - else if ((l = argvars[0].vval.v_list) != NULL -! && !tv_check_lock(l->lv_lock, (char_u *)_(arg_errmsg))) - { - int error = FALSE; - -*************** -*** 15135,15141 **** - if (argvars[0].v_type != VAR_LIST) - EMSG2(_(e_listarg), "reverse()"); - else if ((l = argvars[0].vval.v_list) != NULL -! && !tv_check_lock(l->lv_lock, (char_u *)"reverse()")) - { - li = l->lv_last; - l->lv_first = l->lv_last = NULL; ---- 15142,15148 ---- - if (argvars[0].v_type != VAR_LIST) - EMSG2(_(e_listarg), "reverse()"); - else if ((l = argvars[0].vval.v_list) != NULL -! && !tv_check_lock(l->lv_lock, (char_u *)_("reverse() argument"))) - { - li = l->lv_last; - l->lv_first = l->lv_last = NULL; -*************** -*** 16432,16438 **** - else - { - l = argvars[0].vval.v_list; -! if (l == NULL || tv_check_lock(l->lv_lock, (char_u *)"sort()")) - return; - rettv->vval.v_list = l; - rettv->v_type = VAR_LIST; ---- 16439,16446 ---- - else - { - l = argvars[0].vval.v_list; -! if (l == NULL || tv_check_lock(l->lv_lock, -! (char_u *)_("sort() argument"))) - return; - rettv->vval.v_list = l; - rettv->v_type = VAR_LIST; -*** ../vim-7.3.154/src/version.c 2011-04-02 15:12:45.000000000 +0200 ---- src/version.c 2011-04-11 13:13:38.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 155, - /**/ - --- -I used to be indecisive, now I'm not sure. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.156 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.156 -Problem: Tty names possibly left unterminated. -Solution: Use vim_strncpy() instead of strncpy(). -Files: src/pty.c - - -*** ../vim-7.3.155/src/pty.c 2010-08-15 21:57:28.000000000 +0200 ---- src/pty.c 2011-04-11 14:02:49.000000000 +0200 -*************** -*** 209,216 **** - #ifdef _SEQUENT_ - fvhangup(s); - #endif -! strncpy(PtyName, m, sizeof(PtyName)); -! strncpy(TtyName, s, sizeof(TtyName)); - initmaster(f); - *ttyn = TtyName; - return f; ---- 209,216 ---- - #ifdef _SEQUENT_ - fvhangup(s); - #endif -! vim_strncpy((char_u *)PtyName, (char_u *)m, sizeof(PtyName) - 1); -! vim_strncpy((char_u *)TtyName, (char_u *)s, sizeof(TtyName) - 1); - initmaster(f); - *ttyn = TtyName; - return f; -*************** -*** 301,307 **** - return -1; - } - signal(SIGCHLD, sigcld); -! strncpy(TtyName, m, sizeof(TtyName)); - initmaster(f); - *ttyn = TtyName; - return f; ---- 301,307 ---- - return -1; - } - signal(SIGCHLD, sigcld); -! vim_strncpy((char_u *)TtyName, (char_u *)m, sizeof(TtyName) - 1); - initmaster(f); - *ttyn = TtyName; - return f; -*************** -*** 326,332 **** - /* a dumb looking loop replaced by mycrofts code: */ - if ((f = open("/dev/ptc", O_RDWR | O_NOCTTY | O_EXTRA)) < 0) - return -1; -! strncpy(TtyName, ttyname(f), sizeof(TtyName)); - if (geteuid() != ROOT_UID && mch_access(TtyName, R_OK | W_OK)) - { - close(f); ---- 326,332 ---- - /* a dumb looking loop replaced by mycrofts code: */ - if ((f = open("/dev/ptc", O_RDWR | O_NOCTTY | O_EXTRA)) < 0) - return -1; -! vim_strncpy((char_u *)TtyName, (char_u *)ttyname(f), sizeof(TtyName) - 1); - if (geteuid() != ROOT_UID && mch_access(TtyName, R_OK | W_OK)) - { - close(f); -*** ../vim-7.3.155/src/version.c 2011-04-11 13:46:07.000000000 +0200 ---- src/version.c 2011-04-11 14:23:38.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 156, - /**/ - --- -I think that you'll agree that engineers are very effective in their social -interactions. It's the "normal" people who are nuts. - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.157 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.157 -Problem: Superfluous assignment. -Solution: Remove assignment. -Files: src/misc1.c - - -*** ../vim-7.3.156/src/misc1.c 2011-03-22 13:07:19.000000000 +0100 ---- src/misc1.c 2011-04-11 14:11:17.000000000 +0200 -*************** -*** 6773,6780 **** - { - curwin->w_cursor.lnum = our_paren_pos.lnum; - curwin->w_cursor.col = col; -! if ((trypos = find_match_paren(ind_maxparen, -! ind_maxcomment)) != NULL) - amount += ind_unclosed2; - else - amount += ind_unclosed; ---- 6775,6781 ---- - { - curwin->w_cursor.lnum = our_paren_pos.lnum; - curwin->w_cursor.col = col; -! if (find_match_paren(ind_maxparen, ind_maxcomment) != NULL) - amount += ind_unclosed2; - else - amount += ind_unclosed; -*** ../vim-7.3.156/src/version.c 2011-04-11 14:24:33.000000000 +0200 ---- src/version.c 2011-04-11 14:25:36.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 157, - /**/ - --- -A radioactive cat has eighteen half-lives. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.158 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.158 -Problem: Might use uninitialized memory in C indenting. -Solution: Init arrays to empty. -Files: src/misc1.c - - -*** ../vim-7.3.157/src/misc1.c 2011-04-11 14:26:15.000000000 +0200 ---- src/misc1.c 2011-04-11 14:11:17.000000000 +0200 -*************** -*** 6433,6438 **** ---- 6433,6440 ---- - /* find how indented the line beginning the comment is */ - getvcol(curwin, trypos, &col, NULL, NULL); - amount = col; -+ *lead_start = NUL; -+ *lead_middle = NUL; - - p = curbuf->b_p_com; - while (*p != NUL) -*** ../vim-7.3.157/src/version.c 2011-04-11 14:26:15.000000000 +0200 ---- src/version.c 2011-04-11 14:27:05.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 158, - /**/ - --- -It's totally unfair to suggest - as many have - that engineers are socially -inept. Engineers simply have different objectives when it comes to social -interaction. - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.159 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.159 -Problem: Using uninitialized pointer when out of memory. -Solution: Check for NULL return value. -Files: src/mbyte.c - - -*** ../vim-7.3.158/src/mbyte.c 2010-10-27 13:37:39.000000000 +0200 ---- src/mbyte.c 2011-04-11 14:17:39.000000000 +0200 -*************** -*** 4129,4135 **** - done = to - (char *)result; - } - -! if (resultlenp != NULL) - *resultlenp = (int)(to - (char *)result); - return result; - } ---- 4129,4135 ---- - done = to - (char *)result; - } - -! if (resultlenp != NULL && result != NULL) - *resultlenp = (int)(to - (char *)result); - return result; - } -*** ../vim-7.3.158/src/version.c 2011-04-11 14:27:34.000000000 +0200 ---- src/version.c 2011-04-11 14:28:08.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 159, - /**/ - --- -I learned the customs and mannerisms of engineers by observing them, much the -way Jane Goodall learned about the great apes, but without the hassle of -grooming. - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.160 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.160 -Problem: Unsafe string copying. -Solution: Use vim_strncpy() instead of strcpy(). Use vim_strcat() instead - of strcat(). -Files: src/buffer.c, src/ex_docmd.c, src/hardcopy.c, src/menu.c, - src/misc1.c, src/misc2.c, src/proto/misc2.pro, src/netbeans.c, - src/os_unix.c, src/spell.c, src/syntax.c, src/tag.c - -*** ../vim-7.3.159/src/buffer.c 2011-02-15 14:24:42.000000000 +0100 ---- src/buffer.c 2011-04-11 16:08:38.000000000 +0200 -*************** -*** 3176,3182 **** - /* format: "fname + (path) (1 of 2) - VIM" */ - - if (curbuf->b_fname == NULL) -! STRCPY(buf, _("[No Name]")); - else - { - p = transstr(gettail(curbuf->b_fname)); ---- 3176,3182 ---- - /* format: "fname + (path) (1 of 2) - VIM" */ - - if (curbuf->b_fname == NULL) -! vim_strncpy(buf, (char_u *)_("[No Name]"), IOSIZE - 100); - else - { - p = transstr(gettail(curbuf->b_fname)); -*************** -*** 3232,3238 **** - if (serverName != NULL) - { - STRCAT(buf, " - "); -! STRCAT(buf, serverName); - } - else - #endif ---- 3232,3238 ---- - if (serverName != NULL) - { - STRCAT(buf, " - "); -! vim_strcat(buf, serverName, IOSIZE); - } - else - #endif -*** ../vim-7.3.159/src/ex_docmd.c 2011-03-03 15:54:45.000000000 +0100 ---- src/ex_docmd.c 2011-04-11 15:43:48.000000000 +0200 -*************** -*** 5096,5102 **** - char_u buff[IOSIZE]; - - if (n == 1) -! STRCPY(buff, _("1 more file to edit. Quit anyway?")); - else - vim_snprintf((char *)buff, IOSIZE, - _("%d more files to edit. Quit anyway?"), n); ---- 5096,5104 ---- - char_u buff[IOSIZE]; - - if (n == 1) -! vim_strncpy(buff, -! (char_u *)_("1 more file to edit. Quit anyway?"), -! IOSIZE - 1); - else - vim_snprintf((char *)buff, IOSIZE, - _("%d more files to edit. Quit anyway?"), n); -*** ../vim-7.3.159/src/hardcopy.c 2010-08-15 21:57:25.000000000 +0200 ---- src/hardcopy.c 2011-04-11 15:30:09.000000000 +0200 -*************** -*** 1761,1772 **** - { - char_u buffer[MAXPATHL + 1]; - -! STRCPY(resource->name, name); - /* Look for named resource file in runtimepath */ - STRCPY(buffer, "print"); - add_pathsep(buffer); -! STRCAT(buffer, name); -! STRCAT(buffer, ".ps"); - resource->filename[0] = NUL; - return (do_in_runtimepath(buffer, FALSE, prt_resource_name, - resource->filename) ---- 1761,1772 ---- - { - char_u buffer[MAXPATHL + 1]; - -! vim_strncpy(resource->name, (char_u *)name, 63); - /* Look for named resource file in runtimepath */ - STRCPY(buffer, "print"); - add_pathsep(buffer); -! vim_strcat(buffer, (char_u *)name, MAXPATHL); -! vim_strcat(buffer, (char_u *)".ps", MAXPATHL); - resource->filename[0] = NUL; - return (do_in_runtimepath(buffer, FALSE, prt_resource_name, - resource->filename) -*** ../vim-7.3.159/src/menu.c 2011-01-04 17:49:25.000000000 +0100 ---- src/menu.c 2011-04-11 15:17:21.000000000 +0200 -*************** -*** 1394,1400 **** - int idx; - { - static vimmenu_T *menu = NULL; -! static char_u tbuffer[256]; /*hack*/ - char_u *str; - #ifdef FEAT_MULTI_LANG - static int should_advance = FALSE; ---- 1394,1401 ---- - int idx; - { - static vimmenu_T *menu = NULL; -! #define TBUFFER_LEN 256 -! static char_u tbuffer[TBUFFER_LEN]; /*hack*/ - char_u *str; - #ifdef FEAT_MULTI_LANG - static int should_advance = FALSE; -*************** -*** 1428,1438 **** - { - #ifdef FEAT_MULTI_LANG - if (should_advance) -! STRCPY(tbuffer, menu->en_dname); - else - { - #endif -! STRCPY(tbuffer, menu->dname); - #ifdef FEAT_MULTI_LANG - if (menu->en_dname == NULL) - should_advance = TRUE; ---- 1429,1439 ---- - { - #ifdef FEAT_MULTI_LANG - if (should_advance) -! vim_strncpy(tbuffer, menu->en_dname, TBUFFER_LEN - 2); - else - { - #endif -! vim_strncpy(tbuffer, menu->dname, TBUFFER_LEN - 2); - #ifdef FEAT_MULTI_LANG - if (menu->en_dname == NULL) - should_advance = TRUE; -*** ../vim-7.3.159/src/misc1.c 2011-04-11 14:27:34.000000000 +0200 ---- src/misc1.c 2011-04-11 16:03:22.000000000 +0200 -*************** -*** 3332,3350 **** - if (pn == 1) - { - if (n > 0) -! STRCPY(msg_buf, _("1 more line")); - else -! STRCPY(msg_buf, _("1 line less")); - } - else - { - if (n > 0) -! sprintf((char *)msg_buf, _("%ld more lines"), pn); - else -! sprintf((char *)msg_buf, _("%ld fewer lines"), pn); - } - if (got_int) -! STRCAT(msg_buf, _(" (Interrupted)")); - if (msg(msg_buf)) - { - set_keep_msg(msg_buf, 0); ---- 3332,3354 ---- - if (pn == 1) - { - if (n > 0) -! vim_strncpy(msg_buf, (char_u *)_("1 more line"), -! MSG_BUF_LEN - 1); - else -! vim_strncpy(msg_buf, (char_u *)_("1 line less"), -! MSG_BUF_LEN - 1); - } - else - { - if (n > 0) -! vim_snprintf((char *)msg_buf, MSG_BUF_LEN, -! _("%ld more lines"), pn); - else -! vim_snprintf((char *)msg_buf, MSG_BUF_LEN, -! _("%ld fewer lines"), pn); - } - if (got_int) -! vim_strcat(msg_buf, (char_u *)_(" (Interrupted)"), MSG_BUF_LEN); - if (msg(msg_buf)) - { - set_keep_msg(msg_buf, 0); -*** ../vim-7.3.159/src/misc2.c 2010-12-08 13:11:15.000000000 +0100 ---- src/misc2.c 2011-04-11 15:30:20.000000000 +0200 -*************** -*** 1647,1652 **** ---- 1647,1674 ---- - } - - /* -+ * Like strcat(), but make sure the result fits in "tosize" bytes and is -+ * always NUL terminated. -+ */ -+ void -+ vim_strcat(to, from, tosize) -+ char_u *to; -+ char_u *from; -+ size_t tosize; -+ { -+ size_t tolen = STRLEN(to); -+ size_t fromlen = STRLEN(from); -+ -+ if (tolen + fromlen + 1 > tosize) -+ { -+ mch_memmove(to + tolen, from, tosize - tolen - 1); -+ to[tosize - 1] = NUL; -+ } -+ else -+ STRCPY(to + tolen, from); -+ } -+ -+ /* - * Isolate one part of a string option where parts are separated with - * "sep_chars". - * The part is copied into "buf[maxlen]". -*** ../vim-7.3.159/src/proto/misc2.pro 2010-08-15 21:57:28.000000000 +0200 ---- src/proto/misc2.pro 2011-04-11 15:29:55.000000000 +0200 -*************** -*** 40,45 **** ---- 40,46 ---- - void copy_chars __ARGS((char_u *ptr, size_t count, int c)); - void del_trailing_spaces __ARGS((char_u *ptr)); - void vim_strncpy __ARGS((char_u *to, char_u *from, size_t len)); -+ void vim_strcat __ARGS((char_u *to, char_u *from, size_t tosize)); - int copy_option_part __ARGS((char_u **option, char_u *buf, int maxlen, char *sep_chars)); - void vim_free __ARGS((void *x)); - int vim_stricmp __ARGS((char *s1, char *s2)); -*** ../vim-7.3.159/src/netbeans.c 2011-04-01 15:33:54.000000000 +0200 ---- src/netbeans.c 2011-04-11 16:02:51.000000000 +0200 -*************** -*** 3914,3927 **** - } - else - { -! char_u ebuf[BUFSIZ]; - -! STRCPY(ebuf, (char_u *)_("E505: ")); -! STRCAT(ebuf, IObuff); -! STRCAT(ebuf, (char_u *)_("is read-only (add ! to override)")); -! STRCPY(IObuff, ebuf); -! nbdebug((" %s\n", ebuf )); -! emsg(IObuff); - } - } - ---- 3914,3925 ---- - } - else - { -! char_u msgbuf[IOSIZE]; - -! vim_snprintf((char *)msgbuf, IOSIZE, -! _("E505: %s is read-only (add ! to override)"), IObuff); -! nbdebug((" %s\n", msgbuf)); -! emsg(msgbuf); - } - } - -*** ../vim-7.3.159/src/os_unix.c 2011-02-15 17:39:14.000000000 +0100 ---- src/os_unix.c 2011-04-11 16:39:11.000000000 +0200 -*************** -*** 5725,5730 **** ---- 5725,5731 ---- - if (shell_style == STYLE_PRINT && !did_find_nul) - { - /* If there is a NUL, set did_find_nul, else set check_spaces */ -+ buffer[len] = NUL; - if (len && (int)STRLEN(buffer) < (int)len - 1) - did_find_nul = TRUE; - else -*************** -*** 6594,6600 **** - xterm_hints.x = 2; - return TRUE; - } -! if (mouse_code == NULL) - { - xterm_trace = 0; - return FALSE; ---- 6595,6601 ---- - xterm_hints.x = 2; - return TRUE; - } -! if (mouse_code == NULL || STRLEN(mouse_code) > 45) - { - xterm_trace = 0; - return FALSE; -*** ../vim-7.3.159/src/spell.c 2011-02-01 13:59:44.000000000 +0100 ---- src/spell.c 2011-04-11 15:50:40.000000000 +0200 -*************** -*** 6957,6963 **** - if (ae->ae_add == NULL) - *newword = NUL; - else -! STRCPY(newword, ae->ae_add); - p = word; - if (ae->ae_chop != NULL) - { ---- 6957,6963 ---- - if (ae->ae_add == NULL) - *newword = NUL; - else -! vim_strncpy(newword, ae->ae_add, MAXWLEN - 1); - p = word; - if (ae->ae_chop != NULL) - { -*************** -*** 6978,6984 **** - else - { - /* suffix: chop/add at the end of the word */ -! STRCPY(newword, word); - if (ae->ae_chop != NULL) - { - /* Remove chop string. */ ---- 6978,6984 ---- - else - { - /* suffix: chop/add at the end of the word */ -! vim_strncpy(newword, word, MAXWLEN - 1); - if (ae->ae_chop != NULL) - { - /* Remove chop string. */ -*************** -*** 8654,8660 **** - * Write the .sug file. - * Make the file name by changing ".spl" to ".sug". - */ -! STRCPY(fname, wfname); - len = (int)STRLEN(fname); - fname[len - 2] = 'u'; - fname[len - 1] = 'g'; ---- 8654,8660 ---- - * Write the .sug file. - * Make the file name by changing ".spl" to ".sug". - */ -! vim_strncpy(fname, wfname, MAXPATHL - 1); - len = (int)STRLEN(fname); - fname[len - 2] = 'u'; - fname[len - 1] = 'g'; -*************** -*** 10261,10267 **** - - /* The suggested word may replace only part of the bad word, add - * the not replaced part. */ -! STRCPY(wcopy, stp->st_word); - if (sug.su_badlen > stp->st_orglen) - vim_strncpy(wcopy + stp->st_wordlen, - sug.su_badptr + stp->st_orglen, ---- 10261,10267 ---- - - /* The suggested word may replace only part of the bad word, add - * the not replaced part. */ -! vim_strncpy(wcopy, stp->st_word, MAXWLEN); - if (sug.su_badlen > stp->st_orglen) - vim_strncpy(wcopy + stp->st_wordlen, - sug.su_badptr + stp->st_orglen, -*************** -*** 13162,13168 **** - pbad = badsound2; - } - -! if (lendiff > 0) - { - /* Add part of the bad word to the good word, so that we soundfold - * what replaces the bad word. */ ---- 13162,13168 ---- - pbad = badsound2; - } - -! if (lendiff > 0 && stp->st_wordlen + lendiff < MAXWLEN) - { - /* Add part of the bad word to the good word, so that we soundfold - * what replaces the bad word. */ -*************** -*** 13875,13881 **** - for (i = gap->ga_len - 1; i >= 0; --i) - { - /* Need to append what follows to check for "the the". */ -! STRCPY(longword, stp[i].st_word); - len = stp[i].st_wordlen; - vim_strncpy(longword + len, su->su_badptr + stp[i].st_orglen, - MAXWLEN - len); ---- 13875,13881 ---- - for (i = gap->ga_len - 1; i >= 0; --i) - { - /* Need to append what follows to check for "the the". */ -! vim_strncpy(longword, stp[i].st_word, MAXWLEN); - len = stp[i].st_wordlen; - vim_strncpy(longword + len, su->su_badptr + stp[i].st_orglen, - MAXWLEN - len); -*************** -*** 14221,14227 **** - *t = NUL; - } - else -! STRCPY(word, s); - - smp = (salitem_T *)slang->sl_sal.ga_data; - ---- 14221,14227 ---- - *t = NUL; - } - else -! vim_strncpy(word, s, MAXWLEN - 1); - - smp = (salitem_T *)slang->sl_sal.ga_data; - -*** ../vim-7.3.159/src/syntax.c 2011-04-02 15:12:45.000000000 +0200 ---- src/syntax.c 2011-04-11 15:44:30.000000000 +0200 -*************** -*** 8576,8583 **** - if (iarg & hl_attr_table[i]) - { - if (buf[0] != NUL) -! STRCAT(buf, ","); -! STRCAT(buf, hl_name_table[i]); - iarg &= ~hl_attr_table[i]; /* don't want "inverse" */ - } - } ---- 8576,8583 ---- - if (iarg & hl_attr_table[i]) - { - if (buf[0] != NUL) -! vim_strcat(buf, (char_u *)",", 100); -! vim_strcat(buf, (char_u *)hl_name_table[i], 100); - iarg &= ~hl_attr_table[i]; /* don't want "inverse" */ - } - } -*** ../vim-7.3.159/src/tag.c 2011-02-25 15:13:43.000000000 +0100 ---- src/tag.c 2011-04-11 15:34:59.000000000 +0200 -*************** -*** 806,812 **** - p = tag_full_fname(&tagp); - if (p == NULL) - continue; -! STRCPY(fname, p); - vim_free(p); - - /* ---- 806,812 ---- - p = tag_full_fname(&tagp); - if (p == NULL) - continue; -! vim_strncpy(fname, p, MAXPATHL); - vim_free(p); - - /* -*** ../vim-7.3.159/src/version.c 2011-04-11 14:29:13.000000000 +0200 ---- src/version.c 2011-04-11 16:50:53.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 160, - /**/ - --- -If someone questions your market projections, simply point out that your -target market is "People who are nuts" and "People who will buy any damn -thing". Nobody is going to tell you there aren't enough of those people -to go around. - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.161 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.161 -Problem: Items on the stack may be too big. -Solution: Make items static or allocate them. -Files: src/eval.c, src/ex_cmds.c, src/ex_cmds2.c, src/ex_docmd.c, - src/fileio.c, src/hardcopy.c, src/quickfix.c, src/main.c, - src/netbeans.c, src/spell.c, src/tag.c, src/vim.h, src/xxd/xxd.c - - -*** ../vim-7.3.160/src/eval.c 2011-04-11 13:46:07.000000000 +0200 ---- src/eval.c 2011-04-11 21:05:50.000000000 +0200 -*************** -*** 11100,11117 **** - typval_T *argvars UNUSED; - typval_T *rettv; - { -! char_u cwd[MAXPATHL]; - - rettv->v_type = VAR_STRING; -! if (mch_dirname(cwd, MAXPATHL) == FAIL) -! rettv->vval.v_string = NULL; -! else - { -! rettv->vval.v_string = vim_strsave(cwd); - #ifdef BACKSLASH_IN_FILENAME -! if (rettv->vval.v_string != NULL) -! slash_adjust(rettv->vval.v_string); - #endif - } - } - ---- 11100,11121 ---- - typval_T *argvars UNUSED; - typval_T *rettv; - { -! char_u *cwd; - - rettv->v_type = VAR_STRING; -! rettv->vval.v_string = NULL; -! cwd = alloc(MAXPATHL); -! if (cwd != NULL) - { -! if (mch_dirname(cwd, MAXPATHL) != FAIL) -! { -! rettv->vval.v_string = vim_strsave(cwd); - #ifdef BACKSLASH_IN_FILENAME -! if (rettv->vval.v_string != NULL) -! slash_adjust(rettv->vval.v_string); - #endif -+ } -+ vim_free(cwd); - } - } - -*************** -*** 14938,14943 **** ---- 14942,14950 ---- - typval_T *rettv; - { - char_u *p; -+ #ifdef HAVE_READLINK -+ char_u *buf = NULL; -+ #endif - - p = get_tv_string(&argvars[0]); - #ifdef FEAT_SHORTCUT -*************** -*** 14953,14959 **** - #else - # ifdef HAVE_READLINK - { -- char_u buf[MAXPATHL + 1]; - char_u *cpy; - int len; - char_u *remain = NULL; ---- 14960,14965 ---- -*************** -*** 14981,14986 **** ---- 14987,14996 ---- - q[-1] = NUL; - } - -+ buf = alloc(MAXPATHL + 1); -+ if (buf == NULL) -+ goto fail; -+ - for (;;) - { - for (;;) -*************** -*** 15124,15129 **** ---- 15134,15140 ---- - - #ifdef HAVE_READLINK - fail: -+ vim_free(buf); - #endif - rettv->v_type = VAR_STRING; - } -*************** -*** 17604,17621 **** - typval_T *argvars UNUSED; - typval_T *rettv; - { -! char_u fname[MAXPATHL + 1]; - tagname_T tn; - int first; - - if (rettv_list_alloc(rettv) == FAIL) - return; - - for (first = TRUE; ; first = FALSE) - if (get_tagfname(&tn, first, fname) == FAIL - || list_append_string(rettv->vval.v_list, fname, -1) == FAIL) - break; - tagname_free(&tn); - } - - /* ---- 17615,17636 ---- - typval_T *argvars UNUSED; - typval_T *rettv; - { -! char_u *fname; - tagname_T tn; - int first; - - if (rettv_list_alloc(rettv) == FAIL) - return; -+ fname = alloc(MAXPATHL); -+ if (fname == NULL) -+ return; - - for (first = TRUE; ; first = FALSE) - if (get_tagfname(&tn, first, fname) == FAIL - || list_append_string(rettv->vval.v_list, fname, -1) == FAIL) - break; - tagname_free(&tn); -+ vim_free(fname); - } - - /* -*** ../vim-7.3.160/src/ex_cmds.c 2011-02-01 13:48:47.000000000 +0100 ---- src/ex_cmds.c 2011-04-11 20:51:34.000000000 +0200 -*************** -*** 2777,2783 **** - #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG) - if (p_confirm || cmdmod.confirm) - { -! char_u buff[IOSIZE]; - - dialog_msg(buff, _("Overwrite existing file \"%s\"?"), fname); - if (vim_dialog_yesno(VIM_QUESTION, NULL, buff, 2) != VIM_YES) ---- 2777,2783 ---- - #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG) - if (p_confirm || cmdmod.confirm) - { -! char_u buff[DIALOG_MSG_SIZE]; - - dialog_msg(buff, _("Overwrite existing file \"%s\"?"), fname); - if (vim_dialog_yesno(VIM_QUESTION, NULL, buff, 2) != VIM_YES) -*************** -*** 2795,2801 **** - /* For ":w! filename" check that no swap file exists for "filename". */ - if (other && !emsg_silent) - { -! char_u dir[MAXPATHL]; - char_u *p; - int r; - char_u *swapname; ---- 2795,2801 ---- - /* For ":w! filename" check that no swap file exists for "filename". */ - if (other && !emsg_silent) - { -! char_u *dir; - char_u *p; - int r; - char_u *swapname; -*************** -*** 2806,2825 **** - * Use 'shortname' of the current buffer, since there is no buffer - * for the written file. */ - if (*p_dir == NUL) - STRCPY(dir, "."); - else - { - p = p_dir; - copy_option_part(&p, dir, MAXPATHL, ","); - } - swapname = makeswapname(fname, ffname, curbuf, dir); - r = vim_fexists(swapname); - if (r) - { - #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG) - if (p_confirm || cmdmod.confirm) - { -! char_u buff[IOSIZE]; - - dialog_msg(buff, - _("Swap file \"%s\" exists, overwrite anyway?"), ---- 2806,2834 ---- - * Use 'shortname' of the current buffer, since there is no buffer - * for the written file. */ - if (*p_dir == NUL) -+ { -+ dir = alloc(5); -+ if (dir == NULL) -+ return FAIL; - STRCPY(dir, "."); -+ } - else - { -+ dir = alloc(MAXPATHL); -+ if (dir == NULL) -+ return FAIL; - p = p_dir; - copy_option_part(&p, dir, MAXPATHL, ","); - } - swapname = makeswapname(fname, ffname, curbuf, dir); -+ vim_free(dir); - r = vim_fexists(swapname); - if (r) - { - #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG) - if (p_confirm || cmdmod.confirm) - { -! char_u buff[DIALOG_MSG_SIZE]; - - dialog_msg(buff, - _("Swap file \"%s\" exists, overwrite anyway?"), -*************** -*** 2969,2975 **** - #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG) - if ((p_confirm || cmdmod.confirm) && buf->b_fname != NULL) - { -! char_u buff[IOSIZE]; - - if (buf->b_p_ro) - dialog_msg(buff, _("'readonly' option is set for \"%s\".\nDo you wish to write anyway?"), ---- 2978,2984 ---- - #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG) - if ((p_confirm || cmdmod.confirm) && buf->b_fname != NULL) - { -! char_u buff[DIALOG_MSG_SIZE]; - - if (buf->b_p_ro) - dialog_msg(buff, _("'readonly' option is set for \"%s\".\nDo you wish to write anyway?"), -*** ../vim-7.3.160/src/ex_cmds2.c 2011-02-25 14:46:06.000000000 +0100 ---- src/ex_cmds2.c 2011-04-11 20:51:40.000000000 +0200 -*************** -*** 1492,1498 **** - buf_T *buf; - int checkall; /* may abandon all changed buffers */ - { -! char_u buff[IOSIZE]; - int ret; - buf_T *buf2; - ---- 1492,1498 ---- - buf_T *buf; - int checkall; /* may abandon all changed buffers */ - { -! char_u buff[DIALOG_MSG_SIZE]; - int ret; - buf_T *buf2; - -*** ../vim-7.3.160/src/ex_docmd.c 2011-04-11 16:56:29.000000000 +0200 ---- src/ex_docmd.c 2011-04-11 21:20:35.000000000 +0200 -*************** -*** 5093,5106 **** - #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG) - if ((p_confirm || cmdmod.confirm) && curbuf->b_fname != NULL) - { -! char_u buff[IOSIZE]; - - if (n == 1) - vim_strncpy(buff, - (char_u *)_("1 more file to edit. Quit anyway?"), -! IOSIZE - 1); - else -! vim_snprintf((char *)buff, IOSIZE, - _("%d more files to edit. Quit anyway?"), n); - if (vim_dialog_yesno(VIM_QUESTION, NULL, buff, 1) == VIM_YES) - return OK; ---- 5093,5106 ---- - #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG) - if ((p_confirm || cmdmod.confirm) && curbuf->b_fname != NULL) - { -! char_u buff[DIALOG_MSG_SIZE]; - - if (n == 1) - vim_strncpy(buff, - (char_u *)_("1 more file to edit. Quit anyway?"), -! DIALOG_MSG_SIZE - 1); - else -! vim_snprintf((char *)buff, DIALOG_MSG_SIZE, - _("%d more files to edit. Quit anyway?"), n); - if (vim_dialog_yesno(VIM_QUESTION, NULL, buff, 1) == VIM_YES) - return OK; -*************** -*** 8926,8960 **** - failed = TRUE; - if (eap->cmdidx == CMD_mksession) - { -! char_u dirnow[MAXPATHL]; /* current directory */ - -! /* -! * Change to session file's dir. -! */ -! if (mch_dirname(dirnow, MAXPATHL) == FAIL -! || mch_chdir((char *)dirnow) != 0) -! *dirnow = NUL; -! if (*dirnow != NUL && (ssop_flags & SSOP_SESDIR)) -! { -! if (vim_chdirfile(fname) == OK) -! shorten_fnames(TRUE); -! } -! else if (*dirnow != NUL -! && (ssop_flags & SSOP_CURDIR) && globaldir != NULL) - { -! if (mch_chdir((char *)globaldir) == 0) -! shorten_fnames(TRUE); -! } - -! failed |= (makeopens(fd, dirnow) == FAIL); - -! /* restore original dir */ -! if (*dirnow != NUL && ((ssop_flags & SSOP_SESDIR) - || ((ssop_flags & SSOP_CURDIR) && globaldir != NULL))) -! { -! if (mch_chdir((char *)dirnow) != 0) -! EMSG(_(e_prev_dir)); -! shorten_fnames(TRUE); - } - } - else ---- 8926,8967 ---- - failed = TRUE; - if (eap->cmdidx == CMD_mksession) - { -! char_u *dirnow; /* current directory */ - -! dirnow = alloc(MAXPATHL); -! if (dirnow == NULL) -! failed = TRUE; -! else - { -! /* -! * Change to session file's dir. -! */ -! if (mch_dirname(dirnow, MAXPATHL) == FAIL -! || mch_chdir((char *)dirnow) != 0) -! *dirnow = NUL; -! if (*dirnow != NUL && (ssop_flags & SSOP_SESDIR)) -! { -! if (vim_chdirfile(fname) == OK) -! shorten_fnames(TRUE); -! } -! else if (*dirnow != NUL -! && (ssop_flags & SSOP_CURDIR) && globaldir != NULL) -! { -! if (mch_chdir((char *)globaldir) == 0) -! shorten_fnames(TRUE); -! } - -! failed |= (makeopens(fd, dirnow) == FAIL); - -! /* restore original dir */ -! if (*dirnow != NUL && ((ssop_flags & SSOP_SESDIR) - || ((ssop_flags & SSOP_CURDIR) && globaldir != NULL))) -! { -! if (mch_chdir((char *)dirnow) != 0) -! EMSG(_(e_prev_dir)); -! shorten_fnames(TRUE); -! } -! vim_free(dirnow); - } - } - else -*************** -*** 8985,8994 **** - else if (eap->cmdidx == CMD_mksession) - { - /* successful session write - set this_session var */ -! char_u tbuf[MAXPATHL]; - -! if (vim_FullName(fname, tbuf, MAXPATHL, FALSE) == OK) -! set_vim_var_string(VV_THIS_SESSION, tbuf, -1); - } - #endif - #ifdef MKSESSION_NL ---- 8992,9006 ---- - else if (eap->cmdidx == CMD_mksession) - { - /* successful session write - set this_session var */ -! char_u *tbuf; - -! tbuf = alloc(MAXPATHL); -! if (tbuf != NULL) -! { -! if (vim_FullName(fname, tbuf, MAXPATHL, FALSE) == OK) -! set_vim_var_string(VV_THIS_SESSION, tbuf, -1); -! vim_free(tbuf); -! } - } - #endif - #ifdef MKSESSION_NL -*************** -*** 10677,10683 **** - unsigned *flagp; - { - int i; -! char_u buf[MAXPATHL]; - char_u *s; - - if (gap->ga_len == 0) ---- 10689,10695 ---- - unsigned *flagp; - { - int i; -! char_u *buf = NULL; - char_u *s; - - if (gap->ga_len == 0) -*************** -*** 10692,10702 **** - { - if (fullname) - { -! (void)vim_FullName(s, buf, MAXPATHL, FALSE); -! s = buf; - } - if (fputs(" ", fd) < 0 || ses_put_fname(fd, s, flagp) == FAIL) - return FAIL; - } - } - return put_eol(fd); ---- 10704,10722 ---- - { - if (fullname) - { -! buf = alloc(MAXPATHL); -! if (buf != NULL) -! { -! (void)vim_FullName(s, buf, MAXPATHL, FALSE); -! s = buf; -! } - } - if (fputs(" ", fd) < 0 || ses_put_fname(fd, s, flagp) == FAIL) -+ { -+ vim_free(buf); - return FAIL; -+ } -+ vim_free(buf); - } - } - return put_eol(fd); -*************** -*** 10925,10931 **** - - #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG) || defined(PROTO) - /* -! * Make a dialog message in "buff[IOSIZE]". - * "format" must contain "%s". - */ - void ---- 10945,10951 ---- - - #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG) || defined(PROTO) - /* -! * Make a dialog message in "buff[DIALOG_MSG_SIZE]". - * "format" must contain "%s". - */ - void -*************** -*** 10936,10942 **** - { - if (fname == NULL) - fname = (char_u *)_("Untitled"); -! vim_snprintf((char *)buff, IOSIZE, format, fname); - } - #endif - ---- 10956,10962 ---- - { - if (fname == NULL) - fname = (char_u *)_("Untitled"); -! vim_snprintf((char *)buff, DIALOG_MSG_SIZE, format, fname); - } - #endif - -*** ../vim-7.3.160/src/fileio.c 2011-02-25 16:52:13.000000000 +0100 ---- src/fileio.c 2011-04-11 18:35:10.000000000 +0200 -*************** -*** 6023,6037 **** - shorten_fname1(full_path) - char_u *full_path; - { -! char_u dirname[MAXPATHL]; - char_u *p = full_path; - - if (mch_dirname(dirname, MAXPATHL) == OK) - { - p = shorten_fname(full_path, dirname); - if (p == NULL || *p == NUL) - p = full_path; - } - return p; - } - #endif ---- 6023,6041 ---- - shorten_fname1(full_path) - char_u *full_path; - { -! char_u *dirname; - char_u *p = full_path; - -+ dirname = alloc(MAXPATHL); -+ if (dirname == NULL) -+ return full_path; - if (mch_dirname(dirname, MAXPATHL) == OK) - { - p = shorten_fname(full_path, dirname); - if (p == NULL || *p == NUL) - p = full_path; - } -+ vim_free(dirname); - return p; - } - #endif -*** ../vim-7.3.160/src/hardcopy.c 2011-04-11 16:56:29.000000000 +0200 ---- src/hardcopy.c 2011-04-11 18:23:38.000000000 +0200 -*************** -*** 1759,1765 **** - char *name; - struct prt_ps_resource_S *resource; - { -! char_u buffer[MAXPATHL + 1]; - - vim_strncpy(resource->name, (char_u *)name, 63); - /* Look for named resource file in runtimepath */ ---- 1759,1770 ---- - char *name; - struct prt_ps_resource_S *resource; - { -! char_u *buffer; -! int retval; -! -! buffer = alloc(MAXPATHL + 1); -! if (buffer == NULL) -! return FALSE; - - vim_strncpy(resource->name, (char_u *)name, 63); - /* Look for named resource file in runtimepath */ -*************** -*** 1768,1776 **** - vim_strcat(buffer, (char_u *)name, MAXPATHL); - vim_strcat(buffer, (char_u *)".ps", MAXPATHL); - resource->filename[0] = NUL; -! return (do_in_runtimepath(buffer, FALSE, prt_resource_name, - resource->filename) - && resource->filename[0] != NUL); - } - - /* PS CR and LF characters have platform independent values */ ---- 1773,1783 ---- - vim_strcat(buffer, (char_u *)name, MAXPATHL); - vim_strcat(buffer, (char_u *)".ps", MAXPATHL); - resource->filename[0] = NUL; -! retval = (do_in_runtimepath(buffer, FALSE, prt_resource_name, - resource->filename) - && resource->filename[0] != NUL); -+ vim_free(buffer); -+ return retval; - } - - /* PS CR and LF characters have platform independent values */ -*************** -*** 2848,2862 **** - double right; - double top; - double bottom; -! struct prt_ps_resource_S res_prolog; -! struct prt_ps_resource_S res_encoding; - char buffer[256]; - char_u *p_encoding; - char_u *p; - #ifdef FEAT_MBYTE -! struct prt_ps_resource_S res_cidfont; -! struct prt_ps_resource_S res_cmap; - #endif - - /* - * PS DSC Header comments - no PS code! ---- 2855,2887 ---- - double right; - double top; - double bottom; -! struct prt_ps_resource_S *res_prolog; -! struct prt_ps_resource_S *res_encoding; - char buffer[256]; - char_u *p_encoding; - char_u *p; - #ifdef FEAT_MBYTE -! struct prt_ps_resource_S *res_cidfont; -! struct prt_ps_resource_S *res_cmap; - #endif -+ int retval = FALSE; -+ -+ res_prolog = (struct prt_ps_resource_S *) -+ alloc(sizeof(struct prt_ps_resource_S)); -+ res_encoding = (struct prt_ps_resource_S *) -+ alloc(sizeof(struct prt_ps_resource_S)); -+ #ifdef FEAT_MBYTE -+ res_cidfont = (struct prt_ps_resource_S *) -+ alloc(sizeof(struct prt_ps_resource_S)); -+ res_cmap = (struct prt_ps_resource_S *) -+ alloc(sizeof(struct prt_ps_resource_S)); -+ #endif -+ if (res_prolog == NULL || res_encoding == NULL -+ #ifdef FEAT_MBYTE -+ || res_cidfont == NULL || res_cmap == NULL -+ #endif -+ ) -+ goto theend; - - /* - * PS DSC Header comments - no PS code! -*************** -*** 2932,2958 **** - #endif - - /* Search for external resources VIM supplies */ -! if (!prt_find_resource("prolog", &res_prolog)) - { - EMSG(_("E456: Can't find PostScript resource file \"prolog.ps\"")); - return FALSE; - } -! if (!prt_open_resource(&res_prolog)) - return FALSE; -! if (!prt_check_resource(&res_prolog, PRT_PROLOG_VERSION)) - return FALSE; - #ifdef FEAT_MBYTE - if (prt_out_mbyte) - { - /* Look for required version of multi-byte printing procset */ -! if (!prt_find_resource("cidfont", &res_cidfont)) - { - EMSG(_("E456: Can't find PostScript resource file \"cidfont.ps\"")); - return FALSE; - } -! if (!prt_open_resource(&res_cidfont)) - return FALSE; -! if (!prt_check_resource(&res_cidfont, PRT_CID_PROLOG_VERSION)) - return FALSE; - } - #endif ---- 2957,2983 ---- - #endif - - /* Search for external resources VIM supplies */ -! if (!prt_find_resource("prolog", res_prolog)) - { - EMSG(_("E456: Can't find PostScript resource file \"prolog.ps\"")); - return FALSE; - } -! if (!prt_open_resource(res_prolog)) - return FALSE; -! if (!prt_check_resource(res_prolog, PRT_PROLOG_VERSION)) - return FALSE; - #ifdef FEAT_MBYTE - if (prt_out_mbyte) - { - /* Look for required version of multi-byte printing procset */ -! if (!prt_find_resource("cidfont", res_cidfont)) - { - EMSG(_("E456: Can't find PostScript resource file \"cidfont.ps\"")); - return FALSE; - } -! if (!prt_open_resource(res_cidfont)) - return FALSE; -! if (!prt_check_resource(res_cidfont, PRT_CID_PROLOG_VERSION)) - return FALSE; - } - #endif -*************** -*** 2968,2974 **** - #endif - p_encoding = enc_skip(p_penc); - if (*p_encoding == NUL -! || !prt_find_resource((char *)p_encoding, &res_encoding)) - { - /* 'printencoding' not set or not supported - find alternate */ - #ifdef FEAT_MBYTE ---- 2993,2999 ---- - #endif - p_encoding = enc_skip(p_penc); - if (*p_encoding == NUL -! || !prt_find_resource((char *)p_encoding, res_encoding)) - { - /* 'printencoding' not set or not supported - find alternate */ - #ifdef FEAT_MBYTE -*************** -*** 2977,2989 **** - p_encoding = enc_skip(p_enc); - props = enc_canon_props(p_encoding); - if (!(props & ENC_8BIT) -! || !prt_find_resource((char *)p_encoding, &res_encoding)) - /* 8-bit 'encoding' is not supported */ - #endif - { - /* Use latin1 as default printing encoding */ - p_encoding = (char_u *)"latin1"; -! if (!prt_find_resource((char *)p_encoding, &res_encoding)) - { - EMSG2(_("E456: Can't find PostScript resource file \"%s.ps\""), - p_encoding); ---- 3002,3014 ---- - p_encoding = enc_skip(p_enc); - props = enc_canon_props(p_encoding); - if (!(props & ENC_8BIT) -! || !prt_find_resource((char *)p_encoding, res_encoding)) - /* 8-bit 'encoding' is not supported */ - #endif - { - /* Use latin1 as default printing encoding */ - p_encoding = (char_u *)"latin1"; -! if (!prt_find_resource((char *)p_encoding, res_encoding)) - { - EMSG2(_("E456: Can't find PostScript resource file \"%s.ps\""), - p_encoding); -*************** -*** 2991,2997 **** - } - } - } -! if (!prt_open_resource(&res_encoding)) - return FALSE; - /* For the moment there are no checks on encoding resource files to - * perform */ ---- 3016,3022 ---- - } - } - } -! if (!prt_open_resource(res_encoding)) - return FALSE; - /* For the moment there are no checks on encoding resource files to - * perform */ -*************** -*** 3005,3017 **** - if (prt_use_courier) - { - /* Include ASCII range encoding vector */ -! if (!prt_find_resource(prt_ascii_encoding, &res_encoding)) - { - EMSG2(_("E456: Can't find PostScript resource file \"%s.ps\""), - prt_ascii_encoding); - return FALSE; - } -! if (!prt_open_resource(&res_encoding)) - return FALSE; - /* For the moment there are no checks on encoding resource files to - * perform */ ---- 3030,3042 ---- - if (prt_use_courier) - { - /* Include ASCII range encoding vector */ -! if (!prt_find_resource(prt_ascii_encoding, res_encoding)) - { - EMSG2(_("E456: Can't find PostScript resource file \"%s.ps\""), - prt_ascii_encoding); - return FALSE; - } -! if (!prt_open_resource(res_encoding)) - return FALSE; - /* For the moment there are no checks on encoding resource files to - * perform */ -*************** -*** 3034,3077 **** - if (prt_out_mbyte && prt_custom_cmap) - { - /* Find user supplied CMap */ -! if (!prt_find_resource(prt_cmap, &res_cmap)) - { - EMSG2(_("E456: Can't find PostScript resource file \"%s.ps\""), - prt_cmap); - return FALSE; - } -! if (!prt_open_resource(&res_cmap)) - return FALSE; - } - #endif - - /* List resources supplied */ -! STRCPY(buffer, res_prolog.title); - STRCAT(buffer, " "); -! STRCAT(buffer, res_prolog.version); - prt_dsc_resources("DocumentSuppliedResources", "procset", buffer); - #ifdef FEAT_MBYTE - if (prt_out_mbyte) - { -! STRCPY(buffer, res_cidfont.title); - STRCAT(buffer, " "); -! STRCAT(buffer, res_cidfont.version); - prt_dsc_resources(NULL, "procset", buffer); - - if (prt_custom_cmap) - { -! STRCPY(buffer, res_cmap.title); - STRCAT(buffer, " "); -! STRCAT(buffer, res_cmap.version); - prt_dsc_resources(NULL, "cmap", buffer); - } - } - if (!prt_out_mbyte || prt_use_courier) - #endif - { -! STRCPY(buffer, res_encoding.title); - STRCAT(buffer, " "); -! STRCAT(buffer, res_encoding.version); - prt_dsc_resources(NULL, "encoding", buffer); - } - prt_dsc_requirements(prt_duplex, prt_tumble, prt_collate, ---- 3059,3102 ---- - if (prt_out_mbyte && prt_custom_cmap) - { - /* Find user supplied CMap */ -! if (!prt_find_resource(prt_cmap, res_cmap)) - { - EMSG2(_("E456: Can't find PostScript resource file \"%s.ps\""), - prt_cmap); - return FALSE; - } -! if (!prt_open_resource(res_cmap)) - return FALSE; - } - #endif - - /* List resources supplied */ -! STRCPY(buffer, res_prolog->title); - STRCAT(buffer, " "); -! STRCAT(buffer, res_prolog->version); - prt_dsc_resources("DocumentSuppliedResources", "procset", buffer); - #ifdef FEAT_MBYTE - if (prt_out_mbyte) - { -! STRCPY(buffer, res_cidfont->title); - STRCAT(buffer, " "); -! STRCAT(buffer, res_cidfont->version); - prt_dsc_resources(NULL, "procset", buffer); - - if (prt_custom_cmap) - { -! STRCPY(buffer, res_cmap->title); - STRCAT(buffer, " "); -! STRCAT(buffer, res_cmap->version); - prt_dsc_resources(NULL, "cmap", buffer); - } - } - if (!prt_out_mbyte || prt_use_courier) - #endif - { -! STRCPY(buffer, res_encoding->title); - STRCAT(buffer, " "); -! STRCAT(buffer, res_encoding->version); - prt_dsc_resources(NULL, "encoding", buffer); - } - prt_dsc_requirements(prt_duplex, prt_tumble, prt_collate, -*************** -*** 3114,3128 **** - prt_dsc_noarg("BeginProlog"); - - /* Add required procsets - NOTE: order is important! */ -! if (!prt_add_resource(&res_prolog)) - return FALSE; - #ifdef FEAT_MBYTE - if (prt_out_mbyte) - { - /* Add CID font procset, and any user supplied CMap */ -! if (!prt_add_resource(&res_cidfont)) - return FALSE; -! if (prt_custom_cmap && !prt_add_resource(&res_cmap)) - return FALSE; - } - #endif ---- 3139,3153 ---- - prt_dsc_noarg("BeginProlog"); - - /* Add required procsets - NOTE: order is important! */ -! if (!prt_add_resource(res_prolog)) - return FALSE; - #ifdef FEAT_MBYTE - if (prt_out_mbyte) - { - /* Add CID font procset, and any user supplied CMap */ -! if (!prt_add_resource(res_cidfont)) - return FALSE; -! if (prt_custom_cmap && !prt_add_resource(res_cmap)) - return FALSE; - } - #endif -*************** -*** 3132,3138 **** - #endif - /* There will be only one Roman font encoding to be included in the PS - * file. */ -! if (!prt_add_resource(&res_encoding)) - return FALSE; - - prt_dsc_noarg("EndProlog"); ---- 3157,3163 ---- - #endif - /* There will be only one Roman font encoding to be included in the PS - * file. */ -! if (!prt_add_resource(res_encoding)) - return FALSE; - - prt_dsc_noarg("EndProlog"); -*************** -*** 3248,3254 **** - prt_dsc_noarg("EndSetup"); - - /* Fail if any problems writing out to the PS file */ -! return !prt_file_error; - } - - void ---- 3273,3289 ---- - prt_dsc_noarg("EndSetup"); - - /* Fail if any problems writing out to the PS file */ -! retval = !prt_file_error; -! -! theend: -! vim_free(res_prolog); -! vim_free(res_encoding); -! #ifdef FEAT_MBYTE -! vim_free(res_cidfont); -! vim_free(res_cmap); -! #endif -! -! return retval; - } - - void -*** ../vim-7.3.160/src/quickfix.c 2010-12-02 15:33:10.000000000 +0100 ---- src/quickfix.c 2011-04-11 17:54:07.000000000 +0200 -*************** -*** 3049,3056 **** - int flags = 0; - colnr_T col; - long tomatch; -! char_u dirname_start[MAXPATHL]; -! char_u dirname_now[MAXPATHL]; - char_u *target_dir = NULL; - #ifdef FEAT_AUTOCMD - char_u *au_name = NULL; ---- 3049,3056 ---- - int flags = 0; - colnr_T col; - long tomatch; -! char_u *dirname_start = NULL; -! char_u *dirname_now = NULL; - char_u *target_dir = NULL; - #ifdef FEAT_AUTOCMD - char_u *au_name = NULL; -*************** -*** 3128,3133 **** ---- 3128,3138 ---- - goto theend; - } - -+ dirname_start = alloc(MAXPATHL); -+ dirname_now = alloc(MAXPATHL); -+ if (dirname_start == NULL || dirname_now == NULL) -+ goto theend; -+ - /* Remember the current directory, because a BufRead autocommand that does - * ":lcd %:p:h" changes the meaning of short path names. */ - mch_dirname(dirname_start, MAXPATHL); -*************** -*** 3364,3369 **** ---- 3369,3376 ---- - } - - theend: -+ vim_free(dirname_now); -+ vim_free(dirname_start); - vim_free(target_dir); - vim_free(regmatch.regprog); - } -*** ../vim-7.3.160/src/main.c 2011-03-22 18:10:34.000000000 +0100 ---- src/main.c 2011-04-11 18:06:06.000000000 +0200 -*************** -*** 3814,3820 **** - int i; - char_u *inicmd = NULL; - char_u *p; -! char_u cwd[MAXPATHL]; - - if (filec > 0 && filev[0][0] == '+') - { ---- 3814,3820 ---- - int i; - char_u *inicmd = NULL; - char_u *p; -! char_u *cwd; - - if (filec > 0 && filev[0][0] == '+') - { -*************** -*** 3827,3841 **** - mainerr_arg_missing((char_u *)filev[-1]); - - /* Temporarily cd to the current directory to handle relative file names. */ - if (mch_dirname(cwd, MAXPATHL) != OK) - return NULL; -! if ((p = vim_strsave_escaped_ext(cwd, - #ifdef BACKSLASH_IN_FILENAME - "", /* rem_backslash() will tell what chars to escape */ - #else - PATH_ESC_CHARS, - #endif -! '\\', TRUE)) == NULL) - return NULL; - ga_init2(&ga, 1, 100); - ga_concat(&ga, (char_u *)"<C-\\><C-N>:cd "); ---- 3827,3849 ---- - mainerr_arg_missing((char_u *)filev[-1]); - - /* Temporarily cd to the current directory to handle relative file names. */ -+ cwd = alloc(MAXPATHL); -+ if (cwd == NULL) -+ return NULL; - if (mch_dirname(cwd, MAXPATHL) != OK) -+ { -+ vim_free(cwd); - return NULL; -! } -! p = vim_strsave_escaped_ext(cwd, - #ifdef BACKSLASH_IN_FILENAME - "", /* rem_backslash() will tell what chars to escape */ - #else - PATH_ESC_CHARS, - #endif -! '\\', TRUE); -! vim_free(cwd); -! if (p == NULL) - return NULL; - ga_init2(&ga, 1, 100); - ga_concat(&ga, (char_u *)"<C-\\><C-N>:cd "); -*** ../vim-7.3.160/src/netbeans.c 2011-04-11 16:56:29.000000000 +0200 ---- src/netbeans.c 2011-04-11 18:27:08.000000000 +0200 -*************** -*** 2891,2897 **** - char_u *text; - linenr_T lnum; - int col; -! char buf[MAXPATHL * 2 + 25]; - char_u *p; - - /* Don't do anything when 'ballooneval' is off, messages scrolled the ---- 2891,2897 ---- - char_u *text; - linenr_T lnum; - int col; -! char *buf; - char_u *p; - - /* Don't do anything when 'ballooneval' is off, messages scrolled the -*************** -*** 2905,2919 **** - * length. */ - if (text != NULL && text[0] != NUL && STRLEN(text) < MAXPATHL) - { -! p = nb_quote(text); -! if (p != NULL) - { -! vim_snprintf(buf, sizeof(buf), -! "0:balloonText=%d \"%s\"\n", r_cmdno, p); -! vim_free(p); - } -- nbdebug(("EVT: %s", buf)); -- nb_send(buf, "netbeans_beval_cb"); - } - vim_free(text); - } ---- 2905,2924 ---- - * length. */ - if (text != NULL && text[0] != NUL && STRLEN(text) < MAXPATHL) - { -! buf = (char *)alloc(MAXPATHL * 2 + 25); -! if (buf != NULL) - { -! p = nb_quote(text); -! if (p != NULL) -! { -! vim_snprintf(buf, MAXPATHL * 2 + 25, -! "0:balloonText=%d \"%s\"\n", r_cmdno, p); -! vim_free(p); -! } -! nbdebug(("EVT: %s", buf)); -! nb_send(buf, "netbeans_beval_cb"); -! vim_free(buf); - } - } - vim_free(text); - } -*** ../vim-7.3.160/src/spell.c 2011-04-11 16:56:29.000000000 +0200 ---- src/spell.c 2011-04-11 18:00:49.000000000 +0200 -*************** -*** 8590,8596 **** - spellinfo_T *spin; - char_u *wfname; - { -! char_u fname[MAXPATHL]; - int len; - slang_T *slang; - int free_slang = FALSE; ---- 8590,8596 ---- - spellinfo_T *spin; - char_u *wfname; - { -! char_u *fname = NULL; - int len; - slang_T *slang; - int free_slang = FALSE; -*************** -*** 8654,8659 **** ---- 8654,8662 ---- - * Write the .sug file. - * Make the file name by changing ".spl" to ".sug". - */ -+ fname = alloc(MAXPATHL); -+ if (fname == NULL) -+ goto theend; - vim_strncpy(fname, wfname, MAXPATHL - 1); - len = (int)STRLEN(fname); - fname[len - 2] = 'u'; -*************** -*** 8661,8666 **** ---- 8664,8670 ---- - sug_write(spin, fname); - - theend: -+ vim_free(fname); - if (free_slang) - slang_free(slang); - free_blocks(spin->si_blocks); -*************** -*** 9106,9113 **** - int overwrite; /* overwrite existing output file */ - int added_word; /* invoked through "zg" */ - { -! char_u fname[MAXPATHL]; -! char_u wfname[MAXPATHL]; - char_u **innames; - int incount; - afffile_T *(afile[8]); ---- 9110,9117 ---- - int overwrite; /* overwrite existing output file */ - int added_word; /* invoked through "zg" */ - { -! char_u *fname = NULL; -! char_u *wfname; - char_u **innames; - int incount; - afffile_T *(afile[8]); -*************** -*** 9135,9140 **** ---- 9139,9148 ---- - innames = &fnames[1]; - incount = fcount - 1; - -+ wfname = alloc(MAXPATHL); -+ if (wfname == NULL) -+ return; -+ - if (fcount >= 1) - { - len = (int)STRLEN(fnames[0]); -*************** -*** 9144,9167 **** - * "path/en.latin1.add.spl". */ - innames = &fnames[0]; - incount = 1; -! vim_snprintf((char *)wfname, sizeof(wfname), "%s.spl", fnames[0]); - } - else if (fcount == 1) - { - /* For ":mkspell path/vim" output file is "path/vim.latin1.spl". */ - innames = &fnames[0]; - incount = 1; -! vim_snprintf((char *)wfname, sizeof(wfname), SPL_FNAME_TMPL, - fnames[0], spin.si_ascii ? (char_u *)"ascii" : spell_enc()); - } - else if (len > 4 && STRCMP(fnames[0] + len - 4, ".spl") == 0) - { - /* Name ends in ".spl", use as the file name. */ -! vim_strncpy(wfname, fnames[0], sizeof(wfname) - 1); - } - else - /* Name should be language, make the file name from it. */ -! vim_snprintf((char *)wfname, sizeof(wfname), SPL_FNAME_TMPL, - fnames[0], spin.si_ascii ? (char_u *)"ascii" : spell_enc()); - - /* Check for .ascii.spl. */ ---- 9152,9175 ---- - * "path/en.latin1.add.spl". */ - innames = &fnames[0]; - incount = 1; -! vim_snprintf((char *)wfname, MAXPATHL, "%s.spl", fnames[0]); - } - else if (fcount == 1) - { - /* For ":mkspell path/vim" output file is "path/vim.latin1.spl". */ - innames = &fnames[0]; - incount = 1; -! vim_snprintf((char *)wfname, MAXPATHL, SPL_FNAME_TMPL, - fnames[0], spin.si_ascii ? (char_u *)"ascii" : spell_enc()); - } - else if (len > 4 && STRCMP(fnames[0] + len - 4, ".spl") == 0) - { - /* Name ends in ".spl", use as the file name. */ -! vim_strncpy(wfname, fnames[0], MAXPATHL - 1); - } - else - /* Name should be language, make the file name from it. */ -! vim_snprintf((char *)wfname, MAXPATHL, SPL_FNAME_TMPL, - fnames[0], spin.si_ascii ? (char_u *)"ascii" : spell_enc()); - - /* Check for .ascii.spl. */ -*************** -*** 9186,9199 **** - if (!overwrite && mch_stat((char *)wfname, &st) >= 0) - { - EMSG(_(e_exists)); -! return; - } - if (mch_isdir(wfname)) - { - EMSG2(_(e_isadir2), wfname); -! return; - } - - /* - * Init the aff and dic pointers. - * Get the region names if there are more than 2 arguments. ---- 9194,9211 ---- - if (!overwrite && mch_stat((char *)wfname, &st) >= 0) - { - EMSG(_(e_exists)); -! goto theend; - } - if (mch_isdir(wfname)) - { - EMSG2(_(e_isadir2), wfname); -! goto theend; - } - -+ fname = alloc(MAXPATHL); -+ if (fname == NULL) -+ goto theend; -+ - /* - * Init the aff and dic pointers. - * Get the region names if there are more than 2 arguments. -*************** -*** 9209,9215 **** - || innames[i][len - 3] != '_') - { - EMSG2(_("E755: Invalid region in %s"), innames[i]); -! return; - } - spin.si_region_name[i * 2] = TOLOWER_ASC(innames[i][len - 2]); - spin.si_region_name[i * 2 + 1] = ---- 9221,9227 ---- - || innames[i][len - 3] != '_') - { - EMSG2(_("E755: Invalid region in %s"), innames[i]); -! goto theend; - } - spin.si_region_name[i * 2] = TOLOWER_ASC(innames[i][len - 2]); - spin.si_region_name[i * 2 + 1] = -*************** -*** 9226,9232 **** - || spin.si_prefroot == NULL) - { - free_blocks(spin.si_blocks); -! return; - } - - /* When not producing a .add.spl file clear the character table when ---- 9238,9244 ---- - || spin.si_prefroot == NULL) - { - free_blocks(spin.si_blocks); -! goto theend; - } - - /* When not producing a .add.spl file clear the character table when -*************** -*** 9247,9253 **** - spin.si_conv.vc_type = CONV_NONE; - spin.si_region = 1 << i; - -! vim_snprintf((char *)fname, sizeof(fname), "%s.aff", innames[i]); - if (mch_stat((char *)fname, &st) >= 0) - { - /* Read the .aff file. Will init "spin->si_conv" based on the ---- 9259,9265 ---- - spin.si_conv.vc_type = CONV_NONE; - spin.si_region = 1 << i; - -! vim_snprintf((char *)fname, MAXPATHL, "%s.aff", innames[i]); - if (mch_stat((char *)fname, &st) >= 0) - { - /* Read the .aff file. Will init "spin->si_conv" based on the -*************** -*** 9258,9264 **** - else - { - /* Read the .dic file and store the words in the trees. */ -! vim_snprintf((char *)fname, sizeof(fname), "%s.dic", - innames[i]); - if (spell_read_dic(&spin, fname, afile[i]) == FAIL) - error = TRUE; ---- 9270,9276 ---- - else - { - /* Read the .dic file and store the words in the trees. */ -! vim_snprintf((char *)fname, MAXPATHL, "%s.dic", - innames[i]); - if (spell_read_dic(&spin, fname, afile[i]) == FAIL) - error = TRUE; -*************** -*** 9340,9345 **** ---- 9352,9361 ---- - spell_make_sugfile(&spin, wfname); - - } -+ -+ theend: -+ vim_free(fname); -+ vim_free(wfname); - } - - /* -*************** -*** 9392,9398 **** - buf_T *buf = NULL; - int new_spf = FALSE; - char_u *fname; -! char_u fnamebuf[MAXPATHL]; - char_u line[MAXWLEN * 2]; - long fpos, fpos_next = 0; - int i; ---- 9408,9414 ---- - buf_T *buf = NULL; - int new_spf = FALSE; - char_u *fname; -! char_u *fnamebuf = NULL; - char_u line[MAXWLEN * 2]; - long fpos, fpos_next = 0; - int i; -*************** -*** 9422,9427 **** ---- 9438,9446 ---- - EMSG2(_(e_notset), "spellfile"); - return; - } -+ fnamebuf = alloc(MAXPATHL); -+ if (fnamebuf == NULL) -+ return; - - for (spf = curwin->w_s->b_p_spf, i = 1; *spf != NUL; ++i) - { -*************** -*** 9431,9436 **** ---- 9450,9456 ---- - if (*spf == NUL) - { - EMSGN(_("E765: 'spellfile' does not have %ld entries"), idx); -+ vim_free(fnamebuf); - return; - } - } -*************** -*** 9442,9447 **** ---- 9462,9468 ---- - if (buf != NULL && bufIsChanged(buf)) - { - EMSG(_(e_bufloaded)); -+ vim_free(fnamebuf); - return; - } - -*************** -*** 9536,9541 **** ---- 9557,9563 ---- - - redraw_all_later(SOME_VALID); - } -+ vim_free(fnamebuf); - } - - /* -*************** -*** 9544,9550 **** - static void - init_spellfile() - { -! char_u buf[MAXPATHL]; - int l; - char_u *fname; - char_u *rtp; ---- 9566,9572 ---- - static void - init_spellfile() - { -! char_u *buf; - int l; - char_u *fname; - char_u *rtp; -*************** -*** 9554,9559 **** ---- 9576,9585 ---- - - if (*curwin->w_s->b_p_spl != NUL && curwin->w_s->b_langp.ga_len > 0) - { -+ buf = alloc(MAXPATHL); -+ if (buf == NULL) -+ return; -+ - /* Find the end of the language name. Exclude the region. If there - * is a path separator remember the start of the tail. */ - for (lend = curwin->w_s->b_p_spl; *lend != NUL -*************** -*** 9597,9603 **** - "/%.*s", (int)(lend - lstart), lstart); - } - l = (int)STRLEN(buf); -! fname = LANGP_ENTRY(curwin->w_s->b_langp, 0)->lp_slang->sl_fname; - vim_snprintf((char *)buf + l, MAXPATHL - l, ".%s.add", - fname != NULL - && strstr((char *)gettail(fname), ".ascii.") != NULL ---- 9623,9630 ---- - "/%.*s", (int)(lend - lstart), lstart); - } - l = (int)STRLEN(buf); -! fname = LANGP_ENTRY(curwin->w_s->b_langp, 0) -! ->lp_slang->sl_fname; - vim_snprintf((char *)buf + l, MAXPATHL - l, ".%s.add", - fname != NULL - && strstr((char *)gettail(fname), ".ascii.") != NULL -*************** -*** 9607,9612 **** ---- 9634,9641 ---- - } - aspath = FALSE; - } -+ -+ vim_free(buf); - } - } - -*** ../vim-7.3.160/src/tag.c 2011-04-11 16:56:29.000000000 +0200 ---- src/tag.c 2011-04-11 20:54:36.000000000 +0200 -*************** -*** 775,791 **** - { - list_T *list; - char_u tag_name[128 + 1]; -! char_u fname[MAXPATHL + 1]; -! char_u cmd[CMDBUFFSIZE + 1]; - - /* - * Add the matching tags to the location list for the current - * window. - */ - - list = list_alloc(); -! if (list == NULL) - goto end_do_tag; - - for (i = 0; i < num_matches; ++i) - { ---- 775,799 ---- - { - list_T *list; - char_u tag_name[128 + 1]; -! char_u *fname; -! char_u *cmd; - - /* - * Add the matching tags to the location list for the current - * window. - */ - -+ fname = alloc(MAXPATHL + 1); -+ cmd = alloc(CMDBUFFSIZE + 1); - list = list_alloc(); -! if (list == NULL || fname == NULL || cmd == NULL) -! { -! vim_free(cmd); -! vim_free(fname); -! if (list != NULL) -! list_free(list, TRUE); - goto end_do_tag; -+ } - - for (i = 0; i < num_matches; ++i) - { -*************** -*** 911,916 **** ---- 919,926 ---- - set_errorlist(curwin, list, ' ', IObuff); - - list_free(list, TRUE); -+ vim_free(fname); -+ vim_free(cmd); - - cur_match = 0; /* Jump to the first tag */ - } -*************** -*** 3777,3784 **** - char_u *start; /* start of the value */ - char_u *end; /* after the value; can be NULL */ - { -! char_u buf[MAXPATHL]; - int len = 0; - - /* check that the field name doesn't exist yet */ - if (dict_find(dict, (char_u *)field_name, -1) != NULL) ---- 3787,3795 ---- - char_u *start; /* start of the value */ - char_u *end; /* after the value; can be NULL */ - { -! char_u *buf; - int len = 0; -+ int retval; - - /* check that the field name doesn't exist yet */ - if (dict_find(dict, (char_u *)field_name, -1) != NULL) -*************** -*** 3791,3796 **** ---- 3802,3810 ---- - } - return FAIL; - } -+ buf = alloc(MAXPATHL); -+ if (buf == NULL) -+ return FAIL; - if (start != NULL) - { - if (end == NULL) -*************** -*** 3800,3811 **** - --end; - } - len = (int)(end - start); -! if (len > (int)sizeof(buf) - 1) -! len = sizeof(buf) - 1; - vim_strncpy(buf, start, len); - } - buf[len] = NUL; -! return dict_add_nr_str(dict, field_name, 0L, buf); - } - - /* ---- 3814,3827 ---- - --end; - } - len = (int)(end - start); -! if (len > MAXPATHL - 1) -! len = MAXPATHL - 1; - vim_strncpy(buf, start, len); - } - buf[len] = NUL; -! retval = dict_add_nr_str(dict, field_name, 0L, buf); -! vim_free(buf); -! return retval; - } - - /* -*** ../vim-7.3.160/src/vim.h 2010-12-30 12:30:26.000000000 +0100 ---- src/vim.h 2011-04-11 20:50:54.000000000 +0200 -*************** -*** 1435,1440 **** ---- 1435,1442 ---- - - #define IOSIZE (1024+1) /* file i/o and sprintf buffer size */ - -+ #define DIALOG_MSG_SIZE 1000 /* buffer size for dialog_msg() */ -+ - #ifdef FEAT_MBYTE - # define MSG_BUF_LEN 480 /* length of buffer for small messages */ - # define MSG_BUF_CLEN (MSG_BUF_LEN / 6) /* cell length (worst case: utf-8 -*** ../vim-7.3.160/src/xxd/xxd.c 2011-04-02 14:44:50.000000000 +0200 ---- src/xxd/xxd.c 2011-04-11 16:40:48.000000000 +0200 -*************** -*** 476,482 **** - int octspergrp = -1; /* number of octets grouped in output */ - int grplen; /* total chars per octet group */ - long length = -1, n = 0, seekoff = 0; -! char l[LLEN+1]; - char *pp; - - #ifdef AMIGA ---- 476,482 ---- - int octspergrp = -1; /* number of octets grouped in output */ - int grplen; /* total chars per octet group */ - long length = -1, n = 0, seekoff = 0; -! static char l[LLEN+1]; /* static because it may be too big for stack */ - char *pp; - - #ifdef AMIGA -*** ../vim-7.3.160/src/version.c 2011-04-11 16:56:29.000000000 +0200 ---- src/version.c 2011-04-11 21:15:33.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 161, - /**/ - --- -The process for understanding customers primarily involves sitting around with -other marketing people and talking about what you would to if you were dumb -enough to be a customer. - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.162 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.162 -Problem: No error message when assigning to a list with an index out of - range. (Yukihiro Nakadaira) -Solution: Add the error message. -Files: src/eval.c - - -*** ../vim-7.3.161/src/eval.c 2011-04-11 21:35:03.000000000 +0200 ---- src/eval.c 2011-04-21 13:40:38.000000000 +0200 -*************** -*** 2794,2799 **** ---- 2794,2801 ---- - { - if (lp->ll_range && !lp->ll_empty2) - clear_tv(&var2); -+ if (!quiet) -+ EMSGN(_(e_listidx), lp->ll_n1); - return NULL; - } - -*************** -*** 2811,2817 **** ---- 2813,2823 ---- - { - ni = list_find(lp->ll_list, lp->ll_n2); - if (ni == NULL) -+ { -+ if (!quiet) -+ EMSGN(_(e_listidx), lp->ll_n2); - return NULL; -+ } - lp->ll_n2 = list_idx_of_item(lp->ll_list, ni); - } - -*************** -*** 2819,2825 **** ---- 2825,2835 ---- - if (lp->ll_n1 < 0) - lp->ll_n1 = list_idx_of_item(lp->ll_list, lp->ll_li); - if (lp->ll_n2 < lp->ll_n1) -+ { -+ if (!quiet) -+ EMSGN(_(e_listidx), lp->ll_n2); - return NULL; -+ } - } - - lp->ll_tv = &lp->ll_li->li_tv; -*** ../vim-7.3.161/src/version.c 2011-04-11 21:35:03.000000000 +0200 ---- src/version.c 2011-04-21 13:44:46.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 162, - /**/ - --- -Far back in the mists of ancient time, in the great and glorious days of the -former Galactic Empire, life was wild, rich and largely tax free. -Mighty starships plied their way between exotic suns, seeking adventure and -reward among the furthest reaches of Galactic space. In those days, spirits -were brave, the stakes were high, men were real men, women were real women -and small furry creatures from Alpha Centauri were real small furry creatures -from Alpha Centauri. And all dared to brave unknown terrors, to do mighty -deeds, to boldly split infinitives that no man had split before -- and thus -was the Empire forged. - -- 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/ \\\ -\\\ an exciting new programming language -- http://www.Zimbu.org /// - \\\ help me help AIDS victims -- http://ICCF-Holland.org /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.163 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.163 -Problem: For the default of 'shellpipe' "mksh" and "pdksh" are not - recognized. -Solution: Recognize these shell names. -Files: src/option.c - - -*** ../vim-7.3.162/src/option.c 2011-03-22 14:35:01.000000000 +0100 ---- src/option.c 2011-04-15 20:49:54.000000000 +0200 -*************** -*** 3846,3851 **** ---- 3846,3853 ---- - # ifndef OS2 /* Always use bourne shell style redirection if we reach this */ - if ( fnamecmp(p, "sh") == 0 - || fnamecmp(p, "ksh") == 0 -+ || fnamecmp(p, "mksh") == 0 -+ || fnamecmp(p, "pdksh") == 0 - || fnamecmp(p, "zsh") == 0 - || fnamecmp(p, "zsh-beta") == 0 - || fnamecmp(p, "bash") == 0 -*************** -*** 3853,3858 **** ---- 3855,3862 ---- - || fnamecmp(p, "cmd") == 0 - || fnamecmp(p, "sh.exe") == 0 - || fnamecmp(p, "ksh.exe") == 0 -+ || fnamecmp(p, "mksh.exe") == 0 -+ || fnamecmp(p, "pdksh.exe") == 0 - || fnamecmp(p, "zsh.exe") == 0 - || fnamecmp(p, "zsh-beta.exe") == 0 - || fnamecmp(p, "bash.exe") == 0 -*** ../vim-7.3.162/src/version.c 2011-04-21 14:27:21.000000000 +0200 ---- src/version.c 2011-04-28 12:56:03.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 163, - /**/ - --- -If you put 7 of the most talented OSS developers in a room for a week -and asked them to fix a bug in a spreadsheet program, in 1 week -you'd have 2 new mail readers and a text-based web browser. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.164 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.164 -Problem: C-indenting: a preprocessor statement confuses detection of a - function delcaration. -Solution: Ignore preprocessor lines. (Lech Lorens) Also recognize the style - to put a comma before the argument name. -Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok - - -*** ../vim-7.3.163/src/misc1.c 2011-04-11 16:56:29.000000000 +0200 ---- src/misc1.c 2011-04-28 12:49:55.000000000 +0200 -*************** -*** 5396,5403 **** - cin_ispreproc(s) - char_u *s; - { -! s = skipwhite(s); -! if (*s == '#') - return TRUE; - return FALSE; - } ---- 5396,5402 ---- - cin_ispreproc(s) - char_u *s; - { -! if (*skipwhite(s) == '#') - return TRUE; - return FALSE; - } -*************** -*** 5513,5518 **** ---- 5512,5521 ---- - else - s = *sp; - -+ /* Ignore line starting with #. */ -+ if (cin_ispreproc(s)) -+ return FALSE; -+ - while (*s && *s != '(' && *s != ';' && *s != '\'' && *s != '"') - { - if (cin_iscomment(s)) /* ignore comments */ -*************** -*** 5538,5550 **** - retval = TRUE; - goto done; - } -! if (*s == ',' && cin_nocode(s + 1)) - { -! /* ',' at the end: continue looking in the next line */ - if (lnum >= curbuf->b_ml.ml_line_count) - break; -! -! s = ml_get(++lnum); - } - else if (cin_iscomment(s)) /* ignore comments */ - s = cin_skipcomment(s); ---- 5541,5569 ---- - retval = TRUE; - goto done; - } -! if ((*s == ',' && cin_nocode(s + 1)) || s[1] == NUL || cin_nocode(s)) - { -! int comma = (*s == ','); -! -! /* ',' at the end: continue looking in the next line. -! * At the end: check for ',' in the next line, for this style: -! * func(arg1 -! * , arg2) */ -! for (;;) -! { -! if (lnum >= curbuf->b_ml.ml_line_count) -! break; -! s = ml_get(++lnum); -! if (!cin_ispreproc(s)) -! break; -! } - if (lnum >= curbuf->b_ml.ml_line_count) - break; -! /* Require a comma at end of the line or a comma or ')' at the -! * start of next line. */ -! s = skipwhite(s); -! if (!comma && *s != ',' && *s != ')') -! break; - } - else if (cin_iscomment(s)) /* ignore comments */ - s = cin_skipcomment(s); -*** ../vim-7.3.163/src/testdir/test3.in 2010-08-15 21:57:29.000000000 +0200 ---- src/testdir/test3.in 2011-04-28 12:15:12.000000000 +0200 -*************** -*** 1315,1320 **** ---- 1315,1349 ---- - } - - STARTTEST -+ :set cino=(0,ts -+ 2kdd=][ -+ ENDTEST -+ -+ void func(int a -+ #if defined(FOO) -+ , int b -+ , int c -+ #endif -+ ) -+ { -+ } -+ -+ STARTTEST -+ :set cino=(0 -+ 2kdd=][ -+ ENDTEST -+ -+ void -+ func(int a -+ #if defined(FOO) -+ , int b -+ , int c -+ #endif -+ ) -+ { -+ } -+ -+ STARTTEST - :g/^STARTTEST/.,/^ENDTEST/d - :1;/start of AUTO/,$wq! test.out - ENDTEST -*** ../vim-7.3.163/src/testdir/test3.ok 2010-08-15 21:57:29.000000000 +0200 ---- src/testdir/test3.ok 2011-04-28 12:54:04.000000000 +0200 -*************** -*** 1183,1185 **** ---- 1183,1206 ---- - foo; - } - -+ -+ void func(int a -+ #if defined(FOO) -+ , int b -+ , int c -+ #endif -+ ) -+ { -+ } -+ -+ -+ void -+ func(int a -+ #if defined(FOO) -+ , int b -+ , int c -+ #endif -+ ) -+ { -+ } -+ -*** ../vim-7.3.163/src/version.c 2011-04-28 12:56:57.000000000 +0200 ---- src/version.c 2011-04-28 12:59:55.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 164, - /**/ - --- -Due knot trussed yore spell chequer two fined awl miss steaks. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.165 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.165 -Problem: ":find" completion does not escape spaces in a directory name. - (Isz) -Solution: Add backslashes for EXPAND_FILES_IN_PATH. (Carlo Teubner) -Files: src/ex_getln.c - - -*** ../vim-7.3.164/src/ex_getln.c 2010-12-02 16:01:23.000000000 +0100 ---- src/ex_getln.c 2011-04-28 12:52:12.000000000 +0200 -*************** -*** 3702,3707 **** ---- 3702,3708 ---- - if (options & WILD_ESCAPE) - { - if (xp->xp_context == EXPAND_FILES -+ || xp->xp_context == EXPAND_FILES_IN_PATH - || xp->xp_context == EXPAND_SHELLCMD - || xp->xp_context == EXPAND_BUFFERS - || xp->xp_context == EXPAND_DIRECTORIES) -*** ../vim-7.3.164/src/version.c 2011-04-28 13:01:59.000000000 +0200 ---- src/version.c 2011-04-28 17:17:53.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 165, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -38. You wake up at 3 a.m. to go to the bathroom and stop and check your e-mail - on the way back to bed. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.166 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.166 -Problem: Buffer on the stack may be too big -Solution: Allocate the space. -Files: src/option.c - - -*** ../vim-7.3.165/src/option.c 2011-04-28 12:56:57.000000000 +0200 ---- src/option.c 2011-04-15 20:49:54.000000000 +0200 -*************** -*** 9185,9191 **** - int expand; - { - char_u *s; -! char_u buf[MAXPATHL]; - - if (fprintf(fd, "%s %s=", cmd, name) < 0) - return FAIL; ---- 9185,9191 ---- - int expand; - { - char_u *s; -! char_u *buf; - - if (fprintf(fd, "%s %s=", cmd, name) < 0) - return FAIL; -*************** -*** 9203,9211 **** ---- 9203,9218 ---- - } - else if (expand) - { -+ buf = alloc(MAXPATHL); -+ if (buf == NULL) -+ return FAIL; - home_replace(NULL, *valuep, buf, MAXPATHL, FALSE); - if (put_escstr(fd, buf, 2) == FAIL) -+ { -+ vim_free(buf); - return FAIL; -+ } -+ vim_free(buf); - } - else if (put_escstr(fd, *valuep, 2) == FAIL) - return FAIL; -*** ../vim-7.3.165/src/version.c 2011-04-28 17:21:49.000000000 +0200 ---- src/version.c 2011-04-28 17:23:24.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 166, - /**/ - --- -He who laughs last, thinks slowest. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.167 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.167 -Problem: When using the internal grep QuickFixCmdPost is not triggered. - (Yukihiro Nakadaira) -Solution: Change the place where autocommands are triggered. -Files: src/quickfix.c - - -*** ../vim-7.3.166/src/quickfix.c 2011-04-11 21:35:03.000000000 +0200 ---- src/quickfix.c 2011-04-28 13:28:03.000000000 +0200 -*************** -*** 2742,2747 **** ---- 2742,2754 ---- - #ifdef FEAT_AUTOCMD - char_u *au_name = NULL; - -+ /* Redirect ":grep" to ":vimgrep" if 'grepprg' is "internal". */ -+ if (grep_internal(eap->cmdidx)) -+ { -+ ex_vimgrep(eap); -+ return; -+ } -+ - switch (eap->cmdidx) - { - case CMD_make: au_name = (char_u *)"make"; break; -*************** -*** 2763,2775 **** - } - #endif - -- /* Redirect ":grep" to ":vimgrep" if 'grepprg' is "internal". */ -- if (grep_internal(eap->cmdidx)) -- { -- ex_vimgrep(eap); -- return; -- } -- - if (eap->cmdidx == CMD_lmake || eap->cmdidx == CMD_lgrep - || eap->cmdidx == CMD_lgrepadd) - wp = curwin; ---- 2770,2775 ---- -*************** -*** 3057,3066 **** - - switch (eap->cmdidx) - { -! case CMD_vimgrep: au_name = (char_u *)"vimgrep"; break; -! case CMD_lvimgrep: au_name = (char_u *)"lvimgrep"; break; -! case CMD_vimgrepadd: au_name = (char_u *)"vimgrepadd"; break; - case CMD_lvimgrepadd: au_name = (char_u *)"lvimgrepadd"; break; - default: break; - } - if (au_name != NULL) ---- 3057,3070 ---- - - switch (eap->cmdidx) - { -! case CMD_vimgrep: au_name = (char_u *)"vimgrep"; break; -! case CMD_lvimgrep: au_name = (char_u *)"lvimgrep"; break; -! case CMD_vimgrepadd: au_name = (char_u *)"vimgrepadd"; break; - case CMD_lvimgrepadd: au_name = (char_u *)"lvimgrepadd"; break; -+ case CMD_grep: au_name = (char_u *)"grep"; break; -+ case CMD_lgrep: au_name = (char_u *)"lgrep"; break; -+ case CMD_grepadd: au_name = (char_u *)"grepadd"; break; -+ case CMD_lgrepadd: au_name = (char_u *)"lgrepadd"; break; - default: break; - } - if (au_name != NULL) -*** ../vim-7.3.166/src/version.c 2011-04-28 17:24:54.000000000 +0200 ---- src/version.c 2011-04-28 17:26:17.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 167, - /**/ - --- -Micro$oft: where do you want to go today? - Linux: where do you want to go tomorrow? - FreeBSD: are you guys coming, or what? - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.168 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.168 -Problem: When the second argument of input() contains a CR the text up to - that is used without asking the user. (Yasuhiro Matsumoto) -Solution: Change CR, NL and ESC in the text to a space. -Files: src/getchar.c - - -*** ../vim-7.3.167/src/getchar.c 2011-03-22 13:07:19.000000000 +0100 ---- src/getchar.c 2011-04-28 14:50:26.000000000 +0200 -*************** -*** 635,645 **** ---- 635,648 ---- - /* - * Stuff "s" into the stuff buffer, leaving special key codes unmodified and - * escaping other K_SPECIAL and CSI bytes. -+ * Change CR, LF and ESC into a space. - */ - void - stuffReadbuffSpec(s) - char_u *s; - { -+ int c; -+ - while (*s != NUL) - { - if (*s == K_SPECIAL && s[1] != NUL && s[2] != NUL) -*************** -*** 649,659 **** - s += 3; - } - else - #ifdef FEAT_MBYTE -! stuffcharReadbuff(mb_ptr2char_adv(&s)); - #else -! stuffcharReadbuff(*s++); - #endif - } - } - #endif ---- 652,667 ---- - s += 3; - } - else -+ { - #ifdef FEAT_MBYTE -! c = mb_ptr2char_adv(&s); - #else -! c = *s++; - #endif -+ if (c == CAR || c == NL || c == ESC) -+ c = ' '; -+ stuffcharReadbuff(c); -+ } - } - } - #endif -*** ../vim-7.3.167/src/version.c 2011-04-28 17:27:05.000000000 +0200 ---- src/version.c 2011-04-28 17:28:36.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 168, - /**/ - --- -Everyone has a photographic memory. Some don't have film. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.169 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.169 -Problem: Freeing memory already freed, warning from static code analyzer. -Solution: Initialize pointers to NULL, correct use of "mustfree". (partly by - Dominique Pelle) -Files: src/mis1.c - - -*** ../vim-7.3.168/src/misc1.c 2011-04-28 13:01:59.000000000 +0200 ---- src/misc1.c 2011-04-28 17:42:00.000000000 +0200 -*************** -*** 3505,3511 **** - if (enc_utf8 && var != NULL) - { - int len; -! char_u *pp; - - /* Convert from active codepage to UTF-8. Other conversions are - * not done, because they would fail for non-ASCII characters. */ ---- 3505,3511 ---- - if (enc_utf8 && var != NULL) - { - int len; -! char_u *pp = NULL; - - /* Convert from active codepage to UTF-8. Other conversions are - * not done, because they would fail for non-ASCII characters. */ -*************** -*** 3872,3882 **** - * Vim's version of getenv(). - * Special handling of $HOME, $VIM and $VIMRUNTIME. - * Also does ACP to 'enc' conversion for Win32. - */ - char_u * - vim_getenv(name, mustfree) - char_u *name; -! int *mustfree; /* set to TRUE when returned is allocated */ - { - char_u *p; - char_u *pend; ---- 3872,3884 ---- - * Vim's version of getenv(). - * Special handling of $HOME, $VIM and $VIMRUNTIME. - * Also does ACP to 'enc' conversion for Win32. -+ * "mustfree" is set to TRUE when returned is allocated, it must be -+ * initialized to FALSE by the caller. - */ - char_u * - vim_getenv(name, mustfree) - char_u *name; -! int *mustfree; - { - char_u *p; - char_u *pend; -*************** -*** 3898,3904 **** - if (enc_utf8) - { - int len; -! char_u *pp; - - /* Convert from active codepage to UTF-8. Other conversions are - * not done, because they would fail for non-ASCII characters. */ ---- 3900,3906 ---- - if (enc_utf8) - { - int len; -! char_u *pp = NULL; - - /* Convert from active codepage to UTF-8. Other conversions are - * not done, because they would fail for non-ASCII characters. */ -*************** -*** 3942,3948 **** - if (enc_utf8) - { - int len; -! char_u *pp; - - /* Convert from active codepage to UTF-8. Other conversions - * are not done, because they would fail for non-ASCII ---- 3944,3950 ---- - if (enc_utf8) - { - int len; -! char_u *pp = NULL; - - /* Convert from active codepage to UTF-8. Other conversions - * are not done, because they would fail for non-ASCII -*************** -*** 3950,3956 **** - acp_to_enc(p, (int)STRLEN(p), &pp, &len); - if (pp != NULL) - { -! if (mustfree) - vim_free(p); - p = pp; - *mustfree = TRUE; ---- 3952,3958 ---- - acp_to_enc(p, (int)STRLEN(p), &pp, &len); - if (pp != NULL) - { -! if (*mustfree) - vim_free(p); - p = pp; - *mustfree = TRUE; -*** ../vim-7.3.168/src/version.c 2011-04-28 17:30:05.000000000 +0200 ---- src/version.c 2011-04-28 17:48:04.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 169, - /**/ - --- -A day without sunshine is like, well, night. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.170 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.170 -Problem: VMS Makefile for testing was not updated for test77. -Solution: Add test77 to the Makefile. -Files: src/testdir/Make_vms.mms - - -*** ../vim-7.3.169/src/testdir/Make_vms.mms 2010-11-10 16:54:16.000000000 +0100 ---- src/testdir/Make_vms.mms 2011-03-03 17:04:56.000000000 +0100 -*************** -*** 4,10 **** - # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> - # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> - # -! # Last change: 2010 Nov 10 - # - # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. - # Edit the lines in the Configuration section below to select. ---- 4,10 ---- - # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> - # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> - # -! # Last change: 2011 Mar 03 - # - # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. - # Edit the lines in the Configuration section below to select. -*************** -*** 74,80 **** - test56.out test57.out test60.out \ - test61.out test62.out test63.out test64.out test65.out \ - test66.out test67.out test68.out test69.out \ -! test71.out test72.out test74.out test75.out test76.out - - # Known problems: - # Test 30: a problem around mac format - unknown reason ---- 74,81 ---- - test56.out test57.out test60.out \ - test61.out test62.out test63.out test64.out test65.out \ - test66.out test67.out test68.out test69.out \ -! test71.out test72.out test74.out test75.out test76.out \ -! test77.out - - # Known problems: - # Test 30: a problem around mac format - unknown reason -*** ../vim-7.3.169/src/version.c 2011-04-28 17:48:39.000000000 +0200 ---- src/version.c 2011-04-28 19:04:33.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 170, - /**/ - --- -The users that I support would double-click on a landmine to find out -what happens. -- A system administrator - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.171 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 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) -Files: runtime/doc/change.txt, src/ex_docmd.c, src/globals.h - - -*** ../vim-7.3.170/runtime/doc/change.txt 2010-08-15 21:57:18.000000000 +0200 ---- runtime/doc/change.txt 2011-05-05 13:48:00.000000000 +0200 -*************** -*** 916,923 **** - {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]. - - :[range]y[ank] [x] {count} - Yank {count} lines, starting with last line number ---- 917,926 ---- - {Visual}["x]Y Yank the highlighted lines [into register x] (for - {Visual} see |Visual-mode|). {not in Vi} - -! *: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 -*** ../vim-7.3.170/src/ex_docmd.c 2011-04-11 21:35:03.000000000 +0200 ---- src/ex_docmd.c 2011-05-05 13:48:57.000000000 +0200 -*************** -*** 2424,2448 **** - 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) - { -! set_expr_line(vim_strsave(ea.arg)); -! ea.arg += STRLEN(ea.arg); - } - #endif -! ea.arg = skipwhite(ea.arg); - } - - /* ---- 2424,2462 ---- - if ( (ea.argt & REGSTR) - && *ea.arg != NUL - #ifdef FEAT_USR_CMDS - /* Do not allow register = for user commands */ - && (!USER_CMDIDX(ea.cmdidx) || *ea.arg != '=') - #endif - && !((ea.argt & COUNT) && VIM_ISDIGIT(*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); -! } - } - - /* -*** ../vim-7.3.170/src/globals.h 2011-02-15 17:39:14.000000000 +0100 ---- src/globals.h 2011-05-05 13:47:44.000000000 +0200 -*************** -*** 1561,1566 **** ---- 1561,1569 ---- - (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); -*** ../vim-7.3.170/src/version.c 2011-04-28 19:05:01.000000000 +0200 ---- src/version.c 2011-05-05 14:24:39.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 171, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -53. To find out what time it is, you send yourself an e-mail and check the - "Date:" field. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.172 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.172 -Problem: MS-Windows: rename() might delete the file if the name differs but - it's actually the same file. -Solution: Use the file handle to check if it's the same file. (Yukihiro - Nakadaira) -Files: src/if_cscope.c, src/fileio.c, src/os_win32.c, - src/proto/os_win32.pro, src/vim.h - - -*** ../vim-7.3.171/src/if_cscope.c 2011-03-03 15:01:25.000000000 +0100 ---- src/if_cscope.c 2011-05-05 16:16:38.000000000 +0200 -*************** -*** 1412,1428 **** - { - short i, j; - #ifndef UNIX -- HANDLE hFile; - BY_HANDLE_FILE_INFORMATION bhfi; - -- vim_memset(&bhfi, 0, sizeof(bhfi)); - /* On windows 9x GetFileInformationByHandle doesn't work, so skip it */ - if (!mch_windows95()) - { -! hFile = CreateFile(fname, FILE_READ_ATTRIBUTES, 0, NULL, OPEN_EXISTING, -! FILE_ATTRIBUTE_NORMAL, NULL); -! if (hFile == INVALID_HANDLE_VALUE) - { - if (p_csverbose) - { - char *cant_msg = _("E625: cannot open cscope database: %s"); ---- 1412,1426 ---- - { - short i, j; - #ifndef UNIX - BY_HANDLE_FILE_INFORMATION bhfi; - - /* On windows 9x GetFileInformationByHandle doesn't work, so skip it */ - if (!mch_windows95()) - { -! switch (win32_fileinfo(fname, &bhfi)) - { -+ case FILEINFO_ENC_FAIL: /* enc_to_utf16() failed */ -+ case FILEINFO_READ_FAIL: /* CreateFile() failed */ - if (p_csverbose) - { - char *cant_msg = _("E625: cannot open cscope database: %s"); -*************** -*** 1438,1452 **** - (void)EMSG2(cant_msg, fname); - } - return -1; -! } -! if (!GetFileInformationByHandle(hFile, &bhfi)) -! { -! CloseHandle(hFile); - if (p_csverbose) - (void)EMSG(_("E626: cannot get cscope database information")); - return -1; - } -- CloseHandle(hFile); - } - #endif - ---- 1436,1447 ---- - (void)EMSG2(cant_msg, fname); - } - return -1; -! -! case FILEINFO_INFO_FAIL: /* GetFileInformationByHandle() failed */ - if (p_csverbose) - (void)EMSG(_("E626: cannot get cscope database information")); - return -1; - } - } - #endif - -*** ../vim-7.3.171/src/fileio.c 2011-04-11 21:35:03.000000000 +0200 ---- src/fileio.c 2011-05-05 16:22:22.000000000 +0200 -*************** -*** 6555,6560 **** ---- 6555,6575 ---- - use_tmp_file = TRUE; - } - #endif -+ #ifdef WIN3264 -+ { -+ BY_HANDLE_FILE_INFORMATION info1, info2; -+ -+ /* It's possible for the source and destination to be the same file. -+ * In that case go through a temp file name. This makes rename("foo", -+ * "./foo") a no-op (in a complicated way). */ -+ if (win32_fileinfo(from, &info1) == FILEINFO_OK -+ && win32_fileinfo(to, &info2) == FILEINFO_OK -+ && info1.dwVolumeSerialNumber == info2.dwVolumeSerialNumber -+ && info1.nFileIndexHigh == info2.nFileIndexHigh -+ && info1.nFileIndexLow == info2.nFileIndexLow) -+ use_tmp_file = TRUE; -+ } -+ #endif - - #if defined(UNIX) || defined(CASE_INSENSITIVE_FILENAME) - if (use_tmp_file) -*** ../vim-7.3.171/src/os_win32.c 2011-02-01 13:48:47.000000000 +0100 ---- src/os_win32.c 2011-05-05 16:24:17.000000000 +0200 -*************** -*** 2645,2669 **** - int - mch_is_linked(char_u *fname) - { - HANDLE hFile; -! int res = 0; -! BY_HANDLE_FILE_INFORMATION inf; - #ifdef FEAT_MBYTE - WCHAR *wn = NULL; - - if (enc_codepage >= 0 && (int)GetACP() != enc_codepage) - wn = enc_to_utf16(fname, NULL); - if (wn != NULL) - { - hFile = CreateFileW(wn, /* file name */ - GENERIC_READ, /* access mode */ -! 0, /* share mode */ - NULL, /* security descriptor */ - OPEN_EXISTING, /* creation disposition */ -! 0, /* file attributes */ - NULL); /* handle to template file */ - if (hFile == INVALID_HANDLE_VALUE -! && GetLastError() == ERROR_CALL_NOT_IMPLEMENTED) - { - /* Retry with non-wide function (for Windows 98). */ - vim_free(wn); ---- 2645,2688 ---- - int - mch_is_linked(char_u *fname) - { -+ BY_HANDLE_FILE_INFORMATION info; -+ -+ return win32_fileinfo(fname, &info) == FILEINFO_OK -+ && info.nNumberOfLinks > 1; -+ } -+ -+ /* -+ * Get the by-handle-file-information for "fname". -+ * Returns FILEINFO_OK when OK. -+ * returns FILEINFO_ENC_FAIL when enc_to_utf16() failed. -+ * Returns FILEINFO_READ_FAIL when CreateFile() failed. -+ * Returns FILEINFO_INFO_FAIL when GetFileInformationByHandle() failed. -+ */ -+ int -+ win32_fileinfo(char_u *fname, BY_HANDLE_FILE_INFORMATION *info) -+ { - HANDLE hFile; -! int res = FILEINFO_READ_FAIL; - #ifdef FEAT_MBYTE - WCHAR *wn = NULL; - - if (enc_codepage >= 0 && (int)GetACP() != enc_codepage) -+ { - wn = enc_to_utf16(fname, NULL); -+ if (wn == NULL) -+ res = FILEINFO_ENC_FAIL; -+ } - if (wn != NULL) - { - hFile = CreateFileW(wn, /* file name */ - GENERIC_READ, /* access mode */ -! FILE_SHARE_READ | FILE_SHARE_WRITE, /* share mode */ - NULL, /* security descriptor */ - OPEN_EXISTING, /* creation disposition */ -! FILE_FLAG_BACKUP_SEMANTICS, /* file attributes */ - NULL); /* handle to template file */ - if (hFile == INVALID_HANDLE_VALUE -! && GetLastError() == ERROR_CALL_NOT_IMPLEMENTED) - { - /* Retry with non-wide function (for Windows 98). */ - vim_free(wn); -*************** -*** 2674,2690 **** - #endif - hFile = CreateFile(fname, /* file name */ - GENERIC_READ, /* access mode */ -! 0, /* share mode */ - NULL, /* security descriptor */ - OPEN_EXISTING, /* creation disposition */ -! 0, /* file attributes */ - NULL); /* handle to template file */ - - if (hFile != INVALID_HANDLE_VALUE) - { -! if (GetFileInformationByHandle(hFile, &inf) != 0 -! && inf.nNumberOfLinks > 1) -! res = 1; - CloseHandle(hFile); - } - ---- 2693,2710 ---- - #endif - hFile = CreateFile(fname, /* file name */ - GENERIC_READ, /* access mode */ -! FILE_SHARE_READ | FILE_SHARE_WRITE, /* share mode */ - NULL, /* security descriptor */ - OPEN_EXISTING, /* creation disposition */ -! FILE_FLAG_BACKUP_SEMANTICS, /* file attributes */ - NULL); /* handle to template file */ - - if (hFile != INVALID_HANDLE_VALUE) - { -! if (GetFileInformationByHandle(hFile, info) != 0) -! res = FILEINFO_OK; -! else -! res = FILEINFO_INFO_FAIL; - CloseHandle(hFile); - } - -*** ../vim-7.3.171/src/proto/os_win32.pro 2010-10-23 14:02:48.000000000 +0200 ---- src/proto/os_win32.pro 2011-05-05 16:17:42.000000000 +0200 -*************** -*** 21,26 **** ---- 21,27 ---- - void mch_hide __ARGS((char_u *name)); - int mch_isdir __ARGS((char_u *name)); - int mch_is_linked __ARGS((char_u *fname)); -+ int win32_fileinfo __ARGS((char_u *name, BY_HANDLE_FILE_INFORMATION *lpFileInfo)); - int mch_writable __ARGS((char_u *name)); - int mch_can_exe __ARGS((char_u *name)); - int mch_nodetype __ARGS((char_u *name)); -*** ../vim-7.3.171/src/vim.h 2011-04-11 21:35:03.000000000 +0200 ---- src/vim.h 2011-05-05 16:16:57.000000000 +0200 -*************** -*** 2217,2220 **** ---- 2217,2226 ---- - #define KEYLEN_PART_MAP -2 /* keylen value for incomplete mapping */ - #define KEYLEN_REMOVED 9999 /* keylen value for removed sequence */ - -+ /* Return values from win32_fileinfo(). */ -+ #define FILEINFO_OK 0 -+ #define FILEINFO_ENC_FAIL 1 /* enc_to_utf16() failed */ -+ #define FILEINFO_READ_FAIL 2 /* CreateFile() failed */ -+ #define FILEINFO_INFO_FAIL 3 /* GetFileInformationByHandle() failed */ -+ - #endif /* VIM__H */ -*** ../vim-7.3.171/src/version.c 2011-05-05 14:26:37.000000000 +0200 ---- src/version.c 2011-05-05 16:39:35.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 172, - /**/ - --- -Q: What is a patch 22? -A: A patch you need to include to make it possible to include patches. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.173 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.173 -Problem: After using setqflist() to make the quickfix list empty ":cwindow" - may open the window anyway. Also after ":vimgrep". -Solution: Correctly check whether the list is empty. (Ingo Karkat) -Files: src/quickfix.c - - -*** ../vim-7.3.172/src/quickfix.c 2011-04-28 17:27:05.000000000 +0200 ---- src/quickfix.c 2011-05-05 16:55:47.000000000 +0200 -*************** -*** 1164,1170 **** - - /* When no valid entries are present in the list, qf_ptr points to - * the first item in the list */ -! if (to_qfl->qf_nonevalid == TRUE) - to_qfl->qf_ptr = to_qfl->qf_start; - } - ---- 1164,1170 ---- - - /* When no valid entries are present in the list, qf_ptr points to - * the first item in the list */ -! if (to_qfl->qf_nonevalid) - to_qfl->qf_ptr = to_qfl->qf_start; - } - -*************** -*** 2243,2248 **** ---- 2243,2249 ---- - * it if we have errors; otherwise, leave it closed. - */ - if (qi->qf_lists[qi->qf_curlist].qf_nonevalid -+ || qi->qf_lists[qi->qf_curlist].qf_count == 0 - || qi->qf_curlist >= qi->qf_listcount) - { - if (win != NULL) -*************** -*** 3711,3717 **** - } - - if (qi->qf_lists[qi->qf_curlist].qf_index == 0) -! /* empty list or no valid entry */ - qi->qf_lists[qi->qf_curlist].qf_nonevalid = TRUE; - else - qi->qf_lists[qi->qf_curlist].qf_nonevalid = FALSE; ---- 3712,3718 ---- - } - - if (qi->qf_lists[qi->qf_curlist].qf_index == 0) -! /* no valid entry */ - qi->qf_lists[qi->qf_curlist].qf_nonevalid = TRUE; - else - qi->qf_lists[qi->qf_curlist].qf_nonevalid = FALSE; -*** ../vim-7.3.172/src/version.c 2011-05-05 16:41:19.000000000 +0200 ---- src/version.c 2011-05-05 17:11:57.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 173, - /**/ - --- -"I can't complain, but sometimes I still do." (Joe Walsh) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.174 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.174 -Problem: When Exuberant ctags binary is exctags it's not found. -Solution: Add configure check for exctags. (Hong Xu) -Files: src/configure.in, src/auto/configure - - -*** ../vim-7.3.173/src/configure.in 2011-02-09 17:42:53.000000000 +0100 ---- src/configure.in 2011-05-05 17:18:21.000000000 +0200 -*************** -*** 2619,2625 **** - dnl On HP-UX 10.10 termcap or termlib should be used instead of - dnl curses, because curses is much slower. - dnl Newer versions of ncurses are preferred over anything, except -! dnl when tinfo has been split off, it conains all we need. - dnl Older versions of ncurses have bugs, get a new one! - dnl Digital Unix (OSF1) should use curses (Ronald Schild). - dnl On SCO Openserver should prefer termlib (Roger Cornelius). ---- 2619,2625 ---- - dnl On HP-UX 10.10 termcap or termlib should be used instead of - dnl curses, because curses is much slower. - dnl Newer versions of ncurses are preferred over anything, except -! dnl when tinfo has been split off, it contains all we need. - dnl Older versions of ncurses have bugs, get a new one! - dnl Digital Unix (OSF1) should use curses (Ronald Schild). - dnl On SCO Openserver should prefer termlib (Roger Cornelius). -*************** -*** 3370,3376 **** - AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,) - - dnl Check how we can run ctags. Default to "ctags" when nothing works. -! dnl --version for Exuberant ctags (preferred) - dnl Add --fields=+S to get function signatures for omni completion. - dnl -t for typedefs (many ctags have this) - dnl -s for static functions (Elvis ctags only?) ---- 3370,3376 ---- - AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,) - - dnl Check how we can run ctags. Default to "ctags" when nothing works. -! dnl Use --version to detect Exuberant ctags (preferred) - dnl Add --fields=+S to get function signatures for omni completion. - dnl -t for typedefs (many ctags have this) - dnl -s for static functions (Elvis ctags only?) -*************** -*** 3378,3384 **** - dnl -i+m to test for older Exuberant ctags - AC_MSG_CHECKING(how to create tags) - test -f tags && mv tags tags.save -! if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then - TAGPRG="ctags -I INIT+ --fields=+S" - else - TAGPRG="ctags" ---- 3378,3386 ---- - dnl -i+m to test for older Exuberant ctags - AC_MSG_CHECKING(how to create tags) - test -f tags && mv tags tags.save -! if (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then -! TAGPRG="exctags -I INIT+ --fields=+S" -! elif (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then - TAGPRG="ctags -I INIT+ --fields=+S" - else - TAGPRG="ctags" -*** ../vim-7.3.173/src/auto/configure 2011-02-09 17:42:53.000000000 +0100 ---- src/auto/configure 2011-05-05 17:19:26.000000000 +0200 -*************** -*** 12031,12037 **** - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create tags" >&5 - $as_echo_n "checking how to create tags... " >&6; } - test -f tags && mv tags tags.save -! if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&5 2>&1; then - TAGPRG="ctags -I INIT+ --fields=+S" - else - TAGPRG="ctags" ---- 12031,12039 ---- - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create tags" >&5 - $as_echo_n "checking how to create tags... " >&6; } - test -f tags && mv tags tags.save -! if (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&5 2>&1; then -! TAGPRG="exctags -I INIT+ --fields=+S" -! elif (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&5 2>&1; then - TAGPRG="ctags -I INIT+ --fields=+S" - else - TAGPRG="ctags" -*** ../vim-7.3.173/src/version.c 2011-05-05 17:14:07.000000000 +0200 ---- src/version.c 2011-05-05 17:19:37.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 174, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -54. You start tilting your head sideways to smile. :-) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.175 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.175 -Problem: When 'colorcolumn' is set locally to a window, ":new" opens a - window with the same highlighting but 'colorcolumn' is empty. - (Tyru) -Solution: Call check_colorcolumn() after clearing and copying options. - (Christian Brabandt) -Files: src/buffer.c - - -*** ../vim-7.3.174/src/buffer.c 2011-04-11 16:56:29.000000000 +0200 ---- src/buffer.c 2011-05-05 17:28:24.000000000 +0200 -*************** -*** 2527,2532 **** ---- 2527,2535 ---- - if (p_fdls >= 0) - curwin->w_p_fdl = p_fdls; - #endif -+ #ifdef FEAT_SYN_HL -+ check_colorcolumn(curwin); -+ #endif - } - - /* -*** ../vim-7.3.174/src/version.c 2011-05-05 17:23:58.000000000 +0200 ---- src/version.c 2011-05-05 17:30:32.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 175, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -55. You ask your doctor to implant a gig in your brain. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.176 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.176 -Problem: Ruby linking doesn't work properly on Mac OS X. -Solution: Fix the configure check for Ruby. (Bjorn Winckler) -Files: src/configure.in, src/auto/configure - - -*** ../vim-7.3.175/src/configure.in 2011-05-05 17:23:58.000000000 +0200 ---- src/configure.in 2011-05-05 18:03:38.000000000 +0200 -*************** -*** 1387,1396 **** - AC_MSG_RESULT($enable_rubyinterp) - if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then - AC_MSG_CHECKING(--with-ruby-command argument) - AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)], -! RUBY_CMD="$withval"; AC_MSG_RESULT($RUBY_CMD), - RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD)) -- AC_SUBST(vi_cv_path_ruby) - AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD) - if test "X$vi_cv_path_ruby" != "X"; then - AC_MSG_CHECKING(Ruby version) ---- 1387,1396 ---- - AC_MSG_RESULT($enable_rubyinterp) - if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then - AC_MSG_CHECKING(--with-ruby-command argument) -+ AC_SUBST(vi_cv_path_ruby) - AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)], -! RUBY_CMD="$withval"; vi_cv_path_ruby="$withval"; AC_MSG_RESULT($RUBY_CMD), - RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD)) - AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD) - if test "X$vi_cv_path_ruby" != "X"; then - AC_MSG_CHECKING(Ruby version) -*************** -*** 1412,1429 **** - RUBY_LIBS="$rubylibs" - fi - librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBYARG"]])'` -! if test -f "$rubyhdrdir/$librubyarg"; then -! librubyarg="$rubyhdrdir/$librubyarg" -! else -! rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["libdir"]])'` -! if test -f "$rubylibdir/$librubyarg"; then -! librubyarg="$rubylibdir/$librubyarg" -! elif test "$librubyarg" = "libruby.a"; then -! dnl required on Mac OS 10.3 where libruby.a doesn't exist -! librubyarg="-lruby" -! else -! librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print '$librubyarg'.gsub(/-L\./, %'-L#{Config.expand(Config::CONFIG[\"libdir\"])}')"` -! fi - fi - - if test "X$librubyarg" != "X"; then ---- 1412,1426 ---- - RUBY_LIBS="$rubylibs" - fi - librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBYARG"]])'` -! librubya=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBY_A"]])'` -! rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["libdir"]])'` -! if test -f "$rubylibdir/$librubya"; then -! librubyarg="$librubyarg" -! RUBY_LIBS="$RUBY_LIBS -L$rubylibdir" -! elif test "$librubyarg" = "libruby.a"; then -! dnl required on Mac OS 10.3 where libruby.a doesn't exist -! librubyarg="-lruby" -! RUBY_LIBS="$RUBY_LIBS -L$rubylibdir" - fi - - if test "X$librubyarg" != "X"; then -*** ../vim-7.3.175/src/auto/configure 2011-05-05 17:23:58.000000000 +0200 ---- src/auto/configure 2011-05-05 18:06:47.000000000 +0200 -*************** -*** 6218,6233 **** - { $as_echo "$as_me:${as_lineno-$LINENO}: checking --with-ruby-command argument" >&5 - $as_echo_n "checking --with-ruby-command argument... " >&6; } - - # Check whether --with-ruby-command was given. - if test "${with_ruby_command+set}" = set; then : -! withval=$with_ruby_command; RUBY_CMD="$withval"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RUBY_CMD" >&5 - $as_echo "$RUBY_CMD" >&6; } - else - RUBY_CMD="ruby"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: defaulting to $RUBY_CMD" >&5 - $as_echo "defaulting to $RUBY_CMD" >&6; } - fi - -- - # Extract the first word of "$RUBY_CMD", so it can be a program name with args. - set dummy $RUBY_CMD; ac_word=$2 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ---- 6218,6233 ---- - { $as_echo "$as_me:${as_lineno-$LINENO}: checking --with-ruby-command argument" >&5 - $as_echo_n "checking --with-ruby-command argument... " >&6; } - -+ - # Check whether --with-ruby-command was given. - if test "${with_ruby_command+set}" = set; then : -! withval=$with_ruby_command; RUBY_CMD="$withval"; vi_cv_path_ruby="$withval"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RUBY_CMD" >&5 - $as_echo "$RUBY_CMD" >&6; } - else - RUBY_CMD="ruby"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: defaulting to $RUBY_CMD" >&5 - $as_echo "defaulting to $RUBY_CMD" >&6; } - fi - - # Extract the first word of "$RUBY_CMD", so it can be a program name with args. - set dummy $RUBY_CMD; ac_word=$2 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -*************** -*** 6292,6308 **** - RUBY_LIBS="$rubylibs" - fi - librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG["LIBRUBYARG"])'` -! if test -f "$rubyhdrdir/$librubyarg"; then -! librubyarg="$rubyhdrdir/$librubyarg" -! else -! rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG["libdir"])'` -! if test -f "$rubylibdir/$librubyarg"; then -! librubyarg="$rubylibdir/$librubyarg" -! elif test "$librubyarg" = "libruby.a"; then -! librubyarg="-lruby" -! else -! librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print '$librubyarg'.gsub(/-L\./, %'-L#{Config.expand(Config::CONFIG[\"libdir\"])}')"` -! fi - fi - - if test "X$librubyarg" != "X"; then ---- 6292,6305 ---- - RUBY_LIBS="$rubylibs" - fi - librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG["LIBRUBYARG"])'` -! librubya=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG["LIBRUBY_A"])'` -! rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG["libdir"])'` -! if test -f "$rubylibdir/$librubya"; then -! librubyarg="$librubyarg" -! RUBY_LIBS="$RUBY_LIBS -L$rubylibdir" -! elif test "$librubyarg" = "libruby.a"; then -! librubyarg="-lruby" -! RUBY_LIBS="$RUBY_LIBS -L$rubylibdir" - fi - - if test "X$librubyarg" != "X"; then -*** ../vim-7.3.175/src/version.c 2011-05-05 17:32:40.000000000 +0200 ---- src/version.c 2011-05-05 18:08:52.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 176, - /**/ - --- -"I simultaneously try to keep my head in the clouds and my feet on the -ground. Sometimes it's a stretch, though." -- Larry Wall - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.177 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.177 -Problem: MS-Windows: mkdir() doesn't work properly when 'encoding' is - "utf-8". -Solution: Convert to utf-16. (Yukihiro Nakadaira) -Files: src/os_win32.c, src/os_win32.h, src/proto/os_win32.pro - - -*** ../vim-7.3.176/src/os_win32.c 2011-05-05 16:41:19.000000000 +0200 ---- src/os_win32.c 2011-05-05 18:24:36.000000000 +0200 -*************** -*** 2640,2645 **** ---- 2640,2669 ---- - } - - /* -+ * Create directory "name". -+ * Return 0 on success, -1 on error. -+ */ -+ int -+ mch_mkdir(char_u *name) -+ { -+ #ifdef FEAT_MBYTE -+ if (enc_codepage >= 0 && (int)GetACP() != enc_codepage) -+ { -+ WCHAR *p; -+ int retval; -+ -+ p = enc_to_utf16(name, NULL); -+ if (p == NULL) -+ return -1; -+ retval = _wmkdir(p); -+ vim_free(p); -+ return retval; -+ } -+ #endif -+ return _mkdir(name); -+ } -+ -+ /* - * Return TRUE if file "fname" has more than one link. - */ - int -*** ../vim-7.3.176/src/os_win32.h 2010-08-15 21:57:30.000000000 +0200 ---- src/os_win32.h 2011-05-05 18:25:44.000000000 +0200 -*************** -*** 191,195 **** - #ifdef __BORLANDC__ - # define vim_mkdir(x, y) mkdir(x) - #else -! # define vim_mkdir(x, y) _mkdir(x) - #endif ---- 191,195 ---- - #ifdef __BORLANDC__ - # define vim_mkdir(x, y) mkdir(x) - #else -! # define vim_mkdir(x, y) mch_mkdir(x) - #endif -*** ../vim-7.3.176/src/proto/os_win32.pro 2011-05-05 16:41:19.000000000 +0200 ---- src/proto/os_win32.pro 2011-05-05 18:26:20.000000000 +0200 -*************** -*** 20,25 **** ---- 20,26 ---- - int mch_setperm __ARGS((char_u *name, long perm)); - void mch_hide __ARGS((char_u *name)); - int mch_isdir __ARGS((char_u *name)); -+ int mch_mkdir __ARGS((char_u *name)); - int mch_is_linked __ARGS((char_u *fname)); - int win32_fileinfo __ARGS((char_u *name, BY_HANDLE_FILE_INFORMATION *lpFileInfo)); - int mch_writable __ARGS((char_u *name)); -*** ../vim-7.3.176/src/version.c 2011-05-05 18:10:11.000000000 +0200 ---- src/version.c 2011-05-05 18:27:56.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 177, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -56. You leave the modem speaker on after connecting because you think it - sounds like the ocean wind...the perfect soundtrack for "surfing the net". - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.178 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.178 -Problem: C-indent doesn't handle code right after { correctly. -Solution: Fix detecting unterminated line. (Lech Lorens) -Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok - - -*** ../vim-7.3.177/src/misc1.c 2011-04-28 17:48:39.000000000 +0200 ---- src/misc1.c 2011-05-10 11:35:09.000000000 +0200 -*************** -*** 4983,4989 **** - } - - /* -! * Return TRUE if there there is no code at *s. White space and comments are - * not considered code. - */ - static int ---- 4983,4989 ---- - } - - /* -! * Return TRUE if there is no code at *s. White space and comments are - * not considered code. - */ - static int -*************** -*** 5458,5465 **** - } - - /* -! * Recognize a line that starts with '{' or '}', or ends with ';', '{' or '}'. - * Don't consider "} else" a terminated line. - * Return the character terminating the line (ending char's have precedence if - * both apply in order to determine initializations). - */ ---- 5458,5468 ---- - } - - /* -! * Recognize a line that starts with '{' or '}', or ends with ';', ',', '{' or -! * '}'. - * Don't consider "} else" a terminated line. -+ * Don't consider a line where there are unmatched opening braces before '}', -+ * ';' or ',' a terminated line. - * Return the character terminating the line (ending char's have precedence if - * both apply in order to determine initializations). - */ -*************** -*** 5470,5475 **** ---- 5473,5479 ---- - int incl_comma; /* recognize a trailing comma */ - { - char_u found_start = 0; -+ unsigned n_open = 0; - - s = cin_skipcomment(s); - -*************** -*** 5480,5489 **** - { - /* skip over comments, "" strings and 'c'haracters */ - s = skip_string(cin_skipcomment(s)); -! if ((*s == ';' || (incl_open && *s == '{') || *s == '}' -! || (incl_comma && *s == ',')) - && cin_nocode(s + 1)) - return *s; - - if (*s) - s++; ---- 5484,5502 ---- - { - /* skip over comments, "" strings and 'c'haracters */ - s = skip_string(cin_skipcomment(s)); -! if (*s == '}' && n_open > 0) -! --n_open; -! if (n_open == 0 -! && (*s == ';' || *s == '}' || (incl_comma && *s == ',')) - && cin_nocode(s + 1)) - return *s; -+ else if (*s == '{') -+ { -+ if (incl_open && cin_nocode(s + 1)) -+ return *s; -+ else -+ ++n_open; -+ } - - if (*s) - s++; -*** ../vim-7.3.177/src/testdir/test3.in 2011-04-28 13:01:59.000000000 +0200 ---- src/testdir/test3.in 2011-05-10 11:34:13.000000000 +0200 -*************** -*** 1344,1349 **** ---- 1344,1365 ---- - } - - STARTTEST -+ :set cino& -+ 2kdd=][ -+ ENDTEST -+ -+ void func(void) -+ { -+ if(x==y) -+ if(y==z) -+ foo=1; -+ else { bar=1; -+ baz=2; -+ } -+ printf("Foo!\n"); -+ } -+ -+ STARTTEST - :g/^STARTTEST/.,/^ENDTEST/d - :1;/start of AUTO/,$wq! test.out - ENDTEST -*** ../vim-7.3.177/src/testdir/test3.ok 2011-04-28 13:01:59.000000000 +0200 ---- src/testdir/test3.ok 2011-05-10 11:34:13.000000000 +0200 -*************** -*** 1204,1206 **** ---- 1204,1218 ---- - { - } - -+ -+ void func(void) -+ { -+ if(x==y) -+ if(y==z) -+ foo=1; -+ else { bar=1; -+ baz=2; -+ } -+ printf("Foo!\n"); -+ } -+ -*** ../vim-7.3.177/src/version.c 2011-05-05 18:31:54.000000000 +0200 ---- src/version.c 2011-05-10 11:37:43.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 178, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -69. Yahoo welcomes you with your own start page - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.179 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.179 -Problem: C-indent doesn't handle colon in string correctly. -Solution: Skip the string. (Lech Lorens) -Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok - - -*** ../vim-7.3.178/src/misc1.c 2011-05-10 11:39:13.000000000 +0200 ---- src/misc1.c 2011-05-10 11:50:14.000000000 +0200 -*************** -*** 5801,5807 **** - continue; - } - -! if (s[0] == ':') - { - if (s[1] == ':') - { ---- 5801,5809 ---- - continue; - } - -! if (s[0] == '"') -! s = skip_string(s) + 1; -! else if (s[0] == ':') - { - if (s[1] == ':') - { -*** ../vim-7.3.178/src/testdir/test3.in 2011-05-10 11:39:13.000000000 +0200 ---- src/testdir/test3.in 2011-05-10 11:53:02.000000000 +0200 -*************** -*** 1360,1365 **** ---- 1360,1378 ---- - } - - STARTTEST -+ :set cino& -+ 2kdd=][ -+ ENDTEST -+ -+ void func(void) -+ { -+ cout << "a" -+ << "b" -+ << ") :" -+ << "c"; -+ } -+ -+ STARTTEST - :g/^STARTTEST/.,/^ENDTEST/d - :1;/start of AUTO/,$wq! test.out - ENDTEST -*** ../vim-7.3.178/src/testdir/test3.ok 2011-05-10 11:39:13.000000000 +0200 ---- src/testdir/test3.ok 2011-05-10 11:50:14.000000000 +0200 -*************** -*** 1216,1218 **** ---- 1216,1227 ---- - printf("Foo!\n"); - } - -+ -+ void func(void) -+ { -+ cout << "a" -+ << "b" -+ << ") :" -+ << "c"; -+ } -+ -*** ../vim-7.3.178/src/version.c 2011-05-10 11:39:13.000000000 +0200 ---- src/version.c 2011-05-10 11:53:36.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 179, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -71. You wonder how people walk - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.180 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.180 -Problem: When both a middle part of 'comments' matches and an end part, the - middle part was used errornously. -Solution: After finding the middle part match continue looking for a better - end part match. (partly by Lech Lorens) -Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok - - -*** ../vim-7.3.179/src/misc1.c 2011-05-10 11:56:26.000000000 +0200 ---- src/misc1.c 2011-05-10 13:24:38.000000000 +0200 -*************** -*** 1561,1566 **** ---- 1561,1569 ---- - char_u part_buf[COM_MAX_LEN]; /* buffer for one option part */ - char_u *string; /* pointer to comment string */ - char_u *list; -+ int middle_match_len = 0; -+ char_u *prev_list; -+ char_u *saved_flags; - - i = 0; - while (vim_iswhite(line[i])) /* leading white space is ignored */ -*************** -*** 1569,1575 **** - /* - * Repeat to match several nested comment strings. - */ -! while (line[i]) - { - /* - * scan through the 'comments' option for a match ---- 1572,1578 ---- - /* - * Repeat to match several nested comment strings. - */ -! while (line[i] != NUL) - { - /* - * scan through the 'comments' option for a match -*************** -*** 1577,1658 **** - found_one = FALSE; - for (list = curbuf->b_p_com; *list; ) - { -! /* -! * Get one option part into part_buf[]. Advance list to next one. -! * put string at start of string. -! */ -! if (!got_com && flags != NULL) /* remember where flags started */ -! *flags = list; - (void)copy_option_part(&list, part_buf, COM_MAX_LEN, ","); - string = vim_strchr(part_buf, ':'); - if (string == NULL) /* missing ':', ignore this part */ - continue; - *string++ = NUL; /* isolate flags from string */ - -! /* -! * When already found a nested comment, only accept further -! * nested comments. -! */ - if (got_com && vim_strchr(part_buf, COM_NEST) == NULL) - continue; - -! /* When 'O' flag used don't use for "O" command */ - if (backward && vim_strchr(part_buf, COM_NOBACK) != NULL) - continue; - -! /* -! * Line contents and string must match. - * When string starts with white space, must have some white space - * (but the amount does not need to match, there might be a mix of -! * TABs and spaces). -! */ - if (vim_iswhite(string[0])) - { - if (i == 0 || !vim_iswhite(line[i - 1])) -! continue; - while (vim_iswhite(string[0])) - ++string; - } - for (j = 0; string[j] != NUL && string[j] == line[i + j]; ++j) - ; - if (string[j] != NUL) -! continue; - -! /* -! * When 'b' flag used, there must be white space or an -! * end-of-line after the string in the line. -! */ - if (vim_strchr(part_buf, COM_BLANK) != NULL - && !vim_iswhite(line[i + j]) && line[i + j] != NUL) - continue; - -! /* -! * We have found a match, stop searching. -! */ -! i += j; -! got_com = TRUE; - found_one = TRUE; - break; - } - -! /* -! * No match found, stop scanning. -! */ - if (!found_one) - break; - -! /* -! * Include any trailing white space. -! */ - while (vim_iswhite(line[i])) - ++i; - -! /* -! * If this comment doesn't nest, stop here. -! */ - if (vim_strchr(part_buf, COM_NEST) == NULL) - break; - } - return (got_com ? i : 0); - } - #endif ---- 1580,1683 ---- - found_one = FALSE; - for (list = curbuf->b_p_com; *list; ) - { -! /* Get one option part into part_buf[]. Advance "list" to next -! * one. Put "string" at start of string. */ -! if (!got_com && flags != NULL) -! *flags = list; /* remember where flags started */ -! prev_list = list; - (void)copy_option_part(&list, part_buf, COM_MAX_LEN, ","); - string = vim_strchr(part_buf, ':'); - if (string == NULL) /* missing ':', ignore this part */ - continue; - *string++ = NUL; /* isolate flags from string */ - -! /* If we found a middle match previously, use that match when this -! * is not a middle or end. */ -! if (middle_match_len != 0 -! && vim_strchr(part_buf, COM_MIDDLE) == NULL -! && vim_strchr(part_buf, COM_END) == NULL) -! break; -! -! /* When we already found a nested comment, only accept further -! * nested comments. */ - if (got_com && vim_strchr(part_buf, COM_NEST) == NULL) - continue; - -! /* When 'O' flag present and using "O" command skip this one. */ - if (backward && vim_strchr(part_buf, COM_NOBACK) != NULL) - continue; - -! /* Line contents and string must match. - * When string starts with white space, must have some white space - * (but the amount does not need to match, there might be a mix of -! * TABs and spaces). */ - if (vim_iswhite(string[0])) - { - if (i == 0 || !vim_iswhite(line[i - 1])) -! continue; /* missing shite space */ - while (vim_iswhite(string[0])) - ++string; - } - for (j = 0; string[j] != NUL && string[j] == line[i + j]; ++j) - ; - if (string[j] != NUL) -! continue; /* string doesn't match */ - -! /* When 'b' flag used, there must be white space or an -! * end-of-line after the string in the line. */ - if (vim_strchr(part_buf, COM_BLANK) != NULL - && !vim_iswhite(line[i + j]) && line[i + j] != NUL) - continue; - -! /* We have found a match, stop searching unless this is a middle -! * comment. The middle comment can be a substring of the end -! * comment in which case it's better to return the length of the -! * end comment and its flags. Thus we keep searching with middle -! * and end matches and use an end match if it matches better. */ -! if (vim_strchr(part_buf, COM_MIDDLE) != NULL) -! { -! if (middle_match_len == 0) -! { -! middle_match_len = j; -! saved_flags = prev_list; -! } -! continue; -! } -! if (middle_match_len != 0 && j > middle_match_len) -! /* Use this match instead of the middle match, since it's a -! * longer thus better match. */ -! middle_match_len = 0; -! -! if (middle_match_len == 0) -! i += j; - found_one = TRUE; - break; - } - -! if (middle_match_len != 0) -! { -! /* Use the previously found middle match after failing to find a -! * match with an end. */ -! if (!got_com && flags != NULL) -! *flags = saved_flags; -! i += middle_match_len; -! found_one = TRUE; -! } -! -! /* No match found, stop scanning. */ - if (!found_one) - break; - -! /* Include any trailing white space. */ - while (vim_iswhite(line[i])) - ++i; - -! /* If this comment doesn't nest, stop here. */ -! got_com = TRUE; - if (vim_strchr(part_buf, COM_NEST) == NULL) - break; - } -+ - return (got_com ? i : 0); - } - #endif -*** ../vim-7.3.179/src/testdir/test3.in 2011-05-10 11:56:26.000000000 +0200 ---- src/testdir/test3.in 2011-05-10 12:05:50.000000000 +0200 -*************** -*** 1373,1378 **** ---- 1373,1390 ---- - } - - STARTTEST -+ :set com=s1:/*,m:*,ex:*/ -+ ]]3jofoo(); -+ ENDTEST -+ -+ void func(void) -+ { -+ /* -+ * This is a comment. -+ */ -+ } -+ -+ STARTTEST - :g/^STARTTEST/.,/^ENDTEST/d - :1;/start of AUTO/,$wq! test.out - ENDTEST -*** ../vim-7.3.179/src/testdir/test3.ok 2011-05-10 11:56:26.000000000 +0200 ---- src/testdir/test3.ok 2011-05-10 12:05:50.000000000 +0200 -*************** -*** 1225,1227 **** ---- 1225,1236 ---- - << "c"; - } - -+ -+ void func(void) -+ { -+ /* -+ * This is a comment. -+ */ -+ foo(); -+ } -+ -*** ../vim-7.3.179/src/version.c 2011-05-10 11:56:26.000000000 +0200 ---- src/version.c 2011-05-10 13:37:28.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 180, - /**/ - --- -"Thou shalt not follow the Null Pointer, for at its end Chaos and -Madness lie." - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.181 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.181 -Problem: When repeating the insert of CTRL-V or a digraph the display may - not be updated correctly. -Solution: Only call edit_unputchar() after edit_putchar(). (Lech Lorens) -Files: src/edit.c - - -*** ../vim-7.3.180/src/edit.c 2010-11-10 17:11:29.000000000 +0100 ---- src/edit.c 2011-05-10 14:16:41.000000000 +0200 -*************** -*** 1553,1564 **** ---- 1553,1568 ---- - ins_ctrl_v() - { - int c; -+ int did_putchar = FALSE; - - /* may need to redraw when no more chars available now */ - ins_redraw(FALSE); - - if (redrawing() && !char_avail()) -+ { - edit_putchar('^', TRUE); -+ did_putchar = TRUE; -+ } - AppendToRedobuff((char_u *)CTRL_V_STR); /* CTRL-V */ - - #ifdef FEAT_CMDL_INFO -*************** -*** 1566,1573 **** - #endif - - c = get_literal(); -! edit_unputchar(); /* when line fits in 'columns' the '^' is at the start -! of the next line and will not be redrawn */ - #ifdef FEAT_CMDL_INFO - clear_showcmd(); - #endif ---- 1570,1579 ---- - #endif - - c = get_literal(); -! if (did_putchar) -! /* when the line fits in 'columns' the '^' is at the start of the next -! * line and will not removed by the redraw */ -! edit_unputchar(); - #ifdef FEAT_CMDL_INFO - clear_showcmd(); - #endif -*************** -*** 9637,9642 **** ---- 9643,9649 ---- - { - int c; - int cc; -+ int did_putchar = FALSE; - - pc_status = PC_STATUS_UNSET; - if (redrawing() && !char_avail()) -*************** -*** 9645,9650 **** ---- 9652,9658 ---- - ins_redraw(FALSE); - - edit_putchar('?', TRUE); -+ did_putchar = TRUE; - #ifdef FEAT_CMDL_INFO - add_to_showcmd_c(Ctrl_K); - #endif -*************** -*** 9661,9668 **** - c = plain_vgetc(); - --no_mapping; - --allow_keys; -! edit_unputchar(); /* when line fits in 'columns' the '?' is at the start -! of the next line and will not be redrawn */ - - if (IS_SPECIAL(c) || mod_mask) /* special key */ - { ---- 9669,9678 ---- - c = plain_vgetc(); - --no_mapping; - --allow_keys; -! if (did_putchar) -! /* when the line fits in 'columns' the '?' is at the start of the next -! * line and will not be removed by the redraw */ -! edit_unputchar(); - - if (IS_SPECIAL(c) || mod_mask) /* special key */ - { -*************** -*** 9674,9679 **** ---- 9684,9690 ---- - } - if (c != ESC) - { -+ did_putchar = FALSE; - if (redrawing() && !char_avail()) - { - /* may need to redraw when no more chars available now */ -*************** -*** 9681,9691 **** - - if (char2cells(c) == 1) - { -- /* first remove the '?', otherwise it's restored when typing -- * an ESC next */ -- edit_unputchar(); - ins_redraw(FALSE); - edit_putchar(c, TRUE); - } - #ifdef FEAT_CMDL_INFO - add_to_showcmd_c(c); ---- 9692,9700 ---- - - if (char2cells(c) == 1) - { - ins_redraw(FALSE); - edit_putchar(c, TRUE); -+ did_putchar = TRUE; - } - #ifdef FEAT_CMDL_INFO - add_to_showcmd_c(c); -*************** -*** 9696,9703 **** - cc = plain_vgetc(); - --no_mapping; - --allow_keys; -! edit_unputchar(); /* when line fits in 'columns' the '?' is at the -! start of the next line and will not be redrawn */ - if (cc != ESC) - { - AppendToRedobuff((char_u *)CTRL_V_STR); ---- 9705,9714 ---- - cc = plain_vgetc(); - --no_mapping; - --allow_keys; -! if (did_putchar) -! /* when the line fits in 'columns' the '?' is at the start of the -! * next line and will not be removed by a redraw */ -! edit_unputchar(); - if (cc != ESC) - { - AppendToRedobuff((char_u *)CTRL_V_STR); -*** ../vim-7.3.180/src/version.c 2011-05-10 13:38:23.000000000 +0200 ---- src/version.c 2011-05-10 14:20:40.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 181, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -74. Your most erotic dreams are about cybersex - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.182 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.182 (after 7.3.180) -Problem: Compiler warning for uninitialized variable. -Solution: Add dummy initializer. -Files: src/misc1.c - - -*** ../vim-7.3.181/src/misc1.c 2011-05-10 13:38:23.000000000 +0200 ---- src/misc1.c 2011-05-10 14:37:39.000000000 +0200 -*************** -*** 1563,1569 **** - char_u *list; - int middle_match_len = 0; - char_u *prev_list; -! char_u *saved_flags; - - i = 0; - while (vim_iswhite(line[i])) /* leading white space is ignored */ ---- 1563,1569 ---- - char_u *list; - int middle_match_len = 0; - char_u *prev_list; -! char_u *saved_flags = NULL; - - i = 0; - while (vim_iswhite(line[i])) /* leading white space is ignored */ -*** ../vim-7.3.181/src/version.c 2011-05-10 14:22:10.000000000 +0200 ---- src/version.c 2011-05-10 14:38:39.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 182, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -75. You start wondering whether you could actually upgrade your brain - with a Pentium Pro microprocessor 80. The upgrade works just fine. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.183 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.183 (after 7.3.174) -Problem: When Exuberant ctags binary is exuberant-ctags it's not found. -Solution: Add configure check for exuberant-ctags. -Files: src/configure.in, src/auto/configure - - -*** ../vim-7.3.182/src/configure.in 2011-05-05 18:10:11.000000000 +0200 ---- src/configure.in 2011-05-10 15:39:38.000000000 +0200 -*************** -*** 3375,3384 **** - dnl -i+m to test for older Exuberant ctags - AC_MSG_CHECKING(how to create tags) - test -f tags && mv tags tags.save -! if (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then -! TAGPRG="exctags -I INIT+ --fields=+S" -! elif (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then - TAGPRG="ctags -I INIT+ --fields=+S" - else - TAGPRG="ctags" - (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags" ---- 3375,3386 ---- - dnl -i+m to test for older Exuberant ctags - AC_MSG_CHECKING(how to create tags) - test -f tags && mv tags tags.save -! if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then - TAGPRG="ctags -I INIT+ --fields=+S" -+ elif (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then -+ TAGPRG="exctags -I INIT+ --fields=+S" -+ elif (eval exuberant-ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then -+ TAGPRG="exuberant-ctags -I INIT+ --fields=+S" - else - TAGPRG="ctags" - (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags" -*** ../vim-7.3.182/src/auto/configure 2011-05-05 18:10:11.000000000 +0200 ---- src/auto/configure 2011-05-10 15:39:41.000000000 +0200 -*************** -*** 12028,12037 **** - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create tags" >&5 - $as_echo_n "checking how to create tags... " >&6; } - test -f tags && mv tags tags.save -! if (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&5 2>&1; then -! TAGPRG="exctags -I INIT+ --fields=+S" -! elif (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&5 2>&1; then - TAGPRG="ctags -I INIT+ --fields=+S" - else - TAGPRG="ctags" - (eval etags /dev/null) < /dev/null 1>&5 2>&1 && TAGPRG="etags" ---- 12028,12039 ---- - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create tags" >&5 - $as_echo_n "checking how to create tags... " >&6; } - test -f tags && mv tags tags.save -! if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&5 2>&1; then - TAGPRG="ctags -I INIT+ --fields=+S" -+ elif (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&5 2>&1; then -+ TAGPRG="exctags -I INIT+ --fields=+S" -+ elif (eval exuberant-ctags --version /dev/null | grep Exuberant) < /dev/null 1>&5 2>&1; then -+ TAGPRG="exuberant-ctags -I INIT+ --fields=+S" - else - TAGPRG="ctags" - (eval etags /dev/null) < /dev/null 1>&5 2>&1 && TAGPRG="etags" -*** ../vim-7.3.182/src/version.c 2011-05-10 14:44:07.000000000 +0200 ---- src/version.c 2011-05-10 15:40:48.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 183, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -78. You find yourself dialing IP numbers on the phone. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.184 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.184 -Problem: Static code analysis errors in riscOS. -Solution: Make buffer size bigger. (Dominique Pelle) -Files: src/gui_riscos.c - - -*** ../vim-7.3.183/src/gui_riscos.c 2010-08-15 21:57:28.000000000 +0200 ---- src/gui_riscos.c 2011-05-10 15:49:56.000000000 +0200 -*************** -*** 1756,1762 **** - - if (button & 0x444) - { -! int front_block[10]; - /* Dragging with Select - bring window to front first */ - front_block[0] = gui.window_handle; - swi(Wimp_GetWindowState, 0, front_block); ---- 1756,1762 ---- - - if (button & 0x444) - { -! int front_block[64]; - /* Dragging with Select - bring window to front first */ - front_block[0] = gui.window_handle; - swi(Wimp_GetWindowState, 0, front_block); -*************** -*** 1874,1880 **** - - if (ro_dragging == DRAG_RESIZE_WINDOW) - { -! /* Resizeing the main window. */ - block[2] = y; - block[3] = x; - ro_open_main(block); ---- 1874,1880 ---- - - if (ro_dragging == DRAG_RESIZE_WINDOW) - { -! /* Resizing the main window. */ - block[2] = y; - block[3] = x; - ro_open_main(block); -*************** -*** 2651,2657 **** - long_u length; - - block[0] = 48; /* Size of block. */ -! block[3] = 0; /* Orinial message. */ - block[4] = 0x10; /* Data request. */ - block[5] = gui.window_handle; - block[6] = RO_LOAD_CLIPBOARD; /* Internal handle. */ ---- 2651,2657 ---- - long_u length; - - block[0] = 48; /* Size of block. */ -! block[3] = 0; /* Original message. */ - block[4] = 0x10; /* Data request. */ - block[5] = gui.window_handle; - block[6] = RO_LOAD_CLIPBOARD; /* Internal handle. */ -*** ../vim-7.3.183/src/version.c 2011-05-10 15:41:59.000000000 +0200 ---- src/version.c 2011-05-10 15:51:29.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 184, - /**/ - --- -If bankers can count, how come they have eight windows and -only four tellers? - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.185 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.185 -Problem: ":windo g/pattern/q" closes windows and reports "N more lines". - (Tim Chase) -Solution: Remember what buffer ":global" started in. (Jean-Rene David) -Files: src/ex_cmds.c - - -*** ../vim-7.3.184/src/ex_cmds.c 2011-04-11 21:35:03.000000000 +0200 ---- src/ex_cmds.c 2011-05-10 15:58:48.000000000 +0200 -*************** -*** 5365,5372 **** - global_exe(cmd) - char_u *cmd; - { -! linenr_T old_lcount; /* b_ml.ml_line_count before the command */ -! linenr_T lnum; /* line number according to old situation */ - - /* - * Set current position only once for a global command. ---- 5365,5373 ---- - global_exe(cmd) - char_u *cmd; - { -! linenr_T old_lcount; /* b_ml.ml_line_count before the command */ -! buf_T *old_buf = curbuf; /* remember what buffer we started in */ -! linenr_T lnum; /* line number according to old situation */ - - /* - * Set current position only once for a global command. -*************** -*** 5410,5417 **** - msg_didout = FALSE; - - /* If substitutes done, report number of substitutes, otherwise report -! * number of extra or deleted lines. */ -! if (!do_sub_msg(FALSE)) - msgmore(curbuf->b_ml.ml_line_count - old_lcount); - } - ---- 5411,5420 ---- - msg_didout = FALSE; - - /* If substitutes done, report number of substitutes, otherwise report -! * number of extra or deleted lines. -! * Don't report extra or deleted lines in the edge case where the buffer -! * we are in after execution is different from the buffer we started in. */ -! if (!do_sub_msg(FALSE) && curbuf == old_buf) - msgmore(curbuf->b_ml.ml_line_count - old_lcount); - } - -*** ../vim-7.3.184/src/version.c 2011-05-10 15:52:10.000000000 +0200 ---- src/version.c 2011-05-10 15:57:40.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 185, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -79. All of your most erotic dreams have a scrollbar at the right side. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.186 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.186 -Problem: When 'clipboard' contains "unnamed" or "unnamedplus" the value of - v:register is wrong for operators without a specific register. -Solution: Adjust the register according to 'clipboard'. (Ingo Karkat) -Files: src/normal.c - - -*** ../vim-7.3.185/src/normal.c 2010-12-17 18:52:56.000000000 +0100 ---- src/normal.c 2011-05-10 16:07:49.000000000 +0200 -*************** -*** 1202,1208 **** - { - clearop(oap); - #ifdef FEAT_EVAL -! set_reg_var('"'); - #endif - } - ---- 1202,1214 ---- - { - clearop(oap); - #ifdef FEAT_EVAL -! { -! int regname = 0; -! /* Adjust the register according to 'clipboard', so that when -! * "unnamed" is present it becomes '*' or '+' instead of '"'. */ -! adjust_clip_reg(®name); -! set_reg_var(regname); -! } - #endif - } - -*** ../vim-7.3.185/src/version.c 2011-05-10 16:00:43.000000000 +0200 ---- src/version.c 2011-05-10 16:10:10.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 186, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -80. At parties, you introduce your spouse as your "service provider." - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.187 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.187 -Problem: The RISC OS port has obvious errors and is not being maintained. -Solution: Remove the RISC OS files and code. -Files: src/ascii.h, src/eval.c, src/ex_cmds.c, src/ex_cmds2.c, - src/ex_docmd.c, src/fileio.c, src/globals.h, src/gui.c, src/gui.h, - src/main.c, src/memfile.c, src/memline.c, src/misc1.c, - src/proto.h, src/quickfix.c, src/search.c, src/structs.h, - src/term.c, src/termlib.c, src/version.c, src/vim.h, - src/gui_riscos.h, src/os_riscos.h, src/gui_riscos.c, - src/os_riscos.c, runtime/doc/os_risc.txt - - -*** ../vim-7.3.186/src/ascii.h 2010-08-15 21:57:25.000000000 +0200 ---- src/ascii.h 2011-05-10 16:22:08.000000000 +0200 -*************** -*** 183,193 **** - # define PATHSEP psepc - # define PATHSEPSTR pseps - #else -! # ifdef RISCOS -! # define PATHSEP '.' -! # define PATHSEPSTR "." -! # else -! # define PATHSEP '/' -! # define PATHSEPSTR "/" -! # endif - #endif ---- 183,188 ---- - # define PATHSEP psepc - # define PATHSEPSTR pseps - #else -! # define PATHSEP '/' -! # define PATHSEPSTR "/" - #endif -*** ../vim-7.3.186/src/eval.c 2011-04-21 14:27:21.000000000 +0200 ---- src/eval.c 2011-05-10 16:22:21.000000000 +0200 -*************** -*** 11818,11826 **** - #ifdef __QNX__ - "qnx", - #endif -- #ifdef RISCOS -- "riscos", -- #endif - #ifdef UNIX - "unix", - #endif ---- 11818,11823 ---- -*** ../vim-7.3.186/src/ex_cmds.c 2011-05-10 16:00:43.000000000 +0200 ---- src/ex_cmds.c 2011-05-10 16:23:22.000000000 +0200 -*************** -*** 899,907 **** - * Handle the ":!cmd" command. Also for ":r !cmd" and ":w !cmd" - * Bangs in the argument are replaced with the previously entered command. - * Remember the argument. -- * -- * RISCOS: Bangs only replaced when followed by a space, since many -- * pathnames contain one. - */ - void - do_bang(addr_count, eap, forceit, do_in, do_out) ---- 899,904 ---- -*************** -*** 980,990 **** - trailarg = NULL; - while (*p) - { -! if (*p == '!' -! #ifdef RISCOS -! && (p[1] == ' ' || p[1] == NUL) -! #endif -! ) - { - if (p > newcmd && p[-1] == '\\') - STRMOVE(p - 1, p); ---- 977,983 ---- - trailarg = NULL; - while (*p) - { -! if (*p == '!') - { - if (p > newcmd && p[-1] == '\\') - STRMOVE(p - 1, p); -*************** -*** 1578,1591 **** - if (p != NULL) - *p = NUL; - } -- # ifdef RISCOS -- STRCAT(buf, " { < "); /* Use RISC OS notation for input. */ -- STRCAT(buf, itmp); -- STRCAT(buf, " } "); -- # else - STRCAT(buf, " <"); /* " < " causes problems on Amiga */ - STRCAT(buf, itmp); -- # endif - if (*p_shq == NUL) - { - p = vim_strchr(cmd, '|'); ---- 1571,1578 ---- -*************** -*** 1634,1649 **** - else - vim_snprintf((char *)end, (size_t)(buflen - (end - buf)), - #ifdef FEAT_QUICKFIX -- # ifndef RISCOS -- opt != p_sp ? " %s%s" : -- # endif - " %s %s", - #else -- # ifndef RISCOS - " %s%s", /* " > %s" causes problems on Amiga */ -- # else -- " %s %s", /* But is needed for 'shellpipe' and RISC OS */ -- # endif - #endif - (char *)opt, (char *)fname); - } ---- 1621,1629 ---- -*************** -*** 1844,1854 **** - #ifdef VMS - (char_u *)"-tmp", - #else -- # ifdef RISCOS -- (char_u *)"/tmp", -- # else - (char_u *)".tmp", -- # endif - #endif - FALSE); - if (tempname == NULL) /* out of memory */ ---- 1824,1830 ---- -*** ../vim-7.3.186/src/ex_cmds2.c 2011-04-11 21:35:03.000000000 +0200 ---- src/ex_cmds2.c 2011-05-10 16:23:47.000000000 +0200 -*************** -*** 500,517 **** - /* Expand the file name in the same way as do_source(). This means - * doing it twice, so that $DIR/file gets expanded when $DIR is - * "~/dir". */ -- #ifdef RISCOS -- q = mch_munge_fname(p); -- #else - q = expand_env_save(p); -- #endif - if (q == NULL) - return FAIL; -- #ifdef RISCOS -- p = mch_munge_fname(q); -- #else - p = expand_env_save(q); -- #endif - vim_free(q); - if (p == NULL) - return FAIL; ---- 500,509 ---- -*************** -*** 2940,2950 **** - proftime_T wait_start; - #endif - -- #ifdef RISCOS -- p = mch_munge_fname(fname); -- #else - p = expand_env_save(fname); -- #endif - if (p == NULL) - return retval; - fname_exp = fix_fname(p); ---- 2932,2938 ---- -*** ../vim-7.3.186/src/ex_docmd.c 2011-05-05 14:26:37.000000000 +0200 ---- src/ex_docmd.c 2011-05-10 16:24:18.000000000 +0200 -*************** -*** 9702,9715 **** - valid = 0; /* Must have ":p:h" to be valid */ - } - else -- #ifdef RISCOS -- /* Always use the full path for RISC OS if possible. */ -- result = curbuf->b_ffname; -- if (result == NULL) -- result = curbuf->b_fname; -- #else - result = curbuf->b_fname; -- #endif - break; - - case SPEC_HASH: /* '#' or "#99": alternate file */ ---- 9702,9708 ---- -*************** -*** 9854,9864 **** - if (src[*usedlen] == '<') /* remove the file name extension */ - { - ++*usedlen; -- #ifdef RISCOS -- if ((s = vim_strrchr(result, '/')) != NULL && s >= gettail(result)) -- #else - if ((s = vim_strrchr(result, '.')) != NULL && s >= gettail(result)) -- #endif - resultlen = (int)(s - result); - } - #ifdef FEAT_MODIFY_FNAME ---- 9847,9853 ---- -*************** -*** 10875,10882 **** - else if (vim_ispathsep(*p)) - { - *s++ = '='; -! #if defined(BACKSLASH_IN_FILENAME) || defined(AMIGA) || defined(RISCOS) \ -! || defined(VMS) - if (*p == ':') - *s++ = '-'; - else ---- 10864,10870 ---- - else if (vim_ispathsep(*p)) - { - *s++ = '='; -! #if defined(BACKSLASH_IN_FILENAME) || defined(AMIGA) || defined(VMS) - if (*p == ':') - *s++ = '-'; - else -*** ../vim-7.3.186/src/fileio.c 2011-05-05 16:41:19.000000000 +0200 ---- src/fileio.c 2011-05-10 16:26:06.000000000 +0200 -*************** -*** 504,521 **** - - if (newfile && !read_stdin && !read_buffer) - { -! /* Remember time of file. -! * For RISCOS, also remember the filetype. -! */ - if (mch_stat((char *)fname, &st) >= 0) - { - buf_store_time(curbuf, &st, fname); - curbuf->b_mtime_read = curbuf->b_mtime; -- -- #if defined(RISCOS) && defined(FEAT_OSFILETYPE) -- /* Read the filetype into the buffer local filetype option. */ -- mch_read_filetype(fname); -- #endif - #ifdef UNIX - /* - * Use the protection bits of the original file for the swap file. ---- 504,514 ---- - - if (newfile && !read_stdin && !read_buffer) - { -! /* Remember time of file. */ - if (mch_stat((char *)fname, &st) >= 0) - { - buf_store_time(curbuf, &st, fname); - curbuf->b_mtime_read = curbuf->b_mtime; - #ifdef UNIX - /* - * Use the protection bits of the original file for the swap file. -*************** -*** 557,563 **** - - /* - * for UNIX: check readonly with perm and mch_access() -- * for RISCOS: same as Unix, otherwise file gets re-datestamped! - * for MSDOS and Amiga: check readonly by trying to open the file for writing - */ - file_readonly = FALSE; ---- 550,555 ---- -*************** -*** 3804,3816 **** - - /* make sure we have a valid backup extension to use */ - if (*p_bex == NUL) -- { -- #ifdef RISCOS -- backup_ext = (char_u *)"/bak"; -- #else - backup_ext = (char_u *)".bak"; -- #endif -- } - else - backup_ext = p_bex; - ---- 3796,3802 ---- -*************** -*** 4724,4734 **** - #endif - if (perm >= 0) /* set perm. of new file same as old file */ - (void)mch_setperm(wfname, perm); -- #ifdef RISCOS -- if (!append && !filtering) -- /* Set the filetype after writing the file. */ -- mch_set_filetype(wfname, buf->b_p_oft); -- #endif - #ifdef HAVE_ACL - /* Probably need to set the ACL before changing the user (can't set the - * ACL on a file the user doesn't own). */ ---- 4710,4715 ---- -*************** -*** 6262,6280 **** - */ - for (ptr = retval + fnamelen; ptr > retval; mb_ptr_back(retval, ptr)) - { -- #ifndef RISCOS - if (*ext == '.' -! # ifdef USE_LONG_FNAME - && (!USE_LONG_FNAME || shortname) -! # else -! # ifndef SHORT_FNAME - && shortname -- # endif - # endif - ) - if (*ptr == '.') /* replace '.' by '_' */ - *ptr = '_'; -- #endif - if (vim_ispathsep(*ptr)) - { - ++ptr; ---- 6243,6259 ---- - */ - for (ptr = retval + fnamelen; ptr > retval; mb_ptr_back(retval, ptr)) - { - if (*ext == '.' -! #ifdef USE_LONG_FNAME - && (!USE_LONG_FNAME || shortname) -! #else -! # ifndef SHORT_FNAME - && shortname - # endif -+ #endif - ) - if (*ptr == '.') /* replace '.' by '_' */ - *ptr = '_'; - if (vim_ispathsep(*ptr)) - { - ++ptr; -*************** -*** 6309,6331 **** - if (fname == NULL || *fname == NUL - || vim_ispathsep(fname[STRLEN(fname) - 1])) - { -- #ifdef RISCOS -- if (*ext == '/') -- #else - if (*ext == '.') -- #endif - *s++ = '_'; - } - /* - * If the extension starts with '.', truncate the base name at 8 - * characters - */ -- #ifdef RISCOS -- /* We normally use '/', but swap files are '_' */ -- else if (*ext == '/' || *ext == '_') -- #else - else if (*ext == '.') -- #endif - { - if ((size_t)(s - ptr) > (size_t)8) - { ---- 6288,6301 ---- -*************** -*** 6337,6349 **** - * If the extension doesn't start with '.', and the file name - * doesn't have an extension yet, append a '.' - */ -- #ifdef RISCOS -- else if ((e = vim_strchr(ptr, '/')) == NULL) -- *s++ = '/'; -- #else - else if ((e = vim_strchr(ptr, '.')) == NULL) - *s++ = '.'; -- #endif - /* - * If the extension doesn't start with '.', and there already is an - * extension, it may need to be truncated ---- 6307,6314 ---- -*************** -*** 6371,6393 **** - /* - * Prepend the dot. - */ -! if (prepend_dot && !shortname && *(e = gettail(retval)) != -! #ifdef RISCOS -! '/' -! #else -! '.' -! #endif - #ifdef USE_LONG_FNAME - && USE_LONG_FNAME - #endif - ) - { - STRMOVE(e + 1, e); -- #ifdef RISCOS -- *e = '/'; -- #else - *e = '.'; -- #endif - } - #endif - ---- 6336,6349 ---- - /* - * Prepend the dot. - */ -! if (prepend_dot && !shortname && *(e = gettail(retval)) != '.' - #ifdef USE_LONG_FNAME - && USE_LONG_FNAME - #endif - ) - { - STRMOVE(e + 1, e); - *e = '.'; - } - #endif - -*************** -*** 10205,10223 **** - ++p; - break; - case '.': -- #ifdef RISCOS -- if (allow_dirs != NULL) -- *allow_dirs = TRUE; -- /* FALLTHROUGH */ -- #endif - case '~': - reg_pat[i++] = '\\'; - reg_pat[i++] = *p; - break; - case '?': -- #ifdef RISCOS -- case '#': -- #endif - reg_pat[i++] = '.'; - break; - case '\\': ---- 10161,10171 ---- -*** ../vim-7.3.186/src/globals.h 2011-05-05 14:26:37.000000000 +0200 ---- src/globals.h 2011-05-10 16:26:13.000000000 +0200 -*************** -*** 1513,1519 **** - EXTERN char_u e_sandbox[] INIT(= N_("E48: Not allowed in sandbox")); - #endif - EXTERN char_u e_secure[] INIT(= N_("E523: Not allowed here")); -! #if defined(AMIGA) || defined(MACOS) || defined(MSWIN) || defined(RISCOS) \ - || defined(UNIX) || defined(VMS) || defined(OS2) - EXTERN char_u e_screenmode[] INIT(= N_("E359: Screen mode setting not supported")); - #endif ---- 1513,1519 ---- - EXTERN char_u e_sandbox[] INIT(= N_("E48: Not allowed in sandbox")); - #endif - EXTERN char_u e_secure[] INIT(= N_("E523: Not allowed here")); -! #if defined(AMIGA) || defined(MACOS) || defined(MSWIN) \ - || defined(UNIX) || defined(VMS) || defined(OS2) - EXTERN char_u e_screenmode[] INIT(= N_("E359: Screen mode setting not supported")); - #endif -*** ../vim-7.3.186/src/gui.c 2011-01-17 20:08:03.000000000 +0100 ---- src/gui.c 2011-05-10 16:26:53.000000000 +0200 -*************** -*** 2156,2162 **** - - if (highlight_mask & (HL_INVERSE | HL_STANDOUT)) - { -! #if defined(AMIGA) || defined(RISCOS) - gui_mch_set_colors(bg_color, fg_color); - #else - gui_mch_set_fg_color(bg_color); ---- 2156,2162 ---- - - if (highlight_mask & (HL_INVERSE | HL_STANDOUT)) - { -! #if defined(AMIGA) - gui_mch_set_colors(bg_color, fg_color); - #else - gui_mch_set_fg_color(bg_color); -*************** -*** 2165,2171 **** - } - else - { -! #if defined(AMIGA) || defined(RISCOS) - gui_mch_set_colors(fg_color, bg_color); - #else - gui_mch_set_fg_color(fg_color); ---- 2165,2171 ---- - } - else - { -! #if defined(AMIGA) - gui_mch_set_colors(fg_color, bg_color); - #else - gui_mch_set_fg_color(fg_color); -*************** -*** 2193,2199 **** - if (back != 0 && ((draw_flags & DRAW_BOLD) || (highlight_mask & HL_ITALIC))) - return FAIL; - -! #if defined(RISCOS) || defined(FEAT_GUI_GTK) - /* If there's no italic font, then fake it. - * For GTK2, we don't need a different font for italic style. */ - if (hl_mask_todo & HL_ITALIC) ---- 2193,2199 ---- - if (back != 0 && ((draw_flags & DRAW_BOLD) || (highlight_mask & HL_ITALIC))) - return FAIL; - -! #if defined(FEAT_GUI_GTK) - /* If there's no italic font, then fake it. - * For GTK2, we don't need a different font for italic style. */ - if (hl_mask_todo & HL_ITALIC) -*************** -*** 2985,3010 **** - did_clip = TRUE; - } - /* Allow the left button to start the selection */ -- else if (button == -- # ifdef RISCOS -- /* Only start a drag on a drag event. Otherwise -- * we don't get a release event. */ -- MOUSE_DRAG -- # else -- MOUSE_LEFT -- # endif -- ) -- { -- clip_start_selection(X_2_COL(x), Y_2_ROW(y), repeated_click); -- did_clip = TRUE; -- } -- # ifdef RISCOS - else if (button == MOUSE_LEFT) - { -! clip_clear_selection(); - did_clip = TRUE; - } -- # endif - - /* Always allow pasting */ - if (button != MOUSE_MIDDLE) ---- 2985,2995 ---- - did_clip = TRUE; - } - /* Allow the left button to start the selection */ - else if (button == MOUSE_LEFT) - { -! clip_start_selection(X_2_COL(x), Y_2_ROW(y), repeated_click); - did_clip = TRUE; - } - - /* Always allow pasting */ - if (button != MOUSE_MIDDLE) -*** ../vim-7.3.186/src/gui.h 2010-08-15 21:57:25.000000000 +0200 ---- src/gui.h 2011-05-10 16:27:19.000000000 +0200 -*************** -*** 52,61 **** - # include <SegLoad.h>*/ - #endif - -- #ifdef RISCOS -- # include "gui_riscos.h" -- #endif -- - #ifdef FEAT_GUI_PHOTON - # include <Ph.h> - # include <Pt.h> ---- 52,57 ---- -*************** -*** 151,157 **** - #define DRAW_BOLD 0x02 /* draw bold text */ - #define DRAW_UNDERL 0x04 /* draw underline text */ - #define DRAW_UNDERC 0x08 /* draw undercurl text */ -! #if defined(RISCOS) || defined(FEAT_GUI_GTK) - # define DRAW_ITALIC 0x10 /* draw italic text */ - #endif - #define DRAW_CURSOR 0x20 /* drawing block cursor (win32) */ ---- 147,153 ---- - #define DRAW_BOLD 0x02 /* draw bold text */ - #define DRAW_UNDERL 0x04 /* draw underline text */ - #define DRAW_UNDERC 0x08 /* draw undercurl text */ -! #if defined(FEAT_GUI_GTK) - # define DRAW_ITALIC 0x10 /* draw italic text */ - #endif - #define DRAW_CURSOR 0x20 /* drawing block cursor (win32) */ -*************** -*** 219,227 **** - #ifdef FEAT_GUI_MAC - ControlHandle id; /* A handle to the scrollbar */ - #endif -- #ifdef RISCOS -- int id; /* Window handle of scrollbar window */ -- #endif - #ifdef FEAT_GUI_PHOTON - PtWidget_t *id; - #endif ---- 215,220 ---- -*************** -*** 450,463 **** - int visibility; /* Is window partially/fully obscured? */ - #endif - -- #ifdef RISCOS -- int window_handle; -- char_u *window_title; -- int window_title_size; -- int fg_colour; /* in 0xBBGGRR format */ -- int bg_colour; -- #endif -- - #ifdef FEAT_GUI_PHOTON - PtWidget_t *vimWindow; /* PtWindow */ - PtWidget_t *vimTextArea; /* PtRaw */ ---- 443,448 ---- -*** ../vim-7.3.186/src/main.c 2011-04-11 21:35:03.000000000 +0200 ---- src/main.c 2011-05-10 16:27:33.000000000 +0200 -*************** -*** 3276,3286 **** - main_msg(_("+reverse\t\tDon't use reverse video (also: +rv)")); - main_msg(_("-xrm <resource>\tSet the specified resource")); - #endif /* FEAT_GUI_X11 */ -- #if defined(FEAT_GUI) && defined(RISCOS) -- mch_msg(_("\nArguments recognised by gvim (RISC OS version):\n")); -- main_msg(_("--columns <number>\tInitial width of window in columns")); -- main_msg(_("--rows <number>\tInitial height of window in rows")); -- #endif - #ifdef FEAT_GUI_GTK - mch_msg(_("\nArguments recognised by gvim (GTK+ version):\n")); - main_msg(_("-font <font>\t\tUse <font> for normal text (also: -fn)")); ---- 3276,3281 ---- -*** ../vim-7.3.186/src/memfile.c 2011-03-22 18:10:34.000000000 +0100 ---- src/memfile.c 2011-05-10 16:27:38.000000000 +0200 -*************** -*** 1307,1313 **** - * fname cannot be NameBuff, because it must have been allocated. - */ - mf_set_ffname(mfp); -! #if defined(MSDOS) || defined(MSWIN) || defined(RISCOS) - /* - * A ":!cd e:xxx" may change the directory without us knowning, use the - * full pathname always. Careful: This frees fname! ---- 1307,1313 ---- - * fname cannot be NameBuff, because it must have been allocated. - */ - mf_set_ffname(mfp); -! #if defined(MSDOS) || defined(MSWIN) - /* - * A ":!cd e:xxx" may change the directory without us knowning, use the - * full pathname always. Careful: This frees fname! -*** ../vim-7.3.186/src/memline.c 2011-02-15 11:56:56.000000000 +0100 ---- src/memline.c 2011-05-10 16:28:40.000000000 +0200 -*************** -*** 748,754 **** - continue; - if (mf_open_file(mfp, fname) == OK) /* consumes fname! */ - { -! #if defined(MSDOS) || defined(MSWIN) || defined(RISCOS) - /* - * set full pathname for swap file now, because a ":!cd dir" may - * change directory without us knowing it. ---- 748,754 ---- - continue; - if (mf_open_file(mfp, fname) == OK) /* consumes fname! */ - { -! #if defined(MSDOS) || defined(MSWIN) - /* - * set full pathname for swap file now, because a ":!cd dir" may - * change directory without us knowing it. -*************** -*** 933,939 **** - b0p->b0_fname[0] = NUL; - else - { -! #if defined(MSDOS) || defined(MSWIN) || defined(AMIGA) || defined(RISCOS) - /* Systems that cannot translate "~user" back into a path: copy the - * file name unmodified. Do use slashes instead of backslashes for - * portability. */ ---- 933,939 ---- - b0p->b0_fname[0] = NUL; - else - { -! #if defined(MSDOS) || defined(MSWIN) || defined(AMIGA) - /* Systems that cannot translate "~user" back into a path: copy the - * file name unmodified. Do use slashes instead of backslashes for - * portability. */ -*************** -*** 1103,1109 **** - fname = (char_u *)""; - len = (int)STRLEN(fname); - if (len >= 4 && -! #if defined(VMS) || defined(RISCOS) - STRNICMP(fname + len - 4, "_s" , 2) - #else - STRNICMP(fname + len - 4, ".s" , 2) ---- 1103,1109 ---- - fname = (char_u *)""; - len = (int)STRLEN(fname); - if (len >= 4 && -! #if defined(VMS) - STRNICMP(fname + len - 4, "_s" , 2) - #else - STRNICMP(fname + len - 4, ".s" , 2) -*************** -*** 1773,1783 **** - #ifdef VMS - names[0] = vim_strsave((char_u *)"*_sw%"); - #else -- # ifdef RISCOS -- names[0] = vim_strsave((char_u *)"*_sw#"); -- # else - names[0] = vim_strsave((char_u *)"*.sw?"); -- # endif - #endif - #if defined(UNIX) || defined(WIN3264) - /* For Unix names starting with a dot are special. MS-Windows ---- 1773,1779 ---- -*************** -*** 1804,1814 **** - #ifdef VMS - names[0] = concat_fnames(dir_name, (char_u *)"*_sw%", TRUE); - #else -- # ifdef RISCOS -- names[0] = concat_fnames(dir_name, (char_u *)"*_sw#", TRUE); -- # else - names[0] = concat_fnames(dir_name, (char_u *)"*.sw?", TRUE); -- # endif - #endif - #if defined(UNIX) || defined(WIN3264) - /* For Unix names starting with a dot are special. MS-Windows ---- 1800,1806 ---- -*************** -*** 1877,1883 **** - char_u *swapname; - - swapname = modname(fname_res, -! #if defined(VMS) || defined(RISCOS) - (char_u *)"_swp", FALSE - #else - (char_u *)".swp", TRUE ---- 1869,1875 ---- - char_u *swapname; - - swapname = modname(fname_res, -! #if defined(VMS) - (char_u *)"_swp", FALSE - #else - (char_u *)".swp", TRUE -*************** -*** 2176,2186 **** - #ifdef VMS - names[num_names] = concat_fnames(path, (char_u *)"_sw%", FALSE); - #else -- # ifdef RISCOS -- names[num_names] = concat_fnames(path, (char_u *)"_sw#", FALSE); -- # else - names[num_names] = concat_fnames(path, (char_u *)".sw?", FALSE); -- # endif - #endif - if (names[num_names] == NULL) - goto end; ---- 2168,2174 ---- -*************** -*** 2207,2217 **** - #ifdef VMS - names[num_names] = modname(path, (char_u *)"_sw%", FALSE); - #else -- # ifdef RISCOS -- names[num_names] = modname(path, (char_u *)"_sw#", FALSE); -- # else - names[num_names] = modname(path, (char_u *)".sw?", FALSE); -- # endif - #endif - if (names[num_names] == NULL) - goto end; ---- 2195,2201 ---- -*************** -*** 3205,3211 **** - mf_free(mfp, hp); /* free the data block */ - buf->b_ml.ml_locked = NULL; - -! for (stack_idx = buf->b_ml.ml_stack_top - 1; stack_idx >= 0; --stack_idx) - { - buf->b_ml.ml_stack_top = 0; /* stack is invalid when failing */ - ip = &(buf->b_ml.ml_stack[stack_idx]); ---- 3189,3196 ---- - mf_free(mfp, hp); /* free the data block */ - buf->b_ml.ml_locked = NULL; - -! for (stack_idx = buf->b_ml.ml_stack_top - 1; stack_idx >= 0; -! --stack_idx) - { - buf->b_ml.ml_stack_top = 0; /* stack is invalid when failing */ - ip = &(buf->b_ml.ml_stack[stack_idx]); -*************** -*** 3956,3969 **** - #else - (buf->b_p_sn || buf->b_shortname), - #endif -- #ifdef RISCOS -- /* Avoid problems if fname has special chars, eg <Wimp$Scrap> */ -- ffname, -- #else - fname_res, -- #endif - (char_u *) -! #if defined(VMS) || defined(RISCOS) - "_swp", - #else - ".swp", ---- 3941,3949 ---- - #else - (buf->b_p_sn || buf->b_shortname), - #endif - fname_res, - (char_u *) -! #if defined(VMS) - "_swp", - #else - ".swp", -*************** -*** 4427,4440 **** - } - close(fd); - } -- #ifdef RISCOS -- else -- /* Can't open swap file, though it does exist. -- * Assume that the user is editing two files with -- * the same name in different directories. No error. -- */ -- differ = TRUE; -- #endif - - /* give the ATTENTION message when there is an old swap file - * for the current file, and the buffer was not recovered. */ ---- 4407,4412 ---- -*** ../vim-7.3.186/src/misc1.c 2011-05-10 14:44:07.000000000 +0200 ---- src/misc1.c 2011-05-10 16:29:29.000000000 +0200 -*************** -*** 4589,4613 **** - vim_ispathsep(c) - int c; - { -! #ifdef RISCOS -! return (c == '.' || c == ':'); -! #else -! # ifdef UNIX - return (c == '/'); /* UNIX has ':' inside file names */ -! # else -! # ifdef BACKSLASH_IN_FILENAME - return (c == ':' || c == '/' || c == '\\'); -! # else -! # ifdef VMS - /* server"user passwd"::device:[full.path.name]fname.extension;version" */ - return (c == ':' || c == '[' || c == ']' || c == '/' - || c == '<' || c == '>' || c == '"' ); -! # else /* Amiga */ - return (c == ':' || c == '/'); -! # endif /* VMS */ -! # endif - # endif -! #endif /* RISC OS */ - } - - #if defined(FEAT_SEARCHPATH) || defined(PROTO) ---- 4589,4609 ---- - vim_ispathsep(c) - int c; - { -! #ifdef UNIX - return (c == '/'); /* UNIX has ':' inside file names */ -! #else -! # ifdef BACKSLASH_IN_FILENAME - return (c == ':' || c == '/' || c == '\\'); -! # else -! # ifdef VMS - /* server"user passwd"::device:[full.path.name]fname.extension;version" */ - return (c == ':' || c == '[' || c == ']' || c == '/' - || c == '<' || c == '>' || c == '"' ); -! # else - return (c == ':' || c == '/'); -! # endif /* VMS */ - # endif -! #endif - } - - #if defined(FEAT_SEARCHPATH) || defined(PROTO) -*** ../vim-7.3.186/src/proto.h 2010-08-15 21:57:29.000000000 +0200 ---- src/proto.h 2011-05-10 16:29:45.000000000 +0200 -*************** -*** 62,70 **** - # ifdef __BEOS__ - # include "os_beos.pro" - # endif -- # ifdef RISCOS -- # include "os_riscos.pro" -- # endif - # ifdef __QNX__ - # include "os_qnx.pro" - # endif ---- 62,67 ---- -*************** -*** 245,253 **** - # ifdef FEAT_GUI_X11 - # include "gui_x11.pro" - # endif -- # ifdef RISCOS -- # include "gui_riscos.pro" -- # endif - # ifdef FEAT_GUI_PHOTON - # include "gui_photon.pro" - # endif ---- 242,247 ---- -*** ../vim-7.3.186/src/quickfix.c 2011-05-05 17:14:07.000000000 +0200 ---- src/quickfix.c 2011-05-10 16:30:18.000000000 +0200 -*************** -*** 1182,1202 **** - if (fname == NULL || *fname == NUL) /* no file name */ - return 0; - { -- #ifdef RISCOS -- /* Name is reported as `main.c', but file is `c.main' */ -- return ro_buflist_add(fname); -- #else - char_u *ptr; - int fnum; - -! # ifdef VMS - vms_remove_version(fname); -! # endif -! # ifdef BACKSLASH_IN_FILENAME - if (directory != NULL) - slash_adjust(directory); - slash_adjust(fname); -! # endif - if (directory != NULL && !vim_isAbsName(fname) - && (ptr = concat_fnames(directory, fname, TRUE)) != NULL) - { ---- 1182,1198 ---- - if (fname == NULL || *fname == NUL) /* no file name */ - return 0; - { - char_u *ptr; - int fnum; - -! #ifdef VMS - vms_remove_version(fname); -! #endif -! #ifdef BACKSLASH_IN_FILENAME - if (directory != NULL) - slash_adjust(directory); - slash_adjust(fname); -! #endif - if (directory != NULL && !vim_isAbsName(fname) - && (ptr = concat_fnames(directory, fname, TRUE)) != NULL) - { -*************** -*** 1221,1227 **** - return fnum; - } - return buflist_add(fname, 0); -- #endif - } - } - ---- 1217,1222 ---- -*** ../vim-7.3.186/src/search.c 2011-02-25 18:38:29.000000000 +0100 ---- src/search.c 2011-05-10 16:30:38.000000000 +0200 -*************** -*** 4581,4589 **** - char_u *already = NULL; - char_u *startp = NULL; - char_u *inc_opt = NULL; -- #ifdef RISCOS -- int previous_munging = __riscosify_control; -- #endif - #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX) - win_T *curwin_save = NULL; - #endif ---- 4581,4586 ---- -*************** -*** 4596,4606 **** - if (file_line == NULL) - return; - -- #ifdef RISCOS -- /* UnixLib knows best how to munge c file names - turn munging back on. */ -- int __riscosify_control = 0; -- #endif -- - if (type != CHECK_PATH && type != FIND_DEFINE - #ifdef FEAT_INS_EXPAND - /* when CONT_SOL is set compare "ptr" with the beginning of the line ---- 4593,4598 ---- -*************** -*** 5228,5238 **** - vim_free(regmatch.regprog); - vim_free(incl_regmatch.regprog); - vim_free(def_regmatch.regprog); -- -- #ifdef RISCOS -- /* Restore previous file munging state. */ -- __riscosify_control = previous_munging; -- #endif - } - - static void ---- 5220,5225 ---- -*** ../vim-7.3.186/src/structs.h 2011-03-22 18:10:34.000000000 +0100 ---- src/structs.h 2011-05-10 16:30:49.000000000 +0200 -*************** -*** 2366,2376 **** - MenuHandle menu_handle; - MenuHandle submenu_handle; - #endif -- #ifdef RISCOS -- int *id; /* Not used, but gui.c needs it */ -- int greyed_out; /* Flag */ -- int hidden; -- #endif - #ifdef FEAT_GUI_PHOTON - PtWidget_t *id; - PtWidget_t *submenu_id; ---- 2366,2371 ---- -*** ../vim-7.3.186/src/term.c 2010-12-30 14:47:32.000000000 +0100 ---- src/term.c 2011-05-10 16:31:41.000000000 +0200 -*************** -*** 52,58 **** - - /* - * Here are the builtin termcap entries. They are not stored as complete -! * Tcarr structures, as such a structure is too big. - * - * The entries are compact, therefore they normally are included even when - * HAVE_TGETENT is defined. When HAVE_TGETENT is defined, the builtin entries ---- 52,58 ---- - - /* - * Here are the builtin termcap entries. They are not stored as complete -! * structures with all entries, as such a structure is too big. - * - * The entries are compact, therefore they normally are included even when - * HAVE_TGETENT is defined. When HAVE_TGETENT is defined, the builtin entries -*************** -*** 199,269 **** - #endif - - #ifndef NO_BUILTIN_TCAPS -- # if defined(RISCOS) || defined(ALL_BUILTIN_TCAPS) -- /* -- * Default for the Acorn. -- */ -- {(int)KS_NAME, "riscos"}, -- {(int)KS_CL, "\014"}, /* Cls and Home Cursor */ -- {(int)KS_CM, "\001%d\001%d\002"}, /* Position cursor */ -- -- {(int)KS_CCO, "16"}, /* Allow 16 colors */ -- -- {(int)KS_CAF, "\001%d\021"}, /* Set foreground colour */ -- {(int)KS_CAB, "\001%d\022"}, /* Set background colour */ -- -- -- {(int)KS_ME, "\004"}, /* Normal mode */ -- {(int)KS_MR, "\005"}, /* Reverse */ -- -- {(int)KS_VI, "\016"}, /* Cursor invisible */ -- {(int)KS_VE, "\017"}, /* Cursor visible */ -- {(int)KS_VS, "\020"}, /* Cursor very visible */ -- -- {(int)KS_CS, "\001%d\001%d\003"}, /* Set scroll region */ -- {(int)KS_SR, "\023"}, /* Scroll text down */ -- {K_UP, "\217"}, -- {K_DOWN, "\216"}, -- {K_LEFT, "\214"}, -- {K_RIGHT, "\215"}, -- {K_S_UP, "\237"}, -- {K_S_DOWN, "\236"}, -- {K_S_LEFT, "\234"}, -- {K_S_RIGHT, "\235"}, -- -- {K_F1, "\201"}, -- {K_F2, "\202"}, -- {K_F3, "\203"}, -- {K_F4, "\204"}, -- {K_F5, "\205"}, -- {K_F6, "\206"}, -- {K_F7, "\207"}, -- {K_F8, "\210"}, -- {K_F9, "\211"}, -- {K_F10, "\312"}, -- {K_F11, "\313"}, -- {K_F12, "\314"}, -- {K_S_F1, "\221"}, -- {K_S_F2, "\222"}, -- {K_S_F3, "\223"}, -- {K_S_F4, "\224"}, -- {K_S_F5, "\225"}, -- {K_S_F6, "\226"}, -- {K_S_F7, "\227"}, -- {K_S_F8, "\230"}, -- {K_S_F9, "\231"}, -- {K_S_F10, "\332"}, -- {K_S_F11, "\333"}, -- {K_S_F12, "\334"}, -- {K_BS, "\010"}, -- {K_INS, "\315"}, -- {K_DEL, "\177"}, -- {K_HOME, "\036"}, -- {K_END, "\213"}, -- {K_PAGEUP, "\237"}, -- {K_PAGEDOWN, "\236"}, -- # endif /* Acorn terminal */ -- - - # if defined(AMIGA) || defined(ALL_BUILTIN_TCAPS) - /* ---- 199,204 ---- -*************** -*** 1399,1408 **** - /* - * DEFAULT_TERM is used, when no terminal is specified with -T option or $TERM. - */ -- #ifdef RISCOS -- # define DEFAULT_TERM (char_u *)"riscos" -- #endif -- - #ifdef AMIGA - # define DEFAULT_TERM (char_u *)"amiga" - #endif ---- 1334,1339 ---- -*** ../vim-7.3.186/src/termlib.c 2010-08-15 21:57:30.000000000 +0200 ---- src/termlib.c 2011-05-10 16:31:58.000000000 +0200 -*************** -*** 13,19 **** - #include "vim.h" - #include "termlib.pro" - -! #if !defined(AMIGA) && !defined(VMS) && !defined(MACOS) && !defined(RISCOS) - # include <sgtty.h> - #endif - ---- 13,19 ---- - #include "vim.h" - #include "termlib.pro" - -! #if !defined(AMIGA) && !defined(VMS) && !defined(MACOS) - # include <sgtty.h> - #endif - -*** ../vim-7.3.186/src/version.c 2011-05-10 16:12:40.000000000 +0200 ---- src/version.c 2011-05-10 16:37:20.000000000 +0200 -*************** -*** 1205,1213 **** - # endif - #endif - -- #ifdef RISCOS -- MSG_PUTS(_("\nRISC OS version")); -- #endif - #ifdef VMS - MSG_PUTS(_("\nOpenVMS version")); - # ifdef HAVE_PATHDEF ---- 1207,1212 ---- -*** ../vim-7.3.186/src/vim.h 2011-05-05 16:41:19.000000000 +0200 ---- src/vim.h 2011-05-10 16:32:40.000000000 +0200 -*************** -*** 184,192 **** - # define SIZEOF_INT 2 - # endif - #endif -- #ifdef RISCOS -- # define SIZEOF_INT 4 -- #endif - - - #include "feature.h" /* #defines for optionals and features */ ---- 184,189 ---- -*************** -*** 340,349 **** - # include "os_mac.h" - #endif - -- #ifdef RISCOS -- # include "os_riscos.h" -- #endif -- - #ifdef __QNX__ - # include "os_qnx.h" - #endif ---- 337,342 ---- -*** ../vim-7.3.186/src/gui_riscos.h 2010-08-15 21:57:28.000000000 +0200 ---- src/gui_riscos.h 1970-01-01 01:00:00.000000000 +0100 -*************** -*** 1,32 **** -- /* vi:set ts=8 sts=4 sw=4: -- * -- * VIM - Vi IMproved by Bram Moolenaar -- * -- * Do ":help uganda" in Vim to read copying and usage conditions. -- * Do ":help credits" in Vim to see a list of people who contributed. -- */ -- -- #define FEAT_BROWSE -- -- #define TASK 0x4b534154 -- -- /* Nested wimp flags: */ -- #define CHILD_FIX_TO_WORKAREA 0 -- #define CHILD_FIX_TO_LEFT 1 -- #define CHILD_FIX_TO_BOTTOM 1 -- #define CHILD_FIX_TO_RIGHT 2 -- #define CHILD_FIX_TO_TOP 2 -- -- #define CHILD_SELF_SCROLL 0 -- #define CHILD_PARENT_SCROLL 1 -- -- #define CHILD_LEFT 16 -- #define CHILD_BOTTOM 18 -- #define CHILD_RIGHT 20 -- #define CHILD_TOP 22 -- #define CHILD_SCROLL_X 24 -- #define CHILD_SCROLL_Y 26 -- -- int wimp_poll(int mask, int *block); -- int wimp_poll_idle(int mask, int *block, int end_time); -- void ro_open_main(int *block); ---- 0 ---- -*** ../vim-7.3.186/src/os_riscos.h 2010-08-15 21:57:30.000000000 +0200 ---- src/os_riscos.h 1970-01-01 01:00:00.000000000 +0100 -*************** -*** 1,166 **** -- /* vi:set ts=8 sts=4 sw=4: -- * -- * VIM - Vi IMproved by Bram Moolenaar -- * -- * Do ":help uganda" in Vim to read copying and usage conditions. -- * Do ":help credits" in Vim to see a list of people who contributed. -- */ -- -- #include <sys/types.h> -- #include <sys/stat.h> -- #include <sys/ioctl.h> -- #include <termios.h> -- #include <stdlib.h> -- #include <unixlib/local.h> -- #include <errno.h> -- #include <fcntl.h> -- -- #define CASE_INSENSITIVE_FILENAME -- #define FEAT_MODIFY_FNAME -- #define FEAT_OSFILETYPE -- #define DFLT_OFT "Text" -- #define USE_TERM_CONSOLE -- #define HAVE_AVAIL_MEM -- -- /* Longer filenames now accessible to all */ -- #ifndef BASENAMELEN -- # define BASENAMELEN 64 /* Same length as unzip */ -- #endif -- -- #ifndef TEMNAME -- # define TEMPNAME "<Wimp$ScrapDir>.v?XXXXXX" -- # define TEMPNAMELEN 25 -- #endif -- -- #ifndef DFLT_HELPFILE -- # define DFLT_HELPFILE "Vim:doc.help" -- #endif -- -- #ifndef DFLT_BDIR -- # define DFLT_BDIR ".,<Wimp$ScrapDir>." /* default for 'backupdir' */ -- #endif -- -- /* Paths to try putting swap file in. */ -- #ifndef DFLT_DIR -- # define DFLT_DIR "<Wimp$ScrapDir>.,." /* default for 'directory' */ -- #endif -- -- #ifndef DFLT_VDIR -- # define DFLT_VDIR "Choices:Vim.view" /* default for 'viewdir' */ -- #endif -- -- #ifndef TERMCAPFILE -- # define TERMCAPFILE "Vim:TermCap" -- #endif -- #define HAVE_TGETENT -- -- #ifndef SYNTAX_FNAME -- # define SYNTAX_FNAME "Vim:Syntax.%s" -- #endif -- -- #ifndef EVIM_FILE -- # define EVIM_FILE "Vim:Evim" -- #endif -- -- #define FEAT_VIMINFO -- -- #ifndef VIMINFO_FILE -- # define VIMINFO_FILE "<Choices$Write>.Vim.VimInfo" -- #endif -- #ifndef VIMINFO_FILE2 -- # define VIMINFO_FILE2 "Choices:Vim.VimInfo" -- #endif -- -- #ifndef VIMRC_FILE -- # define VIMRC_FILE "/vimrc" -- #endif -- #ifndef EXRC_FILE -- # define EXRC_FILE "/exrc" -- #endif -- #ifndef GVIMRC_FILE -- # define GVIMRC_FILE "/gvimrc" -- #endif -- #ifndef USR_VIMRC_FILE -- # define USR_VIMRC_FILE "Vim:Evim" -- #endif -- #ifndef SESSION_FILE -- # define SESSION_FILE "/Session.vim" -- #endif -- #ifndef USR_VIMRC_FILE -- # define USR_VIMRC_FILE "Choices:Vim.VimRC" -- #endif -- #ifndef USR_GVIMRC_FILE -- # define USR_GVIMRC_FILE "Choices:Vim.GVimRC" -- #endif -- #ifndef USR_EXRC_FILE -- # define USR_EXRC_FILE "Choices:Vim.ExRC" -- #endif -- #ifndef SYS_VIMRC_FILE -- # define SYS_VIMRC_FILE "Vim:VimRC" -- #endif -- #ifndef SYS_GVIMRC_FILE -- # define SYS_GVIMRC_FILE "Vim:GVimRC" -- #endif -- #ifndef SYS_MENU_FILE -- # define SYS_MENU_FILE "Vim:Menu" -- #endif -- #ifndef SYS_OPTWIN_FILE -- # define SYS_OPTWIN_FILE "Vim:Optwin" -- #endif -- #ifndef FILETYPE_FILE -- # define FILETYPE_FILE "Vim:Filetype" -- #endif -- #ifndef FTPLUGIN_FILE -- # define FTPLUGIN_FILE "Vim:Ftplugin/vim" -- #endif -- #ifndef INDENT_FILE -- # define INDENT_FILE "Vim:Indent/vim" -- #endif -- #ifndef FTOFF_FILE -- # define FTOFF_FILE "Vim:Ftoff" -- #endif -- #ifndef FTPLUGOF_FILE -- # define FTPLUGOF_FILE "Vim:Ftplugof" -- #endif -- #ifndef INDOFF_FILE -- # define INDOFF_FILE "Vim:Indoff" -- #endif -- -- #define DFLT_ERRORFILE "errors/vim" -- #define DFLT_RUNTIMEPATH "Choices:Vim,Vim:,Choices:Vim.after" -- -- /* -- * RISC PCs have plenty of memory, use large buffers -- */ -- #define CMDBUFFSIZE 1024 /* size of the command processing buffer */ -- #define MAXPATHL 256 /* paths are always quite short though */ -- -- #ifndef DFLT_MAXMEM -- # define DFLT_MAXMEM (5*1024) /* use up to 5 Mbyte for a buffer */ -- #endif -- -- #ifndef DFLT_MAXMEMTOT -- # define DFLT_MAXMEMTOT (10*1024) /* use up to 10 Mbyte for Vim */ -- #endif -- -- #ifdef HAVE_SIGSET -- # define signal sigset -- #endif -- -- #define n_flag (1<<31) -- #define z_flag (1<<30) -- #define c_flag (1<<29) -- #define v_flag (1<<28) -- -- /* These take r0-r7 as inputs, returns r0-r7 in global variables. */ -- void swi(int swinum, ...); /* Handles errors itself */ -- int xswi(int swinum, ...); /* Returns errors using v flag */ -- extern int r0, r1, r2, r3, r4, r5, r6, r7; /* For return values */ -- -- #include <kernel.h> -- #include <swis.h> -- -- #define mch_memmove(to, from, len) memmove((char *)(to), (char *)(from), len) -- #define mch_rename(src, dst) rename(src, dst) -- #define mch_getenv(x) (char_u *)getenv((char *)x) -- #define mch_setenv(name, val, x) setenv(name, val, x) ---- 0 ---- -*** ../vim-7.3.186/src/gui_riscos.c 2011-05-10 15:52:10.000000000 +0200 ---- src/gui_riscos.c 1970-01-01 01:00:00.000000000 +0100 -*************** -*** 1,3558 **** -- /* vi:set ts=8 sts=4 sw=4: -- * -- * VIM - Vi IMproved by Bram Moolenaar -- * -- * Do ":help uganda" in Vim to read copying and usage conditions. -- * Do ":help credits" in Vim to see a list of people who contributed. -- * See README.txt for an overview of the Vim source code. -- */ -- -- #include "vim.h" -- #include <string.h> -- -- /* -- * gui_riscos.c -- * -- * Thomas Leonard <tal197@ecs.soton.ac.uk> -- * Updated by Andy Wingate <andy@sparse.net> -- */ -- -- extern int time_of_last_poll; -- -- int task_handle = 0; /* Zero means we are not yet a Wimp task */ -- int child_handle = 0; /* Task handle of our child process (zero if none). */ -- int *wimp_menu = (int *) -1; /* Pointer to a Wimp menu structure (or -1) */ -- int save_window = -1; /* Save As window handle */ -- -- int *redraw_block = NULL; /* NULL means not in a redraw loop. */ -- int ro_return_early = FALSE; /* Break out of gui_mch_wait_for_chars() */ -- -- int leaf_ref = 0; /* Wimp message number - send via Wimp$Scrap */ -- char_u *leaf_name = NULL; /* Leaf name from DataSave */ -- -- int default_columns = 120; /* These values are used if the --rows and --columns */ -- int default_rows = 32; /* options aren't used on startup. */ -- -- #define DRAG_FALSE 0 -- #define DRAG_SELECTION 1 -- #define DRAG_RESIZE_WINDOW 2 -- int ro_dragging = DRAG_FALSE; -- int drag_button; -- int drag_modifiers; -- int drag_x_offset; -- int drag_y_offset; -- -- int nested_wimp = FALSE; /* Bool - can we use the new wimp? */ -- -- int changed_mode = FALSE; -- int x_eigen_factor; -- int y_eigen_factor; -- -- /* If ro_current_font is non-zero then use the outline font with that handle, -- * otherwise, if zap_redraw is TRUE then use ZapRedraw, otherwise use the -- * system font. -- * -- * If zap_redraw is TRUE then zap_file[] contains valid Zap font file -- * pointers (or NULLs). -- */ -- int ro_current_font = 0; /* 0 is system font, or ZapRedraw */ -- int font_x_offset = 0; /* Where to position each char in its box */ -- int font_y_offset = 0; -- -- int zap_redraw = FALSE; -- int double_height = FALSE; /* Plot each line twice? */ -- -- #define grgb(r,g,b) ((b<<16) + (g<<8) + (r)) -- #define UNUSED_COLOUR (gui.back_pixel) -- -- #define RO_LOAD_CLIPBOARD -2 /* Internal handle for DataSave message. */ -- -- /* Changes by John Kortink, 22-23 July 1998 -- * -- * Stuff to make redraw a lot faster. Almost all of it is right here below, -- * elsewhere changes are marked with 'JK230798'. Apart from a small change in -- * 'gui.c' all changes are limited to this file, 'gui_riscos.c'. The change in -- * 'gui.c' is to make Vim stop being 'smart' not redrawing characters that are -- * 'already there' (i.e. from the previous line, by coincidence). This caused a -- * lot more calls to the redraw code, which we want to avoid because a few nice -- * big strings at a time is a lot faster than a truckload of small ones. ('Dear -- * Bram ...'). -- */ -- -- /* The ZapRedraw structure */ -- -- static struct -- { -- int r_flags; -- int r_minx; -- int r_miny; -- int r_maxx; -- int r_maxy; -- int r_screen; -- int r_bpl; -- int r_bpp; -- int r_charw; -- int r_charh; -- char *r_caddr; -- int r_cbpl; -- int r_cbpc; -- int r_linesp; -- int r_data; -- int r_scrollx; -- int r_scrolly; -- int *r_palette; -- int r_for; -- int r_bac; -- char *r_workarea; -- int r_magx; -- int r_magy; -- int r_xsize; -- int r_ysize; -- int r_mode; -- } -- zap_redraw_block; -- -- /* Other globals */ -- -- static int zap_redraw_initialised = FALSE; -- static int zap_redraw_update_colours; -- static int zap_redraw_colours[2]; -- static int zap_redraw_palette[16]; -- -- /* Holds the current Zap font file(s). -- * The font is recreated from this block on a mode change. -- * When using zap, element ZAP_NORMAL is always valid, but -- * the others can be NULL. -- */ -- -- #define ZAP_NORMAL 0 -- #define ZAP_BOLD 1 -- #define ZAP_ITALIC 2 -- #define ZAP_BITALIC 3 -- #define ZAP_STYLES 4 -- -- /* Zap font file format data */ -- static char *zap_file[ZAP_STYLES] = {NULL, NULL, NULL, NULL}; -- -- /* r_caddr format for current mode */ -- static char *zap_caddr[ZAP_STYLES] = {NULL, NULL, NULL, NULL}; -- -- static void ro_remove_menu(int *menu); -- -- /* -- * Initialise all the ZapRedraw stuff. -- * Call this when changing font and after each mode change. -- * zap_redraw_bitmap must contain a valid Zap font file (possibly -- * created from the system font). -- * -- * Return FAIL to revert to system font (if we can't use ZapRedraw). -- */ -- int -- ro_zap_redraw_initialise() -- { -- int bytes_per_bitmap_char; -- int first, last; -- int i; -- -- /* Can't have initialisers for struct members :-(, ok, this way then ... */ -- if (!zap_redraw_initialised) -- { -- zap_redraw_block.r_workarea = NULL; -- zap_redraw_initialised = TRUE; -- } -- -- /* We redraw in DSA mode */ -- zap_redraw_block.r_flags = 0x0; -- -- /* Let ZapRedraw get the screen address for us */ -- zap_redraw_block.r_screen = 0; -- -- /* Read the font width and height from the font file header. -- * Assume that all styles are the same size. -- * ZAP_NORMAL is always present. -- */ -- zap_redraw_block.r_charw = ((int *) zap_file[ZAP_NORMAL])[2]; -- zap_redraw_block.r_charh = ((int *) zap_file[ZAP_NORMAL])[3]; -- -- /* We have no linespacing */ -- zap_redraw_block.r_linesp = 0; -- -- /* Fix foreground = colour 1 */ -- zap_redraw_block.r_for = 1; -- -- /* Fix background = colour 0 */ -- zap_redraw_block.r_bac = 0; -- -- /* Colour mask buffer */ -- zap_redraw_block.r_palette = zap_redraw_palette; -- -- /* Allocate local workspace (for the few calls following here) */ -- if (zap_redraw_block.r_workarea != NULL) -- free(zap_redraw_block.r_workarea); -- zap_redraw_block.r_workarea = (char*) malloc(128); -- if (!zap_redraw_block.r_workarea) -- return FAIL; /* Out of memory */ -- -- /* Fill in VDU variables */ -- if (xswi(ZapRedraw_ReadVduVars, 0, &zap_redraw_block) & v_flag) -- return FAIL; /* Can't find ZapRedraw module - use VDU instead */ -- -- /* Determine cbpl and cbpc */ -- swi(ZapRedraw_CachedCharSize, zap_redraw_block.r_bpp, 0, -- zap_redraw_block.r_charw, zap_redraw_block.r_charh); -- zap_redraw_block.r_cbpl = r2; -- zap_redraw_block.r_cbpc = r3; -- -- /* Allocate general workspace (for the calls outside) */ -- if (zap_redraw_block.r_workarea != NULL) -- free(zap_redraw_block.r_workarea); -- zap_redraw_block.r_workarea = (char*) malloc(128 + zap_redraw_block.r_cbpl); -- if (!zap_redraw_block.r_workarea) -- return FAIL; /* Out of memory */ -- -- /* Now convert the 1 bpp character data ready for the current mode */ -- -- bytes_per_bitmap_char = (zap_redraw_block.r_charw * zap_redraw_block.r_charh + 7) / 8; -- -- /* Convert the fonts from 1bpp to a format suitable for the -- * current mode. -- */ -- for (i = 0; i < ZAP_STYLES; i++) -- { -- first = ((int *) zap_file[i])[4]; -- last = ((int *) zap_file[i])[5]; -- -- if (last > 255) -- last = 255; /* Don't convert cursors (overwrites memory!) */ -- -- /* Allocate the font cache */ -- vim_free(zap_caddr[i]); -- if (zap_file[i]) -- zap_caddr[i] = (char*) malloc(zap_redraw_block.r_cbpc * 256); -- else -- zap_caddr[i] = NULL; /* No file for this style */ -- -- if (zap_caddr[i]) -- { -- zap_redraw_block.r_caddr = zap_caddr[i]; -- -- swi(ZapRedraw_ConvertBitmap, 0, &zap_redraw_block, -- first, last, /* Range of characters to convert */ -- zap_file[i] + 0x20 /* Addr of first char provided by font */ -- - first * bytes_per_bitmap_char); -- } -- } -- -- if (!zap_caddr[ZAP_NORMAL]) -- { -- zap_redraw = FALSE; /* Out of memory */ -- return FAIL; -- } -- -- /* Next time we need them, we have to update the colour masks */ -- zap_redraw_update_colours = TRUE; -- -- return OK; -- } -- -- /* -- * Redraw a string at OS coordinates <x,y> (top-left, x inclusive, y exclusive). -- * Graphics clip window is window[0..3] as in R1+28..40 of Wimp_RedrawWindow. -- * Returns (possibly modified) flags. -- */ -- int -- ro_zap_redraw_draw_string(x, y, string, length, flags, clip) -- int x; -- int y; -- char *string; -- int length; -- int flags; /* DRAW_TRANSP, DRAW_BOLD, DRAW_UNDERL, DRAW_ITALIC */ -- int *clip; -- { -- char redraw_data[1024]; -- int clip_minx; -- int clip_miny; -- int clip_maxx; -- int clip_maxy; -- int os_xshift = zap_redraw_block.r_magx; -- int os_yshift = zap_redraw_block.r_magy; -- -- if (flags & DRAW_TRANSP) -- return flags; /* We don't do transparent plotting yet. */ -- -- if (flags & DRAW_BOLD) -- { -- if (flags & DRAW_ITALIC && zap_caddr[ZAP_BITALIC]) -- zap_redraw_block.r_caddr = zap_caddr[ZAP_BITALIC]; -- else -- zap_redraw_block.r_caddr = zap_caddr[ZAP_BOLD]; -- } -- else -- { -- if (flags & DRAW_ITALIC) -- zap_redraw_block.r_caddr = zap_caddr[ZAP_ITALIC]; -- else -- zap_redraw_block.r_caddr = zap_caddr[ZAP_NORMAL]; -- } -- if (!zap_redraw_block.r_caddr) -- { -- zap_redraw_block.r_caddr = zap_caddr[ZAP_NORMAL]; -- flags |= DRAW_UNDERL; /* Style missing - we can always underline */ -- } -- -- /* Set the vertical scaling flag */ -- if (double_height) -- zap_redraw_block.r_flags = 1 << 1; -- else -- zap_redraw_block.r_flags = 0; -- -- /* Update the colour masks (if needed) */ -- if (zap_redraw_update_colours) -- { -- swi(ZapRedraw_CreatePalette, 2, -- &zap_redraw_block, -- zap_redraw_colours, -- zap_redraw_block.r_palette, 2); -- zap_redraw_update_colours = FALSE; -- } -- -- /* Target rectangle in ZapRedraw rectangle coordinates (pixels, Y-min/max reversed !!!) */ -- zap_redraw_block.r_minx = x >> os_xshift; /* inclusive */ -- zap_redraw_block.r_miny = zap_redraw_block.r_ysize - (y >> os_yshift); /* inclusive */ -- zap_redraw_block.r_maxx = (x + length * gui.char_width) >> os_xshift; /* exclusive */ -- zap_redraw_block.r_maxy = zap_redraw_block.r_ysize - ((y - gui.char_height) >> os_yshift); -- /* exclusive */ -- -- /* Clip rectangle in ZapRedraw rectangle coordinates (pixels, Y-min/max reversed !!!) */ -- clip_minx = clip[0] >> os_xshift; /* inclusive */ -- clip_miny = zap_redraw_block.r_ysize - (clip[3] >> os_yshift); /* inclusive */ -- clip_maxx = clip[2] >> os_xshift; /* exclusive */ -- clip_maxy = zap_redraw_block.r_ysize - (clip[1] >> os_yshift); /* exclusive */ -- -- /* Clip target rectangle against the current graphics window */ -- if (zap_redraw_block.r_minx < clip_minx) -- { -- zap_redraw_block.r_scrollx = clip_minx - zap_redraw_block.r_minx; -- zap_redraw_block.r_minx = clip_minx; -- } -- else -- zap_redraw_block.r_scrollx = 0; -- if (zap_redraw_block.r_miny < clip_miny) -- { -- zap_redraw_block.r_scrolly = clip_miny - zap_redraw_block.r_miny; -- zap_redraw_block.r_miny = clip_miny; -- } -- else -- zap_redraw_block.r_scrolly = 0; -- if (zap_redraw_block.r_maxx > clip_maxx) -- zap_redraw_block.r_maxx = clip_maxx; -- if (zap_redraw_block.r_maxy > clip_maxy) -- zap_redraw_block.r_maxy = clip_maxy; -- -- /* Fill in the character data structure */ -- if (length > (sizeof(redraw_data) - 2 * 4 - 2)) -- length = sizeof(redraw_data) - 2 * 4 - 2; -- ((int*) redraw_data)[0] = 2 * 4; -- ((int*) redraw_data)[1] = 0; -- strncpy(redraw_data + 2 * 4, string, length); -- redraw_data[2 * 4 + length + 0] = '\0'; -- redraw_data[2 * 4 + length + 1] = '\x2'; -- zap_redraw_block.r_data = (int) redraw_data; -- -- /* Perform the draw */ -- swi(ZapRedraw_RedrawArea, 0, &zap_redraw_block); -- -- return flags; -- } -- -- /* -- * Okay that was it from me, back to Thomas ... -- */ -- -- /* -- * Parse the GUI related command-line arguments. Any arguments used are -- * deleted from argv, and *argc is decremented accordingly. This is called -- * when vim is started, whether or not the GUI has been started. -- */ -- void -- gui_mch_prepare(int *argc, char **argv) -- { -- int arg = 1; -- -- while (arg < *argc - 1) -- { -- if (strcmp(argv[arg], "--rows") == 0 || strcmp(argv[arg], "--columns") == 0) -- { -- int value; -- -- value = atoi(argv[arg + 1]); -- -- if (argv[arg][2] == 'r') -- default_rows = value; -- else -- default_columns = value; -- -- /* Delete argument from argv[]. (hope this is read/write!) */ -- -- *argc -= 2; -- if (*argc > arg) -- mch_memmove(&argv[arg], &argv[arg + 2], (*argc - arg) -- * sizeof(char *)); -- } -- else -- arg++; -- } -- } -- -- /* Fatal error on initialisation - report it and die. */ -- void -- ro_die(error) -- char_u *error; /* RISC OS error block */ -- { -- swi(Wimp_ReportError, error, 5, "GVim"); -- exit(EXIT_FAILURE); -- } -- -- /* Find the sizes of the window tools: -- * -- * Create a test window. -- * Find inner and outer sizes. -- * Find the difference. -- * Delete window. -- * -- * While we're here, find the eigen values too. -- */ -- void -- ro_measure_tools() -- { -- int block[10]; -- int vdu[] = { 4, 5, -1}; -- int test_window[] = -- { -- -100, -100, /* Visible area : min X,Y */ -- -50, -50, /* max X,Y */ -- 0, 0, /* Scroll offsets */ -- -1, /* Window in front */ -- 0xd0800150, /* Window flags */ -- 0xff070207, /* Colours */ -- 0x000c0103, /* More colours */ -- 0, -0x4000, /* Workarea extent */ -- 0x4000, 0, /* max X,Y */ -- 0x00000000, /* No title */ -- 0 << 12, /* No workarea button type */ -- 1, /* Wimp sprite area */ -- 0x00010001, /* Minimum width, height */ -- 0, 0, 0, /* Title data (none) */ -- 0 /* No icons */ -- }; -- int inner_max_x, inner_min_y; -- -- swi(Wimp_CreateWindow, 0, test_window); -- -- block[0] = r0; -- /* Open the window (and read state). -- * GetWindowOutline needs it too if the wimp isn't nested. -- */ -- swi(Wimp_OpenWindow, 0, block); -- inner_max_x = block[3]; -- inner_min_y = block[2]; -- -- swi(Wimp_GetWindowOutline, 0, block); -- -- gui.scrollbar_width = block[3] - inner_max_x; -- gui.scrollbar_height = inner_min_y - block[2]; -- -- swi(Wimp_DeleteWindow, 0, block); -- -- /* Read the size of one pixel. */ -- swi(OS_ReadVduVariables, vdu, vdu); -- x_eigen_factor = vdu[0]; -- y_eigen_factor = vdu[1]; -- } -- -- /* Load a template from the current templates file. -- * Create the window and return its handle. -- */ -- int -- ro_load_template(str_name, title, title_size) -- char_u *str_name; /* Identifier of window in file (max 12 chars) */ -- char_u **title; /* If not NULL then return pointer to title here */ -- int *title_size; /* If not NULL then return the title length here */ -- { -- int *window; -- char *data; -- int name[4]; -- -- strcpy( (char *) name, str_name); -- -- /* Find how big we must make the buffers */ -- -- if (xswi(Wimp_LoadTemplate, 0, 0, 0, 0, -1, name, 0) & v_flag) -- ro_die( (char *) r0); -- -- window = malloc(r1); /* Don't print text messages from alloc() */ -- data = malloc(r2); -- if (window == NULL || data == NULL) -- ro_die("\0\0\0\0Out of memory - Can't load templates"); -- -- /* Load the template into the buffers */ -- -- swi(Wimp_LoadTemplate, 0, -- window, /* Temp block */ -- data, /* Icon data */ -- data + r2 + 1, /* End of icon data */ -- -1, /* No fonts */ -- name, 0); /* First match */ -- if (r6 == 0) -- ro_die("\0\0\0\0Can't find window in Templates file"); -- -- /* Create the window */ -- -- if (xswi(Wimp_CreateWindow, 0, window) & v_flag) -- ro_die( (char *) r0); -- -- if (title) -- *title = (char_u *) window[18]; -- if (title_size) -- *title_size = window[20]; -- -- free(window); /* Free temp block */ -- return r0; /* Return the window handle */ -- } -- -- /* -- * Check if the GUI can be started. Called before gvimrc is sourced. -- * Return OK or FAIL. -- */ -- int -- gui_mch_init_check() -- { -- return OK; /* TODO: GUI can always be started? */ -- } -- -- /* -- * Initialise the RISC OS GUI. -- * Create all the windows. -- * Returns OK for success, FAIL when the GUI can't be started. -- */ -- int -- gui_mch_init() -- { -- int messages[] = { -- 1, 2, 3, 4, /* DataSave, DataSaveAck, DataLoad, DataLoadAck */ -- 8, /* PreQuit */ -- 0xf, /* ClaimEntity (for clipboard) */ -- 0x10, /* DataRequest (for clipboard) */ -- 0x400c1, /* Mode change */ -- 0x400c3, /* TaskCloseDown */ -- 0x400c9, /* MenusDeleted */ -- 0x808c1, /* TW_Output */ -- 0x808c2, /* TW_Ego */ -- 0x808c3, /* TW_Morio */ -- 0x808c4, /* TW_Morite */ -- 0}; /* End-of-list. */ -- -- -- /* There may have been some errors reported in the -- * command window before we get here. Wait if so. -- */ -- swi(Wimp_ReadSysInfo, 3); -- if (r0 == 0) -- swi(Wimp_CommandWindow, 0); /* Window opened - close with prompt */ -- -- if (xswi(Wimp_Initialise, 310, 0x4b534154, "GVim", messages) & v_flag) -- return FAIL; -- nested_wimp = r0 >= 397; -- task_handle = r1; -- -- /* Load the templates. */ -- -- if (xswi(Wimp_OpenTemplate, 0, "Vim:Templates") & v_flag) -- ro_die( (char *) r0); -- -- gui.window_handle = ro_load_template("editor", -- &gui.window_title, -- &gui.window_title_size); -- -- save_window = ro_load_template("save", NULL, NULL); -- -- swi(Wimp_CloseTemplate); -- -- /* Set default foreground and background colours. */ -- -- gui.norm_pixel = gui.def_norm_pixel; -- gui.back_pixel = gui.def_back_pixel; -- -- /* Get the colours from the "Normal" and "Menu" group (set in syntax.c or -- * in a vimrc file) */ -- -- set_normal_colors(); -- -- /* -- * Check that none of the colors are the same as the background color -- */ -- -- gui_check_colors(); -- -- /* Get the colours for the highlight groups (gui_check_colors() might have -- * changed them) */ -- -- highlight_gui_started(); /* re-init colours and fonts */ -- -- /* Set geometry based on values read on initialisation. */ -- -- gui.num_cols = Columns = default_columns; -- gui.num_rows = Rows = default_rows; -- -- /* Get some information about our environment. */ -- -- ro_measure_tools(); -- -- return OK; -- } -- -- /* -- * Called when the foreground or background colour has been changed. -- */ -- void -- gui_mch_new_colors() -- { -- } -- -- /* -- * Open the GUI window which was created by a call to gui_mch_init(). -- */ -- int -- gui_mch_open(void) -- { -- int block[10]; -- -- block[0] = gui.window_handle; -- swi(Wimp_GetWindowState, 0, block); -- block[7] = -1; /* Open at the top of the stack */ -- swi(Wimp_OpenWindow, 0, block); -- -- /* Give the new window the input focus */ -- swi(Wimp_SetCaretPosition, gui.window_handle, -1, 0, 0, -1, -1); -- -- if (gui_win_x != -1 && gui_win_y != -1) -- gui_mch_set_winpos(gui_win_x, gui_win_y); -- -- return OK; -- } -- -- void -- gui_mch_exit(int rc) -- { -- int block[64]; -- -- /* Close window. Stops us from getting troublesome events -- * if we take a while to die. -- */ -- block[0] = gui.window_handle; -- swi(Wimp_CloseWindow, 0, block); -- -- if (child_handle) -- { -- /* We still have a sub-task running - kill it */ -- block[0] = 20; -- block[3] = 0; -- block[4] = 0; /* Quit */ -- if ((xswi(Wimp_SendMessage, 17, block, child_handle) & v_flag) == 0) -- { -- /* Idle until child dies. */ -- while (child_handle) -- { -- process_event(wimp_poll(1, block), block); -- } -- } -- } -- -- exit(rc); -- } -- -- /* -- * Get the position of the top left corner of the window. -- */ -- int -- gui_mch_get_winpos(int *x, int *y) -- { -- /* TODO */ -- return FAIL; -- } -- -- /* -- * Set the position of the top left corner of the window to the given -- * coordinates. -- */ -- void -- gui_mch_set_winpos(int x, int y) -- { -- /* TODO */ -- } -- -- void -- gui_mch_set_shellsize(width, height, min_width, min_height, base_width, base_height, direction) -- int width; /* In OS units */ -- int height; -- int min_width; /* Smallest permissible window size (ignored) */ -- int min_height; -- int base_width; /* Space for scroll bars, etc */ -- int base_height; -- int direction; -- { -- int s_width, s_height; -- int block[] = { -- gui.window_handle, -- 0, -- -height + 1, -- width, -- 1}; -- -- gui_mch_get_screen_dimensions(&s_width, &s_height); -- s_width -= base_width; -- s_height -= base_height; /* Underestimate - ignores titlebar */ -- -- swi(Wimp_GetWindowState, 0, block); -- block[3] = block[1] + width; -- block[2] = block[4] - height; -- if (block[3] > s_width) -- { -- block[3] = s_width; -- block[1] = block[3] - width; -- } -- if (block[2] < gui.scrollbar_height) -- { -- block[2] = gui.scrollbar_height; -- block[4] = block[2] + height; -- } -- swi(Wimp_OpenWindow, 0, block); -- swi(Wimp_ForceRedraw, gui.window_handle, 0, -height, width, 0); -- } -- -- void -- gui_mch_get_screen_dimensions(int *screen_w, int *screen_h) -- { -- int block[] = {4, 5, 11, 12, -1}; -- -- swi(OS_ReadVduVariables, block, block); -- *screen_w = (block[2] + 1) << block[0]; -- *screen_h = (block[3] + 1) << block[1]; -- } -- -- /* Take a font name with options and return a font handle, or -- * zero for failure. -- * Replace extension with 'Bold' or 'Italic' depending on modifiers. -- */ -- int -- ro_get_font(fullname, weight) -- char_u *fullname; -- int weight; /* Initial weights: -- * BIT MEANING -- * 0 bold -- * 1 italic -- */ -- { -- char_u *arg; -- char_u font[41]; -- int width = -1; -- int height = -1; -- int name_len; -- int i; -- char_u c; -- -- for (i = 0; i < 39;) -- { -- c = fullname[i]; -- if (c == ':' || c == NUL || c == '.') -- break; -- font[i++] = c; -- } -- -- /* find the first modifier, NULL if none */ -- arg = strchr(fullname + i, ':'); -- -- while (arg) -- { -- switch (*++arg) -- { -- case 'h': -- height = strtol(arg + 1, (char **) &arg, 10); -- break; -- case 'w': -- width = strtol(arg + 1, (char **) &arg, 10); -- break; -- case 'b': -- weight |= 1; -- break; -- case 'i': -- weight |= 2; -- break; -- default: -- return 0; -- } -- arg = strchr(arg, ':'); -- } -- -- if ((weight & 1) && i < 35) -- { -- /* Bold goes instead of given suffix */ -- strncpy(font + i, ".Bold", 5); -- i += 5; -- } -- else -- { -- /* Copy rest of name unless we are using Bold */ -- while (i < 39) -- { -- c = fullname[i]; -- if (c == ':' || c == NUL) -- break; -- font[i++] = c; -- } -- } -- if ((weight & 2) && i < 32) -- { -- strncpy(font + i, ".Oblique", 8); -- i += 8; -- } -- -- font[i] = 0; -- -- if (height < 1 && width < 1) -- height = width = 10; /* Default to 10pt */ -- else if (height < 1) -- height = width; -- else if (width < 1) -- width = height; -- -- if (xswi(Font_FindFont, 0, font, width << 4, height << 4, 0, 0) & v_flag) -- return NOFONT; /* Can't find font */ -- -- return r0; -- } -- -- /* Load a file into allocated memory and check it is valid. -- * Return a pointer to the allocated block on success. -- */ -- char * -- zap_load_file(name, style) -- char_u *name; /* Name of directory containing styles */ -- char_u *style; /* Name of style within directory */ -- { -- char_u fname[256]; -- char_u *file; -- -- if (strlen(name) + strlen(style) > 254) -- return NULL; /* Names too long */ -- -- sprintf(fname, "%s.%s", name, style); -- -- /* Load the named font in 1bpp format. */ -- if (xswi(OS_File, 13, fname, 0, 0, "VimFonts:") & v_flag || r0 != 1) -- return NULL; /* Error reading file info, or not a file */ -- -- /* Allocate enough memory to load the whole file */ -- file = (char *) alloc(r4); -- if (!file) -- return NULL; /* Out of memory */ -- -- if (xswi(OS_File, 12, fname, file, 0, "VimFonts:") & v_flag) -- return NULL; /* Unable to load file */ -- -- if (strncmp(file, "ZapFont\015", 8) == 0) -- return file; /* Loaded OK! */ -- -- vim_free(file); -- return NULL; /* Not a valid font file */ -- } -- -- /* Load and convert the named font. -- * If name is NULL or a null string then convert the system font. -- * Return OK on success; FAIL and we revert to using the VDU drivers. -- * -- * 'name' is the name of a directory. -- * Tries to load 'name.0', 'name.B', 'name.I' and 'name.IB'. -- */ -- int -- zap_load_font(name) -- char_u *name; -- { -- int i; -- -- /* Free the existing font files, if any */ -- for (i = 0; i < ZAP_STYLES; i++) -- { -- vim_free(zap_file[i]); -- zap_file[i] = NULL; -- } -- -- if (name && *name == '!') -- { -- name++; -- double_height = TRUE; -- } -- else -- double_height = FALSE; -- -- if (name && *name) -- { -- zap_file[ZAP_NORMAL] = zap_load_file(name, "0"); -- if (!zap_file[ZAP_NORMAL]) -- return FAIL; /* Can't load the 'normal' style - error */ -- -- zap_file[ZAP_BOLD] = zap_load_file(name, "B"); -- zap_file[ZAP_ITALIC] = zap_load_file(name, "I"); -- zap_file[ZAP_BITALIC] = zap_load_file(name, "IB"); -- } -- else -- { -- int *header; -- char workarea[16]; -- char *old_wa; -- -- /* Allocate memory for system font (8 x 8 x 256 bits, plus header) */ -- header = (int *) alloc(0x20 + 8 * 256); -- if (header == NULL) -- return FAIL; -- zap_file[ZAP_NORMAL] = (char *) header; -- -- /* Store details about the system font */ -- header[2] = 8; /* Width */ -- header[3] = 8; /* Height */ -- header[4] = 0; /* First char */ -- header[5] = 255; /* Last char */ -- header[6] = header[7] = 0; /* Reserved */ -- -- /* Get system font bitmap */ -- old_wa = zap_redraw_block.r_workarea; -- zap_redraw_block.r_workarea = workarea; -- swi(ZapRedraw_ReadSystemChars, zap_file[ZAP_NORMAL] + 0x20, &zap_redraw_block); -- zap_redraw_block.r_workarea = old_wa; -- } -- -- return ro_zap_redraw_initialise(); -- } -- -- /* -- * Initialise vim to use the font with the given name. -- * Return FAIL if the font could not be loaded, OK otherwise. -- */ -- int -- gui_mch_init_font(char_u *font_name, int fontset) -- { -- int new_handle = 0; /* Use the system font by default */ -- -- if (font_name[0] == '!') -- { -- /* Select a ZapRedraw font */ -- if (zap_load_font(font_name + 1)) -- zap_redraw = TRUE; -- else -- { -- EMSG2(_("E610: Can't load Zap font '%s'"), font_name); -- font_name = "System"; /* Error - use system font */ -- zap_redraw = FALSE; -- } -- } -- else -- { -- zap_redraw = FALSE; -- -- if (font_name) -- { -- /* Extract any extra details about the font */ -- new_handle = ro_get_font(font_name, 0); -- if (!new_handle) -- return FAIL; -- } -- else -- font_name = "System"; -- } -- -- /* Free the previous font, if any */ -- gui_mch_free_font(gui.norm_font); -- gui.norm_font = new_handle; -- gui.char_ascent = 0; -- -- if (new_handle) -- { -- /* Read details about the chosen font */ -- swi(Font_ReadInfo, new_handle); -- -- gui.char_width = r3 - r1; -- gui.char_height = r4 - r2; -- -- font_x_offset = -r1; /* Where to position each char in its box */ -- font_y_offset = -r4; -- -- /* Try to load other fonts for bold, italic, and bold-italic */ -- gui_mch_free_font(gui.bold_font); -- gui.bold_font = ro_get_font(font_name, 1); -- gui_mch_free_font(gui.ital_font); -- gui.ital_font = ro_get_font(font_name, 2); -- gui_mch_free_font(gui.boldital_font); -- gui.boldital_font = ro_get_font(font_name, 3); -- } -- else -- { -- /* Use the system font or ZapRedraw. */ -- if (zap_redraw) -- { -- gui.char_width = zap_redraw_block.r_charw << zap_redraw_block.r_magx; -- gui.char_height = zap_redraw_block.r_charh << zap_redraw_block.r_magy; -- if (double_height) -- gui.char_height <<= 1; -- } -- else -- { -- gui.char_width = 16; -- gui.char_height = 32; -- } -- -- gui_mch_free_font(gui.bold_font); -- gui.bold_font = 0; -- gui_mch_free_font(gui.ital_font); -- gui.ital_font = 0; -- gui_mch_free_font(gui.boldital_font); -- gui.boldital_font = 0; -- } -- hl_set_font_name(font_name); -- -- must_redraw = CLEAR; -- return OK; -- } -- -- /* -- * Adjust gui.char_height (after 'linespace' was changed). -- */ -- int -- gui_mch_adjust_charheight() -- { -- return FAIL; -- } -- -- /* -- * Get a font structure for highlighting. -- */ -- GuiFont -- gui_mch_get_font(name, giveErrorIfMissing) -- char_u *name; -- int giveErrorIfMissing; -- { -- int handle; -- -- if (!name) -- return NOFONT; /* System font if no name */ -- -- handle = ro_get_font(name, 0); -- if (!handle) -- { -- if (giveErrorIfMissing) -- EMSG2(_("E611: Can't use font %s"), name); -- return NOFONT; -- } -- -- return handle; -- } -- -- #if defined(FEAT_EVAL) || defined(PROTO) -- /* -- * Return the name of font "font" in allocated memory. -- * Don't know how to get the actual name, thus use the provided name. -- */ -- char_u * -- gui_mch_get_fontname(font, name) -- GuiFont font; -- char_u *name; -- { -- if (name == NULL) -- return NULL; -- return vim_strsave(name); -- } -- #endif -- -- /* -- * Set the current text font. -- */ -- void -- gui_mch_set_font(GuiFont font) -- { -- ro_current_font = font; -- -- if (font) -- { -- /* Not the system font or ZapRedraw font - select it */ -- swi(Font_SetFont, font); -- } -- } -- -- /* -- * If a font is not going to be used, free its structure. -- */ -- void -- gui_mch_free_font(GuiFont font) -- { -- if (font) -- swi(Font_LoseFont, font); -- } -- -- /* -- * Return the Pixel value (colour) for the given colour name. -- * Return INVALCOLOR for error. -- * NB: I've changed Green for now, since it looked really sick -- */ -- guicolor_T -- gui_mch_get_color(char_u *name) -- { -- int i; -- struct colour -- { -- char_u *name; -- guicolor_T value; -- } colours[] = -- { -- { "Red", grgb(255, 0, 0) }, -- { "LightRed", grgb(255, 0, 0) }, -- { "DarkRed", grgb(139, 0, 0) }, -- -- { "Green", grgb(50, 200, 50) }, -- { "LightGreen", grgb(144, 238, 144) }, -- { "DarkGreen", grgb(0, 100, 0) }, -- { "SeaGreen", grgb(46, 139, 87) }, -- -- { "Blue", grgb(0, 0, 255) }, -- { "LightBlue", grgb(173, 216, 230) }, -- { "DarkBlue", grgb(0, 0, 139) }, -- { "SlateBlue", grgb(160, 90, 205) }, -- -- { "Cyan", grgb(0, 255, 255) }, -- { "LightCyan", grgb(224, 255, 255) }, -- { "DarkCyan", grgb(0, 139, 139) }, -- -- { "Magenta", grgb(255, 0, 255) }, -- { "LightMagenta", grgb(255, 224, 255) }, -- { "DarkMagenta", grgb(139, 0, 139) }, -- -- { "Yellow", grgb(255, 255, 0) }, -- { "LightYellow", grgb(255, 255, 224) }, -- { "DarkYellow", grgb(139, 139, 0) }, -- { "Brown", grgb(165, 42, 42) }, -- -- { "Gray", grgb(190, 190, 190) }, -- { "Grey", grgb(190, 190, 190) }, -- { "LightGray", grgb(211, 211, 211) }, -- { "LightGrey", grgb(211, 211, 211) }, -- { "DarkGray", grgb(169, 169, 169) }, -- { "DarkGrey", grgb(169, 169, 169) }, -- { "Gray10", grgb(26, 26, 26) }, -- { "Grey10", grgb(26, 26, 26) }, -- { "Gray20", grgb(51, 51, 51) }, -- { "Grey20", grgb(51, 51, 51) }, -- { "Gray30", grgb(77, 77, 77) }, -- { "Grey30", grgb(77, 77, 77) }, -- { "Gray40", grgb(102, 102, 102) }, -- { "Grey40", grgb(102, 102, 102) }, -- { "Gray50", grgb(127, 127, 127) }, -- { "Grey50", grgb(127, 127, 127) }, -- { "Gray60", grgb(153, 153, 153) }, -- { "Grey60", grgb(153, 153, 153) }, -- { "Gray70", grgb(179, 179, 179) }, -- { "Grey70", grgb(179, 179, 179) }, -- { "Gray80", grgb(204, 204, 204) }, -- { "Grey80", grgb(204, 204, 204) }, -- { "Gray90", grgb(229, 229, 229) }, -- { "Grey90", grgb(229, 229, 229) }, -- -- { "Black", grgb(0, 0, 0) }, -- { "White", grgb(255, 255, 255) }, -- -- { "Orange", grgb(255, 165, 0) }, -- { "Purple", grgb(160, 32, 240) }, -- { "Violet", grgb(238, 130, 238) }, -- {NULL, 0} -- }; -- -- if (name[0] == '#') -- { -- char *end; -- int c; -- -- c = strtol(name + 1, &end, 16); -- return (guicolor_T) ((c >> 16) & 0xff) | (c & 0xff00) | ((c & 0xff) << 16); -- } -- -- for (i = 0; colours[i].name != NULL; i++) -- { -- if (STRICMP(name, colours[i].name) == 0) -- return colours[i].value; -- } -- if (strnicmp(name, "grey", 4) == 0 || strnicmp(name, "gray", 4) == 0) -- { -- int level = (255 * atoi(name + 4)) / 100; -- return (guicolor_T) grgb(level, level, level); -- } -- return INVALCOLOR; -- } -- -- /* -- * Set the current text colours. -- * If we are using fonts then set the antialiasing colours too. -- */ -- void -- gui_mch_set_colors(guicolor_T fg, guicolor_T bg) -- { -- zap_redraw_colours[0] = bg << 8; /* JK230798, register new background colour */ -- zap_redraw_colours[1] = fg << 8; /* JK230798, register new foreground colour */ -- zap_redraw_update_colours = TRUE; /* JK230798, need update of colour masks */ -- -- swi(ColourTrans_ReturnGCOL, fg << 8); -- gui.fg_colour = r0; -- swi(ColourTrans_ReturnGCOL, bg << 8); -- gui.bg_colour = r0; -- -- if (ro_current_font) -- swi(ColourTrans_SetFontColours, 0, bg << 8, fg << 8, 14); -- } -- -- void -- ro_draw_string(x, y, s, len, flags, clip) -- int x; /* Top-left coord to plot at (x incl, y excl) */ -- int y; /* (screen coords) */ -- char_u *s; /* String to plot */ -- int len; /* Length of string */ -- int flags; /* DRAW_TRANSP, DRAW_BOLD, DRAW_UNDERL */ -- int* clip; /* JK230798, added clip window */ -- { -- if (ro_current_font) -- { -- int fx; -- int flen = len; /* Preserve for underline */ -- -- /* Use the Font manager to paint the string. -- * Must do one char at a time to get monospacing. -- */ -- -- if (flags & DRAW_ITALIC && !gui.ital_font) -- flags |= DRAW_UNDERL; /* No italic - underline instead */ -- -- if ((flags & DRAW_TRANSP) == 0) -- { -- swi(ColourTrans_SetColour, gui.bg_colour, 0, 0, 0, 0); -- swi(OS_Plot, 4, x, y - gui.char_height); -- swi(OS_Plot, 96 + 5, x + len * gui.char_width - 1, y - 1); -- } -- -- fx = x + font_x_offset; -- while (flen--) -- { -- swi(Font_Paint, 0, s++, 0x90, fx, y + font_y_offset, 0, 0, 1); -- fx += gui.char_width; -- } -- } -- else -- { -- if (zap_redraw) -- { -- /* Using fast Zap redraw. */ -- flags = ro_zap_redraw_draw_string(x, y, s, len, flags, clip); -- } -- else -- { -- /* Using the system font */ -- if (flags & DRAW_ITALIC) -- flags |= DRAW_UNDERL; -- -- if ((flags & DRAW_TRANSP) == 0) -- { -- swi(ColourTrans_SetColour, gui.bg_colour, 0, 0, 0, 0); -- swi(OS_Plot, 4, x, y - gui.char_height); -- swi(OS_Plot, 96 + 5, x + len * gui.char_width - 1, y - 1); -- } -- swi(OS_Plot, 4, /* Move the drawing cursor */ -- x, -- y - 1); -- swi(ColourTrans_SetColour, gui.fg_colour, 0, 0, 0, 0); -- swi(OS_WriteN, s, len); -- -- if (flags & DRAW_BOLD) -- { -- swi(OS_Plot, 4, x + (1 << x_eigen_factor), y - 1); -- swi(OS_WriteN, s, len); -- } -- } -- } -- -- if (flags & DRAW_UNDERL) -- { -- if (ro_current_font || zap_redraw) -- swi(ColourTrans_SetColour, gui.fg_colour, 0, 0, 0, 0); -- /* Underlined is the same with all plotting methods */ -- swi(OS_Plot, 4, x, y - gui.char_height); -- swi(OS_Plot, 1, gui.char_width * len, 0); -- } -- } -- -- void -- gui_mch_draw_string(int row, int col, char_u *s, int len, int flags) -- { -- int x, y; /* Workarea x,y */ -- x = col * gui.char_width; -- y = -row * gui.char_height; -- -- if (redraw_block) -- { -- ro_draw_string(x + redraw_block[1], y + redraw_block[4], -- s, len, flags, &redraw_block[7]); /* JK230798, added clip window */ -- } -- else -- { -- int block[44]; -- block[0] = gui.window_handle; -- block[1] = x; -- block[2] = y - gui.char_height; -- block[3] = (col + len) * gui.char_width; -- block[4] = y; -- swi(Wimp_UpdateWindow, 0, block); -- while (r0) -- { -- ro_draw_string(x + block[1], y + block[4], -- s, len, flags, &block[7]); /* JK230798, added clip window */ -- swi(Wimp_GetRectangle, 0, block); -- } -- } -- } -- -- /* -- * Return OK if the key with the termcap name "name" is supported. -- */ -- int -- gui_mch_haskey(char_u *name) -- { -- return FAIL; -- } -- -- void -- gui_mch_beep(void) -- { -- swi(OS_WriteI + 7); -- } -- -- /* -- * Visual bell. -- */ -- void -- gui_mch_flash(int msec) -- { -- /* TODO */ -- } -- -- -- /* -- * Plot a solid rectangle using the given plot action and colour. -- * Coordinates are inclusive and window-relative. -- */ -- void -- plot_rectangle(plot, colour, minx, miny, maxx, maxy) -- int plot; /* OS_Plot action */ -- int colour; -- int minx; -- int miny; -- int maxx; -- int maxy; -- { -- if (redraw_block) -- { -- swi(ColourTrans_SetColour, colour, 0, 0, 0, 0); -- swi(OS_Plot, 4, minx + redraw_block[1], miny + redraw_block[4]); -- swi(OS_Plot, plot, maxx + redraw_block[1], maxy + redraw_block[4]); -- } -- else -- { -- int block[44]; -- block[0] = gui.window_handle; -- block[1] = minx; -- block[2] = miny; -- block[3] = maxx + 1; -- block[4] = maxy + 1; -- swi(Wimp_UpdateWindow, 0, block); -- while (r0) -- { -- swi(ColourTrans_SetColour, colour, 0, 0, 0, 0); -- swi(OS_Plot, 4, minx + block[1], miny + block[4]); -- swi(OS_Plot, plot, maxx + block[1], maxy + block[4]); -- swi(Wimp_GetRectangle, 0, block); -- } -- } -- } -- -- /* -- * Invert a rectangle from row r, column c, for nr rows and nc columns. -- */ -- void -- gui_mch_invert_rectangle(int r, int c, int nr, int nc) -- { -- plot_rectangle(96 + 6, 0, FILL_X(c), -FILL_Y(r + nr), FILL_X(c + nc), -FILL_Y(r)); -- } -- -- /* -- * Iconify the GUI window. -- */ -- void -- gui_mch_iconify(void) -- { -- } -- -- #if defined(FEAT_EVAL) || defined(PROTO) -- /* -- * Bring the Vim window to the foreground. -- */ -- void -- gui_mch_set_foreground() -- { -- /* TODO */ -- } -- #endif -- -- /* Draw a hollow rectangle relative to the current -- * graphics cursor position, with the given width -- * and height. Start position is top-left. -- */ -- void -- draw_hollow(w, h) -- int w; -- int h; -- { -- swi(OS_Plot, 1, w - 1, 0); -- swi(OS_Plot, 1, 0, 1 - h); -- swi(OS_Plot, 1, 1 - w, 0); -- swi(OS_Plot, 1, 0, h - 1); -- } -- -- /* -- * Draw a cursor without focus. -- */ -- void -- gui_mch_draw_hollow_cursor(guicolor_T colour) -- { -- int x = FILL_X(gui.cursor_col); /* Window relative, top-left */ -- int y = -FILL_Y(gui.cursor_row); -- if (redraw_block == NULL) -- { -- int block[11]; -- -- block[0] = gui.window_handle; -- block[1] = x; -- block[2] = y - gui.char_height; -- block[3] = x + gui.char_width; -- block[4] = y; -- swi(Wimp_UpdateWindow, 0, block); -- while (r0) -- { -- swi(ColourTrans_SetGCOL, colour << 8, 0, 0, 0, 0); -- -- swi(OS_Plot, 4, x + block[1], y + block[4] - 1); -- draw_hollow(gui.char_width, gui.char_height); -- -- swi(Wimp_GetRectangle, 0, block); -- } -- } -- else -- { -- swi(ColourTrans_SetGCOL, colour << 8, 0, 0, 0, 0); -- -- swi(OS_Plot, 4, x + redraw_block[1], y + redraw_block[4] - 1); -- draw_hollow(gui.char_width, gui.char_height); -- } -- } -- -- /* -- * Draw part of a cursor, "w" pixels wide, and "h" pixels high, using -- * color "color". -- */ -- void -- gui_mch_draw_part_cursor(w, h, colour) -- int w; -- int h; -- guicolor_T colour; -- { -- int x = FILL_X(gui.cursor_col); -- int y = -FILL_Y(gui.cursor_row); -- swi(ColourTrans_ReturnGCOL, colour << 8); -- plot_rectangle(96 + 5, r0, x, y - h, x + w - 1, y - 1); -- } -- -- /* -- * Catch up with any queued events. This may put keyboard input into the -- * input buffer, call resize call-backs, trigger timers etc. -- * If there is nothing in the event queue(& no timers pending), then we return -- * immediately (well, after a Wimp_Poll). -- */ -- void -- gui_mch_update(void) -- { -- int block[64]; -- int reason; -- -- swi(OS_ReadMonotonicTime); -- if ((r0 - time_of_last_poll) < 50) -- return; /* Don't return too often */ -- -- reason = wimp_poll(0, block); -- if (reason) -- process_event(reason, block); -- ro_return_early = FALSE; /* We're returning anyway. */ -- } -- -- void -- redraw_window(block) -- int *block; -- { -- int x, y; /* Vim workarea coords */ -- int width, height; -- int blank_col; -- -- swi(ColourTrans_ReturnGCOL, UNUSED_COLOUR << 8, 0, 0, 1<<7, 0); -- blank_col = r0; -- -- swi(Wimp_RedrawWindow, 0, block); -- redraw_block = block; -- while (r0) -- { -- x = block[7] - block[1]; -- y = block[4] - block[10]; -- width = block[9] - block[7]; -- height = block[10] - block[8]; -- -- if (height + y > Rows * gui.char_height) -- { -- /* Blank everything off the bottom. */ -- plot_rectangle(96 + 5, blank_col, -- 0, block[8] - block[4], -- block[9] - block[1], -FILL_Y(Rows) - 1); -- height = Rows * gui.char_height; -- } -- if (width + x> Columns * gui.char_width) -- { -- /* Blank everything off to the right. */ -- plot_rectangle(96 + 5, blank_col, -- FILL_X(Columns), block[8] - block[4], -- block[9] - block[1], 0); -- width = Columns * gui.char_width; -- } -- gui_redraw(x , y, width, height); -- swi(Wimp_GetRectangle, 0, block); -- } -- redraw_block = NULL; -- } -- -- /* Check if we have modified data. -- * If we do then ack the message to stop the shutdown. -- * Otherwise, ignore the message. -- */ -- void -- ro_prequit(block) -- int *block; -- { -- if (!ro_ok_to_quit()) -- { -- /* Not OK to quit - stop shutdown */ -- block[3] = block[2]; -- swi(Wimp_SendMessage, 19, block, block[1]); -- } -- /* Do nothing. We may get a Message_Quit later. */ -- } -- -- /* If there is unsaved data then ask the user if they mind losing it. -- * Return TRUE if we can quit without saving, FALSE to halt the -- * shutdown. -- */ -- int -- ro_ok_to_quit() -- { -- int old_confirm = cmdmod.confirm; -- -- cmdmod.confirm = FALSE; /* Use our own, single tasking, box */ -- -- if (check_changed_any(FALSE)) -- { -- swi(Wimp_ReportError, -- "\0\0\0\0Vim contains unsaved data - quit anyway?", -- 0x17, -- "Vim"); -- cmdmod.confirm = old_confirm; -- if (r1 != 1) -- return FALSE; -- } -- cmdmod.confirm = old_confirm; -- return TRUE; -- } -- -- /* Quit without checking for unsaved data. */ -- void -- ro_quit() -- { -- exiting = TRUE; -- getout(0); -- -- exiting = FALSE; /* probably can't get here */ -- setcursor(); /* position cursor */ -- out_flush(); -- } -- -- /* Insent the given vim special code into the input buffer */ -- void -- ro_press(a, b, modifier) -- char a; -- char b; -- int modifier; /* %<Ctrl><Shift> 0000 0000 */ -- { -- char_u buf[6]; -- int vim_mod; -- int key; -- -- -- /* Convert RISC OS modifier to Vim modifier. */ -- vim_mod = ((modifier & 0x10) ? MOD_MASK_SHIFT : 0) -- | ((modifier & 0x20) ? MOD_MASK_CTRL : 0); -- key = simplify_key(TERMCAP2KEY(a, b), &vim_mod); -- -- buf[3] = CSI; -- buf[4] = KEY2TERMCAP0(key); -- buf[5] = KEY2TERMCAP1(key); -- if (vim_mod) -- { -- buf[0] = CSI; -- buf[1] = KS_MODIFIER; -- buf[2] = vim_mod; -- add_to_input_buf(buf, 6); -- } -- else -- add_to_input_buf(buf + 3, 3); -- } -- -- /* Take a wimp key code and insert the vim equivalent -- * into vim's input buffer. -- * CTRL-C also sets got_int. -- */ -- void -- ro_insert_key(code) -- char_u *code; /* Wimp_ProcessKey code (4 bytes) */ -- { -- char a = code[0]; -- char b = code[1]; -- int base, modifier; -- -- if (a == 3 && ctrl_c_interrupts) -- got_int = TRUE; -- -- /* Is it a normal key? */ -- if (a > 31 && a < 127) -- { -- add_to_input_buf(code, 1); -- return; -- } -- -- /* We should pass any unrecognised keys on, but -- * for now just pass on F12 combinations. -- */ -- switch (b) -- { -- case 0: -- /* Home and Delete are the only special cases */ -- switch (a) -- { -- case 0x1e: -- ro_press('k','h', 0); /* Home */ -- return; -- case 0x7f: -- ro_press('k','D', 0); /* Delete */ -- return; -- case CSI: -- { -- /* Turn CSI into K_CSI. Untested! */ -- char_u string[3] = {CSI, KS_EXTRA, KE_CSI}; -- -- add_to_input_buf(string, 3); -- return; -- } -- default: -- add_to_input_buf(code, 1); -- return; -- } -- case 1: -- if ((a & 0xcf) == 0xcc) -- { -- /* F12 pressed - pass it on (quick hack) */ -- swi(Wimp_ProcessKey, a | 0x100); -- return; -- } -- base = a & 0xcf; -- modifier = a & 0x30; -- switch (base) -- { -- case 0x8a: /* Tab */ -- add_to_input_buf("\011", 1); -- return; -- case 0x8b: /* Copy (End) */ -- return ro_press('@', '7', modifier); -- case 0x8c: /* Left */ -- return ro_press('k', 'l', modifier); -- case 0x8d: /* Right */ -- return ro_press('k', 'r', modifier); -- case 0x8e: /* Down */ -- if (modifier & 0x10) -- return ro_press('k', 'N', modifier ^ 0x10); -- else -- return ro_press('k', 'd', modifier); -- case 0x8f: /* Up */ -- if (modifier & 0x10) -- return ro_press('k', 'P', modifier ^ 0x10); -- else -- return ro_press('k', 'u', modifier); -- case 0xca: /* F10 */ -- return ro_press('k', ';', modifier); -- case 0xcb: /* F11 */ -- return ro_press('F', '1', modifier); -- case 0xcd: /* Insert */ -- return ro_press('k', 'I', modifier); -- default: -- if (base > 0x80 && base < 0x18a) -- { -- /* One of the other function keys */ -- return ro_press('k', '0' + (base & 15), modifier); -- } -- } -- } -- } -- -- /* Process a mouse event. */ -- void -- ro_mouse(block) -- int *block; -- { -- int x, y, button, vim_button; -- int modifiers = 0; -- int min_x, min_y; /* Visible area of editor window */ -- int max_x, max_y; -- -- if (block[3] != gui.window_handle || ro_dragging) -- return; /* Not our window or ignoring clicks*/ -- -- x = block[0]; /* Click position - screen coords */ -- y = block[1]; -- button = block[2]; -- -- block[0] = gui.window_handle; -- swi(Wimp_GetWindowState, 0, block); -- min_x = block[1]; -- min_y = block[2]; -- max_x = block[3]; -- max_y = block[4]; -- -- if (block[3] - x < gui.scrollbar_width) -- { -- /* Click in that blank area under the scrollbars */ -- -- if (button & 0x444) -- { -- int front_block[64]; -- /* Dragging with Select - bring window to front first */ -- front_block[0] = gui.window_handle; -- swi(Wimp_GetWindowState, 0, front_block); -- front_block[7] = -1; -- ro_open_main(front_block); -- } -- -- block[0] = gui.window_handle; -- block[1] = 7; /* Drag point */ -- block[2] = block[4] = 0; /* Coords of point. */ -- block[3] = block[5] = 0; -- drag_x_offset = max_x - x; -- drag_y_offset = min_y - y; -- -- /* Parent box. */ -- block[6] = min_x + -- gui.scrollbar_width * 2 + -- MIN_COLUMNS * gui.char_width; -- block[7] = 0; -- gui_mch_get_screen_dimensions(&block[8], &block[9]); -- block[9] = max_y - -- 4 * gui.char_height - -- gui.scrollbar_height; -- -- swi(Wimp_DragBox, 0, block); -- ro_dragging = DRAG_RESIZE_WINDOW; -- drag_button = vim_button; -- drag_modifiers = modifiers; -- return; -- } -- -- if (button & 0x111) -- vim_button = MOUSE_RIGHT; -- else if (button & 0x222) -- vim_button = MOUSE_MIDDLE; -- else -- vim_button = MOUSE_LEFT; -- -- swi(OS_Byte, 121, 0x80); -- if (r1 == 0xff) -- modifiers |= MOUSE_SHIFT; -- swi(OS_Byte, 121, 0x81); -- if (r1 == 0xff) -- modifiers |= MOUSE_CTRL; -- swi(OS_Byte, 121, 0x82); -- if (r1 == 0xff) -- modifiers |= MOUSE_ALT; -- -- if (button == 2) -- { -- /* Menu click: -- * If shift was pressed then do the paste action. -- * If not, then open the pop-up menu. -- */ -- modifiers ^= MOUSE_SHIFT; -- if (modifiers && MOUSE_SHIFT) -- { -- vimmenu_T main; -- /* Shift was NOT pressed - show menu */ -- main.dname = (char_u *) "Vim"; -- main.children = root_menu; -- gui_mch_show_popupmenu(&main); -- return; -- } -- } -- -- /* Gain the input focus */ -- swi(Wimp_SetCaretPosition, gui.window_handle, -1, 0, 0, -1, -1); -- -- if (button & 0xf0) -- { -- /* Drag operation: -- * -- * Tell the Wimp to start a drag. -- * Monitor null events. -- */ -- block[1] = 7; /* Drag a point. */ -- block[2] = block[4] = x; /* Coords of point. */ -- block[3] = block[5] = y; -- block[6] = 0; /* Coords of bounding box. */ -- block[7] = 0; -- gui_mch_get_screen_dimensions(&block[8], &block[9]); -- -- drag_x_offset = drag_y_offset = 0; -- -- swi(Wimp_DragBox, 0, block); -- ro_dragging = DRAG_SELECTION; -- drag_button = vim_button; -- drag_modifiers = modifiers; -- -- vim_button |= MOUSE_DRAG; -- } -- -- gui_send_mouse_event( -- vim_button, -- x - min_x, -- max_y - y, -- button & 0xf ? TRUE : FALSE, /* dclick */ -- modifiers); -- } -- -- void -- ro_continue_drag(block) -- int *block; /* Just used as scrap. */ -- { -- int x, y; -- -- /* Get screen coords of pointer. */ -- swi(Wimp_GetPointerInfo, 0, block); -- x = block[0] + drag_x_offset; -- y = block[1] + drag_y_offset; -- -- block[0] = gui.window_handle; -- swi(Wimp_GetWindowState, 0, block); -- -- if (ro_dragging == DRAG_RESIZE_WINDOW) -- { -- /* Resizing the main window. */ -- block[2] = y; -- block[3] = x; -- ro_open_main(block); -- } -- else -- { -- /* Selecting some text. */ -- gui_send_mouse_event( -- drag_button | MOUSE_DRAG, /* Always report the same button */ -- x - block[1], -- block[4] - y, -- FALSE, /* Not a double click. */ -- drag_modifiers); -- } -- } -- -- /* User has released all mouse buttons, marking the end of a drag. */ -- void -- ro_drag_finished(block) -- int *block; -- { -- int x; -- int y; -- int width, height; -- -- /* I don't trust the box returned by Wimp_Poll; look at the pointer -- * ourselves. -- */ -- swi(Wimp_GetPointerInfo, 0, block); -- x = block[0] + drag_x_offset; -- y = block[1] + drag_y_offset; -- -- if (ro_dragging == DRAG_RESIZE_WINDOW) -- { -- block[0] = gui.window_handle; -- swi(Wimp_GetWindowState, 0, block); -- block[2] = y; -- block[3] = x; -- ro_open_main(block); -- -- width = (block[3] - block[1]); -- height = (block[4] - block[2]); -- -- swi(Wimp_ForceRedraw, gui.window_handle, 0, -height, width, 0); -- gui_resize_shell(width, height); -- } -- else -- { -- block[0] = gui.window_handle; -- swi(Wimp_GetWindowState, 0, block); -- gui_send_mouse_event( -- MOUSE_RELEASE, -- x - block[1], -- block[4] - y, -- FALSE, /* not a double click */ -- drag_modifiers); -- } -- ro_dragging = DRAG_FALSE; -- } -- -- /* Load the file/pathname given in block into a [new] buffer. -- * -- * Modifier Action -- * -- * None :confirm e <file> -- * Ctrl :sp <file> -- * Shift <file> -- * -- * Insert into typebuf, at the start. -- * If loading from !Scrap then use saved leafname instead, and -- * delete the scrap file. Also, ignore shift key. -- * -- * NB: Doesn't send DataLoadAck (other app might delete temp file?). -- */ -- void -- ro_dataload(block) -- int *block; -- { -- char_u new_path[MAXPATHL]; -- char_u *path = ((char_u *) block) + 44; -- int scrap = FALSE; -- -- if (block[3] == leaf_ref && leaf_name) -- scrap = TRUE; -- -- switch (get_real_state() & 0xff) -- { -- case INSERT: -- case CMDLINE: -- case CMDLINE+LANGMAP: -- /* For insert mode we can only insert the pathname (currently) -- * Make sure Shift is pressed. -- */ -- swi(OS_Byte, 121, 0x80); /* Is Shift pressed? */ -- if (r1 == 0xff) -- { -- ins_typebuf(" ", REMAP_NONE, 0, TRUE, FALSE); -- ins_typebuf(path, REMAP_NONE, 0, TRUE, FALSE); -- ro_return_early = TRUE; /* Return even though nothing was typed. */ -- } -- else -- swi(Wimp_ReportError, -- "\0\0\0\0Sorry, you can only load text in normal mode", 5, "Vim"); -- break; -- -- case NORMAL: -- ro_return_early = TRUE; /* Return even though nothing was typed. */ -- -- if (scrap) /* Remove <Wimp$Scrap>. Later. */ -- ins_typebuf(":!~remove <Wimp$Scrap>\r", REMAP_NONE, 0, TRUE, FALSE); -- -- /* Insert {:sp ,:confirm e }[+f\ <leaf> ]<file><CR> */ -- ins_typebuf("\r", REMAP_NONE, 0, TRUE, FALSE); -- ins_typebuf(path, REMAP_NONE, 0, TRUE, FALSE); -- ins_typebuf(" ", REMAP_NONE, 0, TRUE, FALSE); -- -- if (scrap) -- { -- /* Loading via !Scrap - change pathname to stored leafname */ -- ins_typebuf(leaf_name, REMAP_NONE, 0, TRUE, FALSE); -- ins_typebuf(" +f\\ ", REMAP_NONE, 0, TRUE, FALSE); -- leaf_ref = 0; -- vim_free(leaf_name); -- leaf_name = NULL; -- } -- -- swi(OS_Byte, 121, 0x81); /* Is Ctrl pressed? */ -- if (r1 == 0xff) -- /* Yes, split window */ -- ins_typebuf(":sp", REMAP_NONE, 0, TRUE, FALSE); -- else -- ins_typebuf(":confirm e", REMAP_NONE, 0, TRUE, FALSE); -- break; -- -- default: -- swi(Wimp_ReportError, "\0\0\0\0You can only load text in normal mode.", 5, "Vim"); -- } -- /* Send DataSaveAck so other program doesn't think we died -- * and delete <Wimp$Scrap>. -- */ -- block[3] = block[2]; -- block[4] = 4; -- swi(Wimp_SendMessage, 17, block, block[1]); -- } -- -- void -- ro_datasave(block) -- int *block; -- { -- char_u *path = ((char_u *) block) + 44; -- -- /* Preserve the name given so we can use it, not <Wimp$Scrap> */ -- if (leaf_name) -- vim_free(leaf_name); -- leaf_name = vim_strsave(path); -- -- block[9] = -1; /* File is unsafe. */ -- strcpy(path, "<Wimp$Scrap>"); -- block[0] = 60; -- block[3] = block[2]; -- block[4] = 2; -- swi(Wimp_SendMessage, 17, block, block[1]); -- -- leaf_ref = block[2]; -- } -- -- void -- ro_message(block) -- int *block; -- { -- char_u *buffer; -- long_u len; -- -- if (block[1] == task_handle) -- return; /* Don't talk to ourself! */ -- switch (block[4]) -- { -- case 0: /* Quit. */ -- if (block[4] == 0) -- ro_quit(); -- break; -- case 1: /* DataSave */ -- ro_datasave(block); -- break; -- case 2: /* DataSaveAck. */ -- if (clip_convert_selection(&buffer, &len, &clip_star) == -1) -- return; -- -- /* Save the clipboard contents to a file. */ -- swi(OS_File, 10, ((char_u *) block) + 44, 0xfff, 0, buffer, buffer + len); -- -- /* Ack with DataLoad message. */ -- block[3] = block[2]; -- block[4] = 3; -- block[9] = len; -- swi(Wimp_SendMessage, 17, block, block[1]); -- -- vim_free(buffer); -- break; -- case 3: /* DataLoad */ -- ro_dataload(block); -- break; -- case 8: /* PreQuit */ -- ro_prequit(block); -- break; -- case 0xf: /* Lose clipboard. */ -- if (block[5] & 4) -- { -- clip_free_selection(&clip_star); -- clip_star.owned = FALSE; -- } -- break; -- case 0x10: /* DataRequest (clip_star) */ -- if (clip_star.owned) -- { -- int rows; -- -- /* Tell other program that we have the clipboard. */ -- block[0] = 52; -- block[3] = block[2]; /* Copy myref to yourref. */ -- block[4] = 1; /* DataSave message. */ -- /* Create an estimate for the size (larger or same as true -- * value) */ -- rows = clip_star.end.lnum - clip_star.start.lnum; -- if (rows < 0) -- rows = -rows; -- block[9] = (rows + 1) * Columns + 1; /* Add one for possible -- final newline. */ -- block[10] = 0xfff; /* Clipboard is text. */ -- strcpy( ((char_u *) block) + 44, "VimClip"); -- swi(Wimp_SendMessage, 17, block, block[1]); -- } -- break; -- case 0x400c1: /* Mode change */ -- changed_mode = TRUE; /* Flag - update on next OpenWindow */ -- if (zap_redraw) -- { -- /* JK230798, re-initialise ZapRedraw stuff */ -- if (ro_zap_redraw_initialise() == FAIL) -- zap_redraw = FALSE; -- } -- break; -- case 0x400c3: /* TaskCloseDown */ -- if (block[1] == child_handle) -- child_handle = 0; -- break; -- } -- } -- -- /* -- * Converts a scrollbar's window handle into a scrollbar pointer. -- * NULL on failure. -- */ -- scrollbar_T * -- ro_find_sbar(id) -- int id; -- { -- win_T *wp; -- -- if (gui.bottom_sbar.id == id) -- return &gui.bottom_sbar; -- FOR_ALL_WINDOWS(wp) -- { -- if (wp->w_scrollbars[SBAR_LEFT].id == id) -- return &wp->w_scrollbars[SBAR_LEFT]; -- if (wp->w_scrollbars[SBAR_RIGHT].id == id) -- return &wp->w_scrollbars[SBAR_RIGHT]; -- } -- return NULL; -- } -- -- void -- scroll_to(line, sb) -- int sb; /* Scrollbar number */ -- int line; -- { -- char_u code[8]; -- -- /* Don't put events in the input queue now. */ -- if (hold_gui_events) -- return; -- -- /* Send a scroll event: -- * -- * A scrollbar event is CSI (NOT K_SPECIAL), KS_VER_SCROLLBAR, -- * KE_FILLER followed by: -- * one byte representing the scrollbar number, and then four bytes -- * representing a long_u which is the new value of the scrollbar. -- */ -- code[0] = CSI; -- code[1] = KS_VER_SCROLLBAR; -- code[2] = KE_FILLER; -- code[3] = sb; -- code[4] = line >> 24; -- code[5] = line >> 16; -- code[6] = line >> 8; -- code[7] = line; -- add_to_input_buf(code, 8); -- } -- -- void -- h_scroll_to(col) -- int col; -- { -- char_u code[8]; -- -- /* Don't put events in the input queue now. */ -- if (hold_gui_events) -- return; -- -- /* Send a scroll event: -- * -- * A scrollbar event is CSI (NOT K_SPECIAL) -- * -- * A horizontal scrollbar event is K_SPECIAL, KS_HOR_SCROLLBAR, -- * KE_FILLER followed by four bytes representing a long_u which is the -- * new value of the scrollbar. -- */ -- code[0] = CSI; -- code[1] = KS_HOR_SCROLLBAR; -- code[2] = KE_FILLER; -- code[4] = col >> 24; -- code[5] = col >> 16; -- code[6] = col >> 8; -- code[7] = col; -- add_to_input_buf(code, 8); -- } -- -- void -- ro_scroll(block) -- int *block; -- { -- scrollbar_T *sb; -- int offset; -- win_T *wp; -- -- /* Block is ready for Wimp_OpenWindow, and also contains: -- * -- * +32 = scroll X direction (-2 .. +2) -- * +36 = scroll Y direction (-2 .. +2) -- */ -- -- sb = ro_find_sbar(block[0]); -- if (!sb) -- return; /* Window not found (error). */ -- -- wp = sb-> wp; -- -- if (wp == NULL) -- { -- /* Horizontal bar. */ -- offset = block[8]; -- if (offset == -2) -- offset = (block[1] - block[3]) / gui.char_width; -- else if (offset == 2) -- offset = (block[3] - block[1]) / gui.char_width; -- -- block[5] += offset * gui.char_width; -- -- gui_drag_scrollbar(sb, block[5] / gui.char_width, FALSE); -- -- swi(Wimp_OpenWindow, 0, block); -- } -- else -- { -- offset = -block[9]; -- if (offset == -2) -- offset = -(wp -> w_height - 1); -- else if (offset == 2) -- offset = wp -> w_height - 1; -- -- /* Possibly we should reposition the scrollbar? -- * Vim seems to update the bar anyway... -- */ -- gui_drag_scrollbar(sb, offset - (block[6] / gui.char_height), FALSE); -- } -- } -- -- /* Move a window by a given offset. Used to simulate the function of the -- * nested wimp. -- */ -- void -- ro_move_child(window, x, y, pos_wanted, pos_got) -- int window; -- int x,y; /* offset to move by */ -- int pos_wanted, pos_got; -- { -- int block[10]; -- -- block[0] = window; -- swi(Wimp_GetWindowState, 0, block); -- block[1] += x; -- block[2] += y; -- block[3] += x; -- block[4] += y; -- if (pos_wanted == -1) -- block[7] = -1; -- else if (pos_wanted == -2) -- block[7] = pos_got; -- swi(Wimp_OpenWindow, 0, block); -- } -- -- /* Open the main window. Also updates scrollbars if we are not -- * using the nested Wimp. -- * If we have just changed mode then re-read all values. -- */ -- void -- ro_open_main(block) -- int *block; -- { -- int toggle_size; -- -- /* Find out if the user clicked on the toggle size icon. */ -- block[20] = block[0]; -- swi(Wimp_GetWindowState, 0, block + 20); -- toggle_size = block[28] & (1 << 19); -- -- if (nested_wimp) -- { -- swi(Wimp_OpenWindow, 0, block); -- } -- else -- { -- int old[10]; -- int x_offset, y_offset; /* Move children same as parent. */ -- int pos_wanted, pos_got; -- int left_bar = gui.which_scrollbars[SBAR_LEFT]; -- int right_bar = gui.which_scrollbars[SBAR_RIGHT]; -- win_T *wp; -- -- /* Three cases to think about: -- * 1) Move to top. Open each window at the top. -- * 2) Same stack position. Open each with same position. -- * 3) Open at bottom. Open children with parent's new position. -- */ -- -- old[0] = block[0]; -- swi(Wimp_GetWindowState, 0, old); -- pos_wanted = block[7]; -- swi(Wimp_OpenWindow, 0, block); -- /* Block updated by OpenWindow? I don't think so! */ -- swi(Wimp_GetWindowState, 0, block); -- pos_got = block[7]; -- -- x_offset = block[1] - old[1]; -- y_offset = block[4] - old[4]; -- if (x_offset || y_offset || pos_wanted == -1 || pos_wanted == -2) -- { -- /* If parent has moved, re-open all the child windows. */ -- FOR_ALL_WINDOWS(wp) -- { -- /* Reopen scrollbars for this window. */ -- if (left_bar) -- ro_move_child(wp -> w_scrollbars[SBAR_LEFT].id, -- x_offset, y_offset, -- pos_wanted, pos_got); -- if (right_bar) -- ro_move_child(wp -> w_scrollbars[SBAR_RIGHT].id, -- x_offset, y_offset, -- pos_wanted, pos_got); -- } -- } -- } -- if (changed_mode || toggle_size) -- { -- int width, height; -- -- if (changed_mode) -- ro_measure_tools(); -- block[0] = gui.window_handle; -- swi(Wimp_GetWindowState, 0, block); -- -- width = block[3] - block[1]; -- height = block[4] - block[2]; -- swi(Wimp_ForceRedraw, gui.window_handle, 0, -height, width, 0); -- gui_resize_shell(width, height); -- changed_mode = FALSE; -- } -- } -- -- void -- ro_open_window(block) -- int *block; -- { -- int pos; -- scrollbar_T *sb; -- -- if (block[0] == gui.window_handle) -- ro_open_main(block); -- else -- { -- swi(Wimp_OpenWindow, 0, block); -- if (block[0] != gui.window_handle) -- { -- sb = ro_find_sbar(block[0]); -- if (sb) -- { -- if (sb-> wp != NULL) -- gui_drag_scrollbar(sb, -block[6] / gui.char_height, FALSE); -- else -- gui_drag_scrollbar(sb, block[5] / gui.char_width, FALSE); -- } -- } -- } -- } -- -- void -- ro_menu_selection(block) -- int *block; -- { -- int *item = wimp_menu + 7; -- vimmenu_T *menu; -- /* wimp_menu points to a wimp menu structure */ -- -- for (;;) -- { -- while (block[0]--) -- item += 6; -- if (block[1] == -1) -- break; -- item = ((int *) item[1]) + 7; -- block++; -- } -- /* item points to the wimp menu item structure chosen */ -- menu = (vimmenu_T *) item[5]; -- -- swi(Wimp_GetPointerInfo, 0, block); -- if (block[2] == 1) -- /* Adjust used - keep menu open */ -- swi(Wimp_CreateMenu, 0, wimp_menu); -- -- if (menu-> cb) -- menu-> cb(menu); -- } -- -- void -- ro_open_parent() -- { -- int head; -- char_u *i = curbuf-> b_ffname; -- char_u buffer[256]; -- -- head = 0; -- for (; *i; i++) -- { -- if (*i == '.') -- head = i - curbuf-> b_ffname; -- } -- -- /* Append head chars to buffer */ -- if (head < 240 && curbuf-> b_ffname && head) -- { -- strcpy(buffer, "%filer_opendir "); -- strncpy(buffer + 15, curbuf-> b_ffname, head); -- buffer[15 + head] = '\0'; -- swi(OS_CLI, buffer); -- } -- } -- -- void -- process_event(event, block) -- int event; -- int *block; -- { -- switch (event) -- { -- case 0: /* Nothing - update drag state. */ -- if (ro_dragging) -- ro_continue_drag(block); -- break; -- case 1: /* Redraw window. */ -- redraw_window(block); -- break; -- case 2: /* Open window. */ -- ro_open_window(block); -- break; -- case 3: /* Close window. */ -- swi(Wimp_GetPointerInfo, 0, block + 1); -- if (block[3] == 1) -- ro_open_parent(); -- else -- if (ro_ok_to_quit()) -- ro_quit(); -- break; -- case 6: /* Mouse click. */ -- ro_mouse(block); -- break; -- case 7: /* Finished drag. */ -- ro_drag_finished(block); -- break; -- case 8: /* Key pressed. */ -- ro_insert_key((char_u *) &block[6]); -- break; -- case 9: -- ro_menu_selection(block); -- break; -- case 10: /* Scroll request. */ -- ro_scroll(block); -- break; -- case 11: /* Lose caret. */ -- if (block[0] == gui.window_handle) -- gui_focus_change(FALSE); -- break; -- case 12: /* Gain caret. */ -- if (block[0] == gui.window_handle) -- gui_focus_change(TRUE); -- break; -- case 17: /* User message. */ -- case 18: /* User message recorded. */ -- ro_message(block); -- break; -- } -- } -- -- /* -- * GUI input routine called by gui_wait_for_chars(). Waits for a character -- * from the keyboard. -- * wtime == -1 Wait forever. -- * wtime == 0 This should never happen. -- * wtime > 0 Wait wtime milliseconds for a character. -- * Returns OK if a character was found to be available within the given time, -- * or FAIL otherwise. -- */ -- int -- gui_mch_wait_for_chars(long wtime) -- { -- int block[64]; -- int reason; -- int start_time = -1; -- int ctime = wtime / 10; /* delay in cs */ -- -- if (wtime != -1) -- { -- swi(OS_ReadMonotonicTime); -- start_time = r0; -- } -- -- for (;;) -- { -- if (ro_dragging) -- reason = wimp_poll(0, block); /* Always return immediately */ -- else if (wtime == -1) -- reason = wimp_poll(1, block); -- else -- reason = wimp_pollidle(0, block, start_time + ctime); -- -- process_event(reason, block); -- -- if (input_available() || ro_return_early) -- { -- ro_return_early = FALSE; -- return OK; /* There is something to process (key / menu event) */ -- } -- -- if (wtime != -1) -- { -- swi(OS_ReadMonotonicTime); -- if (r0 - start_time > ctime) -- return FAIL; /* We've been waiting too long - return failure */ -- } -- } -- } -- -- /* Flush any output to the screen */ -- void -- gui_mch_flush(void) -- { -- } -- -- /* -- * Clear a rectangular region of the screen from text pos(row1, col1) to -- * (row2, col2) inclusive. -- */ -- void -- gui_mch_clear_block(int row1, int col1, int row2, int col2) -- { -- swi(ColourTrans_ReturnGCOL, gui.back_pixel << 8, 0, 0, 1<<7, 0); -- plot_rectangle(96 + 5, r0, -- FILL_X(col1), -FILL_Y(row2 + 1), -- FILL_X(col2 + 1), -FILL_Y(row1)); -- } -- -- void -- gui_mch_clear_all(void) -- { -- if (redraw_block) -- { -- swi(ColourTrans_SetGCOL, gui.back_pixel << 8, 0, 0, 1<<7, 0); -- swi(OS_WriteI + 16); -- } -- else -- { -- int block[44]; -- block[0] = gui.window_handle; -- block[1] = 0; -- block[2] = -gui.num_rows * gui.char_height; -- block[3] = gui.num_cols * gui.char_width; -- block[4] = 0; -- swi(Wimp_UpdateWindow, 0, block); -- while (r0) -- { -- swi(ColourTrans_SetGCOL, gui.back_pixel << 8, 0, 0, 1<<7, 0); -- swi(OS_WriteI + 16); -- swi(Wimp_GetRectangle, 0, block); -- } -- } -- } -- -- /* -- * Delete the given number of lines from the given row, scrolling up any -- * text further down within the scroll region. -- */ -- void -- gui_mch_delete_lines(int row, int num_lines) -- { -- int top_from = -row - num_lines; -- int bot_from = -gui.scroll_region_bot - 1; -- int bot_to = bot_from + num_lines; -- -- swi(ColourTrans_SetGCOL, gui.back_pixel << 8, 0, 0, 0x80, 0); -- -- /* Changed without checking! */ -- swi(Wimp_BlockCopy, gui.window_handle, -- gui.scroll_region_left * gui.char_width, -- bot_from * gui.char_height, -- (gui.scroll_region_right - gui.scroll_region_left -- + 1) * gui.char_width, -- top_from * gui.char_height, -- -- gui.scroll_region_left * gui.char_width, -- bot_to * gui.char_height); -- -- gui_clear_block(gui.scroll_region_bot - num_lines + 1, -- gui.scroll_region_left, -- gui.scroll_region_bot, gui.scroll_region_right); -- } -- -- /* -- * Insert the given number of lines before the given row, scrolling down any -- * following text within the scroll region. -- */ -- void -- gui_mch_insert_lines(int row, int num_lines) -- { -- int top_from = -row; -- int bot_to = -gui.scroll_region_bot - 1; -- int bot_from = bot_to + num_lines; -- -- swi(ColourTrans_SetGCOL, gui.back_pixel << 8, 0, 0, 0x80, 0); -- -- swi(Wimp_BlockCopy, gui.window_handle, -- gui.scroll_region_left * gui.char_width, -- bot_from * gui.char_height, -- (gui.scroll_region_right - gui.scroll_region_left -- + 1) * gui.char_width, -- top_from * gui.char_height, -- -- gui.scroll_region_left * gui.char_width, -- bot_to * gui.char_height); -- -- gui_clear_block(row, gui.scroll_region_left, -- row + num_lines - 1, gui.scroll_region_right); -- } -- -- /* Put selection in clipboard buffer. -- * Should we become the new owner? -- */ -- void -- clip_mch_request_selection(VimClipboard *cbd) -- { -- int block[64]; /* Will be used in Wimp_Poll. */ -- int reason; -- char_u *buffer; -- long_u length; -- -- block[0] = 48; /* Size of block. */ -- block[3] = 0; /* Original message. */ -- block[4] = 0x10; /* Data request. */ -- block[5] = gui.window_handle; -- block[6] = RO_LOAD_CLIPBOARD; /* Internal handle. */ -- block[7] = block[8] = 0; /* (x,y) not used. */ -- block[9] = 4; -- block[10] = 0xfff; /* We want text files if possible, I think. */ -- block[11] = -1; /* End of list. */ -- swi(Wimp_SendMessage, 17, block, 0); /* Broadcast request. */ -- -- /* OK, we've sent the request. Poll until we get a null poll (failure) or -- * we load the clipboard. -- * If we receive a DataSave event with icon handle = -2 then put it on the -- * clipboard. RISC OS should ensure that key events will not be delivered -- * until the clipboard operation completes (unless the owner starts idling -- * - we can't wait forever!). -- */ -- for (;;) -- { -- reason = wimp_poll(0, block); -- if (reason == 0) -- return; /* Failed to get clipboard. */ -- if ((reason == 17 || reason == 18) && -- block[4] == 1 && block[6] == RO_LOAD_CLIPBOARD) -- break; /* Got it - stop waiting. */ -- process_event(reason, block); -- if (ro_return_early) -- return; -- } -- /* Tell owner to save data in <Wimp$Scrap>. */ -- block[0] = 60; -- block[3] = block[2]; /* Copy myref -> yourref */ -- block[4] = 2; /* DataSaveAck. */ -- block[9] = -1; /* Data is unsafe. */ -- strcpy( ((char_u *) block) + 44, "<Wimp$Scrap>"); -- swi(Wimp_SendMessage, 17, block, block[1]); -- -- /* Wait again for reply. */ -- for (;;) -- { -- reason = wimp_poll(0, block); -- if (reason == 0) -- return; /* Other program has given up! */ -- if ((reason == 17 || reason == 18) && block[4] == 3 && block[6] == RO_LOAD_CLIPBOARD) -- break; /* Clipboard data saved to <Wimp$Scrap> */ -- process_event(reason, block); -- if (ro_return_early) -- return; -- } -- -- /* <Wimp$Scrap> contains clipboard - load it. */ -- if (xswi(OS_File, 17, "<Wimp$Scrap>") & v_flag) -- return; /* Error! */ -- if (r0 != 1 && r0 != 3) -- return; -- length = r4; -- -- buffer = lalloc(length, TRUE); /* Claim memory (and report errors). */ -- if (buffer == NULL) -- return; -- -- if (xswi(OS_File, 16, "<Wimp$Scrap>", buffer, 0) & v_flag) -- return; -- -- clip_yank_selection(MCHAR, buffer, length, cbd); -- -- vim_free(buffer); -- -- swi(OS_FSControl, 27, "<Wimp$Scrap>", 0, 0); /* Delete temp file. */ -- -- block[4] = 4; /* Send DataLoadAck. */ -- block[3] = block[2]; /* Copy myref -> yourref. */ -- swi(Wimp_SendMessage, 17, block, block[1]); -- } -- -- /* Not sure what this means under RISC OS. */ -- void -- clip_mch_lose_selection(VimClipboard *cbd) -- { -- } -- -- /* Tell everyone that we now own the clipboard. -- * Return OK if our claim is accepted (always, under RISC OS) -- */ -- int -- clip_mch_own_selection(VimClipboard *cbd) -- { -- int block[6]; -- block[0] = 24; /* Length of block. */ -- block[3] = 0; /* Original message. */ -- block[4] = 0xf; /* ClaimEntity. */ -- block[5] = 0x4; /* Claim clipboard only. */ -- swi(Wimp_SendMessage, 17, block, 0); -- return OK; -- } -- -- /* -- * Send the current selection to the clipboard. Do nothing for X because we -- * will fill in the selection only when requested by another app. Sounds good -- * for RISC OS too. -- */ -- void -- clip_mch_set_selection(VimClipboard *cbd) -- { -- clip_get_selection(cbd); -- } -- -- /* -- * Make a menu either grey or not grey. -- */ -- void -- gui_mch_menu_grey(vimmenu_T *menu, int grey) -- { -- menu-> greyed_out = grey; -- } -- -- /* -- * Make menu item hidden or not hidden -- */ -- void -- gui_mch_menu_hidden(vimmenu_T *menu, int hidden) -- { -- menu-> hidden = hidden; -- } -- -- /* -- * This is called after setting all the menus to grey/hidden or not. -- */ -- void -- gui_mch_draw_menubar(void) -- { -- swi(Wimp_CreateMenu, 0, -1); -- if (wimp_menu != (int *) -1) -- { -- ro_remove_menu(wimp_menu); -- wimp_menu = (int *) -1; -- } -- } -- -- /* Add or remove a scrollbar. Note that this is only called when -- * the scrollbar state is changing. -- * The scroll bar window has already been created. -- * We can't do anything except remove the scroll bar -- * until we know what size to use. -- */ -- void -- gui_mch_enable_scrollbar(sb, flag) -- scrollbar_T *sb; -- int flag; -- { -- if (!flag) -- swi(Wimp_CloseWindow, 0, & (sb->id) ); -- return; -- } -- -- void -- gui_mch_set_blinking(long waittime, long on, long off) -- { -- } -- -- /* -- * Stop the cursor blinking. Show the cursor if it wasn't shown. -- */ -- void -- gui_mch_stop_blink(void) -- { -- } -- -- /* -- * Start the cursor blinking. If it was already blinking, this restarts the -- * waiting time and shows the cursor. -- */ -- void -- gui_mch_start_blink(void) -- { -- } -- -- /* -- * Return the RGB value of a pixel as a long. -- */ -- long_u -- gui_mch_get_rgb(guicolor_T pixel) -- { -- return (long_u)pixel; -- } -- -- void -- gui_mch_set_text_area_pos(int x, int y, int w, int h) -- { -- } -- -- void -- gui_mch_enable_menu(int flag) -- { -- } -- -- void -- gui_mch_set_menu_pos(int x, int y, int w, int h) -- { -- } -- -- void -- gui_mch_add_menu(vimmenu_T *menu, int idx) -- { -- } -- -- void -- gui_mch_add_menu_item(vimmenu_T *menu, int idx) -- { -- } -- -- void -- gui_mch_new_menu_colors(void) -- { -- } -- -- void -- gui_mch_destroy_menu(vimmenu_T *menu) -- { -- } -- -- /* Size of buffer has changed. -- * Add one to max since gui.c subtracts one more than it should! -- */ -- void -- gui_mch_set_scrollbar_thumb(sb, val, size, max) -- scrollbar_T *sb; -- long val; -- long size; -- long max; -- { -- int block[10], width, height; -- -- width = (max + 1) * gui.char_width; -- height = (max + 1 + W_STATUS_HEIGHT(sb->wp)) * gui.char_height; -- -- block[0] = block[3] = 0; -- block[1] = -height + (1 << y_eigen_factor); -- block[2] = width; -- -- swi(Wimp_SetExtent, sb -> id, block); -- -- block[0] = sb -> id; -- swi(Wimp_GetWindowState, 0, block); -- block[5] = val * gui.char_width; -- block[6] = -val * gui.char_height; -- swi(Wimp_OpenWindow, 0, block, 0x4b534154, -- gui.window_handle, /* Parent window handle. */ -- (CHILD_FIX_TO_RIGHT << CHILD_LEFT ) | -- (CHILD_FIX_TO_RIGHT << CHILD_RIGHT ) | -- (CHILD_FIX_TO_BOTTOM << CHILD_TOP ) | -- (CHILD_FIX_TO_BOTTOM << CHILD_BOTTOM) | -- (CHILD_SELF_SCROLL << CHILD_SCROLL_X) | -- (CHILD_SELF_SCROLL << CHILD_SCROLL_Y) -- ); -- } -- -- /* Set the position of the scrollbar within the editor -- * window. Note that, for vertical scrollbars, x and w -- * are ignored. For horizontal bars y and h are ignored. -- */ -- void -- gui_mch_set_scrollbar_pos(sb, x, y, w, h) -- scrollbar_T *sb; -- int x; /* Horizontal sb position */ -- int y; /* Top of scroll bar */ -- int w; /* Width */ -- int h; /* Height */ -- { -- int block[24]; -- int px1, py1; /* Parent window min coords */ -- int px2, py2; /* Parent window max coords */ -- -- /* Find where the parent window is. */ -- block[0] = gui.window_handle; -- swi(Wimp_GetWindowState, 0, block); -- px1 = block[1]; -- py1 = block[2]; -- px2 = block[3]; -- py2 = block[4]; -- -- block[0] = sb -> id; -- -- /* Find out how big the scroll window is at the moment. */ -- swi(Wimp_GetWindowInfo, 0, ((char_u *)block) + 1); -- -- if (block[13] < w || block[12] > -h) -- { -- /* Current window is too small! */ -- if (block[12] > -h) -- block[12] = -h; -- if (block[13] < w) -- block[13] = w; -- swi(Wimp_SetExtent, block[0], block + 11); -- } -- -- /* This works better on the nested_wimp. */ -- if (sb-> wp) -- { -- /* This is a vertical scrollbar. */ -- block[1] = block[3] = px2 - gui.scrollbar_width + (1 << x_eigen_factor); -- block[2] = 1 + py2 - (y + h) + (1 << y_eigen_factor); -- block[4] = 1 + py2 - y; -- } -- else -- { -- /* This is a horizontal scrollbar. */ -- block[2] = block[4] = py1 + gui.scrollbar_height; -- block[1] = px1; -- block[3] = px2 - gui.scrollbar_width; -- } -- -- block[5] = 0; -- block[6] = 0; -- block[7] = -1; -- -- swi(Wimp_OpenWindow, 0, block, 0x4b534154, -- gui.window_handle, /* Parent window handle. */ -- (CHILD_FIX_TO_RIGHT << CHILD_LEFT ) | -- (CHILD_FIX_TO_RIGHT << CHILD_RIGHT ) | -- (CHILD_FIX_TO_BOTTOM << CHILD_TOP ) | -- (CHILD_FIX_TO_BOTTOM << CHILD_BOTTOM) | -- (CHILD_SELF_SCROLL << CHILD_SCROLL_X) | -- (CHILD_SELF_SCROLL << CHILD_SCROLL_Y) -- ); -- } -- -- /* Create a window with no workarea to place inside editor window. -- * (what happens without the nested wimp?) -- * Data for scrollbar is invalid. -- */ -- void -- gui_mch_create_scrollbar(sb, orient) -- scrollbar_T *sb; -- int orient; /* orient is SBAR_HORIZ or SBAR_VERT */ -- { -- int bar[] = -- { -- 0, 0, /* Visible area : min X,Y */ -- 100, 100, /* max X,Y */ -- 0, 0, /* Scroll offsets */ -- -1, /* Window in front */ -- 0x80800150 | (orient == SBAR_HORIZ ? (1 << 30) : (1 << 28)), -- 0xff070207, /* Colours */ -- 0x000c0103, /* More colours */ -- 0, -0x4000, /* Workarea extent */ -- 0x4000, 0, /* max X,Y */ -- 0x00000000, /* No title */ -- 0 << 12, /* No workarea button type */ -- 1, /* Wimp sprite area */ -- 0x00010001, /* Minimum width, height */ -- 0, 0, 0, /* Title data (none) */ -- 0 /* No icons */ -- }; -- swi(Wimp_CreateWindow, 0, bar); -- sb -> id = r0; -- } -- -- #if defined(FEAT_WINDOWS) || defined(PROTO) -- void -- gui_mch_destroy_scrollbar(scrollbar_T *sb) -- { -- swi(Wimp_DeleteWindow, 0, & (sb->id)); -- sb -> id = -1; -- } -- #endif -- -- void -- gui_mch_set_scrollbar_colors(scrollbar_T *sb) -- { -- /* Always use default RO colour scheme. */ -- } -- -- /* -- * Get current mouse coordinates in text window. -- * Note: (0,0) is the bottom left corner, positive y is UP. -- */ -- void -- gui_mch_getmouse(x, y) -- int *x; -- int *y; -- { -- int left; -- int top; -- int block[10]; -- -- block[0] = gui.window_handle; -- swi(Wimp_GetWindowState, 0, block); -- left = block[1]; -- top = block[4]; -- -- swi(Wimp_GetPointerInfo, 0, block); -- *x = block[0] - left; -- *y = top - block[1]; -- } -- -- /* MouseTo(x, y) */ -- void -- gui_mch_setmouse(x, y) -- int x; -- int y; -- { -- } -- -- void -- gui_mch_toggle_tearoffs(enable) -- int enable; -- { -- /* no tearoff menus */ -- } -- -- /* Redraw a window's title. -- * For the nested wimp we use the new 'redraw-title-bar' reason code. -- * For older wimps we mark the area of the screen where the title bar -- * is as invalid. -- */ -- void -- ro_redraw_title(window) -- int window; -- { -- if (nested_wimp) -- { -- swi(Wimp_ForceRedraw, window, 0x4b534154, 3); -- } -- else -- { -- int block[10]; -- int miny; -- -- block[0] = window; -- swi(Wimp_GetWindowState, 0, block); -- miny = block[4]; -- swi(Wimp_GetWindowOutline, 0, block); -- swi(Wimp_ForceRedraw, -1, -- block[1], miny, -- block[3], block[4]); -- } -- } -- -- /* Turn a vimmenu_T structure into a wimp menu structure. -- * -1 if resulting menu is empty. -- * Only the children and dname items in the root menu are used. -- */ -- int * -- ro_build_menu(menu) -- vimmenu_T *menu; -- { -- int *wimp_menu; -- int width = 4; -- int w; -- int size = 28; -- vimmenu_T *item; -- int *wimp_item; -- -- /* Find out how big the menu is so we can allocate memory for it */ -- for (item = menu-> children; item; item = item-> next) -- { -- if (item-> hidden == FALSE && !menu_is_separator(item->name)) -- size += 24; -- } -- -- if (size <= 28) -- return (int *) -1; /* No children - shouldn't happen */ -- -- wimp_menu = (int *) alloc(size); -- -- wimp_menu[0] = (int) menu-> dname; -- wimp_menu[1] = -1; -- wimp_menu[2] = 0; -- wimp_menu[3] = 0x00070207; -- wimp_menu[5] = 44; -- wimp_menu[6] = 0; -- -- wimp_item = wimp_menu + 7; -- -- for (item = menu-> children; item; item = item-> next) -- { -- if (menu_is_separator(item-> name)) -- { -- /* This menu entry is actually a separator. If it is not the first -- * menu entry then mark the previous menu item as needing a dotted -- * line after it. -- */ -- if (wimp_item > wimp_menu + 7) -- wimp_item[-6] |= 0x2; -- } -- else if (item-> hidden == FALSE) -- { -- wimp_item[0] = 0; -- wimp_item[1] = item-> children ? (int) ro_build_menu(item) : -1; -- wimp_item[2] = 0x07009131 | (item-> greyed_out << 22); -- wimp_item[3] = (int) item-> dname; -- wimp_item[4] = -1; -- wimp_item[5] = (int) item; /* Stuff the menu address in this unused space */ -- -- w = strlen(item-> dname) + 1; -- if (w > width) -- width = w; -- wimp_item += 6; -- } -- } -- -- wimp_menu[4] = (width + 2) * 16; -- wimp_menu[7] |= 0x100; /* Menu title is indirected */ -- wimp_item[-6] |= 0x080; /* Last entry in menu */ -- return wimp_menu; -- } -- -- static void -- ro_remove_menu(menu) -- int *menu; -- { -- int *item = menu + 7; -- -- if (menu == NULL || menu == (int *) -1) -- return; -- -- for (;;) -- { -- if (item[1] != -1) -- ro_remove_menu((int *) item[1]); /* Remove sub-menu */ -- if (item[0] & 0x80) -- break; /* This was the last entry */ -- item += 6; -- } -- vim_free(menu); -- } -- -- void -- gui_mch_show_popupmenu(menu) -- vimmenu_T *menu; -- { -- int block[10]; -- -- /* Remove the existing menu, if any */ -- if (wimp_menu != (int *) -1) -- { -- swi(Wimp_CreateMenu, 0, -1); -- ro_remove_menu(wimp_menu); -- wimp_menu = (int *) -1; -- } -- -- wimp_menu = ro_build_menu(menu); -- if (wimp_menu != (int *) -1) -- { -- swi(Wimp_GetPointerInfo, 0, block); -- swi(Wimp_CreateMenu, 0, wimp_menu, block[0] - 64, block[1] + 64); -- } -- } -- -- /* Run a command using the TaskWindow module. -- * If SHELL_FILTER is set then output is not echoed to the screen, -- * If it is not set, then \r is not sent to the output file. -- */ -- int -- gui_mch_call_shell(cmd, options) -- char_u *cmd; -- int options; /* SHELL_FILTER if called by do_filter() */ -- /* SHELL_COOKED if term needs cooked mode */ -- { -- char_u task_cmd[256]; /* Contains *TaskWindow command. */ -- int block[64]; -- int reason; -- char_u *out; -- char_u c; -- int old_msg_col; -- char_u *out_redir; -- int length; -- FILE *out_file = NULL; -- -- out_redir = strstr(cmd, " > "); -- if (out_redir == NULL) -- length = strlen(cmd); /* No redirection. */ -- else -- { -- length = out_redir - cmd; -- out_file = fopen(out_redir + 3, "wb"); -- if (out_file == NULL) -- smsg("WARNING : Can't open file %s for writing\n", out_redir + 3); -- } -- -- if (length > 180) -- { -- if (out_file) -- fclose(out_file); -- return FAIL; /* Command too long. */ -- } -- -- strcpy(task_cmd, "TaskWindow \""); -- strncpy(task_cmd + 12, cmd, length); -- sprintf(task_cmd + 12 + length, -- "\" -task &%08x -ctrl -quit -name \"Vim command\"", -- task_handle); -- -- if (options & SHELL_COOKED) -- settmode(TMODE_COOK); -- -- if (xswi(Wimp_StartTask, task_cmd) & v_flag) -- { -- /* Failed to even start a new task (out of memory?) */ -- settmode(TMODE_RAW); -- if (out_file) -- fclose(out_file); -- return FAIL; -- } -- -- /* Wait for the child process to initialise. */ -- child_handle = 0; -- while (!child_handle) -- { -- reason = wimp_poll(0, block); -- if ((reason == 17 || reason == 18) && block[4] == 0x808c2) -- child_handle = block[1]; -- else -- process_event(reason, block); -- } -- -- /* Block until finished */ -- while (child_handle) -- { -- reason = wimp_poll(1, block); -- if (reason == 3 || (reason == 8 && block[6] == 3)) -- { -- /* Close window request or CTRL-C - kill child task. */ -- block[0] = 20; -- block[3] = 0; -- block[4] = 0x808c4; /* Morite */ -- swi(Wimp_SendMessage, 17, block, child_handle); -- MSG_PUTS(_("\nSending message to terminate child process.\n")); -- continue; -- } -- else if (reason == 8) -- { -- block[0] = 28; -- block[3] = 0; -- block[4] = 0x808c0; /* Input */ -- block[5] = 1; -- /* Block[6] is OK as it is! */ -- swi(Wimp_SendMessage, 17, block, child_handle); -- continue; -- } -- else if (reason == 17 || reason == 18) -- { -- if (block[4] == 0x808c1) -- { -- /* Ack message. */ -- block[3] = block[2]; -- swi(Wimp_SendMessage, 19, block, block[1]); -- out = (char_u *)block + 24; -- old_msg_col = msg_col; -- while (block[5]--) -- { -- c = *out++; -- if (out_file && (c != '\r' || (options & SHELL_FILTER))) -- fputc(c, out_file); -- if ((options & SHELL_FILTER) == 0) -- { -- if (c == 127) -- msg_puts("\b \b"); -- else if (c > 31) -- msg_putchar(c); -- else if (c == 10) -- { -- lines_left = 8; /* Don't do More prompt! */ -- msg_putchar(10); -- } -- } -- } -- /* Flush output to the screen. */ -- windgoto(msg_row, msg_col); -- out_flush(); -- continue; -- } -- } -- process_event(reason, block); -- } -- msg_putchar('\n'); -- settmode(TMODE_RAW); -- if (out_file) -- fclose(out_file); -- return OK; -- } -- -- /* Like strsave(), but stops at any control char */ -- char_u * -- wimp_strsave(str) -- char *str; -- { -- int strlen = 0; -- char_u *retval; -- while (str[strlen] > 31) -- strlen++; -- retval = alloc(strlen + 1); -- if (retval) -- { -- memcpy(retval, str, strlen); -- retval[strlen] = '\0'; -- } -- return retval; -- } -- -- /* If we are saving then pop up a standard RISC OS save box. -- * Otherwise, open a directory viewer on the given directory (and return NULL) -- * The string we return will be freed later. -- */ -- char_u * -- gui_mch_browse(saving, title, dflt, ext, initdir, filter) -- int saving; /* write action */ -- char_u *title; /* title for the window */ -- char_u *dflt; /* default file name */ -- char_u *ext; /* extension added */ -- char_u *initdir; /* initial directory, NULL for current dir */ -- char_u *filter; /* file name filter */ -- { -- char command[256]; -- int length; -- -- if (saving) -- { -- int block[64]; -- int reason; -- int done_save = FALSE; -- char_u *retval = NULL; -- char_u *sprname; -- char_u *fname; -- int dragging_icon = FALSE; -- int filetype; -- -- if (!dflt) -- dflt = "TextFile"; -- -- block[0] = save_window; -- block[1] = 0; -- swi(Wimp_GetIconState, 0, block); -- sprname = ((char_u *) block[7]); -- block[1] = 1; -- swi(Wimp_GetIconState, 0, block); -- fname = ((char *) block[7]); -- strncpy(fname, dflt, 255); -- -- if (xswi(OS_FSControl, 31, curbuf->b_p_oft) & v_flag) -- { -- filetype = 0xfff; -- strcpy(sprname + 5, "xxx"); -- } -- else -- { -- filetype = r2; -- sprintf(sprname + 5, "%03x", filetype); -- } -- -- /* Open the save box */ -- -- swi(Wimp_GetPointerInfo, 0, block); -- swi(Wimp_CreateMenu, 0, save_window, block[0] - 64, block[1] + 64); -- swi(Wimp_SetCaretPosition, save_window, 1, 0, 0, -1, -1); -- -- while (!done_save) -- { -- reason = wimp_poll(1, block); -- switch (reason) -- { -- case 1: -- redraw_window(block); -- break; -- case 2: -- if (block[0] == save_window) -- swi(Wimp_OpenWindow, 0, block); -- else -- ro_open_window(block); -- break; -- case 3: -- done_save = TRUE; -- break; -- case 6: -- if (block[3] != save_window) -- done_save = TRUE; -- else -- { -- int drag_box[4]; -- int min_x, max_y; -- -- switch (block[4]) -- { -- case 0: /* Start drag */ -- block[0] = save_window; -- swi(Wimp_GetWindowState, 0, block); -- min_x = block[1]; -- max_y = block[4]; -- block[1] = 0; -- swi(Wimp_GetIconState, 0, block); -- drag_box[0] = block[2] + min_x; -- drag_box[1] = block[3] + max_y; -- drag_box[2] = block[4] + min_x; -- drag_box[3] = block[5] + max_y; -- -- swi(DragASprite_Start, -- 0x45, -- 1, -- sprname, -- drag_box); -- dragging_icon = TRUE; -- break; -- case 2: /* OK */ -- retval = wimp_strsave(fname); -- done_save = TRUE; -- break; -- case 3: /* Cancel */ -- done_save = TRUE; -- break; -- } -- } -- break; -- case 7: -- if (dragging_icon) -- { -- int len = 0; -- -- dragging_icon = FALSE; -- swi(Wimp_GetPointerInfo, 0, block); -- block[5] = block[3]; -- block[6] = block[4]; -- block[7] = block[0]; -- block[8] = block[1]; -- block[9] = 0; /* Don't know the size */ -- block[10] = filetype; -- -- while (fname[len] > 31) -- { -- if (fname[len] == '.') -- { -- fname += len + 1; -- len = 0; -- } -- else -- len++; -- } -- if (len > 211) -- len = 211; -- -- memcpy(((char_u *) block) + 44, fname, len); -- ((char_u *)block)[44 + len] = '\0'; -- -- block[0] = (len + 48) & 0xfc; -- block[3] = 0; -- block[4] = 1; /* DataSave */ -- -- swi(Wimp_SendMessage, 17, block, block[5], block[6]); -- } -- else -- ro_drag_finished(block); -- break; -- case 8: -- if (block[6] == 13) -- { -- retval = wimp_strsave(fname); -- done_save = TRUE; -- } -- else if (block[6] == 0x1b) -- done_save = TRUE; -- else -- swi(Wimp_ProcessKey, block[6]); -- break; -- case 17: -- case 18: -- if (block[4] == 2 && block[9] != -1) -- { -- /* DataSaveAck from dragging icon. */ -- retval = wimp_strsave(((char_u *) block) + 44); -- done_save = TRUE; -- } -- else if (block[4] == 0x400c9) -- { -- /* MenusDeleted */ -- done_save = TRUE; -- } -- else -- ro_message(block); -- break; -- } -- } -- block[0] = save_window; -- swi(Wimp_CloseWindow, 0, block); -- swi(Wimp_GetCaretPosition, 0, block); -- if (block[0] == -1) -- swi(Wimp_SetCaretPosition, gui.window_handle, -1, 0, 0, -1, -1); -- -- return retval; -- } -- else if (initdir) -- { -- /* Open a directory viewer */ -- length = strlen(initdir); -- -- if (length > 240) -- return NULL; /* Path too long! */ -- -- length = sprintf(command, "Filer_OpenDir %s", initdir); -- while (command[length - 1] == '.') -- length--; -- command[length] = '\0'; -- swi(OS_CLI, command); -- } -- return NULL; -- } ---- 0 ---- -*** ../vim-7.3.186/src/os_riscos.c 2010-08-15 21:57:27.000000000 +0200 ---- src/os_riscos.c 1970-01-01 01:00:00.000000000 +0100 -*************** -*** 1,1292 **** -- /* vi:set ts=8 sts=4 sw=4: -- * -- * VIM - Vi IMproved by Bram Moolenaar -- * -- * Do ":help uganda" in Vim to read copying and usage conditions. -- * Do ":help credits" in Vim to see a list of people who contributed. -- * See README.txt for an overview of the Vim source code. -- */ -- -- #include "vim.h" -- -- /* -- * os_riscos.c -- * -- * Thomas Leonard <tal197@ecs.soton.ac.uk> -- */ -- -- const char *__dynamic_da_name = "Vim heap"; /* Enable and name our dynamic area */ -- int ro_line_mode = TRUE; /* For Ex mode we much echo chars to the screen ourselves */ -- int windowed; /* Flag - are we running inside a text window? */ -- int WinLeft, WinTop; /* We might be started inside a text window */ -- int ScrollTop; /* Make cursor movements relative to ScrollTop. */ -- -- int old_escape_state = -1; -- int old_cursor_state = -1; -- -- #define rgb(r,g,b) ((b<<24) + (g<<16) + (r<<8)) -- #define NORMAL_FG 0x00000000 -- #define NORMAL_BG 0xffffffff -- -- /* Convert a DOS colour number to an RGB palette entry. -- * Mappings from X11 rgb/txt file. -- */ -- static int -- map_colour(dos) -- int dos; /* Standard DOS colour number. */ -- { -- switch (dos) -- { -- case 0: return 0; /* Black */ -- case 1: return rgb(0,0,139); /* DarkBlue */ -- case 2: return rgb(0,100,0); /* DarkGreen */ -- case 3: return rgb(0,139,139); /* DarkCyan */ -- case 4: return rgb(139,0,0); /* DarkRed */ -- case 5: return rgb(139,0,139); /* DarkMagenta */ -- case 6: return rgb(165,42,42); /* Brown, DarkYellow */ -- case 7: return rgb(211,211,211); /* LightGray, LightGrey, Gray, Grey */ -- case 8: return rgb(169,169,169); /* DarkGray, DarkGrey */ -- case 9: return rgb(173,216,230); /* Blue, LightBlue */ -- case 10: return rgb(144,238,144); /* Green, LightGreen */ -- case 11: return rgb(224,255,255); /* Cyan, LightCyan */ -- case 12: return rgb(255,0,0); /* Red, LightRed */ -- case 13: return rgb(255,0,255); /* Magenta, LightMagenta */ -- case 14: return rgb(255,255,0); /* Yellow, LightYellow */ -- case 15: return rgb(255,255,255); /* White */ -- } -- return rgb(100,100,100); -- } -- -- static void -- text_fg(fg) -- int fg; /* Foregound colour in the form &BBGGRR00 */ -- { -- xswi(ColourTrans_SetTextColour, fg, 0, 0, 0); -- } -- -- static void -- text_bg(bg) -- int bg; /* Backgound colour in the form &BBGGRR00 */ -- { -- xswi(ColourTrans_SetTextColour, bg, 0, 0, 1 << 7); -- } -- -- #define OUT_NORMAL 0 -- #define OUT_NUMBER 1 /* Reading in a number */ -- -- void -- mch_write(s, len) -- char_u *s; -- int len; -- { -- static int mode = OUT_NORMAL; -- static int x, y; /* For reading numbers in. */ -- -- if (!term_console) -- { -- /* Maybe we are running Vim remotely - don't interpret chars */ -- while (len--) -- { -- char_u c = *s++; -- swi(OS_WriteC, c); -- /* We might need to send a CR too. This shouldn't -- * hurt if we don't need it, should it? -- */ -- if (c == 10) -- swi(OS_WriteI + 13); -- } -- return; -- } -- -- while (len--) -- { -- char_u c = *s++; -- switch (mode) -- { -- case OUT_NUMBER: -- if (c < '0' || c > '9') -- { -- mode = OUT_NORMAL; -- } -- else -- { -- x = (x * 10) + c - '0'; -- continue; -- } -- /* note: no break here! */ -- -- case OUT_NORMAL: -- switch (c) -- { -- case 1: -- /* Number (in decimal) follows. */ -- mode = OUT_NUMBER; -- y = x; -- x = 0; -- break; -- case 2: -- /* Position cursor. */ -- swi(OS_WriteI + 31); -- swi(OS_WriteC, x); -- swi(OS_WriteC, y - ScrollTop); -- break; -- case 3: -- /* Set scroll region. */ -- if (x == Rows -1 && y == 0 && !windowed) -- { -- /* Whole screen - remove text window. -- * This is MUCH faster. -- */ -- swi(OS_WriteI + 26); -- } -- else -- { -- /* Create a text window. */ -- swi(OS_WriteI + 28); -- swi(OS_WriteC, WinLeft); -- swi(OS_WriteC, WinTop + x); -- swi(OS_WriteC, WinLeft + Columns - 1); -- swi(OS_WriteC, WinTop + y); -- } -- ScrollTop = y; -- break; -- case 4: -- /* Normal mode. */ -- text_fg(NORMAL_FG); -- text_bg(NORMAL_BG); -- break; -- case 5: -- /* Reverse mode. */ -- text_fg(NORMAL_BG); -- text_bg(NORMAL_FG); -- break; -- case 10: -- swi(OS_NewLine); -- break; -- case 14: -- /* Cursor invisible. */ -- swi(OS_WriteN, -- "\027\001\000\000\000\000\000\000\000\000", -- 10); -- break; -- case 15: -- /* Cursor visible. */ -- swi(OS_WriteN, -- "\027\001\002\000\000\000\000\000\000\000", -- 10); -- break; -- case 16: -- /* Cursor very visible (flash) */ -- swi(OS_WriteN, -- "\027\001\003\000\000\000\000\000\000\000", -- 10); -- case 17: -- /* Set foreground colour. */ -- text_fg(map_colour(x)); -- break; -- case 18: -- /* Set background colour. */ -- text_bg(map_colour(x)); -- break; -- case 19: -- /* Scroll text down. */ -- swi(OS_WriteN, -- "\027\007\000\002\000\000\000\000\000\000", -- 10); -- break; -- default: -- swi(OS_WriteC, c); -- } -- continue; -- -- default: -- printf("[output error]"); -- mode = OUT_NORMAL; -- } -- } -- } -- -- /* -- * mch_inchar(): low level input funcion. -- * Get a characters from the keyboard. -- * Return the number of characters that are available. -- * If wtime == 0 do not wait for characters. -- * If wtime == n wait n msecs for characters. -- * If wtime == -1 wait forever for characters. -- * -- * TODO: call convert_input() for 'fileencoding' to 'encoding' conversion. -- */ -- int -- mch_inchar(buf, maxlen, wtime, tb_change_cnt) -- char_u *buf; -- int maxlen; -- long wtime; -- int tb_change_cnt; -- { -- int got=0; -- unsigned int start_time = clock(); -- -- if (ro_line_mode) -- { -- /* We're probably in Ex mode - get whole lines at a time. */ -- -- static char_u line_buffer[256]; -- static int remaining_chars = 0; -- static int buf_pos = 0; -- -- /* Do we need to fetch another line? */ -- if (remaining_chars == 0) -- { -- int old_esc_state; -- swi(OS_Byte, 200, 1, 0xfe); -- old_esc_state = r1; -- -- buf_pos = 0; -- if (xswi(OS_ReadLine, line_buffer, 255, 0, 255) & (c_flag | v_flag)) -- { -- got_int = TRUE; /* ESC pressed */ -- r1 = 0; -- } -- line_buffer[r1] = 13; -- remaining_chars = r1 + 1; /* Count CR as part of input */ -- -- swi(OS_Byte, 200, old_esc_state, 0); -- } -- -- /* Can we send the rest of the buffer back in one go? */ -- if (remaining_chars <= maxlen) -- { -- int got = remaining_chars; -- -- memcpy(buf, line_buffer + buf_pos, got); -- remaining_chars = 0; -- return got; -- } -- -- /* Send as much as we can */ -- memcpy(buf, line_buffer + buf_pos, maxlen); -- buf_pos += maxlen; -- remaining_chars -= maxlen; -- -- return maxlen; -- } -- -- if (!term_console) -- { -- /* Use OS_ReadC for all input. -- * Avoids problems with remote access getting interference from -- * the keyboard. -- */ -- if (wtime == 0) -- return 0; /* Ignore quick key checks */ -- -- if (xswi(OS_ReadC) & c_flag) -- { -- got_int = TRUE; /* ESC pressed - can this happen? */ -- swi(OS_Byte, 124); /* Clear Escape state */ -- r0 = 0x1b; /* It *might* not have been Escape! */ -- } -- buf[0] = r0; -- return 1; -- } -- -- /* -- * OK, here's the plan: -- * -- * 1) Wait until wtime expires or we get a key -- * 2) Get keys until the keyboard buffer is empty or buf is full -- */ -- -- while (xswi(OS_Byte,145,0) & c_flag) -- { -- /* Nothing at all in the keyboard buffer. -- * Has our time expired yet? -- */ -- if ( (wtime != -1) && (clock() - start_time) >= wtime ) -- return 0; /* Nothing read - giving up */ -- } -- -- /* We've got one char (in r2) - are there any more? */ -- -- while (got < maxlen) -- { -- buf[got++] = r2; -- -- if (xswi(OS_Byte,145,0) & c_flag) -- return got; /* Keyboard buffer empty */ -- } -- return got; /* buf is full */ -- } -- -- /* -- * return non-zero if a character is available -- */ -- int -- mch_char_avail() -- { -- if (!term_console) -- return 0; /* Can't tell */ -- if (xswi(OS_Byte, 152, 0) & c_flag) -- return 0; -- return 1; -- } -- -- /* Find out how much free memory we have. -- * I don't know how to work this out exactly but, since we can claim -- * more memory from the OS, let's just report the free pool size. -- * Dynamic area 6 doesn't exist pre 3.6 according to StrongHelp, so -- * we'll use Wimp_SlotSize. If that fails (outside the desktop?) -- * then just return a big number and hope. -- */ -- long_u -- mch_avail_mem(special) -- int special; -- { -- if (xswi(Wimp_SlotSize, -1, -1) & v_flag) -- return 0x7fffffff; -- return r2; -- } -- -- void -- mch_delay(msec, ignoreinput) -- long msec; -- int ignoreinput; -- { -- int start_time, time_now; -- int csec = msec / 10; -- -- swi(OS_ReadMonotonicTime); -- start_time = r0; -- -- for (;;) -- { -- swi(OS_ReadMonotonicTime); -- time_now = r0; -- if (time_now - start_time > csec) -- return; -- #ifdef FEAT_GUI -- /* In the GUI, allow other programs to run while waiting. */ -- if (gui.in_use) -- gui_mch_wait_for_chars(start_time + csec); -- #endif -- } -- } -- -- /* -- * If the machine has job control, use it to suspend the program, -- * otherwise fake it by starting a new shell. -- */ -- void -- mch_suspend() -- { -- suspend_shell(); -- } -- -- void -- mch_init() -- { -- /* -- * Read window size first. Calls to mch_get_shellsize() will -- * simply return these values in future so that setting the -- * text window (used for scrolling) won't give strange results. -- */ -- -- int buf[7] = {132, 135, 256, 257, 1, 2, -1}; -- -- /* Command windows are no longer forced open, since if we are -- * in the desktop then we'll use the GUI version. -- * Opening a command window here messes up the GUI version startup -- */ -- #ifndef FEAT_GUI -- swi(OS_WriteI); -- #endif -- swi(OS_ReadVduVariables, buf, buf); -- WinLeft = buf[0]; -- WinTop = buf[1]; -- Columns = buf[2]; -- Rows = buf[3] + 1; /* Seems to be one off (VduVars wrong?) */ -- ScrollTop = 0; -- -- /* Are we running in a textwindow? */ -- if (Rows == buf[5] + 1 && Columns == buf[4] + 1) -- windowed = 0; -- else -- windowed = 1; -- -- /* Choose a nice colour scheme. */ -- text_fg(NORMAL_FG); -- text_bg(NORMAL_BG); -- } -- -- /* -- * Check_win checks whether we have an interactive stdout. -- */ -- /* ARGSUSED */ -- int -- mch_check_win(argc, argv) -- int argc; -- char **argv; -- { -- return OK; -- } -- -- /* -- * Return TRUE if the input comes from a terminal, FALSE otherwise. -- */ -- int -- mch_input_isatty() -- { -- if (xswi(OS_ChangeRedirection, -1, -1) & v_flag) -- return TRUE; /* Error - TRUE is probably correct though */ -- if (r0 == 0) -- return TRUE; -- return FALSE; -- } -- -- #ifdef FEAT_TITLE -- int -- mch_can_restore_title() -- { -- return FALSE; -- } -- -- int -- mch_can_restore_icon() -- { -- return FALSE; -- } -- -- -- /* -- * Set the window title and icon. -- */ -- void -- mch_settitle(title, icon) -- char_u *title; -- char_u *icon; -- { -- if (title == NULL) -- title = (char_u *) "<untitled>"; -- #ifdef FEAT_GUI -- if (gui.in_use && strcmp(title, gui.window_title)) -- { -- int length; -- length = strlen(title); -- if (length >= gui.window_title_size) -- length = gui.window_title_size - 1; -- strncpy(gui.window_title, title, length); -- gui.window_title[length] = 0; -- ro_redraw_title(gui.window_handle); -- } -- #endif -- return; -- } -- -- /* -- * Restore the window/icon title. -- * "which" is one of: -- * 1 only restore title -- * 2 only restore icon -- * 3 restore title and icon -- */ -- void -- mch_restore_title(which) -- int which; -- { -- return; -- } -- #endif -- -- /* -- * Insert user name in s[len]. -- * Return OK if a name found. -- */ -- int -- mch_get_user_name(s, len) -- char_u *s; -- int len; -- { -- /* RISC OS doesn't support user names. */ -- *s = NUL; -- return FAIL; -- } -- -- /* -- * Insert host name in s[len]. -- */ -- -- void -- mch_get_host_name(s, len) -- char_u *s; -- int len; -- { -- if (xswi(OS_ReadVarVal, "Machine$Name", s, len, 0, 3) & v_flag) -- { -- /* Variable does not exist (normal operation) */ -- vim_strncpy(s, "(unknown)", len - 1); -- } -- } -- -- /* -- * return process ID -- */ -- long -- mch_get_pid() -- { -- if (xswi(Wimp_ReadSysInfo, 5) & v_flag) -- return 0; -- return r0; -- } -- -- /* -- * Get name of current directory into buffer 'buf' of length 'len' bytes. -- * Return OK for success, FAIL for failure. -- */ -- int -- mch_dirname(buf, len) -- char_u *buf; -- int len; -- { -- if (xswi(OS_FSControl, 37, "@", buf, 0, 0, len) & v_flag) -- return FAIL; -- return OK; -- } -- -- /* -- * Get absolute file name into buffer 'buf' of length 'len' bytes. -- * -- * return FAIL for failure, OK for success -- */ -- int -- mch_FullName(fname, buf, len, force) -- char_u *fname, *buf; -- int len; -- int force; /* Also expand when already absolute path name. -- * Not used under RISC OS. -- */ -- { -- if (xswi(OS_FSControl, 37, fname, buf, 0, 0, len) & v_flag) -- return FAIL; -- return OK; -- } -- -- /* -- * Return TRUE if "fname" does not depend on the current directory. -- */ -- int -- mch_isFullName(fname) -- char_u *fname; -- { -- if (strstr(fname, "::") && strstr(fname,".$.")) -- return TRUE; -- return FALSE; -- } -- -- /* -- * Get file permissions for 'name'. -- * Returns -1 when it doesn't exist. -- */ -- long -- mch_getperm(name) -- char_u *name; -- { -- struct stat statb; -- -- if (stat((char *)name, &statb)) -- return -1; -- return statb.st_mode; -- } -- -- /* -- * set file permission for 'name' to 'perm' -- * -- * return FAIL for failure, OK otherwise -- */ -- int -- mch_setperm(name, perm) -- char_u *name; -- long perm; -- { -- return (chmod((char *)name, (mode_t)perm) == 0 ? OK : FAIL); -- } -- -- /* -- * Set hidden flag for "name". -- */ -- /* ARGSUSED */ -- void -- mch_hide(name) -- char_u *name; -- { -- /* can't hide a file */ -- } -- -- /* -- * return TRUE if "name" is a directory -- * return FALSE if "name" is not a directory -- * return FALSE for error -- */ -- int -- mch_isdir(name) -- char_u *name; -- { -- if (xswi(OS_File, 17, name) & v_flag) -- return FALSE; -- if (r0 == 2 || r0 == 3) -- return TRUE; /* Count image files as directories. */ -- return FALSE; -- } -- -- /* -- * Return 1 if "name" can be executed, 0 if not. -- * Return -1 if unknown. Requires which to work. -- */ -- int -- mch_can_exe(name) -- char_u *name; -- { -- char_u *buf; -- char_u *p; -- int retval; -- -- buf = alloc((unsigned)STRLEN(name) + 7); -- if (buf == NULL) -- return -1; -- sprintf((char *)buf, "which %s", name); -- p = get_cmd_output(buf, NULL, SHELL_SILENT); -- vim_free(buf); -- if (p == NULL) -- return -1; -- /* result can be: "name: Command not found" */ -- retval = (*p != NUL && strstr((char *)p, "not found") == NULL); -- vim_free(p); -- return retval; -- } -- -- /* -- * Check what "name" is: -- * NODE_NORMAL: file or directory (or doesn't exist) -- * NODE_WRITABLE: writable device, socket, fifo, etc. -- * NODE_OTHER: non-writable things -- */ -- int -- mch_nodetype(name) -- char_u *name; -- { -- /* TODO */ -- return NODE_NORMAL; -- } -- -- void -- mch_early_init() -- { -- /* Turn off all the horrible filename munging in UnixLib. */ -- int __riscosify_control = __RISCOSIFY_NO_PROCESS; -- } -- -- void -- mch_exit(r) -- int r; -- { -- settmode(TMODE_COOK); -- exiting = TRUE; -- out_flush(); -- ml_close_all(TRUE); /* remove all memfiles */ -- -- #ifdef FEAT_GUI -- if (gui.in_use) -- gui_exit(r); -- #endif -- swi(OS_NewLine); -- if (old_escape_state != -1) -- swi(OS_Byte, 229, old_escape_state, 0); -- if (old_cursor_state != -1) -- swi(OS_Byte, 4, old_cursor_state); -- exit(r); -- } -- -- void -- mch_settmode(tmode) -- int tmode; /* TMODE_RAW or TMODE_COOK */ -- { -- if (tmode == TMODE_COOK) -- { -- ro_line_mode = TRUE; -- return; -- } -- -- ro_line_mode = FALSE; -- -- if (term_console) -- { -- /* Block cursor. */ -- swi(OS_WriteN, -- "\027\000\012\000\000\000\000\000\000\000", -- 10); -- -- /* Disable the standard cursor key actions. */ -- swi(OS_Byte, 4, 1); -- if (old_cursor_state == -1) -- old_cursor_state = r1; -- } -- -- /* Stop Escape from quitting Vim! */ -- swi(OS_Byte, 229, 1, 0); -- if (old_escape_state == -1) -- old_escape_state = r1; -- } -- -- /* -- * set mouse clicks on or off (only works for xterms) -- */ -- void -- mch_setmouse(on) -- int on; -- { -- } -- -- /* -- * set screen mode, always fails. -- */ -- /* ARGSUSED */ -- int -- mch_screenmode(arg) -- char_u *arg; -- { -- EMSG(_(e_screenmode)); -- return FAIL; -- } -- -- /* -- * Try to get the current window size. -- * Return OK when size could be determined, FAIL otherwise. -- * Simply return results stored by mch_init() if we are the -- * machine's console. If not, we don't know how big the screen is. -- */ -- int -- mch_get_shellsize() -- { -- /* if size changed: screenalloc will allocate new screen buffers */ -- return term_console ? OK : FAIL; -- } -- -- /* -- * Can't change the size. -- * Assume the user knows what he's doing and use the new values. -- */ -- void -- mch_set_shellsize() -- { -- /* Assume the user knows what he's doing and use the new values. */ -- } -- -- /* -- * Rows and/or Columns has changed. -- */ -- void -- mch_new_shellsize() -- { -- /* Nothing to do. */ -- } -- -- int -- mch_call_shell(cmd, options) -- char_u *cmd; -- int options; /* SHELL_*, see vim.h */ -- { -- int retval; -- int tmode = cur_tmode; -- -- if (cmd == NULL) -- cmd = (char_u *) "GOS"; -- -- #ifdef FEAT_GUI -- if (gui.in_use) -- return gui_mch_call_shell(cmd, options); -- #endif -- if (options & SHELL_COOKED) -- settmode(TMODE_COOK); /* set to normal mode */ -- MSG_PUTS("\n"); -- -- /* I don't even want to think about what UnixLib must -- * be doing to allow this to work... -- */ -- retval = system(cmd); -- if (retval && !(options & SHELL_SILENT)) -- EMSG(strerror(EOPSYS)); /* Doesn't seem to set errno? */ -- -- swi(OS_Byte, 229, 1, 0); /* Re-disable escape */ -- if (tmode == TMODE_RAW) -- settmode(TMODE_RAW); /* set to raw mode */ -- return retval ? FAIL : OK; -- } -- -- /* -- * Check for Escape being pressed right now. -- * [ different if !term_console? ] -- */ -- void -- mch_breakcheck() -- { -- if (xswi(OS_Byte, 121, 0xf0) & v_flag) -- return; -- if (r1 == 0xff) -- { -- got_int = TRUE; -- swi(OS_Byte, 15, 1); /* Flush input buffer */ -- } -- } -- -- /* -- * Recursively expand one path component into all matching files and/or -- * directories. -- * "path" has backslashes before chars that are not to be expanded. -- * Return the number of matches found. -- */ -- int -- mch_expandpath(gap, path, flags) -- garray_T *gap; /* Grow array for results. */ -- char_u *path; -- int flags; /* EW_* flags */ -- { -- int got; /* Number of matches. */ -- char_u *pattern; -- -- /* Plan: -- * -- * 1) Get first part of path - no wildcards -- * 2) Get next path element (wildcarded) -- * 3) Get rest of path -- * -- * If (3) is nothing then only the leaf is wildcarded - add to gap -- * Otherwise call recursively for each path in (2), passing (3) -- * -- * This is just the header function. -- */ -- -- /* We must be able to modifiy path, so make a copy */ -- pattern = vim_strsave(path); -- if (pattern == NULL) -- return 0; -- got = expand_section(gap, (char_u *)"", pattern, flags); -- vim_free(pattern); -- return got; -- } -- -- /* -- * expand_section(gap, "$.Dir1.Dir2", "ABBA*.myleaf##") -- * -- * calls expand_section(gap, "$.Dir1.Dir2.ABBA_Gold", "myleaf##") -- * and expand_section(gap, "$.Dir1.Dir2.ABBA_Live", "myleaf##") -- * -- * If rest is just a leaf then all matches are added to gap. -- * -- * Returns number of items added to gap. -- */ -- int -- expand_section(gap, root, rest, flags) -- garray_T *gap; -- char_u *root; /* Non-wildcarded path to search */ -- char_u *rest; /* Wildcarded remainder of path */ -- int flags; /* Add dirs/files/missing objects. */ -- { -- static char_u buf[MAXPATHL]; /* Temporary buffer. */ -- char_u dir[MAXPATHL]; -- int start_element = -1; /* Start of wildcarded element */ -- char_u c; -- int i; -- int got, dir_pos; -- int buflen; /* Chars used in buf[] */ -- int colon = 0; /* Dir ends in ':' */ -- -- buflen = strlen(root); -- STRNCPY(buf, root, buflen); /* Copy root into buffer. */ -- -- /* -- * Find end of nonwildcarded section. -- * Count ':' as a path sep since Vim:Bug* is a valid pathname. -- */ -- -- for (i = 0; c = rest[i]; i++) -- { -- if (c == PATHSEP) -- { -- start_element = i; -- colon = 0; -- } -- if (c == ':') -- { -- start_element = i + 1; -- colon = 1; -- } -- if (c == '#' || c == '*') -- break; -- } -- if (c == 0) -- start_element = i; -- -- /* -- * start_element +> terminator for non-wildcarded section. -- * Transfer this bit into buf. -- */ -- if (buflen + start_element + 4 >= MAXPATHL) -- return 0; /* Buffer full */ -- if (start_element >= 0) -- { -- if (*root && !colon) -- buf[buflen++] = PATHSEP; -- strncpy(buf + buflen, rest, start_element); -- buflen += start_element; -- } -- buf[buflen] = 0; -- -- /* -- * Did we reach the end of the string without hitting any wildcards? -- */ -- if (c == 0) -- { -- /* Yes - add combined path to grow array and return. */ -- addfile(gap, buf, flags); -- return 1; -- } -- -- if (start_element < 0 || !colon) -- start_element++; -- rest += start_element; -- -- /* -- * rest does contain wildcards if we get here. -- * -- * Now : have we reached the leaf names part yet? -- * If so, add all matches (files and dirs) to gap. -- * If not, get next path element and scan all matching directories. -- */ -- -- start_element = -1; -- for (i = 0; rest[i]; i++) -- { -- if (rest[i] == '.') -- { -- start_element = i; -- rest[i] = 0; /* Break string here. */ -- break; -- } -- } -- -- /* If start_element is -1 then we are matching leaf names */ -- -- r3 = 0; /* Number of objs read. */ -- dir_pos = 0; /* Position through directory. */ -- got = 0; /* Files added so far. */ -- while (dir_pos != -1) -- { -- buf[buflen] = 0; -- if (xswi(OS_GBPB, 9, -- buf, /* Directory to scan. */ -- buf + buflen + (1 - colon), /* Buffer for result. */ -- 1, /* Number of objects to read. */ -- dir_pos, /* Search position. */ -- MAXPATHL - 2 - buflen, /* Size of result buffer. */ -- rest) /* Wildcarded leafname. */ -- & v_flag) -- { -- EMSG(r0 + 4); -- r4 = -1; -- } -- dir_pos = r4; /* r4 corrupted by addfile() */ -- if (r3 > 0) -- { -- char_u *path = buf; -- if (buflen == 0) -- path++; /* Don't do '.File' */ -- else if (!colon) -- buf[buflen] = '.'; /* Join path and leaf */ -- -- /* Path -> full path of object found */ -- if (start_element == -1) -- { -- addfile(gap, path, flags); -- got++; -- } -- else -- { -- /* Scan into subdirectories and images; ignore files */ -- swi(OS_File, 17, path); -- if (r0 == 2 || r0 == 3) -- got += expand_section(gap, -- path, -- rest + start_element + 1, -- flags); -- } -- } -- } -- -- /* Restore the dot if we removed it. */ -- if (start_element >= 0) -- rest[start_element] = '.'; -- return got; -- } -- -- /* -- * mch_expand_wildcards() - this code does wild-card pattern matching using -- * the shell. It isn't used under RISC OS. -- * -- * return OK for success, FAIL for error (you may lose some memory) and put -- * an error message in *file. -- * -- * num_pat is number of input patterns -- * pat is array of pointers to input patterns -- * num_file is pointer to number of matched file names -- * file is pointer to array of pointers to matched file names -- */ -- int -- mch_expand_wildcards(num_pat, pat, num_file, file, flags) -- int num_pat; -- char_u **pat; -- int *num_file; -- char_u ***file; -- int flags; /* EW_* flags */ -- { -- /* This doesn't get called unless SPECIAL_WILDCHAR is defined. */ -- return FAIL; -- } -- -- /* -- * Return TRUE if "p" contains wildcards which can be expanded by -- * mch_expandpath(). -- */ -- int -- mch_has_exp_wildcard(p) -- char_u *p; -- { -- if (vim_strpbrk((char_u *)"*#", p)) -- return TRUE; -- return FALSE; -- } -- -- /* Return TRUE if "p" contains wildcards. */ -- int -- mch_has_wildcard(p) -- char_u *p; -- { -- if (vim_strpbrk((char_u *)"*#`", p)) -- return TRUE; -- return FALSE; -- } -- -- int /* see Unix unlink(2) */ -- mch_remove(file) -- char_u *file; /* Name of file to delete. */ -- { -- if (xswi(OS_FSControl, 27, file, 0, 0) & v_flag) -- return EXIT_FAILURE; -- return EXIT_SUCCESS; -- } -- -- /* Try to make existing scripts work without modification. -- * Return a pointer to the new string (freed by caller), or NULL -- * -- * Two main cases: -- * - Absolute : $VIM/syntax/help.vim -- * - Relative : Adfs::4.$.!Vim.Resources.Syntax/help.vim -- */ -- char_u * -- mch_munge_fname(fname) -- char_u *fname; -- { -- char_u c; -- int len; -- char_u *retval; -- -- retval = fname = vim_strsave(fname); -- if (fname == NULL) -- return NULL; -- -- if (strncmp(fname, "$VIM/", 5) == 0) -- { -- strncpy(fname, "Vim:", 4); -- for (fname += 5; c = *fname; fname++) -- { -- if (c == '.') -- break; -- if (c == '/') -- fname[-1] = '.'; -- else -- fname[-1] = c; -- } -- fname[-1] = '\0'; -- } -- else -- { -- /* Check to see if the file exists without modification. */ -- if (xswi(OS_File, 17, fname) & v_flag) -- r0 == 0; /* Invalid filename? */ -- if (r0) -- return retval; -- -- len = strlen(fname); -- if (strcmp(fname + len - 4, ".vim") == 0) -- { -- fname[len - 4] = '\0'; -- for (; c = *fname; fname++) -- { -- if (c == '/') -- *fname = '.'; -- } -- } -- } -- return retval; -- } -- -- /* QuickFix reads munged names from the error file. -- * Correct them. -- */ -- int -- ro_buflist_add(old_name) -- char_u *old_name; /* Name of file found by quickfix */ -- { -- char_u *fname; -- char_u *leaf; /* Pointer to start of leaf in old_name */ -- char_u *ptr; -- char_u c; -- int retval; -- -- if (old_name == NULL) -- return buflist_add(NULL, 0); -- -- /* Copy the name so we can mess around with it. */ -- fname = vim_strsave(old_name); -- if (fname == NULL) -- /* Out of memory - can't modify name */ -- return buflist_add(old_name, 0); -- -- /* Change `dir/main.c' into `dir.c.main' */ -- leaf = fname; -- for (ptr = fname; c = *ptr; ptr++) -- { -- if (c == '/') -- { -- leaf = ptr + 1; -- *ptr = '.'; -- } -- else if (c == '.') -- break; -- } -- if (c == '.') -- { -- /* Change `main.c' into `c.main' -- * | | -- * leaf ptr -- */ -- ptr += old_name - fname; -- *ptr = '\0'; -- sprintf(leaf, -- "%s.%s", -- ptr + 1, -- leaf - fname + old_name); -- } -- -- retval = buflist_add(fname, 0); -- free(fname); -- return retval; -- } -- -- /* Change the current directory. -- * Strip trailing dots to make it easier to use with filename completion. -- * Return 0 for success, -1 for failure. -- */ -- int -- mch_chdir(dir) -- char_u *dir; -- { -- int length; -- int retval; -- char_u *new_dir; -- -- if (p_verbose >= 5) -- { -- verbose_enter(); -- smsg((char_u *)"chdir(%s)", dir); -- verbose_leave(); -- } -- length = strlen(dir); -- if (dir[length - 1] != '.') -- return chdir(dir); /* No trailing dots - nothing to do. */ -- new_dir = vim_strsave(dir); -- if (new_dir == NULL) -- return chdir(dir); /* Can't allocate memory. */ -- -- while (new_dir[--length] == '.') -- new_dir[length] = '\0'; -- -- retval = chdir(new_dir); -- vim_free(new_dir); -- return retval; -- } -- -- /* Examine the named file, and set the 'osfiletype' option -- * (in curbuf) to the file's type. -- */ -- void -- mch_read_filetype(file) -- char_u *file; -- { -- int type; -- char_u type_string[9]; -- int i; -- -- if (xswi(OS_File, 23, file) & v_flag) -- type = 0xfff; /* Default to Text */ -- else -- type = r6; -- -- /* Type is the numerical value - see if we have a textual equivalent */ -- swi(OS_FSControl, 18, 0, type); -- ((int *) type_string)[0] = r2; -- ((int *) type_string)[1] = r3; -- type_string[8] = 0; -- for (i = 0; type_string[i] > ' '; i++) -- ; -- type_string[i] = 0; -- -- set_string_option_direct("osfiletype", -1, type_string, OPT_FREE, 0); -- return; -- } -- -- void -- mch_set_filetype(file, type) -- char_u *file; -- char_u *type; -- { -- if (xswi(OS_FSControl, 31, type) & v_flag) -- { -- EMSG(_("E366: Invalid 'osfiletype' option - using Text")); -- r2 = 0xfff; -- } -- -- swi(OS_File, 18, file, r2); -- } -- -- /* Return TRUE if the file's type matches 'type' -- * RISC OS types always start with '&' -- */ -- int -- mch_check_filetype(fname, type) -- char_u *fname; -- char_u *type; -- { -- int value; -- char *end; -- -- if (*type != '&') -- return FALSE; -- -- value = strtol(type + 1, &end, 16); -- if (*end) -- return FALSE; /* Invalid type (report error?) */ -- -- if (xswi(OS_File, 23, fname) & v_flag) -- return FALSE; /* Invalid filename? */ -- -- return (r0 && r6 == value); -- } ---- 0 ---- -*** ../vim-7.3.186/runtime/doc/os_risc.txt 2010-08-15 21:57:16.000000000 +0200 ---- runtime/doc/os_risc.txt 2011-05-10 16:19:25.000000000 +0200 -*************** -*** 1,322 **** -! *os_risc.txt* For Vim version 7.3. Last change: 2010 Aug 07 - - - VIM REFERENCE MANUAL by Thomas Leonard - - - *riscos* *RISCOS* *RISC-OS* -! This file contains the particularities for the RISC OS version of Vim. - -- The RISC OS port is a completely new port and is not based on the old "archi" -- port. - -- 1. File locations |riscos-locations| -- 2. Filename munging |riscos-munging| -- 3. Command-line use |riscos-commandline| -- 4. Desktop (GUI) use |riscos-gui| -- 5. Remote use (telnet) |riscos-remote| -- 6. Temporary files |riscos-temp-files| -- 7. Interrupting |riscos-interrupt| -- 8. Memory usage |riscos-memory| -- 9. Filetypes |riscos-filetypes| -- 10. The shell |riscos-shell| -- 11. Porting new releases |riscos-porting| -- -- If I've missed anything, email me and I'll try to fix it. In fact, even if I -- haven't missed anything then email me anyway to give me some confidence that it -- actually works! -- -- Thomas Leonard <tal197@ecs.soton.ac.uk> -- -- [these URLs no longer work...] -- Port homepage: http://www.ecs.soton.ac.uk/~tal197/ -- or try: http://www.soton.ac.uk/~tal197/ -- -- ============================================================================== -- *riscos-locations* -- 1. File locations -- -- The Vim executable and shared resource files are all stored inside the !Vim -- application directory. -- -- When !Vim is first seen by the filer, it aliases the *vi and *ex commands to -- run the command-line versions of Vim (see |riscos-commandline|). -- -- !Vim.Resources and !Vim.Resources2 contain the files from the standard Vim -- distribution, but modified slightly to work within the limits of ADFS, plus -- some extra files such as the window templates. -- -- User choices are read from "Choices:*" and are saved to "<Choices$Write>.*". -- If you have the new !Boot structure then these should be set up already. If -- not, set Choices$Path to a list of directories to search when looking for -- user configuration files. Set Choices$Write to the directory you want files -- to be saved into (so your search patterns and marks can be remembered between -- sessions). -- -- ============================================================================== -- *riscos-munging* -- 2. Filename munging -- -- All pathname munging is disabled by default, so Vim should behave like a -- normal RISC OS application now. So, if you want to edit "doc/html" then you -- actually type "*vi doc/html". -- -- The only times munging is done is when: -- -- - Searching included files from C programs, since these are always munged. -- See |[I|. -- Note: make sure you are in the right directory when you use this -- command (i.e. the one with subdirectories "c" and "h"). -- -- - Sourcing files using |:so|. -- Paths starting "$VIM/" are munged like this: -- -- $VIM/syntax/help.vim -> Vim:syntax.help -- -- Also, files ending in ".vim" have their extensions removed, and slashes -- replaced with dots. -- -- Some tag files and script files may have to be edited to work under this port. -- -- ============================================================================== -- *riscos-commandline* -- 3. Command-line use -- -- To use Vim from the command-line use the "*vi" command (or "*ex" for -- |Ex-mode|). -- -- Type "*vi -h" for a list of options. -- -- Running the command-line version of Vim in a large high-color mode may cause -- the scrolling to be very slow. Either change to a mode with fewer colors or -- use the GUI version. -- -- Also, holding down Ctrl will slow it down even more, and Ctrl-Shift will -- freeze it, as usual for text programs. -- -- ============================================================================== -- *riscos-gui* -- 4. Desktop use -- -- Limitations: -- -- - Left scrollbars don't work properly (right and bottom are fine). -- - Doesn't increase scroll speed if it gets behind. -- -- You can resize the window by dragging the lower-right corner, even though -- there is no icon shown there. -- -- You can use the --rows and --columns arguments to specify the initial size of -- the Vim window, like this: > -- -- *Vi -g --rows 20 --columns 80 -- -- The global clipboard is supported, so you can select some text and then -- paste it directly into another application (provided it supports the -- clipboard too). -- -- Clicking Menu now opens a menu like a normal RISC OS program. Hold down Shift -- when clicking Menu to paste (from the global clipboard). -- -- Dragging a file to the window replaces the CURRENT buffer (the one with the -- cursor, NOT the one you dragged to) with the file. -- -- Dragging with Ctrl held down causes a new Vim window to be opened for the -- file (see |:sp|). -- -- Dragging a file in with Shift held down in insert mode inserts the pathname of -- the file. -- -- :browse :w opens a standard RISC OS save box. -- :browse :e opens a directory viewer. -- -- For fonts, you have the choice of the system font, an outline font, the system -- font via ZapRedraw and any of the Zap fonts via ZapRedraw: > -- -- :set guifont= -- < To use the system font via the VDU drivers. Supports -- bold and underline. -- > -- :set guifont=Corpus.Medium -- < Use the named outline font. You can use any font, but -- only monospaced ones like Corpus look right. -- > -- :set guifont=Corpus.Medium:w8:h12:b:i -- < As before, but with size of 8 point by 12 point, and -- in bold italic. -- If only one of width and height is given then that -- value is used for both. If neither is given then 10 -- point is used. -- -- Thanks to John Kortink, Vim can use the ZapRedraw module. Start the font name -- with "!" (or "!!" for double height), like this: > -- -- :set guifont=!! -- < Use the system font, but via ZapRedraw. This gives a -- faster redraw on StrongARM processors, but you can't -- get bold or italic text. Double height. -- > -- :set guifont=!script -- < Uses the named Zap font (a directory in VimFont$Path). -- The redraw is the same speed as for "!!", but you get -- a nicer looking font. -- Only the "man+" and "script" fonts are supplied -- currently, but you can use any of the Zap fonts if -- they are in VimFont$Path. -- Vim will try to load font files "0", "B", "I" and "IB" -- from the named directory. Only "0" (normal style) MUST -- be present. Link files are not currently supported. -- -- Note that when using ZapRedraw the edit bar is drawn in front of the character -- you are on rather than behind it. Also redraw is incorrect for screen modes -- with eigen values of 0. If the font includes control characters then you can -- get Vim to display them by changing the 'isprint' option. -- -- If you find the scrolling is too slow on your machine, try experimenting -- with the 'scrolljump' and 'ttyscroll' options. -- -- In particular, StrongARM users may find that: > -- -- :set ttyscroll=0 -- -- makes scrolling faster in high-color modes. -- -- ============================================================================= -- *riscos-remote* -- 5. Remote use (telnet) -- -- I have included a built-in termcap entry, but you can edit the termcap file to -- allow other codes to be used if you want to use Vim from a remote terminal. -- -- Although I do not have an internet connection to my Acorn, I have managed to -- run Vim in a FreeTerm window using the loopback connection. -- -- It seems to work pretty well now, using "*vi -T ansi". -- -- ============================================================================== -- *riscos-temp-files* -- 6. Temporary files -- -- If Vim crashes then the swap and backup files (if any) will be in the -- directories set with the 'directory' and 'bdir' options. By default the swap -- files are in <Wimp$ScrapDir> (i.e. inside !Scrap) and backups are in the -- directory you were saving to. Vim will allow you to try and recover the file -- when you next try to edit it. -- -- To see a list of swap files, press <F12> and type "*vi -r". -- -- Vim no longer brings up ATTENTION warnings if you try to edit two files with -- the same name in different directories. -- -- However, it also no longer warns if you try to edit the same file twice (with -- two copies of Vim), though you will still be warned when you save that the -- datestamp has changed. -- -- ============================================================================== -- *riscos-interrupt* -- 7. Interrupting -- -- To break out of a looping macro, or similar, hold down Escape in the -- command-line version, or press CTRL-C in the GUI version. -- -- ============================================================================== -- *riscos-memory* -- 8. Memory usage -- -- Vim will use dynamic areas on RISC OS 3.5 or later. If you can use them on -- older machines then edit the !RunTxt and GVim files. I don't know what UnixLib -- does by default on these machines so I'm playing safe. -- -- It doesn't work at all well without dynamic areas, since it can't change its -- memory allocation once running. Hence you should edit "!Vim.GVim" and -- "!Vim.!RunTxt" to choose the best size for you. You probably need at least -- about 1400K. -- -- ============================================================================== -- *riscos-filetypes* -- 9. Filetypes -- -- You can now specify that autocommands are only executed for files of certain -- types. The filetype is given in the form &xxx, when xxx is the filetype. -- -- Filetypes must be specified by number (e.g. &fff for Text). -- -- The system has changed from version 5.3. The new sequence of events is: -- -- - A file is loaded. |'osfiletype'| is set to the RISC OS filetype. -- - Based on the filetype and pathname, Vim will try to set |'filetype'| to the -- Vim-type of the file. -- - Setting this option may load syntax files and perform other actions. -- - Saving the file will give it a filetype of |'osfiletype'|. -- -- Some examples may make this clearer: -- -- Kind of file loaded osfiletype filetype ~ -- C code "c.hellow" Text (&fff) C -- LaTeX document LaTeX (&2a8) TeX -- Draw document DrawFile (&aff) (not changed) -- -- ============================================================================== -- *riscos-shell* -- 10. The shell -- -- - Bangs (!s) are only replaced if they are followed by a space or end-of-line, -- since many pathnames contain them. -- -- - You can prefix the command with "~", which stops any output from being -- displayed. This also means that you don't have to press <Enter> afterwards, -- and stops the screen from being redrawn. {only in the GUI version} -- -- ============================================================================== -- *riscos-porting* -- 11. Porting new releases to RISC OS -- -- Downloading everything you need: -- -- - Get the latest source distribution (see www.vim.org) -- - Get the runtime environment files (e.g. these help files) -- - Get the RISC OS binary distribution (if possible) -- -- -- Unarchiving: -- -- - Create a raFS disk and put the archives on it -- - Un-gzip them -- - Un-tar them (*tar xELf 50 archive/tar) -- -- -- Recompiling the sources: -- -- - Create c, s, and h directories. -- - Put all the header files in "h". \ -- - Put all the C files in "c". | And lose the extensions -- - Put the assembler file ("swis/s") in "s". / -- - Rename all the files in "proto" to "h", like this: -- raFS::VimSrc.source.proto.file/pro -- becomes -- raFS::VimSrc.source.h.file_pro -- - In the files "h.proto" and "c.termlib", search and replace -- .pro" -- with -- _pro.h" -- - Create a simple Makefile if desired and do "*make -k". -- Use "CC = gcc -DRISCOS -DUSE_GUI -O2 -x c" in the Makefile. -- - Save the binary as !Vim.Vim in the binary distribution. -- -- -- Updating the run-time environment: -- -- - Replace old or missing files inside !Vim.Resources with the -- new files. -- - Remove files in "doc" not ending in "/txt", except for "tags". -- - Lose the extensions from the files in "doc". -- - Edit the "doc.tags" file. Remove extensions from the second column: > -- :%s/^\(.[^\t]*\t.*\)\.txt\t/\1\t/ -- - Remove extensions from the syntax files. Split them into two directories -- to avoid the 77 entry limit on old ADFS filesystems. -- - Edit "Vim:FileType" to match "*.c.*" as well as "*/c" and so on. -- Add filetype checking too. -- - Edit "Vim:Menu" and remove all the keys from the menus: > -- :%s/<Tab>[^ \t]*// -- < - vim:tw=78:ts=8:ft=help:norl: ---- 1,12 ---- -! *os_risc.txt* For Vim version 7.3. Last change: 2011 May 10 - - - VIM REFERENCE MANUAL by Thomas Leonard - - - *riscos* *RISCOS* *RISC-OS* -! The RISC OS support has been removed from Vim with patch 7.3.187. -! If you would like to use Vim on RISC OS get the files from before that patch. - - - vim:tw=78:ts=8:ft=help:norl: -*** ../vim-7.3.186/src/version.c 2011-05-10 16:12:40.000000000 +0200 ---- src/version.c 2011-05-10 16:37:20.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 187, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -81. At social functions you introduce your husband as "my domain server." - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.188 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.188 -Problem: More RISC OS files to remove. -Solution: Remove them. Update the file list. -Files: src/proto/gui_riscos.pro, src/proto/os_riscos.pro, Filelist - - -*** ../vim-7.3.187/src/proto/gui_riscos.pro 2010-08-15 21:57:28.000000000 +0200 ---- src/proto/gui_riscos.pro 1970-01-01 01:00:00.000000000 +0100 -*************** -*** 1,66 **** -- /* Prototypes for gui_riscos.c -- * Based on gui_x11_pro.h (10 March 2002 version) -- */ -- void gui_mch_prepare __ARGS((int *argc, char **argv)); -- int gui_mch_init_check __ARGS((void)); -- int gui_mch_init __ARGS((void)); -- void gui_mch_uninit __ARGS((void)); -- void gui_mch_new_colors __ARGS((void)); -- int gui_mch_open __ARGS((void)); -- void gui_init_tooltip_font __ARGS((void)); -- void gui_init_menu_font __ARGS((void));void gui_mch_exit __ARGS((int rc)); -- int gui_mch_get_winpos __ARGS((int *x, int *y)); -- void gui_mch_set_winpos __ARGS((int x, int y)); -- void gui_mch_set_shellsize __ARGS((int width, int height, int min_width, int min_height, int base_width, int base_height)); -- void gui_mch_get_screen_dimensions __ARGS((int *screen_w, int *screen_h)); -- int gui_mch_init_font __ARGS((char_u *font_name, int do_fontset)); -- GuiFont gui_mch_get_font __ARGS((char_u *name, int giveErrorIfMissing)); -- int gui_mch_adjust_charheight __ARGS((void)); -- void gui_mch_set_font __ARGS((GuiFont font)); -- void gui_mch_set_fontset __ARGS((GuiFontset fontset)); -- void gui_mch_free_font __ARGS((GuiFont font)); -- void gui_mch_free_fontset __ARGS((GuiFontset fontset)); -- GuiFontset gui_mch_get_fontset __ARGS((char_u *name, int giveErrorIfMissing, int fixed_width)); -- guicolor_T gui_mch_get_color __ARGS((char_u *reqname)); -- void gui_mch_set_fg_color __ARGS((guicolor_T color)); -- void gui_mch_set_bg_color __ARGS((guicolor_T color)); -- void gui_mch_draw_string __ARGS((int row, int col, char_u *s, int len, int flags)); -- int gui_mch_haskey __ARGS((char_u *name)); -- void gui_mch_beep __ARGS((void)); -- void gui_mch_flash __ARGS((int msec)); -- void gui_mch_invert_rectangle __ARGS((int r, int c, int nr, int nc)); -- void gui_mch_iconify __ARGS((void)); -- void gui_mch_set_foreground __ARGS((void)); -- void gui_mch_draw_hollow_cursor __ARGS((guicolor_T color)); -- void gui_mch_draw_part_cursor __ARGS((int w, int h, guicolor_T color)); -- void gui_mch_update __ARGS((void)); -- int gui_mch_wait_for_chars __ARGS((long wtime)); -- void gui_mch_flush __ARGS((void)); -- void gui_mch_clear_block __ARGS((int row1, int col1, int row2, int col2)); -- void gui_mch_clear_all __ARGS((void)); -- void gui_mch_delete_lines __ARGS((int row, int num_lines)); -- void gui_mch_insert_lines __ARGS((int row, int num_lines)); -- void clip_mch_lose_selection __ARGS((VimClipboard *cbd)); -- int clip_mch_own_selection __ARGS((VimClipboard *cbd)); -- void clip_mch_request_selection __ARGS((VimClipboard *cbd)); -- void clip_mch_set_selection __ARGS((VimClipboard *cbd)); -- void gui_mch_menu_grey __ARGS((vimmenu_T *menu, int grey)); -- void gui_mch_menu_hidden __ARGS((vimmenu_T *menu, int hidden)); -- void gui_mch_draw_menubar __ARGS((void)); -- void gui_mch_set_blinking __ARGS((long waittime, long on, long off)); -- void gui_mch_stop_blink __ARGS((void)); -- void gui_mch_start_blink __ARGS((void)); -- void process_event __ARGS((int event, int *block)); -- void gui_mch_show_popupmenu __ARGS((vimmenu_T *menu)); -- long_u gui_mch_get_rgb __ARGS((guicolor_T pixel)); -- void gui_mch_getmouse __ARGS((int *x, int *y)); -- void gui_mch_setmouse __ARGS((int x, int y)); -- void gui_mch_drawsign __ARGS((int row, int col, int typenr)); -- void gui_mch_destroy_sign __ARGS((XImage *sign)); -- void gui_mch_mousehide __ARGS((int hide)); -- void mch_set_mouse_shape __ARGS((int shape)); -- void gui_mch_menu_set_tip __ARGS((vimmenu_T *menu)); -- -- void ro_redraw_title __ARGS((int window)); -- int ro_ok_to_quit __ARGS((void)); -- /* vim: set ft=c : */ ---- 0 ---- -*** ../vim-7.3.187/src/proto/os_riscos.pro 2010-08-15 21:57:28.000000000 +0200 ---- src/proto/os_riscos.pro 1970-01-01 01:00:00.000000000 +0100 -*************** -*** 1,49 **** -- /* os_riscos.c */ -- void mch_write __ARGS((char_u *s, int len)); -- int mch_inchar __ARGS((char_u *buf, int maxlen, long wtime, int tb_change_cnt)); -- int mch_char_avail __ARGS((void)); -- long_u mch_avail_mem __ARGS((int special)); -- void mch_delay __ARGS((long msec, int ignoreinput)); -- void mch_suspend __ARGS((void)); -- void mch_init __ARGS((void)); -- int mch_check_win __ARGS((int argc, char **argv)); -- int mch_input_isatty __ARGS((void)); -- int mch_can_restore_title __ARGS((void)); -- int mch_can_restore_icon __ARGS((void)); -- void mch_settitle __ARGS((char_u *title, char_u *icon)); -- void mch_restore_title __ARGS((int which)); -- int mch_get_user_name __ARGS((char_u *s, int len)); -- void mch_get_host_name __ARGS((char_u *s, int len)); -- long mch_get_pid __ARGS((void)); -- int mch_dirname __ARGS((char_u *buf, int len)); -- int mch_FullName __ARGS((char_u *fname, char_u *buf, int len, int force)); -- int mch_isFullName __ARGS((char_u *fname)); -- long mch_getperm __ARGS((char_u *name)); -- int mch_setperm __ARGS((char_u *name, long perm)); -- void mch_hide __ARGS((char_u *name)); -- int mch_isdir __ARGS((char_u *name)); -- int mch_can_exe __ARGS((char_u *name)); -- int mch_nodetype __ARGS((char_u *name)); -- void mch_early_init __ARGS((void)); -- void mch_exit __ARGS((int r)); -- void mch_settmode __ARGS((int tmode)); -- void mch_setmouse __ARGS((int on)); -- int mch_screenmode __ARGS((char_u *arg)); -- int mch_get_shellsize __ARGS((void)); -- void mch_set_shellsize __ARGS((void)); -- void mch_new_shellsize __ARGS((void)); -- int mch_call_shell __ARGS((char_u *cmd, int options)); -- void mch_breakcheck __ARGS((void)); -- int mch_expandpath __ARGS((garray_T *gap, char_u *path, int flags)); -- int expand_section __ARGS((garray_T *gap, char_u *root, char_u *rest, int flags)); -- int mch_expand_wildcards __ARGS((int num_pat, char_u **pat, int *num_file, char_u ***file, int flags)); -- int mch_has_exp_wildcard __ARGS((char_u *p)); -- int mch_has_wildcard __ARGS((char_u *p)); -- int mch_remove __ARGS((char_u *file)); -- char_u *mch_munge_fname __ARGS((char_u *fname)); -- int ro_buflist_add __ARGS((char_u *old_name)); -- int mch_chdir __ARGS((char_u *dir)); -- void mch_read_filetype __ARGS((char_u *file)); -- void mch_set_filetype __ARGS((char_u *file, char_u *type)); -- int mch_check_filetype __ARGS((char_u *fname, char_u *type)); -- /* vim: set ft=c : */ ---- 0 ---- -*** ../vim-7.3.187/Filelist 2011-03-22 18:10:34.000000000 +0100 ---- Filelist 2011-05-10 17:19:21.000000000 +0200 -*************** -*** 428,435 **** - README_os390.txt \ - src/Make_mint.mak \ - src/Make_ro.mak \ -- src/gui_riscos.c \ -- src/gui_riscos.h \ - src/if_sniff.c \ - src/infplist.xml \ - src/link.390 \ ---- 428,433 ---- -*************** -*** 437,446 **** - src/os_beos.h \ - src/os_beos.rsrc \ - src/os_mint.h \ -- src/os_riscos.c \ -- src/os_riscos.h \ -- src/proto/gui_riscos.pro \ -- src/proto/os_riscos.pro \ - src/os_vms_fix.com \ - src/toolbar.phi \ - ---- 435,440 ---- -*** ../vim-7.3.187/src/version.c 2011-05-10 16:41:13.000000000 +0200 ---- src/version.c 2011-05-10 17:20:50.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 188, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -83. Batteries in the TV remote now last for months. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.189 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.189 (after 7.3.186) -Problem: Can't build without +clipboard feature. (Christian Ebert) -Solution: Add the missing #ifdef. -Files: src/normal.c - - -*** ../vim-7.3.188/src/normal.c 2011-05-10 16:12:40.000000000 +0200 ---- src/normal.c 2011-05-10 17:25:26.000000000 +0200 -*************** -*** 1204,1212 **** ---- 1204,1215 ---- - #ifdef FEAT_EVAL - { - int regname = 0; -+ - /* Adjust the register according to 'clipboard', so that when - * "unnamed" is present it becomes '*' or '+' instead of '"'. */ -+ # ifdef FEAT_CLIPBOARD - adjust_clip_reg(®name); -+ # endif - set_reg_var(regname); - } - #endif -*** ../vim-7.3.188/src/version.c 2011-05-10 17:21:34.000000000 +0200 ---- src/version.c 2011-05-10 17:29:21.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 189, - /**/ - --- -If your nose runs, and your feet smell, you might be upside down. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.190 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.190 -Problem: When there is a "containedin" syntax argument highlighting may be - wrong. (Radek) -Solution: Reset current_next_list. (Ben Schmidt) -Files: src/syntax.c - - -*** ../vim-7.3.189/src/syntax.c 2011-04-11 16:56:29.000000000 +0200 ---- src/syntax.c 2011-05-19 12:02:43.000000000 +0200 -*************** -*** 2566,2571 **** ---- 2566,2574 ---- - #endif - update_si_attr(current_state.ga_len - 1); - -+ /* nextgroup= should not match in the end pattern */ -+ current_next_list = NULL; -+ - /* what matches next may be different now, clear it */ - next_match_idx = 0; - next_match_col = MAXCOL; -*** ../vim-7.3.189/src/version.c 2011-05-10 17:29:28.000000000 +0200 ---- src/version.c 2011-05-19 12:13:28.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 190, - /**/ - --- -From "know your smileys": - :'-D Laughing so much that they're crying - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.191 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.191 -Problem: Still some RISC OS stuff to remove. -Solution: Remove files and lines. (Hong Xu) - Remove the 'osfiletype' option code. -Files: README_extra.txt, src/Make_ro.mak, src/INSTALL, src/Makefile, - src/buffer.c, src/eval.c, src/feature.h, src/option.c, - src/option.h, src/structs.h, src/version.c, src/pty.c, Filelist - - -*** ../vim-7.3.190/README_extra.txt 2010-08-15 21:57:32.000000000 +0200 ---- README_extra.txt 2011-05-19 12:35:16.000000000 +0200 -*************** -*** 13,21 **** - - src/os_amiga.* Files for the Amiga port. - -- src/gui_riscos.* -- src/os_riscos.* Files for the RISC OS port. -- - src/gui_beos.* - src/os_beos.* Files for the BeOS port. - ---- 13,18 ---- -*** ../vim-7.3.190/src/Make_ro.mak 2010-08-15 21:57:27.000000000 +0200 ---- src/Make_ro.mak 1970-01-01 01:00:00.000000000 +0100 -*************** -*** 1,135 **** -- # -- # Makefile for Vim on RISC OS - Andy Wingate -- # -- -- GCC = gcc -mthrowback -- CFLAGS = -DRISCOS -DFEAT_GUI -- CC = $(GCC) $(CFLAGS) -O2 -- # -DUP_BC_PC_EXTERN for term.c needed as BC defined in termlib.c and term.c -- -- TERMFLAG = -DUP_BC_PC_EXTERN -- -- ASMFLAGS = -throwback -objasm -gcc -- -- OBJS = o.buffer o.charset o.diff o.digraph o.edit o.eval o.ex_cmds o.ex_cmds2 \ -- o.ex_docmd o.ex_eval o.ex_getln o.fileio o.fold o.getchar \ -- o.hardcopy o.hashtab o.main o.mark o.mbyte \ -- o.memfile o.memline o.menu o.message o.misc1 o.misc2 o.move \ -- o.normal o.ops o.option o.popupmnu o.quickfix o.regexp o.screen \ -- o.search \ -- o.spell o.syntax o.tag o.term o.termlib o.ui o.undo o.version \ -- o.window o.os_riscos o.swis o.gui o.gui_riscos -- -- Vim: $(OBJS) -- $(GCC) -o Vim $(OBJS) -- -- install: Vim -- squeeze -v Vim @.!Vim.Vim -- -- clean: -- create o.!fake! 0 -- wipe o.* ~cf -- remove Vim -- -- o.swis: s.swis -- as $(ASMFLAGS) -o o.swis s.swis -- -- # Rules for object files -- -- o.%: c.% -- $(CC) -c $< -o $@ -- -- o.buffer: c.buffer -- -- o.charset: c.charset -- -- o.digraph: c.digraph -- -- o.diff: c.diff -- -- o.edit: c.edit -- -- o.eval: c.eval -- -- o.ex_cmds: c.ex_cmds -- -- o.ex_cmds2: c.ex_cmds2 -- -- o.ex_docmd: c.ex_docmd -- -- o.ex_eval: c.ex_eval -- -- o.ex_getln: c.ex_getln -- -- o.fileio: c.fileio -- -- o.fold: c.fold -- -- o.getchar: c.getchar -- -- o.hardcopy: c.hardcopy -- -- o.hashtab: c.hashtab -- -- o.gui: c.gui -- -- o.gui_riscos: c.gui_riscos -- -- o.main: c.main -- -- o.mark: c.mark -- -- o.mbyte: c.mbyte -- -- o.memfile: c.memfile -- -- o.memline: c.memline -- -- o.menu: c.menu -- -- o.message: c.message -- -- o.misc1: c.misc1 -- -- o.misc2: c.misc2 -- -- o.move: c.move -- -- o.normal: c.normal -- -- o.ops: c.ops -- -- o.option: c.option -- -- o.os_riscos: c.os_riscos -- -- o.pty: c.pty -- -- o.popupmnu: c.popupmnu -- -- o.quickfix: c.quickfix -- -- o.regexp: c.regexp -- -- o.screen: c.screen -- -- o.search: c.search -- -- o.spell: c.spell -- -- o.syntax: c.syntax -- -- o.tag: c.tag -- -- o.term: c.term -- $(CC) $(TERMFLAG) -c c.term -o o.term -- -- o.termlib: c.termlib -- -- o.ui: c.ui -- -- o.undo: c.undo -- -- o.version: c.version -- -- o.window: c.window ---- 0 ---- -*** ../vim-7.3.190/src/INSTALL 2010-08-15 21:57:28.000000000 +0200 ---- src/INSTALL 2011-05-19 12:36:17.000000000 +0200 -*************** -*** 6,14 **** - Contents: - 1. Generic - 2. Unix -! 3. RISC OS -! 4. OS/2 (with EMX 0.9b) -! 5. Atari MiNT - - See INSTALLami.txt for Amiga - See INSTALLmac.txt for Macintosh ---- 6,13 ---- - Contents: - 1. Generic - 2. Unix -! 3. OS/2 (with EMX 0.9b) -! 4. Atari MiNT - - See INSTALLami.txt for Amiga - See INSTALLmac.txt for Macintosh -*************** -*** 174,198 **** - ./configure --without-local-dir - - -! 3. RISC OS -! ============= -! -! Much file renaming is needed before you can compile anything. -! You'll need UnixLib to link against, GCC and GNU make. -! -! I suggest you get the RISC OS binary distribution, which includes the -! Templates file and the loader. -! -! Try here: http://www.ecs.soton.ac.uk/~tal197 -! -! Do -! :help riscos -! -! within the editor for more information, or read the -! ../runtime/doc/os_risc.txt help file. -! -! -! 4. OS/2 - ======= - - Summary: ---- 173,179 ---- - ./configure --without-local-dir - - -! 3. OS/2 - ======= - - Summary: -*************** -*** 237,243 **** - Check ../runtime/doc/os_os2.txt for additional info on running Vim. - - -! 5. Atari MiNT - ============= - - [NOTE: this is quite old, it might not work anymore] ---- 218,224 ---- - Check ../runtime/doc/os_os2.txt for additional info on running Vim. - - -! 4. Atari MiNT - ============= - - [NOTE: this is quite old, it might not work anymore] -*** ../vim-7.3.190/src/Makefile 2011-04-01 13:05:37.000000000 +0200 ---- src/Makefile 2011-05-19 12:37:52.000000000 +0200 -*************** -*** 29,35 **** - # - Uncomment the line "CONF_OPT_X = --without-x" if you have X11 but - # want to disable using X11 libraries. This speeds up starting Vim, - # but the window title will not be set and the X11 selection can not -! # used. - # - Uncomment the line "CONF_OPT_XSMP = --disable-xsmp" if you have the - # X11 Session Management Protocol (XSMP) library (libSM) but do not - # want to use it. ---- 29,35 ---- - # - Uncomment the line "CONF_OPT_X = --without-x" if you have X11 but - # want to disable using X11 libraries. This speeds up starting Vim, - # but the window title will not be set and the X11 selection can not -! # be used. - # - Uncomment the line "CONF_OPT_XSMP = --disable-xsmp" if you have the - # X11 Session Management Protocol (XSMP) library (libSM) but do not - # want to use it. -*************** -*** 730,741 **** - ### USL for Unix Systems Laboratories (SYSV 4.2) - #EXTRA_DEFS = -DUSL - -- ### RISCos on MIPS without X11 -- #EXTRA_DEFS = -DMIPS -- -- ### RISCos on MIPS with X11 -- #EXTRA_LIBS = -lsun -- - ### (6) A/UX 3.1.1 with gcc (Jim Jagielski) - #CC= gcc -D_POSIX_SOURCE - #CFLAGS= -O2 ---- 730,735 ---- -*************** -*** 1633,1639 **** - RSRC_DIR = os_mac_rsrc - - PRO_MANUAL = os_amiga.pro os_msdos.pro os_win16.pro os_win32.pro \ -! os_mswin.pro os_beos.pro os_vms.pro os_riscos.pro $(PERL_PRO) - - # Default target is making the executable and tools - all: $(VIMTARGET) $(TOOLS) languages $(GUI_BUNDLE) ---- 1627,1633 ---- - RSRC_DIR = os_mac_rsrc - - PRO_MANUAL = os_amiga.pro os_msdos.pro os_win16.pro os_win32.pro \ -! os_mswin.pro os_beos.pro os_vms.pro $(PERL_PRO) - - # Default target is making the executable and tools - all: $(VIMTARGET) $(TOOLS) languages $(GUI_BUNDLE) -*** ../vim-7.3.190/src/buffer.c 2011-05-05 17:32:40.000000000 +0200 ---- src/buffer.c 2011-05-19 13:09:25.000000000 +0200 -*************** -*** 1808,1816 **** - #ifdef FEAT_AUTOCMD - clear_string_option(&buf->b_p_ft); - #endif -- #ifdef FEAT_OSFILETYPE -- clear_string_option(&buf->b_p_oft); -- #endif - #ifdef FEAT_CINDENT - clear_string_option(&buf->b_p_cink); - clear_string_option(&buf->b_p_cino); ---- 1808,1813 ---- -*** ../vim-7.3.190/src/eval.c 2011-05-10 16:41:13.000000000 +0200 ---- src/eval.c 2011-05-19 13:09:43.000000000 +0200 -*************** -*** 12076,12084 **** - #ifdef FEAT_OLE - "ole", - #endif -- #ifdef FEAT_OSFILETYPE -- "osfiletype", -- #endif - #ifdef FEAT_PATH_EXTRA - "path_extra", - #endif ---- 12076,12081 ---- -*** ../vim-7.3.190/src/feature.h 2010-08-15 21:57:31.000000000 +0200 ---- src/feature.h 2011-05-19 13:09:56.000000000 +0200 -*************** -*** 506,520 **** - #endif - - /* -- * +osfiletype filetype checking in autocommand patterns. -- * Only on systems that support filetypes (RISC OS). -- */ -- #if 0 -- # define FEAT_OSFILETYPE -- # define DFLT_OFT "Text" -- #endif -- -- /* - * +viminfo reading/writing the viminfo file. Takes about 8Kbyte - * of code. - * VIMINFO_FILE Location of user .viminfo file (should start with $). ---- 506,511 ---- -*** ../vim-7.3.190/src/option.c 2011-04-28 17:24:54.000000000 +0200 ---- src/option.c 2011-05-19 13:11:42.000000000 +0200 -*************** -*** 140,148 **** - #define PV_MOD OPT_BUF(BV_MOD) - #define PV_MPS OPT_BUF(BV_MPS) - #define PV_NF OPT_BUF(BV_NF) -- #ifdef FEAT_OSFILETYPE -- # define PV_OFT OPT_BUF(BV_OFT) -- #endif - #ifdef FEAT_COMPL_FUNC - # define PV_OFU OPT_BUF(BV_OFU) - #endif ---- 140,145 ---- -*************** -*** 337,345 **** - static int p_mod; - static char_u *p_mps; - static char_u *p_nf; -- #ifdef FEAT_OSFILETYPE -- static char_u *p_oft; -- #endif - static int p_pi; - #ifdef FEAT_TEXTOBJ - static char_u *p_qe; ---- 334,339 ---- -*************** -*** 1901,1914 **** - (char_u *)NULL, PV_NONE, - {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT}, - {"osfiletype", "oft", P_STRING|P_ALLOCED|P_VI_DEF, -- #ifdef FEAT_OSFILETYPE -- (char_u *)&p_oft, PV_OFT, -- {(char_u *)DFLT_OFT, (char_u *)0L} -- #else - (char_u *)NULL, PV_NONE, -! {(char_u *)0L, (char_u *)0L} -! #endif -! SCRIPTID_INIT}, - {"paragraphs", "para", P_STRING|P_VI_DEF, - (char_u *)&p_para, PV_NONE, - {(char_u *)"IPLPPPQPP TPHPLIPpLpItpplpipbp", ---- 1895,1902 ---- - (char_u *)NULL, PV_NONE, - {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT}, - {"osfiletype", "oft", P_STRING|P_ALLOCED|P_VI_DEF, - (char_u *)NULL, PV_NONE, -! {(char_u *)0L, (char_u *)0L} SCRIPTID_INIT}, - {"paragraphs", "para", P_STRING|P_VI_DEF, - (char_u *)&p_para, PV_NONE, - {(char_u *)"IPLPPPQPP TPHPLIPpLpItpplpipbp", -*************** -*** 5282,5290 **** - #ifdef FEAT_AUTOCMD - check_string_option(&buf->b_p_ft); - #endif -- #ifdef FEAT_OSFILETYPE -- check_string_option(&buf->b_p_oft); -- #endif - #if defined(FEAT_SMARTINDENT) || defined(FEAT_CINDENT) - check_string_option(&buf->b_p_cinw); - #endif ---- 5270,5275 ---- -*************** -*** 9665,9673 **** - case PV_MA: return (char_u *)&(curbuf->b_p_ma); - case PV_MOD: return (char_u *)&(curbuf->b_changed); - case PV_NF: return (char_u *)&(curbuf->b_p_nf); -- #ifdef FEAT_OSFILETYPE -- case PV_OFT: return (char_u *)&(curbuf->b_p_oft); -- #endif - case PV_PI: return (char_u *)&(curbuf->b_p_pi); - #ifdef FEAT_TEXTOBJ - case PV_QE: return (char_u *)&(curbuf->b_p_qe); ---- 9650,9655 ---- -*************** -*** 10018,10026 **** - /* Don't copy 'filetype', it must be detected */ - buf->b_p_ft = empty_option; - #endif -- #ifdef FEAT_OSFILETYPE -- buf->b_p_oft = vim_strsave(p_oft); -- #endif - buf->b_p_pi = p_pi; - #if defined(FEAT_SMARTINDENT) || defined(FEAT_CINDENT) - buf->b_p_cinw = vim_strsave(p_cinw); ---- 10000,10005 ---- -*** ../vim-7.3.190/src/option.h 2011-02-12 13:59:55.000000000 +0100 ---- src/option.h 2011-05-19 13:11:46.000000000 +0200 -*************** -*** 984,992 **** - , BV_MOD - , BV_MPS - , BV_NF -- #ifdef FEAT_OSFILETYPE -- , BV_OFT -- #endif - #ifdef FEAT_COMPL_FUNC - , BV_OFU - #endif ---- 984,989 ---- -*** ../vim-7.3.190/src/structs.h 2011-05-10 16:41:13.000000000 +0200 ---- src/structs.h 2011-05-19 13:11:58.000000000 +0200 -*************** -*** 1530,1538 **** - int b_p_ml_nobin; /* b_p_ml saved for binary mode */ - int b_p_ma; /* 'modifiable' */ - char_u *b_p_nf; /* 'nrformats' */ -- #ifdef FEAT_OSFILETYPE -- char_u *b_p_oft; /* 'osfiletype' */ -- #endif - int b_p_pi; /* 'preserveindent' */ - #ifdef FEAT_TEXTOBJ - char_u *b_p_qe; /* 'quoteescape' */ ---- 1530,1535 ---- -*** ../vim-7.3.190/src/version.c 2011-05-19 12:14:03.000000000 +0200 ---- src/version.c 2011-05-19 13:26:42.000000000 +0200 -*************** -*** 426,436 **** - "-ole", - # endif - #endif -- #ifdef FEAT_OSFILETYPE -- "+osfiletype", -- #else -- "-osfiletype", -- #endif - #ifdef FEAT_PATH_EXTRA - "+path_extra", - #else ---- 426,431 ---- -*** ../vim-7.3.190/src/pty.c 2011-04-11 14:24:33.000000000 +0200 ---- src/pty.c 2011-05-19 12:43:26.000000000 +0200 -*************** -*** 123,130 **** - static void initmaster __ARGS((int)); - - /* -! * Open all ptys with O_NOCTTY, just to be on the safe side -! * (RISCos mips breaks otherwise) - */ - #ifndef O_NOCTTY - # define O_NOCTTY 0 ---- 123,129 ---- - static void initmaster __ARGS((int)); - - /* -! * Open all ptys with O_NOCTTY, just to be on the safe side. - */ - #ifndef O_NOCTTY - # define O_NOCTTY 0 -*** ../vim-7.3.190/Filelist 2011-05-10 17:21:34.000000000 +0200 ---- Filelist 2011-05-19 13:37:25.000000000 +0200 -*************** -*** 427,433 **** - $(SRC_VMS) \ - README_os390.txt \ - src/Make_mint.mak \ -- src/Make_ro.mak \ - src/if_sniff.c \ - src/infplist.xml \ - src/link.390 \ ---- 427,432 ---- -*** ../vim-7.3.190/src/version.c 2011-05-19 12:14:03.000000000 +0200 ---- src/version.c 2011-05-19 13:26:42.000000000 +0200 -*************** -*** 716,717 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 191, - /**/ - --- -From "know your smileys": - :-& Eating spaghetti - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.192 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.192 -Problem: Ex command ":s/ \?/ /g" splits multi-byte characters into bytes. - (Dominique Pelle) -Solution: Advance over whole character instead of one byte. -Files: src/ex_cmds.c - - -*** ../vim-7.3.191/src/ex_cmds.c 2011-05-10 16:41:13.000000000 +0200 ---- src/ex_cmds.c 2011-05-19 14:23:33.000000000 +0200 -*************** -*** 4625,4631 **** - * for a match in this line again. */ - skip_match = TRUE; - else -! ++matchcol; /* search for a match at next column */ - goto skip; - } - ---- 4625,4639 ---- - * for a match in this line again. */ - skip_match = TRUE; - else -! { -! /* search for a match at next column */ -! #ifdef FEAT_MBYTE -! if (has_mbyte) -! matchcol += mb_ptr2len(sub_firstline + matchcol); -! else -! #endif -! ++matchcol; -! } - goto skip; - } - -*** ../vim-7.3.191/src/version.c 2011-05-19 13:40:47.000000000 +0200 ---- src/version.c 2011-05-19 14:28:44.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 192, - /**/ - --- -From "know your smileys": - :-F Bucktoothed vampire with one tooth missing - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.193 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.193 -Problem: In the command line window ":close" doesn't work properly. (Tony - Mechelynck) -Solution: Use Ctrl_C instead of K_IGNORE for cmdwin_result. (Jean-Rene - David) -Files: src/ex_docmd.c, src/ex_getln.c - - -*** ../vim-7.3.192/src/ex_docmd.c 2011-05-10 16:41:13.000000000 +0200 ---- src/ex_docmd.c 2011-05-19 14:42:56.000000000 +0200 -*************** -*** 6472,6478 **** - { - # ifdef FEAT_CMDWIN - if (cmdwin_type != 0) -! cmdwin_result = K_IGNORE; - else - # endif - if (!text_locked() ---- 6472,6478 ---- - { - # ifdef FEAT_CMDWIN - if (cmdwin_type != 0) -! cmdwin_result = Ctrl_C; - else - # endif - if (!text_locked() -*** ../vim-7.3.192/src/ex_getln.c 2011-04-28 17:21:49.000000000 +0200 ---- src/ex_getln.c 2011-05-19 14:42:56.000000000 +0200 -*************** -*** 6324,6329 **** ---- 6324,6335 ---- - ccline.cmdbuff = vim_strsave((char_u *)"qa"); - cmdwin_result = CAR; - } -+ else if (cmdwin_result == Ctrl_C) -+ { -+ /* :q or :close, don't execute any command -+ * and don't modify the cmd window. */ -+ ccline.cmdbuff = NULL; -+ } - else - ccline.cmdbuff = vim_strsave(ml_get_curline()); - if (ccline.cmdbuff == NULL) -*** ../vim-7.3.192/src/version.c 2011-05-19 14:30:07.000000000 +0200 ---- src/version.c 2011-05-19 14:48:12.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 193, - /**/ - --- -There's no place like $(HOME)! - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.194 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.194 -Problem: When "b" is a symlink to directory "a", resolve("b/") doesn't - result in "a/". (ZyX) -Solution: Remove the trailing slash. (Jean-Rene David) -Files: src/eval.c - - -*** ../vim-7.3.193/src/eval.c 2011-05-19 13:40:47.000000000 +0200 ---- src/eval.c 2011-05-19 14:55:27.000000000 +0200 -*************** -*** 14980,14986 **** ---- 14980,14989 ---- - - len = STRLEN(p); - if (len > 0 && after_pathsep(p, p + len)) -+ { - has_trailing_pathsep = TRUE; -+ p[len - 1] = NUL; /* the trailing slash breaks readlink() */ -+ } - - q = getnextcomp(p); - if (*q != NUL) -*** ../vim-7.3.193/src/version.c 2011-05-19 14:50:49.000000000 +0200 ---- src/version.c 2011-05-19 14:54:40.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 194, - /**/ - --- -Momento mori, ergo carpe diem - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.195 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.195 -Problem: "} else" causes following lines to be indented too much. (Rouben - Rostamian) -Solution: Better detection for the "else". (Lech Lorens) -Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok - - -*** ../vim-7.3.194/src/misc1.c 2011-05-10 16:41:13.000000000 +0200 ---- src/misc1.c 2011-05-19 16:30:28.000000000 +0200 -*************** -*** 5482,5489 **** - * Recognize a line that starts with '{' or '}', or ends with ';', ',', '{' or - * '}'. - * Don't consider "} else" a terminated line. -! * Don't consider a line where there are unmatched opening braces before '}', -! * ';' or ',' a terminated line. - * Return the character terminating the line (ending char's have precedence if - * both apply in order to determine initializations). - */ ---- 5482,5489 ---- - * Recognize a line that starts with '{' or '}', or ends with ';', ',', '{' or - * '}'. - * Don't consider "} else" a terminated line. -! * If a line begins with an "else", only consider it terminated if no unmatched -! * opening braces follow (handle "else { foo();" correctly). - * Return the character terminating the line (ending char's have precedence if - * both apply in order to determine initializations). - */ -*************** -*** 5493,5513 **** - int incl_open; /* include '{' at the end as terminator */ - int incl_comma; /* recognize a trailing comma */ - { -! char_u found_start = 0; -! unsigned n_open = 0; - - s = cin_skipcomment(s); - - if (*s == '{' || (*s == '}' && !cin_iselse(s))) - found_start = *s; - - while (*s) - { - /* skip over comments, "" strings and 'c'haracters */ - s = skip_string(cin_skipcomment(s)); - if (*s == '}' && n_open > 0) - --n_open; -! if (n_open == 0 - && (*s == ';' || *s == '}' || (incl_comma && *s == ',')) - && cin_nocode(s + 1)) - return *s; ---- 5493,5517 ---- - int incl_open; /* include '{' at the end as terminator */ - int incl_comma; /* recognize a trailing comma */ - { -! char_u found_start = 0; -! unsigned n_open = 0; -! int is_else = FALSE; - - s = cin_skipcomment(s); - - if (*s == '{' || (*s == '}' && !cin_iselse(s))) - found_start = *s; - -+ if (!found_start) -+ is_else = cin_iselse(s); -+ - while (*s) - { - /* skip over comments, "" strings and 'c'haracters */ - s = skip_string(cin_skipcomment(s)); - if (*s == '}' && n_open > 0) - --n_open; -! if ((!is_else || n_open == 0) - && (*s == ';' || *s == '}' || (incl_comma && *s == ',')) - && cin_nocode(s + 1)) - return *s; -*** ../vim-7.3.194/src/testdir/test3.in 2011-05-10 13:38:23.000000000 +0200 ---- src/testdir/test3.in 2011-05-19 16:29:01.000000000 +0200 -*************** -*** 1345,1351 **** - - STARTTEST - :set cino& -! 2kdd=][ - ENDTEST - - void func(void) ---- 1345,1351 ---- - - STARTTEST - :set cino& -! 2kdd=4][ - ENDTEST - - void func(void) -*************** -*** 1359,1364 **** ---- 1359,1392 ---- - printf("Foo!\n"); - } - -+ void func1(void) -+ { -+ char* tab[] = {"foo", "bar", -+ "baz", "quux", -+ "this line used", "to be indented incorrectly"}; -+ foo(); -+ } -+ -+ void func2(void) -+ { -+ int tab[] = -+ {1, 2, -+ 3, 4, -+ 5, 6}; -+ -+ printf("This line used to be indented incorrectly.\n"); -+ } -+ -+ void func3(void) -+ { -+ int tab[] = { -+ 1, 2, -+ 3, 4, -+ 5, 6}; -+ -+ printf("Don't you dare indent this line incorrectly!\n); -+ } -+ - STARTTEST - :set cino& - 2kdd=][ -*** ../vim-7.3.194/src/testdir/test3.ok 2011-05-10 13:38:23.000000000 +0200 ---- src/testdir/test3.ok 2011-05-19 16:29:01.000000000 +0200 -*************** -*** 1216,1221 **** ---- 1216,1249 ---- - printf("Foo!\n"); - } - -+ void func1(void) -+ { -+ char* tab[] = {"foo", "bar", -+ "baz", "quux", -+ "this line used", "to be indented incorrectly"}; -+ foo(); -+ } -+ -+ void func2(void) -+ { -+ int tab[] = -+ {1, 2, -+ 3, 4, -+ 5, 6}; -+ -+ printf("This line used to be indented incorrectly.\n"); -+ } -+ -+ void func3(void) -+ { -+ int tab[] = { -+ 1, 2, -+ 3, 4, -+ 5, 6}; -+ -+ printf("Don't you dare indent this line incorrectly!\n); -+ } -+ - - void func(void) - { -*** ../vim-7.3.194/src/version.c 2011-05-19 14:59:07.000000000 +0200 ---- src/version.c 2011-05-19 16:34:16.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 195, - /**/ - --- -I AM THANKFUL... -...for the taxes that I pay because it means that I am employed. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.196 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.196 -Problem: Can't intercept a character that is going to be inserted. -Solution: Add the InsertCharPre autocommand event. (Jakson A. Aquino) -Files: runtime/doc/autocmd.txt, runtime/doc/eval.txt, - runtime/doc/map.txt, src/edit.c, src/eval.c, src/fileio.c, - src/vim.h - - -*** ../mercurial/vim73/runtime/doc/autocmd.txt 2011-04-28 19:01:26.000000000 +0200 ---- runtime/doc/autocmd.txt 2011-05-19 17:12:17.000000000 +0200 -*************** -*** 299,304 **** ---- 299,306 ---- - |InsertEnter| starting Insert mode - |InsertChange| when typing <Insert> while in Insert or Replace mode - |InsertLeave| when leaving Insert mode -+ |InsertCharPre| when a character was typed in Insert mode, before -+ inserting it - - |ColorScheme| after loading a color scheme - -*************** -*** 657,662 **** ---- 659,675 ---- - indicates the new mode. - Be careful not to move the cursor or do - anything else that the user does not expect. -+ *InsertCharPre* -+ InsertCharPre When a character is typed in Insert mode, -+ before inserting the char. -+ The |v:char| variable indicates the char typed -+ and can be changed during the event to insert -+ a different character. When |v:char| is set -+ to more than one character this text is -+ inserted literally. -+ It is not allowed to change the text |textlock|. -+ The event is not triggered when 'paste' is -+ set. - *InsertEnter* - InsertEnter Just before starting Insert mode. Also for - Replace mode and Virtual Replace mode. The -*** ../mercurial/vim73/runtime/doc/eval.txt 2011-05-19 12:22:41.000000000 +0200 ---- runtime/doc/eval.txt 2011-05-19 16:55:58.000000000 +0200 -*************** -*** 1293,1298 **** ---- 1293,1299 ---- - *v:char* *char-variable* - v:char Argument for evaluating 'formatexpr' and used for the typed - character when using <expr> in an abbreviation |:map-<expr>|. -+ It is also used by the |InsertPreChar| event. - - *v:charconvert_from* *charconvert_from-variable* - v:charconvert_from -*** ../mercurial/vim73/runtime/doc/map.txt 2011-05-10 17:17:38.000000000 +0200 ---- runtime/doc/map.txt 2011-05-19 16:40:34.000000000 +0200 -*************** -*** 226,232 **** - - For abbreviations |v:char| is set to the character that was typed to trigger - the abbreviation. You can use this to decide how to expand the {lhs}. You -! can't change v:char and you should not insert it. - - Be very careful about side effects! The expression is evaluated while - obtaining characters, you may very well make the command dysfunctional. ---- 226,232 ---- - - For abbreviations |v:char| is set to the character that was typed to trigger - the abbreviation. You can use this to decide how to expand the {lhs}. You -! you should not either insert or change the v:char. - - Be very careful about side effects! The expression is evaluated while - obtaining characters, you may very well make the command dysfunctional. -*** ../mercurial/vim73/src/edit.c 2011-05-10 14:22:10.000000000 +0200 ---- src/edit.c 2011-05-19 17:20:53.000000000 +0200 -*************** -*** 1381,1390 **** - goto do_intr; - #endif - - /* - * Insert a nomal character. - */ -! normalchar: - #ifdef FEAT_SMARTINDENT - /* Try to perform smart-indenting. */ - ins_try_si(c); ---- 1381,1425 ---- - goto do_intr; - #endif - -+ normalchar: - /* - * Insert a nomal character. - */ -! #ifdef FEAT_AUTOCMD -! if (!p_paste) -! { -! /* Trigger the InsertCharPre event. Lock the text to avoid -! * weird things from happening. */ -! set_vim_var_char(c); -! ++textlock; -! if (apply_autocmds(EVENT_INSERTCHARPRE, NULL, NULL, -! FALSE, curbuf)) -! { -! /* Get the new value of v:char. If it is more than one -! * character insert it literally. */ -! char_u *s = get_vim_var_str(VV_CHAR); -! if (MB_CHARLEN(s) > 1) -! { -! if (stop_arrow() != FAIL) -! { -! ins_str(s); -! AppendToRedobuffLit(s, -1); -! } -! c = NUL; -! } -! else -! c = PTR2CHAR(s); -! } -! -! set_vim_var_string(VV_CHAR, NULL, -1); -! --textlock; -! -! /* If the new value is an empty string then don't insert a -! * char. */ -! if (c == NUL) -! break; -! } -! #endif - #ifdef FEAT_SMARTINDENT - /* Try to perform smart-indenting. */ - ins_try_si(c); -*************** -*** 3491,3501 **** - return; - } - p += len; -! #ifdef FEAT_MBYTE -! c = mb_ptr2char(p); -! #else -! c = *p; -! #endif - ins_compl_addleader(c); - } - ---- 3526,3532 ---- - return; - } - p += len; -! c = PTR2CHAR(p); - ins_compl_addleader(c); - } - -*** ../mercurial/vim73/src/eval.c 2011-05-19 14:59:07.000000000 +0200 ---- src/eval.c 2011-05-19 16:40:39.000000000 +0200 -*************** -*** 352,358 **** - {VV_NAME("swapname", VAR_STRING), VV_RO}, - {VV_NAME("swapchoice", VAR_STRING), 0}, - {VV_NAME("swapcommand", VAR_STRING), VV_RO}, -! {VV_NAME("char", VAR_STRING), VV_RO}, - {VV_NAME("mouse_win", VAR_NUMBER), 0}, - {VV_NAME("mouse_lnum", VAR_NUMBER), 0}, - {VV_NAME("mouse_col", VAR_NUMBER), 0}, ---- 352,358 ---- - {VV_NAME("swapname", VAR_STRING), VV_RO}, - {VV_NAME("swapchoice", VAR_STRING), 0}, - {VV_NAME("swapcommand", VAR_STRING), VV_RO}, -! {VV_NAME("char", VAR_STRING), 0}, - {VV_NAME("mouse_win", VAR_NUMBER), 0}, - {VV_NAME("mouse_lnum", VAR_NUMBER), 0}, - {VV_NAME("mouse_col", VAR_NUMBER), 0}, -*** ../mercurial/vim73/src/fileio.c 2011-05-10 16:41:13.000000000 +0200 ---- src/fileio.c 2011-05-19 16:40:39.000000000 +0200 -*************** -*** 7662,7667 **** ---- 7662,7668 ---- - {"InsertChange", EVENT_INSERTCHANGE}, - {"InsertEnter", EVENT_INSERTENTER}, - {"InsertLeave", EVENT_INSERTLEAVE}, -+ {"InsertCharPre", EVENT_INSERTCHARPRE}, - {"MenuPopup", EVENT_MENUPOPUP}, - {"QuickFixCmdPost", EVENT_QUICKFIXCMDPOST}, - {"QuickFixCmdPre", EVENT_QUICKFIXCMDPRE}, -*** ../mercurial/vim73/src/vim.h 2011-05-10 16:41:13.000000000 +0200 ---- src/vim.h 2011-05-19 16:40:39.000000000 +0200 -*************** -*** 1274,1279 **** ---- 1274,1280 ---- - EVENT_WINENTER, /* after entering a window */ - EVENT_WINLEAVE, /* before leaving a window */ - EVENT_ENCODINGCHANGED, /* after changing the 'encoding' option */ -+ EVENT_INSERTCHARPRE, /* before inserting a char */ - EVENT_CURSORHOLD, /* cursor in same position for a while */ - EVENT_CURSORHOLDI, /* idem, in Insert mode */ - EVENT_FUNCUNDEFINED, /* if calling a function which doesn't exist */ -*** ../vim-7.3.195/src/version.c 2011-05-19 16:35:05.000000000 +0200 ---- src/version.c 2011-05-19 17:15:41.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 196, - /**/ - --- -I AM THANKFUL... -...for the mess to clean after a party because it means I have -been surrounded by friends. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.197 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.197 -Problem: When a QuickfixCmdPost event removes all errors, Vim still tries - to jump to the first error, resulting in E42. -Solution: Get the number of error after the autocmd event. (Mike Lundy) -Files: src/quickfix.c - - -*** ../mercurial/vim73/src/quickfix.c 2011-05-10 16:41:13.000000000 +0200 ---- src/quickfix.c 2011-05-19 17:34:11.000000000 +0200 -*************** -*** 2813,2829 **** - (eap->cmdidx != CMD_grepadd - && eap->cmdidx != CMD_lgrepadd), - *eap->cmdlinep); - #ifdef FEAT_AUTOCMD - if (au_name != NULL) - apply_autocmds(EVENT_QUICKFIXCMDPOST, au_name, - curbuf->b_fname, TRUE, curbuf); - #endif - if (res > 0 && !eap->forceit) -- { -- if (wp != NULL) -- qi = GET_LOC_LIST(wp); - qf_jump(qi, 0, 0, FALSE); /* display first error */ -- } - - mch_remove(fname); - vim_free(fname); ---- 2813,2833 ---- - (eap->cmdidx != CMD_grepadd - && eap->cmdidx != CMD_lgrepadd), - *eap->cmdlinep); -+ if (wp != NULL) -+ qi = GET_LOC_LIST(wp); - #ifdef FEAT_AUTOCMD - if (au_name != NULL) -+ { - apply_autocmds(EVENT_QUICKFIXCMDPOST, au_name, - curbuf->b_fname, TRUE, curbuf); -+ if (qi->qf_curlist < qi->qf_listcount) -+ res = qi->qf_lists[qi->qf_curlist].qf_count; -+ else -+ res = 0; -+ } - #endif - if (res > 0 && !eap->forceit) - qf_jump(qi, 0, 0, FALSE); /* display first error */ - - mch_remove(fname); - vim_free(fname); -*** ../vim-7.3.196/src/version.c 2011-05-19 17:25:36.000000000 +0200 ---- src/version.c 2011-05-19 17:41:50.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 197, - /**/ - --- -I AM THANKFUL... -...for the clothes that fit a little too snug because it -means I have more than enough to eat. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.198 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.198 -Problem: No completion for ":lang". -Solution: Get locales to complete from. (Dominique Pelle) -Files: src/eval.c, src/ex_cmds2.c, src/ex_getln.c, - src/proto/ex_cmds2.pro, src/proto/ex_getln.pro, src/vim.h - - -*** ../mercurial/vim73/src/eval.c 2011-05-19 17:25:36.000000000 +0200 ---- src/eval.c 2011-05-19 17:52:02.000000000 +0200 -*************** -*** 911,916 **** ---- 911,917 ---- - hash_clear(&compat_hashtab); - - free_scriptnames(); -+ free_locales(); - - /* global variables */ - vars_clear(&globvarht); -*** ../mercurial/vim73/src/ex_cmds2.c 2011-05-10 16:41:13.000000000 +0200 ---- src/ex_cmds2.c 2011-05-19 18:16:54.000000000 +0200 -*************** -*** 1476,1482 **** - #endif - - /* -! * Ask the user what to do when abondoning a changed buffer. - * Must check 'write' option first! - */ - void ---- 1476,1482 ---- - #endif - - /* -! * Ask the user what to do when abandoning a changed buffer. - * Must check 'write' option first! - */ - void -*************** -*** 4153,4158 **** ---- 4153,4234 ---- - } - - # if defined(FEAT_CMDL_COMPL) || defined(PROTO) -+ -+ static char_u **locales = NULL; /* Array of all available locales */ -+ static int did_init_locales = FALSE; -+ -+ static void init_locales __ARGS((void)); -+ static char_u **find_locales __ARGS((void)); -+ -+ /* -+ * Lazy initialization of all available locales. -+ */ -+ static void -+ init_locales() -+ { -+ if (!did_init_locales) -+ { -+ did_init_locales = TRUE; -+ locales = find_locales(); -+ } -+ } -+ -+ /* Return an array of strings for all available locales + NULL for the -+ * last element. Return NULL in case of error. */ -+ static char_u ** -+ find_locales() -+ { -+ garray_T locales_ga; -+ char_u *loc; -+ -+ /* Find all available locales by running command "locale -a". If this -+ * doesn't work we won't have completion. */ -+ char_u *locale_a = get_cmd_output((char_u *)"locale -a", -+ NULL, SHELL_SILENT); -+ if (locale_a == NULL) -+ return NULL; -+ ga_init2(&locales_ga, sizeof(char_u *), 20); -+ -+ /* Transform locale_a string where each locale is separated by "\n" -+ * into an array of locale strings. */ -+ loc = (char_u *)strtok((char *)locale_a, "\n"); -+ -+ while (loc != NULL) -+ { -+ if (ga_grow(&locales_ga, 1) == FAIL) -+ break; -+ loc = vim_strsave(loc); -+ if (loc == NULL) -+ break; -+ -+ ((char_u **)locales_ga.ga_data)[locales_ga.ga_len++] = loc; -+ loc = (char_u *)strtok(NULL, "\n"); -+ } -+ vim_free(locale_a); -+ if (ga_grow(&locales_ga, 1) == FAIL) -+ { -+ ga_clear(&locales_ga); -+ return NULL; -+ } -+ ((char_u **)locales_ga.ga_data)[locales_ga.ga_len] = NULL; -+ return (char_u **)locales_ga.ga_data; -+ } -+ -+ # if defined(EXITFREE) || defined(PROTO) -+ void -+ free_locales() -+ { -+ int i; -+ if (locales != NULL) -+ { -+ for (i = 0; locales[i] != NULL; i++) -+ vim_free(locales[i]); -+ vim_free(locales); -+ locales = NULL; -+ } -+ } -+ # endif -+ - /* - * Function given to ExpandGeneric() to obtain the possible arguments of the - * ":language" command. -*************** -*** 4168,4174 **** - return (char_u *)"ctype"; - if (idx == 2) - return (char_u *)"time"; -! return NULL; - } - # endif - ---- 4244,4268 ---- - return (char_u *)"ctype"; - if (idx == 2) - return (char_u *)"time"; -! -! init_locales(); -! if (locales == NULL) -! return NULL; -! return locales[idx - 3]; -! } -! -! /* -! * Function given to ExpandGeneric() to obtain the available locales. -! */ -! char_u * -! get_locales(xp, idx) -! expand_T *xp UNUSED; -! int idx; -! { -! init_locales(); -! if (locales == NULL) -! return NULL; -! return locales[idx]; - } - # endif - -*** ../mercurial/vim73/src/ex_getln.c 2011-05-19 14:50:49.000000000 +0200 ---- src/ex_getln.c 2011-05-19 18:18:49.000000000 +0200 -*************** -*** 4571,4618 **** - int context; - char_u *((*func)__ARGS((expand_T *, int))); - int ic; - } tab[] = - { -! {EXPAND_COMMANDS, get_command_name, FALSE}, -! {EXPAND_BEHAVE, get_behave_arg, TRUE}, - #ifdef FEAT_USR_CMDS -! {EXPAND_USER_COMMANDS, get_user_commands, FALSE}, -! {EXPAND_USER_CMD_FLAGS, get_user_cmd_flags, FALSE}, -! {EXPAND_USER_NARGS, get_user_cmd_nargs, FALSE}, -! {EXPAND_USER_COMPLETE, get_user_cmd_complete, FALSE}, - #endif - #ifdef FEAT_EVAL -! {EXPAND_USER_VARS, get_user_var_name, FALSE}, -! {EXPAND_FUNCTIONS, get_function_name, FALSE}, -! {EXPAND_USER_FUNC, get_user_func_name, FALSE}, -! {EXPAND_EXPRESSION, get_expr_name, FALSE}, - #endif - #ifdef FEAT_MENU -! {EXPAND_MENUS, get_menu_name, FALSE}, -! {EXPAND_MENUNAMES, get_menu_names, FALSE}, - #endif - #ifdef FEAT_SYN_HL -! {EXPAND_SYNTAX, get_syntax_name, TRUE}, - #endif -! {EXPAND_HIGHLIGHT, get_highlight_name, TRUE}, - #ifdef FEAT_AUTOCMD -! {EXPAND_EVENTS, get_event_name, TRUE}, -! {EXPAND_AUGROUP, get_augroup_name, TRUE}, - #endif - #ifdef FEAT_CSCOPE -! {EXPAND_CSCOPE, get_cscope_name, TRUE}, - #endif - #ifdef FEAT_SIGNS -! {EXPAND_SIGN, get_sign_name, TRUE}, - #endif - #ifdef FEAT_PROFILE -! {EXPAND_PROFILE, get_profile_name, TRUE}, - #endif - #if (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \ - && (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE)) -! {EXPAND_LANGUAGE, get_lang_arg, TRUE}, - #endif -! {EXPAND_ENV_VARS, get_env_name, TRUE}, - }; - int i; - ---- 4571,4620 ---- - int context; - char_u *((*func)__ARGS((expand_T *, int))); - int ic; -+ int escaped; - } tab[] = - { -! {EXPAND_COMMANDS, get_command_name, FALSE, TRUE}, -! {EXPAND_BEHAVE, get_behave_arg, TRUE, TRUE}, - #ifdef FEAT_USR_CMDS -! {EXPAND_USER_COMMANDS, get_user_commands, FALSE, TRUE}, -! {EXPAND_USER_CMD_FLAGS, get_user_cmd_flags, FALSE, TRUE}, -! {EXPAND_USER_NARGS, get_user_cmd_nargs, FALSE, TRUE}, -! {EXPAND_USER_COMPLETE, get_user_cmd_complete, FALSE, TRUE}, - #endif - #ifdef FEAT_EVAL -! {EXPAND_USER_VARS, get_user_var_name, FALSE, TRUE}, -! {EXPAND_FUNCTIONS, get_function_name, FALSE, TRUE}, -! {EXPAND_USER_FUNC, get_user_func_name, FALSE, TRUE}, -! {EXPAND_EXPRESSION, get_expr_name, FALSE, TRUE}, - #endif - #ifdef FEAT_MENU -! {EXPAND_MENUS, get_menu_name, FALSE, TRUE}, -! {EXPAND_MENUNAMES, get_menu_names, FALSE, TRUE}, - #endif - #ifdef FEAT_SYN_HL -! {EXPAND_SYNTAX, get_syntax_name, TRUE, TRUE}, - #endif -! {EXPAND_HIGHLIGHT, get_highlight_name, TRUE, TRUE}, - #ifdef FEAT_AUTOCMD -! {EXPAND_EVENTS, get_event_name, TRUE, TRUE}, -! {EXPAND_AUGROUP, get_augroup_name, TRUE, TRUE}, - #endif - #ifdef FEAT_CSCOPE -! {EXPAND_CSCOPE, get_cscope_name, TRUE, TRUE}, - #endif - #ifdef FEAT_SIGNS -! {EXPAND_SIGN, get_sign_name, TRUE, TRUE}, - #endif - #ifdef FEAT_PROFILE -! {EXPAND_PROFILE, get_profile_name, TRUE, TRUE}, - #endif - #if (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \ - && (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE)) -! {EXPAND_LANGUAGE, get_lang_arg, TRUE, FALSE}, -! {EXPAND_LOCALES, get_locales, TRUE, FALSE}, - #endif -! {EXPAND_ENV_VARS, get_env_name, TRUE, TRUE}, - }; - int i; - -*************** -*** 4626,4632 **** - { - if (tab[i].ic) - regmatch.rm_ic = TRUE; -! ret = ExpandGeneric(xp, ®match, num_file, file, tab[i].func); - break; - } - } ---- 4628,4635 ---- - { - if (tab[i].ic) - regmatch.rm_ic = TRUE; -! ret = ExpandGeneric(xp, ®match, num_file, file, -! tab[i].func, tab[i].escaped); - break; - } - } -*************** -*** 4648,4660 **** - * Returns OK when no problems encountered, FAIL for error (out of memory). - */ - int -! ExpandGeneric(xp, regmatch, num_file, file, func) - expand_T *xp; - regmatch_T *regmatch; - int *num_file; - char_u ***file; - char_u *((*func)__ARGS((expand_T *, int))); - /* returns a string from the list */ - { - int i; - int count = 0; ---- 4651,4664 ---- - * Returns OK when no problems encountered, FAIL for error (out of memory). - */ - int -! ExpandGeneric(xp, regmatch, num_file, file, func, escaped) - expand_T *xp; - regmatch_T *regmatch; - int *num_file; - char_u ***file; - char_u *((*func)__ARGS((expand_T *, int))); - /* returns a string from the list */ -+ int escaped; - { - int i; - int count = 0; -*************** -*** 4679,4685 **** - { - if (round) - { -! str = vim_strsave_escaped(str, (char_u *)" \t\\."); - (*file)[count] = str; - #ifdef FEAT_MENU - if (func == get_menu_names && str != NULL) ---- 4683,4692 ---- - { - if (round) - { -! if (escaped) -! str = vim_strsave_escaped(str, (char_u *)" \t\\."); -! else -! str = vim_strsave(str); - (*file)[count] = str; - #ifdef FEAT_MENU - if (func == get_menu_names && str != NULL) -*** ../mercurial/vim73/src/proto/ex_cmds2.pro 2010-05-15 21:22:11.000000000 +0200 ---- src/proto/ex_cmds2.pro 2011-05-19 17:53:52.000000000 +0200 -*************** -*** 83,87 **** ---- 83,89 ---- - char_u *get_mess_lang __ARGS((void)); - void set_lang_var __ARGS((void)); - void ex_language __ARGS((exarg_T *eap)); -+ void free_locales __ARGS((void)); - char_u *get_lang_arg __ARGS((expand_T *xp, int idx)); -+ char_u *get_locales __ARGS((expand_T *xp, int idx)); - /* vim: set ft=c : */ -*** ../mercurial/vim73/src/proto/ex_getln.pro 2010-08-16 21:23:30.000000000 +0200 ---- src/proto/ex_getln.pro 2011-05-19 17:54:00.000000000 +0200 -*************** -*** 31,37 **** - char_u *addstar __ARGS((char_u *fname, int len, int context)); - void set_cmd_context __ARGS((expand_T *xp, char_u *str, int len, int col)); - int expand_cmdline __ARGS((expand_T *xp, char_u *str, int col, int *matchcount, char_u ***matches)); -! int ExpandGeneric __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file, char_u *((*func)(expand_T *, int)))); - char_u *globpath __ARGS((char_u *path, char_u *file, int expand_options)); - void init_history __ARGS((void)); - int get_histtype __ARGS((char_u *name)); ---- 31,37 ---- - char_u *addstar __ARGS((char_u *fname, int len, int context)); - void set_cmd_context __ARGS((expand_T *xp, char_u *str, int len, int col)); - int expand_cmdline __ARGS((expand_T *xp, char_u *str, int col, int *matchcount, char_u ***matches)); -! int ExpandGeneric __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file, char_u *((*func)(expand_T *, int)), int escaped)); - char_u *globpath __ARGS((char_u *path, char_u *file, int expand_options)); - void init_history __ARGS((void)); - int get_histtype __ARGS((char_u *name)); -*** ../mercurial/vim73/src/vim.h 2011-05-19 17:25:36.000000000 +0200 ---- src/vim.h 2011-05-19 17:52:02.000000000 +0200 -*************** -*** 779,784 **** ---- 779,785 ---- - #define EXPAND_FILETYPE 37 - #define EXPAND_FILES_IN_PATH 38 - #define EXPAND_OWNSYNTAX 39 -+ #define EXPAND_LOCALES 40 - - /* Values for exmode_active (0 is no exmode) */ - #define EXMODE_NORMAL 1 -*** ../vim-7.3.197/src/version.c 2011-05-19 17:42:54.000000000 +0200 ---- src/version.c 2011-05-19 18:24:58.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 198, - /**/ - --- -The primary purpose of the DATA statement is to give names to constants; -instead of referring to pi as 3.141592653589793 at every appearance, the -variable PI can be given that value with a DATA statement and used instead -of the longer form of the constant. This also simplifies modifying the -program, should the value of pi change. - -- FORTRAN manual for Xerox Computers - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.199 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.199 -Problem: MS-Windows: Compilation problem of OLE with MingW compiler. -Solution: Put #ifdef around declarations. (Guopeng Wen) -Files: src/if_ole.h - - -*** ../mercurial/vim73/src/if_ole.h 2010-05-15 21:22:11.000000000 +0200 ---- src/if_ole.h 2011-05-25 12:05:50.000000000 +0200 -*************** -*** 46,53 **** - /* header files for imported files */ - #include "oaidl.h" - -! void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t); -! void __RPC_USER MIDL_user_free( void __RPC_FAR * ); - - #ifndef __IVim_INTERFACE_DEFINED__ - #define __IVim_INTERFACE_DEFINED__ ---- 46,56 ---- - /* header files for imported files */ - #include "oaidl.h" - -! #ifndef __MIDL_user_allocate_free_DEFINED__ -! #define __MIDL_user_allocate_free_DEFINED__ -! void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t); -! void __RPC_USER MIDL_user_free( void __RPC_FAR * ); -! #endif - - #ifndef __IVim_INTERFACE_DEFINED__ - #define __IVim_INTERFACE_DEFINED__ -*** ../vim-7.3.198/src/version.c 2011-05-19 18:26:34.000000000 +0200 ---- src/version.c 2011-05-25 12:08:54.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 199, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -104. When people ask about the Presidential Election you ask "Which country?" - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.200 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.200 (after 7.3.198) -Problem: CTRL-D doesn't complete :lang. -Solution: Add the missing part of the change. (Dominique Pelle) -Files: src/ex_docmd.c - - -*** ../mercurial/vim73/src/ex_docmd.c 2011-05-19 14:50:49.000000000 +0200 ---- src/ex_docmd.c 2011-05-25 12:45:02.000000000 +0200 -*************** -*** 3861,3873 **** - #if (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \ - && (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE)) - case CMD_language: -! if (*skiptowhite(arg) == NUL) - { - xp->xp_context = EXPAND_LANGUAGE; - xp->xp_pattern = arg; - } - else -! xp->xp_context = EXPAND_NOTHING; - break; - #endif - #if defined(FEAT_PROFILE) ---- 3861,3884 ---- - #if (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \ - && (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE)) - case CMD_language: -! p = skiptowhite(arg); -! if (*p == NUL) - { - xp->xp_context = EXPAND_LANGUAGE; - xp->xp_pattern = arg; - } - else -! { -! if ( STRNCMP(arg, "messages", p - arg) == 0 -! || STRNCMP(arg, "ctype", p - arg) == 0 -! || STRNCMP(arg, "time", p - arg) == 0) -! { -! xp->xp_context = EXPAND_LOCALES; -! xp->xp_pattern = skipwhite(p); -! } -! else -! xp->xp_context = EXPAND_NOTHING; -! } - break; - #endif - #if defined(FEAT_PROFILE) -*** ../vim-7.3.199/src/version.c 2011-05-25 12:09:46.000000000 +0200 ---- src/version.c 2011-05-25 12:49:49.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 200, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -105. When someone asks you for your address, you tell them your URL. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.201 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.201 (after 7.3.195) -Problem: "} else" still causes following lines to be indented too much. -Solution: Better detection for the "else" block. (Lech Lorens) -Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok - - -*** ../mercurial/vim73/src/misc1.c 2011-05-19 16:35:05.000000000 +0200 ---- src/misc1.c 2011-05-25 13:29:45.000000000 +0200 -*************** -*** 7541,7557 **** - - /* - * When searching for a terminated line, don't use the -! * one between the "if" and the "else". - * Need to use the scope of this "else". XXX - * If whilelevel != 0 continue looking for a "do {". - */ -! if (cin_iselse(l) -! && whilelevel == 0 -! && ((trypos = find_start_brace(ind_maxcomment)) -! == NULL - || find_match(LOOKFOR_IF, trypos->lnum, -! ind_maxparen, ind_maxcomment) == FAIL)) -! break; - } - - /* ---- 7541,7565 ---- - - /* - * When searching for a terminated line, don't use the -! * one between the "if" and the matching "else". - * Need to use the scope of this "else". XXX - * If whilelevel != 0 continue looking for a "do {". - */ -! if (cin_iselse(l) && whilelevel == 0) -! { -! /* If we're looking at "} else", let's make sure we -! * find the opening brace of the enclosing scope, -! * not the one from "if () {". */ -! if (*l == '}') -! curwin->w_cursor.col = -! (l - ml_get_curline()) + 1; -! -! if ((trypos = find_start_brace(ind_maxcomment)) -! == NULL - || find_match(LOOKFOR_IF, trypos->lnum, -! ind_maxparen, ind_maxcomment) == FAIL) -! break; -! } - } - - /* -*** ../mercurial/vim73/src/testdir/test3.in 2011-05-19 16:35:05.000000000 +0200 ---- src/testdir/test3.in 2011-05-25 13:23:51.000000000 +0200 -*************** -*** 1413,1418 **** ---- 1413,1433 ---- - } - - STARTTEST -+ :set cino& -+ 2kdd=][ -+ ENDTEST -+ -+ void func(void) -+ { -+ for (int i = 0; i < 10; ++i) -+ if (i & 1) { -+ foo(1); -+ } else -+ foo(0); -+ baz(); -+ } -+ -+ STARTTEST - :g/^STARTTEST/.,/^ENDTEST/d - :1;/start of AUTO/,$wq! test.out - ENDTEST -*** ../mercurial/vim73/src/testdir/test3.ok 2011-05-19 16:35:05.000000000 +0200 ---- src/testdir/test3.ok 2011-05-25 13:23:51.000000000 +0200 -*************** -*** 1262,1264 **** ---- 1262,1275 ---- - foo(); - } - -+ -+ void func(void) -+ { -+ for (int i = 0; i < 10; ++i) -+ if (i & 1) { -+ foo(1); -+ } else -+ foo(0); -+ baz(); -+ } -+ -*** ../vim-7.3.200/src/version.c 2011-05-25 12:51:17.000000000 +0200 ---- src/version.c 2011-05-25 13:33:16.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 201, - /**/ - --- -Laughing helps. It's like jogging on the inside. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.202 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.202 -Problem: Cannot influence the indent inside a namespace. -Solution: Add the "N" 'cino' parameter. (Konstantin Lepa) -Files: runtime/doc/indent.txt, src/misc1.c, src/testdir/test3.in, - src/testdir/test3.ok - - -*** ../mercurial/vim73/runtime/doc/indent.txt 2011-04-28 19:01:26.000000000 +0200 ---- runtime/doc/indent.txt 2011-05-25 14:35:37.000000000 +0200 -*************** -*** 128,140 **** - used CTRL-T or CTRL-D. - - *cinoptions-values* -! The 'cinoptions' option sets how Vim performs indentation. In the list below, - "N" represents a number of your choice (the number can be negative). When - there is an 's' after the number, Vim multiplies the number by 'shiftwidth': - "1s" is 'shiftwidth', "2s" is two times 'shiftwidth', etc. You can use a -! decimal point, too: "-0.5s" is minus half a 'shiftwidth'. The examples below -! assume a 'shiftwidth' of 4. -! - >N Amount added for "normal" indent. Used after a line that should - increase the indent (lines starting with "if", an opening brace, - etc.). (default 'shiftwidth'). ---- 128,147 ---- - used CTRL-T or CTRL-D. - - *cinoptions-values* -! The 'cinoptions' option sets how Vim performs indentation. The value after -! the option character can be one of these (N is any number): -! N indent N spaces -! -N indent N spaces to the left -! Ns N times 'shiftwidth spaces -! -Ns N times 'shiftwidth spaces to the left -! -! In the list below, - "N" represents a number of your choice (the number can be negative). When - there is an 's' after the number, Vim multiplies the number by 'shiftwidth': - "1s" is 'shiftwidth', "2s" is two times 'shiftwidth', etc. You can use a -! decimal point, too: "-0.5s" is minus half a 'shiftwidth'. -! The examples below assume a 'shiftwidth' of 4. -! *cino->* - >N Amount added for "normal" indent. Used after a line that should - increase the indent (lines starting with "if", an opening brace, - etc.). (default 'shiftwidth'). -*************** -*** 145,150 **** ---- 152,158 ---- - foo; foo; foo; - } } } - < -+ *cino-e* - eN Add N to the prevailing indent inside a set of braces if the - opening brace at the End of the line (more precise: is not the - first character in a line). This is useful if you want a -*************** -*** 160,165 **** ---- 168,174 ---- - bar; bar; bar; - } } } - < -+ *cino-n* - nN Add N to the prevailing indent for a statement after an "if", - "while", etc., if it is NOT inside a set of braces. This is - useful if you want a different indent when there is no '{' -*************** -*** 174,179 **** ---- 183,189 ---- - bar; bar; bar; - } } } - < -+ *cino-f* - fN Place the first opening brace of a function or other block in - column N. This applies only for an opening brace that is not - inside other braces and is at the start of the line. What comes -*************** -*** 184,189 **** ---- 194,200 ---- - { { { - int foo; int foo; int foo; - < -+ *cino-{* - {N Place opening braces N characters from the prevailing indent. - This applies only for opening braces that are inside other - braces. (default 0). -*************** -*** 193,198 **** ---- 204,210 ---- - { { { - foo; foo; foo; - < -+ *cino-}* - }N Place closing braces N characters from the matching opening - brace. (default 0). - -*************** -*** 202,207 **** ---- 214,220 ---- - foo; foo; foo; - } } } - < -+ *cino-^* - ^N Add N to the prevailing indent inside a set of braces if the - opening brace is in column 0. This can specify a different - indent for whole of a function (some may like to set it to a -*************** -*** 216,221 **** ---- 229,235 ---- - } } } - } } } - < -+ *cino-L* - LN Controls placement of jump labels. If N is negative, the label - will be placed at column 1. If N is non-negative, the indent of - the label will be the prevailing indent minus N. (default -1). -*************** -*** 229,234 **** ---- 243,249 ---- - } } } - } } } - < -+ *cino-:* - :N Place case labels N characters from the indent of the switch(). - (default 'shiftwidth'). - -*************** -*** 240,245 **** ---- 255,261 ---- - default: default: - } } - < -+ *cino-=* - =N Place statements occurring after a case label N characters from - the indent of the label. (default 'shiftwidth'). - -*************** -*** 247,252 **** ---- 263,269 ---- - case 11: case 11: a = a + 1; - a = a + 1; b = b + 1; - < -+ *cino-l* - lN If N != 0 Vim will align with a case label instead of the - statement after it in the same line. - -*************** -*** 256,261 **** ---- 273,279 ---- - break; break; - } } - < -+ *cino-b* - bN If N != 0 Vim will align a final "break" with the case label, - so that case..break looks like a sort of block. (default: 0). - When using 1, consider adding "0=break" to 'cinkeys'. -*************** -*** 272,277 **** ---- 290,296 ---- - break; break; - } } - < -+ *cino-g* - gN Place C++ scope declarations N characters from the indent of the - block they are in. (default 'shiftwidth'). A scope declaration - can be "public:", "protected:" or "private:". -*************** -*** 283,288 **** ---- 302,308 ---- - private: private: - } } - < -+ *cino-h* - hN Place statements occurring after a C++ scope declaration N - characters from the indent of the label. (default - 'shiftwidth'). -*************** -*** 291,296 **** ---- 311,331 ---- - public: public: a = a + 1; - a = a + 1; b = b + 1; - < -+ *cino-N* -+ NN Indent inside C++ namespace N characters extra compared to a -+ normal block. (default 0). -+ -+ cino= cino=N-s > -+ namespace { namespace { -+ void function(); void function(); -+ } } -+ -+ namespace my namespace my -+ { { -+ void function(); void function(); -+ } } -+ < -+ *cino-p* - pN Parameter declarations for K&R-style function declarations will - be indented N characters from the margin. (default - 'shiftwidth'). -*************** -*** 300,305 **** ---- 335,341 ---- - int a; int a; int a; - char b; char b; char b; - < -+ *cino-t* - tN Indent a function return type declaration N characters from the - margin. (default 'shiftwidth'). - -*************** -*** 307,312 **** ---- 343,349 ---- - int int int - func() func() func() - < -+ *cino-i* - iN Indent C++ base class declarations and constructor - initializations, if they start in a new line (otherwise they - are aligned at the right side of the ':'). -*************** -*** 330,335 **** ---- 368,374 ---- - a = b + 9 * a = b + 9 * - c; c; - < -+ *cino-c* - cN Indent comment lines after the comment opener, when there is no - other text with which to align, N characters from the comment - opener. (default 3). See also |format-comments|. -*************** -*** 339,344 **** ---- 378,384 ---- - text. text. - */ */ - < -+ *cino-C* - CN When N is non-zero, indent comment lines by the amount specified - with the c flag above even if there is other text behind the - comment opener. (default 0). -*************** -*** 349,360 **** ---- 389,402 ---- - ********/ ********/ - < (Example uses ":set comments& comments-=s1:/* comments^=s0:/*") - -+ *cino-/* - /N Indent comment lines N characters extra. (default 0). - cino= cino=/4 > - a = b; a = b; - /* comment */ /* comment */ - c = d; c = d; - < -+ *cino-(* - (N When in unclosed parentheses, indent N characters from the line - with the unclosed parentheses. Add a 'shiftwidth' for every - unclosed parentheses. When N is 0 or the unclosed parentheses -*************** -*** 370,375 **** ---- 412,418 ---- - (c2 || c3)) (c2 || c3)) - { { - < -+ *cino-u* - uN Same as (N, but for one level deeper. (default 'shiftwidth'). - - cino= cino=u2 > -*************** -*** 377,382 **** ---- 420,426 ---- - && (c22345 && (c22345 - || c3)) || c3)) - < -+ *cino-U* - UN When N is non-zero, do not ignore the indenting specified by - ( or u in case that the unclosed parentheses is the first - non-white character in its line. (default 0). -*************** -*** 388,393 **** ---- 432,438 ---- - c3 c3 - ) && c4; ) && c4; - < -+ *cino-2* - wN When in unclosed parentheses and N is non-zero and either - using "(0" or "u0", respectively, or using "U0" and the unclosed - parentheses is the first non-white character in its line, line -*************** -*** 400,405 **** ---- 445,451 ---- - || c3)) || c3)) - foo; foo; - < -+ *cino-W* - WN When in unclosed parentheses and N is non-zero and either - using "(0" or "u0", respectively and the unclosed parentheses is - the last non-white character in its line and it is not the -*************** -*** 414,419 **** ---- 460,466 ---- - a_short_line(argument, a_short_line(argument, - argument); argument); - < -+ *cino-m* - mN When N is non-zero, line up a line starting with a closing - parentheses with the first character of the line with the - matching opening parentheses. (default 0). -*************** -*** 428,433 **** ---- 475,481 ---- - ) ) - foo; foo; - < -+ *cino-M* - MN When N is non-zero, line up a line starting with a closing - parentheses with the first character of the previous line. - (default 0). -*************** -*** 437,443 **** - cond2 cond2 - ) ) - < -! *java-cinoptions* *java-indenting* - jN Indent java anonymous classes correctly. The value 'N' is - currently unused but must be non-zero (e.g. 'j1'). 'j1' will - indent for example the following code snippet correctly: > ---- 485,491 ---- - cond2 cond2 - ) ) - < -! *java-cinoptions* *java-indenting* *cino-j* - jN Indent java anonymous classes correctly. The value 'N' is - currently unused but must be non-zero (e.g. 'j1'). 'j1' will - indent for example the following code snippet correctly: > -*************** -*** 448,454 **** - } - }); - < -! *javascript-cinoptions* *javascript-indenting* - JN Indent JavaScript object declarations correctly by not confusing - them with labels. The value 'N' is currently unused but must be - non-zero (e.g. 'J1'). > ---- 496,502 ---- - } - }); - < -! *javascript-cinoptions* *javascript-indenting* *cino-J* - JN Indent JavaScript object declarations correctly by not confusing - them with labels. The value 'N' is currently unused but must be - non-zero (e.g. 'J1'). > -*************** -*** 483,489 **** - - - The defaults, spelled out in full, are: -! cinoptions=>s,e0,n0,f0,{0,}0,^0,L-1,:s,=s,l0,b0,gs,hs,ps,ts,is,+s, - c3,C0,/0,(2s,us,U0,w0,W0,m0,j0,J0,)20,*70,#0 - - Vim puts a line in column 1 if: ---- 534,540 ---- - - - The defaults, spelled out in full, are: -! cinoptions=>s,e0,n0,f0,{0,}0,^0,L-1,:s,=s,l0,b0,gs,hs,N0,ps,ts,is,+s, - c3,C0,/0,(2s,us,U0,w0,W0,m0,j0,J0,)20,*70,#0 - - Vim puts a line in column 1 if: -*** ../mercurial/vim73/src/misc1.c 2011-05-25 13:33:59.000000000 +0200 ---- src/misc1.c 2011-05-25 14:57:31.000000000 +0200 -*************** -*** 4959,4964 **** ---- 4959,4965 ---- - static int corr_ind_maxparen __ARGS((int ind_maxparen, pos_T *startpos)); - static int find_last_paren __ARGS((char_u *l, int start, int end)); - static int find_match __ARGS((int lookfor, linenr_T ourscope, int ind_maxparen, int ind_maxcomment)); -+ static int cin_is_cpp_namespace __ARGS((char_u *)); - - static int ind_hash_comment = 0; /* # starts a comment */ - -*************** -*** 5221,5226 **** ---- 5222,5271 ---- - return (*(s = cin_skipcomment(s + i)) == ':' && s[1] != ':'); - } - -+ /* Maximum number of lines to search back for a "namespace" line. */ -+ #define FIND_NAMESPACE_LIM 20 -+ -+ /* -+ * Recognize a "namespace" scope declaration. -+ */ -+ static int -+ cin_is_cpp_namespace(s) -+ char_u *s; -+ { -+ char_u *p; -+ int has_name = FALSE; -+ -+ s = cin_skipcomment(s); -+ if (STRNCMP(s, "namespace", 9) == 0 && (s[9] == NUL || !vim_iswordc(s[9]))) -+ { -+ p = cin_skipcomment(skipwhite(s + 9)); -+ while (*p != NUL) -+ { -+ if (vim_iswhite(*p)) -+ { -+ has_name = TRUE; /* found end of a name */ -+ p = cin_skipcomment(skipwhite(p)); -+ } -+ else if (*p == '{') -+ { -+ break; -+ } -+ else if (vim_iswordc(*p)) -+ { -+ if (has_name) -+ return FALSE; /* word character after skipping past name */ -+ ++p; -+ } -+ else -+ { -+ return FALSE; -+ } -+ } -+ return TRUE; -+ } -+ return FALSE; -+ } -+ - /* - * Return a pointer to the first non-empty non-comment character after a ':'. - * Return NULL if not found. -*************** -*** 6296,6301 **** ---- 6341,6351 ---- - */ - int ind_keep_case_label = 0; - -+ /* -+ * handle C++ namespace -+ */ -+ int ind_cpp_namespace = 0; -+ - pos_T cur_curpos; - int amount; - int scope_amount; -*************** -*** 6336,6341 **** ---- 6386,6392 ---- - int n; - int iscase; - int lookfor_break; -+ int lookfor_cpp_namespace = FALSE; - int cont_amount = 0; /* amount for continuation line */ - int original_line_islabel; - -*************** -*** 6409,6414 **** ---- 6460,6466 ---- - case 'J': ind_js = n; break; - case 'l': ind_keep_case_label = n; break; - case '#': ind_hash_comment = n; break; -+ case 'N': ind_cpp_namespace = n; break; - } - if (*options == ',') - ++options; -*************** -*** 6976,6986 **** ---- 7028,7051 ---- - if (start_brace == BRACE_IN_COL0) /* '{' is in column 0 */ - { - amount = ind_open_left_imag; -+ lookfor_cpp_namespace = TRUE; -+ } -+ else if (start_brace == BRACE_AT_START && -+ lookfor_cpp_namespace) /* '{' is at start */ -+ { -+ -+ lookfor_cpp_namespace = TRUE; - } - else - { - if (start_brace == BRACE_AT_END) /* '{' is at end of line */ -+ { - amount += ind_open_imag; -+ -+ l = skipwhite(ml_get_curline()); -+ if (cin_is_cpp_namespace(l)) -+ amount += ind_cpp_namespace; -+ } - else - { - /* Compensate for adding ind_open_extra later. */ -*************** -*** 7151,7156 **** ---- 7216,7261 ---- - else - amount += ind_continuation; - } -+ else if (lookfor_cpp_namespace) -+ { -+ if (curwin->w_cursor.lnum == ourscope) -+ continue; -+ -+ if (curwin->w_cursor.lnum == 0 -+ || curwin->w_cursor.lnum -+ < ourscope - FIND_NAMESPACE_LIM) -+ break; -+ -+ l = ml_get_curline(); -+ -+ /* -+ * If we're in a comment now, skip to the start of the -+ * comment. -+ */ -+ trypos = find_start_comment(ind_maxcomment); -+ if (trypos != NULL) -+ { -+ curwin->w_cursor.lnum = trypos->lnum + 1; -+ curwin->w_cursor.col = 0; -+ continue; -+ } -+ -+ /* -+ * Skip preprocessor directives and blank lines. -+ */ -+ if (cin_ispreproc_cont(&l, &curwin->w_cursor.lnum)) -+ continue; -+ -+ if (cin_is_cpp_namespace(l)) -+ { -+ amount += ind_cpp_namespace; -+ break; -+ } -+ -+ if (cin_nocode(l)) -+ continue; -+ -+ } - else if (lookfor != LOOKFOR_TERM - && lookfor != LOOKFOR_CPP_BASECLASS) - { -*** ../mercurial/vim73/src/testdir/test3.in 2011-05-25 13:33:59.000000000 +0200 ---- src/testdir/test3.in 2011-05-25 14:47:31.000000000 +0200 -*************** -*** 799,804 **** ---- 799,867 ---- - df */ - hello - } -+ -+ /* valid namespaces with normal indent */ -+ namespace -+ { -+ { -+ 111111111111; -+ } -+ } -+ namespace /* test */ -+ { -+ 11111111111111111; -+ } -+ namespace // test -+ { -+ 111111111111111111; -+ } -+ namespace -+ { -+ 111111111111111111; -+ } -+ namespace test -+ { -+ 111111111111111111; -+ } -+ namespace{ -+ 111111111111111111; -+ } -+ namespace test{ -+ 111111111111111111; -+ } -+ namespace { -+ 111111111111111111; -+ } -+ namespace test { -+ 111111111111111111; -+ namespace test2 { -+ 22222222222222222; -+ } -+ } -+ -+ /* invalid namespaces use block indent */ -+ namespace test test2 { -+ 111111111111111111111; -+ } -+ namespace11111111111 { -+ 111111111111; -+ } -+ namespace() { -+ 1111111111111; -+ } -+ namespace() -+ { -+ 111111111111111111; -+ } -+ namespace test test2 -+ { -+ 1111111111111111111; -+ } -+ namespace111111111 -+ { -+ 111111111111111111; -+ } -+ - /* end of AUTO */ - - STARTTEST -*************** -*** 1428,1433 **** ---- 1491,1566 ---- - } - - STARTTEST -+ :set cino=N-s -+ /namespaces -+ =/^NAMESPACEEND -+ ENDTEST -+ -+ /* valid namespaces with normal indent */ -+ namespace -+ { -+ { -+ 111111111111; -+ } -+ } -+ namespace /* test */ -+ { -+ 11111111111111111; -+ } -+ namespace // test -+ { -+ 111111111111111111; -+ } -+ namespace -+ { -+ 111111111111111111; -+ } -+ namespace test -+ { -+ 111111111111111111; -+ } -+ namespace{ -+ 111111111111111111; -+ } -+ namespace test{ -+ 111111111111111111; -+ } -+ namespace { -+ 111111111111111111; -+ } -+ namespace test { -+ 111111111111111111; -+ namespace test2 { -+ 22222222222222222; -+ } -+ } -+ -+ /* invalid namespaces use block indent */ -+ namespace test test2 { -+ 111111111111111111111; -+ } -+ namespace11111111111 { -+ 111111111111; -+ } -+ namespace() { -+ 1111111111111; -+ } -+ namespace() -+ { -+ 111111111111111111; -+ } -+ namespace test test2 -+ { -+ 1111111111111111111; -+ } -+ namespace111111111 -+ { -+ 111111111111111111; -+ } -+ NAMESPACEEND -+ -+ -+ STARTTEST - :g/^STARTTEST/.,/^ENDTEST/d - :1;/start of AUTO/,$wq! test.out - ENDTEST -*** ../mercurial/vim73/src/testdir/test3.ok 2011-05-25 13:33:59.000000000 +0200 ---- src/testdir/test3.ok 2011-05-25 14:48:02.000000000 +0200 -*************** -*** 787,792 **** ---- 787,855 ---- - df */ - hello - } -+ -+ /* valid namespaces with normal indent */ -+ namespace -+ { -+ { -+ 111111111111; -+ } -+ } -+ namespace /* test */ -+ { -+ 11111111111111111; -+ } -+ namespace // test -+ { -+ 111111111111111111; -+ } -+ namespace -+ { -+ 111111111111111111; -+ } -+ namespace test -+ { -+ 111111111111111111; -+ } -+ namespace{ -+ 111111111111111111; -+ } -+ namespace test{ -+ 111111111111111111; -+ } -+ namespace { -+ 111111111111111111; -+ } -+ namespace test { -+ 111111111111111111; -+ namespace test2 { -+ 22222222222222222; -+ } -+ } -+ -+ /* invalid namespaces use block indent */ -+ namespace test test2 { -+ 111111111111111111111; -+ } -+ namespace11111111111 { -+ 111111111111; -+ } -+ namespace() { -+ 1111111111111; -+ } -+ namespace() -+ { -+ 111111111111111111; -+ } -+ namespace test test2 -+ { -+ 1111111111111111111; -+ } -+ namespace111111111 -+ { -+ 111111111111111111; -+ } -+ - /* end of AUTO */ - - -*************** -*** 1273,1275 **** ---- 1336,1403 ---- - baz(); - } - -+ -+ /* valid namespaces with normal indent */ -+ namespace -+ { -+ { -+ 111111111111; -+ } -+ } -+ namespace /* test */ -+ { -+ 11111111111111111; -+ } -+ namespace // test -+ { -+ 111111111111111111; -+ } -+ namespace -+ { -+ 111111111111111111; -+ } -+ namespace test -+ { -+ 111111111111111111; -+ } -+ namespace{ -+ 111111111111111111; -+ } -+ namespace test{ -+ 111111111111111111; -+ } -+ namespace { -+ 111111111111111111; -+ } -+ namespace test { -+ 111111111111111111; -+ namespace test2 { -+ 22222222222222222; -+ } -+ } -+ -+ /* invalid namespaces use block indent */ -+ namespace test test2 { -+ 111111111111111111111; -+ } -+ namespace11111111111 { -+ 111111111111; -+ } -+ namespace() { -+ 1111111111111; -+ } -+ namespace() -+ { -+ 111111111111111111; -+ } -+ namespace test test2 -+ { -+ 1111111111111111111; -+ } -+ namespace111111111 -+ { -+ 111111111111111111; -+ } -+ NAMESPACEEND -+ -+ -*** ../vim-7.3.201/src/version.c 2011-05-25 13:33:59.000000000 +0200 ---- src/version.c 2011-05-25 15:14:20.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 202, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -107. When using your phone you forget that you don't have to use your - keyboard. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.203 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.203 -Problem: MS-Windows: Can't run an external command without a console window. -Solution: Support ":!start /b cmd". (Xaizek) -Files: runtime/doc/os_win32.txt, src/os_win32.c - - -*** ../mercurial/vim73/src/os_win32.c 2011-05-05 18:31:54.000000000 +0200 ---- src/os_win32.c 2011-05-25 16:45:31.000000000 +0200 -*************** -*** 3401,3406 **** ---- 3401,3407 ---- - { - STARTUPINFO si; - PROCESS_INFORMATION pi; -+ DWORD flags = CREATE_NEW_CONSOLE; - - si.cb = sizeof(si); - si.lpReserved = NULL; -*************** -*** 3418,3423 **** ---- 3419,3440 ---- - si.dwFlags = STARTF_USESHOWWINDOW; - si.wShowWindow = SW_SHOWMINNOACTIVE; - } -+ else if ((STRNICMP(cmdbase, "/b", 2) == 0) -+ && vim_iswhite(cmdbase[2])) -+ { -+ cmdbase = skipwhite(cmdbase + 2); -+ flags = CREATE_NO_WINDOW; -+ si.dwFlags = STARTF_USESTDHANDLES; -+ si.hStdInput = CreateFile("\\\\.\\NUL", // File name -+ GENERIC_READ, // Access flags -+ 0, // Share flags -+ NULL, // Security att. -+ OPEN_EXISTING, // Open flags -+ FILE_ATTRIBUTE_NORMAL, // File att. -+ NULL); // Temp file -+ si.hStdOutput = si.hStdInput; -+ si.hStdError = si.hStdInput; -+ } - - /* When the command is in double quotes, but 'shellxquote' is - * empty, keep the double quotes around the command. -*************** -*** 3445,3451 **** - NULL, // Process security attributes - NULL, // Thread security attributes - FALSE, // Inherit handles -! CREATE_NEW_CONSOLE, // Creation flags - NULL, // Environment - NULL, // Current directory - &si, // Startup information ---- 3462,3468 ---- - NULL, // Process security attributes - NULL, // Thread security attributes - FALSE, // Inherit handles -! flags, // Creation flags - NULL, // Environment - NULL, // Current directory - &si, // Startup information -*************** -*** 3458,3463 **** ---- 3475,3485 ---- - EMSG(_("E371: Command not found")); - #endif - } -+ if (si.hStdInput != NULL) -+ { -+ /* Close the handle to \\.\NUL */ -+ CloseHandle(si.hStdInput); -+ } - /* Close the handles to the subprocess, so that it goes away */ - CloseHandle(pi.hThread); - CloseHandle(pi.hProcess); -*** ../vim-7.3.202/src/version.c 2011-05-25 15:16:06.000000000 +0200 ---- src/version.c 2011-05-25 17:05:59.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 203, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -108. While reading a magazine, you look for the Zoom icon for a better - look at a photograph. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.204 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.204 (after 7.3.201) -Problem: Compiler warning. -Solution: Add type cast. (Mike Williams) -Files: src/misc1.c - - -*** ../mercurial/vim73/src/misc1.c 2011-05-25 15:16:06.000000000 +0200 ---- src/misc1.c 2011-05-25 17:25:10.000000000 +0200 -*************** -*** 7657,7663 **** - * not the one from "if () {". */ - if (*l == '}') - curwin->w_cursor.col = -! (l - ml_get_curline()) + 1; - - if ((trypos = find_start_brace(ind_maxcomment)) - == NULL ---- 7657,7663 ---- - * not the one from "if () {". */ - if (*l == '}') - curwin->w_cursor.col = -! (colnr_T)(l - ml_get_curline()) + 1; - - if ((trypos = find_start_brace(ind_maxcomment)) - == NULL -*** ../vim-7.3.203/src/version.c 2011-05-25 17:06:16.000000000 +0200 ---- src/version.c 2011-05-25 17:29:32.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 204, - /**/ - --- -In a world without walls and borders, who needs windows and gates? - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.205 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.205 -Problem: Syntax "extend" doesn't work correctly. -Solution: Avoid calling check_state_ends() recursively (Ben Schmidt) -Files: src/syntax.c - - -*** ../mercurial/vim73/src/syntax.c 2011-05-19 12:14:03.000000000 +0200 ---- src/syntax.c 2011-05-25 17:47:46.000000000 +0200 -*************** -*** 990,996 **** ---- 990,999 ---- - * previous line and regions that have "keepend". - */ - if (current_state.ga_len > 0) -+ { - syn_update_ends(TRUE); -+ check_state_ends(); -+ } - - next_match_idx = -1; - ++current_line_id; -*************** -*** 1064,1070 **** - } - } - check_keepend(); -- check_state_ends(); - } - - /**************************************** ---- 1067,1072 ---- -*************** -*** 2533,2539 **** - check_state_ends() - { - stateitem_T *cur_si; -! int had_extend = FALSE; - - cur_si = &CUR_STATE(current_state.ga_len - 1); - for (;;) ---- 2535,2541 ---- - check_state_ends() - { - stateitem_T *cur_si; -! int had_extend; - - cur_si = &CUR_STATE(current_state.ga_len - 1); - for (;;) -*************** -*** 2586,2593 **** - - /* When the ended item has "extend", another item with - * "keepend" now needs to check for its end. */ -! if (cur_si->si_flags & HL_EXTEND) -! had_extend = TRUE; - - pop_current_state(); - ---- 2588,2594 ---- - - /* When the ended item has "extend", another item with - * "keepend" now needs to check for its end. */ -! had_extend = (cur_si->si_flags & HL_EXTEND); - - pop_current_state(); - -*** ../vim-7.3.204/src/version.c 2011-05-25 17:29:40.000000000 +0200 ---- src/version.c 2011-05-25 17:52:57.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 205, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -110. You actually volunteer to become your employer's webmaster. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.206 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.206 -Problem: 64bit MS-Windows compiler warning. -Solution: Use HandleToLong() instead of type cast. (Mike Williams) -Files: src/gui_w32.c - - -*** ../mercurial/vim73/src/gui_w32.c 2011-01-17 20:08:04.000000000 +0100 ---- src/gui_w32.c 2011-05-25 21:14:10.000000000 +0200 -*************** -*** 1575,1581 **** - - #ifdef FEAT_EVAL - /* set the v:windowid variable */ -! set_vim_var_nr(VV_WINDOWID, (long)s_hwnd); - #endif - - theend: ---- 1575,1581 ---- - - #ifdef FEAT_EVAL - /* set the v:windowid variable */ -! set_vim_var_nr(VV_WINDOWID, HandleToLong(s_hwnd)); - #endif - - theend: -*** ../vim-7.3.205/src/version.c 2011-05-25 17:56:23.000000000 +0200 ---- src/version.c 2011-05-25 21:16:17.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 206, - /**/ - --- -FIXME and XXX are two common keywords used to mark broken or incomplete code -not only since XXX as a sex reference would grab everybody's attention but -simply due to the fact that Vim would highlight these words. - -- Hendrik Scholz - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.207 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.207 -Problem: Can't compile with MSVC with pentium4 and 64 bit. -Solution: Only use SSE2 for 32 bit. (Mike Williams) -Files: src/Make_mvc.mak - - -*** ../mercurial/vim73/src/Make_mvc.mak 2011-02-15 18:06:11.000000000 +0100 ---- src/Make_mvc.mak 2011-06-04 11:59:38.000000000 +0200 -*************** -*** 409,416 **** - CPUARG = - !endif - !else -! # VC8/9 only allows specifying SSE architecture -! !if "$(CPUNR)" == "pentium4" - CPUARG = /arch:SSE2 - !endif - !endif ---- 409,416 ---- - CPUARG = - !endif - !else -! # VC8/9/10 only allows specifying SSE architecture but only for 32bit -! !if "$(ASSEMBLY_ARCHITECTURE)" == "x86" && "$(CPUNR)" == "pentium4" - CPUARG = /arch:SSE2 - !endif - !endif -*** ../vim-7.3.206/src/version.c 2011-05-25 21:18:02.000000000 +0200 ---- src/version.c 2011-06-12 20:30:30.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 207, - /**/ - --- -"The question of whether computers can think is just like the question -of whether submarines can swim." -- Edsger W. Dijkstra - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.208 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.208 -Problem: Early terminated if statement. -Solution: Remove the semicolon. (Lech Lorens) -Files: src/gui_mac.c - - -*** ../mercurial/vim73/src/gui_mac.c 2011-01-17 20:08:04.000000000 +0100 ---- src/gui_mac.c 2011-06-06 05:35:46.000000000 +0200 -*************** -*** 1840,1846 **** - p.v -= gui.scrollbar_height; - p.v -= p.v % gui.char_height; - p.v += 2 * gui.border_width; -! if (gui.which_scrollbars[SBAR_BOTTOM]); - p.v += gui.scrollbar_height; - - ZoomWindowIdeal(whichWindow, thePart, &p); ---- 1840,1846 ---- - p.v -= gui.scrollbar_height; - p.v -= p.v % gui.char_height; - p.v += 2 * gui.border_width; -! if (gui.which_scrollbars[SBAR_BOTTOM]) - p.v += gui.scrollbar_height; - - ZoomWindowIdeal(whichWindow, thePart, &p); -*** ../vim-7.3.207/src/version.c 2011-06-12 20:31:25.000000000 +0200 ---- src/version.c 2011-06-12 20:33:00.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 208, - /**/ - --- -Keep America beautiful. Swallow your beer cans. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.209 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.209 -Problem: MSVC Install instructions point to wrong batch file. -Solution: Add a batch file for use with MSVC 10. -Files: src/msvc2010.bat, src/INSTALLpc.txt, Filelist - - -*** ../mercurial/vim73/src/msvc2010.bat 2011-06-12 20:35:31.000000000 +0200 ---- src/msvc2010.bat 2011-06-09 05:08:35.000000000 +0200 -*************** -*** 0 **** ---- 1,7 ---- -+ @echo off -+ rem To be used on MS-Windows for Visual C++ 2010 Express Edition -+ rem aka Microsoft Visual Studio 10.0. -+ rem See INSTALLpc.txt for information. -+ @echo on -+ -+ call "%VS100COMNTOOLS%%vsvars32.bat" -*** ../mercurial/vim73/src/INSTALLpc.txt 2010-08-16 21:23:30.000000000 +0200 ---- src/INSTALLpc.txt 2011-06-08 06:47:46.000000000 +0200 -*************** -*** 28,35 **** - 9. MS-DOS - - The currently preferred method is using the free Visual C++ Toolkit 2008 -! |msvc-2008-express|. If you need the executable to run on Windows 98 or ME, -! use the 2003 one |msvc-2003-toolkit|. - - - 1. Microsoft Visual C++ ---- 28,36 ---- - 9. MS-DOS - - The currently preferred method is using the free Visual C++ Toolkit 2008 -! |msvc-2008-express|, the produced binary runs on most MS-Windows systems. If -! you need the executable to run on Windows 98 or ME, use the 2003 one -! |msvc-2003-toolkit|. - - - 1. Microsoft Visual C++ -*************** -*** 176,182 **** - http://www.microsoft.com/express/vc/Default.aspx - This includes the IDE and the debugger. - -! To set the environment execute the msvc2008.bat script. You can then build - Vim with Make_mvc.mak. - - ---- 177,183 ---- - http://www.microsoft.com/express/vc/Default.aspx - This includes the IDE and the debugger. - -! To set the environment execute the msvc2010.bat script. You can then build - Vim with Make_mvc.mak. - - -*** ../mercurial/vim73/Filelist 2011-05-19 13:40:47.000000000 +0200 ---- Filelist 2011-06-09 05:17:25.000000000 +0200 -*************** -*** 262,267 **** ---- 262,268 ---- - src/bigvim.bat \ - src/msvcsetup.bat \ - src/msvc2008.bat \ -+ src/msvc2010.bat \ - src/dimm.idl \ - src/dlldata.c \ - src/dosinst.c \ -*** ../vim-7.3.208/src/version.c 2011-06-12 20:33:30.000000000 +0200 ---- src/version.c 2011-06-12 20:34:44.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 209, - /**/ - --- -"Hit any key to continue" is a lie. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.210 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.210 -Problem: Can't always find the file when using cscope. -Solution: Add the 'cscoperelative' option. (Raghavendra D Prabhu) -Files: runtime/doc/if_cscop.txt, runtime/doc/options.txt, - src/if_cscope.c, src/options.c, src/options.h - - -*** ../mercurial/vim73/runtime/doc/if_cscop.txt 2010-09-30 21:38:08.000000000 +0200 ---- runtime/doc/if_cscop.txt 2011-06-12 19:54:26.000000000 +0200 -*************** -*** 271,276 **** ---- 271,285 ---- - :set cst - :set nocst - < -+ *cscoperelative* *csre* -+ If 'cscoperelative' set, then in absence of a prefix given to cscope (prefx -+ is the argument to -P option of cscope), basename of cscope.out location -+ (usually the project root directory) will be used as the prefix to construt -+ absolute path.The default is off. Note: This option is only effective when -+ cscope (cscopeprg) is initialized without a prefix path (-P). Examples: > -+ :set csre -+ :set nocsre -+ < - *cscopetagorder* *csto* - The value of 'csto' determines the order in which |:cstag| performs a search. - If 'csto' is set to zero, cscope database(s) are searched first, followed -*** ../mercurial/vim73/runtime/doc/options.txt 2011-05-19 12:22:41.000000000 +0200 ---- runtime/doc/options.txt 2011-06-12 20:00:10.000000000 +0200 -*************** -*** 2209,2214 **** ---- 2209,2224 ---- - Specifies whether to use quickfix window to show cscope results. - See |cscopequickfix|. - -+ *'cscoperelative'* *'csre'* -+ 'cscoperelative' 'csre' boolean (default off) -+ global -+ {not available when compiled without the |+cscope| -+ feature} -+ {not in Vi} -+ In the absence of a prefix (-P) for cscope. setting this option enables -+ to use the basename of cscope.out path as the prefix. -+ See |cscoperelative|. -+ - *'cscopetag'* *'cst'* *'nocscopetag'* *'nocst'* - 'cscopetag' 'cst' boolean (default off) - global -*** ../mercurial/vim73/src/if_cscope.c 2011-05-05 16:41:19.000000000 +0200 ---- src/if_cscope.c 2011-06-12 20:25:17.000000000 +0200 -*************** -*** 2471,2512 **** - */ - static char * - cs_resolve_file(i, name) -! int i; - char *name; - { -! char *fullname; -! int len; - - /* -! * ppath is freed when we destroy the cscope connection. -! * fullname is freed after cs_make_vim_style_matches, after it's been -! * copied into the tag buffer used by vim - */ - len = (int)(strlen(name) + 2); - if (csinfo[i].ppath != NULL) - len += (int)strlen(csinfo[i].ppath); - - if ((fullname = (char *)alloc(len)) == NULL) - return NULL; - -! /* -! * note/example: this won't work if the cscope output already starts - * "../.." and the prefix path is also "../..". if something like this -! * happens, you are screwed up and need to fix how you're using cscope. -! */ -! if (csinfo[i].ppath != NULL && -! (strncmp(name, csinfo[i].ppath, strlen(csinfo[i].ppath)) != 0) && -! (name[0] != '/') - #ifdef WIN32 -! && name[0] != '\\' && name[1] != ':' - #endif -! ) - (void)sprintf(fullname, "%s/%s", csinfo[i].ppath, name); - else - (void)sprintf(fullname, "%s", name); - - return fullname; -! } /* cs_resolve_file */ - - - /* ---- 2471,2531 ---- - */ - static char * - cs_resolve_file(i, name) -! int i; - char *name; - { -! char *fullname; -! int len; -! char_u *csdir = NULL; - - /* -! * Ppath is freed when we destroy the cscope connection. -! * Fullname is freed after cs_make_vim_style_matches, after it's been -! * copied into the tag buffer used by Vim. - */ - len = (int)(strlen(name) + 2); - if (csinfo[i].ppath != NULL) - len += (int)strlen(csinfo[i].ppath); -+ else if (p_csre && csinfo[i].fname != NULL) -+ { -+ /* If 'cscoperelative' is set and ppath is not set, use cscope.out -+ * path in path resolution. */ -+ csdir = alloc(MAXPATHL); -+ if (csdir != NULL) -+ { -+ vim_strncpy(csdir, (char_u *)csinfo[i].fname, -+ gettail((char_u *)csinfo[i].fname) - 1 - (char_u *)csinfo[i].fname); -+ len += (int)STRLEN(csdir); -+ } -+ } - - if ((fullname = (char *)alloc(len)) == NULL) - return NULL; - -! /* Note/example: this won't work if the cscope output already starts - * "../.." and the prefix path is also "../..". if something like this -! * happens, you are screwed up and need to fix how you're using cscope. */ -! if (csinfo[i].ppath != NULL -! && (strncmp(name, csinfo[i].ppath, strlen(csinfo[i].ppath)) != 0) -! && (name[0] != '/') - #ifdef WIN32 -! && name[0] != '\\' && name[1] != ':' - #endif -! ) - (void)sprintf(fullname, "%s/%s", csinfo[i].ppath, name); -+ else if (csdir != NULL && csinfo[i].fname != NULL && STRLEN(csdir) > 0) -+ { -+ /* Check for csdir to be non empty to avoid empty path concatenated to -+ * cscope output. TODO: avoid the unnecessary alloc/free of fullname. */ -+ vim_free(fullname); -+ fullname = concat_fnames(csdir, (char_u *)name, TRUE); -+ } - else - (void)sprintf(fullname, "%s", name); - -+ vim_free(csdir); - return fullname; -! } - - - /* -*** ../vim-7.3.209/src/version.c 2011-06-12 20:36:00.000000000 +0200 ---- src/version.c 2011-06-12 20:37:48.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 210, - /**/ - --- -Apathy Error: Don't bother striking any key. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.211 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.211 (after 7.3.210) -Problem: Compiler warning. -Solution: Add type cast. -Files: src/if_cscope.c - - -*** ../mercurial/vim73/src/if_cscope.c 2011-06-12 20:42:17.000000000 +0200 ---- src/if_cscope.c 2011-06-12 21:22:53.000000000 +0200 -*************** -*** 2518,2524 **** - /* Check for csdir to be non empty to avoid empty path concatenated to - * cscope output. TODO: avoid the unnecessary alloc/free of fullname. */ - vim_free(fullname); -! fullname = concat_fnames(csdir, (char_u *)name, TRUE); - } - else - (void)sprintf(fullname, "%s", name); ---- 2518,2524 ---- - /* Check for csdir to be non empty to avoid empty path concatenated to - * cscope output. TODO: avoid the unnecessary alloc/free of fullname. */ - vim_free(fullname); -! fullname = (char *)concat_fnames(csdir, (char_u *)name, TRUE); - } - else - (void)sprintf(fullname, "%s", name); -*** ../vim-7.3.210/src/version.c 2011-06-12 20:42:17.000000000 +0200 ---- src/version.c 2011-06-12 21:24:03.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 211, - /**/ - --- -Did you ever see a "Hit any key to continue" message in a music piece? - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.212 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.212 -Problem: With Python 3.2 ":py3" fails. -Solution: Move PyEval_InitThreads() to after Py_Initialize(). (Roland - Puntaier) Check abiflags in configure. (Andreas Behr) -Files: src/if_python3.c, src/auto/configure, src/configure.in - - -*** ../mercurial/vim73/src/if_python3.c 2011-02-25 15:18:46.000000000 +0100 ---- src/if_python3.c 2011-06-11 04:24:49.000000000 +0200 -*************** -*** 547,560 **** - Py_SetPythonHome(PYTHON3_HOME); - #endif - -- /* initialise threads */ -- PyEval_InitThreads(); -- - #if !defined(MACOS) || defined(MACOS_X_UNIX) - Py_Initialize(); - #else - PyMac_Initialize(); - #endif - - #ifdef DYNAMIC_PYTHON3 - get_py3_exceptions(); ---- 547,559 ---- - Py_SetPythonHome(PYTHON3_HOME); - #endif - - #if !defined(MACOS) || defined(MACOS_X_UNIX) - Py_Initialize(); - #else - PyMac_Initialize(); - #endif -+ /* initialise threads, must be after Py_Initialize() */ -+ PyEval_InitThreads(); - - #ifdef DYNAMIC_PYTHON3 - get_py3_exceptions(); -*** ../mercurial/vim73/src/auto/configure 2011-05-10 15:41:59.000000000 +0200 ---- src/auto/configure 2011-06-12 21:33:16.000000000 +0200 -*************** -*** 5505,5510 **** ---- 5505,5527 ---- - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_var_python3_version" >&5 - $as_echo "$vi_cv_var_python3_version" >&6; } - -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python's abiflags" >&5 -+ $as_echo_n "checking Python's abiflags... " >&6; } -+ if test "${vi_cv_var_python3_abiflags+set}" = set; then : -+ $as_echo_n "(cached) " >&6 -+ else -+ -+ vi_cv_var_python3_abiflags= -+ if ${vi_cv_path_python3} -c \ -+ "import sys; sys.exit(${vi_cv_var_python3_version} < 3.2)" -+ then -+ vi_cv_var_python3_abiflags=`${vi_cv_path_python3} -c \ -+ "import sys; print(sys.abiflags)"` -+ fi -+ fi -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_var_python3_abiflags" >&5 -+ $as_echo "$vi_cv_var_python3_abiflags" >&6; } -+ - { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python's install prefix" >&5 - $as_echo_n "checking Python's install prefix... " >&6; } - if test "${vi_cv_path_python3_pfx+set}" = set; then : -*************** -*** 5555,5563 **** - else - - vi_cv_path_python3_conf= - for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do - for subdir in lib64 lib share; do -! d="${path}/${subdir}/python${vi_cv_var_python3_version}/config" - if test -d "$d" && test -f "$d/config.c"; then - vi_cv_path_python3_conf="$d" - fi ---- 5572,5584 ---- - else - - vi_cv_path_python3_conf= -+ config_dir="config" -+ if test "${vi_cv_var_python3_abiflags}" != ""; then -+ config_dir="${config_dir}-${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}" -+ fi - for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do - for subdir in lib64 lib share; do -! d="${path}/${subdir}/python${vi_cv_var_python3_version}/${config_dir}" - if test -d "$d" && test -f "$d/config.c"; then - vi_cv_path_python3_conf="$d" - fi -*************** -*** 5592,5598 **** - eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`" - rm -f -- "${tmp_mkf}" - vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}" -! vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS} ${python3_LINKFORSHARED}" - vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//` - vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//` - ---- 5613,5619 ---- - eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`" - rm -f -- "${tmp_mkf}" - vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}" -! vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}" - vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//` - vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//` - -*************** -*** 5601,5609 **** - - PYTHON3_LIBS="${vi_cv_path_python3_plibs}" - if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then -! PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\"" - else -! PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\"" - fi - PYTHON3_SRC="if_python3.c" - if test "x$MACOSX" = "xyes"; then ---- 5622,5630 ---- - - PYTHON3_LIBS="${vi_cv_path_python3_plibs}" - if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then -! PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\"" - else -! PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\"" - fi - PYTHON3_SRC="if_python3.c" - if test "x$MACOSX" = "xyes"; then -*** ../mercurial/vim73/src/configure.in 2011-05-10 15:41:59.000000000 +0200 ---- src/configure.in 2011-06-12 21:31:18.000000000 +0200 -*************** -*** 992,997 **** ---- 992,1008 ---- - ${vi_cv_path_python3} -c 'import sys; print(sys.version[:3])'` - ]]) - -+ dnl -- get abiflags for python 3.2 or higher (PEP 3149) -+ AC_CACHE_CHECK(Python's abiflags,vi_cv_var_python3_abiflags, -+ [ -+ vi_cv_var_python3_abiflags= -+ if ${vi_cv_path_python3} -c \ -+ "import sys; sys.exit(${vi_cv_var_python3_version} < 3.2)" -+ then -+ vi_cv_var_python3_abiflags=`${vi_cv_path_python3} -c \ -+ "import sys; print(sys.abiflags)"` -+ fi ]) -+ - dnl -- find where python3 thinks it was installed - AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python3_pfx, - [ vi_cv_path_python3_pfx=` -*************** -*** 1021,1029 **** - AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python3_conf, - [ - vi_cv_path_python3_conf= - for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do - for subdir in lib64 lib share; do -! d="${path}/${subdir}/python${vi_cv_var_python3_version}/config" - if test -d "$d" && test -f "$d/config.c"; then - vi_cv_path_python3_conf="$d" - fi ---- 1032,1044 ---- - AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python3_conf, - [ - vi_cv_path_python3_conf= -+ config_dir="config" -+ if test "${vi_cv_var_python3_abiflags}" != ""; then -+ config_dir="${config_dir}-${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}" -+ fi - for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do - for subdir in lib64 lib share; do -! d="${path}/${subdir}/python${vi_cv_var_python3_version}/${config_dir}" - if test -d "$d" && test -f "$d/config.c"; then - vi_cv_path_python3_conf="$d" - fi -*************** -*** 1055,1061 **** - eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`" - rm -f -- "${tmp_mkf}" - vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}" -! vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS} ${python3_LINKFORSHARED}" - dnl remove -ltermcap, it can conflict with an earlier -lncurses - vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//` - vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//` ---- 1070,1076 ---- - eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`" - rm -f -- "${tmp_mkf}" - vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}" -! vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}" - dnl remove -ltermcap, it can conflict with an earlier -lncurses - vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//` - vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//` -*************** -*** 1063,1071 **** - - PYTHON3_LIBS="${vi_cv_path_python3_plibs}" - if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then -! PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\"" - else -! PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\"" - fi - PYTHON3_SRC="if_python3.c" - dnl For Mac OSX 10.2 config.o is included in the Python library. ---- 1078,1086 ---- - - PYTHON3_LIBS="${vi_cv_path_python3_plibs}" - if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then -! PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\"" - else -! PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\"" - fi - PYTHON3_SRC="if_python3.c" - dnl For Mac OSX 10.2 config.o is included in the Python library. -*** ../vim-7.3.211/src/version.c 2011-06-12 21:24:56.000000000 +0200 ---- src/version.c 2011-06-12 21:35:31.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 212, - /**/ - --- -In Joseph Heller's novel "Catch-22", the main character tries to get out of a -war by proving he is crazy. But the mere fact he wants to get out of the war -only shows he isn't crazy -- creating the original "Catch-22". - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.213 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.213 -Problem: Javascript object literal is not indented correctly. -Solution: Make a special case for when "J1" is in 'cino'. (Luc Deschenaux) -Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok - - -*** ../mercurial/vim73/src/misc1.c 2011-05-25 17:29:40.000000000 +0200 ---- src/misc1.c 2011-06-10 04:58:10.000000000 +0200 -*************** -*** 6965,6971 **** - * ldfd) { - * } - */ -! if ((ind_keep_case_label - && cin_iscase(skipwhite(ml_get_curline()), FALSE))) - amount = get_indent(); - else ---- 6965,6971 ---- - * ldfd) { - * } - */ -! if (ind_js || (ind_keep_case_label - && cin_iscase(skipwhite(ml_get_curline()), FALSE))) - amount = get_indent(); - else -*** ../mercurial/vim73/src/testdir/test3.in 2011-05-25 15:16:06.000000000 +0200 ---- src/testdir/test3.in 2011-06-12 21:44:12.000000000 +0200 -*************** -*** 1492,1501 **** - - STARTTEST - :set cino=N-s -! /namespaces - =/^NAMESPACEEND - ENDTEST - - /* valid namespaces with normal indent */ - namespace - { ---- 1492,1502 ---- - - STARTTEST - :set cino=N-s -! /^NAMESPACESTART - =/^NAMESPACEEND - ENDTEST - -+ NAMESPACESTART - /* valid namespaces with normal indent */ - namespace - { -*************** -*** 1561,1566 **** ---- 1562,1588 ---- - - - STARTTEST -+ :set cino=J1 -+ /^JSSTART -+ =/^JSEND -+ ENDTEST -+ -+ JSSTART -+ var bar = { -+ foo: { -+ that: this, -+ some: ok, -+ }, -+ "bar":{ -+ a : 2, -+ b: "123abc", -+ x: 4, -+ "y": 5 -+ } -+ } -+ JSEND -+ -+ STARTTEST - :g/^STARTTEST/.,/^ENDTEST/d - :1;/start of AUTO/,$wq! test.out - ENDTEST -*** ../mercurial/vim73/src/testdir/test3.ok 2011-05-25 15:16:06.000000000 +0200 ---- src/testdir/test3.ok 2011-06-12 21:44:26.000000000 +0200 -*************** -*** 1337,1342 **** ---- 1337,1343 ---- - } - - -+ NAMESPACESTART - /* valid namespaces with normal indent */ - namespace - { -*************** -*** 1401,1403 **** ---- 1402,1420 ---- - NAMESPACEEND - - -+ -+ JSSTART -+ var bar = { -+ foo: { -+ that: this, -+ some: ok, -+ }, -+ "bar":{ -+ a : 2, -+ b: "123abc", -+ x: 4, -+ "y": 5 -+ } -+ } -+ JSEND -+ -*** ../vim-7.3.212/src/version.c 2011-06-12 21:37:06.000000000 +0200 ---- src/version.c 2011-06-12 21:48:34.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 213, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -169. You hire a housekeeper for your home page. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.214 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.214 -Problem: The text displayed by ":z-" isn't exactly like old Vi. -Solution: Add one to the start line number. (ChangZhuo Chen) -Files: src/ex_cmds.c - - -*** ../mercurial/vim73/src/ex_cmds.c 2011-05-19 14:30:07.000000000 +0200 ---- src/ex_cmds.c 2011-05-19 14:23:33.000000000 +0200 -*************** -*** 4097,4104 **** - switch (*kind) - { - case '-': -! start = lnum - bigness * (linenr_T)(x - kind); -! end = start + bigness; - curs = end; - break; - ---- 4097,4104 ---- - switch (*kind) - { - case '-': -! start = lnum - bigness * (linenr_T)(x - kind) + 1; -! end = start + bigness - 1; - curs = end; - break; - -*** ../vim-7.3.213/src/version.c 2011-06-12 21:51:01.000000000 +0200 ---- src/version.c 2011-06-12 22:02:20.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 214, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -170. You introduce your wife as "my_lady@home.wife" and refer to your - children as "forked processes." - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.215 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.215 (after 7.3.210) -Problem: Wrong file names in previous patch. (Toothpik) -Solution: Include the option changes. -Files: src/option.c, src/option.h - - -*** ../mercurial/vim73/src/option.c 2011-05-19 13:40:47.000000000 +0200 ---- src/option.c 2011-06-12 19:58:17.000000000 +0200 -*************** -*** 901,906 **** ---- 901,913 ---- - {(char_u *)0L, (char_u *)0L} - #endif - SCRIPTID_INIT}, -+ {"cscoperelative", "csre", P_BOOL|P_VI_DEF|P_VIM, -+ #ifdef FEAT_CSCOPE -+ (char_u *)&p_csre, PV_NONE, -+ #else -+ (char_u *)NULL, PV_NONE, -+ #endif -+ {(char_u *)0L, (char_u *)0L} SCRIPTID_INIT}, - {"cscopetag", "cst", P_BOOL|P_VI_DEF|P_VIM, - #ifdef FEAT_CSCOPE - (char_u *)&p_cst, PV_NONE, -*** ../mercurial/vim73/src/option.h 2011-05-19 13:40:47.000000000 +0200 ---- src/option.h 2011-06-12 19:58:49.000000000 +0200 -*************** -*** 391,396 **** ---- 391,397 ---- - EXTERN char_u *p_cpo; /* 'cpoptions' */ - #ifdef FEAT_CSCOPE - EXTERN char_u *p_csprg; /* 'cscopeprg' */ -+ EXTERN int p_csre; /* 'cscoperelative' */ - # ifdef FEAT_QUICKFIX - EXTERN char_u *p_csqf; /* 'cscopequickfix' */ - # define CSQF_CMDS "sgdctefi" -*** ../vim-7.3.214/src/version.c 2011-06-12 22:03:15.000000000 +0200 ---- src/version.c 2011-06-12 22:12:34.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 215, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -171. You invent another person and chat with yourself in empty chat rooms. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.216 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.216 -Problem: When recovering a file a range of lines is missing. (Charles Jie) -Solution: Reset the index when advancing to the next pointer block. Add a - test to verify recovery works. -Files: src/memline.c, src/testdir/test78.in, src/testdir/test78.ok, - src/testdir/Makefile, src/testdir/Make_amiga.mak, - src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, - src/testdir/Make_os2.mak, src/testdir/Make_vms.mms - - -*** ../mercurial/vim73/src/memline.c 2011-05-10 16:41:13.000000000 +0200 ---- src/memline.c 2011-06-13 00:56:09.000000000 +0200 -*************** -*** 1507,1512 **** ---- 1507,1513 ---- - bnum = pp->pb_pointer[idx].pe_bnum; - line_count = pp->pb_pointer[idx].pe_line_count; - page_count = pp->pb_pointer[idx].pe_page_count; -+ idx = 0; - continue; - } - } -*** ../mercurial/vim73/src/testdir/test78.in 2011-06-13 01:05:54.000000000 +0200 ---- src/testdir/test78.in 2011-06-13 00:54:48.000000000 +0200 -*************** -*** 0 **** ---- 1,46 ---- -+ Inserts 10000 lines with text to fill the swap file with two levels of pointer -+ blocks. Then recovers from the swap file and checks all text is restored. -+ -+ We need about 10000 lines of 100 characters to get two levels of pointer -+ blocks. -+ -+ STARTTEST -+ :so small.vim -+ :set nocp fileformat=unix undolevels=-1 -+ :e! Xtest -+ ggdG -+ :let text = "\tabcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoparstuvwxyz0123456789" -+ :let i = 1 -+ :let linecount = 10000 -+ :while i <= linecount | call append(i - 1, i . text) | let i += 1 | endwhile -+ :preserve -+ :" get the name of the swap file -+ :redir => swapname -+ :swapname -+ :redir END -+ :let swapname = substitute(swapname, '[[:blank:][:cntrl:]]*\(.\{-}\)[[:blank:][:cntrl:]]*$', '\1', '') -+ :" make a copy of the swap file in Xswap -+ :set bin -+ :exe 'sp ' . swapname -+ :w! Xswap -+ :echo swapname -+ :set nobin -+ :new -+ :only! -+ :bwipe! Xtest -+ :call rename('Xswap', swapname) -+ :recover Xtest -+ :call delete(swapname) -+ :new -+ :call append(0, 'recovery start') -+ :wincmd w -+ :let linedollar = line('$') -+ :if linedollar < linecount | exe 'wincmd w' | call append(line('$'), "expected " . linecount . " lines but found only " . linedollar) | exe 'wincmd w' | let linecount = linedollar | endif -+ :let i = 1 -+ :while i <= linecount | if getline(i) != i . text | exe 'wincmd w' | call append(line('$'), i . ' differs') | exe 'wincmd w' | endif | let i += 1 | endwhile -+ :q! -+ :call append(line('$'), 'recovery end') -+ :w! test.out -+ :qa! -+ ENDTEST -+ -*** ../mercurial/vim73/src/testdir/test78.ok 2011-06-13 01:05:54.000000000 +0200 ---- src/testdir/test78.ok 2011-06-13 00:25:05.000000000 +0200 -*************** -*** 0 **** ---- 1,3 ---- -+ recovery start -+ -+ recovery end -*** ../mercurial/vim73/src/testdir/Makefile 2011-03-22 18:10:34.000000000 +0100 ---- src/testdir/Makefile 2011-06-13 00:35:46.000000000 +0200 -*************** -*** 25,31 **** - test59.out test60.out test61.out test62.out test63.out \ - test64.out test65.out test66.out test67.out test68.out \ - test69.out test70.out test71.out test72.out test73.out \ -! test74.out test75.out test76.out test77.out - - SCRIPTS_GUI = test16.out - ---- 25,31 ---- - test59.out test60.out test61.out test62.out test63.out \ - test64.out test65.out test66.out test67.out test68.out \ - test69.out test70.out test71.out test72.out test73.out \ -! test74.out test75.out test76.out test77.out test78.out - - SCRIPTS_GUI = test16.out - -*************** -*** 71,77 **** - fi \ - else echo $* NO OUTPUT >>test.log; \ - fi" -! # -rm -rf X* test.ok viminfo - - test49.out: test49.vim - ---- 71,77 ---- - fi \ - else echo $* NO OUTPUT >>test.log; \ - fi" -! -rm -rf X* test.ok viminfo - - test49.out: test49.vim - -*** ../mercurial/vim73/src/testdir/Make_amiga.mak 2011-03-22 18:10:34.000000000 +0100 ---- src/testdir/Make_amiga.mak 2011-06-13 01:00:42.000000000 +0200 -*************** -*** 28,34 **** - test61.out test62.out test63.out test64.out test65.out \ - test66.out test67.out test68.out test69.out test70.out \ - test71.out test72.out test73.out test74.out test75.out \ -! test76.out test77.out - - .SUFFIXES: .in .out - ---- 28,34 ---- - test61.out test62.out test63.out test64.out test65.out \ - test66.out test67.out test68.out test69.out test70.out \ - test71.out test72.out test73.out test74.out test75.out \ -! test76.out test77.out test78.out - - .SUFFIXES: .in .out - -*************** -*** 125,127 **** ---- 125,128 ---- - test75.out: test75.in - test76.out: test76.in - test77.out: test77.in -+ test78.out: test78.in -*** ../mercurial/vim73/src/testdir/Make_dos.mak 2011-03-22 18:10:34.000000000 +0100 ---- src/testdir/Make_dos.mak 2011-06-13 01:00:55.000000000 +0200 -*************** -*** 28,34 **** - test37.out test38.out test39.out test40.out test41.out \ - test42.out test52.out test65.out test66.out test67.out \ - test68.out test69.out test71.out test72.out test73.out \ -! test74.out test75.out test76.out test77.out - - SCRIPTS32 = test50.out test70.out - ---- 28,34 ---- - test37.out test38.out test39.out test40.out test41.out \ - test42.out test52.out test65.out test66.out test67.out \ - test68.out test69.out test71.out test72.out test73.out \ -! test74.out test75.out test76.out test77.out test78.out - - SCRIPTS32 = test50.out test70.out - -*** ../mercurial/vim73/src/testdir/Make_ming.mak 2011-03-22 18:10:34.000000000 +0100 ---- src/testdir/Make_ming.mak 2011-06-13 01:01:02.000000000 +0200 -*************** -*** 48,54 **** - test37.out test38.out test39.out test40.out test41.out \ - test42.out test52.out test65.out test66.out test67.out \ - test68.out test69.out test71.out test72.out test73.out \ -! test74.out test75.out test76.out test77.out - - SCRIPTS32 = test50.out test70.out - ---- 48,54 ---- - test37.out test38.out test39.out test40.out test41.out \ - test42.out test52.out test65.out test66.out test67.out \ - test68.out test69.out test71.out test72.out test73.out \ -! test74.out test75.out test76.out test77.out test78.out - - SCRIPTS32 = test50.out test70.out - -*** ../mercurial/vim73/src/testdir/Make_os2.mak 2011-03-22 18:10:34.000000000 +0100 ---- src/testdir/Make_os2.mak 2011-06-13 01:01:08.000000000 +0200 -*************** -*** 28,34 **** - test61.out test62.out test63.out test64.out test65.out \ - test66.out test67.out test68.out test69.out test70.out \ - test71.out test72.out test73.out test74.out test75.out \ -! test76.out test77.out - - .SUFFIXES: .in .out - ---- 28,34 ---- - test61.out test62.out test63.out test64.out test65.out \ - test66.out test67.out test68.out test69.out test70.out \ - test71.out test72.out test73.out test74.out test75.out \ -! test76.out test77.out test78.out - - .SUFFIXES: .in .out - -*** ../mercurial/vim73/src/testdir/Make_vms.mms 2011-04-28 19:05:01.000000000 +0200 ---- src/testdir/Make_vms.mms 2011-06-13 01:01:29.000000000 +0200 -*************** -*** 4,10 **** - # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> - # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> - # -! # Last change: 2011 Mar 03 - # - # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. - # Edit the lines in the Configuration section below to select. ---- 4,10 ---- - # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> - # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> - # -! # Last change: 2011 Jun 13 - # - # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. - # Edit the lines in the Configuration section below to select. -*************** -*** 75,81 **** - test61.out test62.out test63.out test64.out test65.out \ - test66.out test67.out test68.out test69.out \ - test71.out test72.out test74.out test75.out test76.out \ -! test77.out - - # Known problems: - # Test 30: a problem around mac format - unknown reason ---- 75,81 ---- - test61.out test62.out test63.out test64.out test65.out \ - test66.out test67.out test68.out test69.out \ - test71.out test72.out test74.out test75.out test76.out \ -! test77.out test78.out - - # Known problems: - # Test 30: a problem around mac format - unknown reason -*** ../vim-7.3.215/src/version.c 2011-06-12 22:13:37.000000000 +0200 ---- src/version.c 2011-06-13 00:59:02.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 216, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -172. You join listservers just for the extra e-mail. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.217 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.217 -Problem: Inside an "if" a ":wincmd" causes problems. -Solution: When skipping commands let ":wincmd" skip over its argument. -Files: src/ex_docmd.c - - -*** ../mercurial/vim73/src/ex_docmd.c 2011-05-25 12:51:17.000000000 +0200 ---- src/ex_docmd.c 2011-06-13 01:15:17.000000000 +0200 -*************** -*** 2595,2600 **** ---- 2595,2601 ---- - case CMD_unlet: - case CMD_verbose: - case CMD_vertical: -+ case CMD_wincmd: - break; - - default: goto doend; -*************** -*** 8237,8243 **** - p = skipwhite(p); - if (*p != NUL && *p != '"' && eap->nextcmd == NULL) - EMSG(_(e_invarg)); -! else - { - /* Pass flags on for ":vertical wincmd ]". */ - postponed_split_flags = cmdmod.split; ---- 8238,8244 ---- - p = skipwhite(p); - if (*p != NUL && *p != '"' && eap->nextcmd == NULL) - EMSG(_(e_invarg)); -! else if (!eap->skip) - { - /* Pass flags on for ":vertical wincmd ]". */ - postponed_split_flags = cmdmod.split; -*** ../vim-7.3.216/src/version.c 2011-06-13 01:07:22.000000000 +0200 ---- src/version.c 2011-06-13 01:18:48.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 217, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -173. You keep tracking down the email addresses of all your friends - (even childhood friends). - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.218 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.218 (after 7.3.212) -Problem: Tiny configuration problem with Python 3. -Solution: Add abiflags in one more place. (Andreas Behr) -Files: src/auto/configure, src/configure.in - - -*** ../mercurial/vim73/src/auto/configure 2011-06-12 21:37:06.000000000 +0200 ---- src/auto/configure 2011-06-13 01:26:50.000000000 +0200 -*************** -*** 5607,5613 **** - @echo "python3_BASEMODLIBS='$(BASEMODLIBS)'" - @echo "python3_LIBS='$(LIBS)'" - @echo "python3_SYSLIBS='$(SYSLIBS)'" -- @echo "python3_LINKFORSHARED='$(LINKFORSHARED)'" - @echo "python3_INSTSONAME='$(INSTSONAME)'" - eof - eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`" ---- 5607,5612 ---- -*************** -*** 5624,5630 **** - if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then - PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\"" - else -! PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\"" - fi - PYTHON3_SRC="if_python3.c" - if test "x$MACOSX" = "xyes"; then ---- 5623,5629 ---- - if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then - PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\"" - else -! PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\"" - fi - PYTHON3_SRC="if_python3.c" - if test "x$MACOSX" = "xyes"; then -*** ../mercurial/vim73/src/configure.in 2011-06-12 21:37:06.000000000 +0200 ---- src/configure.in 2011-06-13 01:26:35.000000000 +0200 -*************** -*** 1063,1069 **** - @echo "python3_BASEMODLIBS='$(BASEMODLIBS)'" - @echo "python3_LIBS='$(LIBS)'" - @echo "python3_SYSLIBS='$(SYSLIBS)'" -- @echo "python3_LINKFORSHARED='$(LINKFORSHARED)'" - @echo "python3_INSTSONAME='$(INSTSONAME)'" - eof - dnl -- delete the lines from make about Entering/Leaving directory ---- 1063,1068 ---- -*************** -*** 1080,1086 **** - if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then - PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\"" - else -! PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\"" - fi - PYTHON3_SRC="if_python3.c" - dnl For Mac OSX 10.2 config.o is included in the Python library. ---- 1079,1085 ---- - if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then - PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\"" - else -! PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\"" - fi - PYTHON3_SRC="if_python3.c" - dnl For Mac OSX 10.2 config.o is included in the Python library. -*** ../vim-7.3.217/src/version.c 2011-06-13 01:19:48.000000000 +0200 ---- src/version.c 2011-06-13 01:29:42.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 218, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -174. You know what a listserv is. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.219 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.219 -Problem: Can't compile with GTK on Mac. -Solution: Add some #ifdef trickery. (Ben Schmidt) -Files: src/os_mac_conv.c, src/os_macosx.m, src/vim.h - - -*** ../mercurial/vim73/src/os_mac_conv.c 2010-08-16 21:23:30.000000000 +0200 ---- src/os_mac_conv.c 2011-06-13 01:55:17.000000000 +0200 -*************** -*** 14,19 **** ---- 14,21 ---- - */ - - #define NO_X11_INCLUDES -+ #define BalloonEval int /* used in header files */ -+ - #include "vim.h" - #ifndef FEAT_GUI_MAC - # include <CoreServices/CoreServices.h> -*** ../mercurial/vim73/src/os_macosx.m 2010-10-10 17:08:28.000000000 +0200 ---- src/os_macosx.m 2011-06-13 01:58:47.000000000 +0200 -*************** -*** 18,23 **** ---- 18,24 ---- - /* Avoid a conflict for the definition of Boolean between Mac header files and - * X11 header files. */ - #define NO_X11_INCLUDES -+ #define BalloonEval int /* used in header files */ - - #include "vim.h" - #import <Cocoa/Cocoa.h> -*************** -*** 27,35 **** - * Clipboard support for the console. - * Don't include this when building the GUI version, the functions in - * gui_mac.c are used then. TODO: remove those instead? -! * But for MacVim we need these ones. - */ -! #if defined(FEAT_CLIPBOARD) && (!defined(FEAT_GUI) || defined(FEAT_GUI_MACVIM)) - - /* Used to identify clipboard data copied from Vim. */ - ---- 28,36 ---- - * Clipboard support for the console. - * Don't include this when building the GUI version, the functions in - * gui_mac.c are used then. TODO: remove those instead? -! * But for MacVim we do need these ones. - */ -! #if defined(FEAT_CLIPBOARD) && (!defined(FEAT_GUI_ENABLED) || defined(FEAT_GUI_MACVIM)) - - /* Used to identify clipboard data copied from Vim. */ - -*** ../mercurial/vim73/src/vim.h 2011-05-19 18:26:34.000000000 +0200 ---- src/vim.h 2011-06-13 01:57:17.000000000 +0200 -*************** -*** 121,126 **** ---- 121,127 ---- - || defined(FEAT_GUI_W32) \ - || defined(FEAT_GUI_W16) \ - || defined(FEAT_GUI_PHOTON) -+ # define FEAT_GUI_ENABLED /* also defined with NO_X11_INCLUDES */ - # if !defined(FEAT_GUI) && !defined(NO_X11_INCLUDES) - # define FEAT_GUI - # endif -*** ../vim-7.3.218/src/version.c 2011-06-13 01:32:42.000000000 +0200 ---- src/version.c 2011-06-13 02:03:02.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 219, - /**/ - --- -If Microsoft would build a car... -... the oil, water temperature, and alternator warning lights would -all be replaced by a single "General Protection Fault" warning light. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.220 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.220 -Problem: Python 3: vim.error is a 'str' instead of an 'Exception' object, - so 'except' or 'raise' it causes a 'SystemError' exception. - Buffer objects do not support slice assignment. - When exchanging text between Vim and Python, multibyte texts become - gabage or cause Unicode Expceptions, etc. - 'py3file' tries to read in the file as Unicode, sometimes causes - UnicodeDecodeException -Solution: Fix the problems. (lilydjwg) -Files: src/if_py_both.h, src/if_python.c, src/if_python3.c - - -*** ../mercurial/vim73/src/if_py_both.h 2011-03-22 15:47:18.000000000 +0100 ---- src/if_py_both.h 2011-06-18 23:54:25.000000000 +0200 -*************** -*** 65,74 **** - OutputWrite(PyObject *self, PyObject *args) - { - int len; -! char *str; - int error = ((OutputObject *)(self))->error; - -! if (!PyArg_ParseTuple(args, "s#", &str, &len)) - return NULL; - - Py_BEGIN_ALLOW_THREADS ---- 65,74 ---- - OutputWrite(PyObject *self, PyObject *args) - { - int len; -! char *str = NULL; - int error = ((OutputObject *)(self))->error; - -! if (!PyArg_ParseTuple(args, "es#", p_enc, &str, &len)) - return NULL; - - Py_BEGIN_ALLOW_THREADS -*************** -*** 76,81 **** ---- 76,82 ---- - writer((writefn)(error ? emsg : msg), (char_u *)str, len); - Python_Release_Vim(); - Py_END_ALLOW_THREADS -+ PyMem_Free(str); - - Py_INCREF(Py_None); - return Py_None; -*************** -*** 104,113 **** - for (i = 0; i < n; ++i) - { - PyObject *line = PyList_GetItem(list, i); -! char *str; - PyInt len; - -! if (!PyArg_Parse(line, "s#", &str, &len)) { - PyErr_SetString(PyExc_TypeError, _("writelines() requires list of strings")); - Py_DECREF(list); - return NULL; ---- 105,114 ---- - for (i = 0; i < n; ++i) - { - PyObject *line = PyList_GetItem(list, i); -! char *str = NULL; - PyInt len; - -! if (!PyArg_Parse(line, "es#", p_enc, &str, &len)) { - PyErr_SetString(PyExc_TypeError, _("writelines() requires list of strings")); - Py_DECREF(list); - return NULL; -*************** -*** 118,123 **** ---- 119,125 ---- - writer((writefn)(error ? emsg : msg), (char_u *)str, len); - Python_Release_Vim(); - Py_END_ALLOW_THREADS -+ PyMem_Free(str); - } - - Py_DECREF(list); -*************** -*** 681,686 **** ---- 683,689 ---- - { - const char *str; - char *save; -+ PyObject *bytes; - PyInt len; - PyInt i; - char *p; -*************** -*** 691,698 **** - return NULL; - } - -! str = PyString_AsString(obj); -! len = PyString_Size(obj); - - /* - * Error checking: String must not contain newlines, as we ---- 694,702 ---- - return NULL; - } - -! bytes = PyString_AsBytes(obj); /* for Python 2 this does nothing */ -! str = PyString_AsString(bytes); -! len = PyString_Size(bytes); - - /* - * Error checking: String must not contain newlines, as we -*************** -*** 731,736 **** ---- 735,741 ---- - } - - save[i] = '\0'; -+ PyString_FreeBytes(bytes); /* Python 2 does nothing here */ - - return save; - } -*************** -*** 817,823 **** - invalidate_botline(); - } - -! /* Replace a line in the specified buffer. The line number is - * in Vim format (1-based). The replacement line is given as - * a Python string object. The object is checked for validity - * and correct format. Errors are returned as a value of FAIL. ---- 822,829 ---- - invalidate_botline(); - } - -! /* -! * Replace a line in the specified buffer. The line number is - * in Vim format (1-based). The replacement line is given as - * a Python string object. The object is checked for validity - * and correct format. Errors are returned as a value of FAIL. -*************** -*** 908,913 **** ---- 914,1106 ---- - } - } - -+ /* Replace a range of lines in the specified buffer. The line numbers are in -+ * Vim format (1-based). The range is from lo up to, but not including, hi. -+ * The replacement lines are given as a Python list of string objects. The -+ * list is checked for validity and correct format. Errors are returned as a -+ * value of FAIL. The return value is OK on success. -+ * If OK is returned and len_change is not NULL, *len_change -+ * is set to the change in the buffer length. -+ */ -+ static int -+ SetBufferLineList(buf_T *buf, PyInt lo, PyInt hi, PyObject *list, PyInt *len_change) -+ { -+ /* First of all, we check the thpe of the supplied Python object. -+ * There are three cases: -+ * 1. NULL, or None - this is a deletion. -+ * 2. A list - this is a replacement. -+ * 3. Anything else - this is an error. -+ */ -+ if (list == Py_None || list == NULL) -+ { -+ PyInt i; -+ PyInt n = (int)(hi - lo); -+ buf_T *savebuf = curbuf; -+ -+ PyErr_Clear(); -+ curbuf = buf; -+ -+ if (u_savedel((linenr_T)lo, (long)n) == FAIL) -+ PyErr_SetVim(_("cannot save undo information")); -+ else -+ { -+ for (i = 0; i < n; ++i) -+ { -+ if (ml_delete((linenr_T)lo, FALSE) == FAIL) -+ { -+ PyErr_SetVim(_("cannot delete line")); -+ break; -+ } -+ } -+ if (buf == curwin->w_buffer) -+ py_fix_cursor((linenr_T)lo, (linenr_T)hi, (linenr_T)-n); -+ deleted_lines_mark((linenr_T)lo, (long)i); -+ } -+ -+ curbuf = savebuf; -+ -+ if (PyErr_Occurred() || VimErrorCheck()) -+ return FAIL; -+ -+ if (len_change) -+ *len_change = -n; -+ -+ return OK; -+ } -+ else if (PyList_Check(list)) -+ { -+ PyInt i; -+ PyInt new_len = PyList_Size(list); -+ PyInt old_len = hi - lo; -+ PyInt extra = 0; /* lines added to text, can be negative */ -+ char **array; -+ buf_T *savebuf; -+ -+ if (new_len == 0) /* avoid allocating zero bytes */ -+ array = NULL; -+ else -+ { -+ array = (char **)alloc((unsigned)(new_len * sizeof(char *))); -+ if (array == NULL) -+ { -+ PyErr_NoMemory(); -+ return FAIL; -+ } -+ } -+ -+ for (i = 0; i < new_len; ++i) -+ { -+ PyObject *line = PyList_GetItem(list, i); -+ -+ array[i] = StringToLine(line); -+ if (array[i] == NULL) -+ { -+ while (i) -+ vim_free(array[--i]); -+ vim_free(array); -+ return FAIL; -+ } -+ } -+ -+ savebuf = curbuf; -+ -+ PyErr_Clear(); -+ curbuf = buf; -+ -+ if (u_save((linenr_T)(lo-1), (linenr_T)hi) == FAIL) -+ PyErr_SetVim(_("cannot save undo information")); -+ -+ /* If the size of the range is reducing (ie, new_len < old_len) we -+ * need to delete some old_len. We do this at the start, by -+ * repeatedly deleting line "lo". -+ */ -+ if (!PyErr_Occurred()) -+ { -+ for (i = 0; i < old_len - new_len; ++i) -+ if (ml_delete((linenr_T)lo, FALSE) == FAIL) -+ { -+ PyErr_SetVim(_("cannot delete line")); -+ break; -+ } -+ extra -= i; -+ } -+ -+ /* For as long as possible, replace the existing old_len with the -+ * new old_len. This is a more efficient operation, as it requires -+ * less memory allocation and freeing. -+ */ -+ if (!PyErr_Occurred()) -+ { -+ for (i = 0; i < old_len && i < new_len; ++i) -+ if (ml_replace((linenr_T)(lo+i), (char_u *)array[i], FALSE) -+ == FAIL) -+ { -+ PyErr_SetVim(_("cannot replace line")); -+ break; -+ } -+ } -+ else -+ i = 0; -+ -+ /* Now we may need to insert the remaining new old_len. If we do, we -+ * must free the strings as we finish with them (we can't pass the -+ * responsibility to vim in this case). -+ */ -+ if (!PyErr_Occurred()) -+ { -+ while (i < new_len) -+ { -+ if (ml_append((linenr_T)(lo + i - 1), -+ (char_u *)array[i], 0, FALSE) == FAIL) -+ { -+ PyErr_SetVim(_("cannot insert line")); -+ break; -+ } -+ vim_free(array[i]); -+ ++i; -+ ++extra; -+ } -+ } -+ -+ /* Free any left-over old_len, as a result of an error */ -+ while (i < new_len) -+ { -+ vim_free(array[i]); -+ ++i; -+ } -+ -+ /* Free the array of old_len. All of its contents have now -+ * been dealt with (either freed, or the responsibility passed -+ * to vim. -+ */ -+ vim_free(array); -+ -+ /* Adjust marks. Invalidate any which lie in the -+ * changed range, and move any in the remainder of the buffer. -+ */ -+ mark_adjust((linenr_T)lo, (linenr_T)(hi - 1), -+ (long)MAXLNUM, (long)extra); -+ changed_lines((linenr_T)lo, 0, (linenr_T)hi, (long)extra); -+ -+ if (buf == curwin->w_buffer) -+ py_fix_cursor((linenr_T)lo, (linenr_T)hi, (linenr_T)extra); -+ -+ curbuf = savebuf; -+ -+ if (PyErr_Occurred() || VimErrorCheck()) -+ return FAIL; -+ -+ if (len_change) -+ *len_change = new_len - old_len; -+ -+ return OK; -+ } -+ else -+ { -+ PyErr_BadArgument(); -+ return FAIL; -+ } -+ } - - /* Insert a number of lines into the specified buffer after the specifed line. - * The line number is in Vim format (1-based). The lines to be inserted are -*************** -*** 1108,1113 **** ---- 1301,1340 ---- - return -1; - - if (new_end) -+ *new_end = end + len_change; -+ -+ return 0; -+ } -+ -+ static PyInt -+ RBAsSlice(BufferObject *self, PyInt lo, PyInt hi, PyObject *val, PyInt start, PyInt end, PyInt *new_end) -+ { -+ PyInt size; -+ PyInt len_change; -+ -+ /* Self must be a valid buffer */ -+ if (CheckBuffer(self)) -+ return -1; -+ -+ /* Sort out the slice range */ -+ size = end - start + 1; -+ -+ if (lo < 0) -+ lo = 0; -+ else if (lo > size) -+ lo = size; -+ if (hi < 0) -+ hi = 0; -+ if (hi < lo) -+ hi = lo; -+ else if (hi > size) -+ hi = size; -+ -+ if (SetBufferLineList(self->buf, lo + start, hi + start, -+ val, &len_change) == FAIL) -+ return -1; -+ -+ if (new_end) - *new_end = end + len_change; - - return 0; -*** ../mercurial/vim73/src/if_python.c 2011-03-26 18:32:00.000000000 +0100 ---- src/if_python.c 2011-06-19 00:02:15.000000000 +0200 -*************** -*** 56,61 **** ---- 56,65 ---- - - static void init_structs(void); - -+ /* No-op conversion functions, use with care! */ -+ #define PyString_AsBytes(obj) (obj) -+ #define PyString_FreeBytes(obj) -+ - #if !defined(FEAT_PYTHON) && defined(PROTO) - /* Use this to be able to generate prototypes without python being used. */ - # define PyObject Py_ssize_t -*************** -*** 129,134 **** ---- 133,139 ---- - */ - # define PyArg_Parse dll_PyArg_Parse - # define PyArg_ParseTuple dll_PyArg_ParseTuple -+ # define PyMem_Free dll_PyMem_Free - # define PyDict_SetItemString dll_PyDict_SetItemString - # define PyErr_BadArgument dll_PyErr_BadArgument - # define PyErr_Clear dll_PyErr_Clear -*************** -*** 189,194 **** ---- 194,200 ---- - */ - static int(*dll_PyArg_Parse)(PyObject *, char *, ...); - static int(*dll_PyArg_ParseTuple)(PyObject *, char *, ...); -+ static int(*dll_PyMem_Free)(void *); - static int(*dll_PyDict_SetItemString)(PyObject *dp, char *key, PyObject *item); - static int(*dll_PyErr_BadArgument)(void); - static void(*dll_PyErr_Clear)(void); -*************** -*** 271,276 **** ---- 277,283 ---- - { - {"PyArg_Parse", (PYTHON_PROC*)&dll_PyArg_Parse}, - {"PyArg_ParseTuple", (PYTHON_PROC*)&dll_PyArg_ParseTuple}, -+ {"PyMem_Free", (PYTHON_PROC*)&dll_PyMem_Free}, - {"PyDict_SetItemString", (PYTHON_PROC*)&dll_PyDict_SetItemString}, - {"PyErr_BadArgument", (PYTHON_PROC*)&dll_PyErr_BadArgument}, - {"PyErr_Clear", (PYTHON_PROC*)&dll_PyErr_Clear}, -*************** -*** 833,876 **** - static PyObject *CurrentGetattr(PyObject *, char *); - static int CurrentSetattr(PyObject *, char *, PyObject *); - -- /* Common routines for buffers and line ranges -- * ------------------------------------------- -- */ -- -- static PyInt -- RBAssSlice(BufferObject *self, PyInt lo, PyInt hi, PyObject *val, PyInt start, PyInt end, PyInt *new_end) -- { -- PyInt size; -- PyInt len_change; -- -- /* Self must be a valid buffer */ -- if (CheckBuffer(self)) -- return -1; -- -- /* Sort out the slice range */ -- size = end - start + 1; -- -- if (lo < 0) -- lo = 0; -- else if (lo > size) -- lo = size; -- if (hi < 0) -- hi = 0; -- if (hi < lo) -- hi = lo; -- else if (hi > size) -- hi = size; -- -- if (SetBufferLineList(self->buf, lo + start, hi + start, -- val, &len_change) == FAIL) -- return -1; -- -- if (new_end) -- *new_end = end + len_change; -- -- return 0; -- } -- - static PySequenceMethods BufferAsSeq = { - (PyInquiry) BufferLength, /* sq_length, len(x) */ - (binaryfunc) 0, /* BufferConcat, */ /* sq_concat, x+y */ ---- 840,845 ---- -*************** -*** 1038,1044 **** - static PyInt - BufferAssSlice(PyObject *self, PyInt lo, PyInt hi, PyObject *val) - { -! return RBAssSlice((BufferObject *)(self), lo, hi, val, 1, - (PyInt)((BufferObject *)(self))->buf->b_ml.ml_line_count, - NULL); - } ---- 1007,1013 ---- - static PyInt - BufferAssSlice(PyObject *self, PyInt lo, PyInt hi, PyObject *val) - { -! return RBAsSlice((BufferObject *)(self), lo, hi, val, 1, - (PyInt)((BufferObject *)(self))->buf->b_ml.ml_line_count, - NULL); - } -*************** -*** 1088,1094 **** - static PyInt - RangeAssSlice(PyObject *self, PyInt lo, PyInt hi, PyObject *val) - { -! return RBAssSlice(((RangeObject *)(self))->buf, lo, hi, val, - ((RangeObject *)(self))->start, - ((RangeObject *)(self))->end, - &((RangeObject *)(self))->end); ---- 1057,1063 ---- - static PyInt - RangeAssSlice(PyObject *self, PyInt lo, PyInt hi, PyObject *val) - { -! return RBAsSlice(((RangeObject *)(self))->buf, lo, hi, val, - ((RangeObject *)(self))->start, - ((RangeObject *)(self))->end, - &((RangeObject *)(self))->end); -*************** -*** 1435,1628 **** - * 4. Utility functions for handling the interface between Vim and Python. - */ - -- /* Replace a range of lines in the specified buffer. The line numbers are in -- * Vim format (1-based). The range is from lo up to, but not including, hi. -- * The replacement lines are given as a Python list of string objects. The -- * list is checked for validity and correct format. Errors are returned as a -- * value of FAIL. The return value is OK on success. -- * If OK is returned and len_change is not NULL, *len_change -- * is set to the change in the buffer length. -- */ -- static int -- SetBufferLineList(buf_T *buf, PyInt lo, PyInt hi, PyObject *list, PyInt *len_change) -- { -- /* First of all, we check the thpe of the supplied Python object. -- * There are three cases: -- * 1. NULL, or None - this is a deletion. -- * 2. A list - this is a replacement. -- * 3. Anything else - this is an error. -- */ -- if (list == Py_None || list == NULL) -- { -- PyInt i; -- PyInt n = (int)(hi - lo); -- buf_T *savebuf = curbuf; -- -- PyErr_Clear(); -- curbuf = buf; -- -- if (u_savedel((linenr_T)lo, (long)n) == FAIL) -- PyErr_SetVim(_("cannot save undo information")); -- else -- { -- for (i = 0; i < n; ++i) -- { -- if (ml_delete((linenr_T)lo, FALSE) == FAIL) -- { -- PyErr_SetVim(_("cannot delete line")); -- break; -- } -- } -- if (buf == curwin->w_buffer) -- py_fix_cursor((linenr_T)lo, (linenr_T)hi, (linenr_T)-n); -- deleted_lines_mark((linenr_T)lo, (long)i); -- } -- -- curbuf = savebuf; -- -- if (PyErr_Occurred() || VimErrorCheck()) -- return FAIL; -- -- if (len_change) -- *len_change = -n; -- -- return OK; -- } -- else if (PyList_Check(list)) -- { -- PyInt i; -- PyInt new_len = PyList_Size(list); -- PyInt old_len = hi - lo; -- PyInt extra = 0; /* lines added to text, can be negative */ -- char **array; -- buf_T *savebuf; -- -- if (new_len == 0) /* avoid allocating zero bytes */ -- array = NULL; -- else -- { -- array = (char **)alloc((unsigned)(new_len * sizeof(char *))); -- if (array == NULL) -- { -- PyErr_NoMemory(); -- return FAIL; -- } -- } -- -- for (i = 0; i < new_len; ++i) -- { -- PyObject *line = PyList_GetItem(list, i); -- -- array[i] = StringToLine(line); -- if (array[i] == NULL) -- { -- while (i) -- vim_free(array[--i]); -- vim_free(array); -- return FAIL; -- } -- } -- -- savebuf = curbuf; -- -- PyErr_Clear(); -- curbuf = buf; -- -- if (u_save((linenr_T)(lo-1), (linenr_T)hi) == FAIL) -- PyErr_SetVim(_("cannot save undo information")); -- -- /* If the size of the range is reducing (ie, new_len < old_len) we -- * need to delete some old_len. We do this at the start, by -- * repeatedly deleting line "lo". -- */ -- if (!PyErr_Occurred()) -- { -- for (i = 0; i < old_len - new_len; ++i) -- if (ml_delete((linenr_T)lo, FALSE) == FAIL) -- { -- PyErr_SetVim(_("cannot delete line")); -- break; -- } -- extra -= i; -- } -- -- /* For as long as possible, replace the existing old_len with the -- * new old_len. This is a more efficient operation, as it requires -- * less memory allocation and freeing. -- */ -- if (!PyErr_Occurred()) -- { -- for (i = 0; i < old_len && i < new_len; ++i) -- if (ml_replace((linenr_T)(lo+i), (char_u *)array[i], FALSE) -- == FAIL) -- { -- PyErr_SetVim(_("cannot replace line")); -- break; -- } -- } -- else -- i = 0; -- -- /* Now we may need to insert the remaining new old_len. If we do, we -- * must free the strings as we finish with them (we can't pass the -- * responsibility to vim in this case). -- */ -- if (!PyErr_Occurred()) -- { -- while (i < new_len) -- { -- if (ml_append((linenr_T)(lo + i - 1), -- (char_u *)array[i], 0, FALSE) == FAIL) -- { -- PyErr_SetVim(_("cannot insert line")); -- break; -- } -- vim_free(array[i]); -- ++i; -- ++extra; -- } -- } -- -- /* Free any left-over old_len, as a result of an error */ -- while (i < new_len) -- { -- vim_free(array[i]); -- ++i; -- } -- -- /* Free the array of old_len. All of its contents have now -- * been dealt with (either freed, or the responsibility passed -- * to vim. -- */ -- vim_free(array); -- -- /* Adjust marks. Invalidate any which lie in the -- * changed range, and move any in the remainder of the buffer. -- */ -- mark_adjust((linenr_T)lo, (linenr_T)(hi - 1), -- (long)MAXLNUM, (long)extra); -- changed_lines((linenr_T)lo, 0, (linenr_T)hi, (long)extra); -- -- if (buf == curwin->w_buffer) -- py_fix_cursor((linenr_T)lo, (linenr_T)hi, (linenr_T)extra); -- -- curbuf = savebuf; -- -- if (PyErr_Occurred() || VimErrorCheck()) -- return FAIL; -- -- if (len_change) -- *len_change = new_len - old_len; -- -- return OK; -- } -- else -- { -- PyErr_BadArgument(); -- return FAIL; -- } -- } -- - /* Convert a Vim line into a Python string. - * All internal newlines are replaced by null characters. - * ---- 1404,1409 ---- -*** ../mercurial/vim73/src/if_python3.c 2011-06-12 21:37:06.000000000 +0200 ---- src/if_python3.c 2011-06-19 00:10:42.000000000 +0200 -*************** -*** 70,77 **** - - #define PyInt Py_ssize_t - #define PyString_Check(obj) PyUnicode_Check(obj) -! #define PyString_AsString(obj) _PyUnicode_AsString(obj) -! #define PyString_Size(obj) PyUnicode_GET_SIZE(obj) - #define PyString_FromString(repr) PyUnicode_FromString(repr) - - #if defined(DYNAMIC_PYTHON3) || defined(PROTO) ---- 70,79 ---- - - #define PyInt Py_ssize_t - #define PyString_Check(obj) PyUnicode_Check(obj) -! #define PyString_AsBytes(obj) PyUnicode_AsEncodedString(obj, (char *)p_enc, NULL); -! #define PyString_FreeBytes(obj) Py_XDECREF(bytes) -! #define PyString_AsString(obj) PyBytes_AsString(obj) -! #define PyString_Size(obj) PyBytes_GET_SIZE(bytes) - #define PyString_FromString(repr) PyUnicode_FromString(repr) - - #if defined(DYNAMIC_PYTHON3) || defined(PROTO) -*************** -*** 99,104 **** ---- 101,107 ---- - # define PyArg_Parse py3_PyArg_Parse - # undef PyArg_ParseTuple - # define PyArg_ParseTuple py3_PyArg_ParseTuple -+ # define PyMem_Free py3_PyMem_Free - # define PyDict_SetItemString py3_PyDict_SetItemString - # define PyErr_BadArgument py3_PyErr_BadArgument - # define PyErr_Clear py3_PyErr_Clear -*************** -*** 140,147 **** ---- 143,155 ---- - # define PyModule_AddObject py3_PyModule_AddObject - # define PyImport_AppendInittab py3_PyImport_AppendInittab - # define _PyUnicode_AsString py3__PyUnicode_AsString -+ # undef PyUnicode_AsEncodedString -+ # define PyUnicode_AsEncodedString py3_PyUnicode_AsEncodedString -+ # undef PyBytes_AsString -+ # define PyBytes_AsString py3_PyBytes_AsString - # define PyObject_GenericGetAttr py3_PyObject_GenericGetAttr - # define PySlice_Type (*py3_PySlice_Type) -+ # define PyErr_NewException py3_PyErr_NewException - # ifdef Py_DEBUG - # define _Py_NegativeRefcount py3__Py_NegativeRefcount - # define _Py_RefTotal (*py3__Py_RefTotal) -*************** -*** 157,164 **** - # define PyModule_Create2 py3_PyModule_Create2 - # undef PyUnicode_FromString - # define PyUnicode_FromString py3_PyUnicode_FromString -! # undef PyUnicode_FromStringAndSize -! # define PyUnicode_FromStringAndSize py3_PyUnicode_FromStringAndSize - - # ifdef Py_DEBUG - # undef PyObject_NEW ---- 165,172 ---- - # define PyModule_Create2 py3_PyModule_Create2 - # undef PyUnicode_FromString - # define PyUnicode_FromString py3_PyUnicode_FromString -! # undef PyUnicode_Decode -! # define PyUnicode_Decode py3_PyUnicode_Decode - - # ifdef Py_DEBUG - # undef PyObject_NEW -*************** -*** 199,205 **** - static int (*py3_PyType_Ready)(PyTypeObject *type); - static int (*py3_PyDict_SetItemString)(PyObject *dp, char *key, PyObject *item); - static PyObject* (*py3_PyUnicode_FromString)(const char *u); -! static PyObject* (*py3_PyUnicode_FromStringAndSize)(const char *u, Py_ssize_t size); - static long (*py3_PyLong_AsLong)(PyObject *); - static void (*py3_PyErr_SetNone)(PyObject *); - static void (*py3_PyEval_InitThreads)(void); ---- 207,214 ---- - static int (*py3_PyType_Ready)(PyTypeObject *type); - static int (*py3_PyDict_SetItemString)(PyObject *dp, char *key, PyObject *item); - static PyObject* (*py3_PyUnicode_FromString)(const char *u); -! static PyObject* (*py3_PyUnicode_Decode)(const char *u, Py_ssize_t size, -! const char *encoding, const char *errors); - static long (*py3_PyLong_AsLong)(PyObject *); - static void (*py3_PyErr_SetNone)(PyObject *); - static void (*py3_PyEval_InitThreads)(void); -*************** -*** 207,212 **** ---- 216,222 ---- - static PyThreadState*(*py3_PyEval_SaveThread)(void); - static int (*py3_PyArg_Parse)(PyObject *, char *, ...); - static int (*py3_PyArg_ParseTuple)(PyObject *, char *, ...); -+ static int (*py3_PyMem_Free)(void *); - static int (*py3_Py_IsInitialized)(void); - static void (*py3_PyErr_Clear)(void); - static PyObject*(*py3__PyObject_Init)(PyObject *, PyTypeObject *); -*************** -*** 214,224 **** ---- 224,237 ---- - static int (*py3_PyModule_AddObject)(PyObject *m, const char *name, PyObject *o); - static int (*py3_PyImport_AppendInittab)(const char *name, PyObject* (*initfunc)(void)); - static char* (*py3__PyUnicode_AsString)(PyObject *unicode); -+ static PyObject* (*py3_PyUnicode_AsEncodedString)(PyObject *unicode, const char* encoding, const char* errors); -+ static char* (*py3_PyBytes_AsString)(PyObject *bytes); - static PyObject* (*py3_PyObject_GenericGetAttr)(PyObject *obj, PyObject *name); - static PyObject* (*py3_PyModule_Create2)(struct PyModuleDef* module, int module_api_version); - static PyObject* (*py3_PyType_GenericAlloc)(PyTypeObject *type, Py_ssize_t nitems); - static PyObject* (*py3_PyType_GenericNew)(PyTypeObject *type, PyObject *args, PyObject *kwds); - static PyTypeObject* py3_PySlice_Type; -+ static PyObject* (*py3_PyErr_NewException)(char *name, PyObject *base, PyObject *dict); - # ifdef Py_DEBUG - static void (*py3__Py_NegativeRefcount)(const char *fname, int lineno, PyObject *op); - static Py_ssize_t* py3__Py_RefTotal; -*************** -*** 259,264 **** ---- 272,278 ---- - {"Py_SetPythonHome", (PYTHON_PROC*)&py3_Py_SetPythonHome}, - {"Py_Initialize", (PYTHON_PROC*)&py3_Py_Initialize}, - {"PyArg_ParseTuple", (PYTHON_PROC*)&py3_PyArg_ParseTuple}, -+ {"PyMem_Free", (PYTHON_PROC*)&py3_PyMem_Free}, - {"PyList_New", (PYTHON_PROC*)&py3_PyList_New}, - {"PyGILState_Ensure", (PYTHON_PROC*)&py3_PyGILState_Ensure}, - {"PyGILState_Release", (PYTHON_PROC*)&py3_PyGILState_Release}, -*************** -*** 289,295 **** - {"PyEval_RestoreThread", (PYTHON_PROC*)&py3_PyEval_RestoreThread}, - {"PyEval_SaveThread", (PYTHON_PROC*)&py3_PyEval_SaveThread}, - {"PyArg_Parse", (PYTHON_PROC*)&py3_PyArg_Parse}, -- {"PyArg_ParseTuple", (PYTHON_PROC*)&py3_PyArg_ParseTuple}, - {"Py_IsInitialized", (PYTHON_PROC*)&py3_Py_IsInitialized}, - {"_Py_NoneStruct", (PYTHON_PROC*)&py3__Py_NoneStruct}, - {"PyErr_Clear", (PYTHON_PROC*)&py3_PyErr_Clear}, ---- 303,308 ---- -*************** -*** 297,307 **** ---- 310,322 ---- - {"PyModule_AddObject", (PYTHON_PROC*)&py3_PyModule_AddObject}, - {"PyImport_AppendInittab", (PYTHON_PROC*)&py3_PyImport_AppendInittab}, - {"_PyUnicode_AsString", (PYTHON_PROC*)&py3__PyUnicode_AsString}, -+ {"PyBytes_AsString", (PYTHON_PROC*)&py3_PyBytes_AsString}, - {"PyObject_GenericGetAttr", (PYTHON_PROC*)&py3_PyObject_GenericGetAttr}, - {"PyModule_Create2", (PYTHON_PROC*)&py3_PyModule_Create2}, - {"PyType_GenericAlloc", (PYTHON_PROC*)&py3_PyType_GenericAlloc}, - {"PyType_GenericNew", (PYTHON_PROC*)&py3_PyType_GenericNew}, - {"PySlice_Type", (PYTHON_PROC*)&py3_PySlice_Type}, -+ {"PyErr_NewException", (PYTHON_PROC*)&py3_PyErr_NewException}, - # ifdef Py_DEBUG - {"_Py_NegativeRefcount", (PYTHON_PROC*)&py3__Py_NegativeRefcount}, - {"_Py_RefTotal", (PYTHON_PROC*)&py3__Py_RefTotal}, -*************** -*** 337,343 **** - py3_runtime_link_init(char *libname, int verbose) - { - int i; -! void *ucs_from_string, *ucs_from_string_and_size; - - # if !(defined(PY_NO_RTLD_GLOBAL) && defined(PY3_NO_RTLD_GLOBAL)) && defined(UNIX) && defined(FEAT_PYTHON) - /* Can't have Python and Python3 loaded at the same time. ---- 352,358 ---- - py3_runtime_link_init(char *libname, int verbose) - { - int i; -! void *ucs_from_string, *ucs_decode, *ucs_as_encoded_string; - - # if !(defined(PY_NO_RTLD_GLOBAL) && defined(PY3_NO_RTLD_GLOBAL)) && defined(UNIX) && defined(FEAT_PYTHON) - /* Can't have Python and Python3 loaded at the same time. -*************** -*** 377,395 **** - /* Load unicode functions separately as only the ucs2 or the ucs4 functions - * will be present in the library. */ - ucs_from_string = symbol_from_dll(hinstPy3, "PyUnicodeUCS2_FromString"); -! ucs_from_string_and_size = symbol_from_dll(hinstPy3, -! "PyUnicodeUCS2_FromStringAndSize"); -! if (!ucs_from_string || !ucs_from_string_and_size) - { - ucs_from_string = symbol_from_dll(hinstPy3, - "PyUnicodeUCS4_FromString"); -! ucs_from_string_and_size = symbol_from_dll(hinstPy3, -! "PyUnicodeUCS4_FromStringAndSize"); - } -! if (ucs_from_string && ucs_from_string_and_size) - { - py3_PyUnicode_FromString = ucs_from_string; -! py3_PyUnicode_FromStringAndSize = ucs_from_string_and_size; - } - else - { ---- 392,415 ---- - /* Load unicode functions separately as only the ucs2 or the ucs4 functions - * will be present in the library. */ - ucs_from_string = symbol_from_dll(hinstPy3, "PyUnicodeUCS2_FromString"); -! ucs_decode = symbol_from_dll(hinstPy3, -! "PyUnicodeUCS2_Decode"); -! ucs_as_encoded_string = symbol_from_dll(hinstPy3, -! "PyUnicodeUCS2_AsEncodedString"); -! if (!ucs_from_string || !ucs_decode || !ucs_as_encoded_string) - { - ucs_from_string = symbol_from_dll(hinstPy3, - "PyUnicodeUCS4_FromString"); -! ucs_decode = symbol_from_dll(hinstPy3, -! "PyUnicodeUCS4_Decode"); -! ucs_as_encoded_string = symbol_from_dll(hinstPy3, -! "PyUnicodeUCS4_AsEncodedString"); - } -! if (ucs_from_string && ucs_decode && ucs_as_encoded_string) - { - py3_PyUnicode_FromString = ucs_from_string; -! py3_PyUnicode_Decode = ucs_decode; -! py3_PyUnicode_AsEncodedString = ucs_as_encoded_string; - } - else - { -*************** -*** 567,574 **** - /* Remove the element from sys.path that was added because of our - * argv[0] value in Py3Init_vim(). Previously we used an empty - * string, but dependinding on the OS we then get an empty entry or -! * the current directory in sys.path. */ -! PyRun_SimpleString("import sys; sys.path = list(filter(lambda x: x != '/must>not&exist', sys.path))"); - - // lock is created and acquired in PyEval_InitThreads() and thread - // state is created in Py_Initialize() ---- 587,597 ---- - /* Remove the element from sys.path that was added because of our - * argv[0] value in Py3Init_vim(). Previously we used an empty - * string, but dependinding on the OS we then get an empty entry or -! * the current directory in sys.path. -! * Only after vim has been imported, the element does exist in -! * sys.path. -! */ -! PyRun_SimpleString("import vim; import sys; sys.path = list(filter(lambda x: not x.endswith('must>not&exist'), sys.path))"); - - // lock is created and acquired in PyEval_InitThreads() and thread - // state is created in Py_Initialize() -*************** -*** 605,610 **** ---- 628,635 ---- - #if defined(HAVE_LOCALE_H) || defined(X_LOCALE) - char *saved_locale; - #endif -+ PyObject *cmdstr; -+ PyObject *cmdbytes; - - #if defined(MACOS) && !defined(MACOS_X_UNIX) - GetPort(&oldPort); -*************** -*** 634,640 **** - - pygilstate = PyGILState_Ensure(); - -! PyRun_SimpleString((char *)(cmd)); - - PyGILState_Release(pygilstate); - ---- 659,671 ---- - - pygilstate = PyGILState_Ensure(); - -! /* PyRun_SimpleString expects a UTF-8 string. Wrong encoding may cause -! * SyntaxError (unicode error). */ -! cmdstr = PyUnicode_Decode(cmd, strlen(cmd), (char *)p_enc, NULL); -! cmdbytes = PyUnicode_AsEncodedString(cmdstr, "utf-8", NULL); -! Py_XDECREF(cmdstr); -! PyRun_SimpleString(PyBytes_AsString(cmdbytes)); -! Py_XDECREF(cmdbytes); - - PyGILState_Release(pygilstate); - -*************** -*** 693,699 **** - * different options under Windows, meaning that stdio pointers aren't - * compatible between the two. Yuk. - * -! * construct: exec(compile(open('a_filename').read(), 'a_filename', 'exec')) - * - * We need to escape any backslashes or single quotes in the file name, so that - * Python won't mangle the file name. ---- 724,733 ---- - * different options under Windows, meaning that stdio pointers aren't - * compatible between the two. Yuk. - * -! * construct: exec(compile(open('a_filename', 'rb').read(), 'a_filename', 'exec')) -! * -! * Using bytes so that Python can detect the source encoding as it normally -! * does. The doc does not say "compile" accept bytes, though. - * - * We need to escape any backslashes or single quotes in the file name, so that - * Python won't mangle the file name. -*************** -*** 716,723 **** - return; - if (i==0) - { -! strcpy(p,"').read(),'"); -! p += 11; - } - else - { ---- 750,757 ---- - return; - if (i==0) - { -! strcpy(p,"','rb').read(),'"); -! p += 16; - } - else - { -*************** -*** 812,819 **** - - static Py_ssize_t BufferLength(PyObject *); - static PyObject *BufferItem(PyObject *, Py_ssize_t); -- static Py_ssize_t BufferAsItem(PyObject *, Py_ssize_t, PyObject *); - static PyObject* BufferSubscript(PyObject *self, PyObject* idx); - - - /* Line range type - Implementation functions ---- 846,853 ---- - - static Py_ssize_t BufferLength(PyObject *); - static PyObject *BufferItem(PyObject *, Py_ssize_t); - static PyObject* BufferSubscript(PyObject *self, PyObject* idx); -+ static Py_ssize_t BufferAsSubscript(PyObject *self, PyObject* idx, PyObject* val); - - - /* Line range type - Implementation functions -*************** -*** 835,841 **** - (ssizeargfunc) 0, /* sq_repeat, x*n */ - (ssizeargfunc) BufferItem, /* sq_item, x[i] */ - 0, /* was_sq_slice, x[i:j] */ -! (ssizeobjargproc) BufferAsItem, /* sq_ass_item, x[i]=v */ - 0, /* sq_ass_slice, x[i:j]=v */ - 0, /* sq_contains */ - 0, /* sq_inplace_concat */ ---- 869,875 ---- - (ssizeargfunc) 0, /* sq_repeat, x*n */ - (ssizeargfunc) BufferItem, /* sq_item, x[i] */ - 0, /* was_sq_slice, x[i:j] */ -! 0, /* sq_ass_item, x[i]=v */ - 0, /* sq_ass_slice, x[i:j]=v */ - 0, /* sq_contains */ - 0, /* sq_inplace_concat */ -*************** -*** 845,851 **** - PyMappingMethods BufferAsMapping = { - /* mp_length */ (lenfunc)BufferLength, - /* mp_subscript */ (binaryfunc)BufferSubscript, -! /* mp_ass_subscript */ (objobjargproc)0, - }; - - ---- 879,885 ---- - PyMappingMethods BufferAsMapping = { - /* mp_length */ (lenfunc)BufferLength, - /* mp_subscript */ (binaryfunc)BufferSubscript, -! /* mp_ass_subscript */ (objobjargproc)BufferAsSubscript, - }; - - -*************** -*** 897,902 **** ---- 931,938 ---- - - if (this->buf && this->buf != INVALID_BUFFER_VALUE) - this->buf->b_python3_ref = NULL; -+ -+ Py_TYPE(self)->tp_free((PyObject*)self); - } - - static PyObject * -*************** -*** 975,989 **** - (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count); - } - -- static Py_ssize_t -- BufferAsItem(PyObject *self, Py_ssize_t n, PyObject *val) -- { -- return RBAsItem((BufferObject *)(self), n, val, 1, -- (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count, -- NULL); -- } -- -- - static PyObject * - BufferSubscript(PyObject *self, PyObject* idx) - { ---- 1011,1016 ---- -*************** -*** 999,1011 **** - &step, &slicelen) < 0) { - return NULL; - } -! return BufferSlice(self,start,stop+1); - } else { - PyErr_SetString(PyExc_IndexError, "Index must be int or slice"); - return NULL; - } - } - - static PySequenceMethods RangeAsSeq = { - (lenfunc) RangeLength, /* sq_length, len(x) */ - (binaryfunc) 0, /* RangeConcat, sq_concat, x+y */ ---- 1026,1064 ---- - &step, &slicelen) < 0) { - return NULL; - } -! return BufferSlice(self,start,stop); - } else { - PyErr_SetString(PyExc_IndexError, "Index must be int or slice"); - return NULL; - } - } - -+ static Py_ssize_t -+ BufferAsSubscript(PyObject *self, PyObject* idx, PyObject* val) -+ { -+ if (PyLong_Check(idx)) { -+ long n = PyLong_AsLong(idx); -+ return RBAsItem((BufferObject *)(self), n, val, 1, -+ (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count, -+ NULL); -+ } else if (PySlice_Check(idx)) { -+ Py_ssize_t start, stop, step, slicelen; -+ -+ if (PySlice_GetIndicesEx((PySliceObject *)idx, -+ (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count+1, -+ &start, &stop, -+ &step, &slicelen) < 0) { -+ return -1; -+ } -+ return RBAsSlice((BufferObject *)(self), start, stop, val, 1, -+ (PyInt)((BufferObject *)(self))->buf->b_ml.ml_line_count, -+ NULL); -+ } else { -+ PyErr_SetString(PyExc_IndexError, "Index must be int or slice"); -+ return -1; -+ } -+ } -+ - static PySequenceMethods RangeAsSeq = { - (lenfunc) RangeLength, /* sq_length, len(x) */ - (binaryfunc) 0, /* RangeConcat, sq_concat, x+y */ -*************** -*** 1032,1037 **** ---- 1085,1091 ---- - RangeDestructor(PyObject *self) - { - Py_DECREF(((RangeObject *)(self))->buf); -+ Py_TYPE(self)->tp_free((PyObject*)self); - } - - static PyObject * -*************** -*** 1159,1164 **** ---- 1213,1220 ---- - - if (this->win && this->win != INVALID_WINDOW_VALUE) - this->win->w_python3_ref = NULL; -+ -+ Py_TYPE(self)->tp_free((PyObject*)self); - } - - static PyObject * -*************** -*** 1350,1357 **** - PySys_SetArgv(1, argv); - - mod = PyModule_Create(&vimmodule); - -! VimError = Py_BuildValue("s", "vim.error"); - - PyModule_AddObject(mod, "error", VimError); - Py_INCREF((PyObject *)(void *)&TheBufferList); ---- 1406,1416 ---- - PySys_SetArgv(1, argv); - - mod = PyModule_Create(&vimmodule); -+ if (mod == NULL) -+ return NULL; - -! VimError = PyErr_NewException("vim.error", NULL, NULL); -! Py_INCREF(VimError); - - PyModule_AddObject(mod, "error", VimError); - Py_INCREF((PyObject *)(void *)&TheBufferList); -*************** -*** 1404,1410 **** - } - *p = '\0'; - -! result = PyUnicode_FromStringAndSize(tmp, len); - - vim_free(tmp); - return result; ---- 1463,1469 ---- - } - *p = '\0'; - -! result = PyUnicode_Decode(tmp, len, (char *)p_enc, NULL); - - vim_free(tmp); - return result; -*** ../vim-7.3.219/src/version.c 2011-06-13 02:03:55.000000000 +0200 ---- src/version.c 2011-06-19 00:25:38.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 220, - /**/ - --- -I'm in shape. Round IS a shape. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.221 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.221 -Problem: Text from the clipboard is sometimes handled as linewise, but not - consistently. -Solution: Assume the text is linewise when it ends in a CR or NL. -Files: src/gui_gtk_x11.c, src/gui_mac.c, src/ops.c, src/os_msdos.c, - src/os_mswin.c, src/os_qnx.c, src/ui.c - - -*** ../mercurial/vim73/src/gui_gtk_x11.c 2011-02-25 17:10:22.000000000 +0100 ---- src/gui_gtk_x11.c 2011-06-19 00:58:31.000000000 +0200 -*************** -*** 1173,1179 **** - char_u *tmpbuf = NULL; - guchar *tmpbuf_utf8 = NULL; - int len; -! int motion_type; - - if (data->selection == clip_plus.gtk_sel_atom) - cbd = &clip_plus; ---- 1173,1179 ---- - char_u *tmpbuf = NULL; - guchar *tmpbuf_utf8 = NULL; - int len; -! int motion_type = MAUTO; - - if (data->selection == clip_plus.gtk_sel_atom) - cbd = &clip_plus; -*************** -*** 1182,1188 **** - - text = (char_u *)data->data; - len = data->length; -- motion_type = MCHAR; - - if (text == NULL || len <= 0) - { ---- 1182,1187 ---- -*** ../mercurial/vim73/src/gui_mac.c 2011-06-12 20:33:30.000000000 +0200 ---- src/gui_mac.c 2011-06-19 00:59:07.000000000 +0200 -*************** -*** 4671,4677 **** - if (flavor) - type = **textOfClip; - else -! type = (strchr(*textOfClip, '\r') != NULL) ? MLINE : MCHAR; - - tempclip = lalloc(scrapSize + 1, TRUE); - mch_memmove(tempclip, *textOfClip + flavor, scrapSize); ---- 4671,4677 ---- - if (flavor) - type = **textOfClip; - else -! type = MAUTO; - - tempclip = lalloc(scrapSize + 1, TRUE); - mch_memmove(tempclip, *textOfClip + flavor, scrapSize); -*** ../mercurial/vim73/src/ops.c 2011-04-01 16:28:33.000000000 +0200 ---- src/ops.c 2011-06-19 00:59:39.000000000 +0200 -*************** -*** 5733,5739 **** - } - } - -! /* Convert from the GUI selection string into the '*'/'+' register */ - void - clip_yank_selection(type, str, len, cbd) - int type; ---- 5733,5741 ---- - } - } - -! /* -! * Convert from the GUI selection string into the '*'/'+' register. -! */ - void - clip_yank_selection(type, str, len, cbd) - int type; -*************** -*** 6090,6098 **** - if (yank_type == MBLOCK) - yank_type = MAUTO; - #endif -- if (yank_type == MAUTO) -- yank_type = ((len > 0 && (str[len - 1] == '\n' || str[len - 1] == '\r')) -- ? MLINE : MCHAR); - str_to_reg(y_current, yank_type, str, len, block_len); - - # ifdef FEAT_CLIPBOARD ---- 6092,6097 ---- -*************** -*** 6113,6125 **** - * is appended. - */ - static void -! str_to_reg(y_ptr, type, str, len, blocklen) - struct yankreg *y_ptr; /* pointer to yank register */ -! int type; /* MCHAR, MLINE or MBLOCK */ - char_u *str; /* string to put in register */ - long len; /* length of string */ - long blocklen; /* width of Visual block */ - { - int lnum; - long start; - long i; ---- 6112,6125 ---- - * is appended. - */ - static void -! str_to_reg(y_ptr, yank_type, str, len, blocklen) - struct yankreg *y_ptr; /* pointer to yank register */ -! int yank_type; /* MCHAR, MLINE, MBLOCK, MAUTO */ - char_u *str; /* string to put in register */ - long len; /* length of string */ - long blocklen; /* width of Visual block */ - { -+ int type; /* MCHAR, MLINE or MBLOCK */ - int lnum; - long start; - long i; -*************** -*** 6136,6141 **** ---- 6136,6147 ---- - if (y_ptr->y_array == NULL) /* NULL means empty register */ - y_ptr->y_size = 0; - -+ if (yank_type == MAUTO) -+ type = ((len > 0 && (str[len - 1] == NL || str[len - 1] == CAR)) -+ ? MLINE : MCHAR); -+ else -+ type = yank_type; -+ - /* - * Count the number of lines within the string - */ -*** ../mercurial/vim73/src/os_msdos.c 2010-12-17 18:06:00.000000000 +0100 ---- src/os_msdos.c 2011-06-19 01:00:56.000000000 +0200 -*************** -*** 2232,2238 **** - void - clip_mch_request_selection(VimClipboard *cbd) - { -! int type = MCHAR; - char_u *pAllocated = NULL; - char_u *pClipText = NULL; - int clip_data_format = 0; ---- 2232,2238 ---- - void - clip_mch_request_selection(VimClipboard *cbd) - { -! int type = MAUTO; - char_u *pAllocated = NULL; - char_u *pClipText = NULL; - int clip_data_format = 0; -*************** -*** 2280,2293 **** - { - clip_data_format = CF_TEXT; - pClipText = pAllocated; -- type = (vim_strchr((char*)pClipText, '\r') != NULL) ? MLINE : MCHAR; - } - - else if ((pAllocated = Win16GetClipboardData(CF_OEMTEXT)) != NULL) - { - clip_data_format = CF_OEMTEXT; - pClipText = pAllocated; -- type = (vim_strchr((char*)pClipText, '\r') != NULL) ? MLINE : MCHAR; - } - - /* Did we get anything? */ ---- 2280,2291 ---- -*** ../mercurial/vim73/src/os_mswin.c 2011-01-17 20:08:04.000000000 +0100 ---- src/os_mswin.c 2011-06-19 01:01:51.000000000 +0200 -*************** -*** 1410,1418 **** - { - char_u *temp_clipboard; - -! /* If the type is not known guess it. */ - if (metadata.type == -1) -! metadata.type = (vim_strchr(str, '\n') == NULL) ? MCHAR : MLINE; - - /* Translate <CR><NL> into <NL>. */ - temp_clipboard = crnl_to_nl(str, &str_size); ---- 1410,1418 ---- - { - char_u *temp_clipboard; - -! /* If the type is not known detect it. */ - if (metadata.type == -1) -! metadata.type = MAUTO; - - /* Translate <CR><NL> into <NL>. */ - temp_clipboard = crnl_to_nl(str, &str_size); -*** ../mercurial/vim73/src/os_qnx.c 2010-05-15 21:22:11.000000000 +0200 ---- src/os_qnx.c 2011-06-19 01:02:26.000000000 +0200 -*************** -*** 93,99 **** - clip_length = clip_header->length - 1; - - if( clip_text != NULL && is_type_set == FALSE ) -! type = (strchr( clip_text, '\r' ) != NULL) ? MLINE : MCHAR; - } - - if( (clip_text != NULL) && (clip_length > 0) ) ---- 93,99 ---- - clip_length = clip_header->length - 1; - - if( clip_text != NULL && is_type_set == FALSE ) -! type = MAUTO; - } - - if( (clip_text != NULL) && (clip_length > 0) ) -*** ../mercurial/vim73/src/ui.c 2010-09-21 22:09:28.000000000 +0200 ---- src/ui.c 2011-06-19 01:03:31.000000000 +0200 -*************** -*** 1609,1615 **** - - #if defined(FEAT_HANGULIN) || defined(PROTO) - void -! push_raw_key (s, len) - char_u *s; - int len; - { ---- 1609,1615 ---- - - #if defined(FEAT_HANGULIN) || defined(PROTO) - void -! push_raw_key(s, len) - char_u *s; - int len; - { -*************** -*** 2016,2022 **** - long_u *length; - int *format; - { -! int motion_type; - long_u len; - char_u *p; - char **text_list = NULL; ---- 2016,2022 ---- - long_u *length; - int *format; - { -! int motion_type = MAUTO; - long_u len; - char_u *p; - char **text_list = NULL; -*************** -*** 2036,2042 **** - *(int *)success = FALSE; - return; - } -- motion_type = MCHAR; - p = (char_u *)value; - len = *length; - if (*type == vim_atom) ---- 2036,2041 ---- -*** ../vim-7.3.220/src/version.c 2011-06-19 00:27:46.000000000 +0200 ---- src/version.c 2011-06-19 01:03:59.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 221, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -190. You quickly hand over your wallet, leather jacket, and car keys - during a mugging, then proceed to beat the crap out of your - assailant when he asks for your laptop. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.22 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.222 -Problem: Warning for building GvimExt. -Solution: Comment-out the DESCRIPTION line. (Mike Williams) -Files: src/GvimExt/gvimext.def, src/GvimExt/gvimext_ming.def - - -*** ../mercurial/vim73/src/GvimExt/gvimext.def 2010-05-15 21:22:11.000000000 +0200 ---- src/GvimExt/gvimext.def 2011-06-15 03:50:55.000000000 +0200 -*************** -*** 1,7 **** - ;gvimdef.def : Declares the module parameters for the DLL. - - LIBRARY gvimext -! DESCRIPTION 'Vim Shell Extension' - - EXPORTS - DllCanUnloadNow private ---- 1,7 ---- - ;gvimdef.def : Declares the module parameters for the DLL. - - LIBRARY gvimext -! ; DESCRIPTION 'Vim Shell Extension' - - EXPORTS - DllCanUnloadNow private -*** ../mercurial/vim73/src/GvimExt/gvimext_ming.def 2010-05-15 21:22:11.000000000 +0200 ---- src/GvimExt/gvimext_ming.def 2011-06-15 03:51:05.000000000 +0200 -*************** -*** 3,9 **** - ;Hence this is the same file as gvimext.def with private removed - - LIBRARY gvimext -! DESCRIPTION 'Vim Shell Extension build with MinGW' - - EXPORTS - DllCanUnloadNow = DllCanUnloadNow@0 ---- 3,9 ---- - ;Hence this is the same file as gvimext.def with private removed - - LIBRARY gvimext -! ; DESCRIPTION 'Vim Shell Extension build with MinGW' - - EXPORTS - DllCanUnloadNow = DllCanUnloadNow@0 -*** ../vim-7.3.221/src/version.c 2011-06-19 01:14:23.000000000 +0200 ---- src/version.c 2011-06-19 01:26:57.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 222, - /**/ - --- -What is the difference between a professional and an amateur? -The ark was built by an amateur; professionals gave us the Titanic. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.223 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.223 -Problem: MingW cross compilation doesn't work with tiny features. -Solution: Move acp_to_enc(), enc_to_utf16() and utf16_to_enc() outside of - "#ifdef CLIPBOARD". Fix typo in makefile. -Files: src/Make_ming.mak, src/os_mswin.c - - -*** ../mercurial/vim73/src/Make_ming.mak 2010-12-30 14:50:46.000000000 +0100 ---- src/Make_ming.mak 2011-06-19 01:20:16.000000000 +0200 -*************** -*** 87,93 **** - - # If you are using gettext-0.10.35 from http://sourceforge.net/projects/gettext - # or gettext-0.10.37 from http://sourceforge.net/projects/mingwrep/ -! # uncomment the following, but I can't build a static versión with them, ?-(| - #GETTEXT=c:/gettext-0.10.37-20010430 - #STATIC_GETTEXT=USE_STATIC_GETTEXT - #DYNAMIC_GETTEXT=DYNAMIC_GETTEXT ---- 87,93 ---- - - # If you are using gettext-0.10.35 from http://sourceforge.net/projects/gettext - # or gettext-0.10.37 from http://sourceforge.net/projects/mingwrep/ -! # uncomment the following, but I can't build a static version with them, ?-(| - #GETTEXT=c:/gettext-0.10.37-20010430 - #STATIC_GETTEXT=USE_STATIC_GETTEXT - #DYNAMIC_GETTEXT=DYNAMIC_GETTEXT -*** ../mercurial/vim73/src/os_mswin.c 2011-06-19 01:14:23.000000000 +0200 ---- src/os_mswin.c 2011-06-19 01:25:23.000000000 +0200 -*************** -*** 1105,1236 **** - return ret; - } - -- #if defined(FEAT_MBYTE) || defined(PROTO) -- /* -- * Note: the following two functions are only guaranteed to work when using -- * valid MS-Windows codepages or when iconv() is available. -- */ -- -- /* -- * Convert "str" from 'encoding' to UTF-16. -- * Input in "str" with length "*lenp". When "lenp" is NULL, use strlen(). -- * Output is returned as an allocated string. "*lenp" is set to the length of -- * the result. A trailing NUL is always added. -- * Returns NULL when out of memory. -- */ -- short_u * -- enc_to_utf16(char_u *str, int *lenp) -- { -- vimconv_T conv; -- WCHAR *ret; -- char_u *allocbuf = NULL; -- int len_loc; -- int length; -- -- if (lenp == NULL) -- { -- len_loc = (int)STRLEN(str) + 1; -- lenp = &len_loc; -- } -- -- if (enc_codepage > 0) -- { -- /* We can do any CP### -> UTF-16 in one pass, and we can do it -- * without iconv() (convert_* may need iconv). */ -- MultiByteToWideChar_alloc(enc_codepage, 0, str, *lenp, &ret, &length); -- } -- else -- { -- /* Use "latin1" by default, we might be called before we have p_enc -- * set up. Convert to utf-8 first, works better with iconv(). Does -- * nothing if 'encoding' is "utf-8". */ -- conv.vc_type = CONV_NONE; -- if (convert_setup(&conv, p_enc ? p_enc : (char_u *)"latin1", -- (char_u *)"utf-8") == FAIL) -- return NULL; -- if (conv.vc_type != CONV_NONE) -- { -- str = allocbuf = string_convert(&conv, str, lenp); -- if (str == NULL) -- return NULL; -- } -- convert_setup(&conv, NULL, NULL); -- -- length = utf8_to_utf16(str, *lenp, NULL, NULL); -- ret = (WCHAR *)alloc((unsigned)((length + 1) * sizeof(WCHAR))); -- if (ret != NULL) -- { -- utf8_to_utf16(str, *lenp, (short_u *)ret, NULL); -- ret[length] = 0; -- } -- -- vim_free(allocbuf); -- } -- -- *lenp = length; -- return (short_u *)ret; -- } -- -- /* -- * Convert an UTF-16 string to 'encoding'. -- * Input in "str" with length (counted in wide characters) "*lenp". When -- * "lenp" is NULL, use wcslen(). -- * Output is returned as an allocated string. If "*lenp" is not NULL it is -- * set to the length of the result. -- * Returns NULL when out of memory. -- */ -- char_u * -- utf16_to_enc(short_u *str, int *lenp) -- { -- vimconv_T conv; -- char_u *utf8_str = NULL, *enc_str = NULL; -- int len_loc; -- -- if (lenp == NULL) -- { -- len_loc = (int)wcslen(str) + 1; -- lenp = &len_loc; -- } -- -- if (enc_codepage > 0) -- { -- /* We can do any UTF-16 -> CP### in one pass. */ -- int length; -- -- WideCharToMultiByte_alloc(enc_codepage, 0, str, *lenp, -- (LPSTR *)&enc_str, &length, 0, 0); -- *lenp = length; -- return enc_str; -- } -- -- /* Avoid allocating zero bytes, it generates an error message. */ -- utf8_str = alloc(utf16_to_utf8(str, *lenp == 0 ? 1 : *lenp, NULL)); -- if (utf8_str != NULL) -- { -- *lenp = utf16_to_utf8(str, *lenp, utf8_str); -- -- /* We might be called before we have p_enc set up. */ -- conv.vc_type = CONV_NONE; -- convert_setup(&conv, (char_u *)"utf-8", -- p_enc? p_enc: (char_u *)"latin1"); -- if (conv.vc_type == CONV_NONE) -- { -- /* p_enc is utf-8, so we're done. */ -- enc_str = utf8_str; -- } -- else -- { -- enc_str = string_convert(&conv, utf8_str, lenp); -- vim_free(utf8_str); -- } -- -- convert_setup(&conv, NULL, NULL); -- } -- -- return enc_str; -- } -- #endif /* FEAT_MBYTE */ -- - /* - * Wait for another process to Close the Clipboard. - * Returns TRUE for success. ---- 1105,1110 ---- -*************** -*** 1436,1467 **** - #endif - } - -- #if (defined(FEAT_MBYTE) && defined(WIN3264)) || defined(PROTO) -- /* -- * Convert from the active codepage to 'encoding'. -- * Input is "str[str_size]". -- * The result is in allocated memory: "out[outlen]". With terminating NUL. -- */ -- void -- acp_to_enc(str, str_size, out, outlen) -- char_u *str; -- int str_size; -- char_u **out; -- int *outlen; -- -- { -- LPWSTR widestr; -- -- MultiByteToWideChar_alloc(GetACP(), 0, str, str_size, &widestr, outlen); -- if (widestr != NULL) -- { -- ++*outlen; /* Include the 0 after the string */ -- *out = utf16_to_enc((short_u *)widestr, outlen); -- vim_free(widestr); -- } -- } -- #endif -- - /* - * Send the current selection to the clipboard. - */ ---- 1310,1315 ---- -*************** -*** 1626,1631 **** ---- 1474,1631 ---- - - #endif /* FEAT_CLIPBOARD */ - -+ #if defined(FEAT_MBYTE) || defined(PROTO) -+ /* -+ * Note: the following two functions are only guaranteed to work when using -+ * valid MS-Windows codepages or when iconv() is available. -+ */ -+ -+ /* -+ * Convert "str" from 'encoding' to UTF-16. -+ * Input in "str" with length "*lenp". When "lenp" is NULL, use strlen(). -+ * Output is returned as an allocated string. "*lenp" is set to the length of -+ * the result. A trailing NUL is always added. -+ * Returns NULL when out of memory. -+ */ -+ short_u * -+ enc_to_utf16(char_u *str, int *lenp) -+ { -+ vimconv_T conv; -+ WCHAR *ret; -+ char_u *allocbuf = NULL; -+ int len_loc; -+ int length; -+ -+ if (lenp == NULL) -+ { -+ len_loc = (int)STRLEN(str) + 1; -+ lenp = &len_loc; -+ } -+ -+ if (enc_codepage > 0) -+ { -+ /* We can do any CP### -> UTF-16 in one pass, and we can do it -+ * without iconv() (convert_* may need iconv). */ -+ MultiByteToWideChar_alloc(enc_codepage, 0, str, *lenp, &ret, &length); -+ } -+ else -+ { -+ /* Use "latin1" by default, we might be called before we have p_enc -+ * set up. Convert to utf-8 first, works better with iconv(). Does -+ * nothing if 'encoding' is "utf-8". */ -+ conv.vc_type = CONV_NONE; -+ if (convert_setup(&conv, p_enc ? p_enc : (char_u *)"latin1", -+ (char_u *)"utf-8") == FAIL) -+ return NULL; -+ if (conv.vc_type != CONV_NONE) -+ { -+ str = allocbuf = string_convert(&conv, str, lenp); -+ if (str == NULL) -+ return NULL; -+ } -+ convert_setup(&conv, NULL, NULL); -+ -+ length = utf8_to_utf16(str, *lenp, NULL, NULL); -+ ret = (WCHAR *)alloc((unsigned)((length + 1) * sizeof(WCHAR))); -+ if (ret != NULL) -+ { -+ utf8_to_utf16(str, *lenp, (short_u *)ret, NULL); -+ ret[length] = 0; -+ } -+ -+ vim_free(allocbuf); -+ } -+ -+ *lenp = length; -+ return (short_u *)ret; -+ } -+ -+ /* -+ * Convert an UTF-16 string to 'encoding'. -+ * Input in "str" with length (counted in wide characters) "*lenp". When -+ * "lenp" is NULL, use wcslen(). -+ * Output is returned as an allocated string. If "*lenp" is not NULL it is -+ * set to the length of the result. -+ * Returns NULL when out of memory. -+ */ -+ char_u * -+ utf16_to_enc(short_u *str, int *lenp) -+ { -+ vimconv_T conv; -+ char_u *utf8_str = NULL, *enc_str = NULL; -+ int len_loc; -+ -+ if (lenp == NULL) -+ { -+ len_loc = (int)wcslen(str) + 1; -+ lenp = &len_loc; -+ } -+ -+ if (enc_codepage > 0) -+ { -+ /* We can do any UTF-16 -> CP### in one pass. */ -+ int length; -+ -+ WideCharToMultiByte_alloc(enc_codepage, 0, str, *lenp, -+ (LPSTR *)&enc_str, &length, 0, 0); -+ *lenp = length; -+ return enc_str; -+ } -+ -+ /* Avoid allocating zero bytes, it generates an error message. */ -+ utf8_str = alloc(utf16_to_utf8(str, *lenp == 0 ? 1 : *lenp, NULL)); -+ if (utf8_str != NULL) -+ { -+ *lenp = utf16_to_utf8(str, *lenp, utf8_str); -+ -+ /* We might be called before we have p_enc set up. */ -+ conv.vc_type = CONV_NONE; -+ convert_setup(&conv, (char_u *)"utf-8", -+ p_enc? p_enc: (char_u *)"latin1"); -+ if (conv.vc_type == CONV_NONE) -+ { -+ /* p_enc is utf-8, so we're done. */ -+ enc_str = utf8_str; -+ } -+ else -+ { -+ enc_str = string_convert(&conv, utf8_str, lenp); -+ vim_free(utf8_str); -+ } -+ -+ convert_setup(&conv, NULL, NULL); -+ } -+ -+ return enc_str; -+ } -+ #endif /* FEAT_MBYTE */ -+ -+ #if (defined(FEAT_MBYTE) && defined(WIN3264)) || defined(PROTO) -+ /* -+ * Convert from the active codepage to 'encoding'. -+ * Input is "str[str_size]". -+ * The result is in allocated memory: "out[outlen]". With terminating NUL. -+ */ -+ void -+ acp_to_enc(str, str_size, out, outlen) -+ char_u *str; -+ int str_size; -+ char_u **out; -+ int *outlen; -+ -+ { -+ LPWSTR widestr; -+ -+ MultiByteToWideChar_alloc(GetACP(), 0, str, str_size, &widestr, outlen); -+ if (widestr != NULL) -+ { -+ ++*outlen; /* Include the 0 after the string */ -+ *out = utf16_to_enc((short_u *)widestr, outlen); -+ vim_free(widestr); -+ } -+ } -+ #endif -+ - - /* - * Debugging helper: expose the MCH_WRITE_DUMP stuff to other modules -*** ../vim-7.3.222/src/version.c 2011-06-19 01:27:29.000000000 +0200 ---- src/version.c 2011-06-19 01:28:41.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 223, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -191. You rate eating establishments not by the quality of the food, - but by the availability of electrical outlets for your PowerBook. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.224 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.224 -Problem: Can't pass dict to sort function. -Solution: Add the optional {dict} argument to sort(). (ZyX) -Files: runtime/doc/eval.txt, src/eval.c - - -*** ../mercurial/vim73/runtime/doc/eval.txt 2011-05-19 17:25:36.000000000 +0200 ---- runtime/doc/eval.txt 2011-06-19 02:42:52.000000000 +0200 -*************** -*** 1919,1925 **** - simplify( {filename}) String simplify filename as much as possible - sin( {expr}) Float sine of {expr} - sinh( {expr}) Float hyperbolic sine of {expr} -! sort( {list} [, {func}]) List sort {list}, using {func} to compare - soundfold( {word}) String sound-fold {word} - spellbadword() String badly spelled word at cursor - spellsuggest( {word} [, {max} [, {capital}]]) ---- 1922,1929 ---- - simplify( {filename}) String simplify filename as much as possible - sin( {expr}) Float sine of {expr} - sinh( {expr}) Float hyperbolic sine of {expr} -! sort( {list} [, {func} [, {dict}]]) -! List sort {list}, using {func} to compare - soundfold( {word}) String sound-fold {word} - spellbadword() String badly spelled word at cursor - spellsuggest( {word} [, {max} [, {capital}]]) -*************** -*** 5275,5281 **** - {only available when compiled with the |+float| feature} - - -! sort({list} [, {func}]) *sort()* *E702* - Sort the items in {list} in-place. Returns {list}. If you - want a list to remain unmodified make a copy first: > - :let sortedlist = sort(copy(mylist)) ---- 5279,5285 ---- - {only available when compiled with the |+float| feature} - - -! sort({list} [, {func} [, {dict}]]) *sort()* *E702* - Sort the items in {list} in-place. Returns {list}. If you - want a list to remain unmodified make a copy first: > - :let sortedlist = sort(copy(mylist)) -*************** -*** 5283,5288 **** ---- 5287,5294 ---- - Numbers sort after Strings, |Lists| after Numbers. - For sorting text in the current buffer use |:sort|. - When {func} is given and it is one then case is ignored. -+ {dict} is for functions with the "dict" attribute. It will be -+ used to set the local variable "self". |Dictionary-function| - When {func} is a |Funcref| or a function name, this function - is called to compare items. The function is invoked with two - items as argument and must return zero if they are equal, 1 or -*** ../mercurial/vim73/src/eval.c 2011-05-19 18:26:34.000000000 +0200 ---- src/eval.c 2011-06-19 02:51:13.000000000 +0200 -*************** -*** 7930,7936 **** - {"sin", 1, 1, f_sin}, - {"sinh", 1, 1, f_sinh}, - #endif -! {"sort", 1, 2, f_sort}, - {"soundfold", 1, 1, f_soundfold}, - {"spellbadword", 0, 1, f_spellbadword}, - {"spellsuggest", 1, 3, f_spellsuggest}, ---- 7930,7936 ---- - {"sin", 1, 1, f_sin}, - {"sinh", 1, 1, f_sinh}, - #endif -! {"sort", 1, 3, f_sort}, - {"soundfold", 1, 1, f_soundfold}, - {"spellbadword", 0, 1, f_spellbadword}, - {"spellsuggest", 1, 3, f_spellsuggest}, -*************** -*** 16366,16371 **** ---- 16366,16372 ---- - - static int item_compare_ic; - static char_u *item_compare_func; -+ static dict_T *item_compare_selfdict; - static int item_compare_func_err; - #define ITEM_COMPARE_FAIL 999 - -*************** -*** 16425,16431 **** - - rettv.v_type = VAR_UNKNOWN; /* clear_tv() uses this */ - res = call_func(item_compare_func, (int)STRLEN(item_compare_func), -! &rettv, 2, argv, 0L, 0L, &dummy, TRUE, NULL); - clear_tv(&argv[0]); - clear_tv(&argv[1]); - ---- 16426,16433 ---- - - rettv.v_type = VAR_UNKNOWN; /* clear_tv() uses this */ - res = call_func(item_compare_func, (int)STRLEN(item_compare_func), -! &rettv, 2, argv, 0L, 0L, &dummy, TRUE, -! item_compare_selfdict); - clear_tv(&argv[0]); - clear_tv(&argv[1]); - -*************** -*** 16471,16478 **** ---- 16473,16482 ---- - - item_compare_ic = FALSE; - item_compare_func = NULL; -+ item_compare_selfdict = NULL; - if (argvars[1].v_type != VAR_UNKNOWN) - { -+ /* optional second argument: {func} */ - if (argvars[1].v_type == VAR_FUNC) - item_compare_func = argvars[1].vval.v_string; - else -*************** -*** 16487,16492 **** ---- 16491,16507 ---- - else - item_compare_func = get_tv_string(&argvars[1]); - } -+ -+ if (argvars[2].v_type != VAR_UNKNOWN) -+ { -+ /* optional third argument: {dict} */ -+ if (argvars[2].v_type != VAR_DICT) -+ { -+ EMSG(_(e_dictreq)); -+ return; -+ } -+ item_compare_selfdict = argvars[2].vval.v_dict; -+ } - } - - /* Make an array with each entry pointing to an item in the List. */ -*** ../vim-7.3.223/src/version.c 2011-06-19 01:30:01.000000000 +0200 ---- src/version.c 2011-06-19 02:52:46.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 224, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -193. You ask your girlfriend to drive home so you can sit back with - your PDA and download the information to your laptop - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.225 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.225 -Problem: Using "\n" in a substitute inside ":s" does not result in a line - break. -Solution: Change behavior inside vim_regexec_nl(). Add tests. (Motoya - Kurotsu) -Files: src/regexp.c, src/testdir/test79.in, src/testdir/test79.ok, - src/testdir/test80.in, src/testdir/test80.ok, - src/testdir/Makefile, src/testdir/Make_amiga.mak, - src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, - src/testdir/Make_os2.mak, src/testdir/Make_vms.mms - -*** ../mercurial/vim73/src/regexp.c 2010-09-14 10:55:24.000000000 +0200 ---- src/regexp.c 2011-06-19 04:03:54.000000000 +0200 -*************** -*** 6872,6877 **** ---- 6872,6878 ---- - static regmmatch_T *submatch_mmatch; - static linenr_T submatch_firstlnum; - static linenr_T submatch_maxline; -+ static int submatch_line_lbr; - #endif - - #if defined(FEAT_MODIFY_FNAME) || defined(FEAT_EVAL) || defined(PROTO) -*************** -*** 6998,7003 **** ---- 6999,7005 ---- - submatch_mmatch = reg_mmatch; - submatch_firstlnum = reg_firstlnum; - submatch_maxline = reg_maxline; -+ submatch_line_lbr = reg_line_lbr; - save_reg_win = reg_win; - save_ireg_ic = ireg_ic; - can_f_submatch = TRUE; -*************** -*** 7009,7017 **** - - for (s = eval_result; *s != NUL; mb_ptr_adv(s)) - { -! /* Change NL to CR, so that it becomes a line break. - * Skip over a backslashed character. */ -! if (*s == NL) - *s = CAR; - else if (*s == '\\' && s[1] != NUL) - { ---- 7011,7020 ---- - - for (s = eval_result; *s != NUL; mb_ptr_adv(s)) - { -! /* Change NL to CR, so that it becomes a line break, -! * unless called from vim_regexec_nl(). - * Skip over a backslashed character. */ -! if (*s == NL && !submatch_line_lbr) - *s = CAR; - else if (*s == '\\' && s[1] != NUL) - { -*************** -*** 7020,7027 **** - * :s/abc\\\ndef/\="aaa\\\nbbb"/ on text: - * abc\ - * def - */ -! if (*s == NL) - *s = CAR; - had_backslash = TRUE; - } ---- 7023,7031 ---- - * :s/abc\\\ndef/\="aaa\\\nbbb"/ on text: - * abc\ - * def -+ * Not when called from vim_regexec_nl(). - */ -! if (*s == NL && !submatch_line_lbr) - *s = CAR; - had_backslash = TRUE; - } -*************** -*** 7044,7049 **** ---- 7048,7054 ---- - reg_mmatch = submatch_mmatch; - reg_firstlnum = submatch_firstlnum; - reg_maxline = submatch_maxline; -+ reg_line_lbr = submatch_line_lbr; - reg_win = save_reg_win; - ireg_ic = save_ireg_ic; - can_f_submatch = FALSE; -*** ../mercurial/vim73/src/testdir/test79.in 2011-06-19 04:30:54.000000000 +0200 ---- src/testdir/test79.in 2011-06-19 03:45:26.000000000 +0200 -*************** -*** 0 **** ---- 1,213 ---- -+ Test for *sub-replace-special* and *sub-replace-expression* on :substitute. -+ Test for submatch() on :substitue. -+ Test for *:s%* on :substitute. -+ -+ STARTTEST -+ :so small.vim -+ ENDTEST -+ -+ Results of test71: -+ -+ STARTTEST -+ :set magic -+ :set cpo& -+ /^TEST/ -+ j:s/A/&&/ -+ j:s/B/\&/ -+ j:s/C\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)/\0\9\8\7\6\5\4\3\2\1/ -+ j:s/D/d/ -+ j:s/E/~/ -+ j:s/F/\~/ -+ j:s/G/\ugg/ -+ j:s/H/\Uh\Eh/ -+ j:s/I/\lII/ -+ j:s/J/\LJ\EJ/ -+ j:s/K/\Uk\ek/ -+ j:s/L/
/ -+ j:s/M/\r/ -+ j:s/N/\
/ -+ j:s/O/\n/ -+ j:s/P/\b/ -+ j:s/Q/\t/ -+ j:s/R/\\/ -+ j:s/S/\c/ -+ j:s/T/ -+ ENDTEST -+ -+ TEST_1: -+ A -+ B -+ C123456789 -+ D -+ E -+ F -+ G -+ H -+ I -+ J -+ K -+ lLl -+ mMm -+ nNn -+ oOo -+ pPp -+ qQq -+ rRr -+ sSs -+ tTt -+ -+ STARTTEST -+ :set nomagic -+ :set cpo& -+ /^TEST/ -+ j:s/A/&&/ -+ j:s/B/\&/ -+ j:s/\mC\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)/\0\9\8\7\6\5\4\3\2\1/ -+ j:s/D/d/ -+ j:s/E/~/ -+ j:s/F/\~/ -+ j:s/G/\ugg/ -+ j:s/H/\Uh\Eh/ -+ j:s/I/\lII/ -+ j:s/J/\LJ\EJ/ -+ j:s/K/\Uk\ek/ -+ j:s/L/
/ -+ j:s/M/\r/ -+ j:s/N/\
/ -+ j:s/O/\n/ -+ j:s/P/\b/ -+ j:s/Q/\t/ -+ j:s/R/\\/ -+ j:s/S/\c/ -+ j:s/T/ -+ ENDTEST -+ -+ TEST_2: -+ A -+ B -+ C123456789 -+ D -+ E -+ F -+ G -+ H -+ I -+ J -+ K -+ lLl -+ mMm -+ nNn -+ oOo -+ pPp -+ qQq -+ rRr -+ sSs -+ tTt -+ -+ STARTTEST -+ :set magic& -+ :set cpo& -+ /^TEST/ -+ j:s/A/\='\'/ -+ j:s/B/\='\\'/ -+ j:s/C/\='
'/ -+ j:s/D/\='\
'/ -+ j:s/E/\='\\
'/ -+ j:s/F/\='\r'/ -+ j:s/G/\=' -+ j:s/H/\='\ -+ j:s/I/\='\\ -+ j:s/J/\='\n'/ -+ j:s/K/\="\r"/ -+ j:s/L/\="\n"/ -+ ENDTEST -+ -+ TEST_3: -+ aAa -+ bBb -+ cCc -+ dDd -+ eEe -+ fFf -+ gGg -+ hHh -+ iIi -+ jJj -+ kKk -+ lLl -+ -+ STARTTEST -+ :set magic& -+ :set cpo& -+ /^TEST/ -+ j:s/A/\=substitute(submatch(0), '.', '\', '')/ -+ j:s/B/\=substitute(submatch(0), '.', '\\', '')/ -+ j:s/C/\=substitute(submatch(0), '.', '
', '')/ -+ j:s/D/\=substitute(submatch(0), '.', '\
', '')/ -+ j:s/E/\=substitute(submatch(0), '.', '\\
', '')/ -+ j:s/F/\=substitute(submatch(0), '.', '\r', '')/ -+ j:s/G/\=substitute(submatch(0), '.', ' -+ j:s/H/\=substitute(submatch(0), '.', '\ -+ j:s/I/\=substitute(submatch(0), '.', '\\ -+ j:s/J/\=substitute(submatch(0), '.', '\n', '')/ -+ j:s/K/\=substitute(submatch(0), '.', "\r", '')/ -+ j:s/L/\=substitute(submatch(0), '.', "\n", '')/ -+ ENDTEST -+ -+ TEST_4: -+ aAa -+ bBb -+ cCc -+ dDd -+ eEe -+ fFf -+ gGg -+ hHh -+ iIi -+ jJj -+ kKk -+ lLl -+ -+ STARTTEST -+ :set magic& -+ :set cpo& -+ /^TEST/ -+ j:s/A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)/\=submatch(0) . submatch(9) . submatch(8) . submatch(7) . submatch(6) . submatch(5) . submatch(4) . submatch(3) . submatch(2) . submatch(1)/ -+ ENDTEST -+ -+ TEST_5: -+ A123456789 -+ -+ STARTTEST -+ :set magic& -+ /^TEST/ -+ :set cpo+=/ -+ j:s/A/a/ -+ j:s/B/%/ -+ :set cpo-=/ -+ j:s/C/c/ -+ j:s/D/%/ -+ ENDTEST -+ -+ TEST_6: -+ A -+ B -+ C -+ D -+ -+ STARTTEST -+ :set magic& -+ :set cpo& -+ /^TEST/ -+ j:s/A./\=submatch(0)/ -+ j:s/B./\=submatch(0)/ -+ ENDTEST -+ -+ TEST_7: -+ A
A -+ B -+ -+ STARTTEST -+ :g/^STARTTEST/.,/^ENDTEST/d -+ :1;/^Results/,$wq! test.out -+ ENDTEST -*** ../mercurial/vim73/src/testdir/test79.ok 2011-06-19 04:30:54.000000000 +0200 ---- src/testdir/test79.ok 2011-06-19 03:45:26.000000000 +0200 -*************** -*** 0 **** ---- 1,118 ---- -+ Results of test71: -+ -+ -+ TEST_1: -+ AA -+ & -+ C123456789987654321 -+ d -+ d -+ ~ -+ Gg -+ Hh -+ iI -+ jJ -+ Kk -+ l -+ l -+ m -+ m -+ n
n -+ o -+ pp -+ q q -+ r\r -+ scs -+ t -+ -+ -+ TEST_2: -+ && -+ B -+ C123456789987654321 -+ d -+ ~ -+ ~ -+ Gg -+ Hh -+ iI -+ jJ -+ Kk -+ l -+ l -+ m -+ m -+ n
n -+ o -+ pp -+ q q -+ r\r -+ scs -+ t -+ -+ -+ TEST_3: -+ a\a -+ b\\b -+ c -+ c -+ d\ -+ d -+ e\\ -+ e -+ f\rf -+ g -+ g -+ h\ -+ h -+ i\\ -+ i -+ j\nj -+ k -+ k -+ l -+ l -+ -+ -+ TEST_4: -+ a\a -+ b\b -+ c -+ c -+ d -+ d -+ e\ -+ e -+ f -+ f -+ g -+ g -+ h -+ h -+ i\ -+ i -+ j -+ j -+ k -+ k -+ l -+ l -+ -+ -+ TEST_5: -+ A123456789987654321 -+ -+ -+ TEST_6: -+ a -+ a -+ c -+ % -+ -+ -+ TEST_7: -+ A -+ A -+ B -+ B -+ -*** ../mercurial/vim73/src/testdir/test80.in 2011-06-19 04:30:54.000000000 +0200 ---- src/testdir/test80.in 2011-06-19 03:45:26.000000000 +0200 -*************** -*** 0 **** ---- 1,150 ---- -+ Test for *sub-replace-special* and *sub-replace-expression* on substitue(). -+ Test for submatch() on substitue(). -+ Test for *:s%* on :substitute. -+ -+ STARTTEST -+ :so small.vim -+ ENDTEST -+ -+ TEST_1: -+ -+ STARTTEST -+ :set magic -+ :set cpo& -+ :$put =\"\n\nTEST_1:\" -+ :$put =substitute('A', 'A', '&&', '') -+ :$put =substitute('B', 'B', '\&', '') -+ :$put =substitute('C123456789', 'C\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)', '\0\9\8\7\6\5\4\3\2\1', '') -+ :$put =substitute('D', 'D', 'd', '') -+ :$put =substitute('E', 'E', '~', '') -+ :$put =substitute('F', 'F', '\~', '') -+ :$put =substitute('G', 'G', '\ugg', '') -+ :$put =substitute('H', 'H', '\Uh\Eh', '') -+ :$put =substitute('I', 'I', '\lII', '') -+ :$put =substitute('J', 'J', '\LJ\EJ', '') -+ :$put =substitute('K', 'K', '\Uk\ek', '') -+ :$put =substitute('lLl', 'L', '
', '') -+ :$put =substitute('mMm', 'M', '\r', '') -+ :$put =substitute('nNn', 'N', '\
', '') -+ :$put =substitute('oOo', 'O', '\n', '') -+ :$put =substitute('pPp', 'P', '\b', '') -+ :$put =substitute('qQq', 'Q', '\t', '') -+ :$put =substitute('rRr', 'R', '\\', '') -+ :$put =substitute('sSs', 'S', '\c', '') -+ :$put =substitute('uUu', 'U', \"\n\", '') -+ :$put =substitute('vVv', 'V', \"\b\", '') -+ :$put =substitute('wWw', 'W', \"\\\", '') -+ :$put =substitute('xXx', 'X', \"\r\", '') -+ /^TEST_2 -+ ENDTEST -+ -+ TEST_2: -+ -+ STARTTEST -+ :set nomagic -+ :set cpo& -+ :$put =\"\n\nTEST_2:\" -+ :$put =substitute('A', 'A', '&&', '') -+ :$put =substitute('B', 'B', '\&', '') -+ :$put =substitute('C123456789', 'C\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)', '\0\9\8\7\6\5\4\3\2\1', '') -+ :$put =substitute('D', 'D', 'd', '') -+ :$put =substitute('E', 'E', '~', '') -+ :$put =substitute('F', 'F', '\~', '') -+ :$put =substitute('G', 'G', '\ugg', '') -+ :$put =substitute('H', 'H', '\Uh\Eh', '') -+ :$put =substitute('I', 'I', '\lII', '') -+ :$put =substitute('J', 'J', '\LJ\EJ', '') -+ :$put =substitute('K', 'K', '\Uk\ek', '') -+ :$put =substitute('lLl', 'L', '
', '') -+ :$put =substitute('mMm', 'M', '\r', '') -+ :$put =substitute('nNn', 'N', '\
', '') -+ :$put =substitute('oOo', 'O', '\n', '') -+ :$put =substitute('pPp', 'P', '\b', '') -+ :$put =substitute('qQq', 'Q', '\t', '') -+ :$put =substitute('rRr', 'R', '\\', '') -+ :$put =substitute('sSs', 'S', '\c', '') -+ :$put =substitute('tTt', 'T', \"\r\", '') -+ :$put =substitute('uUu', 'U', \"\n\", '') -+ :$put =substitute('vVv', 'V', \"\b\", '') -+ :$put =substitute('wWw', 'W', \"\\\", '') -+ /^TEST_3 -+ ENDTEST -+ -+ TEST_3: -+ -+ STARTTEST -+ :set magic& -+ :set cpo& -+ :$put =\"\n\nTEST_3:\" -+ :let y = substitute('aAa', 'A', '\="\\"', '') | $put =y -+ :let y = substitute('bBb', 'B', '\="\\\\"', '') | $put =y -+ :let y = substitute('cCc', 'C', '\="
"', '') | $put =y -+ :let y = substitute('dDd', 'D', '\="\\
"', '') | $put =y -+ :let y = substitute('eEe', 'E', '\="\\\\
"', '') | $put =y -+ :let y = substitute('fFf', 'F', '\="\\r"', '') | $put =y -+ :let y = substitute('jJj', 'J', '\="\\n"', '') | $put =y -+ :let y = substitute('kKk', 'K', '\="\r"', '') | $put =y -+ :let y = substitute('lLl', 'L', '\="\n"', '') | $put =y -+ /^TEST_4 -+ ENDTEST -+ -+ TEST_4: -+ -+ STARTTEST -+ :set magic& -+ :set cpo& -+ :$put =\"\n\nTEST_4:\" -+ :let y = substitute('aAa', 'A', '\=substitute(submatch(0), ".", "\\", "")', '') | $put =y -+ :let y = substitute('bBb', 'B', '\=substitute(submatch(0), ".", "\\\\", "")', '') | $put =y -+ :let y = substitute('cCc', 'C', '\=substitute(submatch(0), ".", "
", "")', '') | $put =y -+ :let y = substitute('dDd', 'D', '\=substitute(submatch(0), ".", "\\
", "")', '') | $put =y -+ :let y = substitute('eEe', 'E', '\=substitute(submatch(0), ".", "\\\\
", "")', '') | $put =y -+ :let y = substitute('fFf', 'F', '\=substitute(submatch(0), ".", "\\r", "")', '') | $put =y -+ :let y = substitute('jJj', 'J', '\=substitute(submatch(0), ".", "\\n", "")', '') | $put =y -+ :let y = substitute('kKk', 'K', '\=substitute(submatch(0), ".", "\r", "")', '') | $put =y -+ :let y = substitute('lLl', 'L', '\=substitute(submatch(0), ".", "\n", "")', '') | $put =y -+ /^TEST_5 -+ ENDTEST -+ -+ TEST_5: -+ -+ STARTTEST -+ :set magic& -+ :set cpo& -+ :$put =\"\n\nTEST_5:\" -+ :$put =substitute('A123456789', 'A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)', '\=submatch(0) . submatch(9) . submatch(8) . submatch(7) . submatch(6) . submatch(5) . submatch(4) . submatch(3) . submatch(2) . submatch(1)', '') -+ /^TEST_6 -+ ENDTEST -+ -+ TEST_6: -+ -+ STARTTEST -+ :set magic& -+ :$put =\"\n\nTEST_6:\" -+ :set cpo+=/ -+ :$put =substitute('A', 'A', 'a', '') -+ :$put =substitute('B', 'B', '%', '') -+ :set cpo-=/ -+ :$put =substitute('C', 'C', 'c', '') -+ :$put =substitute('D', 'D', '%', '') -+ /^TEST_7 -+ ENDTEST -+ -+ TEST_7: -+ -+ STARTTEST -+ :set magic& -+ :set cpo& -+ :$put =\"\n\nTEST_7:\" -+ :$put =substitute('A
A', 'A.', '\=submatch(0)', '') -+ :$put =substitute(\"B\nB\", 'B.', '\=submatch(0)', '') -+ /^TEST_8 -+ ENDTEST -+ -+ TEST_8: -+ -+ STARTTEST -+ :/^Results/,$wq! test.out -+ ENDTEST -+ -+ Results of test72: -*** ../mercurial/vim73/src/testdir/test80.ok 2011-06-19 04:30:54.000000000 +0200 ---- src/testdir/test80.ok 2011-06-19 03:45:26.000000000 +0200 -*************** -*** 0 **** ---- 1,101 ---- -+ Results of test72: -+ -+ -+ TEST_1: -+ AA -+ & -+ C123456789987654321 -+ d -+ ~ -+ ~ -+ Gg -+ Hh -+ iI -+ jJ -+ Kk -+ l
l -+ m
m -+ n
n -+ o -+ o -+ pp -+ q q -+ r\r -+ scs -+ u -+ u -+ vv -+ w\w -+ x
x -+ -+ -+ TEST_2: -+ AA -+ & -+ C123456789987654321 -+ d -+ ~ -+ ~ -+ Gg -+ Hh -+ iI -+ jJ -+ Kk -+ l
l -+ m
m -+ n
n -+ o -+ o -+ pp -+ q q -+ r\r -+ scs -+ t
t -+ u -+ u -+ vv -+ w\w -+ -+ -+ TEST_3: -+ a\a -+ b\\b -+ c
c -+ d\
d -+ e\\
e -+ f\rf -+ j\nj -+ k
k -+ l -+ l -+ -+ -+ TEST_4: -+ a\a -+ b\b -+ c
c -+ d
d -+ e\
e -+ f
f -+ j -+ j -+ k
k -+ l -+ l -+ -+ -+ TEST_5: -+ A123456789987654321 -+ -+ -+ TEST_6: -+ a -+ % -+ c -+ % -+ -+ -+ TEST_7: -+ A
A -+ B -+ B -*** ../mercurial/vim73/src/testdir/Makefile 2011-06-13 01:07:22.000000000 +0200 ---- src/testdir/Makefile 2011-06-19 03:53:36.000000000 +0200 -*************** -*** 25,31 **** - test59.out test60.out test61.out test62.out test63.out \ - test64.out test65.out test66.out test67.out test68.out \ - test69.out test70.out test71.out test72.out test73.out \ -! test74.out test75.out test76.out test77.out test78.out - - SCRIPTS_GUI = test16.out - ---- 25,32 ---- - test59.out test60.out test61.out test62.out test63.out \ - test64.out test65.out test66.out test67.out test68.out \ - test69.out test70.out test71.out test72.out test73.out \ -! test74.out test75.out test76.out test77.out test78.out \ -! test79.out test80.out - - SCRIPTS_GUI = test16.out - -*** ../mercurial/vim73/src/testdir/Make_amiga.mak 2011-06-13 01:07:22.000000000 +0200 ---- src/testdir/Make_amiga.mak 2011-06-19 03:52:32.000000000 +0200 -*************** -*** 28,34 **** - test61.out test62.out test63.out test64.out test65.out \ - test66.out test67.out test68.out test69.out test70.out \ - test71.out test72.out test73.out test74.out test75.out \ -! test76.out test77.out test78.out - - .SUFFIXES: .in .out - ---- 28,34 ---- - test61.out test62.out test63.out test64.out test65.out \ - test66.out test67.out test68.out test69.out test70.out \ - test71.out test72.out test73.out test74.out test75.out \ -! test76.out test77.out test78.out test79.out test80.out - - .SUFFIXES: .in .out - -*************** -*** 126,128 **** ---- 126,130 ---- - test76.out: test76.in - test77.out: test77.in - test78.out: test78.in -+ test79.out: test79.in -+ test80.out: test80.in -*** ../mercurial/vim73/src/testdir/Make_dos.mak 2011-06-13 01:07:22.000000000 +0200 ---- src/testdir/Make_dos.mak 2011-06-19 03:52:43.000000000 +0200 -*************** -*** 28,34 **** - test37.out test38.out test39.out test40.out test41.out \ - test42.out test52.out test65.out test66.out test67.out \ - test68.out test69.out test71.out test72.out test73.out \ -! test74.out test75.out test76.out test77.out test78.out - - SCRIPTS32 = test50.out test70.out - ---- 28,35 ---- - test37.out test38.out test39.out test40.out test41.out \ - test42.out test52.out test65.out test66.out test67.out \ - test68.out test69.out test71.out test72.out test73.out \ -! test74.out test75.out test76.out test77.out test78.out \ -! test79.out test80.out - - SCRIPTS32 = test50.out test70.out - -*** ../mercurial/vim73/src/testdir/Make_ming.mak 2011-06-13 01:07:22.000000000 +0200 ---- src/testdir/Make_ming.mak 2011-06-19 03:52:58.000000000 +0200 -*************** -*** 48,54 **** - test37.out test38.out test39.out test40.out test41.out \ - test42.out test52.out test65.out test66.out test67.out \ - test68.out test69.out test71.out test72.out test73.out \ -! test74.out test75.out test76.out test77.out test78.out - - SCRIPTS32 = test50.out test70.out - ---- 48,55 ---- - test37.out test38.out test39.out test40.out test41.out \ - test42.out test52.out test65.out test66.out test67.out \ - test68.out test69.out test71.out test72.out test73.out \ -! test74.out test75.out test76.out test77.out test78.out \ -! test79.out test80.out - - SCRIPTS32 = test50.out test70.out - -*** ../mercurial/vim73/src/testdir/Make_os2.mak 2011-06-13 01:07:22.000000000 +0200 ---- src/testdir/Make_os2.mak 2011-06-19 03:53:09.000000000 +0200 -*************** -*** 28,34 **** - test61.out test62.out test63.out test64.out test65.out \ - test66.out test67.out test68.out test69.out test70.out \ - test71.out test72.out test73.out test74.out test75.out \ -! test76.out test77.out test78.out - - .SUFFIXES: .in .out - ---- 28,34 ---- - test61.out test62.out test63.out test64.out test65.out \ - test66.out test67.out test68.out test69.out test70.out \ - test71.out test72.out test73.out test74.out test75.out \ -! test76.out test77.out test78.out test79.out test80.out - - .SUFFIXES: .in .out - -*** ../mercurial/vim73/src/testdir/Make_vms.mms 2011-06-13 01:07:22.000000000 +0200 ---- src/testdir/Make_vms.mms 2011-06-19 03:53:18.000000000 +0200 -*************** -*** 4,10 **** - # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> - # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> - # -! # Last change: 2011 Jun 13 - # - # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. - # Edit the lines in the Configuration section below to select. ---- 4,10 ---- - # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> - # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> - # -! # Last change: 2011 Jun 19 - # - # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. - # Edit the lines in the Configuration section below to select. -*************** -*** 75,81 **** - test61.out test62.out test63.out test64.out test65.out \ - test66.out test67.out test68.out test69.out \ - test71.out test72.out test74.out test75.out test76.out \ -! test77.out test78.out - - # Known problems: - # Test 30: a problem around mac format - unknown reason ---- 75,81 ---- - test61.out test62.out test63.out test64.out test65.out \ - test66.out test67.out test68.out test69.out \ - test71.out test72.out test74.out test75.out test76.out \ -! test77.out test78.out test79.out test80.out - - # Known problems: - # Test 30: a problem around mac format - unknown reason -*** ../vim-7.3.224/src/version.c 2011-06-19 02:55:32.000000000 +0200 ---- src/version.c 2011-06-19 04:27:54.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 225, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -194. Your business cards contain your e-mail and home page address. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.226 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.226 -Problem: On a 64 bit system "syn sync fromstart" is very slow. (Bjorn - Steinbrink) -Solution: Store the state when starting to parse from the first line. -Files: src/syntax.c - - -*** ../mercurial/vim73/src/syntax.c 2011-05-25 17:56:23.000000000 +0200 ---- src/syntax.c 2011-06-19 04:47:08.000000000 +0200 -*************** -*** 559,565 **** - if (INVALID_STATE(¤t_state)) - { - syn_sync(wp, lnum, last_valid); -! first_stored = current_lnum + syn_block->b_syn_sync_minlines; - } - else - first_stored = current_lnum; ---- 559,571 ---- - if (INVALID_STATE(¤t_state)) - { - syn_sync(wp, lnum, last_valid); -! if (current_lnum == 1) -! /* First line is always valid, no matter "minlines". */ -! first_stored = 1; -! else -! /* Need to parse "minlines" lines before state can be considered -! * valid to store. */ -! first_stored = current_lnum + syn_block->b_syn_sync_minlines; - } - else - first_stored = current_lnum; -*** ../vim-7.3.225/src/version.c 2011-06-19 04:31:54.000000000 +0200 ---- src/version.c 2011-06-19 04:49:53.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 226, - /**/ - --- -Press any key to continue, press any other key to quit. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.227 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.227 (after 7.3.221) -Problem: Mac OS doesn't have the linewise clipboard fix. -Solution: Also change the Mac OS file. (Bjorn Winckler) -Files: src/os_macosx.m - - -*** ../mercurial/vim73/src/os_macosx.m 2011-06-13 02:03:55.000000000 +0200 ---- src/os_macosx.m 2011-06-20 00:23:57.000000000 +0200 -*************** -*** 65,71 **** - NSString *bestType = [pb availableTypeFromArray:supportedTypes]; - if (!bestType) goto releasepool; - -! int motion_type = MCHAR; - NSString *string = nil; - - if ([bestType isEqual:VimPboardType]) ---- 65,71 ---- - NSString *bestType = [pb availableTypeFromArray:supportedTypes]; - if (!bestType) goto releasepool; - -! int motion_type = MAUTO; - NSString *string = nil; - - if ([bestType isEqual:VimPboardType]) -*************** -*** 89,97 **** - - if (!string) - { -! /* Use NSStringPboardType. The motion type is set to line-wise if the -! * string contains at least one EOL character, otherwise it is set to -! * character-wise (block-wise is never used). - */ - NSMutableString *mstring = - [[pb stringForType:NSStringPboardType] mutableCopy]; ---- 89,95 ---- - - if (!string) - { -! /* Use NSStringPboardType. The motion type is detected automatically. - */ - NSMutableString *mstring = - [[pb stringForType:NSStringPboardType] mutableCopy]; -*************** -*** 108,126 **** - options:0 range:range]; - } - -- /* Scan for newline character to decide whether the string should be -- * pasted line-wise or character-wise. -- */ -- motion_type = MCHAR; -- if (0 < n || NSNotFound != [mstring rangeOfString:@"\n"].location) -- motion_type = MLINE; -- - string = mstring; - } - - if (!(MCHAR == motion_type || MLINE == motion_type || MBLOCK == motion_type - || MAUTO == motion_type)) -! motion_type = MCHAR; - - char_u *str = (char_u*)[string UTF8String]; - int len = [string lengthOfBytesUsingEncoding:NSUTF8StringEncoding]; ---- 106,118 ---- - options:0 range:range]; - } - - string = mstring; - } - -+ /* Default to MAUTO, uses MCHAR or MLINE depending on trailing NL. */ - if (!(MCHAR == motion_type || MLINE == motion_type || MBLOCK == motion_type - || MAUTO == motion_type)) -! motion_type = MAUTO; - - char_u *str = (char_u*)[string UTF8String]; - int len = [string lengthOfBytesUsingEncoding:NSUTF8StringEncoding]; -*** ../vim-7.3.226/src/version.c 2011-06-19 04:54:17.000000000 +0200 ---- src/version.c 2011-06-20 00:21:53.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 227, - /**/ - --- -Some of the well know MS-Windows errors: - EMULTI Multitasking attempted, system confused - EKEYBOARD Keyboard locked, try getting out of this one! - EXPLAIN Unexplained error, please tell us what happened - EFUTURE Reserved for our future mistakes - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.228 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.228 -Problem: "2gj" does not always move to the correct position. -Solution: Get length of line after moving to a next line. (James Vega) -Files: src/normal.c - - -*** ../mercurial/vim73/src/normal.c 2011-05-10 17:29:28.000000000 +0200 ---- src/normal.c 2011-06-20 00:41:43.000000000 +0200 -*************** -*** 4533,4538 **** ---- 4533,4539 ---- - } - curwin->w_cursor.lnum++; - curwin->w_curswant %= width2; -+ linelen = linetabsize(ml_get_curline()); - } - } - } -*** ../vim-7.3.227/src/version.c 2011-06-20 00:25:37.000000000 +0200 ---- src/version.c 2011-06-20 00:45:15.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 228, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -197. Your desk collapses under the weight of your computer peripherals. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.229 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.229 -Problem: Using fork() makes gvim crash on Mac when build with - CoreFoundation. -Solution: Disallow fork() when __APPLE__ is defined. (Hisashi T Fujinaka) -Files: src/gui.c - - -*** ../mercurial/vim73/src/gui.c 2011-05-10 16:41:13.000000000 +0200 ---- src/gui.c 2011-06-20 00:51:21.000000000 +0200 -*************** -*** 59,65 **** - gui_start() - { - char_u *old_term; -! #if defined(UNIX) && !defined(__BEOS__) && !defined(MACOS_X) - # define MAY_FORK - int dofork = TRUE; - #endif ---- 59,66 ---- - gui_start() - { - char_u *old_term; -! #if defined(UNIX) && !defined(__BEOS__) && !defined(MACOS_X) \ -! && !defined(__APPLE__) - # define MAY_FORK - int dofork = TRUE; - #endif -*** ../vim-7.3.228/src/version.c 2011-06-20 00:45:55.000000000 +0200 ---- src/version.c 2011-06-20 00:50:42.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 229, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -198. You read all the quotes at Netaholics Anonymous and keep thinking - "What's wrong with that?" - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.230 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.230 -Problem: ":wundo" and ":rundo" don't unescape their argument. (Aaron - Thoma) -Solution: Use FILE1 instead of XFILE. -Files: src/ex_cmds.h - - -*** ../mercurial/vim73/src/ex_cmds.h 2010-08-20 11:09:02.000000000 +0200 ---- src/ex_cmds.h 2011-06-20 04:44:13.000000000 +0200 -*************** -*** 788,794 **** - EX(CMD_rubyfile, "rubyfile", ex_rubyfile, - RANGE|FILE1|NEEDARG|CMDWIN), - EX(CMD_rundo, "rundo", ex_rundo, -! NEEDARG|EXTRA|XFILE), - EX(CMD_rviminfo, "rviminfo", ex_viminfo, - BANG|FILE1|TRLBAR|CMDWIN), - EX(CMD_substitute, "substitute", do_sub, ---- 788,794 ---- - EX(CMD_rubyfile, "rubyfile", ex_rubyfile, - RANGE|FILE1|NEEDARG|CMDWIN), - EX(CMD_rundo, "rundo", ex_rundo, -! NEEDARG|FILE1), - EX(CMD_rviminfo, "rviminfo", ex_viminfo, - BANG|FILE1|TRLBAR|CMDWIN), - EX(CMD_substitute, "substitute", do_sub, -*************** -*** 1078,1084 **** - EX(CMD_wsverb, "wsverb", ex_wsverb, - EXTRA|NOTADR|NEEDARG), - EX(CMD_wundo, "wundo", ex_wundo, -! BANG|NEEDARG|EXTRA|XFILE), - EX(CMD_wviminfo, "wviminfo", ex_viminfo, - BANG|FILE1|TRLBAR|CMDWIN), - EX(CMD_xit, "xit", ex_exit, ---- 1078,1084 ---- - EX(CMD_wsverb, "wsverb", ex_wsverb, - EXTRA|NOTADR|NEEDARG), - EX(CMD_wundo, "wundo", ex_wundo, -! BANG|NEEDARG|FILE1), - EX(CMD_wviminfo, "wviminfo", ex_viminfo, - BANG|FILE1|TRLBAR|CMDWIN), - EX(CMD_xit, "xit", ex_exit, -*** ../vim-7.3.229/src/version.c 2011-06-20 00:53:10.000000000 +0200 ---- src/version.c 2011-06-20 05:02:40.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 230, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -201. When somebody asks you where you are, you tell them in which chat room. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.231 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Note: this is a weird patch, it redoes patches from 7.3.202 and 7.3.203 -that failed when applied as a patch, but the mercurial repository -already had this, thus won't change anything there. - - -Patch 7.3.231 -Problem: Runtime file patches failed. -Solution: Redo the patches made against the patched files instead of the - files in the mercurial repository. -Files: runtime/doc/indent.txt, runtime/doc/os_win32.txt - - -*** ../vim-7.3.230/runtime/doc/indent.txt 2011-05-25 15:16:06.000000000 +0200 ---- runtime/doc/indent.txt 2011-05-31 22:23:39.000000000 +0200 -*************** -*** 356,363 **** - BaseClass(3) BaseClass(3) - {} {} - < -! +N Indent a continuation line (a line that spills onto the next) N -! additional characters. (default 'shiftwidth'). - - cino= cino=+10 > - a = b + 9 * a = b + 9 * ---- 357,368 ---- - BaseClass(3) BaseClass(3) - {} {} - < -! *cino-+* -! +N Indent a continuation line (a line that spills onto the next) -! inside a function N additional characters. (default -! 'shiftwidth'). -! Outside of a function, when the previous line ended in a -! backslash, the 2 * N is used. - - cino= cino=+10 > - a = b + 9 * a = b + 9 * -*************** -*** 509,522 **** ---- 514,532 ---- - } - } - < -+ *cino-)* - )N Vim searches for unclosed parentheses at most N lines away. - This limits the time needed to search for parentheses. (default - 20 lines). - -+ *cino-star* - *N Vim searches for unclosed comments at most N lines away. This - limits the time needed to search for the start of a comment. -+ If your /* */ comments stop indenting afer N lines this is the -+ value you will want to change. - (default 70 lines). - -+ *cino-#* - #N When N is non-zero recognize shell/Perl comments, starting with - '#'. Default N is zero: don't recognizes '#' comments. Note - that lines starting with # will still be seen as preprocessor -*** ../vim-7.3.230/runtime/doc/os_win32.txt 2010-08-15 21:57:16.000000000 +0200 ---- runtime/doc/os_win32.txt 2011-05-28 18:17:58.000000000 +0200 -*************** -*** 313,318 **** ---- 313,349 ---- - with :!start do not get passed Vim's open file handles, which means they do - not have to be closed before Vim. - To avoid this special treatment, use ":! start". -+ There are two optional arguments (see the next Q): -+ /min the window will be minimized. -+ /b" no console window will be opened -+ You can only one of these flags at a time. A second second one will be -+ treated as the start of the command. -+ -+ Q. How do I avoid getting a window for programs that I run asynchronously? -+ A. You have two possible solutions depending on what exactly do you want: -+ 1) You may use the /min flag in order to run program in a minimized state -+ with no other changes. It will work equally for console and GUI -+ applications. -+ 2) You can use the /b flag to run console applications without creating a -+ console window for them (GUI applications are not affected). But you -+ should use this flag only if the application you run doesn't require any -+ input. Otherwise it will get an EOF error because its input stream -+ (stdin) would be redirected to \\.\NUL (stdoud and stderr too). -+ -+ Example for a console application, run Exuberant ctags: > -+ :!start /min ctags -R . -+ < When it has finished you should see file named "tags" in your current -+ directory. You should notice the window title blinking on your taskbar. -+ This is more noticable for commands that take longer. -+ Now delete the "tags" file and run this command: > -+ :!start /b ctags -R . -+ < You should have the same "tags" file, but this time there will be no -+ blinking on the taskbar. -+ Example for a GUI application: > -+ :!start /min notepad -+ :!start /b notepad -+ < The first command runs notepad minimized and the second one runs it -+ normally. - - Q. I'm using Win32s, and when I try to run an external command like "make", - Vim doesn't wait for it to finish! Help! -*** ../vim-7.3.230/src/version.c 2011-06-20 05:02:53.000000000 +0200 ---- src/version.c 2011-06-26 03:14:03.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 231, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -222. You send more than 20 personal e-mails a day. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.232 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.232 -Problem: Python doesn't compile without +multi_byte -Solution: Use "latin1" when MULTI_BYTE is not defined. -Files: src/if_py_both.h - - -*** ../vim-7.3.231/src/if_py_both.h 2011-06-19 00:27:46.000000000 +0200 ---- src/if_py_both.h 2011-06-26 03:58:07.000000000 +0200 -*************** -*** 12,17 **** ---- 12,23 ---- - * Common code for if_python.c and if_python3.c. - */ - -+ #ifdef FEAT_MBYTE -+ # define ENC_OPT p_enc -+ #else -+ # define ENC_OPT "latin1" -+ #endif -+ - /* - * obtain a lock on the Vim data structures - */ -*************** -*** 68,74 **** - char *str = NULL; - int error = ((OutputObject *)(self))->error; - -! if (!PyArg_ParseTuple(args, "es#", p_enc, &str, &len)) - return NULL; - - Py_BEGIN_ALLOW_THREADS ---- 74,80 ---- - char *str = NULL; - int error = ((OutputObject *)(self))->error; - -! if (!PyArg_ParseTuple(args, "es#", ENC_OPT, &str, &len)) - return NULL; - - Py_BEGIN_ALLOW_THREADS -*************** -*** 108,114 **** - char *str = NULL; - PyInt len; - -! if (!PyArg_Parse(line, "es#", p_enc, &str, &len)) { - PyErr_SetString(PyExc_TypeError, _("writelines() requires list of strings")); - Py_DECREF(list); - return NULL; ---- 114,120 ---- - char *str = NULL; - PyInt len; - -! if (!PyArg_Parse(line, "es#", ENC_OPT, &str, &len)) { - PyErr_SetString(PyExc_TypeError, _("writelines() requires list of strings")); - Py_DECREF(list); - return NULL; -*** ../vim-7.3.231/src/version.c 2011-06-26 03:16:58.000000000 +0200 ---- src/version.c 2011-06-26 04:00:40.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 232, - /**/ - --- -If evolution theories are correct, humans will soon grow a third -hand for operating the mouse. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.233 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.233 -Problem: ":scriptnames" and ":breaklist" show long file names. -Solution: Shorten to use "~/" when possible. (Jean-Rene David) -Files: src/ex_cmds2.c - - -*** ../vim-7.3.232/src/ex_cmds2.c 2011-05-19 18:26:34.000000000 +0200 ---- src/ex_cmds2.c 2011-06-26 04:20:24.000000000 +0200 -*************** -*** 682,691 **** - for (i = 0; i < dbg_breakp.ga_len; ++i) - { - bp = &BREAKP(i); - smsg((char_u *)_("%3d %s %s line %ld"), - bp->dbg_nr, - bp->dbg_type == DBG_FUNC ? "func" : "file", -! bp->dbg_name, - (long)bp->dbg_lnum); - } - } ---- 682,693 ---- - for (i = 0; i < dbg_breakp.ga_len; ++i) - { - bp = &BREAKP(i); -+ if (bp->dbg_type == DBG_FILE) -+ home_replace(NULL, bp->dbg_name, NameBuff, MAXPATHL, TRUE); - smsg((char_u *)_("%3d %s %s line %ld"), - bp->dbg_nr, - bp->dbg_type == DBG_FUNC ? "func" : "file", -! bp->dbg_type == DBG_FUNC ? bp->dbg_name : NameBuff, - (long)bp->dbg_lnum); - } - } -*************** -*** 3268,3274 **** - - for (i = 1; i <= script_items.ga_len && !got_int; ++i) - if (SCRIPT_ITEM(i).sn_name != NULL) -! smsg((char_u *)"%3d: %s", i, SCRIPT_ITEM(i).sn_name); - } - - # if defined(BACKSLASH_IN_FILENAME) || defined(PROTO) ---- 3270,3280 ---- - - for (i = 1; i <= script_items.ga_len && !got_int; ++i) - if (SCRIPT_ITEM(i).sn_name != NULL) -! { -! home_replace(NULL, SCRIPT_ITEM(i).sn_name, -! NameBuff, MAXPATHL, TRUE); -! smsg((char_u *)"%3d: %s", i, NameBuff); -! } - } - - # if defined(BACKSLASH_IN_FILENAME) || defined(PROTO) -*** ../vim-7.3.232/src/version.c 2011-06-26 04:01:37.000000000 +0200 ---- src/version.c 2011-06-26 04:23:48.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 233, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -223. You set up a web-cam as your home's security system. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.234 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.234 -Problem: With GTK menu may be popping down. -Solution: Use event time instead of GDK_CURRENT_TIME. (Hong Xu) -Files: src/gui.c, src/gui.h, src/gui_gtk.c, src/gui_gtk_x11.c - - -*** ../vim-7.3.233/src/gui.c 2011-06-20 00:53:10.000000000 +0200 ---- src/gui.c 2011-06-26 04:38:09.000000000 +0200 -*************** -*** 84,89 **** ---- 84,93 ---- - gui.starting = TRUE; - full_screen = FALSE; - -+ #ifdef FEAT_GUI_GTK -+ gui.event_time = GDK_CURRENT_TIME; -+ #endif -+ - #ifdef MAY_FORK - if (!gui.dofork || vim_strchr(p_go, GO_FORG) || recursive) - dofork = FALSE; -*** ../vim-7.3.233/src/gui.h 2011-05-10 16:41:13.000000000 +0200 ---- src/gui.h 2011-06-26 04:41:21.000000000 +0200 -*************** -*** 401,406 **** ---- 401,408 ---- - GtkAccelGroup *accel_group; - GtkWidget *filedlg; /* file selection dialog */ - char_u *browse_fname; /* file name from filedlg */ -+ -+ guint32 event_time; - #endif /* FEAT_GUI_GTK */ - - #if defined(FEAT_GUI_TABLINE) \ -*** ../vim-7.3.233/src/gui_gtk.c 2011-01-17 20:08:03.000000000 +0100 ---- src/gui_gtk.c 2011-06-26 04:38:09.000000000 +0200 -*************** -*** 1391,1397 **** - gtk_menu_popup(GTK_MENU(menu->submenu_id), - NULL, NULL, - (GtkMenuPositionFunc)NULL, NULL, -! 3U, (guint32)GDK_CURRENT_TIME); - } - - /* Ugly global variable to pass "mouse_pos" flag from gui_make_popup() to ---- 1391,1397 ---- - gtk_menu_popup(GTK_MENU(menu->submenu_id), - NULL, NULL, - (GtkMenuPositionFunc)NULL, NULL, -! 3U, gui.event_time); - } - - /* Ugly global variable to pass "mouse_pos" flag from gui_make_popup() to -*** ../vim-7.3.233/src/gui_gtk_x11.c 2011-06-19 01:14:22.000000000 +0200 ---- src/gui_gtk_x11.c 2011-06-26 04:39:57.000000000 +0200 -*************** -*** 88,95 **** - # include <X11/Sunkeysym.h> - #endif - -- static guint32 clipboard_event_time = CurrentTime; -- - /* - * Easy-to-use macro for multihead support. - */ ---- 88,93 ---- -*************** -*** 934,940 **** - guint state; - char_u *s, *d; - -! clipboard_event_time = event->time; - key_sym = event->keyval; - state = event->state; - ---- 932,938 ---- - guint state; - char_u *s, *d; - -! gui.event_time = event->time; - key_sym = event->keyval; - state = event->state; - -*************** -*** 1129,1135 **** - GdkEventKey *event, - gpointer data UNUSED) - { -! clipboard_event_time = event->time; - /* - * GTK+ 2 input methods may do fancy stuff on key release events too. - * With the default IM for instance, you can enter any UCS code point ---- 1127,1133 ---- - GdkEventKey *event, - gpointer data UNUSED) - { -! gui.event_time = event->time; - /* - * GTK+ 2 input methods may do fancy stuff on key release events too. - * With the default IM for instance, you can enter any UCS code point -*************** -*** 1622,1628 **** - int x, y; - int_u vim_modifiers; - -! clipboard_event_time = event->time; - - /* Make sure we have focus now we've been selected */ - if (gtk_socket_id != 0 && !GTK_WIDGET_HAS_FOCUS(widget)) ---- 1620,1626 ---- - int x, y; - int_u vim_modifiers; - -! gui.event_time = event->time; - - /* Make sure we have focus now we've been selected */ - if (gtk_socket_id != 0 && !GTK_WIDGET_HAS_FOCUS(widget)) -*************** -*** 1733,1739 **** - int x, y; - int_u vim_modifiers; - -! clipboard_event_time = event->time; - - /* Remove any motion "machine gun" timers used for automatic further - extension of allocation areas if outside of the applications window ---- 1731,1737 ---- - int x, y; - int_u vim_modifiers; - -! gui.event_time = event->time; - - /* Remove any motion "machine gun" timers used for automatic further - extension of allocation areas if outside of the applications window -*************** -*** 5654,5660 **** - int success; - - success = gtk_selection_owner_set(gui.drawarea, cbd->gtk_sel_atom, -! clipboard_event_time); - gui_mch_update(); - return (success) ? OK : FAIL; - } ---- 5652,5658 ---- - int success; - - success = gtk_selection_owner_set(gui.drawarea, cbd->gtk_sel_atom, -! gui.event_time); - gui_mch_update(); - return (success) ? OK : FAIL; - } -*** ../vim-7.3.233/src/version.c 2011-06-26 04:25:24.000000000 +0200 ---- src/version.c 2011-06-26 04:47:02.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 234, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -225. You sign up for free subscriptions for all the computer magazines - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.235 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.235 -Problem: ";" gets stuck on a "t" command, it's not useful. -Solution: Add the ';' flag in 'cpo'. (Christian Brabandt) -Files: runtime/doc/motion.txt, runtime/doc/options.txt, src/option.h, - src/search.c src/testdir/test81.in, src/testdir/test81.ok, - src/testdir/Makefile, src/testdir/Make_amiga.mak, - src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, - src/testdir/Make_os2.mak, src/testdir/Make_vms.mms - - -*** ../vim-7.3.234/runtime/doc/motion.txt 2010-08-15 21:57:17.000000000 +0200 ---- runtime/doc/motion.txt 2011-06-26 05:15:58.000000000 +0200 -*************** -*** 269,279 **** - {char} can be entered like with the |f| command. - - *;* -! ; Repeat latest f, t, F or T [count] times. - - *,* - , Repeat latest f, t, F or T in opposite direction -! [count] times. - - ============================================================================== - 3. Up-down motions *up-down-motions* ---- 269,279 ---- - {char} can be entered like with the |f| command. - - *;* -! ; Repeat latest f, t, F or T [count] times. See |cpo-;| - - *,* - , Repeat latest f, t, F or T in opposite direction -! [count] times. See also |cpo-;| - - ============================================================================== - 3. Up-down motions *up-down-motions* -*** ../vim-7.3.234/runtime/doc/options.txt 2011-06-12 20:42:17.000000000 +0200 ---- runtime/doc/options.txt 2011-06-26 05:15:58.000000000 +0200 -*************** -*** 2090,2095 **** ---- 2117,2128 ---- - *cpo->* - > When appending to a register, put a line break before - the appended text. -+ *cpo-;* -+ ; When using |,| or |;| to repeat the last |t| search -+ and the cursor is right in front of the searched -+ character, the cursor won't move. When not included, -+ the cursor would skip over it and jump to the -+ following occurence. - - POSIX flags. These are not included in the Vi default value, except - when $VIM_POSIX was set on startup. |posix| -*** ../vim-7.3.234/src/option.h 2011-06-12 22:13:37.000000000 +0200 ---- src/option.h 2011-06-26 05:17:58.000000000 +0200 -*************** -*** 169,178 **** - #define CPO_SUBPERCENT '/' /* % in :s string uses previous one */ - #define CPO_BACKSL '\\' /* \ is not special in [] */ - #define CPO_CHDIR '.' /* don't chdir if buffer is modified */ - /* default values for Vim, Vi and POSIX */ - #define CPO_VIM "aABceFs" -! #define CPO_VI "aAbBcCdDeEfFgHiIjJkKlLmMnoOpPqrRsStuvwWxXyZ$!%*-+<>" -! #define CPO_ALL "aAbBcCdDeEfFgHiIjJkKlLmMnoOpPqrRsStuvwWxXyZ$!%*-+<>#{|&/\\." - - /* characters for p_ww option: */ - #define WW_ALL "bshl<>[],~" ---- 169,180 ---- - #define CPO_SUBPERCENT '/' /* % in :s string uses previous one */ - #define CPO_BACKSL '\\' /* \ is not special in [] */ - #define CPO_CHDIR '.' /* don't chdir if buffer is modified */ -+ #define CPO_SCOLON ';' /* using "," and ";" will skip over char if -+ * cursor would not move */ - /* default values for Vim, Vi and POSIX */ - #define CPO_VIM "aABceFs" -! #define CPO_VI "aAbBcCdDeEfFgHiIjJkKlLmMnoOpPqrRsStuvwWxXyZ$!%*-+<>;" -! #define CPO_ALL "aAbBcCdDeEfFgHiIjJkKlLmMnoOpPqrRsStuvwWxXyZ$!%*-+<>#{|&/\\.;" - - /* characters for p_ww option: */ - #define WW_ALL "bshl<>[],~" -*** ../vim-7.3.234/src/search.c 2011-05-10 16:41:13.000000000 +0200 ---- src/search.c 2011-06-26 05:20:45.000000000 +0200 -*************** -*** 1546,1551 **** ---- 1546,1552 ---- - int col; - char_u *p; - int len; -+ int stop = TRUE; - #ifdef FEAT_MBYTE - static char_u bytes[MB_MAXBYTES]; - static int bytelen = 1; /* >1 for multi-byte char */ -*************** -*** 1580,1585 **** ---- 1581,1592 ---- - t_cmd = last_t_cmd; - c = lastc; - /* For multi-byte re-use last bytes[] and bytelen. */ -+ -+ /* Force a move of at least one char, so ";" and "," will move the -+ * cursor, even if the cursor is right in front of char we are looking -+ * at. */ -+ if (vim_strchr(p_cpo, CPO_SCOLON) == NULL && count == 1) -+ stop = FALSE; - } - - if (dir == BACKWARD) -*************** -*** 1612,1625 **** - } - if (bytelen == 1) - { -! if (p[col] == c) - break; - } - else - { -! if (vim_memcmp(p + col, bytes, bytelen) == 0) - break; - } - } - } - else ---- 1619,1633 ---- - } - if (bytelen == 1) - { -! if (p[col] == c && stop) - break; - } - else - { -! if (vim_memcmp(p + col, bytes, bytelen) == 0 && stop) - break; - } -+ stop = TRUE; - } - } - else -*************** -*** 1629,1636 **** - { - if ((col += dir) < 0 || col >= len) - return FAIL; -! if (p[col] == c) - break; - } - } - } ---- 1637,1645 ---- - { - if ((col += dir) < 0 || col >= len) - return FAIL; -! if (p[col] == c && stop) - break; -+ stop = TRUE; - } - } - } -*** ../vim-7.3.234/src/testdir/test81.in 2011-06-26 05:34:33.000000000 +0200 ---- src/testdir/test81.in 2011-06-26 05:30:31.000000000 +0200 -*************** -*** 0 **** ---- 1,18 ---- -+ Test for t movement command and 'cpo-;' setting -+ -+ STARTTEST -+ :set nocompatible -+ :set cpo-=; -+ /firstline/ -+ j0tt;D -+ $Ty;D:set cpo+=; -+ j0tt;;D -+ $Ty;;D:?firstline?+1,$w! test.out -+ :qa! -+ ENDTEST -+ -+ firstline -+ aaa two three four -+ bbb yee yoo four -+ ccc two three four -+ ddd yee yoo four -*** ../vim-7.3.234/src/testdir/test81.ok 2011-06-26 05:34:33.000000000 +0200 ---- src/testdir/test81.ok 2011-06-26 05:31:33.000000000 +0200 -*************** -*** 0 **** ---- 1,4 ---- -+ aaa two -+ bbb y -+ ccc -+ ddd yee y -*** ../vim-7.3.234/src/testdir/Makefile 2011-06-19 04:31:54.000000000 +0200 ---- src/testdir/Makefile 2011-06-26 05:09:56.000000000 +0200 -*************** -*** 26,32 **** - test64.out test65.out test66.out test67.out test68.out \ - test69.out test70.out test71.out test72.out test73.out \ - test74.out test75.out test76.out test77.out test78.out \ -! test79.out test80.out - - SCRIPTS_GUI = test16.out - ---- 26,32 ---- - test64.out test65.out test66.out test67.out test68.out \ - test69.out test70.out test71.out test72.out test73.out \ - test74.out test75.out test76.out test77.out test78.out \ -! test79.out test80.out test81.out - - SCRIPTS_GUI = test16.out - -*** ../vim-7.3.234/src/testdir/Make_amiga.mak 2011-06-19 04:31:54.000000000 +0200 ---- src/testdir/Make_amiga.mak 2011-06-26 05:09:07.000000000 +0200 -*************** -*** 28,34 **** - test61.out test62.out test63.out test64.out test65.out \ - test66.out test67.out test68.out test69.out test70.out \ - test71.out test72.out test73.out test74.out test75.out \ -! test76.out test77.out test78.out test79.out test80.out - - .SUFFIXES: .in .out - ---- 28,35 ---- - test61.out test62.out test63.out test64.out test65.out \ - test66.out test67.out test68.out test69.out test70.out \ - test71.out test72.out test73.out test74.out test75.out \ -! test76.out test77.out test78.out test79.out test80.out \ -! test81.out - - .SUFFIXES: .in .out - -*************** -*** 128,130 **** ---- 129,132 ---- - test78.out: test78.in - test79.out: test79.in - test80.out: test80.in -+ test81.out: test81.in -*** ../vim-7.3.234/src/testdir/Make_dos.mak 2011-06-19 04:31:54.000000000 +0200 ---- src/testdir/Make_dos.mak 2011-06-26 05:09:16.000000000 +0200 -*************** -*** 29,35 **** - test42.out test52.out test65.out test66.out test67.out \ - test68.out test69.out test71.out test72.out test73.out \ - test74.out test75.out test76.out test77.out test78.out \ -! test79.out test80.out - - SCRIPTS32 = test50.out test70.out - ---- 29,35 ---- - test42.out test52.out test65.out test66.out test67.out \ - test68.out test69.out test71.out test72.out test73.out \ - test74.out test75.out test76.out test77.out test78.out \ -! test79.out test80.out test81.out - - SCRIPTS32 = test50.out test70.out - -*** ../vim-7.3.234/src/testdir/Make_ming.mak 2011-06-19 04:31:54.000000000 +0200 ---- src/testdir/Make_ming.mak 2011-06-26 05:09:24.000000000 +0200 -*************** -*** 49,55 **** - test42.out test52.out test65.out test66.out test67.out \ - test68.out test69.out test71.out test72.out test73.out \ - test74.out test75.out test76.out test77.out test78.out \ -! test79.out test80.out - - SCRIPTS32 = test50.out test70.out - ---- 49,55 ---- - test42.out test52.out test65.out test66.out test67.out \ - test68.out test69.out test71.out test72.out test73.out \ - test74.out test75.out test76.out test77.out test78.out \ -! test79.out test80.out test81.out - - SCRIPTS32 = test50.out test70.out - -*** ../vim-7.3.234/src/testdir/Make_os2.mak 2011-06-19 04:31:54.000000000 +0200 ---- src/testdir/Make_os2.mak 2011-06-26 05:09:33.000000000 +0200 -*************** -*** 28,34 **** - test61.out test62.out test63.out test64.out test65.out \ - test66.out test67.out test68.out test69.out test70.out \ - test71.out test72.out test73.out test74.out test75.out \ -! test76.out test77.out test78.out test79.out test80.out - - .SUFFIXES: .in .out - ---- 28,35 ---- - test61.out test62.out test63.out test64.out test65.out \ - test66.out test67.out test68.out test69.out test70.out \ - test71.out test72.out test73.out test74.out test75.out \ -! test76.out test77.out test78.out test79.out test80.out \ -! test81.out - - .SUFFIXES: .in .out - -*** ../vim-7.3.234/src/testdir/Make_vms.mms 2011-06-19 04:31:54.000000000 +0200 ---- src/testdir/Make_vms.mms 2011-06-26 05:09:42.000000000 +0200 -*************** -*** 4,10 **** - # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> - # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> - # -! # Last change: 2011 Jun 19 - # - # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. - # Edit the lines in the Configuration section below to select. ---- 4,10 ---- - # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> - # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> - # -! # Last change: 2011 Jun 26 - # - # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. - # Edit the lines in the Configuration section below to select. -*************** -*** 75,81 **** - test61.out test62.out test63.out test64.out test65.out \ - test66.out test67.out test68.out test69.out \ - test71.out test72.out test74.out test75.out test76.out \ -! test77.out test78.out test79.out test80.out - - # Known problems: - # Test 30: a problem around mac format - unknown reason ---- 75,81 ---- - test61.out test62.out test63.out test64.out test65.out \ - test66.out test67.out test68.out test69.out \ - test71.out test72.out test74.out test75.out test76.out \ -! test77.out test78.out test79.out test80.out test81.out - - # Known problems: - # Test 30: a problem around mac format - unknown reason -*** ../vim-7.3.234/src/version.c 2011-06-26 04:48:56.000000000 +0200 ---- src/version.c 2011-06-26 05:33:53.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 235, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -226. You sit down at the computer right after dinner and your spouse - says "See you in the morning." - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.236 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.236 (after 7.3.232) -Problem: Python 3 doesn't compile without +multi_byte -Solution: Use "latin1" when MULTI_BYTE is not defined. (lilydjwg) -Files: src/if_python3.c - - -*** ../vim-7.3.235/src/if_python3.c 2011-06-19 00:27:46.000000000 +0200 ---- src/if_python3.c 2011-06-26 19:10:57.000000000 +0200 -*************** -*** 70,76 **** - - #define PyInt Py_ssize_t - #define PyString_Check(obj) PyUnicode_Check(obj) -! #define PyString_AsBytes(obj) PyUnicode_AsEncodedString(obj, (char *)p_enc, NULL); - #define PyString_FreeBytes(obj) Py_XDECREF(bytes) - #define PyString_AsString(obj) PyBytes_AsString(obj) - #define PyString_Size(obj) PyBytes_GET_SIZE(bytes) ---- 70,76 ---- - - #define PyInt Py_ssize_t - #define PyString_Check(obj) PyUnicode_Check(obj) -! #define PyString_AsBytes(obj) PyUnicode_AsEncodedString(obj, (char *)ENC_OPT, NULL); - #define PyString_FreeBytes(obj) Py_XDECREF(bytes) - #define PyString_AsString(obj) PyBytes_AsString(obj) - #define PyString_Size(obj) PyBytes_GET_SIZE(bytes) -*************** -*** 661,667 **** - - /* PyRun_SimpleString expects a UTF-8 string. Wrong encoding may cause - * SyntaxError (unicode error). */ -! cmdstr = PyUnicode_Decode(cmd, strlen(cmd), (char *)p_enc, NULL); - cmdbytes = PyUnicode_AsEncodedString(cmdstr, "utf-8", NULL); - Py_XDECREF(cmdstr); - PyRun_SimpleString(PyBytes_AsString(cmdbytes)); ---- 661,667 ---- - - /* PyRun_SimpleString expects a UTF-8 string. Wrong encoding may cause - * SyntaxError (unicode error). */ -! cmdstr = PyUnicode_Decode(cmd, strlen(cmd), (char *)ENC_OPT, NULL); - cmdbytes = PyUnicode_AsEncodedString(cmdstr, "utf-8", NULL); - Py_XDECREF(cmdstr); - PyRun_SimpleString(PyBytes_AsString(cmdbytes)); -*************** -*** 1463,1469 **** - } - *p = '\0'; - -! result = PyUnicode_Decode(tmp, len, (char *)p_enc, NULL); - - vim_free(tmp); - return result; ---- 1463,1469 ---- - } - *p = '\0'; - -! result = PyUnicode_Decode(tmp, len, (char *)ENC_OPT, NULL); - - vim_free(tmp); - return result; -*** ../vim-7.3.235/src/version.c 2011-06-26 05:36:07.000000000 +0200 ---- src/version.c 2011-06-26 19:12:12.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 236, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -228. You spend Saturday night making the counter on your home page - pass that 2000 mark. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.237 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.237 -Problem: "filetype" completion doesn't work on Windows. (Yue Wu) -Solution: Don't use a glob pattern for the directories, use a list of - directories. (Dominique Pelle) -Files: src/ex_getln.c - - -*** ../vim-7.3.236/src/ex_getln.c 2011-05-19 18:26:34.000000000 +0200 ---- src/ex_getln.c 2011-06-26 19:36:36.000000000 +0200 -*************** -*** 110,116 **** - static int expand_showtail __ARGS((expand_T *xp)); - #ifdef FEAT_CMDL_COMPL - static int expand_shellcmd __ARGS((char_u *filepat, int *num_file, char_u ***file, int flagsarg)); -! static int ExpandRTDir __ARGS((char_u *pat, int *num_file, char_u ***file, char *dirname)); - # if defined(FEAT_USR_CMDS) && defined(FEAT_EVAL) - static int ExpandUserDefined __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file)); - static int ExpandUserList __ARGS((expand_T *xp, int *num_file, char_u ***file)); ---- 110,116 ---- - static int expand_showtail __ARGS((expand_T *xp)); - #ifdef FEAT_CMDL_COMPL - static int expand_shellcmd __ARGS((char_u *filepat, int *num_file, char_u ***file, int flagsarg)); -! static int ExpandRTDir __ARGS((char_u *pat, int *num_file, char_u ***file, char *dirname[])); - # if defined(FEAT_USR_CMDS) && defined(FEAT_EVAL) - static int ExpandUserDefined __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file)); - static int ExpandUserList __ARGS((expand_T *xp, int *num_file, char_u ***file)); -*************** -*** 4536,4548 **** - || xp->xp_context == EXPAND_TAGS_LISTFILES) - return expand_tags(xp->xp_context == EXPAND_TAGS, pat, num_file, file); - if (xp->xp_context == EXPAND_COLORS) -! return ExpandRTDir(pat, num_file, file, "colors"); - if (xp->xp_context == EXPAND_COMPILER) -! return ExpandRTDir(pat, num_file, file, "compiler"); - if (xp->xp_context == EXPAND_OWNSYNTAX) -! return ExpandRTDir(pat, num_file, file, "syntax"); - if (xp->xp_context == EXPAND_FILETYPE) -! return ExpandRTDir(pat, num_file, file, "{syntax,indent,ftplugin}"); - # if defined(FEAT_USR_CMDS) && defined(FEAT_EVAL) - if (xp->xp_context == EXPAND_USER_LIST) - return ExpandUserList(xp, num_file, file); ---- 4536,4560 ---- - || xp->xp_context == EXPAND_TAGS_LISTFILES) - return expand_tags(xp->xp_context == EXPAND_TAGS, pat, num_file, file); - if (xp->xp_context == EXPAND_COLORS) -! { -! char *directories[] = {"colors", NULL}; -! return ExpandRTDir(pat, num_file, file, directories); -! } - if (xp->xp_context == EXPAND_COMPILER) -! { -! char *directories[] = {"colors", NULL}; -! return ExpandRTDir(pat, num_file, file, directories); -! } - if (xp->xp_context == EXPAND_OWNSYNTAX) -! { -! char *directories[] = {"syntax", NULL}; -! return ExpandRTDir(pat, num_file, file, directories); -! } - if (xp->xp_context == EXPAND_FILETYPE) -! { -! char *directories[] = {"syntax", "indent", "ftplugin", NULL}; -! return ExpandRTDir(pat, num_file, file, directories); -! } - # if defined(FEAT_USR_CMDS) && defined(FEAT_EVAL) - if (xp->xp_context == EXPAND_USER_LIST) - return ExpandUserList(xp, num_file, file); -*************** -*** 4995,5051 **** - /* - * Expand color scheme, compiler or filetype names: - * 'runtimepath'/{dirnames}/{pat}.vim -! * dirnames may contain one directory (ex: "colorscheme") or can be a glob -! * expression matching multiple directories (ex: "{syntax,ftplugin,indent}"). - */ - static int - ExpandRTDir(pat, num_file, file, dirnames) - char_u *pat; - int *num_file; - char_u ***file; -! char *dirnames; - { -! char_u *all; - char_u *s; - char_u *e; - garray_T ga; - - *num_file = 0; - *file = NULL; -! s = alloc((unsigned)(STRLEN(pat) + STRLEN(dirnames) + 7)); -! if (s == NULL) -! return FAIL; -! sprintf((char *)s, "%s/%s*.vim", dirnames, pat); -! all = globpath(p_rtp, s, 0); -! vim_free(s); -! if (all == NULL) -! return FAIL; - -! ga_init2(&ga, (int)sizeof(char *), 3); -! for (s = all; *s != NUL; s = e) - { -! e = vim_strchr(s, '\n'); -! if (e == NULL) -! e = s + STRLEN(s); -! if (ga_grow(&ga, 1) == FAIL) -! break; -! if (e - 4 > s && STRNICMP(e - 4, ".vim", 4) == 0) - { -! for (s = e - 4; s > all; mb_ptr_back(all, s)) -! if (*s == '\n' || vim_ispathsep(*s)) -! break; -! ++s; -! ((char_u **)ga.ga_data)[ga.ga_len] = - vim_strnsave(s, (int)(e - s - 4)); -! ++ga.ga_len; - } -! if (*e != NUL) -! ++e; - } -! vim_free(all); - - /* Sort and remove duplicates which can happen when specifying multiple -! * directories in dirnames such as "{syntax,ftplugin,indent}". */ - remove_duplicates(&ga); - - *file = ga.ga_data; ---- 5007,5074 ---- - /* - * Expand color scheme, compiler or filetype names: - * 'runtimepath'/{dirnames}/{pat}.vim -! * "dirnames" is an array with one or more directory names. - */ - static int - ExpandRTDir(pat, num_file, file, dirnames) - char_u *pat; - int *num_file; - char_u ***file; -! char *dirnames[]; - { -! char_u *matches; - char_u *s; - char_u *e; - garray_T ga; -+ int i; -+ int pat_len; - - *num_file = 0; - *file = NULL; -! pat_len = STRLEN(pat); -! ga_init2(&ga, (int)sizeof(char *), 10); - -! for (i = 0; dirnames[i] != NULL; ++i) - { -! s = alloc((unsigned)(STRLEN(dirnames[i]) + pat_len + 7)); -! if (s == NULL) - { -! ga_clear_strings(&ga); -! return FAIL; -! } -! sprintf((char *)s, "%s/%s*.vim", dirnames[i], pat); -! matches = globpath(p_rtp, s, 0); -! vim_free(s); -! if (matches == NULL) -! continue; -! -! for (s = matches; *s != NUL; s = e) -! { -! e = vim_strchr(s, '\n'); -! if (e == NULL) -! e = s + STRLEN(s); -! if (ga_grow(&ga, 1) == FAIL) -! break; -! if (e - 4 > s && STRNICMP(e - 4, ".vim", 4) == 0) -! { -! for (s = e - 4; s > matches; mb_ptr_back(matches, s)) -! if (*s == '\n' || vim_ispathsep(*s)) -! break; -! ++s; -! ((char_u **)ga.ga_data)[ga.ga_len] = - vim_strnsave(s, (int)(e - s - 4)); -! ++ga.ga_len; -! } -! if (*e != NUL) -! ++e; - } -! vim_free(matches); - } -! if (ga.ga_len == 0) -! return FAIL; - - /* Sort and remove duplicates which can happen when specifying multiple -! * directories in dirnames. */ - remove_duplicates(&ga); - - *file = ga.ga_data; -*** ../vim-7.3.236/src/version.c 2011-06-26 19:13:33.000000000 +0200 ---- src/version.c 2011-06-26 19:39:39.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 237, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -230. You spend your Friday nights typing away at your keyboard - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.238 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.238 -Problem: Compiler warning for conversion. -Solution: Add type cast. (Mike Williams) -Files: src/ex_getln.c - - -*** ../vim-7.3.237/src/ex_getln.c 2011-06-26 19:40:14.000000000 +0200 ---- src/ex_getln.c 2011-07-04 14:23:27.000000000 +0200 -*************** -*** 5025,5031 **** - - *num_file = 0; - *file = NULL; -! pat_len = STRLEN(pat); - ga_init2(&ga, (int)sizeof(char *), 10); - - for (i = 0; dirnames[i] != NULL; ++i) ---- 5025,5031 ---- - - *num_file = 0; - *file = NULL; -! pat_len = (int)STRLEN(pat); - ga_init2(&ga, (int)sizeof(char *), 10); - - for (i = 0; dirnames[i] != NULL; ++i) -*** ../vim-7.3.237/src/version.c 2011-06-26 19:40:14.000000000 +0200 ---- src/version.c 2011-07-07 15:04:00.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 238, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -255. You work for a newspaper and your editor asks you to write an - article about Internet addiction...in the "first person." - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.239 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.239 -Problem: Python corrects the cursor column without taking 'virtualedit' - into account. (lilydjwg) -Solution: Call check_cursor_col_win(). -Files: src/if_py_both.h, src/mbyte.c, src/misc2.c, src/normal.c, - src/proto/mbyte.pro, src/proto/misc2.pro - - -*** ../vim-7.3.238/src/if_py_both.h 2011-06-26 04:01:37.000000000 +0200 ---- src/if_py_both.h 2011-07-07 14:28:19.000000000 +0200 -*************** -*** 534,540 **** - { - long lnum; - long col; -- long len; - - if (!PyArg_Parse(val, "(ll)", &lnum, &col)) - return -1; ---- 534,539 ---- -*************** -*** 549,566 **** - if (VimErrorCheck()) - return -1; - -- /* When column is out of range silently correct it. */ -- len = (long)STRLEN(ml_get_buf(this->win->w_buffer, lnum, FALSE)); -- if (col > len) -- col = len; -- - this->win->w_cursor.lnum = lnum; - this->win->w_cursor.col = col; - #ifdef FEAT_VIRTUALEDIT - this->win->w_cursor.coladd = 0; - #endif -! update_screen(VALID); - - return 0; - } - else if (strcmp(name, "height") == 0) ---- 548,562 ---- - if (VimErrorCheck()) - return -1; - - this->win->w_cursor.lnum = lnum; - this->win->w_cursor.col = col; - #ifdef FEAT_VIRTUALEDIT - this->win->w_cursor.coladd = 0; - #endif -! /* When column is out of range silently correct it. */ -! check_cursor_col_win(this->win); - -+ update_screen(VALID); - return 0; - } - else if (strcmp(name, "height") == 0) -*** ../vim-7.3.238/src/mbyte.c 2011-04-11 14:29:13.000000000 +0200 ---- src/mbyte.c 2011-07-07 14:27:07.000000000 +0200 -*************** -*** 3563,3569 **** - void - mb_adjust_cursor() - { -! mb_adjustpos(&curwin->w_cursor); - } - - /* ---- 3563,3569 ---- - void - mb_adjust_cursor() - { -! mb_adjustpos(curbuf, &curwin->w_cursor); - } - - /* -*************** -*** 3571,3577 **** - * If it points to a tail byte it's moved backwards to the head byte. - */ - void -! mb_adjustpos(lp) - pos_T *lp; - { - char_u *p; ---- 3571,3578 ---- - * If it points to a tail byte it's moved backwards to the head byte. - */ - void -! mb_adjustpos(buf, lp) -! buf_T *buf; - pos_T *lp; - { - char_u *p; -*************** -*** 3582,3588 **** - #endif - ) - { -! p = ml_get(lp->lnum); - lp->col -= (*mb_head_off)(p, p + lp->col); - #ifdef FEAT_VIRTUALEDIT - /* Reset "coladd" when the cursor would be on the right half of a ---- 3583,3589 ---- - #endif - ) - { -! p = ml_get_buf(buf, lp->lnum, FALSE); - lp->col -= (*mb_head_off)(p, p + lp->col); - #ifdef FEAT_VIRTUALEDIT - /* Reset "coladd" when the cursor would be on the right half of a -*** ../vim-7.3.238/src/misc2.c 2011-04-11 16:56:29.000000000 +0200 ---- src/misc2.c 2011-07-07 14:27:50.000000000 +0200 -*************** -*** 333,339 **** - #ifdef FEAT_MBYTE - /* prevent from moving onto a trail byte */ - if (has_mbyte) -! mb_adjustpos(pos); - #endif - - if (col < wcol) ---- 333,339 ---- - #ifdef FEAT_MBYTE - /* prevent from moving onto a trail byte */ - if (has_mbyte) -! mb_adjustpos(curbuf, pos); - #endif - - if (col < wcol) -*************** -*** 544,559 **** - void - check_cursor_col() - { - colnr_T len; - #ifdef FEAT_VIRTUALEDIT -! colnr_T oldcol = curwin->w_cursor.col; -! colnr_T oldcoladd = curwin->w_cursor.col + curwin->w_cursor.coladd; - #endif - -! len = (colnr_T)STRLEN(ml_get_curline()); - if (len == 0) -! curwin->w_cursor.col = 0; -! else if (curwin->w_cursor.col >= len) - { - /* Allow cursor past end-of-line when: - * - in Insert mode or restarting Insert mode ---- 544,569 ---- - void - check_cursor_col() - { -+ check_cursor_col_win(curwin); -+ } -+ -+ /* -+ * Make sure win->w_cursor.col is valid. -+ */ -+ void -+ check_cursor_col_win(win) -+ win_T *win; -+ { - colnr_T len; - #ifdef FEAT_VIRTUALEDIT -! colnr_T oldcol = win->w_cursor.col; -! colnr_T oldcoladd = win->w_cursor.col + win->w_cursor.coladd; - #endif - -! len = (colnr_T)STRLEN(ml_get_buf(win->w_buffer, win->w_cursor.lnum, FALSE)); - if (len == 0) -! win->w_cursor.col = 0; -! else if (win->w_cursor.col >= len) - { - /* Allow cursor past end-of-line when: - * - in Insert mode or restarting Insert mode -*************** -*** 567,599 **** - || (ve_flags & VE_ONEMORE) - #endif - || virtual_active()) -! curwin->w_cursor.col = len; - else - { -! curwin->w_cursor.col = len - 1; - #ifdef FEAT_MBYTE -! /* prevent cursor from moving on the trail byte */ - if (has_mbyte) -! mb_adjust_cursor(); - #endif - } - } -! else if (curwin->w_cursor.col < 0) -! curwin->w_cursor.col = 0; - - #ifdef FEAT_VIRTUALEDIT - /* If virtual editing is on, we can leave the cursor on the old position, - * only we must set it to virtual. But don't do it when at the end of the - * line. */ - if (oldcol == MAXCOL) -! curwin->w_cursor.coladd = 0; - else if (ve_flags == VE_ALL) - { -! if (oldcoladd > curwin->w_cursor.col) -! curwin->w_cursor.coladd = oldcoladd - curwin->w_cursor.col; - else - /* avoid weird number when there is a miscalculation or overflow */ -! curwin->w_cursor.coladd = 0; - } - #endif - } ---- 577,609 ---- - || (ve_flags & VE_ONEMORE) - #endif - || virtual_active()) -! win->w_cursor.col = len; - else - { -! win->w_cursor.col = len - 1; - #ifdef FEAT_MBYTE -! /* Move the cursor to the head byte. */ - if (has_mbyte) -! mb_adjustpos(win->w_buffer, &win->w_cursor); - #endif - } - } -! else if (win->w_cursor.col < 0) -! win->w_cursor.col = 0; - - #ifdef FEAT_VIRTUALEDIT - /* If virtual editing is on, we can leave the cursor on the old position, - * only we must set it to virtual. But don't do it when at the end of the - * line. */ - if (oldcol == MAXCOL) -! win->w_cursor.coladd = 0; - else if (ve_flags == VE_ALL) - { -! if (oldcoladd > win->w_cursor.col) -! win->w_cursor.coladd = oldcoladd - win->w_cursor.col; - else - /* avoid weird number when there is a miscalculation or overflow */ -! win->w_cursor.coladd = 0; - } - #endif - } -*** ../vim-7.3.238/src/normal.c 2011-06-20 00:45:55.000000000 +0200 ---- src/normal.c 2011-07-07 14:27:57.000000000 +0200 -*************** -*** 8774,8780 **** - { - --pp->col; - #ifdef FEAT_MBYTE -! mb_adjustpos(pp); - #endif - } - else if (pp->lnum > 1) ---- 8774,8780 ---- - { - --pp->col; - #ifdef FEAT_MBYTE -! mb_adjustpos(curbuf, pp); - #endif - } - else if (pp->lnum > 1) -*** ../vim-7.3.238/src/proto/mbyte.pro 2010-08-15 21:57:28.000000000 +0200 ---- src/proto/mbyte.pro 2011-07-07 14:27:09.000000000 +0200 -*************** -*** 56,62 **** - int utf_valid_string __ARGS((char_u *s, char_u *end)); - int dbcs_screen_tail_off __ARGS((char_u *base, char_u *p)); - void mb_adjust_cursor __ARGS((void)); -! void mb_adjustpos __ARGS((pos_T *lp)); - char_u *mb_prevptr __ARGS((char_u *line, char_u *p)); - int mb_charlen __ARGS((char_u *str)); - int mb_charlen_len __ARGS((char_u *str, int len)); ---- 56,62 ---- - int utf_valid_string __ARGS((char_u *s, char_u *end)); - int dbcs_screen_tail_off __ARGS((char_u *base, char_u *p)); - void mb_adjust_cursor __ARGS((void)); -! void mb_adjustpos __ARGS((buf_T *buf, pos_T *lp)); - char_u *mb_prevptr __ARGS((char_u *line, char_u *p)); - int mb_charlen __ARGS((char_u *str)); - int mb_charlen_len __ARGS((char_u *str, int len)); -*** ../vim-7.3.238/src/proto/misc2.pro 2011-04-11 16:56:29.000000000 +0200 ---- src/proto/misc2.pro 2011-07-07 14:26:57.000000000 +0200 -*************** -*** 14,19 **** ---- 14,20 ---- - linenr_T get_cursor_rel_lnum __ARGS((win_T *wp, linenr_T lnum)); - void check_cursor_lnum __ARGS((void)); - void check_cursor_col __ARGS((void)); -+ void check_cursor_col_win __ARGS((win_T *win)); - void check_cursor __ARGS((void)); - void adjust_cursor_col __ARGS((void)); - int leftcol_changed __ARGS((void)); -*** ../vim-7.3.238/src/version.c 2011-07-07 15:04:38.000000000 +0200 ---- src/version.c 2011-07-07 15:05:49.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 239, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -256. You are able to write down over 250 symptoms of being an internet - addict, even though they only asked for 101. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.240 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Note: I haven't verified this works or even compiles. Please send me a -patch if you see a problem and can fix it. - -Patch 7.3.240 -Problem: External commands can't use pipes on MS-Windows. -Solution: Implement pipes and use them when 'shelltemp' isn't set. (Vincent - Berthoux) -Files: src/eval.c, src/ex_cmds.c, src/misc2.c, src/os_unix.c, - src/os_win32.c, src/proto/misc2.pro, src/ui.c - - -*** ../vim-7.3.239/src/eval.c 2011-06-19 02:55:32.000000000 +0200 ---- src/eval.c 2011-07-07 15:44:56.000000000 +0200 -*************** -*** 11931,11937 **** - #ifdef FEAT_SEARCHPATH - "file_in_path", - #endif -! #if defined(UNIX) && !defined(USE_SYSTEM) - "filterpipe", - #endif - #ifdef FEAT_FIND_ID ---- 11931,11937 ---- - #ifdef FEAT_SEARCHPATH - "file_in_path", - #endif -! #if (defined(UNIX) && !defined(USE_SYSTEM)) || defined(WIN3264) - "filterpipe", - #endif - #ifdef FEAT_FIND_ID -*** ../vim-7.3.239/src/ex_cmds.c 2011-06-12 22:03:15.000000000 +0200 ---- src/ex_cmds.c 2011-07-07 15:44:56.000000000 +0200 -*************** -*** 1107,1113 **** - if (do_out) - shell_flags |= SHELL_DOOUT; - -! #if !defined(USE_SYSTEM) && defined(UNIX) - if (!do_in && do_out && !p_stmp) - { - /* Use a pipe to fetch stdout of the command, do not use a temp file. */ ---- 1107,1113 ---- - if (do_out) - shell_flags |= SHELL_DOOUT; - -! #if (!defined(USE_SYSTEM) && defined(UNIX)) || defined(WIN3264) - if (!do_in && do_out && !p_stmp) - { - /* Use a pipe to fetch stdout of the command, do not use a temp file. */ -*** ../vim-7.3.239/src/misc2.c 2011-07-07 15:08:53.000000000 +0200 ---- src/misc2.c 2011-07-07 15:55:42.000000000 +0200 -*************** -*** 2146,2151 **** ---- 2146,2170 ---- - } - } - -+ #if (defined(UNIX) && !defined(USE_SYSTEM)) || defined(WIN3264) -+ /* -+ * Append the text in "gap" below the cursor line and clear "gap". -+ */ -+ void -+ append_ga_line(gap) -+ garray_T *gap; -+ { -+ /* Remove trailing CR. */ -+ if (gap->ga_len > 0 -+ && !curbuf->b_p_bin -+ && ((char_u *)gap->ga_data)[gap->ga_len - 1] == CAR) -+ --gap->ga_len; -+ ga_append(gap, NUL); -+ ml_append(curwin->w_cursor.lnum++, gap->ga_data, 0, FALSE); -+ gap->ga_len = 0; -+ } -+ #endif -+ - /************************************************************************ - * functions that use lookup tables for various things, generally to do with - * special key codes. -*** ../vim-7.3.239/src/os_unix.c 2011-04-11 16:56:29.000000000 +0200 ---- src/os_unix.c 2011-07-07 15:54:58.000000000 +0200 -*************** -*** 3660,3686 **** - /* Nothing to do. */ - } - -- #ifndef USE_SYSTEM -- static void append_ga_line __ARGS((garray_T *gap)); -- -- /* -- * Append the text in "gap" below the cursor line and clear "gap". -- */ -- static void -- append_ga_line(gap) -- garray_T *gap; -- { -- /* Remove trailing CR. */ -- if (gap->ga_len > 0 -- && !curbuf->b_p_bin -- && ((char_u *)gap->ga_data)[gap->ga_len - 1] == CAR) -- --gap->ga_len; -- ga_append(gap, NUL); -- ml_append(curwin->w_cursor.lnum++, gap->ga_data, 0, FALSE); -- gap->ga_len = 0; -- } -- #endif -- - int - mch_call_shell(cmd, options) - char_u *cmd; ---- 3660,3665 ---- -*** ../vim-7.3.239/src/os_win32.c 2011-05-25 17:06:16.000000000 +0200 ---- src/os_win32.c 2011-07-07 16:08:30.000000000 +0200 -*************** -*** 417,422 **** ---- 417,427 ---- - static PGNSECINFO pGetNamedSecurityInfo; - #endif - -+ typedef BOOL (WINAPI *PSETHANDLEINFORMATION)(HANDLE, DWORD, DWORD); -+ -+ static BOOL allowPiping = FALSE; -+ static PSETHANDLEINFORMATION pSetHandleInformation; -+ - /* - * Set g_PlatformId to VER_PLATFORM_WIN32_NT (NT) or - * VER_PLATFORM_WIN32_WINDOWS (Win95). -*************** -*** 467,472 **** ---- 472,489 ---- - } - } - #endif -+ /* -+ * If we are on windows NT, try to load the pipe functions, only -+ * available from Win2K. -+ */ -+ if (g_PlatformId == VER_PLATFORM_WIN32_NT) -+ { -+ HANDLE kernel32 = GetModuleHandle("kernel32"); -+ pSetHandleInformation = (PSETHANDLEINFORMATION)GetProcAddress( -+ kernel32, "SetHandleInformation"); -+ -+ allowPiping = pSetHandleInformation != NULL; -+ } - done = TRUE; - } - } -*************** -*** 1635,1641 **** - } - - #if ((defined(__MINGW32__) || defined (__CYGWIN32__)) && \ -! __MSVCRT_VERSION__ >= 0x800) || (defined(_MSC_VER) && _MSC_VER >= 1400) - /* - * Bad parameter handler. - * ---- 1652,1658 ---- - } - - #if ((defined(__MINGW32__) || defined (__CYGWIN32__)) && \ -! __MSVCRT_VERSION__ >= 0x800) || (defined(_MSC_VER) && _MSC_VER >= 1400) - /* - * Bad parameter handler. - * -*************** -*** 3210,3216 **** - * 4. Prompt the user to press a key to close the console window - */ - static int -! mch_system(char *cmd, int options) - { - STARTUPINFO si; - PROCESS_INFORMATION pi; ---- 3227,3233 ---- - * 4. Prompt the user to press a key to close the console window - */ - static int -! mch_system_classic(char *cmd, int options) - { - STARTUPINFO si; - PROCESS_INFORMATION pi; -*************** -*** 3315,3320 **** ---- 3332,3829 ---- - - return ret; - } -+ -+ /* -+ * Thread launched by the gui to send the current buffer data to the -+ * process. This way avoid to hang up vim totally if the children -+ * process take a long time to process the lines. -+ */ -+ static DWORD WINAPI -+ sub_process_writer(LPVOID param) -+ { -+ HANDLE g_hChildStd_IN_Wr = param; -+ linenr_T lnum = curbuf->b_op_start.lnum; -+ DWORD len = 0; -+ DWORD l; -+ char_u *lp = ml_get(lnum); -+ char_u *s; -+ int written = 0; -+ -+ for (;;) -+ { -+ l = (DWORD)STRLEN(lp + written); -+ if (l == 0) -+ len = 0; -+ else if (lp[written] == NL) -+ { -+ /* NL -> NUL translation */ -+ WriteFile(g_hChildStd_IN_Wr, "", 1, &len, NULL); -+ } -+ else -+ { -+ s = vim_strchr(lp + written, NL); -+ WriteFile(g_hChildStd_IN_Wr, (char *)lp + written, -+ s == NULL ? l : (DWORD)(s - (lp + written)), -+ &len, NULL); -+ } -+ if (len == (int)l) -+ { -+ /* Finished a line, add a NL, unless this line should not have -+ * one. */ -+ if (lnum != curbuf->b_op_end.lnum -+ || !curbuf->b_p_bin -+ || (lnum != curbuf->b_no_eol_lnum -+ && (lnum != curbuf->b_ml.ml_line_count -+ || curbuf->b_p_eol))) -+ { -+ WriteFile(g_hChildStd_IN_Wr, "\n", 1, &ignored, NULL); -+ } -+ -+ ++lnum; -+ if (lnum > curbuf->b_op_end.lnum) -+ break; -+ -+ lp = ml_get(lnum); -+ written = 0; -+ } -+ else if (len > 0) -+ written += len; -+ } -+ -+ /* finished all the lines, close pipe */ -+ CloseHandle(g_hChildStd_IN_Wr); -+ ExitThread(0); -+ } -+ -+ -+ # define BUFLEN 100 /* length for buffer, stolen from unix version */ -+ -+ /* -+ * This function read from the children's stdout and write the -+ * data on screen or in the buffer accordingly. -+ */ -+ static void -+ dump_pipe(int options, -+ HANDLE g_hChildStd_OUT_Rd, -+ garray_T *ga, -+ char_u buffer[], -+ DWORD *buffer_off) -+ { -+ DWORD availableBytes = 0; -+ DWORD i; -+ int c; -+ char_u *p; -+ int ret; -+ DWORD len; -+ DWORD toRead; -+ int repeatCount; -+ -+ /* we query the pipe to see if there is any data to read -+ * to avoid to perform a blocking read */ -+ ret = PeekNamedPipe(g_hChildStd_OUT_Rd, /* pipe to query */ -+ NULL, /* optional buffer */ -+ 0, /* buffe size */ -+ NULL, /* number of read bytes */ -+ &availableBytes, /* available bytes total */ -+ NULL); /* byteLeft */ -+ -+ repeatCount = 0; -+ /* We got real data in the pipe, read it */ -+ while (ret != 0 && availableBytes > 0 && availableBytes > 0) -+ { -+ repeatCount++; -+ toRead = -+ # ifdef FEAT_MBYTE -+ (DWORD)(BUFLEN - *buffer_off); -+ # else -+ (DWORD)BUFLEN; -+ # endif -+ toRead = availableBytes < toRead ? availableBytes : toRead; -+ ReadFile(g_hChildStd_OUT_Rd, buffer -+ # ifdef FEAT_MBYTE -+ + *buffer_off, toRead -+ # else -+ , toRead -+ # endif -+ , &len, NULL); -+ -+ /* If we haven't read anything, there is a problem */ -+ if (len == 0) -+ break; -+ -+ availableBytes -= len; -+ -+ if (options & SHELL_READ) -+ { -+ /* Do NUL -> NL translation, append NL separated -+ * lines to the current buffer. */ -+ for (i = 0; i < len; ++i) -+ { -+ if (buffer[i] == NL) -+ append_ga_line(ga); -+ else if (buffer[i] == NUL) -+ ga_append(ga, NL); -+ else -+ ga_append(ga, buffer[i]); -+ } -+ } -+ # ifdef FEAT_MBYTE -+ else if (has_mbyte) -+ { -+ int l; -+ -+ len += *buffer_off; -+ buffer[len] = NUL; -+ -+ /* Check if the last character in buffer[] is -+ * incomplete, keep these bytes for the next -+ * round. */ -+ for (p = buffer; p < buffer + len; p += l) -+ { -+ l = mb_cptr2len(p); -+ if (l == 0) -+ l = 1; /* NUL byte? */ -+ else if (MB_BYTE2LEN(*p) != l) -+ break; -+ } -+ if (p == buffer) /* no complete character */ -+ { -+ /* avoid getting stuck at an illegal byte */ -+ if (len >= 12) -+ ++p; -+ else -+ { -+ *buffer_off = len; -+ return; -+ } -+ } -+ c = *p; -+ *p = NUL; -+ msg_puts(buffer); -+ if (p < buffer + len) -+ { -+ *p = c; -+ *buffer_off = (DWORD)((buffer + len) - p); -+ mch_memmove(buffer, p, *buffer_off); -+ return; -+ } -+ *buffer_off = 0; -+ } -+ # endif /* FEAT_MBYTE */ -+ else -+ { -+ buffer[len] = NUL; -+ msg_puts(buffer); -+ } -+ -+ windgoto(msg_row, msg_col); -+ cursor_on(); -+ out_flush(); -+ } -+ } -+ -+ /* -+ * Version of system to use for windows NT > 5.0 (Win2K), use pipe -+ * for communication and doesn't open any new window. -+ */ -+ static int -+ mch_system_piped(char *cmd, int options) -+ { -+ STARTUPINFO si; -+ PROCESS_INFORMATION pi; -+ DWORD ret = 0; -+ -+ HANDLE g_hChildStd_IN_Rd = NULL; -+ HANDLE g_hChildStd_IN_Wr = NULL; -+ HANDLE g_hChildStd_OUT_Rd = NULL; -+ HANDLE g_hChildStd_OUT_Wr = NULL; -+ -+ char_u buffer[BUFLEN + 1]; /* reading buffer + size */ -+ DWORD len; -+ -+ /* buffer used to receive keys */ -+ char_u ta_buf[BUFLEN + 1]; /* TypeAHead */ -+ int ta_len = 0; /* valid bytes in ta_buf[] */ -+ -+ DWORD i; -+ int c; -+ int noread_cnt = 0; -+ garray_T ga; -+ int delay = 1; -+ # ifdef FEAT_MBYTE -+ DWORD buffer_off = 0; /* valid bytes in buffer[] */ -+ # endif -+ -+ SECURITY_ATTRIBUTES saAttr; -+ -+ /* Set the bInheritHandle flag so pipe handles are inherited. */ -+ saAttr.nLength = sizeof(SECURITY_ATTRIBUTES); -+ saAttr.bInheritHandle = TRUE; -+ saAttr.lpSecurityDescriptor = NULL; -+ -+ if ( ! CreatePipe(&g_hChildStd_OUT_Rd, &g_hChildStd_OUT_Wr, &saAttr, 0) -+ /* Ensure the read handle to the pipe for STDOUT is not inherited. */ -+ || ! pSetHandleInformation(g_hChildStd_OUT_Rd, HANDLE_FLAG_INHERIT, 0) -+ /* Create a pipe for the child process's STDIN. */ -+ || ! CreatePipe(&g_hChildStd_IN_Rd, &g_hChildStd_IN_Wr, &saAttr, 0) -+ /* Ensure the write handle to the pipe for STDIN is not inherited. */ -+ || ! pSetHandleInformation(g_hChildStd_IN_Wr, HANDLE_FLAG_INHERIT, 0) ) -+ { -+ CloseHandle(g_hChildStd_IN_Rd); -+ CloseHandle(g_hChildStd_IN_Wr); -+ CloseHandle(g_hChildStd_OUT_Rd); -+ CloseHandle(g_hChildStd_OUT_Wr); -+ MSG_PUTS(_("\nCannot create pipes\n")); -+ } -+ -+ si.cb = sizeof(si); -+ si.lpReserved = NULL; -+ si.lpDesktop = NULL; -+ si.lpTitle = NULL; -+ si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES; -+ -+ /* set-up our file redirection */ -+ si.hStdError = g_hChildStd_OUT_Wr; -+ si.hStdOutput = g_hChildStd_OUT_Wr; -+ si.hStdInput = g_hChildStd_IN_Rd; -+ si.wShowWindow = SW_HIDE; -+ si.cbReserved2 = 0; -+ si.lpReserved2 = NULL; -+ -+ if (options & SHELL_READ) -+ ga_init2(&ga, 1, BUFLEN); -+ -+ /* Now, run the command */ -+ CreateProcess(NULL, /* Executable name */ -+ cmd, /* Command to execute */ -+ NULL, /* Process security attributes */ -+ NULL, /* Thread security attributes */ -+ -+ // this command can be litigeous, handle inheritence was -+ // deactivated for pending temp file, but, if we deactivate -+ // it, the pipes don't work for some reason. -+ TRUE, /* Inherit handles, first deactivated, -+ * but needed */ -+ CREATE_DEFAULT_ERROR_MODE, /* Creation flags */ -+ NULL, /* Environment */ -+ NULL, /* Current directory */ -+ &si, /* Startup information */ -+ &pi); /* Process information */ -+ -+ -+ /* Close our unused side of the pipes */ -+ CloseHandle(g_hChildStd_IN_Rd); -+ CloseHandle(g_hChildStd_OUT_Wr); -+ -+ if (options & SHELL_WRITE) -+ { -+ HANDLE thread = -+ CreateThread(NULL, /* security attributes */ -+ 0, /* default stack size */ -+ sub_process_writer, /* function to be executed */ -+ g_hChildStd_IN_Wr, /* parameter */ -+ 0, /* creation flag, start immediately */ -+ NULL); /* we don't care about thread id */ -+ CloseHandle(thread); -+ g_hChildStd_IN_Wr = NULL; -+ } -+ -+ /* Keep updating the window while waiting for the shell to finish. */ -+ for (;;) -+ { -+ MSG msg; -+ -+ if (PeekMessage(&msg, (HWND)NULL, 0, 0, PM_REMOVE)) -+ { -+ TranslateMessage(&msg); -+ DispatchMessage(&msg); -+ } -+ -+ /* write pipe information in the window */ -+ if ((options & (SHELL_READ|SHELL_WRITE)) -+ # ifdef FEAT_GUI -+ || gui.in_use -+ # endif -+ ) -+ { -+ len = 0; -+ if (!(options & SHELL_EXPAND) -+ && ((options & -+ (SHELL_READ|SHELL_WRITE|SHELL_COOKED)) -+ != (SHELL_READ|SHELL_WRITE|SHELL_COOKED) -+ # ifdef FEAT_GUI -+ || gui.in_use -+ # endif -+ ) -+ && (ta_len > 0 || noread_cnt > 4)) -+ { -+ if (ta_len == 0) -+ { -+ /* Get extra characters when we don't have any. Reset the -+ * counter and timer. */ -+ noread_cnt = 0; -+ # if defined(HAVE_GETTIMEOFDAY) && defined(HAVE_SYS_TIME_H) -+ gettimeofday(&start_tv, NULL); -+ # endif -+ len = ui_inchar(ta_buf, BUFLEN, 10L, 0); -+ } -+ if (ta_len > 0 || len > 0) -+ { -+ /* -+ * For pipes: Check for CTRL-C: send interrupt signal to -+ * child. Check for CTRL-D: EOF, close pipe to child. -+ */ -+ if (len == 1 && cmd != NULL) -+ { -+ if (ta_buf[ta_len] == Ctrl_C) -+ { -+ /* Learn what exit code is expected, for -+ * now put 9 as SIGKILL */ -+ TerminateProcess(pi.hProcess, 9); -+ } -+ if (ta_buf[ta_len] == Ctrl_D) -+ { -+ CloseHandle(g_hChildStd_IN_Wr); -+ g_hChildStd_IN_Wr = NULL; -+ } -+ } -+ -+ /* replace K_BS by <BS> and K_DEL by <DEL> */ -+ for (i = ta_len; i < ta_len + len; ++i) -+ { -+ if (ta_buf[i] == CSI && len - i > 2) -+ { -+ c = TERMCAP2KEY(ta_buf[i + 1], ta_buf[i + 2]); -+ if (c == K_DEL || c == K_KDEL || c == K_BS) -+ { -+ mch_memmove(ta_buf + i + 1, ta_buf + i + 3, -+ (size_t)(len - i - 2)); -+ if (c == K_DEL || c == K_KDEL) -+ ta_buf[i] = DEL; -+ else -+ ta_buf[i] = Ctrl_H; -+ len -= 2; -+ } -+ } -+ else if (ta_buf[i] == '\r') -+ ta_buf[i] = '\n'; -+ # ifdef FEAT_MBYTE -+ if (has_mbyte) -+ i += (*mb_ptr2len_len)(ta_buf + i, -+ ta_len + len - i) - 1; -+ # endif -+ } -+ -+ /* -+ * For pipes: echo the typed characters. For a pty this -+ * does not seem to work. -+ */ -+ for (i = ta_len; i < ta_len + len; ++i) -+ { -+ if (ta_buf[i] == '\n' || ta_buf[i] == '\b') -+ msg_putchar(ta_buf[i]); -+ # ifdef FEAT_MBYTE -+ else if (has_mbyte) -+ { -+ int l = (*mb_ptr2len)(ta_buf + i); -+ -+ msg_outtrans_len(ta_buf + i, l); -+ i += l - 1; -+ } -+ # endif -+ else -+ msg_outtrans_len(ta_buf + i, 1); -+ } -+ windgoto(msg_row, msg_col); -+ out_flush(); -+ -+ ta_len += len; -+ -+ /* -+ * Write the characters to the child, unless EOF has been -+ * typed for pipes. Write one character at a time, to -+ * avoid losing too much typeahead. When writing buffer -+ * lines, drop the typed characters (only check for -+ * CTRL-C). -+ */ -+ if (options & SHELL_WRITE) -+ ta_len = 0; -+ else if (g_hChildStd_IN_Wr != NULL) -+ { -+ WriteFile(g_hChildStd_IN_Wr, (char*)ta_buf, -+ 1, &len, NULL); -+ // if we are typing in, we want to keep things reactive -+ delay = 1; -+ if (len > 0) -+ { -+ ta_len -= len; -+ mch_memmove(ta_buf, ta_buf + len, ta_len); -+ } -+ } -+ } -+ } -+ } -+ -+ if (ta_len) -+ ui_inchar_undo(ta_buf, ta_len); -+ -+ if (WaitForSingleObject(pi.hProcess, delay) != WAIT_TIMEOUT) -+ { -+ dump_pipe(options, g_hChildStd_OUT_Rd, -+ &ga, buffer, &buffer_off); -+ break; -+ } -+ -+ ++noread_cnt; -+ dump_pipe(options, g_hChildStd_OUT_Rd, -+ &ga, buffer, &buffer_off); -+ -+ /* We start waiting for a very short time and then increase it, so -+ * that we respond quickly when the process is quick, and don't -+ * consume too much overhead when it's slow. */ -+ if (delay < 50) -+ delay += 10; -+ } -+ -+ /* Close the pipe */ -+ CloseHandle(g_hChildStd_OUT_Rd); -+ if (g_hChildStd_IN_Wr != NULL) -+ CloseHandle(g_hChildStd_IN_Wr); -+ -+ WaitForSingleObject(pi.hProcess, INFINITE); -+ -+ /* Get the command exit code */ -+ GetExitCodeProcess(pi.hProcess, &ret); -+ -+ if (options & SHELL_READ) -+ { -+ if (ga.ga_len > 0) -+ { -+ append_ga_line(&ga); -+ /* remember that the NL was missing */ -+ curbuf->b_no_eol_lnum = curwin->w_cursor.lnum; -+ } -+ else -+ curbuf->b_no_eol_lnum = 0; -+ ga_clear(&ga); -+ } -+ -+ /* Close the handles to the subprocess, so that it goes away */ -+ CloseHandle(pi.hThread); -+ CloseHandle(pi.hProcess); -+ -+ return ret; -+ } -+ -+ static int -+ mch_system(char *cmd, int options) -+ { -+ /* if we can pipe and the shelltemp option is off */ -+ if (allowPiping && !p_stmp) -+ return mch_system_piped(cmd, options); -+ else -+ return mch_system_classic(cmd, options); -+ } - #else - - # define mch_system(c, o) system(c) -*************** -*** 3388,3394 **** - char_u *newcmd; - long_u cmdlen = ( - #ifdef FEAT_GUI_W32 -! STRLEN(vimrun_path) + - #endif - STRLEN(p_sh) + STRLEN(p_shcf) + STRLEN(cmd) + 10); - ---- 3897,3903 ---- - char_u *newcmd; - long_u cmdlen = ( - #ifdef FEAT_GUI_W32 -! (allowPiping && !p_stmp ? 0 : STRLEN(vimrun_path)) + - #endif - STRLEN(p_sh) + STRLEN(p_shcf) + STRLEN(cmd) + 10); - -*************** -*** 3497,3503 **** - MB_ICONWARNING); - need_vimrun_warning = FALSE; - } -! if (!s_dont_use_vimrun) - /* Use vimrun to execute the command. It opens a console - * window, which can be closed without killing Vim. */ - vim_snprintf((char *)newcmd, cmdlen, "%s%s%s %s %s", ---- 4006,4012 ---- - MB_ICONWARNING); - need_vimrun_warning = FALSE; - } -! if (!s_dont_use_vimrun && (!allowPiping || p_stmp)) - /* Use vimrun to execute the command. It opens a console - * window, which can be closed without killing Vim. */ - vim_snprintf((char *)newcmd, cmdlen, "%s%s%s %s %s", -*************** -*** 3521,3527 **** - /* Print the return value, unless "vimrun" was used. */ - if (x != 0 && !(options & SHELL_SILENT) && !emsg_silent - #if defined(FEAT_GUI_W32) -! && ((options & SHELL_DOOUT) || s_dont_use_vimrun) - #endif - ) - { ---- 4030,4037 ---- - /* Print the return value, unless "vimrun" was used. */ - if (x != 0 && !(options & SHELL_SILENT) && !emsg_silent - #if defined(FEAT_GUI_W32) -! && ((options & SHELL_DOOUT) || s_dont_use_vimrun -! || (allowPiping && !p_stmp)) - #endif - ) - { -*** ../vim-7.3.239/src/proto/misc2.pro 2011-07-07 15:08:53.000000000 +0200 ---- src/proto/misc2.pro 2011-07-07 15:56:16.000000000 +0200 -*************** -*** 58,63 **** ---- 58,64 ---- - char_u *ga_concat_strings __ARGS((garray_T *gap)); - void ga_concat __ARGS((garray_T *gap, char_u *s)); - void ga_append __ARGS((garray_T *gap, int c)); -+ void append_ga_line __ARGS((garray_T *gap)); - int name_to_mod_mask __ARGS((int c)); - int simplify_key __ARGS((int key, int *modifiers)); - int handle_x_keys __ARGS((int key)); -*** ../vim-7.3.239/src/ui.c 2011-06-19 01:14:23.000000000 +0200 ---- src/ui.c 2011-07-07 15:44:56.000000000 +0200 -*************** -*** 58,64 **** - #endif - } - -! #if defined(UNIX) || defined(VMS) || defined(PROTO) - /* - * When executing an external program, there may be some typed characters that - * are not consumed by it. Give them back to ui_inchar() and they are stored ---- 58,64 ---- - #endif - } - -! #if defined(UNIX) || defined(VMS) || defined(PROTO) || defined(WIN3264) - /* - * When executing an external program, there may be some typed characters that - * are not consumed by it. Give them back to ui_inchar() and they are stored -*** ../vim-7.3.239/src/version.c 2011-07-07 15:08:53.000000000 +0200 ---- src/version.c 2011-07-07 16:14:20.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 240, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -257. Your "hundred-and-one" lists include well over 101 items, since you - automatically interpret all numbers in hexadecimal notation. - (hex 101 = decimal 257) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.241 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.241 -Problem: Using CTRL-R CTRL-W on the command line may insert only part of - the word. -Solution: Use the cursor position instead of assuming it is at the end of - the command. (Tyru) -Files: src/ex_getln.c - - -*** ../vim-7.3.240/src/ex_getln.c 2011-07-07 15:04:38.000000000 +0200 ---- src/ex_getln.c 2011-07-07 16:38:50.000000000 +0200 -*************** -*** 3046,3052 **** - int len; - - /* Locate start of last word in the cmd buffer. */ -! for (w = ccline.cmdbuff + ccline.cmdlen; w > ccline.cmdbuff; ) - { - #ifdef FEAT_MBYTE - if (has_mbyte) ---- 3046,3052 ---- - int len; - - /* Locate start of last word in the cmd buffer. */ -! for (w = ccline.cmdbuff + ccline.cmdpos; w > ccline.cmdbuff; ) - { - #ifdef FEAT_MBYTE - if (has_mbyte) -*************** -*** 3064,3070 **** - --w; - } - } -! len = (int)((ccline.cmdbuff + ccline.cmdlen) - w); - if (p_ic ? STRNICMP(w, arg, len) == 0 : STRNCMP(w, arg, len) == 0) - p += len; - } ---- 3064,3070 ---- - --w; - } - } -! len = (int)((ccline.cmdbuff + ccline.cmdpos) - w); - if (p_ic ? STRNICMP(w, arg, len) == 0 : STRNCMP(w, arg, len) == 0) - p += len; - } -*** ../vim-7.3.240/src/version.c 2011-07-07 16:20:45.000000000 +0200 ---- src/version.c 2011-07-07 16:41:29.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 241, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -258. When you want to see your girlfriend, you surf to her homepage. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.242 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.242 -Problem: Illegal memory access in after_pathsep(). -Solution: Check that the pointer is not at the start of the file name. - (Dominique Pelle) -Files: src/misc2.c - - -*** ../vim-7.3.241/src/misc2.c 2011-07-07 16:20:45.000000000 +0200 ---- src/misc2.c 2011-07-07 17:05:41.000000000 +0200 -*************** -*** 3247,3253 **** - #if defined(FEAT_MBYTE) || defined(PROTO) - /* - * Return TRUE if "p" points to just after a path separator. -! * Take care of multi-byte characters. - * "b" must point to the start of the file name - */ - int ---- 3247,3253 ---- - #if defined(FEAT_MBYTE) || defined(PROTO) - /* - * Return TRUE if "p" points to just after a path separator. -! * Takes care of multi-byte characters. - * "b" must point to the start of the file name - */ - int -*************** -*** 3255,3261 **** - char_u *b; - char_u *p; - { -! return vim_ispathsep(p[-1]) - && (!has_mbyte || (*mb_head_off)(b, p - 1) == 0); - } - #endif ---- 3255,3261 ---- - char_u *b; - char_u *p; - { -! return p > b && vim_ispathsep(p[-1]) - && (!has_mbyte || (*mb_head_off)(b, p - 1) == 0); - } - #endif -*** ../vim-7.3.241/src/version.c 2011-07-07 16:44:33.000000000 +0200 ---- src/version.c 2011-07-07 17:05:49.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 242, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -260. Co-workers have to E-mail you about the fire alarm to get - you out of the building. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.243 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.243 -Problem: Illegal memory access in readline(). -Solution: Swap the conditions. (Dominique Pelle) -Files: src/eval.c - - -*** ../vim-7.3.242/src/eval.c 2011-07-07 16:20:45.000000000 +0200 ---- src/eval.c 2011-07-07 17:32:16.000000000 +0200 -*************** -*** 14318,14324 **** - tolist = 0; - for ( ; filtd < buflen || readlen <= 0; ++filtd) - { -! if (buf[filtd] == '\n' || readlen <= 0) - { - /* In binary mode add an empty list item when the last - * non-empty line ends in a '\n'. */ ---- 14318,14324 ---- - tolist = 0; - for ( ; filtd < buflen || readlen <= 0; ++filtd) - { -! if (readlen <= 0 || buf[filtd] == '\n') - { - /* In binary mode add an empty list item when the last - * non-empty line ends in a '\n'. */ -*** ../vim-7.3.242/src/version.c 2011-07-07 17:15:29.000000000 +0200 ---- src/version.c 2011-07-07 17:32:30.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 243, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -261. You find diskettes in your pockets when doing laundry. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.244 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.244 -Problem: MS-Windows: Build problem with old compiler. (John Beckett) -Solution: Only use HandleToLong() when available. (Mike Williams) -Files: src/gui_w32.c - - -*** ../vim-7.3.243/src/gui_w32.c 2011-05-25 21:18:02.000000000 +0200 ---- src/gui_w32.c 2011-07-07 17:42:36.000000000 +0200 -*************** -*** 1574,1579 **** ---- 1574,1583 ---- - #endif - - #ifdef FEAT_EVAL -+ # if _MSC_VER < 1400 -+ /* HandleToLong() only exists in compilers that can do 64 bit builds */ -+ # define HandleToLong(h) ((long)(h)) -+ # endif - /* set the v:windowid variable */ - set_vim_var_nr(VV_WINDOWID, HandleToLong(s_hwnd)); - #endif -*** ../vim-7.3.243/src/version.c 2011-07-07 17:36:52.000000000 +0200 ---- src/version.c 2011-07-07 17:43:21.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 244, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -262. Your computer has it's own phone line - but your daughter doesn't. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.245 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.245 -Problem: Python 3.2 libraries not correctly detected. -Solution: Add the suffix to the library name. (Niclas Zeising) -Files: src/auto/configure, src/configure.in - - -*** ../vim-7.3.244/src/auto/configure 2011-06-13 01:32:42.000000000 +0200 ---- src/auto/configure 2011-07-13 17:57:05.000000000 +0200 -*************** -*** 5611,5617 **** - eof - eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`" - rm -f -- "${tmp_mkf}" -! vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}" - vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}" - vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//` - vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//` ---- 5611,5617 ---- - eof - eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`" - rm -f -- "${tmp_mkf}" -! vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}" - vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}" - vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//` - vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//` -*** ../vim-7.3.244/src/configure.in 2011-06-13 01:32:42.000000000 +0200 ---- src/configure.in 2011-07-13 17:57:01.000000000 +0200 -*************** -*** 1068,1074 **** - dnl -- delete the lines from make about Entering/Leaving directory - eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`" - rm -f -- "${tmp_mkf}" -! vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}" - vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}" - dnl remove -ltermcap, it can conflict with an earlier -lncurses - vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//` ---- 1068,1074 ---- - dnl -- delete the lines from make about Entering/Leaving directory - eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`" - rm -f -- "${tmp_mkf}" -! vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}" - vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}" - dnl remove -ltermcap, it can conflict with an earlier -lncurses - vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//` -*** ../vim-7.3.244/src/version.c 2011-07-07 17:43:37.000000000 +0200 ---- src/version.c 2011-07-15 13:09:17.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 245, - /**/ - - --- - When danger reared its ugly head, - He bravely turned his tail and fled - Yes, Brave Sir Robin turned about - And gallantly he chickened out - Bravely taking to his feet - He beat a very brave retreat - Bravest of the brave Sir Robin - Petrified of being dead - Soiled his pants then brave Sir Robin - Turned away and fled. - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.246 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.246 (after 7.3.235) -Problem: Repeating "f4" in "4444" skips one 4. -Solution: Check the t_cmd flag. (Christian Brabandt) -Files: src/search.c - - -*** ../vim-7.3.245/src/search.c 2011-06-26 05:36:07.000000000 +0200 ---- src/search.c 2011-07-15 13:16:49.000000000 +0200 -*************** -*** 1585,1591 **** - /* Force a move of at least one char, so ";" and "," will move the - * cursor, even if the cursor is right in front of char we are looking - * at. */ -! if (vim_strchr(p_cpo, CPO_SCOLON) == NULL && count == 1) - stop = FALSE; - } - ---- 1585,1591 ---- - /* Force a move of at least one char, so ";" and "," will move the - * cursor, even if the cursor is right in front of char we are looking - * at. */ -! if (vim_strchr(p_cpo, CPO_SCOLON) == NULL && count == 1 && t_cmd) - stop = FALSE; - } - -*** ../vim-7.3.245/src/version.c 2011-07-15 13:09:46.000000000 +0200 ---- src/version.c 2011-07-15 13:20:40.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 246, - /**/ - --- - GALAHAD turns back. We see from his POV the lovely ZOOT standing by him - smiling enchantingly and a number of equally delectable GIRLIES draped - around in the seductively poulticed room. They look at him smilingly and - wave. - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.247 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.247 -Problem: Running tests changes the users viminfo file. Test for patch - 7.3.246 missing. -Solution: Add "nviminfo" to the 'viminfo' option. Include the test. -Files: src/testdir/test78.in, src/testdir/test81.in - - -*** ../vim-7.3.246/src/testdir/test78.in 2011-06-13 01:07:22.000000000 +0200 ---- src/testdir/test78.in 2011-07-15 13:26:22.000000000 +0200 -*************** -*** 6,12 **** - - STARTTEST - :so small.vim -! :set nocp fileformat=unix undolevels=-1 - :e! Xtest - ggdG - :let text = "\tabcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoparstuvwxyz0123456789" ---- 6,12 ---- - - STARTTEST - :so small.vim -! :set nocp fileformat=unix undolevels=-1 viminfo+=nviminfo - :e! Xtest - ggdG - :let text = "\tabcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoparstuvwxyz0123456789" -*** ../vim-7.3.246/src/testdir/test81.in 2011-06-26 05:36:07.000000000 +0200 ---- src/testdir/test81.in 2011-07-15 13:25:00.000000000 +0200 -*************** -*** 1,10 **** - Test for t movement command and 'cpo-;' setting - - STARTTEST -! :set nocompatible - :set cpo-=; - /firstline/ - j0tt;D - $Ty;D:set cpo+=; - j0tt;;D - $Ty;;D:?firstline?+1,$w! test.out ---- 1,12 ---- - Test for t movement command and 'cpo-;' setting - - STARTTEST -! :set nocompatible viminfo+=nviminfo - :set cpo-=; - /firstline/ - j0tt;D -+ 0fz;D -+ $Fy;D - $Ty;D:set cpo+=; - j0tt;;D - $Ty;;D:?firstline?+1,$w! test.out -*************** -*** 13,18 **** ---- 15,22 ---- - - firstline - aaa two three four -+ zzz -+ yyy - bbb yee yoo four - ccc two three four - ddd yee yoo four -*** ../vim-7.3.246/src/version.c 2011-07-15 13:21:24.000000000 +0200 ---- src/version.c 2011-07-15 13:31:14.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 247, - /**/ - --- -ZOOT: I'm afraid our life must seem very dull and quiet compared to yours. - We are but eightscore young blondes, all between sixteen and - nineteen-and-a-half, cut off in this castle, with no one to protect us. - Oooh. It is a lonely life ... bathing ... dressing ... undressing ... - making exciting underwear.... - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.248 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.248 -Problem: PC Install instructions missing install instructions. -Solution: Step-by-step explanation. (Michael Soyka) -Files: src/INSTALLpc.txt - - -*** ../vim-7.3.247/src/INSTALLpc.txt 2011-06-12 20:36:00.000000000 +0200 ---- src/INSTALLpc.txt 2011-07-15 13:49:46.000000000 +0200 -*************** -*** 11,19 **** - this, then you will get the default behavior as is documented, which should - be fine for most people. - -! With the exception of the last two sections (Windows 3.1 and MS-DOS), -! this document assumes that you are building Vim for Win32 -! (Windows NT/2000/XP/2003/Vista and Windows 95/98/Me) - - - Contents: ---- 11,19 ---- - this, then you will get the default behavior as is documented, which should - be fine for most people. - -! With the exception of two sections (Windows 3.1 and MS-DOS), this document -! assumes that you are building Vim for Win32 or later. -! (Windows 95/98/Me/NT/2000/XP/2003/Vista/7) - - - Contents: -*************** -*** 27,32 **** ---- 27,35 ---- - 8. Windows 3.1 - 9. MS-DOS - -+ 10. Installing after building from sources -+ -+ - The currently preferred method is using the free Visual C++ Toolkit 2008 - |msvc-2008-express|, the produced binary runs on most MS-Windows systems. If - you need the executable to run on Windows 98 or ME, use the 2003 one -*************** -*** 409,411 **** ---- 412,470 ---- - - If you get all kinds of strange error messages when compiling, try adding - changing the file format from "unix" to "dos". -+ -+ -+ 10. Installing after building from sources -+ ========================================== -+ -+ [provided by Michael Soyka] -+ -+ After you've built the Vim binaries as described above, you're ready to -+ install Vim on your system. However, if you've obtained the Vim sources -+ using Mercurial or by downloading them as a unix tar file, you must first -+ create a "vim73" directory. If you instead downloaded the sources as -+ zip files, you can skip this setup as the zip archives already have the -+ correct directory structure. -+ -+ A. Create a Vim "runtime" subdirectory named "vim73" -+ ----------------------------------------------------- -+ If you obtained your Vim sources as zip files, you can skip this step. -+ Otherwise, continue reading. -+ -+ Go to the directory that contains the Vim "src" and "runtime" -+ directories and create a new subdirectory named "vim73". -+ -+ Copy the "runtime" files into "vim73": -+ copy runtime\* vim73 -+ -+ B. Copy the new binaries into the "vim73" directory -+ ---------------------------------------------------- -+ Regardless of how you installed the Vim sources, you need to copy the -+ new binaries you created above into "vim73": -+ -+ copy src\*.exe vim73 -+ copy src\GvimExt\gvimext.dll vim73 -+ copy src\xxd\xxd.exe vim73 -+ -+ C. Move the "vim73" directory into the Vim installation subdirectory -+ --------------------------------------------------------------------- -+ Move the "vim73" subdirectory into the subdirectory where you want Vim -+ to be installed. Typically, this subdirectory will be named "vim". -+ If you already have a "vim73" subdirectory in "vim", delete it first -+ by running its unstal.exe program. -+ -+ D. Install Vim -+ --------------- -+ "cd" to your Vim installation subdirectory "vim\vim73" and run the -+ "install.exe" program. It will ask you a number of questions about -+ how you would like to have your Vim setup. Among these are: -+ - You can tell it to write a "_vimrc" file with your preferences in the -+ parent directory. -+ - It can also install an "Edit with Vim" entry in the Windows Explorer -+ popup menu. -+ - You can have it create batch files, so that you can run Vim from the -+ console or in a shell. You can select one of the directories in your -+ PATH or add the directory to PATH using the Windows Control Panel. -+ - Create entries for Vim on the desktop and in the Start menu. -+ -+ Happy Vimming! -*** ../vim-7.3.247/src/version.c 2011-07-15 13:33:17.000000000 +0200 ---- src/version.c 2011-07-15 13:51:03.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 248, - /**/ - --- -Linux is just like a wigwam: no Windows, no Gates and an Apache inside. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.249 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.249 -Problem: Wrong indenting for array initializer. -Solution: Detect '}' in a better way. (Lech Lorens) -Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok - - -*** ../vim-7.3.248/src/misc1.c 2011-06-12 21:51:01.000000000 +0200 ---- src/misc1.c 2011-07-15 14:06:44.000000000 +0200 -*************** -*** 7945,7952 **** - * If we're at the end of a block, skip to the start of - * that block. - */ -! curwin->w_cursor.col = 0; -! if (*cin_skipcomment(l) == '}' - && (trypos = find_start_brace(ind_maxcomment)) - != NULL) /* XXX */ - { ---- 7945,7951 ---- - * If we're at the end of a block, skip to the start of - * that block. - */ -! if (find_last_paren(l, '{', '}') - && (trypos = find_start_brace(ind_maxcomment)) - != NULL) /* XXX */ - { -*** ../vim-7.3.248/src/testdir/test3.in 2011-06-12 21:51:01.000000000 +0200 ---- src/testdir/test3.in 2011-07-15 14:03:41.000000000 +0200 -*************** -*** 1452,1457 **** ---- 1452,1487 ---- - - STARTTEST - :set cino& -+ :set cino+=l1 -+ 2kdd=][ -+ ENDTEST -+ -+ void func(void) -+ { -+ int tab[] = -+ { -+ 1, 2, 3, -+ 4, 5, 6}; -+ -+ printf("Indent this line correctly!\n"); -+ -+ switch (foo) -+ { -+ case bar: -+ printf("bar"); -+ break; -+ case baz: { -+ printf("baz"); -+ break; -+ } -+ case quux: -+ printf("But don't break the indentation of this instruction\n"); -+ break; -+ } -+ } -+ -+ STARTTEST -+ :set cino& - 2kdd=][ - ENDTEST - -*** ../vim-7.3.248/src/testdir/test3.ok 2011-06-12 21:51:01.000000000 +0200 ---- src/testdir/test3.ok 2011-07-15 14:03:41.000000000 +0200 -*************** -*** 1310,1315 **** ---- 1310,1340 ---- - - void func(void) - { -+ int tab[] = -+ { -+ 1, 2, 3, -+ 4, 5, 6}; -+ -+ printf("Indent this line correctly!\n"); -+ -+ switch (foo) -+ { -+ case bar: -+ printf("bar"); -+ break; -+ case baz: { -+ printf("baz"); -+ break; -+ } -+ case quux: -+ printf("But don't break the indentation of this instruction\n"); -+ break; -+ } -+ } -+ -+ -+ void func(void) -+ { - cout << "a" - << "b" - << ") :" -*** ../vim-7.3.248/src/version.c 2011-07-15 13:51:57.000000000 +0200 ---- src/version.c 2011-07-15 14:12:05.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 249, - /**/ - --- - GALAHAD hurries to the door and pushes through it. As he leaves the room - we CUT TO the reverse to show that he is now in a room full of bathing - and romping GIRLIES, all innocent, wide-eyed and beautiful. They smile - enchantingly at him as he tries to keep walking without being diverted by - the lovely sights assaulting his eyeballs. - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.250 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.250 -Problem: Python: Errors in Unicode characters not handled nicely. -Solution: Add the surrogateescape error handler. (lilydjwg) -Files: src/if_python3.c - - -*** ../vim-7.3.249/src/if_python3.c 2011-06-26 19:13:33.000000000 +0200 ---- src/if_python3.c 2011-07-15 15:50:01.000000000 +0200 -*************** -*** 68,76 **** - - static void init_structs(void); - - #define PyInt Py_ssize_t - #define PyString_Check(obj) PyUnicode_Check(obj) -! #define PyString_AsBytes(obj) PyUnicode_AsEncodedString(obj, (char *)ENC_OPT, NULL); - #define PyString_FreeBytes(obj) Py_XDECREF(bytes) - #define PyString_AsString(obj) PyBytes_AsString(obj) - #define PyString_Size(obj) PyBytes_GET_SIZE(bytes) ---- 68,83 ---- - - static void init_structs(void); - -+ /* The "surrogateescape" error handler is new in Python 3.1 */ -+ #if PY_VERSION_HEX >= 0x030100f0 -+ # define CODEC_ERROR_HANDLER "surrogateescape" -+ #else -+ # define CODEC_ERROR_HANDLER NULL -+ #endif -+ - #define PyInt Py_ssize_t - #define PyString_Check(obj) PyUnicode_Check(obj) -! #define PyString_AsBytes(obj) PyUnicode_AsEncodedString(obj, (char *)ENC_OPT, CODEC_ERROR_HANDLER); - #define PyString_FreeBytes(obj) Py_XDECREF(bytes) - #define PyString_AsString(obj) PyBytes_AsString(obj) - #define PyString_Size(obj) PyBytes_GET_SIZE(bytes) -*************** -*** 661,668 **** - - /* PyRun_SimpleString expects a UTF-8 string. Wrong encoding may cause - * SyntaxError (unicode error). */ -! cmdstr = PyUnicode_Decode(cmd, strlen(cmd), (char *)ENC_OPT, NULL); -! cmdbytes = PyUnicode_AsEncodedString(cmdstr, "utf-8", NULL); - Py_XDECREF(cmdstr); - PyRun_SimpleString(PyBytes_AsString(cmdbytes)); - Py_XDECREF(cmdbytes); ---- 668,676 ---- - - /* PyRun_SimpleString expects a UTF-8 string. Wrong encoding may cause - * SyntaxError (unicode error). */ -! cmdstr = PyUnicode_Decode(cmd, strlen(cmd), -! (char *)ENC_OPT, CODEC_ERROR_HANDLER); -! cmdbytes = PyUnicode_AsEncodedString(cmdstr, "utf-8", CODEC_ERROR_HANDLER); - Py_XDECREF(cmdstr); - PyRun_SimpleString(PyBytes_AsString(cmdbytes)); - Py_XDECREF(cmdbytes); -*************** -*** 1463,1469 **** - } - *p = '\0'; - -! result = PyUnicode_Decode(tmp, len, (char *)ENC_OPT, NULL); - - vim_free(tmp); - return result; ---- 1471,1477 ---- - } - *p = '\0'; - -! result = PyUnicode_Decode(tmp, len, (char *)ENC_OPT, CODEC_ERROR_HANDLER); - - vim_free(tmp); - return result; -*** ../vim-7.3.249/src/version.c 2011-07-15 14:12:25.000000000 +0200 ---- src/version.c 2011-07-15 15:46:19.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 250, - /**/ - --- -DINGO: You must spank her well and after you have spanked her you - may deal with her as you like and then ... spank me. -AMAZING: And spank me! -STUNNER: And me. -LOVELY: And me. - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.251 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.251 -Problem: "gH<Del>" deletes the current line, except when it's the last - line. -Solution: Set the "include" flag to indicate the last line is to be deleted. -Files: src/normal.c, src/ops.c - - -*** ../vim-7.3.250/src/normal.c 2011-07-07 15:08:53.000000000 +0200 ---- src/normal.c 2011-07-15 16:53:12.000000000 +0200 -*************** -*** 1795,1811 **** - { - oap->inclusive = FALSE; - /* Try to include the newline, unless it's an operator -! * that works on lines only */ -! if (*p_sel != 'o' -! && !op_on_lines(oap->op_type) -! && oap->end.lnum < curbuf->b_ml.ml_line_count) - { -! ++oap->end.lnum; -! oap->end.col = 0; - # ifdef FEAT_VIRTUALEDIT -! oap->end.coladd = 0; - # endif -! ++oap->line_count; - } - } - } ---- 1795,1819 ---- - { - oap->inclusive = FALSE; - /* Try to include the newline, unless it's an operator -! * that works on lines only. */ -! if (*p_sel != 'o' && !op_on_lines(oap->op_type)) - { -! if (oap->end.lnum < curbuf->b_ml.ml_line_count) -! { -! ++oap->end.lnum; -! oap->end.col = 0; - # ifdef FEAT_VIRTUALEDIT -! oap->end.coladd = 0; - # endif -! ++oap->line_count; -! } -! else -! { -! /* Cannot move below the last line, make the op -! * inclusive to tell the operation to include the -! * line break. */ -! oap->inclusive = TRUE; -! } - } - } - } -*** ../vim-7.3.250/src/ops.c 2011-06-19 01:14:22.000000000 +0200 ---- src/ops.c 2011-07-15 17:28:28.000000000 +0200 -*************** -*** 1650,1656 **** - && oap->line_count > 1 - && oap->op_type == OP_DELETE) - { -! ptr = ml_get(oap->end.lnum) + oap->end.col + oap->inclusive; - ptr = skipwhite(ptr); - if (*ptr == NUL && inindent(0)) - oap->motion_type = MLINE; ---- 1650,1658 ---- - && oap->line_count > 1 - && oap->op_type == OP_DELETE) - { -! ptr = ml_get(oap->end.lnum) + oap->end.col; -! if (*ptr != NUL) -! ptr += oap->inclusive; - ptr = skipwhite(ptr); - if (*ptr == NUL && inindent(0)) - oap->motion_type = MLINE; -*************** -*** 1920,1930 **** - curwin->w_cursor.coladd = 0; - } - #endif -! (void)del_bytes((long)n, !virtual_op, oap->op_type == OP_DELETE - #ifdef FEAT_VISUAL - && !oap->is_VIsual - #endif - ); - } - else /* delete characters between lines */ - { ---- 1922,1941 ---- - curwin->w_cursor.coladd = 0; - } - #endif -! if (oap->inclusive && oap->end.lnum == curbuf->b_ml.ml_line_count -! && n > (int)STRLEN(ml_get(oap->end.lnum))) -! { -! /* Special case: gH<Del> deletes the last line. */ -! del_lines(1L, FALSE); -! } -! else -! { -! (void)del_bytes((long)n, !virtual_op, oap->op_type == OP_DELETE - #ifdef FEAT_VISUAL - && !oap->is_VIsual - #endif - ); -+ } - } - else /* delete characters between lines */ - { -*************** -*** 1941,1957 **** - ++curwin->w_cursor.lnum; - del_lines((long)(oap->line_count - 2), FALSE); - -! /* delete from start of line until op_end */ -! curwin->w_cursor.col = 0; -! (void)del_bytes((long)(oap->end.col + 1 - !oap->inclusive), -! !virtual_op, oap->op_type == OP_DELETE - #ifdef FEAT_VISUAL - && !oap->is_VIsual - #endif - ); -! curwin->w_cursor = curpos; /* restore curwin->w_cursor */ -! -! (void)do_join(2, FALSE, FALSE); - } - } - ---- 1952,1980 ---- - ++curwin->w_cursor.lnum; - del_lines((long)(oap->line_count - 2), FALSE); - -! n = (oap->end.col + 1 - !oap->inclusive); -! if (oap->inclusive && oap->end.lnum == curbuf->b_ml.ml_line_count -! && n > (int)STRLEN(ml_get(oap->end.lnum))) -! { -! /* Special case: gH<Del> deletes the last line. */ -! del_lines(1L, FALSE); -! curwin->w_cursor = curpos; /* restore curwin->w_cursor */ -! if (curwin->w_cursor.lnum > 1) -! --curwin->w_cursor.lnum; -! } -! else -! { -! /* delete from start of line until op_end */ -! curwin->w_cursor.col = 0; -! (void)del_bytes((long)n, !virtual_op, oap->op_type == OP_DELETE - #ifdef FEAT_VISUAL - && !oap->is_VIsual - #endif - ); -! curwin->w_cursor = curpos; /* restore curwin->w_cursor */ -! } -! if (curwin->w_cursor.lnum < curbuf->b_ml.ml_line_count) -! (void)do_join(2, FALSE, FALSE); - } - } - -*** ../vim-7.3.250/src/version.c 2011-07-15 15:54:39.000000000 +0200 ---- src/version.c 2011-07-15 17:35:18.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 251, - /**/ - --- - ### Hiroshima 45, Chernobyl 86, Windows 95 ### - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.252 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.252 (after 7.3.247) -Problem: Tests fail. (David Northfield) -Solution: Add missing update for .ok file. -Files: src/testdir/test81.ok - - -*** ../vim-7.3.251/src/testdir/test81.ok 2011-06-26 05:36:07.000000000 +0200 ---- src/testdir/test81.ok 2011-07-15 13:14:27.000000000 +0200 -*************** -*** 1,4 **** ---- 1,6 ---- - aaa two -+ z -+ y - bbb y - ccc - ddd yee y -*** ../vim-7.3.251/src/version.c 2011-07-15 17:51:30.000000000 +0200 ---- src/version.c 2011-07-15 17:55:25.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 252, - /**/ - --- -You cannot propel yourself forward by patting yourself on the back. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.253 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.253 -Problem: "echo 'abc' > ''" returns 0 or 1, depending on 'ignorecase'. - Checks in mb_strnicmp() for illegal and truncated bytes are - wrong. Should not assume that byte length is equal before case - folding. -Solution: Add utf_safe_read_char_adv() and utf_strnicmp(). Add a test for - this. (Ivan Krasilnikov) -Files: src/mbyte.c src/testdir/test82.in, src/testdir/test82.ok, - src/testdir/Makefile, src/testdir/Make_amiga.mak, - src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, - src/testdir/Make_os2.mak, src/testdir/Make_vms.mms - - -*** ../vim-7.3.252/src/mbyte.c 2011-07-07 15:08:53.000000000 +0200 ---- src/mbyte.c 2011-07-15 20:13:52.000000000 +0200 -*************** -*** 132,137 **** ---- 132,138 ---- - static int dbcs_char2cells __ARGS((int c)); - static int dbcs_ptr2cells_len __ARGS((char_u *p, int size)); - static int dbcs_ptr2char __ARGS((char_u *p)); -+ static int utf_safe_read_char_adv __ARGS((char_u **s, size_t *n)); - - /* - * Lookup table to quickly get the length in bytes of a UTF-8 character from -*************** -*** 1701,1706 **** ---- 1702,1767 ---- - } - - /* -+ * Convert a UTF-8 byte sequence to a wide character. -+ * String is assumed to be terminated by NUL or after "n" bytes, whichever -+ * comes first. -+ * The function is safe in the sense that it never accesses memory beyond the -+ * first "n" bytes of "s". -+ * -+ * On success, returns decoded codepoint, advances "s" to the beginning of -+ * next character and decreases "n" accordingly. -+ * -+ * If end of string was reached, returns 0 and, if "n" > 0, advances "s" past -+ * NUL byte. -+ * -+ * If byte sequence is illegal or incomplete, returns -1 and does not advance -+ * "s". -+ */ -+ static int -+ utf_safe_read_char_adv(s, n) -+ char_u **s; -+ size_t *n; -+ { -+ int c, k; -+ -+ if (*n == 0) /* end of buffer */ -+ return 0; -+ -+ k = utf8len_tab_zero[**s]; -+ -+ if (k == 1) -+ { -+ /* ASCII character or NUL */ -+ (*n)--; -+ return *(*s)++; -+ } -+ -+ if ((size_t)k <= *n) -+ { -+ /* We have a multibyte sequence and it isn't truncated by buffer -+ * limits so utf_ptr2char() is safe to use. Or the first byte is -+ * illegal (k=0), and it's also safe to use utf_ptr2char(). */ -+ c = utf_ptr2char(*s); -+ -+ /* On failure, utf_ptr2char() returns the first byte, so here we -+ * check equality with the first byte. The only non-ASCII character -+ * which equals the first byte of its own UTF-8 representation is -+ * U+00C3 (UTF-8: 0xC3 0x83), so need to check that special case too. -+ * It's safe even if n=1, else we would have k=2 > n. */ -+ if (c != (int)(**s) || (c == 0xC3 && (*s)[1] == 0x83)) -+ { -+ /* byte sequence was successfully decoded */ -+ *s += k; -+ *n -= k; -+ return c; -+ } -+ } -+ -+ /* byte sequence is incomplete or illegal */ -+ return -1; -+ } -+ -+ /* - * Get character at **pp and advance *pp to the next character. - * Note: composing characters are skipped! - */ -*************** -*** 2667,2673 **** - {0x10400,0x10427,1,40} - }; - -! static int utf_convert(int a, convertStruct table[], int tableSize); - - /* - * Generic conversion function for case operations. ---- 2728,2735 ---- - {0x10400,0x10427,1,40} - }; - -! static int utf_convert __ARGS((int a, convertStruct table[], int tableSize)); -! static int utf_strnicmp __ARGS((char_u *s1, char_u *s2, size_t n1, size_t n2)); - - /* - * Generic conversion function for case operations. -*************** -*** 3079,3084 **** ---- 3141,3220 ---- - return (utf_tolower(a) != a); - } - -+ static int -+ utf_strnicmp(s1, s2, n1, n2) -+ char_u *s1, *s2; -+ size_t n1, n2; -+ { -+ int c1, c2, cdiff; -+ char_u buffer[6]; -+ -+ for (;;) -+ { -+ c1 = utf_safe_read_char_adv(&s1, &n1); -+ c2 = utf_safe_read_char_adv(&s2, &n2); -+ -+ if (c1 <= 0 || c2 <= 0) -+ break; -+ -+ if (c1 == c2) -+ continue; -+ -+ cdiff = utf_fold(c1) - utf_fold(c2); -+ if (cdiff != 0) -+ return cdiff; -+ } -+ -+ /* some string ended or has an incomplete/illegal character sequence */ -+ -+ if (c1 == 0 || c2 == 0) -+ { -+ /* some string ended. shorter string is smaller */ -+ if (c1 == 0 && c2 == 0) -+ return 0; -+ return c1 == 0 ? -1 : 1; -+ } -+ -+ /* Continue with bytewise comparison to produce some result that -+ * would make comparison operations involving this function transitive. -+ * -+ * If only one string had an error, comparison should be made with -+ * folded version of the other string. In this case it is enough -+ * to fold just one character to determine the result of comparison. */ -+ -+ if (c1 != -1 && c2 == -1) -+ { -+ n1 = utf_char2bytes(utf_fold(c1), buffer); -+ s1 = buffer; -+ } -+ else if (c2 != -1 && c1 == -1) -+ { -+ n2 = utf_char2bytes(utf_fold(c2), buffer); -+ s2 = buffer; -+ } -+ -+ while (n1 > 0 && n2 > 0 && *s1 != NUL && *s2 != NUL) -+ { -+ cdiff = (int)(*s1) - (int)(*s2); -+ if (cdiff != 0) -+ return cdiff; -+ -+ s1++; -+ s2++; -+ n1--; -+ n2--; -+ } -+ -+ if (n1 > 0 && *s1 == NUL) -+ n1 = 0; -+ if (n2 > 0 && *s2 == NUL) -+ n2 = 0; -+ -+ if (n1 == 0 && n2 == 0) -+ return 0; -+ return n1 == 0 ? -1 : 1; -+ } -+ - /* - * Version of strnicmp() that handles multi-byte characters. - * Needed for Big5, Sjift-JIS and UTF-8 encoding. Other DBCS encodings can -*************** -*** 3092,3140 **** - char_u *s1, *s2; - size_t nn; - { -! int i, j, l; - int cdiff; -- int incomplete = FALSE; - int n = (int)nn; - -! for (i = 0; i < n; i += l) - { -! if (s1[i] == NUL && s2[i] == NUL) /* both strings end */ -! return 0; -! if (enc_utf8) -! { -! l = utf_byte2len(s1[i]); -! if (l > n - i) -! { -! l = n - i; /* incomplete character */ -! incomplete = TRUE; -! } -! /* Check directly first, it's faster. */ -! for (j = 0; j < l; ++j) -! { -! if (s1[i + j] != s2[i + j]) -! break; -! if (s1[i + j] == 0) -! /* Both stings have the same bytes but are incomplete or -! * have illegal bytes, accept them as equal. */ -! l = j; -! } -! if (j < l) -! { -! /* If one of the two characters is incomplete return -1. */ -! if (incomplete || i + utf_byte2len(s2[i]) > n) -! return -1; -! /* Don't case-fold illegal bytes or truncated characters. */ -! if (utf_ptr2len(s1 + i) < l || utf_ptr2len(s2 + i) < l) -! return -1; -! cdiff = utf_fold(utf_ptr2char(s1 + i)) -! - utf_fold(utf_ptr2char(s2 + i)); -! if (cdiff != 0) -! return cdiff; -! } -! } -! else - { - l = (*mb_ptr2len)(s1 + i); - if (l <= 1) - { ---- 3228,3248 ---- - char_u *s1, *s2; - size_t nn; - { -! int i, l; - int cdiff; - int n = (int)nn; - -! if (enc_utf8) - { -! return utf_strnicmp(s1, s2, nn, nn); -! } -! else -! { -! for (i = 0; i < n; i += l) - { -+ if (s1[i] == NUL && s2[i] == NUL) /* both strings end */ -+ return 0; -+ - l = (*mb_ptr2len)(s1 + i); - if (l <= 1) - { -*** ../vim-7.3.252/src/testdir/test82.in 2011-07-15 21:16:03.000000000 +0200 ---- src/testdir/test82.in 2011-07-15 18:22:46.000000000 +0200 -*************** -*** 0 **** ---- 1,93 ---- -+ Tests for case-insensitive UTF-8 comparisons (utf_strnicmp() in mbyte.c) -+ -+ STARTTEST -+ :so small.vim -+ :if !has("multi_byte") -+ : e! test.ok -+ : w! test.out -+ : qa! -+ :endif -+ :set enc=utf8 -+ ggdG -+ : -+ :function! Ch(a, op, b, expected) -+ : if eval(printf('"%s" %s "%s"', a:a, a:op, a:b)) != a:expected -+ : call append(line('$'), printf('"%s" %s "%s" should return %d', a:a, a:op, a:b, a:expected)) -+ : else -+ : let b:passed += 1 -+ : endif -+ :endfunction -+ : -+ :function! Chk(a, b, result) -+ : if a:result == 0 -+ : call Ch(a:a, '==?', a:b, 1) -+ : call Ch(a:a, '!=?', a:b, 0) -+ : call Ch(a:a, '<=?', a:b, 1) -+ : call Ch(a:a, '>=?', a:b, 1) -+ : call Ch(a:a, '<?', a:b, 0) -+ : call Ch(a:a, '>?', a:b, 0) -+ : elseif a:result > 0 -+ : call Ch(a:a, '==?', a:b, 0) -+ : call Ch(a:a, '!=?', a:b, 1) -+ : call Ch(a:a, '<=?', a:b, 0) -+ : call Ch(a:a, '>=?', a:b, 1) -+ : call Ch(a:a, '<?', a:b, 0) -+ : call Ch(a:a, '>?', a:b, 1) -+ : else -+ : call Ch(a:a, '==?', a:b, 0) -+ : call Ch(a:a, '!=?', a:b, 1) -+ : call Ch(a:a, '<=?', a:b, 1) -+ : call Ch(a:a, '>=?', a:b, 0) -+ : call Ch(a:a, '<?', a:b, 1) -+ : call Ch(a:a, '>?', a:b, 0) -+ : endif -+ :endfunction -+ : -+ :function! Check(a, b, result) -+ : call Chk(a:a, a:b, a:result) -+ : call Chk(a:b, a:a, -a:result) -+ :endfunction -+ : -+ :function! LT(a, b) -+ : call Check(a:a, a:b, -1) -+ :endfunction -+ : -+ :function! GT(a, b) -+ : call Check(a:a, a:b, 1) -+ :endfunction -+ : -+ :function! EQ(a, b) -+ : call Check(a:a, a:b, 0) -+ :endfunction -+ : -+ :let b:passed=0 -+ :call EQ('', '') -+ :call LT('', 'a') -+ :call EQ('abc', 'abc') -+ :call EQ('Abc', 'abC') -+ :call LT('ab', 'abc') -+ :call LT('AB', 'abc') -+ :call LT('ab', 'aBc') -+ :call EQ('\xd0\xb9\xd1\x86\xd1\x83\xd0\xba\xd0\xb5\xd0\xbd', '\xd0\xb9\xd0\xa6\xd0\xa3\xd0\xba\xd0\x95\xd0\xbd') -+ :call LT('\xd0\xb9\xd1\x86\xd1\x83\xd0\xba\xd0\xb5\xd0\xbd', '\xd0\xaf\xd1\x86\xd1\x83\xd0\xba\xd0\xb5\xd0\xbd') -+ :call EQ('\xe2\x84\xaa', 'k') -+ :call LT('\xe2\x84\xaa', 'kkkkkk') -+ :call EQ('\xe2\x84\xaa\xe2\x84\xaa\xe2\x84\xaa', 'kkk') -+ :call LT('kk', '\xe2\x84\xaa\xe2\x84\xaa\xe2\x84\xaa') -+ :call EQ('\xe2\x84\xaa\xe2\x84\xa6k\xe2\x84\xaak\xcf\x89', 'k\xcf\x89\xe2\x84\xaakk\xe2\x84\xa6') -+ :call EQ('Abc\x80', 'AbC\x80') -+ :call LT('Abc\x80', 'AbC\x81') -+ :call LT('Abc', 'AbC\x80') -+ :call LT('abc\x80DEF', 'abc\x80def') " case folding stops at the first bad character -+ :call LT('\xc3XYZ', '\xc3xyz') -+ :call EQ('\xef\xbc\xba', '\xef\xbd\x9a') " FF3A (upper), FF5A (lower) -+ :call GT('\xef\xbc\xba', '\xef\xbc\xff') " first string is ok and equals \xef\xbd\x9a after folding, second string is illegal and was left unchanged, then the strings were bytewise compared -+ :call LT('\xc3', '\xc3\x83') -+ :call EQ('\xc3\xa3xYz', '\xc3\x83XyZ') -+ :for n in range(0x60, 0xFF) | call LT(printf('xYz\x%.2X', n-1), printf('XyZ\x%.2X', n)) | endfor -+ :for n in range(0x80, 0xBF) | call EQ(printf('xYz\xc2\x%.2XUvW', n), printf('XyZ\xc2\x%.2XuVw', n)) | endfor -+ :for n in range(0xC0, 0xFF) | call LT(printf('xYz\xc2\x%.2XUvW', n), printf('XyZ\xc2\x%.2XuVw', n)) | endfor -+ :call append(0, printf('%d checks passed', b:passed)) -+ :wq! test.out -+ ENDTEST -+ -*** ../vim-7.3.252/src/testdir/test82.ok 2011-07-15 21:16:03.000000000 +0200 ---- src/testdir/test82.ok 2011-07-15 18:37:33.000000000 +0200 -*************** -*** 0 **** ---- 1,2 ---- -+ 3732 checks passed -+ -*** ../vim-7.3.252/src/testdir/Makefile 2011-06-26 05:36:07.000000000 +0200 ---- src/testdir/Makefile 2011-07-15 18:30:08.000000000 +0200 -*************** -*** 26,32 **** - test64.out test65.out test66.out test67.out test68.out \ - test69.out test70.out test71.out test72.out test73.out \ - test74.out test75.out test76.out test77.out test78.out \ -! test79.out test80.out test81.out - - SCRIPTS_GUI = test16.out - ---- 26,32 ---- - test64.out test65.out test66.out test67.out test68.out \ - test69.out test70.out test71.out test72.out test73.out \ - test74.out test75.out test76.out test77.out test78.out \ -! test79.out test80.out test81.out test82.out - - SCRIPTS_GUI = test16.out - -*** ../vim-7.3.252/src/testdir/Make_amiga.mak 2011-06-26 05:36:07.000000000 +0200 ---- src/testdir/Make_amiga.mak 2011-07-15 18:29:50.000000000 +0200 -*************** -*** 29,35 **** - test66.out test67.out test68.out test69.out test70.out \ - test71.out test72.out test73.out test74.out test75.out \ - test76.out test77.out test78.out test79.out test80.out \ -! test81.out - - .SUFFIXES: .in .out - ---- 29,35 ---- - test66.out test67.out test68.out test69.out test70.out \ - test71.out test72.out test73.out test74.out test75.out \ - test76.out test77.out test78.out test79.out test80.out \ -! test81.out test82.out - - .SUFFIXES: .in .out - -*************** -*** 130,132 **** ---- 130,133 ---- - test79.out: test79.in - test80.out: test80.in - test81.out: test81.in -+ test82.out: test82.in -*** ../vim-7.3.252/src/testdir/Make_dos.mak 2011-06-26 05:36:07.000000000 +0200 ---- src/testdir/Make_dos.mak 2011-07-15 18:30:02.000000000 +0200 -*************** -*** 29,35 **** - test42.out test52.out test65.out test66.out test67.out \ - test68.out test69.out test71.out test72.out test73.out \ - test74.out test75.out test76.out test77.out test78.out \ -! test79.out test80.out test81.out - - SCRIPTS32 = test50.out test70.out - ---- 29,35 ---- - test42.out test52.out test65.out test66.out test67.out \ - test68.out test69.out test71.out test72.out test73.out \ - test74.out test75.out test76.out test77.out test78.out \ -! test79.out test80.out test81.out test82.out - - SCRIPTS32 = test50.out test70.out - -*** ../vim-7.3.252/src/testdir/Make_ming.mak 2011-06-26 05:36:07.000000000 +0200 ---- src/testdir/Make_ming.mak 2011-07-15 18:30:15.000000000 +0200 -*************** -*** 49,55 **** - test42.out test52.out test65.out test66.out test67.out \ - test68.out test69.out test71.out test72.out test73.out \ - test74.out test75.out test76.out test77.out test78.out \ -! test79.out test80.out test81.out - - SCRIPTS32 = test50.out test70.out - ---- 49,55 ---- - test42.out test52.out test65.out test66.out test67.out \ - test68.out test69.out test71.out test72.out test73.out \ - test74.out test75.out test76.out test77.out test78.out \ -! test79.out test80.out test81.out test82.out - - SCRIPTS32 = test50.out test70.out - -*** ../vim-7.3.252/src/testdir/Make_os2.mak 2011-06-26 05:36:07.000000000 +0200 ---- src/testdir/Make_os2.mak 2011-07-15 18:30:25.000000000 +0200 -*************** -*** 29,35 **** - test66.out test67.out test68.out test69.out test70.out \ - test71.out test72.out test73.out test74.out test75.out \ - test76.out test77.out test78.out test79.out test80.out \ -! test81.out - - .SUFFIXES: .in .out - ---- 29,35 ---- - test66.out test67.out test68.out test69.out test70.out \ - test71.out test72.out test73.out test74.out test75.out \ - test76.out test77.out test78.out test79.out test80.out \ -! test81.out test82.out - - .SUFFIXES: .in .out - -*** ../vim-7.3.252/src/testdir/Make_vms.mms 2011-06-26 05:36:07.000000000 +0200 ---- src/testdir/Make_vms.mms 2011-07-15 18:30:33.000000000 +0200 -*************** -*** 4,10 **** - # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> - # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> - # -! # Last change: 2011 Jun 26 - # - # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. - # Edit the lines in the Configuration section below to select. ---- 4,10 ---- - # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> - # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> - # -! # Last change: 2011 Jul 15 - # - # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. - # Edit the lines in the Configuration section below to select. -*************** -*** 75,81 **** - test61.out test62.out test63.out test64.out test65.out \ - test66.out test67.out test68.out test69.out \ - test71.out test72.out test74.out test75.out test76.out \ -! test77.out test78.out test79.out test80.out test81.out - - # Known problems: - # Test 30: a problem around mac format - unknown reason ---- 75,82 ---- - test61.out test62.out test63.out test64.out test65.out \ - test66.out test67.out test68.out test69.out \ - test71.out test72.out test74.out test75.out test76.out \ -! test77.out test78.out test79.out test80.out test81.out \ -! test82.out - - # Known problems: - # Test 30: a problem around mac format - unknown reason -*** ../vim-7.3.252/src/version.c 2011-07-15 17:56:11.000000000 +0200 ---- src/version.c 2011-07-15 21:12:26.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 253, - /**/ - --- -"Intelligence has much less practical application than you'd think." - -- Scott Adams, Dilbert. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.254 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.254 -Problem: The coladd field is not reset when setting the line number for a - ":call" command. -Solution: Reset it. -Files: src/eval.c - - -*** ../vim-7.3.253/src/eval.c 2011-07-07 17:36:52.000000000 +0200 ---- src/eval.c 2011-07-07 17:51:42.000000000 +0200 -*************** -*** 3430,3435 **** ---- 3430,3438 ---- - { - curwin->w_cursor.lnum = lnum; - curwin->w_cursor.col = 0; -+ #ifdef FEAT_VIRTUALEDIT -+ curwin->w_cursor.coladd = 0; -+ #endif - } - arg = startarg; - if (get_func_tv(name, (int)STRLEN(name), &rettv, &arg, -*** ../vim-7.3.253/src/version.c 2011-07-15 21:16:54.000000000 +0200 ---- src/version.c 2011-07-15 21:23:16.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 254, - /**/ - --- -Eight Megabytes And Continually Swapping. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.255 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.255 -Problem: When editing a file such as "File[2010-08-15].vim" an E16 error is - given. (Manuel Stol) -Solution: Don't give an error for failing to compile the regexp. -Files: src/ex_docmd.c, src/misc1.c, src/vim.h - - -*** ../vim-7.3.254/src/ex_docmd.c 2011-06-13 01:19:48.000000000 +0200 ---- src/ex_docmd.c 2011-07-20 14:48:01.000000000 +0200 -*************** -*** 7069,7075 **** - old_arg_count = GARGCOUNT; - if (expand_wildcards(old_arg_count, old_arg_files, - &new_arg_file_count, &new_arg_files, -! EW_FILE|EW_NOTFOUND|EW_ADDSLASH) == OK - && new_arg_file_count > 0) - { - alist_set(&global_alist, new_arg_file_count, new_arg_files, ---- 7069,7075 ---- - old_arg_count = GARGCOUNT; - if (expand_wildcards(old_arg_count, old_arg_files, - &new_arg_file_count, &new_arg_files, -! EW_FILE|EW_NOTFOUND|EW_ADDSLASH|EW_NOERROR) == OK - && new_arg_file_count > 0) - { - alist_set(&global_alist, new_arg_file_count, new_arg_files, -*** ../vim-7.3.254/src/misc1.c 2011-07-15 14:12:25.000000000 +0200 ---- src/misc1.c 2011-07-20 14:55:09.000000000 +0200 -*************** -*** 9043,9050 **** ---- 9043,9054 ---- - } - - /* compile the regexp into a program */ -+ if (flags & EW_NOERROR) -+ ++emsg_silent; - regmatch.rm_ic = TRUE; /* Always ignore case */ - regmatch.regprog = vim_regcomp(pat, RE_MAGIC); -+ if (flags & EW_NOERROR) -+ --emsg_silent; - vim_free(pat); - - if (regmatch.regprog == NULL) -*** ../vim-7.3.254/src/vim.h 2011-06-13 02:03:55.000000000 +0200 ---- src/vim.h 2011-07-20 14:50:13.000000000 +0200 -*************** -*** 815,820 **** ---- 815,821 ---- - #define EW_EXEC 0x40 /* executable files */ - #define EW_PATH 0x80 /* search in 'path' too */ - #define EW_ICASE 0x100 /* ignore case */ -+ #define EW_NOERROR 0x200 /* no error for bad regexp */ - /* Note: mostly EW_NOTFOUND and EW_SILENT are mutually exclusive: EW_NOTFOUND - * is used when executing commands and EW_SILENT for interactive expanding. */ - -*** ../vim-7.3.254/src/version.c 2011-07-15 21:24:06.000000000 +0200 ---- src/version.c 2011-07-20 15:03:52.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 255, - /**/ - --- -Not too long ago, a program was something you watched on TV... - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.256 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.256 -Problem: Javascript indenting not sufficiently tested. -Solution: Add more tests. (Luc Deschenaux) Mark the lines that are indented - wrong. -Files: src/testdir/test3.in, src/testdir/test3.ok - - -*** ../vim-7.3.255/src/testdir/test3.in 2011-07-15 14:12:25.000000000 +0200 ---- src/testdir/test3.in 2011-07-15 21:05:49.000000000 +0200 -*************** -*** 1592,1598 **** - - - STARTTEST -! :set cino=J1 - /^JSSTART - =/^JSEND - ENDTEST ---- 1592,1598 ---- - - - STARTTEST -! :set cino=j1,J1 - /^JSSTART - =/^JSEND - ENDTEST -*************** -*** 1613,1618 **** ---- 1613,1757 ---- - JSEND - - STARTTEST -+ :set cino=j1,J1 -+ /^JSSTART -+ =/^JSEND -+ ENDTEST -+ -+ JSSTART -+ var foo = [ -+ 1, // indent 8 more -+ 2, -+ 3 -+ ]; // indent 8 less -+ JSEND -+ -+ STARTTEST -+ :set cino=j1,J1 -+ /^JSSTART -+ =/^JSEND -+ ENDTEST -+ -+ JSSTART -+ function bar() { -+ var foo = [ -+ 1, -+ 2, -+ 3 -+ ]; // indent 16 less -+ } -+ JSEND -+ -+ STARTTEST -+ :set cino=j1,J1 -+ /^JSSTART -+ =/^JSEND -+ ENDTEST -+ -+ JSSTART -+ (function($){ -+ -+ var class_name='myclass'; -+ -+ function private_method() { -+ } -+ -+ var public_method={ -+ method: function(options,args){ -+ private_method(); -+ } -+ } -+ -+ function init(options) { -+ -+ $(this).data(class_name+'_public',$.extend({},{ -+ foo: 'bar', -+ bar: 2, // indent 8 more -+ foobar: [ // indent 8 more -+ 1, // indent 8 more -+ 2, // indent 16 more -+ 3 // indent 16 more -+ ], -+ callback: function(){ // indent 8 more -+ return true; // indent 8 more -+ } // indent 8 more -+ }, options||{})); -+ } -+ -+ $.fn[class_name]=function() { -+ -+ var _arguments=arguments; -+ return this.each(function(){ -+ -+ var options=$(this).data(class_name+'_public'); -+ if (!options) { -+ init.apply(this,_arguments); -+ -+ } else { -+ var method=public_method[_arguments[0]]; -+ -+ if (typeof(method)!='function') { -+ console.log(class_name+' has no method "'+_arguments[0]+'"'); -+ return false; -+ } -+ _arguments[0]=options; -+ method.apply(this,_arguments); -+ } -+ }); -+ } -+ -+ })(jQuery); -+ JSEND -+ -+ STARTTEST -+ :set cino=j1,J1 -+ /^JSSTART -+ =/^JSEND -+ ENDTEST -+ -+ JSSTART -+ function init(options) { -+ $(this).data(class_name+'_public',$.extend({},{ -+ foo: 'bar', -+ bar: 2, -+ foobar: [ -+ 1, // indent 8 more -+ 2, // indent 8 more -+ 3 // indent 8 more -+ ], -+ callback: function(){ -+ return true; -+ } -+ }, options||{})); -+ } -+ JSEND -+ -+ STARTTEST -+ :set cino=j1,J1 -+ /^JSSTART -+ =/^JSEND -+ ENDTEST -+ -+ JSSTART -+ (function($){ -+ function init(options) { -+ $(this).data(class_name+'_public',$.extend({},{ -+ foo: 'bar', -+ bar: 2, // indent 8 more -+ foobar: [ // indent 8 more -+ 1, // indent 8 more -+ 2, // indent 16 more -+ 3 // indent 16 more -+ ], -+ callback: function(){ // indent 8 more -+ return true; // indent 8 more -+ } // indent 8 more -+ }, options||{})); -+ } -+ })(jQuery); -+ JSEND -+ -+ STARTTEST - :g/^STARTTEST/.,/^ENDTEST/d - :1;/start of AUTO/,$wq! test.out - ENDTEST -*** ../vim-7.3.255/src/testdir/test3.ok 2011-07-15 14:12:25.000000000 +0200 ---- src/testdir/test3.ok 2011-07-15 21:06:38.000000000 +0200 -*************** -*** 1443,1445 **** ---- 1443,1559 ---- - } - JSEND - -+ -+ JSSTART -+ var foo = [ -+ 1, // indent 8 more -+ 2, -+ 3 -+ ]; // indent 8 less -+ JSEND -+ -+ -+ JSSTART -+ function bar() { -+ var foo = [ -+ 1, -+ 2, -+ 3 -+ ]; // indent 16 less -+ } -+ JSEND -+ -+ -+ JSSTART -+ (function($){ -+ -+ var class_name='myclass'; -+ -+ function private_method() { -+ } -+ -+ var public_method={ -+ method: function(options,args){ -+ private_method(); -+ } -+ } -+ -+ function init(options) { -+ -+ $(this).data(class_name+'_public',$.extend({},{ -+ foo: 'bar', -+ bar: 2, // indent 8 more -+ foobar: [ // indent 8 more -+ 1, // indent 8 more -+ 2, // indent 16 more -+ 3 // indent 16 more -+ ], -+ callback: function(){ // indent 8 more -+ return true; // indent 8 more -+ } // indent 8 more -+ }, options||{})); -+ } -+ -+ $.fn[class_name]=function() { -+ -+ var _arguments=arguments; -+ return this.each(function(){ -+ -+ var options=$(this).data(class_name+'_public'); -+ if (!options) { -+ init.apply(this,_arguments); -+ -+ } else { -+ var method=public_method[_arguments[0]]; -+ -+ if (typeof(method)!='function') { -+ console.log(class_name+' has no method "'+_arguments[0]+'"'); -+ return false; -+ } -+ _arguments[0]=options; -+ method.apply(this,_arguments); -+ } -+ }); -+ } -+ -+ })(jQuery); -+ JSEND -+ -+ -+ JSSTART -+ function init(options) { -+ $(this).data(class_name+'_public',$.extend({},{ -+ foo: 'bar', -+ bar: 2, -+ foobar: [ -+ 1, // indent 8 more -+ 2, // indent 8 more -+ 3 // indent 8 more -+ ], -+ callback: function(){ -+ return true; -+ } -+ }, options||{})); -+ } -+ JSEND -+ -+ -+ JSSTART -+ (function($){ -+ function init(options) { -+ $(this).data(class_name+'_public',$.extend({},{ -+ foo: 'bar', -+ bar: 2, // indent 8 more -+ foobar: [ // indent 8 more -+ 1, // indent 8 more -+ 2, // indent 16 more -+ 3 // indent 16 more -+ ], -+ callback: function(){ // indent 8 more -+ return true; // indent 8 more -+ } // indent 8 more -+ }, options||{})); -+ } -+ })(jQuery); -+ JSEND -+ -*** ../vim-7.3.255/src/version.c 2011-07-20 15:04:52.000000000 +0200 ---- src/version.c 2011-07-20 15:08:13.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 256, - /**/ - --- -Not too long ago, a keyboard was something to make music with... - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.257 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.257 -Problem: Not all completions are available to user commands. -Solution: Add "color", "compiler", "file_in_path" and "locale". (Dominique - Pelle) -Files: src/ex_docmd.c, runtime/doc/map.txt - - -*** ../vim-7.3.256/src/ex_docmd.c 2011-07-20 15:04:52.000000000 +0200 ---- src/ex_docmd.c 2011-07-20 16:10:28.000000000 +0200 -*************** -*** 5297,5303 **** ---- 5297,5305 ---- - { - {EXPAND_AUGROUP, "augroup"}, - {EXPAND_BUFFERS, "buffer"}, -+ {EXPAND_COLORS, "color"}, - {EXPAND_COMMANDS, "command"}, -+ {EXPAND_COMPILER, "compiler"}, - #if defined(FEAT_CSCOPE) - {EXPAND_CSCOPE, "cscope"}, - #endif -*************** -*** 5310,5319 **** ---- 5312,5326 ---- - {EXPAND_EVENTS, "event"}, - {EXPAND_EXPRESSION, "expression"}, - {EXPAND_FILES, "file"}, -+ {EXPAND_FILES_IN_PATH, "file_in_path"}, - {EXPAND_FILETYPE, "filetype"}, - {EXPAND_FUNCTIONS, "function"}, - {EXPAND_HELP, "help"}, - {EXPAND_HIGHLIGHT, "highlight"}, -+ #if (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \ -+ && (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE)) -+ {EXPAND_LOCALES, "locale"}, -+ #endif - {EXPAND_MAPPINGS, "mapping"}, - {EXPAND_MENUS, "menu"}, - {EXPAND_OWNSYNTAX, "syntax"}, -*** ../vim-7.3.256/runtime/doc/map.txt 2011-05-19 17:25:36.000000000 +0200 ---- runtime/doc/map.txt 2011-07-20 16:10:28.000000000 +0200 -*************** -*** 1202,1221 **** ---- 1211,1236 ---- - - -complete=augroup autocmd groups - -complete=buffer buffer names -+ -complete=color color schemes - -complete=command Ex command (and arguments) -+ -complete=compiler compilers -+ -complete=cscope |:cscope| suboptions - -complete=dir directory names - -complete=environment environment variable names - -complete=event autocommand events - -complete=expression Vim expression - -complete=file file and directory names -+ -complete=file_in_path file and directory names in |'path'| - -complete=filetype filetype names |'filetype'| - -complete=function function name - -complete=help help subjects - -complete=highlight highlight groups -+ -complete=locale locale names (as output of locale -a) - -complete=mapping mapping name - -complete=menu menus - -complete=option options - -complete=shellcmd Shell command -+ -complete=sign |:sign| suboptions - -complete=syntax syntax file names |'syntax'| - -complete=tag tags - -complete=tag_listfiles tags, file names are shown when CTRL-D is hit -*** ../vim-7.3.256/src/version.c 2011-07-20 15:09:38.000000000 +0200 ---- src/version.c 2011-07-20 16:30:31.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 257, - /**/ - --- -I have to exercise early in the morning before my brain -figures out what I'm doing. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.258 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.258 -Problem: MS-Windows: The edit with existing vim context menu entries can be - unwanted. -Solution: Let a registry entry disable them. (Jerome Vuarand) -Files: src/GvimExt/gvimext.cpp - - -*** ../vim-7.3.257/src/GvimExt/gvimext.cpp 2010-08-15 21:57:29.000000000 +0200 ---- src/GvimExt/gvimext.cpp 2011-07-20 16:48:09.000000000 +0200 -*************** -*** 586,593 **** - - // Initialize m_cntOfHWnd to 0 - m_cntOfHWnd = 0; -! // Retrieve all the vim instances -! EnumWindows(EnumWindowsProc, (LPARAM)this); - - if (cbFiles > 1) - { ---- 586,608 ---- - - // Initialize m_cntOfHWnd to 0 - m_cntOfHWnd = 0; -! -! HKEY keyhandle; -! bool showExisting = true; -! -! // Check whether "Edit with existing Vim" entries are disabled. -! if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Vim\\Gvim", 0, -! KEY_READ, &keyhandle) == ERROR_SUCCESS) -! { -! if (RegQueryValueEx(keyhandle, "DisableEditWithExisting", 0, NULL, -! NULL, NULL) == ERROR_SUCCESS) -! showExisting = false; -! RegCloseKey(keyhandle); -! } -! -! // Retrieve all the vim instances, unless disabled. -! if (showExisting) -! EnumWindows(EnumWindowsProc, (LPARAM)this); - - if (cbFiles > 1) - { -*** ../vim-7.3.257/src/version.c 2011-07-20 16:36:35.000000000 +0200 ---- src/version.c 2011-07-20 16:54:34.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 258, - /**/ - --- -What the word 'politics' means: 'Poli' in Latin meaning 'many' and 'tics' -meaning 'bloodsucking creatures'. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.259 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.259 -Problem: Equivalence classes only work for latin characters. -Solution: Add the Unicode equivalence characters. (Dominique Pelle) -Files: runtime/doc/pattern.txt, src/regexp.c, src/testdir/test44.in, - src/testdir/test44.ok - - -*** ../vim-7.3.258/runtime/doc/pattern.txt 2010-08-15 21:57:14.000000000 +0200 ---- runtime/doc/pattern.txt 2011-07-20 17:44:03.000000000 +0200 -*************** -*** 1027,1037 **** - These items only work for 8-bit characters. - */[[=* *[==]* - - An equivalence class. This means that characters are matched that -! have almost the same meaning, e.g., when ignoring accents. The form -! is: - [=a=] -- Currently this is only implemented for latin1. Also works for the -- latin1 characters in utf-8 and latin9. - */[[.* *[..]* - - A collation element. This currently simply accepts a single - character in the form: ---- 1036,1044 ---- - These items only work for 8-bit characters. - */[[=* *[==]* - - An equivalence class. This means that characters are matched that -! have almost the same meaning, e.g., when ignoring accents. This -! only works for Unicode, latin1 and latin9. The form is: - [=a=] - */[[.* *[..]* - - A collation element. This currently simply accepts a single - character in the form: -*** ../vim-7.3.258/src/regexp.c 2011-06-19 04:31:54.000000000 +0200 ---- src/regexp.c 2011-07-20 17:56:52.000000000 +0200 -*************** -*** 666,673 **** ---- 666,677 ---- - static void regc __ARGS((int b)); - #ifdef FEAT_MBYTE - static void regmbc __ARGS((int c)); -+ # define REGMBC(x) regmbc(x); -+ # define CASEMBC(x) case x: - #else - # define regmbc(c) regc(c) -+ # define REGMBC(x) -+ # define CASEMBC(x) - #endif - static void reginsert __ARGS((int, char_u *)); - static void reginsert_limits __ARGS((int, long, long, char_u *)); -*************** -*** 787,854 **** - switch (c) - { - case 'A': case '\300': case '\301': case '\302': - case '\303': case '\304': case '\305': - regmbc('A'); regmbc('\300'); regmbc('\301'); - regmbc('\302'); regmbc('\303'); regmbc('\304'); - regmbc('\305'); - return; - case 'C': case '\307': - regmbc('C'); regmbc('\307'); - return; - case 'E': case '\310': case '\311': case '\312': case '\313': - regmbc('E'); regmbc('\310'); regmbc('\311'); - regmbc('\312'); regmbc('\313'); - return; - case 'I': case '\314': case '\315': case '\316': case '\317': - regmbc('I'); regmbc('\314'); regmbc('\315'); - regmbc('\316'); regmbc('\317'); - return; - case 'N': case '\321': - regmbc('N'); regmbc('\321'); - return; - case 'O': case '\322': case '\323': case '\324': case '\325': -! case '\326': - regmbc('O'); regmbc('\322'); regmbc('\323'); - regmbc('\324'); regmbc('\325'); regmbc('\326'); - return; - case 'U': case '\331': case '\332': case '\333': case '\334': - regmbc('U'); regmbc('\331'); regmbc('\332'); - regmbc('\333'); regmbc('\334'); - return; - case 'Y': case '\335': - regmbc('Y'); regmbc('\335'); - return; - case 'a': case '\340': case '\341': case '\342': - case '\343': case '\344': case '\345': - regmbc('a'); regmbc('\340'); regmbc('\341'); - regmbc('\342'); regmbc('\343'); regmbc('\344'); - regmbc('\345'); - return; - case 'c': case '\347': - regmbc('c'); regmbc('\347'); - return; - case 'e': case '\350': case '\351': case '\352': case '\353': - regmbc('e'); regmbc('\350'); regmbc('\351'); - regmbc('\352'); regmbc('\353'); - return; - case 'i': case '\354': case '\355': case '\356': case '\357': - regmbc('i'); regmbc('\354'); regmbc('\355'); - regmbc('\356'); regmbc('\357'); - return; - case 'n': case '\361': - regmbc('n'); regmbc('\361'); - return; - case 'o': case '\362': case '\363': case '\364': case '\365': -! case '\366': - regmbc('o'); regmbc('\362'); regmbc('\363'); - regmbc('\364'); regmbc('\365'); regmbc('\366'); - return; - case 'u': case '\371': case '\372': case '\373': case '\374': - regmbc('u'); regmbc('\371'); regmbc('\372'); - regmbc('\373'); regmbc('\374'); - return; - case 'y': case '\375': case '\377': - regmbc('y'); regmbc('\375'); regmbc('\377'); - return; - } - #endif ---- 791,1085 ---- - switch (c) - { - case 'A': case '\300': case '\301': case '\302': -+ CASEMBC(0x100) CASEMBC(0x102) CASEMBC(0x104) CASEMBC(0x1cd) -+ CASEMBC(0x1de) CASEMBC(0x1e0) CASEMBC(0x1ea2) - case '\303': case '\304': case '\305': - regmbc('A'); regmbc('\300'); regmbc('\301'); - regmbc('\302'); regmbc('\303'); regmbc('\304'); - regmbc('\305'); -+ REGMBC(0x100) REGMBC(0x102) REGMBC(0x104) -+ REGMBC(0x1cd) REGMBC(0x1de) REGMBC(0x1e0) -+ REGMBC(0x1ea2) -+ return; -+ case 'B': CASEMBC(0x1e02) CASEMBC(0x1e06) -+ regmbc('B'); REGMBC(0x1e02) REGMBC(0x1e06) - return; - case 'C': case '\307': -+ CASEMBC(0x106) CASEMBC(0x108) CASEMBC(0x10a) CASEMBC(0x10c) - regmbc('C'); regmbc('\307'); -+ REGMBC(0x106) REGMBC(0x108) REGMBC(0x10a) -+ REGMBC(0x10c) -+ return; -+ case 'D': CASEMBC(0x10e) CASEMBC(0x110) CASEMBC(0x1e0a) -+ CASEMBC(0x1e0e) CASEMBC(0x1e10) -+ regmbc('D'); REGMBC(0x10e) REGMBC(0x110) -+ REGMBC(0x1e0a) REGMBC(0x1e0e) REGMBC(0x1e10) - return; - case 'E': case '\310': case '\311': case '\312': case '\313': -+ CASEMBC(0x112) CASEMBC(0x114) CASEMBC(0x116) CASEMBC(0x118) -+ CASEMBC(0x11a) CASEMBC(0x1eba) CASEMBC(0x1ebc) - regmbc('E'); regmbc('\310'); regmbc('\311'); - regmbc('\312'); regmbc('\313'); -+ REGMBC(0x112) REGMBC(0x114) REGMBC(0x116) -+ REGMBC(0x118) REGMBC(0x11a) REGMBC(0x1eba) -+ REGMBC(0x1ebc) -+ return; -+ case 'F': CASEMBC(0x1e1e) -+ regmbc('F'); REGMBC(0x1e1e) -+ return; -+ case 'G': CASEMBC(0x11c) CASEMBC(0x11e) CASEMBC(0x120) -+ CASEMBC(0x122) CASEMBC(0x1e4) CASEMBC(0x1e6) CASEMBC(0x1f4) -+ CASEMBC(0x1e20) -+ regmbc('G'); REGMBC(0x11c) REGMBC(0x11e) -+ REGMBC(0x120) REGMBC(0x122) REGMBC(0x1e4) -+ REGMBC(0x1e6) REGMBC(0x1f4) REGMBC(0x1e20) -+ return; -+ case 'H': CASEMBC(0x124) CASEMBC(0x126) CASEMBC(0x1e22) -+ CASEMBC(0x1e26) CASEMBC(0x1e28) -+ regmbc('H'); REGMBC(0x124) REGMBC(0x126) -+ REGMBC(0x1e22) REGMBC(0x1e26) REGMBC(0x1e28) - return; - case 'I': case '\314': case '\315': case '\316': case '\317': -+ CASEMBC(0x128) CASEMBC(0x12a) CASEMBC(0x12c) CASEMBC(0x12e) -+ CASEMBC(0x130) CASEMBC(0x1cf) CASEMBC(0x1ec8) - regmbc('I'); regmbc('\314'); regmbc('\315'); - regmbc('\316'); regmbc('\317'); -+ REGMBC(0x128) REGMBC(0x12a) REGMBC(0x12c) -+ REGMBC(0x12e) REGMBC(0x130) REGMBC(0x1cf) -+ REGMBC(0x1ec8) -+ return; -+ case 'J': CASEMBC(0x134) -+ regmbc('J'); REGMBC(0x134) -+ return; -+ case 'K': CASEMBC(0x136) CASEMBC(0x1e8) CASEMBC(0x1e30) -+ CASEMBC(0x1e34) -+ regmbc('K'); REGMBC(0x136) REGMBC(0x1e8) -+ REGMBC(0x1e30) REGMBC(0x1e34) -+ return; -+ case 'L': CASEMBC(0x139) CASEMBC(0x13b) CASEMBC(0x13d) -+ CASEMBC(0x13f) CASEMBC(0x141) CASEMBC(0x1e3a) -+ regmbc('L'); REGMBC(0x139) REGMBC(0x13b) -+ REGMBC(0x13d) REGMBC(0x13f) REGMBC(0x141) -+ REGMBC(0x1e3a) -+ return; -+ case 'M': CASEMBC(0x1e3e) CASEMBC(0x1e40) -+ regmbc('M'); REGMBC(0x1e3e) REGMBC(0x1e40) - return; - case 'N': case '\321': -+ CASEMBC(0x143) CASEMBC(0x145) CASEMBC(0x147) CASEMBC(0x1e44) -+ CASEMBC(0x1e48) - regmbc('N'); regmbc('\321'); -+ REGMBC(0x143) REGMBC(0x145) REGMBC(0x147) -+ REGMBC(0x1e44) REGMBC(0x1e48) - return; - case 'O': case '\322': case '\323': case '\324': case '\325': -! case '\326': case '\330': -! CASEMBC(0x14c) CASEMBC(0x14e) CASEMBC(0x150) CASEMBC(0x1a0) -! CASEMBC(0x1d1) CASEMBC(0x1ea) CASEMBC(0x1ec) CASEMBC(0x1ece) - regmbc('O'); regmbc('\322'); regmbc('\323'); - regmbc('\324'); regmbc('\325'); regmbc('\326'); -+ regmbc('\330'); -+ REGMBC(0x14c) REGMBC(0x14e) REGMBC(0x150) -+ REGMBC(0x1a0) REGMBC(0x1d1) REGMBC(0x1ea) -+ REGMBC(0x1ec) REGMBC(0x1ece) -+ return; -+ case 'P': case 0x1e54: case 0x1e56: -+ regmbc('P'); REGMBC(0x1e54) REGMBC(0x1e56) -+ return; -+ case 'R': CASEMBC(0x154) CASEMBC(0x156) CASEMBC(0x158) -+ CASEMBC(0x1e58) CASEMBC(0x1e5e) -+ regmbc('R'); REGMBC(0x154) REGMBC(0x156) REGMBC(0x158) -+ REGMBC(0x1e58) REGMBC(0x1e5e) -+ return; -+ case 'S': CASEMBC(0x15a) CASEMBC(0x15c) CASEMBC(0x15e) -+ CASEMBC(0x160) CASEMBC(0x1e60) -+ regmbc('S'); REGMBC(0x15a) REGMBC(0x15c) -+ REGMBC(0x15e) REGMBC(0x160) REGMBC(0x1e60) -+ return; -+ case 'T': CASEMBC(0x162) CASEMBC(0x164) CASEMBC(0x166) -+ CASEMBC(0x1e6a) CASEMBC(0x1e6e) -+ regmbc('T'); REGMBC(0x162) REGMBC(0x164) -+ REGMBC(0x166) REGMBC(0x1e6a) REGMBC(0x1e6e) - return; - case 'U': case '\331': case '\332': case '\333': case '\334': -+ CASEMBC(0x168) CASEMBC(0x16a) CASEMBC(0x16c) CASEMBC(0x16e) -+ CASEMBC(0x170) CASEMBC(0x172) CASEMBC(0x1af) CASEMBC(0x1d3) -+ CASEMBC(0x1ee6) - regmbc('U'); regmbc('\331'); regmbc('\332'); - regmbc('\333'); regmbc('\334'); -+ REGMBC(0x168) REGMBC(0x16a) REGMBC(0x16c) -+ REGMBC(0x16e) REGMBC(0x170) REGMBC(0x172) -+ REGMBC(0x1af) REGMBC(0x1d3) REGMBC(0x1ee6) -+ return; -+ case 'V': CASEMBC(0x1e7c) -+ regmbc('V'); REGMBC(0x1e7c) -+ return; -+ case 'W': CASEMBC(0x174) CASEMBC(0x1e80) CASEMBC(0x1e82) -+ CASEMBC(0x1e84) CASEMBC(0x1e86) -+ regmbc('W'); REGMBC(0x174) REGMBC(0x1e80) -+ REGMBC(0x1e82) REGMBC(0x1e84) REGMBC(0x1e86) -+ return; -+ case 'X': CASEMBC(0x1e8a) CASEMBC(0x1e8c) -+ regmbc('X'); REGMBC(0x1e8a) REGMBC(0x1e8c) - return; - case 'Y': case '\335': -+ CASEMBC(0x176) CASEMBC(0x178) CASEMBC(0x1e8e) CASEMBC(0x1ef2) -+ CASEMBC(0x1ef6) CASEMBC(0x1ef8) - regmbc('Y'); regmbc('\335'); -+ REGMBC(0x176) REGMBC(0x178) REGMBC(0x1e8e) -+ REGMBC(0x1ef2) REGMBC(0x1ef6) REGMBC(0x1ef8) -+ return; -+ case 'Z': CASEMBC(0x179) CASEMBC(0x17b) CASEMBC(0x17d) -+ CASEMBC(0x1b5) CASEMBC(0x1e90) CASEMBC(0x1e94) -+ regmbc('Z'); REGMBC(0x179) REGMBC(0x17b) -+ REGMBC(0x17d) REGMBC(0x1b5) REGMBC(0x1e90) -+ REGMBC(0x1e94) - return; - case 'a': case '\340': case '\341': case '\342': - case '\343': case '\344': case '\345': -+ CASEMBC(0x101) CASEMBC(0x103) CASEMBC(0x105) CASEMBC(0x1ce) -+ CASEMBC(0x1df) CASEMBC(0x1e1) CASEMBC(0x1ea3) - regmbc('a'); regmbc('\340'); regmbc('\341'); - regmbc('\342'); regmbc('\343'); regmbc('\344'); - regmbc('\345'); -+ REGMBC(0x101) REGMBC(0x103) REGMBC(0x105) -+ REGMBC(0x1ce) REGMBC(0x1df) REGMBC(0x1e1) -+ REGMBC(0x1ea3) -+ return; -+ case 'b': CASEMBC(0x1e03) CASEMBC(0x1e07) -+ regmbc('b'); REGMBC(0x1e03) REGMBC(0x1e07) - return; - case 'c': case '\347': -+ CASEMBC(0x107) CASEMBC(0x109) CASEMBC(0x10b) CASEMBC(0x10d) - regmbc('c'); regmbc('\347'); -+ REGMBC(0x107) REGMBC(0x109) REGMBC(0x10b) -+ REGMBC(0x10d) -+ return; -+ case 'd': CASEMBC(0x10f) CASEMBC(0x111) CASEMBC(0x1d0b) -+ CASEMBC(0x1e11) -+ regmbc('d'); REGMBC(0x10f) REGMBC(0x111) -+ REGMBC(0x1e0b) REGMBC(0x01e0f) REGMBC(0x1e11) - return; - case 'e': case '\350': case '\351': case '\352': case '\353': -+ CASEMBC(0x113) CASEMBC(0x115) CASEMBC(0x117) CASEMBC(0x119) -+ CASEMBC(0x11b) CASEMBC(0x1ebb) CASEMBC(0x1ebd) - regmbc('e'); regmbc('\350'); regmbc('\351'); - regmbc('\352'); regmbc('\353'); -+ REGMBC(0x113) REGMBC(0x115) REGMBC(0x117) -+ REGMBC(0x119) REGMBC(0x11b) REGMBC(0x1ebb) -+ REGMBC(0x1ebd) -+ return; -+ case 'f': CASEMBC(0x1e1f) -+ regmbc('f'); REGMBC(0x1e1f) -+ return; -+ case 'g': CASEMBC(0x11d) CASEMBC(0x11f) CASEMBC(0x121) -+ CASEMBC(0x123) CASEMBC(0x1e5) CASEMBC(0x1e7) CASEMBC(0x1f5) -+ CASEMBC(0x1e21) -+ regmbc('g'); REGMBC(0x11d) REGMBC(0x11f) -+ REGMBC(0x121) REGMBC(0x123) REGMBC(0x1e5) -+ REGMBC(0x1e7) REGMBC(0x1f5) REGMBC(0x1e21) -+ return; -+ case 'h': CASEMBC(0x125) CASEMBC(0x127) CASEMBC(0x1e23) -+ CASEMBC(0x1e27) CASEMBC(0x1e29) CASEMBC(0x1e96) -+ regmbc('h'); REGMBC(0x125) REGMBC(0x127) -+ REGMBC(0x1e23) REGMBC(0x1e27) REGMBC(0x1e29) -+ REGMBC(0x1e96) - return; - case 'i': case '\354': case '\355': case '\356': case '\357': -+ CASEMBC(0x129) CASEMBC(0x12b) CASEMBC(0x12d) CASEMBC(0x12f) -+ CASEMBC(0x1d0) CASEMBC(0x1ec9) - regmbc('i'); regmbc('\354'); regmbc('\355'); - regmbc('\356'); regmbc('\357'); -+ REGMBC(0x129) REGMBC(0x12b) REGMBC(0x12d) -+ REGMBC(0x12f) REGMBC(0x1d0) REGMBC(0x1ec9) -+ return; -+ case 'j': CASEMBC(0x135) CASEMBC(0x1f0) -+ regmbc('j'); REGMBC(0x135) REGMBC(0x1f0) -+ return; -+ case 'k': CASEMBC(0x137) CASEMBC(0x1e9) CASEMBC(0x1e31) -+ CASEMBC(0x1e35) -+ regmbc('k'); REGMBC(0x137) REGMBC(0x1e9) -+ REGMBC(0x1e31) REGMBC(0x1e35) -+ return; -+ case 'l': CASEMBC(0x13a) CASEMBC(0x13c) CASEMBC(0x13e) -+ CASEMBC(0x140) CASEMBC(0x142) CASEMBC(0x1e3b) -+ regmbc('l'); REGMBC(0x13a) REGMBC(0x13c) -+ REGMBC(0x13e) REGMBC(0x140) REGMBC(0x142) -+ REGMBC(0x1e3b) -+ return; -+ case 'm': CASEMBC(0x1e3f) CASEMBC(0x1e41) -+ regmbc('m'); REGMBC(0x1e3f) REGMBC(0x1e41) - return; - case 'n': case '\361': -+ CASEMBC(0x144) CASEMBC(0x146) CASEMBC(0x148) CASEMBC(0x149) -+ CASEMBC(0x1e45) CASEMBC(0x1e49) - regmbc('n'); regmbc('\361'); -+ REGMBC(0x144) REGMBC(0x146) REGMBC(0x148) -+ REGMBC(0x149) REGMBC(0x1e45) REGMBC(0x1e49) - return; - case 'o': case '\362': case '\363': case '\364': case '\365': -! case '\366': case '\370': -! CASEMBC(0x14d) CASEMBC(0x14f) CASEMBC(0x151) CASEMBC(0x1a1) -! CASEMBC(0x1d2) CASEMBC(0x1eb) CASEMBC(0x1ed) CASEMBC(0x1ecf) - regmbc('o'); regmbc('\362'); regmbc('\363'); - regmbc('\364'); regmbc('\365'); regmbc('\366'); -+ regmbc('\370'); -+ REGMBC(0x14d) REGMBC(0x14f) REGMBC(0x151) -+ REGMBC(0x1a1) REGMBC(0x1d2) REGMBC(0x1eb) -+ REGMBC(0x1ed) REGMBC(0x1ecf) -+ return; -+ case 'p': CASEMBC(0x1e55) CASEMBC(0x1e57) -+ regmbc('p'); REGMBC(0x1e55) REGMBC(0x1e57) -+ return; -+ case 'r': CASEMBC(0x155) CASEMBC(0x157) CASEMBC(0x159) -+ CASEMBC(0x1e59) CASEMBC(0x1e5f) -+ regmbc('r'); REGMBC(0x155) REGMBC(0x157) REGMBC(0x159) -+ REGMBC(0x1e59) REGMBC(0x1e5f) -+ return; -+ case 's': CASEMBC(0x15b) CASEMBC(0x15d) CASEMBC(0x15f) -+ CASEMBC(0x161) CASEMBC(0x1e61) -+ regmbc('s'); REGMBC(0x15b) REGMBC(0x15d) -+ REGMBC(0x15f) REGMBC(0x161) REGMBC(0x1e61) -+ return; -+ case 't': CASEMBC(0x163) CASEMBC(0x165) CASEMBC(0x167) -+ CASEMBC(0x1e6b) CASEMBC(0x1e6f) CASEMBC(0x1e97) -+ regmbc('t'); REGMBC(0x163) REGMBC(0x165) REGMBC(0x167) -+ REGMBC(0x1e6b) REGMBC(0x1e6f) REGMBC(0x1e97) - return; - case 'u': case '\371': case '\372': case '\373': case '\374': -+ CASEMBC(0x169) CASEMBC(0x16b) CASEMBC(0x16d) CASEMBC(0x16f) -+ CASEMBC(0x171) CASEMBC(0x173) CASEMBC(0x1b0) CASEMBC(0x1d4) -+ CASEMBC(0x1ee7) - regmbc('u'); regmbc('\371'); regmbc('\372'); - regmbc('\373'); regmbc('\374'); -+ REGMBC(0x169) REGMBC(0x16b) REGMBC(0x16d) -+ REGMBC(0x16f) REGMBC(0x171) REGMBC(0x173) -+ REGMBC(0x1b0) REGMBC(0x1d4) REGMBC(0x1ee7) -+ return; -+ case 'v': CASEMBC(0x1e7d) -+ regmbc('v'); REGMBC(0x1e7d) -+ return; -+ case 'w': CASEMBC(0x175) CASEMBC(0x1e81) CASEMBC(0x1e83) -+ CASEMBC(0x1e85) CASEMBC(0x1e87) CASEMBC(0x1e98) -+ regmbc('w'); REGMBC(0x175) REGMBC(0x1e81) -+ REGMBC(0x1e83) REGMBC(0x1e85) REGMBC(0x1e87) -+ REGMBC(0x1e98) -+ return; -+ case 'x': CASEMBC(0x1e8b) CASEMBC(0x1e8d) -+ regmbc('x'); REGMBC(0x1e8b) REGMBC(0x1e8d) - return; - case 'y': case '\375': case '\377': -+ CASEMBC(0x177) CASEMBC(0x1e8f) CASEMBC(0x1e99) -+ CASEMBC(0x1ef3) CASEMBC(0x1ef7) CASEMBC(0x1ef9) - regmbc('y'); regmbc('\375'); regmbc('\377'); -+ REGMBC(0x177) REGMBC(0x1e8f) REGMBC(0x1e99) -+ REGMBC(0x1ef3) REGMBC(0x1ef7) REGMBC(0x1ef9) -+ return; -+ case 'z': CASEMBC(0x17a) CASEMBC(0x17c) CASEMBC(0x17e) -+ CASEMBC(0x1b6) CASEMBC(0x1e91) CASEMBC(0x1e95) -+ regmbc('z'); REGMBC(0x17a) REGMBC(0x17c) -+ REGMBC(0x17e) REGMBC(0x1b6) REGMBC(0x1e91) -+ REGMBC(0x1e95) - return; - } - #endif -*************** -*** 2468,2473 **** ---- 2699,2706 ---- - regmbc(c) - int c; - { -+ if (!has_mbyte && c > 0xff) -+ return; - if (regcode == JUST_CALC_SIZE) - regsize += (*mb_char2len)(c); - else -*************** -*** 2588,2594 **** - else - offset = (int)(val - scan); - /* When the offset uses more than 16 bits it can no longer fit in the two -! * bytes avaliable. Use a global flag to avoid having to check return - * values in too many places. */ - if (offset > 0xffff) - reg_toolong = TRUE; ---- 2821,2827 ---- - else - offset = (int)(val - scan); - /* When the offset uses more than 16 bits it can no longer fit in the two -! * bytes available. Use a global flag to avoid having to check return - * values in too many places. */ - if (offset > 0xffff) - reg_toolong = TRUE; -*** ../vim-7.3.258/src/testdir/test44.in 2010-08-15 21:57:29.000000000 +0200 ---- src/testdir/test44.in 2011-07-20 17:36:49.000000000 +0200 -*************** -*** 27,32 **** ---- 27,34 ---- - x/\%U12345678 - x/[\U1234abcd\u1234\uabcd] - x/\%d21879b -+ x/ [[=A=]]* [[=B=]]* [[=C=]]* [[=D=]]* [[=E=]]* [[=F=]]* [[=G=]]* [[=H=]]* [[=I=]]* [[=J=]]* [[=K=]]* [[=L=]]* [[=M=]]* [[=N=]]* [[=O=]]* [[=P=]]* [[=Q=]]* [[=R=]]* [[=S=]]* [[=T=]]* [[=U=]]* [[=V=]]* [[=W=]]* [[=X=]]* [[=Y=]]* [[=Z=]]*/e -+ x/ [[=a=]]* [[=b=]]* [[=c=]]* [[=d=]]* [[=e=]]* [[=f=]]* [[=g=]]* [[=h=]]* [[=i=]]* [[=j=]]* [[=k=]]* [[=l=]]* [[=m=]]* [[=n=]]* [[=o=]]* [[=p=]]* [[=q=]]* [[=r=]]* [[=s=]]* [[=t=]]* [[=u=]]* [[=v=]]* [[=w=]]* [[=x=]]* [[=y=]]* [[=z=]]*/e - x:?^1?,$w! test.out - :e! test.out - G:put =matchstr(\"×בגד\", \".\", 0, 2) " ב -*************** -*** 53,55 **** ---- 55,59 ---- - e ü’…™¸y - f ü’Нz - g aå•·bb -+ h AÀÃÂÃÄÅĀĂĄÇÇžÇ áº¢ BḂḆ CÇĆĈĊČ DÄŽÄḊḎḠEÈÉÊËĒĔĖĘĚẺẼ FḞ GÄœÄžÄ Ä¢Ç¤Ç¦Ç´á¸ HĤĦḢḦḨ IÃŒÃÃŽÃĨĪĬĮİÇỈ JÄ´ KĶǨḰḴ LĹĻĽĿÅḺ MḾṀ NÑŃŅŇṄṈ OÃ’Ã“Ã”Ã•Ã–Ã˜ÅŒÅŽÅÆ ǑǪǬỎ PṔṖ Q RŔŖŘṘṞ SŚŜŞŠṠTŢŤŦṪṮ UÙÚÛÜŨŪŬŮŰŲƯǓỦ Vá¹¼ WŴẀẂẄẆ XẊẌ YÃŶŸẎỲỶỸ ZŹŻŽƵáºáº” -+ i aà áâãäåÄăąǎǟǡả bḃḇ cÃ§Ä‡Ä‰Ä‹Ä dÄđḋá¸á¸‘ eèéêëēĕėęěẻẽ fḟ gÄğġģǥǧǵḡ hĥħḣḧḩẖ iìÃîïĩīÄįÇỉ jĵǰ kķǩḱḵ lĺļľŀłḻ mḿṠnñńņňʼnṅṉ oòóôõöøÅÅőơǒǫÇá» pṕṗ q rŕŗřṙṟ sÅ›Åşšṡ tţťŧṫṯẗ uùúûüũūÅůűųưǔủ vá¹½ wŵáºáºƒáº…ẇẘ xẋẠyýÿŷáºáº™á»³á»·á»¹ zźżžƶẑẕ -*** ../vim-7.3.258/src/testdir/test44.ok 2010-08-15 21:57:29.000000000 +0200 ---- src/testdir/test44.ok 2011-07-20 17:36:49.000000000 +0200 -*************** -*** 14,19 **** ---- 14,21 ---- - e y - f z - g abb -+ h AÀÃÂÃÄÅĀĂĄÇÇžÇ áº¢ BḂḆ CÇĆĈĊČ DÄŽÄḊḎḠEÈÉÊËĒĔĖĘĚẺẼ FḞ GÄœÄžÄ Ä¢Ç¤Ç¦Ç´á¸ HĤĦḢḦḨ IÃŒÃÃŽÃĨĪĬĮİÇỈ JÄ´ KĶǨḰḴ LĹĻĽĿÅḺ MḾṀ NÑŃŅŇṄṈ OÃ’Ã“Ã”Ã•Ã–Ã˜ÅŒÅŽÅÆ ǑǪǬỎ PṔṖ Q RŔŖŘṘṞ SŚŜŞŠṠTŢŤŦṪṮ UÙÚÛÜŨŪŬŮŰŲƯǓỦ Vá¹¼ WŴẀẂẄẆ XẊẌ YÃŶŸẎỲỶỸ ZŹŻŽƵẠ-+ i aà áâãäåÄăąǎǟǡả bḃḇ cÃ§Ä‡Ä‰Ä‹Ä dÄđḋá¸á¸‘ eèéêëēĕėęěẻẽ fḟ gÄğġģǥǧǵḡ hĥħḣḧḩẖ iìÃîïĩīÄįÇỉ jĵǰ kķǩḱḵ lĺļľŀłḻ mḿṠnñńņňʼnṅṉ oòóôõöøÅÅőơǒǫÇá» pṕṗ q rŕŗřṙṟ sÅ›Åşšṡ tţťŧṫṯẗ uùúûüũūÅůűųưǔủ vá¹½ wŵáºáºƒáº…ẇẘ xẋẠyýÿŷáºáº™á»³á»·á»¹ zźżžƶẑ - ב - בג - × -*** ../vim-7.3.258/src/version.c 2011-07-20 17:27:17.000000000 +0200 ---- src/version.c 2011-07-20 17:38:32.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 259, - /**/ - --- -Not too long ago, compress was something you did to garbage... - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.260 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.260 -Problem: CursorHold triggers on an incomplete mapping. (Will Gray) -Solution: Don't trigger CursorHold when there is typeahead. -Files: src/fileio.c - - -*** ../vim-7.3.259/src/fileio.c 2011-05-19 17:25:36.000000000 +0200 ---- src/fileio.c 2011-07-20 18:22:16.000000000 +0200 -*************** -*** 9044,9050 **** - { - int state; - -! if (!did_cursorhold && has_cursorhold() && !Recording - #ifdef FEAT_INS_EXPAND - && !ins_compl_active() - #endif ---- 9044,9053 ---- - { - int state; - -! if (!did_cursorhold -! && has_cursorhold() -! && !Recording -! && typebuf.tb_len == 0 - #ifdef FEAT_INS_EXPAND - && !ins_compl_active() - #endif -*************** -*** 9935,9940 **** ---- 9938,9945 ---- - if ((c == ';' || c == '>') && match == FALSE) - { - *pattern = NUL; /* Terminate the string */ -+ /* TODO: match with 'filetype' of buffer that "fname" comes -+ * from. */ - match = mch_check_filetype(fname, type_start); - *pattern = c; /* Restore the terminator */ - type_start = pattern + 1; -*** ../vim-7.3.259/src/version.c 2011-07-20 17:58:14.000000000 +0200 ---- src/version.c 2011-07-20 18:25:15.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 260, - /**/ - --- -LAUNCELOT: At last! A call! A cry of distress ... - (he draws his sword, and turns to CONCORDE) - Concorde! Brave, Concorde ... you shall not have died in vain! -CONCORDE: I'm not quite dead, sir ... - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.261 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.261 -Problem: G++ error message errornously recognized as error. -Solution: Ignore "In file included from" line also when it ends in a colon. - (Fernando Castillo) -Files: src/option.h - - -*** ../vim-7.3.260/src/option.h 2011-06-26 05:36:07.000000000 +0200 ---- src/option.h 2011-07-27 13:44:08.000000000 +0200 -*************** -*** 33,39 **** - # ifdef EBCDIC - #define DFLT_EFM "%*[^ ] %*[^ ] %f:%l%*[ ]%m,%*[^\"]\"%f\"%*\\D%l: %m,\"%f\"%*\\D%l: %m,%f:%l:%c:%m,%f(%l):%m,%f:%l:%m,\"%f\"\\, line %l%*\\D%c%*[^ ] %m,%D%*\\a[%*\\d]: Entering directory `%f',%X%*\\a[%*\\d]: Leaving directory `%f',%DMaking %*\\a in %f,%f|%l| %m" - # else -! #define DFLT_EFM "%*[^\"]\"%f\"%*\\D%l: %m,\"%f\"%*\\D%l: %m,%-G%f:%l: (Each undeclared identifier is reported only once,%-G%f:%l: for each function it appears in.),%-GIn file included from %f:%l:%c,%-GIn file included from %f:%l,%-Gfrom %f:%l:%c,%-Gfrom %f:%l,%f:%l:%c:%m,%f(%l):%m,%f:%l:%m,\"%f\"\\, line %l%*\\D%c%*[^ ] %m,%D%*\\a[%*\\d]: Entering directory `%f',%X%*\\a[%*\\d]: Leaving directory `%f',%D%*\\a: Entering directory `%f',%X%*\\a: Leaving directory `%f',%DMaking %*\\a in %f,%f|%l| %m" - # endif - # endif - # endif ---- 33,39 ---- - # ifdef EBCDIC - #define DFLT_EFM "%*[^ ] %*[^ ] %f:%l%*[ ]%m,%*[^\"]\"%f\"%*\\D%l: %m,\"%f\"%*\\D%l: %m,%f:%l:%c:%m,%f(%l):%m,%f:%l:%m,\"%f\"\\, line %l%*\\D%c%*[^ ] %m,%D%*\\a[%*\\d]: Entering directory `%f',%X%*\\a[%*\\d]: Leaving directory `%f',%DMaking %*\\a in %f,%f|%l| %m" - # else -! #define DFLT_EFM "%*[^\"]\"%f\"%*\\D%l: %m,\"%f\"%*\\D%l: %m,%-G%f:%l: (Each undeclared identifier is reported only once,%-G%f:%l: for each function it appears in.),%-GIn file included from %f:%l:%c:,%-GIn file included from %f:%l:%c,%-GIn file included from %f:%l,%-Gfrom %f:%l:%c,%-Gfrom %f:%l,%f:%l:%c:%m,%f(%l):%m,%f:%l:%m,\"%f\"\\, line %l%*\\D%c%*[^ ] %m,%D%*\\a[%*\\d]: Entering directory `%f',%X%*\\a[%*\\d]: Leaving directory `%f',%D%*\\a: Entering directory `%f',%X%*\\a: Leaving directory `%f',%DMaking %*\\a in %f,%f|%l| %m" - # endif - # endif - # endif -*** ../vim-7.3.260/src/version.c 2011-07-20 18:29:33.000000000 +0200 ---- src/version.c 2011-07-27 13:46:23.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 261, - /**/ - --- -Have you heard about the new Barbie doll? It's called Divorce -Barbie. It comes with all of Ken's stuff. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.262 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.262 -Problem: Photon code style doesn't match Vim style. -Solution: Clean up some of it. (Elias Diem) -Files: src/gui_photon.c - - -*** ../vim-7.3.261/src/gui_photon.c 2011-01-17 20:08:03.000000000 +0100 ---- src/gui_photon.c 2011-07-27 14:07:02.000000000 +0200 -*************** -*** 32,40 **** - #endif - - #define ARRAY_LENGTH(a) (sizeof(a) / sizeof(a[0])) -! #define RGB(r,g,b) PgRGB(r,g,b) - -! #define EVENT_BUFFER_SIZE sizeof( PhEvent_t ) + 1000 - - /* Some defines for gui_mch_mousehide() */ - #define MOUSE_HIDE TRUE ---- 32,40 ---- - #endif - - #define ARRAY_LENGTH(a) (sizeof(a) / sizeof(a[0])) -! #define RGB(r, g, b) PgRGB(r, g, b) - -! #define EVENT_BUFFER_SIZE sizeof(PhEvent_t) + 1000 - - /* Some defines for gui_mch_mousehide() */ - #define MOUSE_HIDE TRUE -*************** -*** 206,258 **** - static PtCallbackF_t gui_ph_handle_menu_unrealized; - - #ifdef USE_PANEL_GROUP -! static void gui_ph_get_panelgroup_margins( short*, short*, short*, short* ); - #endif - - #ifdef FEAT_TOOLBAR -! static PhImage_t *gui_ph_toolbar_find_icon( vimmenu_T *menu ); - #endif - -! static void gui_ph_draw_start( void ); -! static void gui_ph_draw_end( void ); - - /* Set the text for the balloon */ -! static PtWidget_t * gui_ph_show_tooltip( PtWidget_t *window, - PtWidget_t *widget, - int position, - char *text, - char *font, - PgColor_t fill_color, -! PgColor_t text_color ); - - /****************************************************************************/ - -! static PtWidget_t * gui_ph_show_tooltip( PtWidget_t *window, - PtWidget_t *widget, - int position, - char *text, - char *font, - PgColor_t fill_color, -! PgColor_t text_color ) - { - PtArg_t arg; - vimmenu_T *menu; - char_u *tooltip; - -! PtSetArg( &arg, Pt_ARG_POINTER, &menu, 0 ); -! PtGetResources( widget, 1, &arg ); - - /* Override the text and position */ - - tooltip = text; -! if( menu != NULL ) - { - int index = MENU_INDEX_TIP; -! if( menu->strings[ index ] != NULL ) - tooltip = menu->strings[ index ]; - } - -! return( PtInflateBalloon( - window, - widget, - /* Don't put the balloon at the bottom, ---- 206,258 ---- - static PtCallbackF_t gui_ph_handle_menu_unrealized; - - #ifdef USE_PANEL_GROUP -! static void gui_ph_get_panelgroup_margins(short*, short*, short*, short*); - #endif - - #ifdef FEAT_TOOLBAR -! static PhImage_t *gui_ph_toolbar_find_icon(vimmenu_T *menu); - #endif - -! static void gui_ph_draw_start(void); -! static void gui_ph_draw_end(void); - - /* Set the text for the balloon */ -! static PtWidget_t * gui_ph_show_tooltip(PtWidget_t *window, - PtWidget_t *widget, - int position, - char *text, - char *font, - PgColor_t fill_color, -! PgColor_t text_color); - - /****************************************************************************/ - -! static PtWidget_t * gui_ph_show_tooltip(PtWidget_t *window, - PtWidget_t *widget, - int position, - char *text, - char *font, - PgColor_t fill_color, -! PgColor_t text_color) - { - PtArg_t arg; - vimmenu_T *menu; - char_u *tooltip; - -! PtSetArg(&arg, Pt_ARG_POINTER, &menu, 0); -! PtGetResources(widget, 1, &arg); - - /* Override the text and position */ - - tooltip = text; -! if (menu != NULL) - { - int index = MENU_INDEX_TIP; -! if (menu->strings[ index ] != NULL) - tooltip = menu->strings[ index ]; - } - -! return PtInflateBalloon( - window, - widget, - /* Don't put the balloon at the bottom, -*************** -*** 261,285 **** - tooltip, - font, - fill_color, -! text_color ) ); - } - - static void -! gui_ph_resize_container( void ) - { - PhArea_t area; - -! PtWidgetArea( gui.vimWindow, &area ); -! PtWidgetPos ( gui.vimContainer, &area.pos ); - -! PtSetResource( gui.vimContainer, Pt_ARG_AREA, &area, 0 ); - } - - static int - gui_ph_handle_menu_resize( - PtWidget_t *widget, - void *other, -! PtCallbackInfo_t *info ) - { - PtContainerCallback_t *sizes = info->cbdata; - PtWidget_t *container; ---- 261,285 ---- - tooltip, - font, - fill_color, -! text_color); - } - - static void -! gui_ph_resize_container(void) - { - PhArea_t area; - -! PtWidgetArea(gui.vimWindow, &area); -! PtWidgetPos (gui.vimContainer, &area.pos); - -! PtSetResource(gui.vimContainer, Pt_ARG_AREA, &area, 0); - } - - static int - gui_ph_handle_menu_resize( - PtWidget_t *widget, - void *other, -! PtCallbackInfo_t *info) - { - PtContainerCallback_t *sizes = info->cbdata; - PtWidget_t *container; -*************** -*** 291,297 **** - /* Because vim treats the toolbar and menubar separately, - * and here they're lumped together into a PtToolbarGroup, - * we only need either menu_height or toolbar_height set at once */ -! if( gui.menu_is_active ) - { - gui.menu_height = height; - gui.toolbar_height = 0; ---- 291,297 ---- - /* Because vim treats the toolbar and menubar separately, - * and here they're lumped together into a PtToolbarGroup, - * we only need either menu_height or toolbar_height set at once */ -! if (gui.menu_is_active) - { - gui.menu_height = height; - gui.toolbar_height = 0; -*************** -*** 310,325 **** - container = gui.vimContainer; - #endif - -! PtSetResource( container, Pt_ARG_POS, &below_menu, 0 ); - - gui_ph_resize_container(); - - #ifdef USE_PANEL_GROUP - gui_ph_get_panelgroup_margins( - &pg_margin_top, &pg_margin_bottom, -! &pg_margin_left, &pg_margin_right ); - #endif -! return( Pt_CONTINUE ); - } - - /* ---- 310,325 ---- - container = gui.vimContainer; - #endif - -! PtSetResource(container, Pt_ARG_POS, &below_menu, 0); - - gui_ph_resize_container(); - - #ifdef USE_PANEL_GROUP - gui_ph_get_panelgroup_margins( - &pg_margin_top, &pg_margin_bottom, -! &pg_margin_left, &pg_margin_right); - #endif -! return Pt_CONTINUE; - } - - /* -*************** -*** 330,352 **** - gui_ph_handle_timer_cursor( - PtWidget_t *widget, - void *data, -! PtCallbackInfo_t *info ) - { -! if( blink_state == BLINK_ON ) - { - gui_undraw_cursor(); - blink_state = BLINK_OFF; -! PtSetResource( gui_ph_timer_cursor, Pt_ARG_TIMER_INITIAL, -! blink_offtime, 0 ); - } - else - { - gui_update_cursor(TRUE, FALSE); - blink_state = BLINK_ON; -! PtSetResource( gui_ph_timer_cursor, Pt_ARG_TIMER_INITIAL, -! blink_ontime, 0 ); - } -! return( Pt_CONTINUE ); - } - - static int ---- 330,352 ---- - gui_ph_handle_timer_cursor( - PtWidget_t *widget, - void *data, -! PtCallbackInfo_t *info) - { -! if (blink_state == BLINK_ON) - { - gui_undraw_cursor(); - blink_state = BLINK_OFF; -! PtSetResource(gui_ph_timer_cursor, Pt_ARG_TIMER_INITIAL, -! blink_offtime, 0); - } - else - { - gui_update_cursor(TRUE, FALSE); - blink_state = BLINK_ON; -! PtSetResource(gui_ph_timer_cursor, Pt_ARG_TIMER_INITIAL, -! blink_ontime, 0); - } -! return Pt_CONTINUE; - } - - static int -*************** -*** 354,360 **** - { - is_timeout = TRUE; - -! return( Pt_CONTINUE ); - } - - static int ---- 354,360 ---- - { - is_timeout = TRUE; - -! return Pt_CONTINUE; - } - - static int -*************** -*** 402,408 **** - break; - } - -! return( Pt_CONTINUE ); - } - - static int ---- 402,408 ---- - break; - } - -! return Pt_CONTINUE; - } - - static int -*************** -*** 426,438 **** - - case Pt_SCROLL_SET: - /* FIXME: return straight away here? */ -! return( Pt_CONTINUE ); - break; - } - - gui_drag_scrollbar(sb, value, dragging); - } -! return( Pt_CONTINUE ); - } - - static int ---- 426,438 ---- - - case Pt_SCROLL_SET: - /* FIXME: return straight away here? */ -! return Pt_CONTINUE; - break; - } - - gui_drag_scrollbar(sb, value, dragging); - } -! return Pt_CONTINUE; - } - - static int -*************** -*** 453,459 **** - /* We're a good lil photon program, aren't we? yes we are, yeess wee arrr */ - if( key->key_flags & Pk_KF_Compose ) - { -! return( Pt_CONTINUE ); - } - - if( (key->key_flags & Pk_KF_Cap_Valid) && ---- 453,459 ---- - /* We're a good lil photon program, aren't we? yes we are, yeess wee arrr */ - if( key->key_flags & Pk_KF_Compose ) - { -! return Pt_CONTINUE; - } - - if( (key->key_flags & Pk_KF_Cap_Valid) && -*************** -*** 473,479 **** - gui_is_menu_shortcut( key->key_cap ) ) ) ) - { - /* Fallthrough and let photon look for the hotkey */ -! return( Pt_CONTINUE ); - } - #endif - ---- 473,479 ---- - gui_is_menu_shortcut( key->key_cap ) ) ) ) - { - /* Fallthrough and let photon look for the hotkey */ -! return Pt_CONTINUE; - } - #endif - -*************** -*** 544,550 **** - add_to_input_buf( string, len ); - } - -! return( Pt_CONSUME ); - } - len = 0; - #endif ---- 544,550 ---- - add_to_input_buf( string, len ); - } - -! return Pt_CONSUME; - } - len = 0; - #endif -*************** -*** 579,585 **** - } - else - { -! return( Pt_CONTINUE ); - } - } - else ---- 579,585 ---- - } - else - { -! return Pt_CONTINUE; - } - } - else -*************** -*** 622,632 **** - if( len > 0 ) - { - add_to_input_buf( string, len ); -! return( Pt_CONSUME ); - } - } - -! return( Pt_CONTINUE ); - } - - static int ---- 622,632 ---- - if( len > 0 ) - { - add_to_input_buf( string, len ); -! return Pt_CONSUME; - } - } - -! return Pt_CONTINUE; - } - - static int -*************** -*** 652,658 **** - if( info->event->type == Ph_EV_PTR_MOTION_NOBUTTON ) - { - gui_mouse_moved( mouse_x, mouse_y ); -! return( Pt_CONTINUE ); - } - - if( pointer->key_mods & Pk_KM_Shift ) ---- 652,658 ---- - if( info->event->type == Ph_EV_PTR_MOTION_NOBUTTON ) - { - gui_mouse_moved( mouse_x, mouse_y ); -! return Pt_CONTINUE; - } - - if( pointer->key_mods & Pk_KM_Shift ) -*************** -*** 702,708 **** - gui_send_mouse_event( button , mouse_x, mouse_y, repeated_click, modifiers ); - } - -! return( Pt_CONTINUE ); - } - - /* Handle a focus change of the PtRaw widget */ ---- 702,708 ---- - gui_send_mouse_event( button , mouse_x, mouse_y, repeated_click, modifiers ); - } - -! return Pt_CONTINUE; - } - - /* Handle a focus change of the PtRaw widget */ -*************** -*** 721,727 **** - PtAddEventHandler( gui.vimTextArea, Ph_EV_PTR_MOTION_NOBUTTON, - gui_ph_handle_mouse, NULL ); - } -! return( Pt_CONTINUE ); - } - - static void ---- 721,727 ---- - PtAddEventHandler( gui.vimTextArea, Ph_EV_PTR_MOTION_NOBUTTON, - gui_ph_handle_mouse, NULL ); - } -! return Pt_CONTINUE; - } - - static void -*************** -*** 793,799 **** - PtRealizeWidget( menu->submenu_id ); - } - -! return( Pt_CONTINUE ); - } - - /* This is used for pulldown/popup menus and also toolbar buttons */ ---- 793,799 ---- - PtRealizeWidget( menu->submenu_id ); - } - -! return Pt_CONTINUE; - } - - /* This is used for pulldown/popup menus and also toolbar buttons */ -*************** -*** 805,811 **** - vimmenu_T *menu = (vimmenu_T *) data; - gui_menu_cb( menu ); - } -! return( Pt_CONTINUE ); - } - - /* Stop focus from disappearing into the menubar... */ ---- 805,811 ---- - vimmenu_T *menu = (vimmenu_T *) data; - gui_menu_cb( menu ); - } -! return Pt_CONTINUE; - } - - /* Stop focus from disappearing into the menubar... */ -*************** -*** 816,822 **** - PtCallbackInfo_t *info ) - { - PtGiveFocus( gui.vimTextArea, NULL ); -! return( Pt_CONTINUE ); - } - - static int ---- 816,822 ---- - PtCallbackInfo_t *info ) - { - PtGiveFocus( gui.vimTextArea, NULL ); -! return Pt_CONTINUE; - } - - static int -*************** -*** 826,832 **** - PtCallbackInfo_t *info ) - { - gui_set_shellsize( FALSE, TRUE, RESIZE_BOTH ); -! return( Pt_CONTINUE ); - } - - /****************************************************************************/ ---- 826,832 ---- - PtCallbackInfo_t *info ) - { - gui_set_shellsize( FALSE, TRUE, RESIZE_BOTH ); -! return Pt_CONTINUE; - } - - /****************************************************************************/ -*************** -*** 878,884 **** - ( STRCMP( items->dname, name ) != 0 ) ) - items = items->next; - } -! return( items ); - } - - static void ---- 878,884 ---- - ( STRCMP( items->dname, name ) != 0 ) ) - items = items->next; - } -! return items; - } - - static void -*************** -*** 927,933 **** - gui_menu_cb( menu ); - } - } -! return( Pt_CONTINUE ); - } - - static void ---- 927,933 ---- - gui_menu_cb( menu ); - } - } -! return Pt_CONTINUE; - } - - static void -*************** -*** 974,983 **** - mark++; - - if( *mark == ')' ) -! return( TRUE); - } - } -! return( FALSE ); - } - - static void ---- 974,983 ---- - mark++; - - if( *mark == ')' ) -! return TRUE; - } - } -! return FALSE; - } - - static void -*************** -*** 1057,1063 **** - gui_ph_pg_remove_buffer( menu->dname ); - } - -! return( Pt_CONTINUE ); - } - #endif - ---- 1057,1063 ---- - gui_ph_pg_remove_buffer( menu->dname ); - } - -! return Pt_CONTINUE; - } - #endif - -*************** -*** 1071,1077 **** - PtContainerHold( gui.vimContainer ); - } - -! return( Pt_CONTINUE ); - } - - /****************************************************************************/ ---- 1071,1077 ---- - PtContainerHold( gui.vimContainer ); - } - -! return Pt_CONTINUE; - } - - /****************************************************************************/ -*************** -*** 1126,1132 **** - - gui.event_buffer = (PhEvent_t *) alloc( EVENT_BUFFER_SIZE ); - if( gui.event_buffer == NULL ) -! return( FAIL ); - - /* Get a translation so we can convert from ISO Latin-1 to UTF */ - charset_translate = PxTranslateSet( NULL, "latin1" ); ---- 1126,1132 ---- - - gui.event_buffer = (PhEvent_t *) alloc( EVENT_BUFFER_SIZE ); - if( gui.event_buffer == NULL ) -! return FAIL; - - /* Get a translation so we can convert from ISO Latin-1 to UTF */ - charset_translate = PxTranslateSet( NULL, "latin1" ); -*************** -*** 1141,1147 **** - PtSetArg( &args[ n++ ], Pt_ARG_DIM, &window_size, 0 ); - gui.vimWindow = PtCreateWidget( PtWindow, NULL, n, args ); - if( gui.vimWindow == NULL ) -! return( FAIL ); - - PtAddCallback( gui.vimWindow, Pt_CB_WINDOW, gui_ph_handle_window_cb, NULL ); - PtAddCallback( gui.vimWindow, Pt_CB_WINDOW_OPENING, ---- 1141,1147 ---- - PtSetArg( &args[ n++ ], Pt_ARG_DIM, &window_size, 0 ); - gui.vimWindow = PtCreateWidget( PtWindow, NULL, n, args ); - if( gui.vimWindow == NULL ) -! return FAIL; - - PtAddCallback( gui.vimWindow, Pt_CB_WINDOW, gui_ph_handle_window_cb, NULL ); - PtAddCallback( gui.vimWindow, Pt_CB_WINDOW_OPENING, -*************** -*** 1158,1164 **** - - gui.vimPanelGroup = PtCreateWidget( PtPanelGroup, gui.vimWindow, n, args ); - if( gui.vimPanelGroup == NULL ) -! return( FAIL ); - - PtAddCallback( gui.vimPanelGroup, Pt_CB_PG_PANEL_SWITCHING, - gui_ph_handle_pg_change, NULL ); ---- 1158,1164 ---- - - gui.vimPanelGroup = PtCreateWidget( PtPanelGroup, gui.vimWindow, n, args ); - if( gui.vimPanelGroup == NULL ) -! return FAIL; - - PtAddCallback( gui.vimPanelGroup, Pt_CB_PG_PANEL_SWITCHING, - gui_ph_handle_pg_change, NULL ); -*************** -*** 1172,1178 **** - - gui.vimContainer = PtCreateWidget( PtPane, gui.vimWindow, n, args ); - if( gui.vimContainer == NULL ) -! return( FAIL ); - - PtAddCallback( gui.vimContainer, Pt_CB_RESIZE, gui_ph_pane_resize, NULL ); - #endif ---- 1172,1178 ---- - - gui.vimContainer = PtCreateWidget( PtPane, gui.vimWindow, n, args ); - if( gui.vimContainer == NULL ) -! return FAIL; - - PtAddCallback( gui.vimContainer, Pt_CB_RESIZE, gui_ph_pane_resize, NULL ); - #endif -*************** -*** 1195,1201 **** - - gui.vimTextArea = PtCreateWidget( PtRaw, Pt_DFLT_PARENT, n, args ); - if( gui.vimTextArea == NULL) -! return( FAIL ); - - /* TODO: use PtAddEventHandlers instead? */ - /* Not using Ph_EV_BUT_REPEAT because vim wouldn't use it anyway */ ---- 1195,1201 ---- - - gui.vimTextArea = PtCreateWidget( PtRaw, Pt_DFLT_PARENT, n, args ); - if( gui.vimTextArea == NULL) -! return FAIL; - - /* TODO: use PtAddEventHandlers instead? */ - /* Not using Ph_EV_BUT_REPEAT because vim wouldn't use it anyway */ -*************** -*** 1220,1230 **** - */ - gui_ph_timer_cursor = PtCreateWidget( PtTimer, gui.vimWindow, 0, NULL ); - if( gui_ph_timer_cursor == NULL ) -! return( FAIL ); - - gui_ph_timer_timeout = PtCreateWidget( PtTimer, gui.vimWindow, 0, NULL ); - if( gui_ph_timer_timeout == NULL ) -! return( FAIL ); - - PtAddCallback( gui_ph_timer_cursor, Pt_CB_TIMER_ACTIVATE, - gui_ph_handle_timer_cursor, NULL); ---- 1220,1230 ---- - */ - gui_ph_timer_cursor = PtCreateWidget( PtTimer, gui.vimWindow, 0, NULL ); - if( gui_ph_timer_cursor == NULL ) -! return FAIL; - - gui_ph_timer_timeout = PtCreateWidget( PtTimer, gui.vimWindow, 0, NULL ); - if( gui_ph_timer_timeout == NULL ) -! return FAIL; - - PtAddCallback( gui_ph_timer_cursor, Pt_CB_TIMER_ACTIVATE, - gui_ph_handle_timer_cursor, NULL); -*************** -*** 1239,1245 **** - gui.vimToolBarGroup = PtCreateWidget( PtToolbarGroup, gui.vimWindow, - n, args ); - if( gui.vimToolBarGroup == NULL ) -! return( FAIL ); - - PtAddCallback( gui.vimToolBarGroup, Pt_CB_RESIZE, - gui_ph_handle_menu_resize, NULL ); ---- 1239,1245 ---- - gui.vimToolBarGroup = PtCreateWidget( PtToolbarGroup, gui.vimWindow, - n, args ); - if( gui.vimToolBarGroup == NULL ) -! return FAIL; - - PtAddCallback( gui.vimToolBarGroup, Pt_CB_RESIZE, - gui_ph_handle_menu_resize, NULL ); -*************** -*** 1254,1260 **** - } - gui.vimMenuBar = PtCreateWidget( PtMenuBar, gui.vimToolBarGroup, n, args ); - if( gui.vimMenuBar == NULL ) -! return( FAIL ); - - # ifdef FEAT_TOOLBAR - n = 0; ---- 1254,1260 ---- - } - gui.vimMenuBar = PtCreateWidget( PtMenuBar, gui.vimToolBarGroup, n, args ); - if( gui.vimMenuBar == NULL ) -! return FAIL; - - # ifdef FEAT_TOOLBAR - n = 0; -*************** -*** 1273,1279 **** - - gui.vimToolBar = PtCreateWidget( PtToolbar, gui.vimToolBarGroup, n, args ); - if( gui.vimToolBar == NULL ) -! return( FAIL ); - - /* - * Size for the toolbar is fetched in gui_mch_show_toolbar, after ---- 1273,1279 ---- - - gui.vimToolBar = PtCreateWidget( PtToolbar, gui.vimToolBarGroup, n, args ); - if( gui.vimToolBar == NULL ) -! return FAIL; - - /* - * Size for the toolbar is fetched in gui_mch_show_toolbar, after -*************** -*** 1284,1296 **** - - #endif - -! return( OK ); - } - - int - gui_mch_init_check(void) - { -! return( (is_photon_available == TRUE) ? OK : FAIL ); - } - - int ---- 1284,1296 ---- - - #endif - -! return OK; - } - - int - gui_mch_init_check(void) - { -! return (is_photon_available == TRUE) ? OK : FAIL; - } - - int -*************** -*** 1310,1316 **** - if (gui_win_x != -1 && gui_win_y != -1) - gui_mch_set_winpos(gui_win_x, gui_win_y); - -! return( (PtRealizeWidget( gui.vimWindow ) == 0) ? OK : FAIL ); - } - - void ---- 1310,1316 ---- - if (gui_win_x != -1 && gui_win_y != -1) - gui_mch_set_winpos(gui_win_x, gui_win_y); - -! return (PtRealizeWidget( gui.vimWindow ) == 0) ? OK : FAIL; - } - - void -*************** -*** 1336,1342 **** - exit_gui_mch_update( void *data ) - { - *(int *)data = FALSE; -! return( Pt_END ); - } - - void ---- 1336,1342 ---- - exit_gui_mch_update( void *data ) - { - *(int *)data = FALSE; -! return Pt_END; - } - - void -*************** -*** 1365,1374 **** - if( input_available() ) - { - PtSetResource( gui_ph_timer_timeout, Pt_ARG_TIMER_INITIAL, 0, 0 ); -! return( OK ); - } - else if( is_timeout == TRUE ) -! return( FAIL ); - } - } - ---- 1365,1374 ---- - if( input_available() ) - { - PtSetResource( gui_ph_timer_timeout, Pt_ARG_TIMER_INITIAL, 0, 0 ); -! return OK; - } - else if( is_timeout == TRUE ) -! return FAIL; - } - } - -*************** -*** 1446,1454 **** - vim_free( default_path ); - - if( file.ret == Pt_FSDIALOG_BTN1 ) -! return( vim_strsave( file.path ) ); - } -! return( NULL ); - } - #endif - ---- 1446,1454 ---- - vim_free( default_path ); - - if( file.ret == Pt_FSDIALOG_BTN1 ) -! return vim_strsave(file.path); - } -! return NULL; - } - #endif - -*************** -*** 1470,1476 **** - - PtModalUnblock( modal_ctrl, (void *) button ); - -! return( Pt_TRUE ); - } - - static int ---- 1470,1476 ---- - - PtModalUnblock( modal_ctrl, (void *) button ); - -! return Pt_TRUE; - } - - static int -*************** -*** 1478,1484 **** - { - if( info->reason_subtype == Pt_EDIT_ACTIVATE ) - gui_ph_dialog_close( 1, data ); -! return( Pt_CONTINUE ); - } - - static int ---- 1478,1484 ---- - { - if( info->reason_subtype == Pt_EDIT_ACTIVATE ) - gui_ph_dialog_close( 1, data ); -! return Pt_CONTINUE; - } - - static int -*************** -*** 1490,1498 **** - if( ( key->key_flags & Pk_KF_Cap_Valid ) && ( key->key_cap == Pk_Escape ) ) - { - gui_ph_dialog_close( 0, data ); -! return( Pt_CONSUME ); - } -! return( Pt_PROCESS ); - } - - int ---- 1490,1498 ---- - if( ( key->key_flags & Pk_KF_Cap_Valid ) && ( key->key_cap == Pk_Escape ) ) - { - gui_ph_dialog_close( 0, data ); -! return Pt_CONSUME; - } -! return Pt_PROCESS; - } - - int -*************** -*** 1519,1525 **** - button_count = len = i = 0; - - if( buttons == NULL || *buttons == NUL ) -! return( -1 ); - - /* There is one less separator than buttons, so bump up the button count */ - button_count = 1; ---- 1519,1525 ---- - button_count = len = i = 0; - - if( buttons == NULL || *buttons == NUL ) -! return -1; - - /* There is one less separator than buttons, so bump up the button count */ - button_count = 1; -*************** -*** 1637,1643 **** - vim_free( button_array ); - vim_free( buttons_copy ); - -! return( dialog_result ); - } - #endif - /****************************************************************************/ ---- 1637,1643 ---- - vim_free( button_array ); - vim_free( buttons_copy ); - -! return dialog_result; - } - #endif - /****************************************************************************/ -*************** -*** 1653,1659 **** - *x = pos->x; - *y = pos->y; - -! return( OK ); - } - - void ---- 1653,1659 ---- - *x = pos->x; - *y = pos->y; - -! return OK; - } - - void -*************** -*** 1975,1985 **** - hex_digit(int c) - { - if (VIM_ISDIGIT(c)) -! return( c - '0' ); - c = TOLOWER_ASC(c); - if (c >= 'a' && c <= 'f') -! return( c - 'a' + 10 ); -! return( -1000 ); - } - - ---- 1975,1985 ---- - hex_digit(int c) - { - if (VIM_ISDIGIT(c)) -! return c - '0'; - c = TOLOWER_ASC(c); - if (c >= 'a' && c <= 'f') -! return c - 'a' + 10; -! return -1000; - } - - -*************** -*** 2065,2077 **** - b = hex_digit( name[5] ) * 16 + hex_digit( name[6] ); - if( r < 0 || g < 0 || b < 0 ) - return INVALCOLOR; -! return( RGB( r, g, b ) ); - } - - for( i = 0; i < ARRAY_LENGTH( table ); i++ ) - { - if( STRICMP( name, table[i].name ) == 0 ) -! return( table[i].colour ); - } - - /* ---- 2065,2077 ---- - b = hex_digit( name[5] ) * 16 + hex_digit( name[6] ); - if( r < 0 || g < 0 || b < 0 ) - return INVALCOLOR; -! return RGB(r, g, b); - } - - for( i = 0; i < ARRAY_LENGTH( table ); i++ ) - { - if( STRICMP( name, table[i].name ) == 0 ) -! return table[i].colour; - } - - /* -*************** -*** 2115,2121 **** - if (STRICMP(color, name) == 0) - { - fclose(fd); -! return( (guicolor_T) RGB(r,g,b) ); - } - } - ---- 2115,2121 ---- - if (STRICMP(color, name) == 0) - { - fclose(fd); -! return (guicolor_T)RGB(r, g, b); - } - } - -*************** -*** 2451,2458 **** - for (i = 0; special_keys[i].key_sym != 0; i++) - if (name[0] == special_keys[i].vim_code0 && - name[1] == special_keys[i].vim_code1) -! return( OK ); -! return( FAIL ); - } - - /****************************************************************************/ ---- 2451,2458 ---- - for (i = 0; special_keys[i].key_sym != 0; i++) - if (name[0] == special_keys[i].vim_code0 && - name[1] == special_keys[i].vim_code1) -! return OK; -! return FAIL; - } - - /****************************************************************************/ -*************** -*** 2512,2518 **** - - temp_phi = &external_icon; - } -! return( temp_phi ); - } - - /* ---- 2512,2518 ---- - - temp_phi = &external_icon; - } -! return temp_phi; - } - - /* -*************** -*** 2541,2556 **** - icon = gui_ph_toolbar_load_icon( full_pathname ); - - if( icon != NULL ) -! return( icon ); - } - - if( menu->iconidx >= 0 && - ( menu->iconidx < ARRAY_LENGTH( gui_ph_toolbar_images ) ) ) - { -! return( gui_ph_toolbar_images[ menu->iconidx ] ); - } - -! return( NULL ); - } - #endif - ---- 2541,2556 ---- - icon = gui_ph_toolbar_load_icon( full_pathname ); - - if( icon != NULL ) -! return icon; - } - - if( menu->iconidx >= 0 && - ( menu->iconidx < ARRAY_LENGTH( gui_ph_toolbar_images ) ) ) - { -! return gui_ph_toolbar_images[menu->iconidx]; - } - -! return NULL; - } - #endif - -*************** -*** 2895,2905 **** - * at least has the bits we're checking for */ - if( font_size == info.size && - style == (info.style & style) ) -! return( (GuiFont) font_tag ); - } - vim_free( font_tag ); - } -! return( NULL ); - } - - /* ---- 2895,2905 ---- - * at least has the bits we're checking for */ - if( font_size == info.size && - style == (info.style & style) ) -! return (GuiFont)font_tag; - } - vim_free( font_tag ); - } -! return NULL; - } - - /* -*************** -*** 2957,2965 **** - } - } - } -! return( TRUE ); - } -! return( FALSE ); - } - - int ---- 2957,2965 ---- - } - } - } -! return TRUE; - } -! return FALSE; - } - - int -*************** -*** 2985,2991 **** - "pcterm12", -1, PHFONT_FIXED, NULL ); - - if( font_tag == NULL ) -! return( FAIL ); - - gui_mch_free_font( gui.norm_font ); - gui.norm_font = font_tag; ---- 2985,2991 ---- - "pcterm12", -1, PHFONT_FIXED, NULL ); - - if( font_tag == NULL ) -! return FAIL; - - gui_mch_free_font( gui.norm_font ); - gui.norm_font = font_tag; -*************** -*** 2997,3009 **** - { - if( gui_ph_parse_font_name( vim_font_name, &font_name, &font_flags, - &font_size ) == FALSE ) -! return( FAIL ); - - font_tag = gui_ph_get_font( font_name, font_flags, font_size, 0 ); - if( font_tag == NULL ) - { - vim_free( font_name ); -! return( FAIL ); - } - - gui_mch_free_font( gui.norm_font ); ---- 2997,3009 ---- - { - if( gui_ph_parse_font_name( vim_font_name, &font_name, &font_flags, - &font_size ) == FALSE ) -! return FAIL; - - font_tag = gui_ph_get_font( font_name, font_flags, font_size, 0 ); - if( font_tag == NULL ) - { - vim_free( font_name ); -! return FAIL; - } - - gui_mch_free_font( gui.norm_font ); -*************** -*** 3026,3032 **** - gui.char_ascent = - extent.ul.y; - - vim_free( font_name ); -! return( OK ); - } - - /* ---- 3026,3032 ---- - gui.char_ascent = - extent.ul.y; - - vim_free( font_name ); -! return OK; - } - - /* -*************** -*** 3042,3048 **** - gui.char_height = - info.ascender + info.descender + p_linespace; - gui.char_ascent = - info.ascender + p_linespace / 2; - -! return( OK ); - } - - GuiFont ---- 3042,3048 ---- - gui.char_height = - info.ascender + info.descender + p_linespace; - gui.char_ascent = - info.ascender + p_linespace / 2; - -! return OK; - } - - GuiFont -*************** -*** 3060,3072 **** - vim_free( font_name ); - - if( font_tag != NULL ) -! return( (GuiFont) font_tag ); - } - - if( report_error ) - EMSG2(e_font, vim_font_name ); - -! return( FAIL ); - } - - #if defined(FEAT_EVAL) || defined(PROTO) ---- 3060,3072 ---- - vim_free( font_name ); - - if( font_tag != NULL ) -! return (GuiFont)font_tag; - } - - if( report_error ) - EMSG2(e_font, vim_font_name ); - -! return FAIL; - } - - #if defined(FEAT_EVAL) || defined(PROTO) -*** ../vim-7.3.261/src/version.c 2011-07-27 13:59:12.000000000 +0200 ---- src/version.c 2011-07-27 14:08:08.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 262, - /**/ - --- -You know you use Vim too much when you have this alias in your -~/.bashrc file: alias :e=/bin/vim (Eljay Love-Jensen) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.263 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.263 -Problem: Perl and Tcl have a few code style problems. -Solution: Clean it up. (Elias Diem) -Files: src/if_perl.xs, src/if_tcl.c - - -*** ../vim-7.3.262/src/if_perl.xs 2010-10-23 14:02:48.000000000 +0200 ---- src/if_perl.xs 2011-07-27 14:11:03.000000000 +0200 -*************** -*** 755,761 **** - #ifdef HAVE_SANDBOX - if (sandbox) - { -! safe = perl_get_sv( "VIM::safe", FALSE ); - # ifndef MAKE_TEST /* avoid a warning for unreachable code */ - if (safe == NULL || !SvTRUE(safe)) - EMSG(_("E299: Perl evaluation forbidden in sandbox without the Safe module")); ---- 755,761 ---- - #ifdef HAVE_SANDBOX - if (sandbox) - { -! safe = perl_get_sv("VIM::safe", FALSE); - # ifndef MAKE_TEST /* avoid a warning for unreachable code */ - if (safe == NULL || !SvTRUE(safe)) - EMSG(_("E299: Perl evaluation forbidden in sandbox without the Safe module")); -*************** -*** 1108,1114 **** - VIWIN win - - PPCODE: -! if(items == 1) - { - EXTEND(sp, 2); - if (!win_valid(win)) ---- 1108,1114 ---- - VIWIN win - - PPCODE: -! if (items == 1) - { - EXTEND(sp, 2); - if (!win_valid(win)) -*************** -*** 1116,1122 **** - PUSHs(sv_2mortal(newSViv(win->w_cursor.lnum))); - PUSHs(sv_2mortal(newSViv(win->w_cursor.col))); - } -! else if(items == 3) - { - int lnum, col; - ---- 1116,1122 ---- - PUSHs(sv_2mortal(newSViv(win->w_cursor.lnum))); - PUSHs(sv_2mortal(newSViv(win->w_cursor.col))); - } -! else if (items == 3) - { - int lnum, col; - -*************** -*** 1249,1257 **** - { - lnum = SvIV(ST(1)); - count = 1 + SvIV(ST(2)) - lnum; -! if(count == 0) - count = 1; -! if(count < 0) - { - lnum -= count; - count = -count; ---- 1249,1257 ---- - { - lnum = SvIV(ST(1)); - count = 1 + SvIV(ST(2)) - lnum; -! if (count == 0) - count = 1; -! if (count < 0) - { - lnum -= count; - count = -count; -*** ../vim-7.3.262/src/if_tcl.c 2010-12-17 20:23:56.000000000 +0100 ---- src/if_tcl.c 2011-07-27 14:11:03.000000000 +0200 -*************** -*** 1884,1897 **** - { - int newerr = OK; - -! if (error == TCL_EXIT ) - { - int retval; - char buf[50]; - Tcl_Obj *robj; - - robj = Tcl_GetObjResult(tclinfo.interp); -! if( Tcl_GetIntFromObj(tclinfo.interp, robj, &retval) != TCL_OK ) - { - EMSG(_("E281: TCL ERROR: exit code is not int!? Please report this to vim-dev@vim.org")); - newerr = FAIL; ---- 1884,1897 ---- - { - int newerr = OK; - -! if (error == TCL_EXIT) - { - int retval; - char buf[50]; - Tcl_Obj *robj; - - robj = Tcl_GetObjResult(tclinfo.interp); -! if (Tcl_GetIntFromObj(tclinfo.interp, robj, &retval) != TCL_OK) - { - EMSG(_("E281: TCL ERROR: exit code is not int!? Please report this to vim-dev@vim.org")); - newerr = FAIL; -*************** -*** 1900,1906 **** - { - sprintf(buf, _("E572: exit code %d"), retval); - tclerrmsg(buf); -! if (retval == 0 ) - { - did_emsg = 0; - newerr = OK; ---- 1900,1906 ---- - { - sprintf(buf, _("E572: exit code %d"), retval); - tclerrmsg(buf); -! if (retval == 0) - { - did_emsg = 0; - newerr = OK; -*** ../vim-7.3.262/src/version.c 2011-07-27 14:09:05.000000000 +0200 ---- src/version.c 2011-07-27 14:12:05.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 263, - /**/ - --- -DEAD PERSON: I don't want to go in the cart! -CUSTOMER: Oh, don't be such a baby. -MORTICIAN: I can't take him... -DEAD PERSON: I feel fine! -CUSTOMER: Oh, do us a favor... -MORTICIAN: I can't. - The Quest for the Holy Grail (Monty Python) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.264 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.264 -Problem: When the current directory name contains wildcard characters, such - as "foo[with]bar", the tags file can't be found. (Jeremy - Erickson) -Solution: When searching for matching files also match without expanding - wildcards. This is a bit of a hack. -Files: src/vim.h, src/misc1.c, src/misc2.c - - -*** ../vim-7.3.263/src/vim.h 2011-07-20 15:04:52.000000000 +0200 ---- src/vim.h 2011-07-27 16:21:38.000000000 +0200 -*************** -*** 816,821 **** ---- 816,822 ---- - #define EW_PATH 0x80 /* search in 'path' too */ - #define EW_ICASE 0x100 /* ignore case */ - #define EW_NOERROR 0x200 /* no error for bad regexp */ -+ #define EW_NOTWILD 0x400 /* add match with literal name if exists */ - /* Note: mostly EW_NOTFOUND and EW_SILENT are mutually exclusive: EW_NOTFOUND - * is used when executing commands and EW_SILENT for interactive expanding. */ - -*** ../vim-7.3.263/src/misc1.c 2011-07-20 15:04:52.000000000 +0200 ---- src/misc1.c 2011-07-27 17:24:39.000000000 +0200 -*************** -*** 9119,9125 **** - * all entries found with "matchname". */ - if ((p[0] != '.' || starts_with_dot) - && (matchname == NULL -! || vim_regexec(®match, p, (colnr_T)0))) - { - #ifdef WIN3264 - STRCPY(s, p); ---- 9119,9127 ---- - * all entries found with "matchname". */ - if ((p[0] != '.' || starts_with_dot) - && (matchname == NULL -! || vim_regexec(®match, p, (colnr_T)0) -! || ((flags & EW_NOTWILD) -! && fnamencmp(path + (s - buf), p, e - s) == 0))) - { - #ifdef WIN3264 - STRCPY(s, p); -*************** -*** 9323,9329 **** - e = p; - *e = NUL; - -! /* now we have one wildcard component between "s" and "e" */ - /* Remove backslashes between "wildoff" and the start of the wildcard - * component. */ - for (p = buf + wildoff; p < s; ++p) ---- 9325,9331 ---- - e = p; - *e = NUL; - -! /* Now we have one wildcard component between "s" and "e". */ - /* Remove backslashes between "wildoff" and the start of the wildcard - * component. */ - for (p = buf + wildoff; p < s; ++p) -*************** -*** 9390,9396 **** - if (dp == NULL) - break; - if ((dp->d_name[0] != '.' || starts_with_dot) -! && vim_regexec(®match, (char_u *)dp->d_name, (colnr_T)0)) - { - STRCPY(s, dp->d_name); - len = STRLEN(buf); ---- 9392,9400 ---- - if (dp == NULL) - break; - if ((dp->d_name[0] != '.' || starts_with_dot) -! && (vim_regexec(®match, (char_u *)dp->d_name, (colnr_T)0) -! || ((flags & EW_NOTWILD) -! && fnamencmp(path + (s - buf), dp->d_name, e - s) == 0))) - { - STRCPY(s, dp->d_name); - len = STRLEN(buf); -*** ../vim-7.3.263/src/misc2.c 2011-07-07 17:15:29.000000000 +0200 ---- src/misc2.c 2011-07-27 17:21:10.000000000 +0200 -*************** -*** 4653,4661 **** - { - if (r_ptr[0] == '\\' && r_ptr[1] == ';') - { -! /* overwrite the escape char, -! * use STRLEN(r_ptr) to move the trailing '\0' -! */ - STRMOVE(r_ptr, r_ptr + 1); - r_ptr++; - } ---- 4653,4660 ---- - { - if (r_ptr[0] == '\\' && r_ptr[1] == ';') - { -! /* Overwrite the escape char, -! * use STRLEN(r_ptr) to move the trailing '\0'. */ - STRMOVE(r_ptr, r_ptr + 1); - r_ptr++; - } -*************** -*** 4914,4923 **** - stackp->ffs_filearray_size = 0; - } - else - expand_wildcards((dirptrs[1] == NULL) ? 1 : 2, dirptrs, - &stackp->ffs_filearray_size, - &stackp->ffs_filearray, -! EW_DIR|EW_ADDSLASH|EW_SILENT); - - stackp->ffs_filearray_cur = 0; - stackp->ffs_stage = 0; ---- 4913,4925 ---- - stackp->ffs_filearray_size = 0; - } - else -+ /* Add EW_NOTWILD because the expanded path may contain -+ * wildcard characters that are to be taken literally. -+ * This is a bit of a hack. */ - expand_wildcards((dirptrs[1] == NULL) ? 1 : 2, dirptrs, - &stackp->ffs_filearray_size, - &stackp->ffs_filearray, -! EW_DIR|EW_ADDSLASH|EW_SILENT|EW_NOTWILD); - - stackp->ffs_filearray_cur = 0; - stackp->ffs_stage = 0; -*** ../vim-7.3.263/src/version.c 2011-07-27 14:15:41.000000000 +0200 ---- src/version.c 2011-07-27 17:25:44.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 264, - /**/ - --- -CUSTOMER: You're not fooling anyone y'know. Look, isn't there something - you can do? -DEAD PERSON: I feel happy... I feel happy. - [whop] -CUSTOMER: Ah, thanks very much. -MORTICIAN: Not at all. See you on Thursday. -CUSTOMER: Right. - The Quest for the Holy Grail (Monty Python) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.265 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.265 -Problem: When storing a pattern in search history there is no proper check - for the separator character. -Solution: Pass the separator character to in_history(). (Muraoka Taro) -Files: src/ex_getln.c - - -*** ../vim-7.3.264/src/ex_getln.c 2011-07-07 16:44:33.000000000 +0200 ---- src/ex_getln.c 2011-07-27 17:50:35.000000000 +0200 -*************** -*** 67,73 **** - - static int hist_char2type __ARGS((int c)); - -! static int in_history __ARGS((int, char_u *, int)); - # ifdef FEAT_EVAL - static int calc_hist_idx __ARGS((int histype, int num)); - # endif ---- 67,73 ---- - - static int hist_char2type __ARGS((int c)); - -! static int in_history __ARGS((int, char_u *, int, int)); - # ifdef FEAT_EVAL - static int calc_hist_idx __ARGS((int histype, int num)); - # endif -*************** -*** 5289,5301 **** - * If 'move_to_front' is TRUE, matching entry is moved to end of history. - */ - static int -! in_history(type, str, move_to_front) - int type; - char_u *str; - int move_to_front; /* Move the entry to the front if it exists */ - { - int i; - int last_i = -1; - - if (hisidx[type] < 0) - return FALSE; ---- 5289,5303 ---- - * If 'move_to_front' is TRUE, matching entry is moved to end of history. - */ - static int -! in_history(type, str, move_to_front, sep) - int type; - char_u *str; - int move_to_front; /* Move the entry to the front if it exists */ -+ int sep; - { - int i; - int last_i = -1; -+ char_u *p; - - if (hisidx[type] < 0) - return FALSE; -*************** -*** 5304,5310 **** - { - if (history[type][i].hisstr == NULL) - return FALSE; -! if (STRCMP(str, history[type][i].hisstr) == 0) - { - if (!move_to_front) - return TRUE; ---- 5306,5317 ---- - { - if (history[type][i].hisstr == NULL) - return FALSE; -! -! /* For search history, check that the separator character matches as -! * well. */ -! p = history[type][i].hisstr; -! if (STRCMP(str, p) == 0 -! && (type != HIST_SEARCH || sep == p[STRLEN(p) + 1])) - { - if (!move_to_front) - return TRUE; -*************** -*** 5398,5404 **** - } - last_maptick = -1; - } -! if (!in_history(histype, new_entry, TRUE)) - { - if (++hisidx[histype] == hislen) - hisidx[histype] = 0; ---- 5405,5411 ---- - } - last_maptick = -1; - } -! if (!in_history(histype, new_entry, TRUE, sep)) - { - if (++hisidx[histype] == hislen) - hisidx[histype] = 0; -*************** -*** 5977,5983 **** - if (val != NULL && *val != NUL) - { - if (!in_history(type, val + (type == HIST_SEARCH), -! viminfo_add_at_front)) - { - /* Need to re-allocate to append the separator byte. */ - len = STRLEN(val); ---- 5984,5990 ---- - if (val != NULL && *val != NUL) - { - if (!in_history(type, val + (type == HIST_SEARCH), -! viminfo_add_at_front, *val)) - { - /* Need to re-allocate to append the separator byte. */ - len = STRLEN(val); -*** ../vim-7.3.264/src/version.c 2011-07-27 17:31:42.000000000 +0200 ---- src/version.c 2011-07-27 17:58:22.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 265, - /**/ - --- - [clop clop] -MORTICIAN: Who's that then? -CUSTOMER: I don't know. -MORTICIAN: Must be a king. -CUSTOMER: Why? -MORTICIAN: He hasn't got shit all over him. - The Quest for the Holy Grail (Monty Python) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.266 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.266 -Problem: In Gvim with iBus typing space in Insert mode doesn't work. -Solution: Clear xim_expected_char after checking it. -Files: src/mbyte.c - - -*** ../vim-7.3.265/src/mbyte.c 2011-07-15 21:16:54.000000000 +0200 ---- src/mbyte.c 2011-07-27 18:21:13.000000000 +0200 -*************** -*** 5170,5175 **** ---- 5170,5179 ---- - /* We had a keypad key, and XIM tried to thieve it */ - return FALSE; - -+ /* This is supposed to fix a problem with iBus, that space -+ * characters don't work in input mode. */ -+ xim_expected_char = NUL; -+ - /* Normal processing */ - return imresult; - } -*** ../vim-7.3.265/src/version.c 2011-07-27 17:58:42.000000000 +0200 ---- src/version.c 2011-07-27 18:23:00.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 266, - /**/ - --- - [clop clop] -ARTHUR: Old woman! -DENNIS: Man! -ARTHUR: Man, sorry. What knight lives in that castle over there? -DENNIS: I'm thirty seven. -ARTHUR: What? -DENNIS: I'm thirty seven -- I'm not old! - The Quest for the Holy Grail (Monty Python) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.267 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.267 -Problem: Ruby on Mac OS X 10.7 may crash. -Solution: Avoid alloc(0). (Bjorn Winckler) -Files: src/if_ruby.c - - -*** ../vim-7.3.266/src/if_ruby.c 2011-01-17 19:53:20.000000000 +0100 ---- src/if_ruby.c 2011-08-04 18:57:43.000000000 +0200 -*************** -*** 761,771 **** - char *buff, *p; - - str = rb_obj_as_string(str); -! buff = ALLOCA_N(char, RSTRING_LEN(str)); -! strcpy(buff, RSTRING_PTR(str)); -! p = strchr(buff, '\n'); -! if (p) *p = '\0'; -! MSG(buff); - return Qnil; - } - ---- 761,779 ---- - char *buff, *p; - - str = rb_obj_as_string(str); -! if (RSTRING_LEN(str) > 0) -! { -! /* Only do this when the string isn't empty, alloc(0) causes trouble. */ -! buff = ALLOCA_N(char, RSTRING_LEN(str)); -! strcpy(buff, RSTRING_PTR(str)); -! p = strchr(buff, '\n'); -! if (p) *p = '\0'; -! MSG(buff); -! } -! else -! { -! MSG(""); -! } - return Qnil; - } - -*** ../vim-7.3.266/src/version.c 2011-07-27 18:25:40.000000000 +0200 ---- src/version.c 2011-08-04 19:07:45.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 267, - /**/ - --- -There are 10 kinds of people: Those who understand binary and those who don't. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.268 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.268 -Problem: Vim freezes when executing an external command with zsh. -Solution: Use O_NOCTTY both in the master and slave. (Bjorn Winckler) -Files: src/os_unix.c - - -*** ../vim-7.3.267/src/os_unix.c 2011-07-07 16:20:45.000000000 +0200 ---- src/os_unix.c 2011-08-04 19:06:14.000000000 +0200 -*************** -*** 3889,3899 **** - if (p_guipty && !(options & (SHELL_READ|SHELL_WRITE))) - { - pty_master_fd = OpenPTY(&tty_name); /* open pty */ -! if (pty_master_fd >= 0 && ((pty_slave_fd = -! open(tty_name, O_RDWR | O_EXTRA, 0)) < 0)) - { -! close(pty_master_fd); -! pty_master_fd = -1; - } - } - /* ---- 3889,3909 ---- - if (p_guipty && !(options & (SHELL_READ|SHELL_WRITE))) - { - pty_master_fd = OpenPTY(&tty_name); /* open pty */ -! if (pty_master_fd >= 0) - { -! /* Leaving out O_NOCTTY may lead to waitpid() always returning -! * 0 on Mac OS X 10.7 thereby causing freezes. Let's assume -! * adding O_NOCTTY always works when defined. */ -! #ifdef O_NOCTTY -! pty_slave_fd = open(tty_name, O_RDWR | O_NOCTTY | O_EXTRA, 0); -! #else -! pty_slave_fd = open(tty_name, O_RDWR | O_EXTRA, 0); -! #endif -! if (pty_slave_fd < 0) -! { -! close(pty_master_fd); -! pty_master_fd = -1; -! } - } - } - /* -*** ../vim-7.3.267/src/version.c 2011-08-04 19:34:55.000000000 +0200 ---- src/version.c 2011-08-04 19:36:00.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 268, - /**/ - --- -Mental Floss prevents moral decay! - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.269 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.269 -Problem: 'shellcmdflag' only works with one flag. -Solution: Split into multiple arguments. (Gary Johnson) -Files: src/os_unix.c - - -*** ../vim-7.3.268/src/os_unix.c 2011-08-04 19:36:47.000000000 +0200 ---- src/os_unix.c 2011-08-04 20:27:13.000000000 +0200 -*************** -*** 3795,3802 **** ---- 3795,3804 ---- - int retval = -1; - char **argv = NULL; - int argc; -+ char_u *p_shcf_copy = NULL; - int i; - char_u *p; -+ char_u *s; - int inquote; - int pty_master_fd = -1; /* for pty's */ - # ifdef FEAT_GUI -*************** -*** 3855,3860 **** ---- 3857,3875 ---- - } - if (argv == NULL) - { -+ /* -+ * Account for possible multiple args in p_shcf. -+ */ -+ p = p_shcf; -+ for (;;) -+ { -+ p = skiptowhite(p); -+ if (*p == NUL) -+ break; -+ ++argc; -+ p = skipwhite(p); -+ } -+ - argv = (char **)alloc((unsigned)((argc + 4) * sizeof(char *))); - if (argv == NULL) /* out of memory */ - goto error; -*************** -*** 3864,3870 **** - { - if (extra_shell_arg != NULL) - argv[argc++] = (char *)extra_shell_arg; -! argv[argc++] = (char *)p_shcf; - argv[argc++] = (char *)cmd; - } - argv[argc] = NULL; ---- 3879,3901 ---- - { - if (extra_shell_arg != NULL) - argv[argc++] = (char *)extra_shell_arg; -! -! /* Break 'shellcmdflag' into white separated parts. This doesn't -! * handle quoted strings, they are very unlikely to appear. */ -! p_shcf_copy = alloc((unsigned)STRLEN(p_shcf) + 1); -! if (p_shcf_copy == NULL) /* out of memory */ -! goto error; -! s = p_shcf_copy; -! p = p_shcf; -! while (*p != NUL) -! { -! argv[argc++] = (char *)s; -! while (*p && *p != ' ' && *p != TAB) -! *s++ = *p++; -! *s++ = NUL; -! p = skipwhite(p); -! } -! - argv[argc++] = (char *)cmd; - } - argv[argc] = NULL; -*************** -*** 4677,4682 **** ---- 4708,4714 ---- - } - } - vim_free(argv); -+ vim_free(p_shcf_copy); - - error: - if (!did_settmode) -*** ../vim-7.3.268/src/version.c 2011-08-04 19:36:47.000000000 +0200 ---- src/version.c 2011-08-04 20:30:44.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 269, - /**/ - --- -Be nice to your kids... they'll be the ones choosing your nursing home. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.270 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.270 -Problem: Illegal memory access. -Solution: Swap conditions. (Dominique Pelle) -Files: src/ops.c - - -*** ../vim-7.3.269/src/ops.c 2011-07-15 17:51:30.000000000 +0200 ---- src/ops.c 2011-08-10 12:07:22.000000000 +0200 -*************** -*** 6311,6317 **** - *wc += words; - - /* Add eol_size if the end of line was reached before hitting limit. */ -! if (line[i] == NUL && i < limit) - { - i += eol_size; - chars += eol_size; ---- 6311,6317 ---- - *wc += words; - - /* Add eol_size if the end of line was reached before hitting limit. */ -! if (i < limit && line[i] == NUL) - { - i += eol_size; - chars += eol_size; -*** ../vim-7.3.269/src/version.c 2011-08-04 20:31:50.000000000 +0200 ---- src/version.c 2011-08-10 12:09:30.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 270, - /**/ - --- -An indication you must be a manager: -You give constructive feedback to your dog. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.271 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.271 -Problem: Code not following Vim coding style. -Solution: Fix the style. (Elias Diem) -Files: src/gui_photon.c - - -*** ../vim-7.3.270/src/gui_photon.c 2011-07-27 14:09:05.000000000 +0200 ---- src/gui_photon.c 2011-08-10 12:18:35.000000000 +0200 -*************** -*** 358,378 **** - } - - static int -! gui_ph_handle_window_cb( PtWidget_t *widget, void *data, PtCallbackInfo_t *info ) - { - PhWindowEvent_t *we = info->cbdata; - ushort_t *width, *height; - -! switch( we->event_f ) { - case Ph_WM_CLOSE: - gui_shell_closed(); - break; - - case Ph_WM_FOCUS: - /* Just in case it's hidden and needs to be shown */ -! gui_mch_mousehide( MOUSE_SHOW ); - -! if( we->event_state == Ph_WM_EVSTATE_FOCUS ) - { - gui_focus_change(TRUE); - gui_mch_start_blink(); ---- 358,378 ---- - } - - static int -! gui_ph_handle_window_cb(PtWidget_t *widget, void *data, PtCallbackInfo_t *info) - { - PhWindowEvent_t *we = info->cbdata; - ushort_t *width, *height; - -! switch (we->event_f) { - case Ph_WM_CLOSE: - gui_shell_closed(); - break; - - case Ph_WM_FOCUS: - /* Just in case it's hidden and needs to be shown */ -! gui_mch_mousehide(MOUSE_SHOW); - -! if (we->event_state == Ph_WM_EVSTATE_FOCUS) - { - gui_focus_change(TRUE); - gui_mch_start_blink(); -*************** -*** 385,401 **** - break; - - case Ph_WM_RESIZE: -! PtGetResource( gui.vimWindow, Pt_ARG_WIDTH, &width, 0 ); -! PtGetResource( gui.vimWindow, Pt_ARG_HEIGHT, &height, 0 ); - #ifdef USE_PANEL_GROUP - width -= (pg_margin_left + pg_margin_right); - height -= (pg_margin_top + pg_margin_bottom); - #endif -! gui_resize_shell( *width, *height ); -! gui_set_shellsize( FALSE, FALSE, RESIZE_BOTH ); - is_ignore_draw = FALSE; -! PtEndFlux( gui.vimContainer ); -! PtContainerRelease( gui.vimContainer ); - break; - - default: ---- 385,401 ---- - break; - - case Ph_WM_RESIZE: -! PtGetResource(gui.vimWindow, Pt_ARG_WIDTH, &width, 0); -! PtGetResource(gui.vimWindow, Pt_ARG_HEIGHT, &height, 0); - #ifdef USE_PANEL_GROUP - width -= (pg_margin_left + pg_margin_right); - height -= (pg_margin_top + pg_margin_bottom); - #endif -! gui_resize_shell(*width, *height); -! gui_set_shellsize(FALSE, FALSE, RESIZE_BOTH); - is_ignore_draw = FALSE; -! PtEndFlux(gui.vimContainer); -! PtContainerRelease(gui.vimContainer); - break; - - default: -*************** -*** 406,412 **** - } - - static int -! gui_ph_handle_scrollbar( PtWidget_t *widget, void *data, PtCallbackInfo_t *info ) - { - PtScrollbarCallback_t *scroll; - scrollbar_T *sb; ---- 406,412 ---- - } - - static int -! gui_ph_handle_scrollbar(PtWidget_t *widget, void *data, PtCallbackInfo_t *info) - { - PtScrollbarCallback_t *scroll; - scrollbar_T *sb; -*************** -*** 415,424 **** - scroll = info->cbdata; - - sb = (scrollbar_T *) data; -! if( sb != NULL ) - { - value = scroll->position; -! switch( scroll->action ) - { - case Pt_SCROLL_DRAGGED: - dragging = TRUE; ---- 415,424 ---- - scroll = info->cbdata; - - sb = (scrollbar_T *) data; -! if (sb != NULL) - { - value = scroll->position; -! switch (scroll->action) - { - case Pt_SCROLL_DRAGGED: - dragging = TRUE; -*************** -*** 436,532 **** - } - - static int -! gui_ph_handle_keyboard( PtWidget_t *widget, void *data, PtCallbackInfo_t *info ) - { - PhKeyEvent_t *key; - unsigned char string[6]; - int len, i; - int ch, modifiers; - -! key = PhGetData( info->event ); - - ch = modifiers = len = 0; - -! if( p_mh ) -! gui_mch_mousehide( MOUSE_HIDE ); - - /* We're a good lil photon program, aren't we? yes we are, yeess wee arrr */ -! if( key->key_flags & Pk_KF_Compose ) - { - return Pt_CONTINUE; - } - -! if( (key->key_flags & Pk_KF_Cap_Valid) && -! PkIsKeyDown( key->key_flags ) ) - { - #ifdef FEAT_MENU - /* - * Only show the menu if the Alt key is down, and the Shift & Ctrl - * keys aren't down, as well as the other conditions - */ -! if( ( ( key->key_mods & Pk_KM_Alt ) && -! !( key->key_mods & Pk_KM_Shift ) && -! !( key->key_mods & Pk_KM_Ctrl ) ) && - gui.menu_is_active && -! ( *p_wak == 'y' || -! ( *p_wak == 'm' && -! gui_is_menu_shortcut( key->key_cap ) ) ) ) - { - /* Fallthrough and let photon look for the hotkey */ - return Pt_CONTINUE; - } - #endif - -! for( i = 0; special_keys[i].key_sym != 0; i++ ) - { -! if( special_keys[i].key_sym == key->key_cap ) - { - len = 0; -! if( special_keys[i].vim_code1 == NUL ) - ch = special_keys[i].vim_code0; - else - { - /* Detect if a keypad number key has been pressed - * and change the key if Num Lock is on */ -! if( key->key_cap >= Pk_KP_Enter && key->key_cap <= Pk_KP_9 -! && ( key->key_mods & Pk_KM_Num_Lock ) ) - { - /* FIXME: For now, just map the key to a ascii value - * (see <photon/PkKeyDef.h>) */ - ch = key->key_cap - 0xf080; - } - else -! ch = TO_SPECIAL( special_keys[i].vim_code0, -! special_keys[i].vim_code1 ); - } - break; - } - } - -! if( key->key_mods & Pk_KM_Ctrl ) - modifiers |= MOD_MASK_CTRL; -! if( key->key_mods & Pk_KM_Alt ) - modifiers |= MOD_MASK_ALT; -! if( key->key_mods & Pk_KM_Shift ) - modifiers |= MOD_MASK_SHIFT; - - /* Is this not a special key? */ -! if( special_keys[i].key_sym == 0 ) - { -! ch = PhTo8859_1( key ); -! if( ch == -1 - #ifdef FEAT_MBYTE -! || ( enc_utf8 && ch > 127 ) - #endif - ) - { - #ifdef FEAT_MBYTE -! len = PhKeyToMb( string, key ); -! if( len > 0 ) - { - static char buf[6]; - int src_taken, dst_made; -! if( enc_utf8 != TRUE ) - { - PxTranslateFromUTF( - charset_translate, ---- 436,532 ---- - } - - static int -! gui_ph_handle_keyboard(PtWidget_t *widget, void *data, PtCallbackInfo_t *info) - { - PhKeyEvent_t *key; - unsigned char string[6]; - int len, i; - int ch, modifiers; - -! key = PhGetData(info->event); - - ch = modifiers = len = 0; - -! if (p_mh) -! gui_mch_mousehide(MOUSE_HIDE); - - /* We're a good lil photon program, aren't we? yes we are, yeess wee arrr */ -! if (key->key_flags & Pk_KF_Compose) - { - return Pt_CONTINUE; - } - -! if ((key->key_flags & Pk_KF_Cap_Valid) && -! PkIsKeyDown(key->key_flags)) - { - #ifdef FEAT_MENU - /* - * Only show the menu if the Alt key is down, and the Shift & Ctrl - * keys aren't down, as well as the other conditions - */ -! if (((key->key_mods & Pk_KM_Alt) && -! !(key->key_mods & Pk_KM_Shift) && -! !(key->key_mods & Pk_KM_Ctrl)) && - gui.menu_is_active && -! (*p_wak == 'y' || -! (*p_wak == 'm' && -! gui_is_menu_shortcut(key->key_cap)))) - { - /* Fallthrough and let photon look for the hotkey */ - return Pt_CONTINUE; - } - #endif - -! for(i = 0; special_keys[i].key_sym != 0; i++) - { -! if (special_keys[i].key_sym == key->key_cap) - { - len = 0; -! if (special_keys[i].vim_code1 == NUL) - ch = special_keys[i].vim_code0; - else - { - /* Detect if a keypad number key has been pressed - * and change the key if Num Lock is on */ -! if (key->key_cap >= Pk_KP_Enter && key->key_cap <= Pk_KP_9 -! && (key->key_mods & Pk_KM_Num_Lock)) - { - /* FIXME: For now, just map the key to a ascii value - * (see <photon/PkKeyDef.h>) */ - ch = key->key_cap - 0xf080; - } - else -! ch = TO_SPECIAL(special_keys[i].vim_code0, -! special_keys[i].vim_code1); - } - break; - } - } - -! if (key->key_mods & Pk_KM_Ctrl) - modifiers |= MOD_MASK_CTRL; -! if (key->key_mods & Pk_KM_Alt) - modifiers |= MOD_MASK_ALT; -! if (key->key_mods & Pk_KM_Shift) - modifiers |= MOD_MASK_SHIFT; - - /* Is this not a special key? */ -! if (special_keys[i].key_sym == 0) - { -! ch = PhTo8859_1(key); -! if (ch == -1 - #ifdef FEAT_MBYTE -! || (enc_utf8 && ch > 127) - #endif - ) - { - #ifdef FEAT_MBYTE -! len = PhKeyToMb(string, key); -! if (len > 0) - { - static char buf[6]; - int src_taken, dst_made; -! if (enc_utf8 != TRUE) - { - PxTranslateFromUTF( - charset_translate, -*************** -*** 2931,2943 **** - name_len = (int_u) ( mark - vim_font ); - - *font_name = vim_strnsave( vim_font, name_len ); -! if( *font_name != NULL ) - { -! if( mark != NULL ) - { -! while( *mark != NUL && *mark++ == ':') - { -! switch( tolower( *mark++ ) ) - { - case 'a': *font_flags |= PF_STYLE_ANTIALIAS; break; - case 'b': *font_flags |= PF_STYLE_BOLD; break; ---- 2931,2943 ---- - name_len = (int_u) ( mark - vim_font ); - - *font_name = vim_strnsave( vim_font, name_len ); -! if (*font_name != NULL) - { -! if (mark != NULL) - { -! while (*mark != NUL && *mark++ == ':') - { -! switch (tolower(*mark++)) - { - case 'a': *font_flags |= PF_STYLE_ANTIALIAS; break; - case 'b': *font_flags |= PF_STYLE_BOLD; break; -*************** -*** 2946,2952 **** - case 's': - size = getdigits( &mark ); - /* Restrict the size to some vague limits */ -! if( size < 1 || size > 100 ) - size = 8; - - *font_size = size; ---- 2946,2952 ---- - case 's': - size = getdigits( &mark ); - /* Restrict the size to some vague limits */ -! if (size < 1 || size > 100) - size = 8; - - *font_size = size; -*************** -*** 2973,2990 **** - FontQueryInfo info; - PhRect_t extent; - -! if( vim_font_name == NULL ) - { - /* Default font */ - vim_font_name = "PC Terminal"; - } - -! if( STRCMP( vim_font_name, "*" ) == 0 ) - { - font_tag = PtFontSelection( gui.vimWindow, NULL, NULL, - "pcterm12", -1, PHFONT_FIXED, NULL ); - -! if( font_tag == NULL ) - return FAIL; - - gui_mch_free_font( gui.norm_font ); ---- 2973,2990 ---- - FontQueryInfo info; - PhRect_t extent; - -! if (vim_font_name == NULL) - { - /* Default font */ - vim_font_name = "PC Terminal"; - } - -! if (STRCMP( vim_font_name, "*" ) == 0) - { - font_tag = PtFontSelection( gui.vimWindow, NULL, NULL, - "pcterm12", -1, PHFONT_FIXED, NULL ); - -! if (font_tag == NULL) - return FAIL; - - gui_mch_free_font( gui.norm_font ); -*************** -*** 2995,3006 **** - } - else - { -! if( gui_ph_parse_font_name( vim_font_name, &font_name, &font_flags, -! &font_size ) == FALSE ) - return FAIL; - - font_tag = gui_ph_get_font( font_name, font_flags, font_size, 0 ); -! if( font_tag == NULL ) - { - vim_free( font_name ); - return FAIL; ---- 2995,3006 ---- - } - else - { -! if (gui_ph_parse_font_name( vim_font_name, &font_name, &font_flags, -! &font_size ) == FALSE) - return FAIL; - - font_tag = gui_ph_get_font( font_name, font_flags, font_size, 0 ); -! if (font_tag == NULL) - { - vim_free( font_name ); - return FAIL; -*************** -*** 3053,3069 **** - int_u font_size = 12; - int_u font_flags = 0; - -! if( gui_ph_parse_font_name( vim_font_name, &font_name, &font_flags, -! &font_size ) != FALSE ) - { - font_tag = gui_ph_get_font( font_name, font_flags, font_size, -1 ); - vim_free( font_name ); - -! if( font_tag != NULL ) - return (GuiFont)font_tag; - } - -! if( report_error ) - EMSG2(e_font, vim_font_name ); - - return FAIL; ---- 3053,3069 ---- - int_u font_size = 12; - int_u font_flags = 0; - -! if (gui_ph_parse_font_name( vim_font_name, &font_name, &font_flags, -! &font_size ) != FALSE) - { - font_tag = gui_ph_get_font( font_name, font_flags, font_size, -1 ); - vim_free( font_name ); - -! if (font_tag != NULL) - return (GuiFont)font_tag; - } - -! if (report_error) - EMSG2(e_font, vim_font_name ); - - return FAIL; -*** ../vim-7.3.270/src/version.c 2011-08-10 12:10:55.000000000 +0200 ---- src/version.c 2011-08-10 12:17:06.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 271, - /**/ - --- -An indication you must be a manager: -You believe you never have any problems in your life, just -"issues" and "improvement opportunities". - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.272 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.272 -Problem: ":put =list" does not add an empty line for a trailing empty - item. -Solution: Add a trailing NL when turning a list into a string. -Files: src/eval.c - - -*** ../vim-7.3.271/src/eval.c 2011-07-15 21:24:06.000000000 +0200 ---- src/eval.c 2011-08-10 12:31:51.000000000 +0200 -*************** -*** 1357,1363 **** ---- 1357,1367 ---- - { - ga_init2(&ga, (int)sizeof(char), 80); - if (tv.vval.v_list != NULL) -+ { - list_join(&ga, tv.vval.v_list, (char_u *)"\n", TRUE, 0); -+ if (tv.vval.v_list->lv_len > 0) -+ ga_append(&ga, NL); -+ } - ga_append(&ga, NUL); - retval = (char_u *)ga.ga_data; - } -*** ../vim-7.3.271/src/version.c 2011-08-10 12:19:00.000000000 +0200 ---- src/version.c 2011-08-10 12:36:41.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 272, - /**/ - --- -Lose weight, NEVER Diet again with - The "Invisible Weight Loss Patch" - (spam e-mail) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.273 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.273 -Problem: A BOM in an error file is seen as text. (Aleksey Baibarin) -Solution: Remove the BOM from the text before evaluating. (idea by Christian - Brabandt) -Files: src/quickfix.c, src/mbyte.c, src/proto/mbyte.pro, - src/testdir/test10.in - - -*** ../vim-7.3.272/src/quickfix.c 2011-05-19 17:42:54.000000000 +0200 ---- src/quickfix.c 2011-08-10 12:56:15.000000000 +0200 -*************** -*** 561,566 **** ---- 561,570 ---- - break; - - IObuff[CMDBUFFSIZE - 2] = NUL; /* for very long lines */ -+ #ifdef FEAT_MBYTE -+ remove_bom(IObuff); -+ #endif -+ - if ((efmp = vim_strrchr(IObuff, '\n')) != NULL) - *efmp = NUL; - #ifdef USE_CRNL -*** ../vim-7.3.272/src/mbyte.c 2011-07-27 18:25:40.000000000 +0200 ---- src/mbyte.c 2011-08-10 13:11:56.000000000 +0200 -*************** -*** 838,843 **** ---- 838,864 ---- - } - - /* -+ * Remove all BOM from "s" by moving remaining text. -+ */ -+ void -+ remove_bom(s) -+ char_u *s; -+ { -+ if (enc_utf8) -+ { -+ char_u *p = s; -+ -+ while ((p = vim_strbyte(p, 0xef)) != NULL) -+ { -+ if (p[1] == 0xbb && p[2] == 0xbf) -+ STRMOVE(p, p + 3); -+ else -+ ++p; -+ } -+ } -+ } -+ -+ /* - * Get class of pointer: - * 0 for blank or NUL - * 1 for punctuation -*** ../vim-7.3.272/src/proto/mbyte.pro 2011-07-07 15:08:53.000000000 +0200 ---- src/proto/mbyte.pro 2011-08-10 12:50:44.000000000 +0200 -*************** -*** 2,7 **** ---- 2,8 ---- - int enc_canon_props __ARGS((char_u *name)); - char_u *mb_init __ARGS((void)); - int bomb_size __ARGS((void)); -+ void remove_bom __ARGS((char_u *s)); - int mb_get_class __ARGS((char_u *p)); - int dbcs_class __ARGS((unsigned lead, unsigned trail)); - int latin_char2len __ARGS((int c)); -*** ../vim-7.3.272/src/testdir/test10.in 2010-08-15 21:57:29.000000000 +0200 ---- src/testdir/test10.in 2011-08-10 13:01:46.000000000 +0200 -*************** -*** 2,7 **** ---- 2,10 ---- - - STARTTEST - :so small.vim -+ :" Also test a BOM is ignored. -+ :so mbyte.vim -+ :set encoding=utf-8 - :/start of errorfile/,/end of errorfile/w! Xerrorfile - :/start of testfile/,/end of testfile/w! Xtestfile - :cf Xerrorfile -*************** -*** 20,26 **** - - start of errorfile - "Xtestfile", line 4.12: 1506-045 (S) Undeclared identifier fd_set. -! "Xtestfile", line 7 col 19; this is an error - gcc -c -DHAVE_CONFIsing-prototypes -I/usr/X11R6/include version.c - Xtestfile:13: parse error before `asd' - make: *** [vim] Error 1 ---- 23,29 ---- - - start of errorfile - "Xtestfile", line 4.12: 1506-045 (S) Undeclared identifier fd_set. -! "Xtestfile", line 7 col 19; this is an error - gcc -c -DHAVE_CONFIsing-prototypes -I/usr/X11R6/include version.c - Xtestfile:13: parse error before `asd' - make: *** [vim] Error 1 -*** ../vim-7.3.272/src/version.c 2011-08-10 12:38:02.000000000 +0200 ---- src/version.c 2011-08-10 13:14:35.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 273, - /**/ - --- -Compilation process failed successfully. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.274 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.274 -Problem: With concealed characters tabs do not have the right size. -Solution: Use VCOL_HLC instead of vcol. (Eiichi Sato) -Files: src/screen.c - - -*** ../vim-7.3.273/src/screen.c 2011-03-22 13:29:20.000000000 +0100 ---- src/screen.c 2011-08-10 14:22:47.000000000 +0200 -*************** -*** 4252,4258 **** - { - /* tab amount depends on current column */ - n_extra = (int)wp->w_buffer->b_p_ts -! - vcol % (int)wp->w_buffer->b_p_ts - 1; - #ifdef FEAT_MBYTE - mb_utf8 = FALSE; /* don't draw as UTF-8 */ - #endif ---- 4252,4258 ---- - { - /* tab amount depends on current column */ - n_extra = (int)wp->w_buffer->b_p_ts -! - VCOL_HLC % (int)wp->w_buffer->b_p_ts - 1; - #ifdef FEAT_MBYTE - mb_utf8 = FALSE; /* don't draw as UTF-8 */ - #endif -*** ../vim-7.3.273/src/version.c 2011-08-10 13:21:30.000000000 +0200 ---- src/version.c 2011-08-10 14:23:38.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 274, - /**/ - --- - Arthur pulls Pin out. The MONK blesses the grenade as ... -ARTHUR: (quietly) One, two, five ... -GALAHAD: Three, sir! -ARTHUR: Three. - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.275 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.275 -Problem: MS-Windows: When using a black background some screen updates - cause the window to flicker. -Solution: Add WS_CLIPCHILDREN to CreateWindow(). (René Aguirre) -Files: src/gui_w32.c - - -*** ../vim-7.3.274/src/gui_w32.c 2011-07-07 17:43:37.000000000 +0200 ---- src/gui_w32.c 2011-08-10 14:40:58.000000000 +0200 -*************** -*** 1379,1385 **** - s_hwnd = CreateWindowEx( - WS_EX_MDICHILD, - szVimWndClass, "Vim MSWindows GUI", -! WS_OVERLAPPEDWINDOW | WS_CHILD | WS_CLIPSIBLINGS | 0xC000, - gui_win_x == -1 ? CW_USEDEFAULT : gui_win_x, - gui_win_y == -1 ? CW_USEDEFAULT : gui_win_y, - 100, /* Any value will do */ ---- 1379,1386 ---- - s_hwnd = CreateWindowEx( - WS_EX_MDICHILD, - szVimWndClass, "Vim MSWindows GUI", -! WS_OVERLAPPEDWINDOW | WS_CHILD -! | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | 0xC000, - gui_win_x == -1 ? CW_USEDEFAULT : gui_win_x, - gui_win_y == -1 ? CW_USEDEFAULT : gui_win_y, - 100, /* Any value will do */ -*************** -*** 1410,1416 **** - * titlebar, it will be reparented below. */ - s_hwnd = CreateWindow( - szVimWndClass, "Vim MSWindows GUI", -! win_socket_id == 0 ? WS_OVERLAPPEDWINDOW : WS_POPUP, - gui_win_x == -1 ? CW_USEDEFAULT : gui_win_x, - gui_win_y == -1 ? CW_USEDEFAULT : gui_win_y, - 100, /* Any value will do */ ---- 1411,1418 ---- - * titlebar, it will be reparented below. */ - s_hwnd = CreateWindow( - szVimWndClass, "Vim MSWindows GUI", -! (win_socket_id == 0 ? WS_OVERLAPPEDWINDOW : WS_POPUP) -! | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, - gui_win_x == -1 ? CW_USEDEFAULT : gui_win_x, - gui_win_y == -1 ? CW_USEDEFAULT : gui_win_y, - 100, /* Any value will do */ -*** ../vim-7.3.274/src/version.c 2011-08-10 14:32:33.000000000 +0200 ---- src/version.c 2011-08-10 14:39:14.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 275, - /**/ - --- -ARTHUR: What does it say? -BROTHER MAYNARD: It reads ... "Here may be found the last words of Joseph of - Aramathea." "He who is valorous and pure of heart may find - the Holy Grail in the aaaaarrrrrrggghhh..." -ARTHUR: What? -BROTHER MAYNARD: "The Aaaaarrrrrrggghhh..." - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.276 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.276 -Problem: GvimExt sets $LANG in the wrong way. -Solution: Save the environment and use it for gvim. (Yasuhiro Matsumoto) -Files: src/GvimExt/gvimext.cpp - - -*** ../vim-7.3.275/src/GvimExt/gvimext.cpp 2011-07-20 17:27:17.000000000 +0200 ---- src/GvimExt/gvimext.cpp 2011-08-10 16:25:32.000000000 +0200 -*************** -*** 142,147 **** ---- 142,148 ---- - static int dyn_libintl_init(char *dir); - static void dyn_libintl_end(void); - -+ static wchar_t *oldenv = NULL; - static HINSTANCE hLibintlDLL = 0; - static char *(*dyn_libintl_gettext)(const char *) = null_libintl_gettext; - static char *(*dyn_libintl_textdomain)(const char *) = null_libintl_textdomain; -*************** -*** 339,346 **** - inc_cRefThisDLL() - { - #ifdef FEAT_GETTEXT -! if (g_cRefThisDll == 0) - dyn_gettext_load(); - #endif - InterlockedIncrement((LPLONG)&g_cRefThisDll); - } ---- 340,349 ---- - inc_cRefThisDLL() - { - #ifdef FEAT_GETTEXT -! if (g_cRefThisDll == 0) { - dyn_gettext_load(); -+ oldenv = GetEnvironmentStringsW(); -+ } - #endif - InterlockedIncrement((LPLONG)&g_cRefThisDll); - } -*************** -*** 349,356 **** - dec_cRefThisDLL() - { - #ifdef FEAT_GETTEXT -! if (InterlockedDecrement((LPLONG)&g_cRefThisDll) == 0) - dyn_gettext_free(); - #else - InterlockedDecrement((LPLONG)&g_cRefThisDll); - #endif ---- 352,364 ---- - dec_cRefThisDLL() - { - #ifdef FEAT_GETTEXT -! if (InterlockedDecrement((LPLONG)&g_cRefThisDll) == 0) { - dyn_gettext_free(); -+ if (oldenv != NULL) { -+ FreeEnvironmentStringsW(oldenv); -+ oldenv = NULL; -+ } -+ } - #else - InterlockedDecrement((LPLONG)&g_cRefThisDll); - #endif -*************** -*** 905,912 **** - NULL, // Process handle not inheritable. - NULL, // Thread handle not inheritable. - FALSE, // Set handle inheritance to FALSE. -! 0, // No creation flags. -! NULL, // Use parent's environment block. - NULL, // Use parent's starting directory. - &si, // Pointer to STARTUPINFO structure. - &pi) // Pointer to PROCESS_INFORMATION structure. ---- 913,920 ---- - NULL, // Process handle not inheritable. - NULL, // Thread handle not inheritable. - FALSE, // Set handle inheritance to FALSE. -! oldenv == NULL ? 0 : CREATE_UNICODE_ENVIRONMENT, -! oldenv, // Use unmodified environment block. - NULL, // Use parent's starting directory. - &si, // Pointer to STARTUPINFO structure. - &pi) // Pointer to PROCESS_INFORMATION structure. -*************** -*** 987,994 **** - NULL, // Process handle not inheritable. - NULL, // Thread handle not inheritable. - FALSE, // Set handle inheritance to FALSE. -! 0, // No creation flags. -! NULL, // Use parent's environment block. - NULL, // Use parent's starting directory. - &si, // Pointer to STARTUPINFO structure. - &pi) // Pointer to PROCESS_INFORMATION structure. ---- 995,1002 ---- - NULL, // Process handle not inheritable. - NULL, // Thread handle not inheritable. - FALSE, // Set handle inheritance to FALSE. -! oldenv == NULL ? 0 : CREATE_UNICODE_ENVIRONMENT, -! oldenv, // Use unmodified environment block. - NULL, // Use parent's starting directory. - &si, // Pointer to STARTUPINFO structure. - &pi) // Pointer to PROCESS_INFORMATION structure. -*** ../vim-7.3.275/src/version.c 2011-08-10 15:56:24.000000000 +0200 ---- src/version.c 2011-08-10 16:28:42.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 276, - /**/ - --- -User: I'm having problems with my text editor. -Help desk: Which editor are you using? -User: I don't know, but it's version VI (pronounced: 6). -Help desk: Oh, then you should upgrade to version VIM (pronounced: 994). - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.277 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.277 -Problem: MS-Windows: some characters do not show in dialogs. -Solution: Use the wide methods when available. (Yanwei Jia) -Files: src/gui_w32.c, src/gui_w48.c, src/os_mswin.c, src/os_win32.c, - src/os_win32.h - - -*** ../vim-7.3.276/src/gui_w32.c 2011-08-10 15:56:24.000000000 +0200 ---- src/gui_w32.c 2011-08-10 16:52:55.000000000 +0200 -*************** -*** 1270,1275 **** ---- 1270,1294 ---- - pGetMonitorInfo = (TGetMonitorInfo)GetProcAddress(user32_lib, - "GetMonitorInfoA"); - } -+ -+ #ifdef FEAT_MBYTE -+ /* If the OS is Windows NT, use wide functions; -+ * this enables common dialogs input unicode from IME. */ -+ if (os_version.dwPlatformId == VER_PLATFORM_WIN32_NT) -+ { -+ pDispatchMessage = DispatchMessageW; -+ pGetMessage = GetMessageW; -+ pIsDialogMessage = IsDialogMessageW; -+ pPeekMessage = PeekMessageW; -+ } -+ else -+ { -+ pDispatchMessage = DispatchMessageA; -+ pGetMessage = GetMessageA; -+ pIsDialogMessage = IsDialogMessageA; -+ pPeekMessage = PeekMessageA; -+ } -+ #endif - } - - /* -*** ../vim-7.3.276/src/gui_w48.c 2010-10-20 21:22:17.000000000 +0200 ---- src/gui_w48.c 2011-08-10 16:49:39.000000000 +0200 -*************** -*** 390,396 **** - KillTimer(NULL, idEvent); - - /* Eat spurious WM_TIMER messages */ -! while (PeekMessage(&msg, hwnd, WM_TIMER, WM_TIMER, PM_REMOVE)) - ; - - if (blink_state == BLINK_ON) ---- 390,396 ---- - KillTimer(NULL, idEvent); - - /* Eat spurious WM_TIMER messages */ -! while (pPeekMessage(&msg, hwnd, WM_TIMER, WM_TIMER, PM_REMOVE)) - ; - - if (blink_state == BLINK_ON) -*************** -*** 418,424 **** - { - KillTimer(NULL, blink_timer); - /* Eat spurious WM_TIMER messages */ -! while (PeekMessage(&msg, s_hwnd, WM_TIMER, WM_TIMER, PM_REMOVE)) - ; - blink_timer = 0; - } ---- 418,424 ---- - { - KillTimer(NULL, blink_timer); - /* Eat spurious WM_TIMER messages */ -! while (pPeekMessage(&msg, s_hwnd, WM_TIMER, WM_TIMER, PM_REMOVE)) - ; - blink_timer = 0; - } -*************** -*** 476,482 **** - s_timed_out = TRUE; - - /* Eat spurious WM_TIMER messages */ -! while (PeekMessage(&msg, hwnd, WM_TIMER, WM_TIMER, PM_REMOVE)) - ; - if (idEvent == s_wait_timer) - s_wait_timer = 0; ---- 476,482 ---- - s_timed_out = TRUE; - - /* Eat spurious WM_TIMER messages */ -! while (pPeekMessage(&msg, hwnd, WM_TIMER, WM_TIMER, PM_REMOVE)) - ; - if (idEvent == s_wait_timer) - s_wait_timer = 0; -*************** -*** 1707,1713 **** - static char_u k10[] = {K_SPECIAL, 'k', ';', 0}; - #endif - -! GetMessage(&msg, NULL, 0, 0); - - #ifdef FEAT_OLE - /* Look after OLE Automation commands */ ---- 1707,1713 ---- - static char_u k10[] = {K_SPECIAL, 'k', ';', 0}; - #endif - -! pGetMessage(&msg, NULL, 0, 0); - - #ifdef FEAT_OLE - /* Look after OLE Automation commands */ -*************** -*** 1718,1724 **** - { - /* Message can't be ours, forward it. Fixes problem with Ultramon - * 3.0.4 */ -! DispatchMessage(&msg); - } - else - { ---- 1718,1724 ---- - { - /* Message can't be ours, forward it. Fixes problem with Ultramon - * 3.0.4 */ -! pDispatchMessage(&msg); - } - else - { -*************** -*** 1749,1762 **** - if (msg.message == WM_USER) - { - MyTranslateMessage(&msg); -! DispatchMessage(&msg); - return; - } - #endif - - #ifdef MSWIN_FIND_REPLACE - /* Don't process messages used by the dialog */ -! if (s_findrep_hwnd != NULL && IsDialogMessage(s_findrep_hwnd, &msg)) - { - HandleMouseHide(msg.message, msg.lParam); - return; ---- 1749,1762 ---- - if (msg.message == WM_USER) - { - MyTranslateMessage(&msg); -! pDispatchMessage(&msg); - return; - } - #endif - - #ifdef MSWIN_FIND_REPLACE - /* Don't process messages used by the dialog */ -! if (s_findrep_hwnd != NULL && pIsDialogMessage(s_findrep_hwnd, &msg)) - { - HandleMouseHide(msg.message, msg.lParam); - return; -*************** -*** 1928,1934 **** - if (vk != VK_F10 || check_map(k10, State, FALSE, TRUE, FALSE, - NULL, NULL) == NULL) - #endif -! DispatchMessage(&msg); - } - - /* ---- 1928,1934 ---- - if (vk != VK_F10 || check_map(k10, State, FALSE, TRUE, FALSE, - NULL, NULL) == NULL) - #endif -! pDispatchMessage(&msg); - } - - /* -*************** -*** 1943,1949 **** - MSG msg; - - if (!s_busy_processing) -! while (PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE) - && !vim_is_input_buf_full()) - process_message(); - } ---- 1943,1949 ---- - MSG msg; - - if (!s_busy_processing) -! while (pPeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE) - && !vim_is_input_buf_full()) - process_message(); - } -*************** -*** 2019,2025 **** - KillTimer(NULL, s_wait_timer); - - /* Eat spurious WM_TIMER messages */ -! while (PeekMessage(&msg, s_hwnd, WM_TIMER, WM_TIMER, PM_REMOVE)) - ; - s_wait_timer = 0; - } ---- 2019,2025 ---- - KillTimer(NULL, s_wait_timer); - - /* Eat spurious WM_TIMER messages */ -! while (pPeekMessage(&msg, s_hwnd, WM_TIMER, WM_TIMER, PM_REMOVE)) - ; - s_wait_timer = 0; - } -*** ../vim-7.3.276/src/os_mswin.c 2011-06-19 01:30:01.000000000 +0200 ---- src/os_mswin.c 2011-08-10 16:45:24.000000000 +0200 -*************** -*** 1856,1867 **** - { - MSG msg; - -! while (!*bUserAbort && PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) - { -! if (!hDlgPrint || !IsDialogMessage(hDlgPrint, &msg)) - { - TranslateMessage(&msg); -! DispatchMessage(&msg); - } - } - return !*bUserAbort; ---- 1856,1867 ---- - { - MSG msg; - -! while (!*bUserAbort && pPeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) - { -! if (!hDlgPrint || !pIsDialogMessage(hDlgPrint, &msg)) - { - TranslateMessage(&msg); -! pDispatchMessage(&msg); - } - } - return !*bUserAbort; -*************** -*** 3132,3141 **** - { - MSG msg; - -! while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) - { - TranslateMessage(&msg); -! DispatchMessage(&msg); - } - } - ---- 3132,3141 ---- - { - MSG msg; - -! while (pPeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) - { - TranslateMessage(&msg); -! pDispatchMessage(&msg); - } - } - -*** ../vim-7.3.276/src/os_win32.c 2011-07-07 16:20:45.000000000 +0200 ---- src/os_win32.c 2011-08-10 16:54:50.000000000 +0200 -*************** -*** 152,157 **** ---- 152,165 ---- - # define wcsicmp(a, b) wcscmpi((a), (b)) - #endif - -+ /* Enable common dialogs input unicode from IME if posible. */ -+ #ifdef FEAT_MBYTE -+ LRESULT (WINAPI *pDispatchMessage)(LPMSG) = DispatchMessage; -+ BOOL (WINAPI *pGetMessage)(LPMSG, HWND, UINT, UINT) = GetMessage; -+ BOOL (WINAPI *pIsDialogMessage)(HWND, LPMSG) = IsDialogMessage; -+ BOOL (WINAPI *pPeekMessage)(LPMSG, HWND, UINT, UINT, UINT) = PeekMessage; -+ #endif -+ - #ifndef FEAT_GUI_W32 - /* Win32 Console handles for input and output */ - static HANDLE g_hConIn = INVALID_HANDLE_VALUE; -*************** -*** 3284,3293 **** - { - MSG msg; - -! if (PeekMessage(&msg, (HWND)NULL, 0, 0, PM_REMOVE)) - { - TranslateMessage(&msg); -! DispatchMessage(&msg); - } - if (WaitForSingleObject(pi.hProcess, delay) != WAIT_TIMEOUT) - break; ---- 3292,3301 ---- - { - MSG msg; - -! if (pPeekMessage(&msg, (HWND)NULL, 0, 0, PM_REMOVE)) - { - TranslateMessage(&msg); -! pDispatchMessage(&msg); - } - if (WaitForSingleObject(pi.hProcess, delay) != WAIT_TIMEOUT) - break; -*** ../vim-7.3.276/src/os_win32.h 2011-05-05 18:31:54.000000000 +0200 ---- src/os_win32.h 2011-08-10 16:51:58.000000000 +0200 -*************** -*** 193,195 **** ---- 193,209 ---- - #else - # define vim_mkdir(x, y) mch_mkdir(x) - #endif -+ -+ /* Enable common dialogs input unicode from IME if posible. */ -+ #ifdef FEAT_MBYTE -+ /* The variables are defined in os_win32.c. */ -+ extern LRESULT (WINAPI *pDispatchMessage)(LPMSG); -+ extern BOOL (WINAPI *pGetMessage)(LPMSG, HWND, UINT, UINT); -+ extern BOOL (WINAPI *pIsDialogMessage)(HWND, LPMSG); -+ extern BOOL (WINAPI *pPeekMessage)(LPMSG, HWND, UINT, UINT, UINT); -+ #else -+ # define pDispatchMessage DispatchMessage -+ # define pGetMessage GetMessage -+ # define pIsDialogMessage IsDialogMessage -+ # define pPeekMessage PeekMessage -+ #endif -*** ../vim-7.3.276/src/version.c 2011-08-10 16:31:18.000000000 +0200 ---- src/version.c 2011-08-10 17:06:55.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 277, - /**/ - --- -Veni, Vidi, VW -- I came, I saw, I drove around in a little car. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.278 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.278 -Problem: Passing the file name to open in VisVim doesn't work. -Solution: Adjust the index and check for end of buffer. (Jiri Sedlak) -Files: src/VisVim/Commands.cpp - - -*** ../vim-7.3.277/src/VisVim/Commands.cpp 2010-08-15 21:57:27.000000000 +0200 ---- src/VisVim/Commands.cpp 2011-08-10 17:21:27.000000000 +0200 -*************** -*** 549,555 **** - if (g_bNewTabs) - { - sprintf(VimCmd, ":tab drop "); -! s = VimCmd + 11; - } - else - { ---- 549,555 ---- - if (g_bNewTabs) - { - sprintf(VimCmd, ":tab drop "); -! s = VimCmd + 10; - } - else - { -*************** -*** 557,564 **** - s = VimCmd + 6; - } - sprintf(FileNameTmp, "%S", (char *)FileName); -! for (p = FileNameTmp; *p != '\0' && s < FileNameTmp + MAX_OLE_STR - 4; -! ++p) - if (*p == '\\') - *s++ = '/'; - else ---- 557,563 ---- - s = VimCmd + 6; - } - sprintf(FileNameTmp, "%S", (char *)FileName); -! for (p = FileNameTmp; *p != '\0' && s < VimCmd + MAX_OLE_STR - 4; ++p) - if (*p == '\\') - *s++ = '/'; - else -*** ../vim-7.3.277/src/version.c 2011-08-10 17:07:56.000000000 +0200 ---- src/version.c 2011-08-10 17:25:20.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 278, - /**/ - --- -ARTHUR: But if he was dying, he wouldn't bother to carve - "Aaaaarrrrrrggghhh". He'd just say it. -BROTHER MAYNARD: It's down there carved in stone. -GALAHAD: Perhaps he was dictating. - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.279 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.279 -Problem: With GTK, when gvim is full-screen and a tab is opened and using a - specific monitor configuration the window is too big. -Solution: Adjust the window size like on MS-Windows. (Yukihiro Nakadaira) -Files: src/gui.c, src/gui_gtk_x11.c, src/proto/gui_gtk_x11.pro - - -*** ../vim-7.3.278/src/gui.c 2011-06-26 04:48:56.000000000 +0200 ---- src/gui.c 2011-08-10 17:40:31.000000000 +0200 -*************** -*** 1407,1413 **** - if (!gui.shell_created) - return; - -! #ifdef MSWIN - /* If not setting to a user specified size and maximized, calculate the - * number of characters that fit in the maximized window. */ - if (!mustset && gui_mch_maximized()) ---- 1407,1413 ---- - if (!gui.shell_created) - return; - -! #if defined(MSWIN) || defined(FEAT_GUI_GTK) - /* If not setting to a user specified size and maximized, calculate the - * number of characters that fit in the maximized window. */ - if (!mustset && gui_mch_maximized()) -*** ../vim-7.3.278/src/gui_gtk_x11.c 2011-06-26 04:48:56.000000000 +0200 ---- src/gui_gtk_x11.c 2011-08-10 17:42:19.000000000 +0200 -*************** -*** 3900,3905 **** ---- 3900,3920 ---- - } - - /* -+ * Called when the font changed while the window is maximized. Compute the -+ * new Rows and Columns. This is like resizing the window. -+ */ -+ void -+ gui_mch_newfont() -+ { -+ int w, h; -+ -+ gtk_window_get_size(GTK_WINDOW(gui.mainwin), &w, &h); -+ w -= get_menu_tool_width(); -+ h -= get_menu_tool_height(); -+ gui_resize_shell(w, h); -+ } -+ -+ /* - * Set the windows size. - */ - void -*************** -*** 4409,4422 **** - - if (gui_mch_maximized()) - { -- int w, h; -- - /* Update lines and columns in accordance with the new font, keep the - * window maximized. */ -! gtk_window_get_size(GTK_WINDOW(gui.mainwin), &w, &h); -! w -= get_menu_tool_width(); -! h -= get_menu_tool_height(); -! gui_resize_shell(w, h); - } - else - { ---- 4424,4432 ---- - - if (gui_mch_maximized()) - { - /* Update lines and columns in accordance with the new font, keep the - * window maximized. */ -! gui_mch_newfont(); - } - else - { -*** ../vim-7.3.278/src/proto/gui_gtk_x11.pro 2010-08-15 21:57:28.000000000 +0200 ---- src/proto/gui_gtk_x11.pro 2011-08-10 17:42:29.000000000 +0200 -*************** -*** 20,25 **** ---- 20,26 ---- - void gui_mch_set_winpos __ARGS((int x, int y)); - int gui_mch_maximized __ARGS((void)); - void gui_mch_unmaximize __ARGS((void)); -+ void gui_mch_newfont __ARGS((void)); - void gui_mch_set_shellsize __ARGS((int width, int height, int min_width, int min_height, int base_width, int base_height, int direction)); - void gui_mch_get_screen_dimensions __ARGS((int *screen_w, int *screen_h)); - void gui_mch_settitle __ARGS((char_u *title, char_u *icon)); -*** ../vim-7.3.278/src/version.c 2011-08-10 17:25:48.000000000 +0200 ---- src/version.c 2011-08-10 17:43:22.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 279, - /**/ - --- -LAUNCELOT: Isn't there a St. Aaaaarrrrrrggghhh's in Cornwall? -ARTHUR: No, that's Saint Ives. - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.280 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.280 -Problem: ":lmake" does not update the quickfix window title. -Solution: Update the title. (Lech Lorens) -Files: src/quickfix.c, src/testdir/test10.in, src/testdir/test10.ok - - -*** ../vim-7.3.279/src/quickfix.c 2011-08-10 13:21:30.000000000 +0200 ---- src/quickfix.c 2011-08-10 18:09:19.000000000 +0200 -*************** -*** 126,131 **** ---- 126,132 ---- - static win_T *qf_find_win __ARGS((qf_info_T *qi)); - static buf_T *qf_find_buf __ARGS((qf_info_T *qi)); - static void qf_update_buffer __ARGS((qf_info_T *qi)); -+ static void qf_set_title __ARGS((qf_info_T *qi)); - static void qf_fill_buffer __ARGS((qf_info_T *qi)); - #endif - static char_u *get_mef_name __ARGS((void)); -*************** -*** 2388,2395 **** - qf_fill_buffer(qi); - - if (qi->qf_lists[qi->qf_curlist].qf_title != NULL) -! set_internal_string_var((char_u *)"w:quickfix_title", -! qi->qf_lists[qi->qf_curlist].qf_title); - - curwin->w_cursor.lnum = qi->qf_lists[qi->qf_curlist].qf_index; - curwin->w_cursor.col = 0; ---- 2389,2395 ---- - qf_fill_buffer(qi); - - if (qi->qf_lists[qi->qf_curlist].qf_title != NULL) -! qf_set_title(qi); - - curwin->w_cursor.lnum = qi->qf_lists[qi->qf_curlist].qf_index; - curwin->w_cursor.col = 0; -*************** -*** 2526,2531 **** ---- 2526,2533 ---- - qf_info_T *qi; - { - buf_T *buf; -+ win_T *win; -+ win_T *curwin_save; - aco_save_T aco; - - /* Check if a buffer for the quickfix list exists. Update it. */ -*************** -*** 2537,2542 **** ---- 2539,2554 ---- - - qf_fill_buffer(qi); - -+ if (qi->qf_lists[qi->qf_curlist].qf_title != NULL -+ && (win = qf_find_win(qi)) != NULL) -+ { -+ curwin_save = curwin; -+ curwin = win; -+ qf_set_title(qi); -+ curwin = curwin_save; -+ -+ } -+ - /* restore curwin/curbuf and a few other things */ - aucmd_restbuf(&aco); - -*************** -*** 2544,2549 **** ---- 2556,2569 ---- - } - } - -+ static void -+ qf_set_title(qi) -+ qf_info_T *qi; -+ { -+ set_internal_string_var((char_u *)"w:quickfix_title", -+ qi->qf_lists[qi->qf_curlist].qf_title); -+ } -+ - /* - * Fill current buffer with quickfix errors, replacing any previous contents. - * curbuf must be the quickfix buffer! -*** ../vim-7.3.279/src/testdir/test10.in 2011-08-10 13:21:30.000000000 +0200 ---- src/testdir/test10.in 2011-08-10 18:28:31.000000000 +0200 -*************** -*** 5,13 **** - :" Also test a BOM is ignored. - :so mbyte.vim - :set encoding=utf-8 -! :/start of errorfile/,/end of errorfile/w! Xerrorfile - :/start of testfile/,/end of testfile/w! Xtestfile -! :cf Xerrorfile - rA - :cn - rB ---- 5,20 ---- - :" Also test a BOM is ignored. - :so mbyte.vim - :set encoding=utf-8 -! :7/start of errorfile/,/end of errorfile/w! Xerrorfile1 -! :7/start of errorfile/,/end of errorfile/-1w! Xerrorfile2 - :/start of testfile/,/end of testfile/w! Xtestfile -! :cf Xerrorfile2 -! :clast -! :copen -! :let a=w:quickfix_title -! :wincmd p -! gR=a
-! :cf Xerrorfile1 - rA - :cn - rB -*************** -*** 17,22 **** ---- 24,34 ---- - rD - :cn - rE -+ :cn -+ :wincmd w -+ :let a=w:quickfix_title -+ :wincmd p -+ gR=a
- :w! test.out " Write contents of this file - :qa! - ENDTEST -*************** -*** 33,38 **** ---- 45,52 ---- - "Xtestfile", linenr 19: yet another problem - - Does anyone know what is the problem and how to correction it? -+ "Xtestfile", line 21 col 9: What is the title of the quickfix window? -+ "Xtestfile", line 22 col 9: What is the title of the quickfix window? - end of errorfile - - start of testfile -*** ../vim-7.3.279/src/testdir/test10.ok 2010-08-15 21:57:29.000000000 +0200 ---- src/testdir/test10.ok 2011-08-10 18:03:53.000000000 +0200 -*************** -*** 18,23 **** - line 18 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx - Eine 19 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx - line 20 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -! line 21 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -! line 22 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx - end of testfile ---- 18,23 ---- - line 18 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx - Eine 19 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx - line 20 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -! line 21 :cf Xerrorfile1xxxxxxxxxxxxxxx -! line 22 :cf Xerrorfile2xxxxxxxxxxxxxxx - end of testfile -*** ../vim-7.3.279/src/version.c 2011-08-10 17:44:41.000000000 +0200 ---- src/version.c 2011-08-10 18:35:52.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 280, - /**/ - --- -"When I die, I want a tombstone that says "GAME OVER" - Ton Richters - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.281 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.281 -Problem: After using "expand('%:8')" the buffer name is changed. -Solution: Make a copy of the file name before shortening it. -Files: src/eval.c - - -*** ../vim-7.3.280/src/eval.c 2011-08-10 12:38:02.000000000 +0200 ---- src/eval.c 2011-08-17 15:12:39.000000000 +0200 -*************** -*** 23205,23210 **** ---- 23205,23211 ---- - int c; - int has_fullname = 0; - #ifdef WIN3264 -+ char_u *fname_start = *fnamep; - int has_shortname = 0; - #endif - -*************** -*** 23379,23402 **** - } - - #ifdef WIN3264 -! /* Check shortname after we have done 'heads' and before we do 'tails' - */ - if (has_shortname) - { -! pbuf = NULL; -! /* Copy the string if it is shortened by :h */ -! if (*fnamelen < (int)STRLEN(*fnamep)) - { - p = vim_strnsave(*fnamep, *fnamelen); -! if (p == 0) - return -1; - vim_free(*bufp); - *bufp = *fnamep = p; - } - - /* Split into two implementations - makes it easier. First is where -! * there isn't a full name already, second is where there is. -! */ - if (!has_fullname && !vim_isAbsName(*fnamep)) - { - if (shortpath_for_partial(fnamep, bufp, fnamelen) == FAIL) ---- 23380,23404 ---- - } - - #ifdef WIN3264 -! /* -! * Handle ":8" after we have done 'heads' and before we do 'tails'. - */ - if (has_shortname) - { -! /* Copy the string if it is shortened by :h and when it wasn't copied -! * yet, because we are going to change it in place. Avoids changing -! * the buffer name for "%:8". */ -! if (*fnamelen < (int)STRLEN(*fnamep) || *fnamep == fname_start) - { - p = vim_strnsave(*fnamep, *fnamelen); -! if (p == NULL) - return -1; - vim_free(*bufp); - *bufp = *fnamep = p; - } - - /* Split into two implementations - makes it easier. First is where -! * there isn't a full name already, second is where there is. */ - if (!has_fullname && !vim_isAbsName(*fnamep)) - { - if (shortpath_for_partial(fnamep, bufp, fnamelen) == FAIL) -*************** -*** 23404,23421 **** - } - else - { -! int l; - -! /* Simple case, already have the full-name - * Nearly always shorter, so try first time. */ -- l = *fnamelen; - if (get_short_pathname(fnamep, bufp, &l) == FAIL) - return -1; - - if (l == 0) - { -! /* Couldn't find the filename.. search the paths. -! */ - l = *fnamelen; - if (shortpath_for_invalid_fname(fnamep, bufp, &l) == FAIL) - return -1; ---- 23406,23421 ---- - } - else - { -! int l = *fnamelen; - -! /* Simple case, already have the full-name. - * Nearly always shorter, so try first time. */ - if (get_short_pathname(fnamep, bufp, &l) == FAIL) - return -1; - - if (l == 0) - { -! /* Couldn't find the filename, search the paths. */ - l = *fnamelen; - if (shortpath_for_invalid_fname(fnamep, bufp, &l) == FAIL) - return -1; -*** ../vim-7.3.280/src/version.c 2011-08-10 18:36:49.000000000 +0200 ---- src/version.c 2011-08-17 15:21:41.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 281, - /**/ - --- -Kisses may last for as much as, but no more than, five minutes. - [real standing law in Iowa, United States of America] - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.282 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.282 -Problem: When using input() and :echo in a loop the displayed text is - incorrect. (Benjamin Fritz) -Solution: Only restore the cursor position when there is a command line. - (Ben Schmidt) -Files: src/ex_getln.c - - -*** ../vim-7.3.281/src/ex_getln.c 2011-07-27 17:58:42.000000000 +0200 ---- src/ex_getln.c 2011-08-17 15:57:39.000000000 +0200 -*************** -*** 1969,1976 **** - # endif - s = getcmdline(firstc, 1L, 0); - restore_cmdline(&save_ccline); -! /* Restore msg_col, the prompt from input() may have changed it. */ -! msg_col = msg_col_save; - - return s; - } ---- 1969,1980 ---- - # endif - s = getcmdline(firstc, 1L, 0); - restore_cmdline(&save_ccline); -! /* Restore msg_col, the prompt from input() may have changed it. -! * But only if called recursively and the commandline is therefore being -! * restored to an old one; if not, the input() prompt stays on the screen, -! * so we need its modified msg_col left intact. */ -! if (ccline.cmdbuff != NULL) -! msg_col = msg_col_save; - - return s; - } -*** ../vim-7.3.281/src/version.c 2011-08-17 15:23:16.000000000 +0200 ---- src/version.c 2011-08-17 16:24:04.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 282, - /**/ - --- -Why don't cannibals eat clowns? -Because they taste funny. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.283 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.283 -Problem: An expression mapping with a multi-byte character containing a - 0x80 byte gets messed up. (ZyX) -Solution: Unescape the expression before evaluating it (Yukihiro Nakadaira) -Files: src/getchar.c - - -*** ../vim-7.3.282/src/getchar.c 2011-04-28 17:30:05.000000000 +0200 ---- src/getchar.c 2011-08-17 17:04:38.000000000 +0200 -*************** -*** 3262,3270 **** - validate_maphash(); - - /* -! * find end of keys and skip CTRL-Vs (and backslashes) in it - * Accept backslash like CTRL-V when 'cpoptions' does not contain 'B'. -! * with :unmap white space is included in the keys, no argument possible - */ - p = keys; - do_backslash = (vim_strchr(p_cpo, CPO_BSLASH) == NULL); ---- 3262,3270 ---- - validate_maphash(); - - /* -! * Find end of keys and skip CTRL-Vs (and backslashes) in it. - * Accept backslash like CTRL-V when 'cpoptions' does not contain 'B'. -! * with :unmap white space is included in the keys, no argument possible. - */ - p = keys; - do_backslash = (vim_strchr(p_cpo, CPO_BSLASH) == NULL); -*************** -*** 4506,4517 **** ---- 4506,4528 ---- - { - char_u *res; - char_u *p; -+ char_u *expr; - char_u *save_cmd; - pos_T save_cursor; - -+ /* Remove escaping of CSI, because "str" is in a format to be used as -+ * typeahead. */ -+ expr = vim_strsave(str); -+ if (expr == NULL) -+ return NULL; -+ vim_unescape_csi(expr); -+ - save_cmd = save_cmdline_alloc(); - if (save_cmd == NULL) -+ { -+ vim_free(expr); - return NULL; -+ } - - /* Forbid changing text or using ":normal" to avoid most of the bad side - * effects. Also restore the cursor position. */ -*************** -*** 4521,4527 **** - #endif - set_vim_var_char(c); /* set v:char to the typed character */ - save_cursor = curwin->w_cursor; -! p = eval_to_string(str, NULL, FALSE); - --textlock; - #ifdef FEAT_EX_EXTRA - --ex_normal_lock; ---- 4532,4538 ---- - #endif - set_vim_var_char(c); /* set v:char to the typed character */ - save_cursor = curwin->w_cursor; -! p = eval_to_string(expr, NULL, FALSE); - --textlock; - #ifdef FEAT_EX_EXTRA - --ex_normal_lock; -*************** -*** 4529,4536 **** ---- 4540,4550 ---- - curwin->w_cursor = save_cursor; - - restore_cmdline_alloc(save_cmd); -+ vim_free(expr); -+ - if (p == NULL) - return NULL; -+ /* Escape CSI in the result to be able to use the string as typeahead. */ - res = vim_strsave_escape_csi(p); - vim_free(p); - -*** ../vim-7.3.282/src/version.c 2011-08-17 16:25:43.000000000 +0200 ---- src/version.c 2011-08-17 17:17:03.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 283, - /**/ - --- -bashian roulette: -$ ((RANDOM%6)) || rm -rf ~ - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.284 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.284 -Problem: The str2special() function doesn't handle multi-byte characters - properly. -Solution: Recognize multi-byte characters. (partly by Vladimir Vichniakov) -Files: src/getchar.c, src/message.c, src/misc2.c - - -*** ../vim-7.3.283/src/getchar.c 2011-08-17 17:18:14.000000000 +0200 ---- src/getchar.c 2011-08-17 20:11:58.000000000 +0200 -*************** -*** 3964,3970 **** - if (*mp->m_str == NUL) - msg_puts_attr((char_u *)"<Nop>", hl_attr(HLF_8)); - else -! msg_outtrans_special(mp->m_str, FALSE); - #ifdef FEAT_EVAL - if (p_verbose > 0) - last_set_msg(mp->m_script_ID); ---- 3964,3980 ---- - if (*mp->m_str == NUL) - msg_puts_attr((char_u *)"<Nop>", hl_attr(HLF_8)); - else -! { -! /* Remove escaping of CSI, because "m_str" is in a format to be used -! * as typeahead. */ -! char_u *s = vim_strsave(mp->m_str); -! if (s != NULL) -! { -! vim_unescape_csi(s); -! msg_outtrans_special(s, FALSE); -! vim_free(s); -! } -! } - #ifdef FEAT_EVAL - if (p_verbose > 0) - last_set_msg(mp->m_script_ID); -*** ../vim-7.3.283/src/message.c 2011-03-22 13:07:19.000000000 +0100 ---- src/message.c 2011-08-17 18:40:10.000000000 +0200 -*************** -*** 1547,1562 **** - if (IS_SPECIAL(c) || modifiers) /* special key */ - special = TRUE; - } -- *sp = str + 1; - - #ifdef FEAT_MBYTE -! /* For multi-byte characters check for an illegal byte. */ -! if (has_mbyte && MB_BYTE2LEN(*str) > (*mb_ptr2len)(str)) - { -! transchar_nonprint(buf, c); -! return buf; - } - #endif - - /* Make unprintable characters in <> form, also <M-Space> and <Tab>. - * Use <Space> only for lhs of a mapping. */ ---- 1547,1573 ---- - if (IS_SPECIAL(c) || modifiers) /* special key */ - special = TRUE; - } - - #ifdef FEAT_MBYTE -! if (has_mbyte && !IS_SPECIAL(c)) - { -! int len = (*mb_ptr2len)(str); -! -! /* For multi-byte characters check for an illegal byte. */ -! if (has_mbyte && MB_BYTE2LEN(*str) > len) -! { -! transchar_nonprint(buf, c); -! *sp = str + 1; -! return buf; -! } -! /* Since 'special' is TRUE the multi-byte character 'c' will be -! * processed by get_special_key_name() */ -! c = (*mb_ptr2char)(str); -! *sp = str + len; - } -+ else - #endif -+ *sp = str + 1; - - /* Make unprintable characters in <> form, also <M-Space> and <Tab>. - * Use <Space> only for lhs of a mapping. */ -*** ../vim-7.3.283/src/misc2.c 2011-07-27 17:31:42.000000000 +0200 ---- src/misc2.c 2011-08-17 20:27:30.000000000 +0200 -*************** -*** 2754,2759 **** ---- 2754,2760 ---- - int bit; - int key; - unsigned long n; -+ int l; - - src = *srcp; - if (src[0] != '<') -*************** -*** 2766,2773 **** - if (*bp == '-') - { - last_dash = bp; -! if (bp[1] != NUL && bp[2] == '>') -! ++bp; /* anything accepted, like <C-?> */ - } - if (bp[0] == 't' && bp[1] == '_' && bp[2] && bp[3]) - bp += 3; /* skip t_xx, xx may be '-' or '>' */ ---- 2767,2783 ---- - if (*bp == '-') - { - last_dash = bp; -! if (bp[1] != NUL) -! { -! #ifdef FEAT_MBYTE -! if (has_mbyte) -! l = mb_ptr2len(bp + 1); -! else -! #endif -! l = 1; -! if (bp[l + 1] == '>') -! bp += l; /* anything accepted, like <C-?> */ -! } - } - if (bp[0] == 't' && bp[1] == '_' && bp[2] && bp[3]) - bp += 3; /* skip t_xx, xx may be '-' or '>' */ -*************** -*** 2777,2791 **** - { - end_of_name = bp + 1; - -- if (STRNICMP(src + 1, "char-", 5) == 0 && VIM_ISDIGIT(src[6])) -- { -- /* <Char-123> or <Char-033> or <Char-0x33> */ -- vim_str2nr(src + 6, NULL, NULL, TRUE, TRUE, NULL, &n); -- *modp = 0; -- *srcp = end_of_name; -- return (int)n; -- } -- - /* Which modifiers are given? */ - modifiers = 0x0; - for (bp = src + 1; bp < last_dash; bp++) ---- 2787,2792 ---- -*************** -*** 2804,2814 **** - */ - if (bp >= last_dash) - { - /* - * Modifier with single letter, or special key name. - */ -! if (modifiers != 0 && last_dash[2] == '>') -! key = last_dash[1]; - else - { - key = get_special_key_code(last_dash + 1); ---- 2805,2831 ---- - */ - if (bp >= last_dash) - { -+ if (STRNICMP(last_dash + 1, "char-", 5) == 0 -+ && VIM_ISDIGIT(last_dash[6])) -+ { -+ /* <Char-123> or <Char-033> or <Char-0x33> */ -+ vim_str2nr(last_dash + 6, NULL, NULL, TRUE, TRUE, NULL, &n); -+ *modp = modifiers; -+ *srcp = end_of_name; -+ return (int)n; -+ } -+ - /* - * Modifier with single letter, or special key name. - */ -! #ifdef FEAT_MBYTE -! if (has_mbyte) -! l = mb_ptr2len(last_dash + 1); -! else -! #endif -! l = 1; -! if (modifiers != 0 && last_dash[l + 1] == '>') -! key = PTR2CHAR(last_dash + 1); - else - { - key = get_special_key_code(last_dash + 1); -*** ../vim-7.3.283/src/version.c 2011-08-17 17:18:14.000000000 +0200 ---- src/version.c 2011-08-17 20:27:47.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 284, - /**/ - --- -Snoring is prohibited unless all bedroom windows are closed and securely -locked. - [real standing law in Massachusetts, United States of America] - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.285 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.285 (after 7.3.284) -Problem: Mapping <Char-123> no longer works. -Solution: Properly check for "char-". Add a test for it. -Files: src/misc2.c, src/testdir/test75.in, src/testdir/test75.ok - - -*** ../vim-7.3.284/src/misc2.c 2011-08-17 20:33:18.000000000 +0200 ---- src/misc2.c 2011-08-19 22:08:37.000000000 +0200 -*************** -*** 2781,2786 **** ---- 2781,2792 ---- - } - if (bp[0] == 't' && bp[1] == '_' && bp[2] && bp[3]) - bp += 3; /* skip t_xx, xx may be '-' or '>' */ -+ else if (STRNICMP(bp, "char-", 5) == 0) -+ { -+ vim_str2nr(bp + 5, NULL, &l, TRUE, TRUE, NULL, NULL); -+ bp += l + 5; -+ break; -+ } - } - - if (*bp == '>') /* found matching '>' */ -*************** -*** 2810,2836 **** - { - /* <Char-123> or <Char-033> or <Char-0x33> */ - vim_str2nr(last_dash + 6, NULL, NULL, TRUE, TRUE, NULL, &n); -! *modp = modifiers; -! *srcp = end_of_name; -! return (int)n; - } -- -- /* -- * Modifier with single letter, or special key name. -- */ -- #ifdef FEAT_MBYTE -- if (has_mbyte) -- l = mb_ptr2len(last_dash + 1); -- else -- #endif -- l = 1; -- if (modifiers != 0 && last_dash[l + 1] == '>') -- key = PTR2CHAR(last_dash + 1); - else - { -! key = get_special_key_code(last_dash + 1); -! if (!keep_x_key) -! key = handle_x_keys(key); - } - - /* ---- 2816,2842 ---- - { - /* <Char-123> or <Char-033> or <Char-0x33> */ - vim_str2nr(last_dash + 6, NULL, NULL, TRUE, TRUE, NULL, &n); -! key = (int)n; - } - else - { -! /* -! * Modifier with single letter, or special key name. -! */ -! #ifdef FEAT_MBYTE -! if (has_mbyte) -! l = mb_ptr2len(last_dash + 1); -! else -! #endif -! l = 1; -! if (modifiers != 0 && last_dash[l + 1] == '>') -! key = PTR2CHAR(last_dash + 1); -! else -! { -! key = get_special_key_code(last_dash + 1); -! if (!keep_x_key) -! key = handle_x_keys(key); -! } - } - - /* -*** ../vim-7.3.284/src/testdir/test75.in 2010-10-20 21:22:17.000000000 +0200 ---- src/testdir/test75.in 2011-08-19 22:05:13.000000000 +0200 -*************** -*** 2,7 **** ---- 2,8 ---- - - STARTTEST - :so small.vim -+ :set cpo-=< - :" Test maparg() with a string result - :map foo<C-V> is<F4>foo - :vnoremap <script> <buffer> <expr> <silent> bar isbar -*************** -*** 9,14 **** ---- 10,20 ---- - :call append('$', string(maparg('foo<C-V>', '', 0, 1))) - :call append('$', string(maparg('bar', '', 0, 1))) - :" -+ :map abc x<char-114>x -+ :call append('$', maparg('abc')) -+ :map abc y<S-char-114>y -+ :call append('$', maparg('abc')) -+ :" - :/^eof/+1,$w! test.out - :qa! - ENDTEST -*** ../vim-7.3.284/src/testdir/test75.ok 2010-10-20 21:22:17.000000000 +0200 ---- src/testdir/test75.ok 2011-08-19 21:53:26.000000000 +0200 -*************** -*** 1,3 **** ---- 1,5 ---- - is<F4>foo - {'silent': 0, 'noremap': 0, 'lhs': 'foo<C-V>', 'mode': ' ', 'expr': 0, 'sid': 0, 'rhs': 'is<F4>foo', 'buffer': 0} - {'silent': 1, 'noremap': 1, 'lhs': 'bar', 'mode': 'v', 'expr': 1, 'sid': 0, 'rhs': 'isbar', 'buffer': 1} -+ xrx -+ yRy -*** ../vim-7.3.284/src/version.c 2011-08-17 20:33:18.000000000 +0200 ---- src/version.c 2011-08-19 22:15:22.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 285, - /**/ - - --- -No man may purchase alcohol without written consent from his wife. - [real standing law in Pennsylvania, United States of America] - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.286 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.286 -Problem: Crash when using "zd" on a large number of folds. (Sam King) -Solution: Recompute pointer after reallocating array. Move fewer entries - when making room. -Files: src/fold.c - - -*** ../vim-7.3.285/src/fold.c 2010-08-15 21:57:27.000000000 +0200 ---- src/fold.c 2011-08-26 16:03:56.000000000 +0200 -*************** -*** 1469,1479 **** - } - else - { -! /* move nested folds one level up, to overwrite the fold that is - * deleted. */ - moved = fp->fd_nested.ga_len; - if (ga_grow(gap, (int)(moved - 1)) == OK) - { - /* adjust fd_top and fd_flags for the moved folds */ - nfp = (fold_T *)fp->fd_nested.ga_data; - for (i = 0; i < moved; ++i) ---- 1469,1482 ---- - } - else - { -! /* Move nested folds one level up, to overwrite the fold that is - * deleted. */ - moved = fp->fd_nested.ga_len; - if (ga_grow(gap, (int)(moved - 1)) == OK) - { -+ /* Get "fp" again, the array may have been reallocated. */ -+ fp = (fold_T *)gap->ga_data + idx; -+ - /* adjust fd_top and fd_flags for the moved folds */ - nfp = (fold_T *)fp->fd_nested.ga_data; - for (i = 0; i < moved; ++i) -*************** -*** 1486,1494 **** - } - - /* move the existing folds down to make room */ -! if (idx < gap->ga_len) - mch_memmove(fp + moved, fp + 1, -! sizeof(fold_T) * (gap->ga_len - idx)); - /* move the contained folds one level up */ - mch_memmove(fp, nfp, (size_t)(sizeof(fold_T) * moved)); - vim_free(nfp); ---- 1489,1497 ---- - } - - /* move the existing folds down to make room */ -! if (idx + 1 < gap->ga_len) - mch_memmove(fp + moved, fp + 1, -! sizeof(fold_T) * (gap->ga_len - (idx + 1))); - /* move the contained folds one level up */ - mch_memmove(fp, nfp, (size_t)(sizeof(fold_T) * moved)); - vim_free(nfp); -*** ../vim-7.3.285/src/version.c 2011-08-19 22:28:58.000000000 +0200 ---- src/version.c 2011-08-26 16:07:59.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 286, - /**/ - --- -To keep milk from turning sour: Keep it in the cow. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.287 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.287 -Problem: Can't compile with MSVC and tiny options. -Solution: Move variables and #ifdefs. (Sergey Khorev) -Files: src/os_win32.c - - -*** ../vim-7.3.286/src/os_win32.c 2011-08-10 17:07:56.000000000 +0200 ---- src/os_win32.c 2011-08-27 15:07:28.000000000 +0200 -*************** -*** 3419,3426 **** - { - DWORD availableBytes = 0; - DWORD i; -- int c; -- char_u *p; - int ret; - DWORD len; - DWORD toRead; ---- 3419,3424 ---- -*************** -*** 3479,3484 **** ---- 3477,3484 ---- - else if (has_mbyte) - { - int l; -+ int c; -+ char_u *p; - - len += *buffer_off; - buffer[len] = NUL; -*************** -*** 3558,3566 **** - int noread_cnt = 0; - garray_T ga; - int delay = 1; -- # ifdef FEAT_MBYTE - DWORD buffer_off = 0; /* valid bytes in buffer[] */ -- # endif - - SECURITY_ATTRIBUTES saAttr; - ---- 3558,3564 ---- -*************** -*** 3777,3790 **** - - if (WaitForSingleObject(pi.hProcess, delay) != WAIT_TIMEOUT) - { -! dump_pipe(options, g_hChildStd_OUT_Rd, -! &ga, buffer, &buffer_off); - break; - } - - ++noread_cnt; -! dump_pipe(options, g_hChildStd_OUT_Rd, -! &ga, buffer, &buffer_off); - - /* We start waiting for a very short time and then increase it, so - * that we respond quickly when the process is quick, and don't ---- 3775,3786 ---- - - if (WaitForSingleObject(pi.hProcess, delay) != WAIT_TIMEOUT) - { -! dump_pipe(options, g_hChildStd_OUT_Rd, &ga, buffer, &buffer_off); - break; - } - - ++noread_cnt; -! dump_pipe(options, g_hChildStd_OUT_Rd, &ga, buffer, &buffer_off); - - /* We start waiting for a very short time and then increase it, so - * that we respond quickly when the process is quick, and don't -*** ../vim-7.3.286/src/version.c 2011-08-26 16:12:55.000000000 +0200 ---- src/version.c 2011-08-27 15:08:27.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 287, - /**/ - --- -SUPERIMPOSE "England AD 787". After a few more seconds we hear hoofbeats in -the distance. They come slowly closer. Then out of the mist comes KING -ARTHUR followed by a SERVANT who is banging two half coconuts together. - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.288 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.288 -Problem: has('python') may give an error message for not being able to load - the library after using python3. -Solution: Only give the error when the verbose argument is true. -Files: src/if_python.c, src/if_python3.c - - -*** ../vim-7.3.287/src/if_python.c 2011-06-19 00:27:46.000000000 +0200 ---- src/if_python.c 2011-08-21 17:03:52.000000000 +0200 -*************** -*** 368,374 **** - * standard C extension libraries of one or both python versions. */ - if (python3_loaded()) - { -! EMSG(_("E836: This Vim cannot execute :python after using :py3")); - return FAIL; - } - #endif ---- 368,375 ---- - * standard C extension libraries of one or both python versions. */ - if (python3_loaded()) - { -! if (verbose) -! EMSG(_("E836: This Vim cannot execute :python after using :py3")); - return FAIL; - } - #endif -*** ../vim-7.3.287/src/if_python3.c 2011-07-15 15:54:39.000000000 +0200 ---- src/if_python3.c 2011-08-21 17:05:19.000000000 +0200 -*************** -*** 367,373 **** - * standard C extension libraries of one or both python versions. */ - if (python_loaded()) - { -! EMSG(_("E837: This Vim cannot execute :py3 after using :python")); - return FAIL; - } - # endif ---- 367,374 ---- - * standard C extension libraries of one or both python versions. */ - if (python_loaded()) - { -! if (verbose) -! EMSG(_("E837: This Vim cannot execute :py3 after using :python")); - return FAIL; - } - # endif -*** ../vim-7.3.287/src/version.c 2011-08-27 15:10:00.000000000 +0200 ---- src/version.c 2011-08-28 15:59:11.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 288, - /**/ - --- -FIRST SOLDIER: So they wouldn't be able to bring a coconut back anyway. -SECOND SOLDIER: Wait a minute! Suppose two swallows carried it together? -FIRST SOLDIER: No, they'd have to have it on a line. - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.289 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.289 -Problem: Complete function isn't called when the leader changed. -Solution: Call ins_compl_restart() when the leader changed. (Taro Muraoka) -Files: src/edit.c - - -*** ../vim-7.3.288/src/edit.c 2011-05-19 17:25:36.000000000 +0200 ---- src/edit.c 2011-08-28 15:53:47.000000000 +0200 -*************** -*** 3367,3372 **** ---- 3367,3381 ---- - ins_bytes(compl_leader + ins_compl_len()); - compl_used_match = FALSE; - -+ #ifdef FEAT_COMPL_FUNC -+ /* -+ * To call eval 'completefunc' when leader is changed, restart completion -+ * every time. -+ */ -+ if (ctrl_x_mode == CTRL_X_FUNCTION || ctrl_x_mode == CTRL_X_OMNI) -+ ins_compl_restart(); -+ #endif -+ - if (compl_started) - ins_compl_set_original_text(compl_leader); - else -*** ../vim-7.3.288/src/version.c 2011-08-28 16:00:14.000000000 +0200 ---- src/version.c 2011-08-28 16:01:22.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 289, - /**/ - --- -THEOREM: VI is perfect. -PROOF: VI in roman numerals is 6. The natural numbers < 6 which divide 6 are -1, 2, and 3. 1+2+3 = 6. So 6 is a perfect number. Therefore, VI is perfect. -QED - -- Arthur Tateishi - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.290 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.290 -Problem: When a BufWriteCmd autocommand resets 'modified' this doesn't - change older buffer states to be marked as 'modified' like - ":write" does. (Yukihiro Nakadaira) -Solution: When the BufWriteCmd resets 'modified' then adjust the undo - information like ":write" does. -Files: src/fileio.c - - -*** ../vim-7.3.289/src/fileio.c 2011-07-20 18:29:33.000000000 +0200 ---- src/fileio.c 2011-08-29 21:49:27.000000000 +0200 -*************** -*** 3342,3349 **** - } - else if (reset_changed && whole) - { -! if (!(did_cmd = apply_autocmds_exarg(EVENT_BUFWRITECMD, -! sfname, sfname, FALSE, curbuf, eap))) - { - #ifdef FEAT_QUICKFIX - if (overwriting && bt_nofile(curbuf)) ---- 3342,3363 ---- - } - else if (reset_changed && whole) - { -! int was_changed = curbufIsChanged(); -! -! did_cmd = apply_autocmds_exarg(EVENT_BUFWRITECMD, -! sfname, sfname, FALSE, curbuf, eap); -! if (did_cmd) -! { -! if (was_changed && !curbufIsChanged()) -! { -! /* Written everything correctly and BufWriteCmd has reset -! * 'modified': Correct the undo information so that an -! * undo now sets 'modified'. */ -! u_unchanged(curbuf); -! u_update_save_nr(curbuf); -! } -! } -! else - { - #ifdef FEAT_QUICKFIX - if (overwriting && bt_nofile(curbuf)) -*** ../vim-7.3.289/src/version.c 2011-08-28 16:02:23.000000000 +0200 ---- src/version.c 2011-09-02 11:37:25.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 290, - /**/ - --- -OLD WOMAN: Well, how did you become king, then? -ARTHUR: The Lady of the Lake, her arm clad in the purest shimmering samite, - held Excalibur aloft from the bosom of the water to signify by Divine - Providence ... that I, Arthur, was to carry Excalibur ... That is - why I am your king! - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.291 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.291 -Problem: Configure doesn't work properly with Python3. -Solution: Put -ldl before $LDFLAGS. Add PY3_NO_RTLD_GLOBAL. (Roland - Puntaier) -Files: src/config.h.in, src/auto/configure, src/configure.in - - -*** ../vim-7.3.290/src/config.h.in 2010-10-27 16:49:41.000000000 +0200 ---- src/config.h.in 2011-09-02 11:22:21.000000000 +0200 -*************** -*** 346,351 **** ---- 346,354 ---- - /* Define if dynamic python does not require RTLD_GLOBAL */ - #undef PY_NO_RTLD_GLOBAL - -+ /* Define if dynamic python3 does not require RTLD_GLOBAL */ -+ #undef PY3_NO_RTLD_GLOBAL -+ - /* Define if you want to include the Ruby interpreter. */ - #undef FEAT_RUBY - -*** ../vim-7.3.290/src/auto/configure 2011-07-15 13:09:46.000000000 +0200 ---- src/auto/configure 2011-09-02 11:23:15.000000000 +0200 -*************** -*** 5733,5739 **** - cflags_save=$CFLAGS - CFLAGS="$CFLAGS $PYTHON_CFLAGS" - ldflags_save=$LDFLAGS -! LDFLAGS="$LDFLAGS -ldl" - if test "$cross_compiling" = yes; then : - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 - $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} ---- 5733,5739 ---- - cflags_save=$CFLAGS - CFLAGS="$CFLAGS $PYTHON_CFLAGS" - ldflags_save=$LDFLAGS -! LDFLAGS="-ldl $LDFLAGS" - if test "$cross_compiling" = yes; then : - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 - $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -*************** -*** 5798,5804 **** - cflags_save=$CFLAGS - CFLAGS="$CFLAGS $PYTHON3_CFLAGS" - ldflags_save=$LDFLAGS -! LDFLAGS="$LDFLAGS -ldl" - if test "$cross_compiling" = yes; then : - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 - $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} ---- 5798,5804 ---- - cflags_save=$CFLAGS - CFLAGS="$CFLAGS $PYTHON3_CFLAGS" - ldflags_save=$LDFLAGS -! LDFLAGS="-ldl $LDFLAGS" - if test "$cross_compiling" = yes; then : - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 - $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -*** ../vim-7.3.290/src/configure.in 2011-07-15 13:09:46.000000000 +0200 ---- src/configure.in 2011-09-02 11:19:51.000000000 +0200 -*************** -*** 1161,1167 **** - cflags_save=$CFLAGS - CFLAGS="$CFLAGS $PYTHON_CFLAGS" - ldflags_save=$LDFLAGS -! LDFLAGS="$LDFLAGS -ldl" - AC_RUN_IFELSE([ - #include <dlfcn.h> - /* If this program fails, then RTLD_GLOBAL is needed. ---- 1161,1168 ---- - cflags_save=$CFLAGS - CFLAGS="$CFLAGS $PYTHON_CFLAGS" - ldflags_save=$LDFLAGS -! dnl -ldl must go first to make this work on Archlinux (Roland Puntaier) -! LDFLAGS="-ldl $LDFLAGS" - AC_RUN_IFELSE([ - #include <dlfcn.h> - /* If this program fails, then RTLD_GLOBAL is needed. -*************** -*** 1205,1211 **** - cflags_save=$CFLAGS - CFLAGS="$CFLAGS $PYTHON3_CFLAGS" - ldflags_save=$LDFLAGS -! LDFLAGS="$LDFLAGS -ldl" - AC_RUN_IFELSE([ - #include <dlfcn.h> - #include <wchar.h> ---- 1206,1213 ---- - cflags_save=$CFLAGS - CFLAGS="$CFLAGS $PYTHON3_CFLAGS" - ldflags_save=$LDFLAGS -! dnl -ldl must go first to make this work on Archlinux (Roland Puntaier) -! LDFLAGS="-ldl $LDFLAGS" - AC_RUN_IFELSE([ - #include <dlfcn.h> - #include <wchar.h> -*** ../vim-7.3.290/src/version.c 2011-09-02 11:56:15.000000000 +0200 ---- src/version.c 2011-09-02 12:25:13.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 291, - /**/ - --- -DENNIS: Look, strange women lying on their backs in ponds handing out - swords ... that's no basis for a system of government. Supreme - executive power derives from a mandate from the masses, not from some - farcical aquatic ceremony. - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.292 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.292 -Problem: Crash when using fold markers and selecting a visual block that - includes a folded line and goes to end of line. (Sam Lidder) -Solution: Check for the column to be MAXCOL. (James Vega) -Files: src/screen.c - - -*** ../vim-7.3.291/src/screen.c 2011-08-10 14:32:33.000000000 +0200 ---- src/screen.c 2011-09-02 13:58:18.000000000 +0200 -*************** -*** 2531,2537 **** - /* Visual block mode: highlight the chars part of the block */ - if (wp->w_old_cursor_fcol + txtcol < (colnr_T)W_WIDTH(wp)) - { -! if (wp->w_old_cursor_lcol + txtcol < (colnr_T)W_WIDTH(wp)) - len = wp->w_old_cursor_lcol; - else - len = W_WIDTH(wp) - txtcol; ---- 2531,2539 ---- - /* Visual block mode: highlight the chars part of the block */ - if (wp->w_old_cursor_fcol + txtcol < (colnr_T)W_WIDTH(wp)) - { -! if (wp->w_old_cursor_lcol != MAXCOL -! && wp->w_old_cursor_lcol + txtcol -! < (colnr_T)W_WIDTH(wp)) - len = wp->w_old_cursor_lcol; - else - len = W_WIDTH(wp) - txtcol; -*** ../vim-7.3.291/src/version.c 2011-09-02 12:27:20.000000000 +0200 ---- src/version.c 2011-09-02 14:00:03.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 292, - /**/ - --- -Hacker: Someone skilled in computer programming (good guy). -Cracker: A hacker that uses his skills to crack software (bad guy). - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.293 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.293 -Problem: MSVC compiler has a problem with non-ASCII characters. -Solution: Avoid non-ASCII characters. (Hong Xu) -Files: src/ascii.h, src/spell.c - - -*** ../vim-7.3.292/src/ascii.h 2011-05-10 16:41:13.000000000 +0200 ---- src/ascii.h 2011-09-02 14:12:48.000000000 +0200 -*************** -*** 123,129 **** - #define DCS 0x90 /* Device Control String */ - #define STERM 0x9c /* String Terminator */ - -! #define POUND '£' - - #define CTRL_F_STR "\056" - #define CTRL_H_STR "\026" ---- 123,129 ---- - #define DCS 0x90 /* Device Control String */ - #define STERM 0x9c /* String Terminator */ - -! #define POUND '\xA3' - - #define CTRL_F_STR "\056" - #define CTRL_H_STR "\026" -*** ../vim-7.3.292/src/spell.c 2011-04-11 21:35:03.000000000 +0200 ---- src/spell.c 2011-09-02 14:13:30.000000000 +0200 -*************** -*** 11197,11203 **** - c = *s++; - - #ifdef FEAT_MBYTE -! /* We only change ß to SS when we are certain latin1 is used. It - * would cause weird errors in other 8-bit encodings. */ - if (enc_latin1like && c == 0xdf) - { ---- 11197,11203 ---- - c = *s++; - - #ifdef FEAT_MBYTE -! /* We only change 0xdf to SS when we are certain latin1 is used. It - * would cause weird errors in other 8-bit encodings. */ - if (enc_latin1like && c == 0xdf) - { -*** ../vim-7.3.292/src/version.c 2011-09-02 14:07:31.000000000 +0200 ---- src/version.c 2011-09-02 14:13:57.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 293, - /**/ - --- - A village. Sound of chanting of Latin canon, punctuated by short, sharp - cracks. It comes nearer. We see it is a line of MONKS ala SEVENTH SEAL - flagellation scene, chanting and banging themselves on the foreheads with - wooden boards. - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.294 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.294 (after 7.3.289) -Problem: Patch 289 causes more problems than it solves. -Solution: Rever the patch untill a better solution is found. -Files: src/edit.c - - -*** ../vim-7.3.293/src/edit.c 2011-08-28 16:02:23.000000000 +0200 ---- src/edit.c 2011-09-05 20:07:49.000000000 +0200 -*************** -*** 3367,3381 **** - ins_bytes(compl_leader + ins_compl_len()); - compl_used_match = FALSE; - -- #ifdef FEAT_COMPL_FUNC -- /* -- * To call eval 'completefunc' when leader is changed, restart completion -- * every time. -- */ -- if (ctrl_x_mode == CTRL_X_FUNCTION || ctrl_x_mode == CTRL_X_OMNI) -- ins_compl_restart(); -- #endif -- - if (compl_started) - ins_compl_set_original_text(compl_leader); - else ---- 3367,3372 ---- -*** ../vim-7.3.293/src/version.c 2011-09-02 14:18:14.000000000 +0200 ---- src/version.c 2011-09-05 20:08:27.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 294, - /**/ - --- -Scientists decoded the first message from an alien civilization: - SIMPLY SEND 6 TIMES 10 TO THE 50 ATOMS OF HYDROGEN TO THE STAR -SYSTEM AT THE TOP OF THE LIST, CROSS OFF THAT STAR SYSTEM, THEN PUT -YOUR STAR SYSTEM AT THE BOTTOM OF THE LIST AND SEND IT TO 100 OTHER -STAR SYSTEMS. WITHIN ONE TENTH GALACTIC ROTATION YOU WILL RECEIVE -ENOUGH HYDROGREN TO POWER YOUR CIVILIZATION UNTIL ENTROPY REACHES ITS -MAXIMUM! IT REALLY WORKS! - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.295 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.295 -Problem: When filtering text with an external command Vim may not read all - the output. -Solution: When select() is interrupted loop and try again. (James Vega) -Files: src/os_unix.c - - -*** ../vim-7.3.294/src/os_unix.c 2011-08-04 20:31:50.000000000 +0200 ---- src/os_unix.c 2011-09-07 13:34:09.000000000 +0200 -*************** -*** 4819,4825 **** - - /* - * Wait "msec" msec until a character is available from file descriptor "fd". -! * Time == -1 will block forever. - * When a GUI is being used, this will not be used for input -- webb - * Returns also, when a request from Sniff is waiting -- toni. - * Or when a Linux GPM mouse event is waiting. ---- 4819,4826 ---- - - /* - * Wait "msec" msec until a character is available from file descriptor "fd". -! * "msec" == 0 will check for characters once. -! * "msec" == -1 will block until a character is available. - * When a GUI is being used, this will not be used for input -- webb - * Returns also, when a request from Sniff is waiting -- toni. - * Or when a Linux GPM mouse event is waiting. -*************** -*** 5057,5063 **** - /* - * Select on ready for reading and exceptional condition (end of file). - */ -! FD_ZERO(&rfds); /* calls bzero() on a sun */ - FD_ZERO(&efds); - FD_SET(fd, &rfds); - # if !defined(__QNX__) && !defined(__CYGWIN32__) ---- 5058,5065 ---- - /* - * Select on ready for reading and exceptional condition (end of file). - */ -! select_eintr: -! FD_ZERO(&rfds); - FD_ZERO(&efds); - FD_SET(fd, &rfds); - # if !defined(__QNX__) && !defined(__CYGWIN32__) -*************** -*** 5117,5122 **** ---- 5119,5132 ---- - # else - ret = select(maxfd + 1, &rfds, NULL, &efds, tvp); - # endif -+ # ifdef EINTR -+ if (ret == -1 && errno == EINTR) -+ /* Interrupted by a signal, need to try again. We ignore msec -+ * here, because we do want to check even after a timeout if -+ * characters are available. Needed for reading output of an -+ * external command after the process has finished. */ -+ goto select_eintr; -+ # endif - # ifdef __TANDEM - if (ret == -1 && errno == ENOTSUP) - { -*************** -*** 5124,5130 **** - FD_ZERO(&efds); - ret = 0; - } -! #endif - # ifdef FEAT_MZSCHEME - if (ret == 0 && mzquantum_used) - /* loop if MzThreads must be scheduled and timeout occurred */ ---- 5134,5140 ---- - FD_ZERO(&efds); - ret = 0; - } -! # endif - # ifdef FEAT_MZSCHEME - if (ret == 0 && mzquantum_used) - /* loop if MzThreads must be scheduled and timeout occurred */ -*** ../vim-7.3.294/src/version.c 2011-09-05 20:13:37.000000000 +0200 ---- src/version.c 2011-09-07 14:05:05.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 295, - /**/ - --- -"You're fired." (1980) -"You're laid off." (1985) -"You're downsized." (1990) -"You're rightsized." (1992) - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.296 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.296 -Problem: When writing to an external command a zombie process may be left - behind. -Solution: Wait on the process. (James Vega) -Files: src/os_unix.c - - -*** ../vim-7.3.295/src/os_unix.c 2011-09-07 14:06:38.000000000 +0200 ---- src/os_unix.c 2011-09-07 14:54:11.000000000 +0200 -*************** -*** 154,159 **** ---- 154,166 ---- - - static void may_core_dump __ARGS((void)); - -+ #ifdef HAVE_UNION_WAIT -+ typedef union wait waitstatus; -+ #else -+ typedef int waitstatus; -+ #endif -+ static int wait4pid __ARGS((pid_t, waitstatus *)); -+ - static int WaitForChar __ARGS((long)); - #if defined(__BEOS__) - int RealWaitForChar __ARGS((int, long, int *)); -*************** -*** 3660,3665 **** ---- 3667,3713 ---- - /* Nothing to do. */ - } - -+ /* -+ * Wait for process "child" to end. -+ * Return "child" if it exited properly, <= 0 on error. -+ */ -+ static pid_t -+ wait4pid(child, status) -+ pid_t child; -+ waitstatus *status; -+ { -+ pid_t wait_pid = 0; -+ -+ while (wait_pid != child) -+ { -+ # ifdef _THREAD_SAFE -+ /* Ugly hack: when compiled with Python threads are probably -+ * used, in which case wait() sometimes hangs for no obvious -+ * reason. Use waitpid() instead and loop (like the GUI). */ -+ # ifdef __NeXT__ -+ wait_pid = wait4(child, status, WNOHANG, (struct rusage *)0); -+ # else -+ wait_pid = waitpid(child, status, WNOHANG); -+ # endif -+ if (wait_pid == 0) -+ { -+ /* Wait for 1/100 sec before trying again. */ -+ mch_delay(10L, TRUE); -+ continue; -+ } -+ # else -+ wait_pid = wait(status); -+ # endif -+ if (wait_pid <= 0 -+ # ifdef ECHILD -+ && errno == ECHILD -+ # endif -+ ) -+ break; -+ } -+ return wait_pid; -+ } -+ - int - mch_call_shell(cmd, options) - char_u *cmd; -*************** -*** 4234,4240 **** - { - MSG_PUTS(_("\nCannot fork\n")); - } -! else if (wpid == 0) - { - linenr_T lnum = curbuf->b_op_start.lnum; - int written = 0; ---- 4282,4288 ---- - { - MSG_PUTS(_("\nCannot fork\n")); - } -! else if (wpid == 0) /* child */ - { - linenr_T lnum = curbuf->b_op_start.lnum; - int written = 0; -*************** -*** 4242,4248 **** - char_u *s; - size_t l; - -- /* child */ - close(fromshell_fd); - for (;;) - { ---- 4290,4295 ---- -*************** -*** 4287,4293 **** - } - _exit(0); - } -! else - { - close(toshell_fd); - toshell_fd = -1; ---- 4334,4340 ---- - } - _exit(0); - } -! else /* parent */ - { - close(toshell_fd); - toshell_fd = -1; -*************** -*** 4584,4590 **** - * typed characters (otherwise we would lose typeahead). - */ - # ifdef __NeXT__ -! wait_pid = wait4(pid, &status, WNOHANG, (struct rusage *) 0); - # else - wait_pid = waitpid(pid, &status, WNOHANG); - # endif ---- 4631,4637 ---- - * typed characters (otherwise we would lose typeahead). - */ - # ifdef __NeXT__ -! wait_pid = wait4(pid, &status, WNOHANG, (struct rusage *)0); - # else - wait_pid = waitpid(pid, &status, WNOHANG); - # endif -*************** -*** 4633,4665 **** - * Don't wait if wait_pid was already set above, indicating the - * child already exited. - */ -! while (wait_pid != pid) -! { -! # ifdef _THREAD_SAFE -! /* Ugly hack: when compiled with Python threads are probably -! * used, in which case wait() sometimes hangs for no obvious -! * reason. Use waitpid() instead and loop (like the GUI). */ -! # ifdef __NeXT__ -! wait_pid = wait4(pid, &status, WNOHANG, (struct rusage *)0); -! # else -! wait_pid = waitpid(pid, &status, WNOHANG); -! # endif -! if (wait_pid == 0) -! { -! /* Wait for 1/100 sec before trying again. */ -! mch_delay(10L, TRUE); -! continue; -! } -! # else -! wait_pid = wait(&status); -! # endif -! if (wait_pid <= 0 -! # ifdef ECHILD -! && errno == ECHILD -! # endif -! ) -! break; -! } - - # ifdef FEAT_GUI - /* Close slave side of pty. Only do this after the child has ---- 4680,4687 ---- - * Don't wait if wait_pid was already set above, indicating the - * child already exited. - */ -! if (wait_pid != pid) -! wait_pid = wait4pid(pid, &status); - - # ifdef FEAT_GUI - /* Close slave side of pty. Only do this after the child has -*************** -*** 4672,4678 **** ---- 4694,4703 ---- - /* Make sure the child that writes to the external program is - * dead. */ - if (wpid > 0) -+ { - kill(wpid, SIGKILL); -+ wait4pid(wpid, NULL); -+ } - - /* - * Set to raw mode right now, otherwise a CTRL-C after -*** ../vim-7.3.295/src/version.c 2011-09-07 14:06:39.000000000 +0200 ---- src/version.c 2011-09-07 15:03:24.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 296, - /**/ - --- -If your company is not involved in something called "ISO 9000" you probably -have no idea what it is. If your company _is_ involved in ISO 9000 then you -definitely have no idea what it is. - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.297 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.297 -Problem: Can't load Perl 5.14 dynamically. -Solution: Add code in #ifdefs. (Charles Cooper) -Files: if_perl.xs - - -*** ../vim-7.3.296/src/if_perl.xs 2011-07-27 14:15:41.000000000 +0200 ---- src/if_perl.xs 2011-09-07 18:47:07.000000000 +0200 -*************** -*** 147,153 **** ---- 147,158 ---- - # define Perl_save_int dll_Perl_save_int - # define Perl_stack_grow dll_Perl_stack_grow - # define Perl_set_context dll_Perl_set_context -+ # if (PERL_REVISION == 5) && (PERL_VERSION >= 14) -+ # define Perl_sv_2bool_flags dll_Perl_sv_2bool_flags -+ # define Perl_xs_apiversion_bootcheck dll_Perl_xs_apiversion_bootcheck -+ # else - # define Perl_sv_2bool dll_Perl_sv_2bool -+ # endif - # define Perl_sv_2iv dll_Perl_sv_2iv - # define Perl_sv_2mortal dll_Perl_sv_2mortal - # if (PERL_REVISION == 5) && (PERL_VERSION >= 8) -*************** -*** 252,258 **** ---- 257,268 ---- - static void (*Perl_save_int)(pTHX_ int*); - static SV** (*Perl_stack_grow)(pTHX_ SV**, SV**p, int); - static SV** (*Perl_set_context)(void*); -+ #if (PERL_REVISION == 5) && (PERL_VERSION >= 14) -+ static bool (*Perl_sv_2bool_flags)(pTHX_ SV*, I32); -+ static void (*Perl_xs_apiversion_bootcheck)(pTHX_ SV *module, const char *api_p, STRLEN api_len); -+ #else - static bool (*Perl_sv_2bool)(pTHX_ SV*); -+ #endif - static IV (*Perl_sv_2iv)(pTHX_ SV*); - static SV* (*Perl_sv_2mortal)(pTHX_ SV*); - #if (PERL_REVISION == 5) && (PERL_VERSION >= 8) -*************** -*** 360,366 **** ---- 370,381 ---- - {"Perl_save_int", (PERL_PROC*)&Perl_save_int}, - {"Perl_stack_grow", (PERL_PROC*)&Perl_stack_grow}, - {"Perl_set_context", (PERL_PROC*)&Perl_set_context}, -+ #if (PERL_REVISION == 5) && (PERL_VERSION >= 14) -+ {"Perl_sv_2bool_flags", (PERL_PROC*)&Perl_sv_2bool_flags}, -+ {"Perl_xs_apiversion_bootcheck",(PERL_PROC*)&Perl_xs_apiversion_bootcheck}, -+ #else - {"Perl_sv_2bool", (PERL_PROC*)&Perl_sv_2bool}, -+ #endif - {"Perl_sv_2iv", (PERL_PROC*)&Perl_sv_2iv}, - {"Perl_sv_2mortal", (PERL_PROC*)&Perl_sv_2mortal}, - #if (PERL_REVISION == 5) && (PERL_VERSION >= 8) -*************** -*** 407,412 **** ---- 422,430 ---- - {"Perl_sv_free2", (PERL_PROC*)&Perl_sv_free2}, - {"Perl_sys_init", (PERL_PROC*)&Perl_sys_init}, - {"Perl_sys_term", (PERL_PROC*)&Perl_sys_term}, -+ {"Perl_call_list", (PERL_PROC*)&Perl_call_list}, -+ # if (PERL_REVISION == 5) && (PERL_VERSION >= 14) -+ # else - {"Perl_ISv_ptr", (PERL_PROC*)&Perl_ISv_ptr}, - {"Perl_Istack_max_ptr", (PERL_PROC*)&Perl_Istack_max_ptr}, - {"Perl_Istack_base_ptr", (PERL_PROC*)&Perl_Istack_base_ptr}, -*************** -*** 418,432 **** - {"Perl_Imarkstack_max_ptr", (PERL_PROC*)&Perl_Imarkstack_max_ptr}, - {"Perl_Istack_sp_ptr", (PERL_PROC*)&Perl_Istack_sp_ptr}, - {"Perl_Iop_ptr", (PERL_PROC*)&Perl_Iop_ptr}, -- {"Perl_call_list", (PERL_PROC*)&Perl_call_list}, - {"Perl_Iscopestack_ix_ptr", (PERL_PROC*)&Perl_Iscopestack_ix_ptr}, - {"Perl_Iunitcheckav_ptr", (PERL_PROC*)&Perl_Iunitcheckav_ptr}, - #endif - {"Perl_Idefgv_ptr", (PERL_PROC*)&Perl_Idefgv_ptr}, - {"Perl_Ierrgv_ptr", (PERL_PROC*)&Perl_Ierrgv_ptr}, - {"Perl_Isv_yes_ptr", (PERL_PROC*)&Perl_Isv_yes_ptr}, -- {"boot_DynaLoader", (PERL_PROC*)&boot_DynaLoader}, - {"Perl_Gthr_key_ptr", (PERL_PROC*)&Perl_Gthr_key_ptr}, - {"", NULL}, - }; - ---- 436,453 ---- - {"Perl_Imarkstack_max_ptr", (PERL_PROC*)&Perl_Imarkstack_max_ptr}, - {"Perl_Istack_sp_ptr", (PERL_PROC*)&Perl_Istack_sp_ptr}, - {"Perl_Iop_ptr", (PERL_PROC*)&Perl_Iop_ptr}, - {"Perl_Iscopestack_ix_ptr", (PERL_PROC*)&Perl_Iscopestack_ix_ptr}, - {"Perl_Iunitcheckav_ptr", (PERL_PROC*)&Perl_Iunitcheckav_ptr}, -+ # endif - #endif -+ #if (PERL_REVISION == 5) && (PERL_VERSION >= 14) -+ #else - {"Perl_Idefgv_ptr", (PERL_PROC*)&Perl_Idefgv_ptr}, - {"Perl_Ierrgv_ptr", (PERL_PROC*)&Perl_Ierrgv_ptr}, - {"Perl_Isv_yes_ptr", (PERL_PROC*)&Perl_Isv_yes_ptr}, - {"Perl_Gthr_key_ptr", (PERL_PROC*)&Perl_Gthr_key_ptr}, -+ #endif -+ {"boot_DynaLoader", (PERL_PROC*)&boot_DynaLoader}, - {"", NULL}, - }; - -*** ../vim-7.3.296/src/version.c 2011-09-07 15:04:26.000000000 +0200 ---- src/version.c 2011-09-07 18:45:28.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 297, - /**/ - --- -At some point in the project somebody will start whining about the need to -determine the project "requirements". This involves interviewing people who -don't know what they want but, curiously, know exactly when they need it. - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.298 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.298 -Problem: Built-in colors are different from rgb.txt. -Solution: Adjust the color values. (Benjamin Haskell) -Files: src/gui_photon.c, src/gui_w48.c - - -*** ../vim-7.3.297/src/gui_photon.c 2011-08-10 12:19:00.000000000 +0200 ---- src/gui_photon.c 2011-09-07 18:55:09.000000000 +0200 -*************** -*** 2007,2014 **** - static GuiColourTable table[] = - { - {"Black", RGB(0x00, 0x00, 0x00)}, -! {"DarkGray", RGB(0x80, 0x80, 0x80)}, -! {"DarkGrey", RGB(0x80, 0x80, 0x80)}, - {"Gray", RGB(0xC0, 0xC0, 0xC0)}, - {"Grey", RGB(0xC0, 0xC0, 0xC0)}, - {"LightGray", RGB(0xD3, 0xD3, 0xD3)}, ---- 2007,2014 ---- - static GuiColourTable table[] = - { - {"Black", RGB(0x00, 0x00, 0x00)}, -! {"DarkGray", RGB(0xA9, 0xA9, 0xA9)}, -! {"DarkGrey", RGB(0xA9, 0xA9, 0xA9)}, - {"Gray", RGB(0xC0, 0xC0, 0xC0)}, - {"Grey", RGB(0xC0, 0xC0, 0xC0)}, - {"LightGray", RGB(0xD3, 0xD3, 0xD3)}, -*************** -*** 2037,2055 **** - {"LightRed", RGB(0xFF, 0xA0, 0xA0)}, - {"DarkBlue", RGB(0x00, 0x00, 0x80)}, - {"Blue", RGB(0x00, 0x00, 0xFF)}, -! {"LightBlue", RGB(0xA0, 0xA0, 0xFF)}, - {"DarkGreen", RGB(0x00, 0x80, 0x00)}, - {"Green", RGB(0x00, 0xFF, 0x00)}, -! {"LightGreen", RGB(0xA0, 0xFF, 0xA0)}, - {"DarkCyan", RGB(0x00, 0x80, 0x80)}, - {"Cyan", RGB(0x00, 0xFF, 0xFF)}, -! {"LightCyan", RGB(0xA0, 0xFF, 0xFF)}, - {"DarkMagenta", RGB(0x80, 0x00, 0x80)}, - {"Magenta", RGB(0xFF, 0x00, 0xFF)}, - {"LightMagenta", RGB(0xFF, 0xA0, 0xFF)}, - {"Brown", RGB(0x80, 0x40, 0x40)}, - {"Yellow", RGB(0xFF, 0xFF, 0x00)}, -! {"LightYellow", RGB(0xFF, 0xFF, 0xA0)}, - {"SeaGreen", RGB(0x2E, 0x8B, 0x57)}, - {"Orange", RGB(0xFF, 0xA5, 0x00)}, - {"Purple", RGB(0xA0, 0x20, 0xF0)}, ---- 2037,2055 ---- - {"LightRed", RGB(0xFF, 0xA0, 0xA0)}, - {"DarkBlue", RGB(0x00, 0x00, 0x80)}, - {"Blue", RGB(0x00, 0x00, 0xFF)}, -! {"LightBlue", RGB(0xAD, 0xD8, 0xE6)}, - {"DarkGreen", RGB(0x00, 0x80, 0x00)}, - {"Green", RGB(0x00, 0xFF, 0x00)}, -! {"LightGreen", RGB(0x90, 0xEE, 0x90)}, - {"DarkCyan", RGB(0x00, 0x80, 0x80)}, - {"Cyan", RGB(0x00, 0xFF, 0xFF)}, -! {"LightCyan", RGB(0xE0, 0xFF, 0xFF)}, - {"DarkMagenta", RGB(0x80, 0x00, 0x80)}, - {"Magenta", RGB(0xFF, 0x00, 0xFF)}, - {"LightMagenta", RGB(0xFF, 0xA0, 0xFF)}, - {"Brown", RGB(0x80, 0x40, 0x40)}, - {"Yellow", RGB(0xFF, 0xFF, 0x00)}, -! {"LightYellow", RGB(0xFF, 0xFF, 0xE0)}, - {"SeaGreen", RGB(0x2E, 0x8B, 0x57)}, - {"Orange", RGB(0xFF, 0xA5, 0x00)}, - {"Purple", RGB(0xA0, 0x20, 0xF0)}, -*** ../vim-7.3.297/src/gui_w48.c 2011-08-10 17:07:56.000000000 +0200 ---- src/gui_w48.c 2011-09-07 18:55:09.000000000 +0200 -*************** -*** 1411,1422 **** - static guicolor_tTable table[] = - { - {"Black", RGB(0x00, 0x00, 0x00)}, -! {"DarkGray", RGB(0x80, 0x80, 0x80)}, -! {"DarkGrey", RGB(0x80, 0x80, 0x80)}, - {"Gray", RGB(0xC0, 0xC0, 0xC0)}, - {"Grey", RGB(0xC0, 0xC0, 0xC0)}, -! {"LightGray", RGB(0xE0, 0xE0, 0xE0)}, -! {"LightGrey", RGB(0xE0, 0xE0, 0xE0)}, - {"Gray10", RGB(0x1A, 0x1A, 0x1A)}, - {"Grey10", RGB(0x1A, 0x1A, 0x1A)}, - {"Gray20", RGB(0x33, 0x33, 0x33)}, ---- 1411,1422 ---- - static guicolor_tTable table[] = - { - {"Black", RGB(0x00, 0x00, 0x00)}, -! {"DarkGray", RGB(0xA9, 0xA9, 0xA9)}, -! {"DarkGrey", RGB(0xA9, 0xA9, 0xA9)}, - {"Gray", RGB(0xC0, 0xC0, 0xC0)}, - {"Grey", RGB(0xC0, 0xC0, 0xC0)}, -! {"LightGray", RGB(0xD3, 0xD3, 0xD3)}, -! {"LightGrey", RGB(0xD3, 0xD3, 0xD3)}, - {"Gray10", RGB(0x1A, 0x1A, 0x1A)}, - {"Grey10", RGB(0x1A, 0x1A, 0x1A)}, - {"Gray20", RGB(0x33, 0x33, 0x33)}, -*************** -*** 1441,1459 **** - {"LightRed", RGB(0xFF, 0xA0, 0xA0)}, - {"DarkBlue", RGB(0x00, 0x00, 0x80)}, - {"Blue", RGB(0x00, 0x00, 0xFF)}, -! {"LightBlue", RGB(0xA0, 0xA0, 0xFF)}, - {"DarkGreen", RGB(0x00, 0x80, 0x00)}, - {"Green", RGB(0x00, 0xFF, 0x00)}, -! {"LightGreen", RGB(0xA0, 0xFF, 0xA0)}, - {"DarkCyan", RGB(0x00, 0x80, 0x80)}, - {"Cyan", RGB(0x00, 0xFF, 0xFF)}, -! {"LightCyan", RGB(0xA0, 0xFF, 0xFF)}, - {"DarkMagenta", RGB(0x80, 0x00, 0x80)}, - {"Magenta", RGB(0xFF, 0x00, 0xFF)}, - {"LightMagenta", RGB(0xFF, 0xA0, 0xFF)}, - {"Brown", RGB(0x80, 0x40, 0x40)}, - {"Yellow", RGB(0xFF, 0xFF, 0x00)}, -! {"LightYellow", RGB(0xFF, 0xFF, 0xA0)}, - {"DarkYellow", RGB(0xBB, 0xBB, 0x00)}, - {"SeaGreen", RGB(0x2E, 0x8B, 0x57)}, - {"Orange", RGB(0xFF, 0xA5, 0x00)}, ---- 1441,1459 ---- - {"LightRed", RGB(0xFF, 0xA0, 0xA0)}, - {"DarkBlue", RGB(0x00, 0x00, 0x80)}, - {"Blue", RGB(0x00, 0x00, 0xFF)}, -! {"LightBlue", RGB(0xAD, 0xD8, 0xE6)}, - {"DarkGreen", RGB(0x00, 0x80, 0x00)}, - {"Green", RGB(0x00, 0xFF, 0x00)}, -! {"LightGreen", RGB(0x90, 0xEE, 0x90)}, - {"DarkCyan", RGB(0x00, 0x80, 0x80)}, - {"Cyan", RGB(0x00, 0xFF, 0xFF)}, -! {"LightCyan", RGB(0xE0, 0xFF, 0xFF)}, - {"DarkMagenta", RGB(0x80, 0x00, 0x80)}, - {"Magenta", RGB(0xFF, 0x00, 0xFF)}, - {"LightMagenta", RGB(0xFF, 0xA0, 0xFF)}, - {"Brown", RGB(0x80, 0x40, 0x40)}, - {"Yellow", RGB(0xFF, 0xFF, 0x00)}, -! {"LightYellow", RGB(0xFF, 0xFF, 0xE0)}, - {"DarkYellow", RGB(0xBB, 0xBB, 0x00)}, - {"SeaGreen", RGB(0x2E, 0x8B, 0x57)}, - {"Orange", RGB(0xFF, 0xA5, 0x00)}, -*** ../vim-7.3.297/src/version.c 2011-09-07 18:47:19.000000000 +0200 ---- src/version.c 2011-09-07 18:55:27.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 298, - /**/ - --- -You can test a person's importance in the organization by asking how much RAM -his computer has. Anybody who knows the answer to that question is not a -decision-maker. - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.299 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.299 -Problem: Source code not in Vim style. -Solution: Adjust the style. (Elias Diem) -Files: src/gui_photon.c - - -*** ../vim-7.3.298/src/gui_photon.c 2011-09-07 18:58:24.000000000 +0200 ---- src/gui_photon.c 2011-09-07 19:02:59.000000000 +0200 -*************** -*** 535,547 **** - &src_taken, - buf, - 6, -! &dst_made ); - -! add_to_input_buf( buf, dst_made ); - } - else - { -! add_to_input_buf( string, len ); - } - - return Pt_CONSUME; ---- 535,547 ---- - &src_taken, - buf, - 6, -! &dst_made); - -! add_to_input_buf(buf, dst_made); - } - else - { -! add_to_input_buf(string, len); - } - - return Pt_CONSUME; -*************** -*** 549,579 **** - len = 0; - #endif - ch = key->key_cap; -! if( ch < 0xff ) - { - /* FIXME: is this the right thing to do? */ -! if( modifiers & MOD_MASK_CTRL ) - { - modifiers &= ~MOD_MASK_CTRL; - -! if( ( ch >= 'a' && ch <= 'z' ) || - ch == '[' || - ch == ']' || -! ch == '\\' ) -! ch = Ctrl_chr( ch ); -! else if( ch == '2' ) - ch = NUL; -! else if( ch == '6' ) - ch = 0x1e; -! else if( ch == '-' ) - ch = 0x1f; - else - modifiers |= MOD_MASK_CTRL; - } - -! if( modifiers & MOD_MASK_ALT ) - { -! ch = Meta( ch ); - modifiers &= ~MOD_MASK_ALT; - } - } ---- 549,579 ---- - len = 0; - #endif - ch = key->key_cap; -! if (ch < 0xff) - { - /* FIXME: is this the right thing to do? */ -! if (modifiers & MOD_MASK_CTRL) - { - modifiers &= ~MOD_MASK_CTRL; - -! if ((ch >= 'a' && ch <= 'z') || - ch == '[' || - ch == ']' || -! ch == '\\') -! ch = Ctrl_chr(ch); -! else if (ch == '2') - ch = NUL; -! else if (ch == '6') - ch = 0x1e; -! else if (ch == '-') - ch = 0x1f; - else - modifiers |= MOD_MASK_CTRL; - } - -! if (modifiers & MOD_MASK_ALT) - { -! ch = Meta(ch); - modifiers &= ~MOD_MASK_ALT; - } - } -*************** -*** 586,604 **** - modifiers &= ~MOD_MASK_SHIFT; - } - -! ch = simplify_key( ch, &modifiers ); -! if( modifiers ) - { - string[ len++ ] = CSI; - string[ len++ ] = KS_MODIFIER; - string[ len++ ] = modifiers; - } - -! if( IS_SPECIAL( ch ) ) - { - string[ len++ ] = CSI; -! string[ len++ ] = K_SECOND( ch ); -! string[ len++ ] = K_THIRD( ch ); - } - else - { ---- 586,604 ---- - modifiers &= ~MOD_MASK_SHIFT; - } - -! ch = simplify_key(ch, &modifiers); -! if (modifiers) - { - string[ len++ ] = CSI; - string[ len++ ] = KS_MODIFIER; - string[ len++ ] = modifiers; - } - -! if (IS_SPECIAL(ch)) - { - string[ len++ ] = CSI; -! string[ len++ ] = K_SECOND(ch); -! string[ len++ ] = K_THIRD(ch); - } - else - { -*************** -*** 619,627 **** - string[ len++ ] = KE_CSI; - } - -! if( len > 0 ) - { -! add_to_input_buf( string, len ); - return Pt_CONSUME; - } - } ---- 619,627 ---- - string[ len++ ] = KE_CSI; - } - -! if (len > 0) - { -! add_to_input_buf(string, len); - return Pt_CONSUME; - } - } -*************** -*** 630,646 **** - } - - static int -! gui_ph_handle_mouse( PtWidget_t *widget, void *data, PtCallbackInfo_t *info ) - { - PhPointerEvent_t *pointer; - PhRect_t *pos; - int button = 0, repeated_click, modifiers = 0x0; - short mouse_x, mouse_y; - -! pointer = PhGetData( info->event ); -! pos = PhGetRects( info->event ); - -! gui_mch_mousehide( MOUSE_SHOW ); - - /* - * Coordinates need to be relative to the base window, ---- 630,646 ---- - } - - static int -! gui_ph_handle_mouse(PtWidget_t *widget, void *data, PtCallbackInfo_t *info) - { - PhPointerEvent_t *pointer; - PhRect_t *pos; - int button = 0, repeated_click, modifiers = 0x0; - short mouse_x, mouse_y; - -! pointer = PhGetData(info->event); -! pos = PhGetRects(info->event); - -! gui_mch_mousehide(MOUSE_SHOW); - - /* - * Coordinates need to be relative to the base window, -*************** -*** 649,675 **** - mouse_x = pos->ul.x + gui.border_width; - mouse_y = pos->ul.y + gui.border_width; - -! if( info->event->type == Ph_EV_PTR_MOTION_NOBUTTON ) - { -! gui_mouse_moved( mouse_x, mouse_y ); - return Pt_CONTINUE; - } - -! if( pointer->key_mods & Pk_KM_Shift ) - modifiers |= MOUSE_SHIFT; -! if( pointer->key_mods & Pk_KM_Ctrl ) - modifiers |= MOUSE_CTRL; -! if( pointer->key_mods & Pk_KM_Alt ) - modifiers |= MOUSE_ALT; - - /* - * FIXME More than one button may be involved, but for - * now just deal with one - */ -! if( pointer->buttons & Ph_BUTTON_SELECT ) - button = MOUSE_LEFT; - -! if( pointer->buttons & Ph_BUTTON_MENU ) - { - button = MOUSE_RIGHT; - /* Need the absolute coordinates for the popup menu */ ---- 649,675 ---- - mouse_x = pos->ul.x + gui.border_width; - mouse_y = pos->ul.y + gui.border_width; - -! if (info->event->type == Ph_EV_PTR_MOTION_NOBUTTON) - { -! gui_mouse_moved(mouse_x, mouse_y); - return Pt_CONTINUE; - } - -! if (pointer->key_mods & Pk_KM_Shift) - modifiers |= MOUSE_SHIFT; -! if (pointer->key_mods & Pk_KM_Ctrl) - modifiers |= MOUSE_CTRL; -! if (pointer->key_mods & Pk_KM_Alt) - modifiers |= MOUSE_ALT; - - /* - * FIXME More than one button may be involved, but for - * now just deal with one - */ -! if (pointer->buttons & Ph_BUTTON_SELECT) - button = MOUSE_LEFT; - -! if (pointer->buttons & Ph_BUTTON_MENU) - { - button = MOUSE_RIGHT; - /* Need the absolute coordinates for the popup menu */ -*************** -*** 677,705 **** - abs_mouse.y = pointer->pos.y; - } - -! if( pointer->buttons & Ph_BUTTON_ADJUST ) - button = MOUSE_MIDDLE; - - /* Catch a real release (not phantom or other releases */ -! if( info->event->type == Ph_EV_BUT_RELEASE ) - button = MOUSE_RELEASE; - -! if( info->event->type & Ph_EV_PTR_MOTION_BUTTON ) - button = MOUSE_DRAG; - - #if 0 - /* Vim doesn't use button repeats */ -! if( info->event->type & Ph_EV_BUT_REPEAT ) - button = MOUSE_DRAG; - #endif - - /* Don't do anything if it is one of the phantom mouse release events */ -! if( ( button != MOUSE_RELEASE ) || -! ( info->event->subtype == Ph_EV_RELEASE_REAL ) ) - { - repeated_click = (pointer->click_count >= 2) ? TRUE : FALSE; - -! gui_send_mouse_event( button , mouse_x, mouse_y, repeated_click, modifiers ); - } - - return Pt_CONTINUE; ---- 677,705 ---- - abs_mouse.y = pointer->pos.y; - } - -! if (pointer->buttons & Ph_BUTTON_ADJUST) - button = MOUSE_MIDDLE; - - /* Catch a real release (not phantom or other releases */ -! if (info->event->type == Ph_EV_BUT_RELEASE) - button = MOUSE_RELEASE; - -! if (info->event->type & Ph_EV_PTR_MOTION_BUTTON) - button = MOUSE_DRAG; - - #if 0 - /* Vim doesn't use button repeats */ -! if (info->event->type & Ph_EV_BUT_REPEAT) - button = MOUSE_DRAG; - #endif - - /* Don't do anything if it is one of the phantom mouse release events */ -! if ((button != MOUSE_RELEASE) || -! (info->event->subtype == Ph_EV_RELEASE_REAL)) - { - repeated_click = (pointer->click_count >= 2) ? TRUE : FALSE; - -! gui_send_mouse_event(button , mouse_x, mouse_y, repeated_click, modifiers); - } - - return Pt_CONTINUE; -*************** -*** 707,741 **** - - /* Handle a focus change of the PtRaw widget */ - static int -! gui_ph_handle_focus( PtWidget_t *widget, void *data, PtCallbackInfo_t *info ) - { -! if( info->reason == Pt_CB_LOST_FOCUS ) - { -! PtRemoveEventHandler( gui.vimTextArea, Ph_EV_PTR_MOTION_NOBUTTON, -! gui_ph_handle_mouse, NULL ); - -! gui_mch_mousehide( MOUSE_SHOW ); - } - else - { -! PtAddEventHandler( gui.vimTextArea, Ph_EV_PTR_MOTION_NOBUTTON, -! gui_ph_handle_mouse, NULL ); - } - return Pt_CONTINUE; - } - - static void -! gui_ph_handle_raw_draw( PtWidget_t *widget, PhTile_t *damage ) - { - PhRect_t *r; - PhPoint_t offset; - PhPoint_t translation; - -! if( is_ignore_draw == TRUE ) - return; - -! PtSuperClassDraw( PtBasic, widget, damage ); -! PgGetTranslation( &translation ); - PgClearTranslation(); - - #if 0 ---- 707,741 ---- - - /* Handle a focus change of the PtRaw widget */ - static int -! gui_ph_handle_focus(PtWidget_t *widget, void *data, PtCallbackInfo_t *info) - { -! if (info->reason == Pt_CB_LOST_FOCUS) - { -! PtRemoveEventHandler(gui.vimTextArea, Ph_EV_PTR_MOTION_NOBUTTON, -! gui_ph_handle_mouse, NULL); - -! gui_mch_mousehide(MOUSE_SHOW); - } - else - { -! PtAddEventHandler(gui.vimTextArea, Ph_EV_PTR_MOTION_NOBUTTON, -! gui_ph_handle_mouse, NULL); - } - return Pt_CONTINUE; - } - - static void -! gui_ph_handle_raw_draw(PtWidget_t *widget, PhTile_t *damage) - { - PhRect_t *r; - PhPoint_t offset; - PhPoint_t translation; - -! if (is_ignore_draw == TRUE) - return; - -! PtSuperClassDraw(PtBasic, widget, damage); -! PgGetTranslation(&translation); - PgClearTranslation(); - - #if 0 -*************** -*** 750,770 **** - out_flush(); - #endif - -! PtWidgetOffset( widget, &offset ); -! PhTranslatePoint( &offset, PtWidgetPos( gui.vimTextArea, NULL ) ); - - #if 1 - /* Redraw individual damage regions */ -! if( damage->next != NULL ) - damage = damage->next; - -! while( damage != NULL ) - { - r = &damage->rect; - gui_redraw( - r->ul.x - offset.x, r->ul.y - offset.y, - r->lr.x - r->ul.x + 1, -! r->lr.y - r->ul.y + 1 ); - damage = damage->next; - } - #else ---- 750,770 ---- - out_flush(); - #endif - -! PtWidgetOffset(widget, &offset); -! PhTranslatePoint(&offset, PtWidgetPos(gui.vimTextArea, NULL)); - - #if 1 - /* Redraw individual damage regions */ -! if (damage->next != NULL) - damage = damage->next; - -! while(damage != NULL) - { - r = &damage->rect; - gui_redraw( - r->ul.x - offset.x, r->ul.y - offset.y, - r->lr.x - r->ul.x + 1, -! r->lr.y - r->ul.y + 1); - damage = damage->next; - } - #else -*************** -*** 773,796 **** - gui_redraw( - r->ul.x - offset.x, r->ul.y - offset.y, - r->lr.x - r->ul.x + 1, -! r->lr.y - r->ul.y + 1 ); - #endif - -! PgSetTranslation( &translation, 0 ); - } - - static int - gui_ph_handle_pulldown_menu( - PtWidget_t *widget, - void *data, -! PtCallbackInfo_t *info ) - { -! if( data != NULL ) - { - vimmenu_T *menu = (vimmenu_T *) data; - -! PtPositionMenu( menu->submenu_id, NULL ); -! PtRealizeWidget( menu->submenu_id ); - } - - return Pt_CONTINUE; ---- 773,796 ---- - gui_redraw( - r->ul.x - offset.x, r->ul.y - offset.y, - r->lr.x - r->ul.x + 1, -! r->lr.y - r->ul.y + 1); - #endif - -! PgSetTranslation(&translation, 0); - } - - static int - gui_ph_handle_pulldown_menu( - PtWidget_t *widget, - void *data, -! PtCallbackInfo_t *info) - { -! if (data != NULL) - { - vimmenu_T *menu = (vimmenu_T *) data; - -! PtPositionMenu(menu->submenu_id, NULL); -! PtRealizeWidget(menu->submenu_id); - } - - return Pt_CONTINUE; -*** ../vim-7.3.298/src/version.c 2011-09-07 18:58:24.000000000 +0200 ---- src/version.c 2011-09-07 19:01:17.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 299, - /**/ - --- -The only way the average employee can speak to an executive is by taking a -second job as a golf caddie. - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.300 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.300 -Problem: Python doesn't parse multi-byte argument correctly. -Solution: Use "t" instead of "s". (lilydjwg) -Files: src/if_py_both.h - - -*** ../vim-7.3.299/src/if_py_both.h 2011-07-07 15:08:53.000000000 +0200 ---- src/if_py_both.h 2011-09-07 19:25:12.000000000 +0200 -*************** -*** 74,80 **** - char *str = NULL; - int error = ((OutputObject *)(self))->error; - -! if (!PyArg_ParseTuple(args, "es#", ENC_OPT, &str, &len)) - return NULL; - - Py_BEGIN_ALLOW_THREADS ---- 74,80 ---- - char *str = NULL; - int error = ((OutputObject *)(self))->error; - -! if (!PyArg_ParseTuple(args, "et#", ENC_OPT, &str, &len)) - return NULL; - - Py_BEGIN_ALLOW_THREADS -*************** -*** 114,120 **** - char *str = NULL; - PyInt len; - -! if (!PyArg_Parse(line, "es#", ENC_OPT, &str, &len)) { - PyErr_SetString(PyExc_TypeError, _("writelines() requires list of strings")); - Py_DECREF(list); - return NULL; ---- 114,120 ---- - char *str = NULL; - PyInt len; - -! if (!PyArg_Parse(line, "et#", ENC_OPT, &str, &len)) { - PyErr_SetString(PyExc_TypeError, _("writelines() requires list of strings")); - Py_DECREF(list); - return NULL; -*** ../vim-7.3.299/src/version.c 2011-09-07 19:08:57.000000000 +0200 ---- src/version.c 2011-09-07 19:26:05.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 300, - /**/ - --- -A salesperson says: Translation: -"backward compatible" Old technology -"Premium" Overpriced -"Can't keep it on the shelf" Unavailable -"Stands alone" Piece of shit -"Proprietary" Incompatible - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.301 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.301 -Problem: When 'smartindent' and 'copyindent' are set a Tab is used even - though 'expandtab' is set. -Solution: Do not insert Tabs. Add a test. (Christian Brabandt) -Files: src/misc1.c, src/testdir/test19.in, src/testdir/test19.ok - - -*** ../vim-7.3.300/src/misc1.c 2011-07-27 17:31:42.000000000 +0200 ---- src/misc1.c 2011-09-07 19:37:04.000000000 +0200 -*************** -*** 363,369 **** - - /* Fill to next tabstop with a tab, if possible */ - tab_pad = (int)curbuf->b_p_ts - (ind_done % (int)curbuf->b_p_ts); -! if (todo >= tab_pad) - { - todo -= tab_pad; - ++ind_len; ---- 363,369 ---- - - /* Fill to next tabstop with a tab, if possible */ - tab_pad = (int)curbuf->b_p_ts - (ind_done % (int)curbuf->b_p_ts); -! if (todo >= tab_pad && !curbuf->b_p_et) - { - todo -= tab_pad; - ++ind_len; -*************** -*** 372,378 **** - } - - /* Add tabs required for indent */ -! while (todo >= (int)curbuf->b_p_ts) - { - todo -= (int)curbuf->b_p_ts; - ++ind_len; ---- 372,378 ---- - } - - /* Add tabs required for indent */ -! while (todo >= (int)curbuf->b_p_ts && !curbuf->b_p_et) - { - todo -= (int)curbuf->b_p_ts; - ++ind_len; -*** ../vim-7.3.300/src/testdir/test19.in 2010-08-15 21:57:29.000000000 +0200 ---- src/testdir/test19.in 2011-09-07 19:46:17.000000000 +0200 -*************** -*** 12,17 **** ---- 12,20 ---- - 0wR - :" Test replacing with Tabs - 0wR -+ :" Test that copyindent works with expandtab set -+ :set expandtab smartindent copyindent ts=8 sw=8 sts=8 -+ :exe "norm! o{\<cr>x" - :?^start?,$w! test.out - :qa! - ENDTEST -*** ../vim-7.3.300/src/testdir/test19.ok 2010-08-15 21:57:29.000000000 +0200 ---- src/testdir/test19.ok 2011-09-07 19:37:04.000000000 +0200 -*************** -*** 5,7 **** ---- 5,9 ---- - a cde - hi - test text -+ { -+ x -*** ../vim-7.3.300/src/version.c 2011-09-07 19:30:17.000000000 +0200 ---- src/version.c 2011-09-07 19:38:48.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 301, - /**/ - --- -I recommend ordering large cargo containers of paper towels to make up -whatever budget underruns you have. Paper products are always useful and they -have the advantage of being completely flushable if you need to make room in -the storage area later. - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.302 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.302 (after 7.3.301) -Problem: Test 19 fails without 'smartindent' and +eval. -Solution: Don't use ":exe". Source small.vim. -Files: src/testdir/test19.in - - -*** ../vim-7.3.301/src/testdir/test19.in 2011-09-07 19:58:04.000000000 +0200 ---- src/testdir/test19.in 2011-09-08 20:32:33.000000000 +0200 -*************** -*** 1,6 **** ---- 1,7 ---- - Tests for "r<Tab>" with 'smarttab' and 'expandtab' set/not set. - - STARTTEST -+ :so small.vim - :set smarttab expandtab ts=8 sw=4 - :" make sure that backspace works, no matter what termcap is used - :set t_kD=x7f t_kb=x08 -*************** -*** 14,21 **** - 0wR - :" Test that copyindent works with expandtab set - :set expandtab smartindent copyindent ts=8 sw=8 sts=8 -! :exe "norm! o{\<cr>x" -! :?^start?,$w! test.out - :qa! - ENDTEST - ---- 15,22 ---- - 0wR - :" Test that copyindent works with expandtab set - :set expandtab smartindent copyindent ts=8 sw=8 sts=8 -! o{ -! x:?^start?,$w! test.out - :qa! - ENDTEST - -*** ../vim-7.3.301/src/version.c 2011-09-07 19:58:04.000000000 +0200 ---- src/version.c 2011-09-08 23:22:01.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 302, - /**/ - --- -Engineers are always delighted to share wisdom, even in areas in which they -have no experience whatsoever. Their logic provides them with inherent -insight into any field of expertise. This can be a problem when dealing with -the illogical people who believe that knowledge can only be derived through -experience. - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.303 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.303 (after 7.3.296) -Problem: Compilation error. -Solution: Correct return type from int to pid_t. (Danek Duvall) -Files: src/os_unix.c - - -*** ../vim-7.3.302/src/os_unix.c 2011-09-07 15:04:26.000000000 +0200 ---- src/os_unix.c 2011-09-08 20:47:47.000000000 +0200 -*************** -*** 159,165 **** - #else - typedef int waitstatus; - #endif -! static int wait4pid __ARGS((pid_t, waitstatus *)); - - static int WaitForChar __ARGS((long)); - #if defined(__BEOS__) ---- 159,165 ---- - #else - typedef int waitstatus; - #endif -! static pid_t wait4pid __ARGS((pid_t, waitstatus *)); - - static int WaitForChar __ARGS((long)); - #if defined(__BEOS__) -*** ../vim-7.3.302/src/version.c 2011-09-08 23:22:35.000000000 +0200 ---- src/version.c 2011-09-08 23:23:43.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 303, - /**/ - --- -For humans, honesty is a matter of degree. Engineers are always honest in -matters of technology and human relationships. That's why it's a good idea -to keep engineers away from customers, romantic interests, and other people -who can't handle the truth. - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.304 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.304 -Problem: Strawberry Perl doesn't work on MS-Windows. -Solution: Use xsubpp if needed. (Yasuhiro Matsumoto) -Files: src/Make_ming.mak, src/Make_mvc.mak - - -*** ../vim-7.3.303/src/Make_ming.mak 2011-06-19 01:30:01.000000000 +0200 ---- src/Make_ming.mak 2011-09-14 10:44:55.000000000 +0200 -*************** -*** 108,113 **** ---- 108,120 ---- - # on NT, it's here: - PERLLIB=$(PERL)/lib - PERLLIBS=$(PERLLIB)/Core -+ XSUBPP=$(PERLLIB)/ExtUtils/xsubpp -+ XSUBPP_EXISTS=$(shell perl -e "print 1 unless -e '$(XSUBPP)'") -+ ifeq "$(XSUBPP_EXISTS)" "" -+ XSUBPP=perl $(XSUBPP) -+ else -+ XSUBPP=xsubpp -+ endif - endif - - # uncomment 'LUA' if you want a Lua-enabled version -*************** -*** 696,702 **** - endif - - if_perl.c: if_perl.xs typemap -! perl $(PERLLIB)/ExtUtils/xsubpp -prototypes -typemap \ - $(PERLLIB)/ExtUtils/typemap if_perl.xs > $@ - - $(OUTDIR)/netbeans.o: netbeans.c $(INCL) $(NBDEBUG_INCL) $(NBDEBUG_SRC) ---- 703,709 ---- - endif - - if_perl.c: if_perl.xs typemap -! $(XSUBPP) -prototypes -typemap \ - $(PERLLIB)/ExtUtils/typemap if_perl.xs > $@ - - $(OUTDIR)/netbeans.o: netbeans.c $(INCL) $(NBDEBUG_INCL) $(NBDEBUG_SRC) -*** ../vim-7.3.303/src/Make_mvc.mak 2011-06-12 20:31:25.000000000 +0200 ---- src/Make_mvc.mak 2011-09-14 10:46:08.000000000 +0200 -*************** -*** 785,790 **** ---- 785,795 ---- - PERL_INC = /I $(PERL_INCDIR) - PERL_OBJ = $(OUTDIR)\if_perl.obj $(OUTDIR)\if_perlsfio.obj - XSUBPP = $(PERL)\lib\ExtUtils\xsubpp -+ !if exist($(XSUBPP) -+ XSUBPP = $(PERL_EXE) $(XSUBPP) -+ !else -+ XSUBPP = xsubpp -+ !endif - XSUBPP_TYPEMAP = $(PERL)\lib\ExtUtils\typemap - - !endif -*************** -*** 1041,1047 **** - $(CC) $(CFLAGS) $(LUA_INC) if_lua.c - - if_perl.c : if_perl.xs typemap -! $(PERL_EXE) $(XSUBPP) -prototypes -typemap $(XSUBPP_TYPEMAP) \ - -typemap typemap if_perl.xs > if_perl.c - - $(OUTDIR)/if_perl.obj: $(OUTDIR) if_perl.c $(INCL) ---- 1046,1052 ---- - $(CC) $(CFLAGS) $(LUA_INC) if_lua.c - - if_perl.c : if_perl.xs typemap -! $(XSUBPP) -prototypes -typemap $(XSUBPP_TYPEMAP) \ - -typemap typemap if_perl.xs > if_perl.c - - $(OUTDIR)/if_perl.obj: $(OUTDIR) if_perl.c $(INCL) -*** ../vim-7.3.303/src/version.c 2011-09-08 23:24:09.000000000 +0200 ---- src/version.c 2011-09-14 10:47:41.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 304, - /**/ - --- -It's totally unfair to suggest - as many have - that engineers are socially -inept. Engineers simply have different objectives when it comes to social -interaction. - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.305 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.305 -Problem: Auto-loading a function while editing the command line causes - scrolling up the display. -Solution: Don't set msg_scroll when defining a function and the user is not - typing. (Yasuhiro Matsumoto) -Files: src/eval.c - - -*** ../vim-7.3.304/src/eval.c 2011-08-17 15:23:16.000000000 +0200 ---- src/eval.c 2011-09-14 14:28:21.000000000 +0200 -*************** -*** 20786,20792 **** - nesting = 0; - for (;;) - { -! msg_scroll = TRUE; - need_wait_return = FALSE; - sourcing_lnum_off = sourcing_lnum; - ---- 20786,20793 ---- - nesting = 0; - for (;;) - { -! if (KeyTyped) -! msg_scroll = TRUE; - need_wait_return = FALSE; - sourcing_lnum_off = sourcing_lnum; - -*** ../vim-7.3.304/src/version.c 2011-09-14 10:49:44.000000000 +0200 ---- src/version.c 2011-09-14 14:30:49.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 305, - /**/ - --- -If someone questions your market projections, simply point out that your -target market is "People who are nuts" and "People who will buy any damn -thing". Nobody is going to tell you there aren't enough of those people -to go around. - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.306 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.306 -Problem: When closing a window there is a chance that deleting a scrollbar - triggers a GUI resize, which uses the window while it is not in a - valid state. -Solution: Set the buffer pointer to NULL to be able to detect the invalid - situation. Fix a few places that used the buffer pointer - incorrectly. -Files: src/buffer.c, src/ex_cmds.c, src/term.c, src/window.c - - -*** ../vim-7.3.305/src/buffer.c 2011-05-19 13:40:47.000000000 +0200 ---- src/buffer.c 2011-09-10 13:46:59.000000000 +0200 -*************** -*** 416,421 **** ---- 416,423 ---- - #endif - - buf_freeall(buf, (del_buf ? BFA_DEL : 0) + (wipe_buf ? BFA_WIPE : 0)); -+ if (win_valid(win) && win->w_buffer == buf) -+ win->w_buffer = NULL; /* make sure we don't use the buffer now */ - - #ifdef FEAT_AUTOCMD - /* Autocommands may have deleted the buffer. */ -*************** -*** 560,565 **** ---- 562,571 ---- - #ifdef FEAT_DIFF - diff_buf_delete(buf); /* Can't use 'diff' for unloaded buffer. */ - #endif -+ #ifdef FEAT_SYN_HL -+ if (curwin->w_buffer == buf) -+ reset_synblock(curwin); /* remove any ownsyntax */ -+ #endif - - #ifdef FEAT_FOLDING - /* No folds in an empty buffer. */ -*************** -*** 1346,1351 **** ---- 1352,1361 ---- - # endif - #endif - { -+ #ifdef FEAT_SYN_HL -+ if (prevbuf == curwin->w_buffer) -+ reset_synblock(curwin); -+ #endif - #ifdef FEAT_WINDOWS - if (unload) - close_windows(prevbuf, FALSE); -*************** -*** 1395,1404 **** - foldUpdateAll(curwin); /* update folds (later). */ - #endif - -- #ifdef FEAT_SYN_HL -- reset_synblock(curwin); -- curwin->w_s = &(buf->b_s); -- #endif - /* Get the buffer in the current window. */ - curwin->w_buffer = buf; - curbuf = buf; ---- 1405,1410 ---- -*************** -*** 1409,1414 **** ---- 1415,1424 ---- - diff_buf_add(curbuf); - #endif - -+ #ifdef FEAT_SYN_HL -+ curwin->w_s = &(buf->b_s); -+ #endif -+ - /* Cursor on first line by default. */ - curwin->w_cursor.lnum = 1; - curwin->w_cursor.col = 0; -*** ../vim-7.3.305/src/ex_cmds.c 2011-07-07 16:20:45.000000000 +0200 ---- src/ex_cmds.c 2011-09-10 13:39:13.000000000 +0200 -*************** -*** 3619,3628 **** - */ - check_arg_idx(curwin); - -- #ifdef FEAT_SYN_HL -- reset_synblock(curwin); /* remove any ownsyntax */ -- #endif -- - #ifdef FEAT_AUTOCMD - if (!auto_buf) - #endif ---- 3619,3624 ---- -*** ../vim-7.3.305/src/term.c 2011-05-10 16:41:13.000000000 +0200 ---- src/term.c 2011-09-14 14:39:39.000000000 +0200 -*************** -*** 3017,3028 **** - if (width < 0 || height < 0) /* just checking... */ - return; - -! if (State == HITRETURN || State == SETWSIZE) /* postpone the resizing */ - { - State = SETWSIZE; - return; - } - - ++busy; - - #ifdef AMIGA ---- 3017,3036 ---- - if (width < 0 || height < 0) /* just checking... */ - return; - -! if (State == HITRETURN || State == SETWSIZE) - { -+ /* postpone the resizing */ - State = SETWSIZE; - return; - } - -+ /* curwin->w_buffer can be NULL when we are closing a window and the -+ * buffer has already been closed and removing a scrollbar causes a resize -+ * event. Don't resize then, it will happen after entering another buffer. -+ */ -+ if (curwin->w_buffer == NULL) -+ return; -+ - ++busy; - - #ifdef AMIGA -*** ../vim-7.3.305/src/window.c 2011-01-08 14:45:57.000000000 +0100 ---- src/window.c 2011-09-10 14:04:56.000000000 +0200 -*************** -*** 1226,1240 **** - } - newp->w_tagstackidx = oldp->w_tagstackidx; - newp->w_tagstacklen = oldp->w_tagstacklen; -! # ifdef FEAT_FOLDING - copyFoldingState(oldp, newp); -! # endif - - win_init_some(newp, oldp); - -! # ifdef FEAT_SYN_HL - check_colorcolumn(newp); -! # endif - } - - /* ---- 1226,1240 ---- - } - newp->w_tagstackidx = oldp->w_tagstackidx; - newp->w_tagstacklen = oldp->w_tagstacklen; -! #ifdef FEAT_FOLDING - copyFoldingState(oldp, newp); -! #endif - - win_init_some(newp, oldp); - -! #ifdef FEAT_SYN_HL - check_colorcolumn(newp); -! #endif - } - - /* -*************** -*** 2212,2217 **** ---- 2212,2222 ---- - out_flush(); - #endif - -+ #ifdef FEAT_SYN_HL -+ /* Free independent synblock before the buffer is freed. */ -+ reset_synblock(win); -+ #endif -+ - /* - * Close the link to the buffer. - */ -*************** -*** 2222,2228 **** - if (!win_valid(win) || last_window() || curtab != prev_curtab) - return; - -! /* Free the memory used for the window. */ - wp = win_free_mem(win, &dir, NULL); - - /* Make sure curwin isn't invalid. It can cause severe trouble when ---- 2227,2234 ---- - if (!win_valid(win) || last_window() || curtab != prev_curtab) - return; - -! /* Free the memory used for the window and get the window that received -! * the screen space. */ - wp = win_free_mem(win, &dir, NULL); - - /* Make sure curwin isn't invalid. It can cause severe trouble when -*************** -*** 3247,3252 **** ---- 3253,3261 ---- - else - wp->w_farsi = W_CONV; - #endif -+ #ifdef FEAT_SYN_HL -+ wp->w_s = &wp->w_buffer->b_s; -+ #endif - } - - /* -*************** -*** 4437,4443 **** - #endif /* FEAT_GUI */ - - #ifdef FEAT_SYN_HL -- reset_synblock(wp); /* free independent synblock */ - vim_free(wp->w_p_cc_cols); - #endif - ---- 4446,4451 ---- -*** ../vim-7.3.305/src/version.c 2011-09-14 14:33:47.000000000 +0200 ---- src/version.c 2011-09-14 14:35:30.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 306, - /**/ - --- -A consultant is a person who takes your money and annoys your employees while -tirelessly searching for the best way to extend the consulting contract. - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.307 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.307 -Problem: Python 3 doesn't support slice assignment. -Solution: Implement slices. (Brett Overesch, Roland Puntaier) -Files: src/if_python3.c - - -*** ../vim-7.3.306/src/if_python3.c 2011-08-28 16:00:14.000000000 +0200 ---- src/if_python3.c 2011-09-14 15:01:26.000000000 +0200 -*************** -*** 855,862 **** - - static Py_ssize_t BufferLength(PyObject *); - static PyObject *BufferItem(PyObject *, Py_ssize_t); -! static PyObject* BufferSubscript(PyObject *self, PyObject* idx); -! static Py_ssize_t BufferAsSubscript(PyObject *self, PyObject* idx, PyObject* val); - - - /* Line range type - Implementation functions ---- 855,862 ---- - - static Py_ssize_t BufferLength(PyObject *); - static PyObject *BufferItem(PyObject *, Py_ssize_t); -! static PyObject* BufferSubscript(PyObject *self, PyObject *idx); -! static Py_ssize_t BufferAsSubscript(PyObject *self, PyObject *idx, PyObject *val); - - - /* Line range type - Implementation functions -*************** -*** 865,872 **** - - #define RangeType_Check(obj) ((obj)->ob_base.ob_type == &RangeType) - -! static PyObject* RangeSubscript(PyObject *self, PyObject* idx); - static Py_ssize_t RangeAsItem(PyObject *, Py_ssize_t, PyObject *); - - /* Current objects type - Implementation functions - * ----------------------------------------------- ---- 865,873 ---- - - #define RangeType_Check(obj) ((obj)->ob_base.ob_type == &RangeType) - -! static PyObject* RangeSubscript(PyObject *self, PyObject *idx); - static Py_ssize_t RangeAsItem(PyObject *, Py_ssize_t, PyObject *); -+ static Py_ssize_t RangeAsSubscript(PyObject *self, PyObject *idx, PyObject *val); - - /* Current objects type - Implementation functions - * ----------------------------------------------- -*************** -*** 1035,1041 **** - &step, &slicelen) < 0) { - return NULL; - } -! return BufferSlice(self,start,stop); - } else { - PyErr_SetString(PyExc_IndexError, "Index must be int or slice"); - return NULL; ---- 1036,1042 ---- - &step, &slicelen) < 0) { - return NULL; - } -! return BufferSlice(self, start, stop); - } else { - PyErr_SetString(PyExc_IndexError, "Index must be int or slice"); - return NULL; -*************** -*** 1084,1090 **** - PyMappingMethods RangeAsMapping = { - /* mp_length */ (lenfunc)RangeLength, - /* mp_subscript */ (binaryfunc)RangeSubscript, -! /* mp_ass_subscript */ (objobjargproc)0, - }; - - /* Line range object - Implementation ---- 1085,1091 ---- - PyMappingMethods RangeAsMapping = { - /* mp_length */ (lenfunc)RangeLength, - /* mp_subscript */ (binaryfunc)RangeSubscript, -! /* mp_ass_subscript */ (objobjargproc)RangeAsSubscript, - }; - - /* Line range object - Implementation -*************** -*** 1123,1128 **** ---- 1124,1138 ---- - &((RangeObject *)(self))->end); - } - -+ static Py_ssize_t -+ RangeAsSlice(PyObject *self, Py_ssize_t lo, Py_ssize_t hi, PyObject *val) -+ { -+ return RBAsSlice(((RangeObject *)(self))->buf, lo, hi, val, -+ ((RangeObject *)(self))->start, -+ ((RangeObject *)(self))->end, -+ &((RangeObject *)(self))->end); -+ } -+ - static PyObject * - RangeSubscript(PyObject *self, PyObject* idx) - { -*************** -*** 1138,1150 **** - &step, &slicelen) < 0) { - return NULL; - } -! return RangeSlice(self,start,stop+1); - } else { - PyErr_SetString(PyExc_IndexError, "Index must be int or slice"); - return NULL; - } - } - - /* Buffer list object - Definitions - */ - ---- 1148,1183 ---- - &step, &slicelen) < 0) { - return NULL; - } -! return RangeSlice(self, start, stop); - } else { - PyErr_SetString(PyExc_IndexError, "Index must be int or slice"); - return NULL; - } - } - -+ static Py_ssize_t -+ RangeAsSubscript(PyObject *self, PyObject *idx, PyObject *val) -+ { -+ if (PyLong_Check(idx)) { -+ long n = PyLong_AsLong(idx); -+ return RangeAsItem(self, n, val); -+ } else if (PySlice_Check(idx)) { -+ Py_ssize_t start, stop, step, slicelen; -+ -+ if (PySlice_GetIndicesEx((PySliceObject *)idx, -+ ((RangeObject *)(self))->end-((RangeObject *)(self))->start+1, -+ &start, &stop, -+ &step, &slicelen) < 0) { -+ return -1; -+ } -+ return RangeAsSlice(self, start, stop, val); -+ } else { -+ PyErr_SetString(PyExc_IndexError, "Index must be int or slice"); -+ return -1; -+ } -+ } -+ -+ - /* Buffer list object - Definitions - */ - -*** ../vim-7.3.306/src/version.c 2011-09-14 14:43:21.000000000 +0200 ---- src/version.c 2011-09-14 14:58:16.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 307, - /**/ - --- -The process for understanding customers primarily involves sitting around with -other marketing people and talking about what you would to if you were dumb -enough to be a customer. - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.308 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.308 -Problem: Writing to 'verbosefile' has problems, e.g. for :highlight. -Solution: Do not use a separate verbose_write() function but write with the - same code that does redirecting. (Yasuhiro Matsumoto) -Files: src/message.c - - -*** ../vim-7.3.307/src/message.c 2011-08-17 20:33:18.000000000 +0200 ---- src/message.c 2011-09-14 15:32:57.000000000 +0200 -*************** -*** 39,45 **** - static void msg_screen_putchar __ARGS((int c, int attr)); - static int msg_check_screen __ARGS((void)); - static void redir_write __ARGS((char_u *s, int maxlen)); -- static void verbose_write __ARGS((char_u *s, int maxlen)); - #ifdef FEAT_CON_DIALOG - static char_u *msg_show_console_dialog __ARGS((char_u *message, char_u *buttons, int dfltbutton)); - static int confirm_msg_used = FALSE; /* displaying confirm_msg */ ---- 39,44 ---- -*************** -*** 58,63 **** ---- 57,65 ---- - static struct msg_hist *last_msg_hist = NULL; - static int msg_hist_len = 0; - -+ static FILE *verbose_fd = NULL; -+ static int verbose_did_open = FALSE; -+ - /* - * When writing messages to the screen, there are many different situations. - * A number of variables is used to remember the current state: -*************** -*** 1551,1557 **** - #ifdef FEAT_MBYTE - if (has_mbyte && !IS_SPECIAL(c)) - { -! int len = (*mb_ptr2len)(str); - - /* For multi-byte characters check for an illegal byte. */ - if (has_mbyte && MB_BYTE2LEN(*str) > len) ---- 1553,1559 ---- - #ifdef FEAT_MBYTE - if (has_mbyte && !IS_SPECIAL(c)) - { -! int len = (*mb_ptr2len)(str); - - /* For multi-byte characters check for an illegal byte. */ - if (has_mbyte && MB_BYTE2LEN(*str) > len) -*************** -*** 1560,1569 **** - *sp = str + 1; - return buf; - } -! /* Since 'special' is TRUE the multi-byte character 'c' will be -! * processed by get_special_key_name() */ -! c = (*mb_ptr2char)(str); -! *sp = str + len; - } - else - #endif ---- 1562,1571 ---- - *sp = str + 1; - return buf; - } -! /* Since 'special' is TRUE the multi-byte character 'c' will be -! * processed by get_special_key_name() */ -! c = (*mb_ptr2char)(str); -! *sp = str + len; - } - else - #endif -*************** -*** 3065,3076 **** - if (redir_off) - return; - -! /* -! * If 'verbosefile' is set write message in that file. -! * Must come before the rest because of updating "msg_col". -! */ -! if (*p_vfile != NUL) -! verbose_write(s, maxlen); - - if (redirecting()) - { ---- 3067,3075 ---- - if (redir_off) - return; - -! /* If 'verbosefile' is set prepare for writing in that file. */ -! if (*p_vfile != NUL && verbose_fd == NULL) -! verbose_open(); - - if (redirecting()) - { -*************** -*** 3084,3092 **** - write_reg_contents(redir_reg, (char_u *)" ", -1, TRUE); - else if (redir_vname) - var_redir_str((char_u *)" ", -1); -! else if (redir_fd) - #endif - fputs(" ", redir_fd); - ++cur_col; - } - } ---- 3083,3094 ---- - write_reg_contents(redir_reg, (char_u *)" ", -1, TRUE); - else if (redir_vname) - var_redir_str((char_u *)" ", -1); -! else - #endif -+ if (redir_fd != NULL) - fputs(" ", redir_fd); -+ if (verbose_fd != NULL) -+ fputs(" ", verbose_fd); - ++cur_col; - } - } -*************** -*** 3098,3110 **** - var_redir_str(s, maxlen); - #endif - -! /* Adjust the current column */ - while (*s != NUL && (maxlen < 0 || (int)(s - str) < maxlen)) - { - #ifdef FEAT_EVAL -! if (!redir_reg && !redir_vname && redir_fd != NULL) - #endif -! putc(*s, redir_fd); - if (*s == '\r' || *s == '\n') - cur_col = 0; - else if (*s == '\t') ---- 3100,3115 ---- - var_redir_str(s, maxlen); - #endif - -! /* Write and adjust the current column. */ - while (*s != NUL && (maxlen < 0 || (int)(s - str) < maxlen)) - { - #ifdef FEAT_EVAL -! if (!redir_reg && !redir_vname) - #endif -! if (redir_fd != NULL) -! putc(*s, redir_fd); -! if (verbose_fd != NULL) -! putc(*s, verbose_fd); - if (*s == '\r' || *s == '\n') - cur_col = 0; - else if (*s == '\t') -*************** -*** 3122,3128 **** - int - redirecting() - { -! return redir_fd != NULL - #ifdef FEAT_EVAL - || redir_reg || redir_vname - #endif ---- 3127,3133 ---- - int - redirecting() - { -! return redir_fd != NULL || *p_vfile != NUL - #ifdef FEAT_EVAL - || redir_reg || redir_vname - #endif -*************** -*** 3180,3188 **** - cmdline_row = msg_row; - } - -- static FILE *verbose_fd = NULL; -- static int verbose_did_open = FALSE; -- - /* - * Called when 'verbosefile' is set: stop writing to the file. - */ ---- 3185,3190 ---- -*************** -*** 3220,3268 **** - } - - /* -- * Write a string to 'verbosefile'. -- * When "maxlen" is -1 write the whole string, otherwise up to "maxlen" bytes. -- */ -- static void -- verbose_write(str, maxlen) -- char_u *str; -- int maxlen; -- { -- char_u *s = str; -- static int cur_col = 0; -- -- /* Open the file when called the first time. */ -- if (verbose_fd == NULL) -- verbose_open(); -- -- if (verbose_fd != NULL) -- { -- /* If the string doesn't start with CR or NL, go to msg_col */ -- if (*s != '\n' && *s != '\r') -- { -- while (cur_col < msg_col) -- { -- fputs(" ", verbose_fd); -- ++cur_col; -- } -- } -- -- /* Adjust the current column */ -- while (*s != NUL && (maxlen < 0 || (int)(s - str) < maxlen)) -- { -- putc(*s, verbose_fd); -- if (*s == '\r' || *s == '\n') -- cur_col = 0; -- else if (*s == '\t') -- cur_col += (8 - cur_col % 8); -- else -- ++cur_col; -- ++s; -- } -- } -- } -- -- /* - * Give a warning message (for searching). - * Use 'w' highlighting and may repeat the message after redrawing - */ ---- 3222,3227 ---- -*** ../vim-7.3.307/src/version.c 2011-09-14 15:01:54.000000000 +0200 ---- src/version.c 2011-09-14 15:38:31.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 308, - /**/ - --- -The average life of an organization chart is six months. You can safely -ignore any order from your boss that would take six months to complete. - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.309 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.309 (after 7.3.307) -Problem: Warnings for pointer types. -Solution: Change PySliceObject to PyObject. -Files: src/if_python3.c - - -*** ../vim-7.3.308/src/if_python3.c 2011-09-14 15:01:54.000000000 +0200 ---- src/if_python3.c 2011-09-14 15:30:45.000000000 +0200 -*************** -*** 1030,1036 **** - } else if (PySlice_Check(idx)) { - Py_ssize_t start, stop, step, slicelen; - -! if (PySlice_GetIndicesEx((PySliceObject *)idx, - (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count+1, - &start, &stop, - &step, &slicelen) < 0) { ---- 1030,1036 ---- - } else if (PySlice_Check(idx)) { - Py_ssize_t start, stop, step, slicelen; - -! if (PySlice_GetIndicesEx((PyObject *)idx, - (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count+1, - &start, &stop, - &step, &slicelen) < 0) { -*************** -*** 1054,1060 **** - } else if (PySlice_Check(idx)) { - Py_ssize_t start, stop, step, slicelen; - -! if (PySlice_GetIndicesEx((PySliceObject *)idx, - (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count+1, - &start, &stop, - &step, &slicelen) < 0) { ---- 1054,1060 ---- - } else if (PySlice_Check(idx)) { - Py_ssize_t start, stop, step, slicelen; - -! if (PySlice_GetIndicesEx((PyObject *)idx, - (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count+1, - &start, &stop, - &step, &slicelen) < 0) { -*************** -*** 1142,1148 **** - } else if (PySlice_Check(idx)) { - Py_ssize_t start, stop, step, slicelen; - -! if (PySlice_GetIndicesEx((PySliceObject *)idx, - ((RangeObject *)(self))->end-((RangeObject *)(self))->start+1, - &start, &stop, - &step, &slicelen) < 0) { ---- 1142,1148 ---- - } else if (PySlice_Check(idx)) { - Py_ssize_t start, stop, step, slicelen; - -! if (PySlice_GetIndicesEx((PyObject *)idx, - ((RangeObject *)(self))->end-((RangeObject *)(self))->start+1, - &start, &stop, - &step, &slicelen) < 0) { -*************** -*** 1164,1170 **** - } else if (PySlice_Check(idx)) { - Py_ssize_t start, stop, step, slicelen; - -! if (PySlice_GetIndicesEx((PySliceObject *)idx, - ((RangeObject *)(self))->end-((RangeObject *)(self))->start+1, - &start, &stop, - &step, &slicelen) < 0) { ---- 1164,1170 ---- - } else if (PySlice_Check(idx)) { - Py_ssize_t start, stop, step, slicelen; - -! if (PySlice_GetIndicesEx((PyObject *)idx, - ((RangeObject *)(self))->end-((RangeObject *)(self))->start+1, - &start, &stop, - &step, &slicelen) < 0) { -*** ../vim-7.3.308/src/version.c 2011-09-14 15:39:26.000000000 +0200 ---- src/version.c 2011-09-14 15:40:17.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 309, - /**/ - --- -Never enter the boss's office unless it's absolutely necessary. Every boss -saves one corner of the desk for useless assignments that are doled out like -Halloween candy to each visitor. - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.310 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.310 -Problem: Code not following Vim style. -Solution: Fix the style. (Elias Diem) -Files: src/gui_photon.c - - -*** ../vim-7.3.309/src/gui_photon.c 2011-09-07 19:08:57.000000000 +0200 ---- src/gui_photon.c 2011-09-14 16:01:55.000000000 +0200 -*************** -*** 477,483 **** - } - #endif - -! for(i = 0; special_keys[i].key_sym != 0; i++) - { - if (special_keys[i].key_sym == key->key_cap) - { ---- 477,483 ---- - } - #endif - -! for (i = 0; special_keys[i].key_sym != 0; i++) - { - if (special_keys[i].key_sym == key->key_cap) - { -*************** -*** 758,764 **** - if (damage->next != NULL) - damage = damage->next; - -! while(damage != NULL) - { - r = &damage->rect; - gui_redraw( ---- 758,764 ---- - if (damage->next != NULL) - damage = damage->next; - -! while (damage != NULL) - { - r = &damage->rect; - gui_redraw( -*************** -*** 798,809 **** - - /* This is used for pulldown/popup menus and also toolbar buttons */ - static int -! gui_ph_handle_menu( PtWidget_t *widget, void *data, PtCallbackInfo_t *info ) - { -! if( data != NULL ) - { - vimmenu_T *menu = (vimmenu_T *) data; -! gui_menu_cb( menu ); - } - return Pt_CONTINUE; - } ---- 798,809 ---- - - /* This is used for pulldown/popup menus and also toolbar buttons */ - static int -! gui_ph_handle_menu(PtWidget_t *widget, void *data, PtCallbackInfo_t *info) - { -! if (data != NULL) - { - vimmenu_T *menu = (vimmenu_T *) data; -! gui_menu_cb(menu); - } - return Pt_CONTINUE; - } -*************** -*** 813,821 **** - gui_ph_handle_menu_unrealized( - PtWidget_t *widget, - void *data, -! PtCallbackInfo_t *info ) - { -! PtGiveFocus( gui.vimTextArea, NULL ); - return Pt_CONTINUE; - } - ---- 813,821 ---- - gui_ph_handle_menu_unrealized( - PtWidget_t *widget, - void *data, -! PtCallbackInfo_t *info) - { -! PtGiveFocus(gui.vimTextArea, NULL); - return Pt_CONTINUE; - } - -*************** -*** 823,831 **** - gui_ph_handle_window_open( - PtWidget_t *widget, - void *data, -! PtCallbackInfo_t *info ) - { -! gui_set_shellsize( FALSE, TRUE, RESIZE_BOTH ); - return Pt_CONTINUE; - } - ---- 823,831 ---- - gui_ph_handle_window_open( - PtWidget_t *widget, - void *data, -! PtCallbackInfo_t *info) - { -! gui_set_shellsize(FALSE, TRUE, RESIZE_BOTH); - return Pt_CONTINUE; - } - -*************** -*** 836,909 **** - - /* TODO: Set a clipping rect? */ - static void -! gui_ph_draw_start( void ) - { - PhGC_t *gc; - - gc = PgGetGC(); -! PgSetRegion( PtWidgetRid( PtFindDisjoint( gui.vimTextArea ) ) ); -! PgClearClippingsCx( gc ); -! PgClearTranslationCx( gc ); - -! PtWidgetOffset( gui.vimTextArea, &gui_ph_raw_offset ); -! PhTranslatePoint( &gui_ph_raw_offset, PtWidgetPos( gui.vimTextArea, NULL ) ); - -! PgSetTranslation( &gui_ph_raw_offset, Pg_RELATIVE ); - } - - static void -! gui_ph_draw_end( void ) - { - gui_ph_raw_offset.x = -gui_ph_raw_offset.x; - gui_ph_raw_offset.y = -gui_ph_raw_offset.y; -! PgSetTranslation( &gui_ph_raw_offset, Pg_RELATIVE ); - } - - #ifdef USE_PANEL_GROUP - static vimmenu_T * -! gui_ph_find_buffer_item( char_u *name ) - { - vimmenu_T *top_level = root_menu; - vimmenu_T *items = NULL; - -! while( top_level != NULL && -! ( STRCMP( top_level->dname, "Buffers" ) != 0 ) ) - top_level = top_level->next; - -! if( top_level != NULL ) - { - items = top_level->children; - -! while( items != NULL && -! ( STRCMP( items->dname, name ) != 0 ) ) - items = items->next; - } - return items; - } - - static void -! gui_ph_pg_set_buffer_num( int_u buf_num ) - { - int i; - char search[16]; - char *mark; - -! if( gui.vimTextArea == NULL || buf_num == 0 ) - return; - - search[0] = '('; -! ultoa( buf_num, &search[1], 10 ); -! STRCAT( search, ")" ); - -! for( i = 0; i < num_panels; i++ ) - { - /* find the last "(" in the panel title and see if the buffer - * number in the title matches the one we're looking for */ -! mark = STRRCHR( panel_titles[ i ], '(' ); -! if( mark != NULL && STRCMP( mark, search ) == 0 ) - { -! PtSetResource( gui.vimPanelGroup, Pt_ARG_PG_CURRENT_INDEX, -! i, 0 ); - } - } - } ---- 836,909 ---- - - /* TODO: Set a clipping rect? */ - static void -! gui_ph_draw_start(void) - { - PhGC_t *gc; - - gc = PgGetGC(); -! PgSetRegion(PtWidgetRid(PtFindDisjoint(gui.vimTextArea))); -! PgClearClippingsCx(gc); -! PgClearTranslationCx(gc); - -! PtWidgetOffset(gui.vimTextArea, &gui_ph_raw_offset); -! PhTranslatePoint(&gui_ph_raw_offset, PtWidgetPos(gui.vimTextArea, NULL)); - -! PgSetTranslation(&gui_ph_raw_offset, Pg_RELATIVE); - } - - static void -! gui_ph_draw_end(void) - { - gui_ph_raw_offset.x = -gui_ph_raw_offset.x; - gui_ph_raw_offset.y = -gui_ph_raw_offset.y; -! PgSetTranslation(&gui_ph_raw_offset, Pg_RELATIVE); - } - - #ifdef USE_PANEL_GROUP - static vimmenu_T * -! gui_ph_find_buffer_item(char_u *name) - { - vimmenu_T *top_level = root_menu; - vimmenu_T *items = NULL; - -! while (top_level != NULL && -! (STRCMP(top_level->dname, "Buffers") != 0)) - top_level = top_level->next; - -! if (top_level != NULL) - { - items = top_level->children; - -! while (items != NULL && -! (STRCMP(items->dname, name) != 0)) - items = items->next; - } - return items; - } - - static void -! gui_ph_pg_set_buffer_num(int_u buf_num) - { - int i; - char search[16]; - char *mark; - -! if (gui.vimTextArea == NULL || buf_num == 0) - return; - - search[0] = '('; -! ultoa(buf_num, &search[1], 10); -! STRCAT(search, ")"); - -! for (i = 0; i < num_panels; i++) - { - /* find the last "(" in the panel title and see if the buffer - * number in the title matches the one we're looking for */ -! mark = STRRCHR(panel_titles[ i ], '('); -! if (mark != NULL && STRCMP(mark, search) == 0) - { -! PtSetResource(gui.vimPanelGroup, Pt_ARG_PG_CURRENT_INDEX, -! i, 0); - } - } - } -*************** -*** 912,930 **** - gui_ph_handle_pg_change( - PtWidget_t *widget, - void *data, -! PtCallbackInfo_t *info ) - { - vimmenu_T *menu; - PtPanelGroupCallback_t *panel; - -! if( info->event != NULL ) - { - panel = info->cbdata; -! if( panel->new_panel != NULL ) - { -! menu = gui_ph_find_buffer_item( panel->new_panel ); -! if( menu ) -! gui_menu_cb( menu ); - } - } - return Pt_CONTINUE; ---- 912,930 ---- - gui_ph_handle_pg_change( - PtWidget_t *widget, - void *data, -! PtCallbackInfo_t *info) - { - vimmenu_T *menu; - PtPanelGroupCallback_t *panel; - -! if (info->event != NULL) - { - panel = info->cbdata; -! if (panel->new_panel != NULL) - { -! menu = gui_ph_find_buffer_item(panel->new_panel); -! if (menu) -! gui_menu_cb(menu); - } - } - return Pt_CONTINUE; -*************** -*** 935,951 **** - short *top, - short *bottom, - short *left, -! short *right ) - { - unsigned short abs_raw_x, abs_raw_y, abs_panel_x, abs_panel_y; - const unsigned short *margin_top, *margin_bottom; - const unsigned short *margin_left, *margin_right; - -! PtGetAbsPosition( gui.vimTextArea, &abs_raw_x, &abs_raw_y ); -! PtGetAbsPosition( gui.vimPanelGroup, &abs_panel_x, &abs_panel_y ); - -! PtGetResource( gui.vimPanelGroup, Pt_ARG_MARGIN_RIGHT, &margin_right, 0 ); -! PtGetResource( gui.vimPanelGroup, Pt_ARG_MARGIN_BOTTOM, &margin_bottom, 0 ); - - abs_raw_x -= abs_panel_x; - abs_raw_y -= abs_panel_y; ---- 935,951 ---- - short *top, - short *bottom, - short *left, -! short *right) - { - unsigned short abs_raw_x, abs_raw_y, abs_panel_x, abs_panel_y; - const unsigned short *margin_top, *margin_bottom; - const unsigned short *margin_left, *margin_right; - -! PtGetAbsPosition(gui.vimTextArea, &abs_raw_x, &abs_raw_y); -! PtGetAbsPosition(gui.vimPanelGroup, &abs_panel_x, &abs_panel_y); - -! PtGetResource(gui.vimPanelGroup, Pt_ARG_MARGIN_RIGHT, &margin_right, 0); -! PtGetResource(gui.vimPanelGroup, Pt_ARG_MARGIN_BOTTOM, &margin_bottom, 0); - - abs_raw_x -= abs_panel_x; - abs_raw_y -= abs_panel_y; -*************** -*** 959,979 **** - - /* Used for the tabs for PtPanelGroup */ - static int -! gui_ph_is_buffer_item( vimmenu_T *menu, vimmenu_T *parent ) - { - char *mark; - -! if( STRCMP( parent->dname, "Buffers" ) == 0 ) - { - /* Look for '(' digits ')' */ -! mark = vim_strchr( menu->dname, '(' ); -! if( mark != NULL ) - { - mark++; -! while( isdigit( *mark ) ) - mark++; - -! if( *mark == ')' ) - return TRUE; - } - } ---- 959,979 ---- - - /* Used for the tabs for PtPanelGroup */ - static int -! gui_ph_is_buffer_item(vimmenu_T *menu, vimmenu_T *parent) - { - char *mark; - -! if (STRCMP(parent->dname, "Buffers") == 0) - { - /* Look for '(' digits ')' */ -! mark = vim_strchr(menu->dname, '('); -! if (mark != NULL) - { - mark++; -! while (isdigit(*mark)) - mark++; - -! if (*mark == ')') - return TRUE; - } - } -*************** -*** 981,1043 **** - } - - static void -! gui_ph_pg_add_buffer(char *name ) - { - char **new_titles = NULL; - -! new_titles = (char **) alloc( ( num_panels + 1 ) * sizeof( char ** ) ); -! if( new_titles != NULL ) - { -! if( num_panels > 0 ) -! memcpy( new_titles, panel_titles, num_panels * sizeof( char ** ) ); - - new_titles[ num_panels++ ] = name; - -! PtSetResource( gui.vimPanelGroup, Pt_ARG_PG_PANEL_TITLES, new_titles, -! num_panels ); - -! vim_free( panel_titles ); - panel_titles = new_titles; - } - } - - static void -! gui_ph_pg_remove_buffer( char *name ) - { - int i; - char **new_titles = NULL; - - /* If there is only 1 panel, we just use the temporary place holder */ -! if( num_panels > 1 ) - { -! new_titles = (char **) alloc( ( num_panels - 1 ) * sizeof( char ** ) ); -! if( new_titles != NULL ) - { - char **s = new_titles; - /* Copy all the titles except the one we're removing */ -! for( i = 0; i < num_panels; i++ ) - { -! if( STRCMP( panel_titles[ i ], name ) != 0 ) - { - *s++ = panel_titles[ i ]; - } - } - num_panels--; - -! PtSetResource( gui.vimPanelGroup, Pt_ARG_PG_PANEL_TITLES, new_titles, -! num_panels ); - -! vim_free( panel_titles ); - panel_titles = new_titles; - } - } - else - { - num_panels--; -! PtSetResource( gui.vimPanelGroup, Pt_ARG_PG_PANEL_TITLES, &empty_title, -! 1 ); - -! vim_free( panel_titles ); - panel_titles = NULL; - } - } ---- 981,1043 ---- - } - - static void -! gui_ph_pg_add_buffer(char *name) - { - char **new_titles = NULL; - -! new_titles = (char **) alloc((num_panels + 1) * sizeof(char **)); -! if (new_titles != NULL) - { -! if (num_panels > 0) -! memcpy(new_titles, panel_titles, num_panels * sizeof(char **)); - - new_titles[ num_panels++ ] = name; - -! PtSetResource(gui.vimPanelGroup, Pt_ARG_PG_PANEL_TITLES, new_titles, -! num_panels); - -! vim_free(panel_titles); - panel_titles = new_titles; - } - } - - static void -! gui_ph_pg_remove_buffer(char *name) - { - int i; - char **new_titles = NULL; - - /* If there is only 1 panel, we just use the temporary place holder */ -! if (num_panels > 1) - { -! new_titles = (char **) alloc((num_panels - 1) * sizeof(char **)); -! if (new_titles != NULL) - { - char **s = new_titles; - /* Copy all the titles except the one we're removing */ -! for (i = 0; i < num_panels; i++) - { -! if (STRCMP(panel_titles[ i ], name) != 0) - { - *s++ = panel_titles[ i ]; - } - } - num_panels--; - -! PtSetResource(gui.vimPanelGroup, Pt_ARG_PG_PANEL_TITLES, new_titles, -! num_panels); - -! vim_free(panel_titles); - panel_titles = new_titles; - } - } - else - { - num_panels--; -! PtSetResource(gui.vimPanelGroup, Pt_ARG_PG_PANEL_TITLES, &empty_title, -! 1); - -! vim_free(panel_titles); - panel_titles = NULL; - } - } -*************** -*** 1047,1060 **** - gui_ph_handle_buffer_remove( - PtWidget_t *widget, - void *data, -! PtCallbackInfo_t *info ) - { - vimmenu_T *menu; - -! if( data != NULL ) - { - menu = (vimmenu_T *) data; -! gui_ph_pg_remove_buffer( menu->dname ); - } - - return Pt_CONTINUE; ---- 1047,1060 ---- - gui_ph_handle_buffer_remove( - PtWidget_t *widget, - void *data, -! PtCallbackInfo_t *info) - { - vimmenu_T *menu; - -! if (data != NULL) - { - menu = (vimmenu_T *) data; -! gui_ph_pg_remove_buffer(menu->dname); - } - - return Pt_CONTINUE; -*************** -*** 1062,1074 **** - #endif - - static int -! gui_ph_pane_resize( PtWidget_t *widget, void *data, PtCallbackInfo_t *info ) - { -! if( PtWidgetIsRealized( widget ) ) - { - is_ignore_draw = TRUE; -! PtStartFlux( gui.vimContainer ); -! PtContainerHold( gui.vimContainer ); - } - - return Pt_CONTINUE; ---- 1062,1074 ---- - #endif - - static int -! gui_ph_pane_resize(PtWidget_t *widget, void *data, PtCallbackInfo_t *info) - { -! if (PtWidgetIsRealized(widget)) - { - is_ignore_draw = TRUE; -! PtStartFlux(gui.vimContainer); -! PtContainerHold(gui.vimContainer); - } - - return Pt_CONTINUE; -*************** -*** 1078,1084 **** - - #ifdef FEAT_MBYTE - void -! gui_ph_encoding_changed( int new_encoding ) - { - /* Default encoding is latin1 */ - char *charset = "latin1"; ---- 1078,1084 ---- - - #ifdef FEAT_MBYTE - void -! gui_ph_encoding_changed(int new_encoding) - { - /* Default encoding is latin1 */ - char *charset = "latin1"; -*************** -*** 1094,1106 **** - { DBCS_CHS, "gb" } - }; - -! for( i = 0; i < ARRAY_LENGTH( charsets ); i++ ) - { -! if( new_encoding == charsets[ i ].encoding ) - charset = charsets[ i ].name; - } - -! charset_translate = PxTranslateSet( charset_translate, charset ); - } - #endif - ---- 1094,1106 ---- - { DBCS_CHS, "gb" } - }; - -! for (i = 0; i < ARRAY_LENGTH(charsets); i++) - { -! if (new_encoding == charsets[ i ].encoding) - charset = charsets[ i ].name; - } - -! charset_translate = PxTranslateSet(charset_translate, charset); - } - #endif - -*************** -*** 1112,1118 **** - int *argc; - char **argv; - { -! PtInit( NULL ); - } - - int ---- 1112,1118 ---- - int *argc; - char **argv; - { -! PtInit(NULL); - } - - int -*************** -*** 1124,1213 **** - PhDim_t window_size = {100, 100}; /* Arbitrary values */ - PhPoint_t pos = {0, 0}; - -! gui.event_buffer = (PhEvent_t *) alloc( EVENT_BUFFER_SIZE ); -! if( gui.event_buffer == NULL ) - return FAIL; - - /* Get a translation so we can convert from ISO Latin-1 to UTF */ -! charset_translate = PxTranslateSet( NULL, "latin1" ); - - /* The +2 is for the 1 pixel dark line on each side */ - gui.border_offset = gui.border_width = GUI_PH_MARGIN + 2; - - /* Handle close events ourselves */ -! PtSetArg( &args[ n++ ], Pt_ARG_WINDOW_MANAGED_FLAGS, Pt_FALSE, Ph_WM_CLOSE ); -! PtSetArg( &args[ n++ ], Pt_ARG_WINDOW_NOTIFY_FLAGS, Pt_TRUE, -! Ph_WM_CLOSE | Ph_WM_RESIZE | Ph_WM_FOCUS ); -! PtSetArg( &args[ n++ ], Pt_ARG_DIM, &window_size, 0 ); -! gui.vimWindow = PtCreateWidget( PtWindow, NULL, n, args ); -! if( gui.vimWindow == NULL ) - return FAIL; - -! PtAddCallback( gui.vimWindow, Pt_CB_WINDOW, gui_ph_handle_window_cb, NULL ); -! PtAddCallback( gui.vimWindow, Pt_CB_WINDOW_OPENING, -! gui_ph_handle_window_open, NULL ); - - n = 0; -! PtSetArg( &args[ n++ ], Pt_ARG_ANCHOR_FLAGS, Pt_ANCHOR_ALL, Pt_IS_ANCHORED ); -! PtSetArg( &args[ n++ ], Pt_ARG_DIM, &window_size, 0 ); -! PtSetArg( &args[ n++ ], Pt_ARG_POS, &pos, 0 ); - - #ifdef USE_PANEL_GROUP - /* Put in a temprary place holder title */ -! PtSetArg( &args[ n++ ], Pt_ARG_PG_PANEL_TITLES, &empty_title, 1 ); - -! gui.vimPanelGroup = PtCreateWidget( PtPanelGroup, gui.vimWindow, n, args ); -! if( gui.vimPanelGroup == NULL ) - return FAIL; - -! PtAddCallback( gui.vimPanelGroup, Pt_CB_PG_PANEL_SWITCHING, -! gui_ph_handle_pg_change, NULL ); - #else - /* Turn off all edge decorations */ -! PtSetArg( &args[ n++ ], Pt_ARG_BASIC_FLAGS, Pt_FALSE, Pt_ALL ); -! PtSetArg( &args[ n++ ], Pt_ARG_BEVEL_WIDTH, 0, 0 ); -! PtSetArg( &args[ n++ ], Pt_ARG_MARGIN_WIDTH, 0, 0 ); -! PtSetArg( &args[ n++ ], Pt_ARG_MARGIN_HEIGHT, 0, 0 ); -! PtSetArg( &args[ n++ ], Pt_ARG_CONTAINER_FLAGS, Pt_TRUE, Pt_AUTO_EXTENT ); - -! gui.vimContainer = PtCreateWidget( PtPane, gui.vimWindow, n, args ); -! if( gui.vimContainer == NULL ) - return FAIL; - -! PtAddCallback( gui.vimContainer, Pt_CB_RESIZE, gui_ph_pane_resize, NULL ); - #endif - - /* Size for the text area is set in gui_mch_set_text_area_pos */ - n = 0; - -! PtSetArg( &args[ n++ ], Pt_ARG_RAW_DRAW_F, gui_ph_handle_raw_draw, 1 ); -! PtSetArg( &args[ n++ ], Pt_ARG_BEVEL_WIDTH, GUI_PH_MARGIN, 0 ); - /* - * Using focus render also causes the whole widget to be redrawn - * whenever it changes focus, which is very annoying :p - */ -! PtSetArg( &args[ n++ ], Pt_ARG_FLAGS, Pt_TRUE, -! Pt_GETS_FOCUS | Pt_HIGHLIGHTED ); - #ifndef FEAT_MOUSESHAPE -! PtSetArg( &args[ n++ ], Pt_ARG_CURSOR_TYPE, GUI_PH_MOUSE_TYPE, 0 ); -! PtSetArg( &args[ n++ ], Pt_ARG_CURSOR_COLOR, gui_ph_mouse_color, 0 ); - #endif - -! gui.vimTextArea = PtCreateWidget( PtRaw, Pt_DFLT_PARENT, n, args ); -! if( gui.vimTextArea == NULL) - return FAIL; - - /* TODO: use PtAddEventHandlers instead? */ - /* Not using Ph_EV_BUT_REPEAT because vim wouldn't use it anyway */ -! PtAddEventHandler( gui.vimTextArea, - Ph_EV_BUT_PRESS | Ph_EV_BUT_RELEASE | Ph_EV_PTR_MOTION_BUTTON, -! gui_ph_handle_mouse, NULL ); -! PtAddEventHandler( gui.vimTextArea, Ph_EV_KEY, -! gui_ph_handle_keyboard, NULL ); -! PtAddCallback( gui.vimTextArea, Pt_CB_GOT_FOCUS, -! gui_ph_handle_focus, NULL ); -! PtAddCallback( gui.vimTextArea, Pt_CB_LOST_FOCUS, -! gui_ph_handle_focus, NULL ); - - /* - * Now that the text area widget has been created, set up the colours, ---- 1124,1213 ---- - PhDim_t window_size = {100, 100}; /* Arbitrary values */ - PhPoint_t pos = {0, 0}; - -! gui.event_buffer = (PhEvent_t *) alloc(EVENT_BUFFER_SIZE); -! if (gui.event_buffer == NULL) - return FAIL; - - /* Get a translation so we can convert from ISO Latin-1 to UTF */ -! charset_translate = PxTranslateSet(NULL, "latin1"); - - /* The +2 is for the 1 pixel dark line on each side */ - gui.border_offset = gui.border_width = GUI_PH_MARGIN + 2; - - /* Handle close events ourselves */ -! PtSetArg(&args[ n++ ], Pt_ARG_WINDOW_MANAGED_FLAGS, Pt_FALSE, Ph_WM_CLOSE); -! PtSetArg(&args[ n++ ], Pt_ARG_WINDOW_NOTIFY_FLAGS, Pt_TRUE, -! Ph_WM_CLOSE | Ph_WM_RESIZE | Ph_WM_FOCUS); -! PtSetArg(&args[ n++ ], Pt_ARG_DIM, &window_size, 0); -! gui.vimWindow = PtCreateWidget(PtWindow, NULL, n, args); -! if (gui.vimWindow == NULL) - return FAIL; - -! PtAddCallback(gui.vimWindow, Pt_CB_WINDOW, gui_ph_handle_window_cb, NULL); -! PtAddCallback(gui.vimWindow, Pt_CB_WINDOW_OPENING, -! gui_ph_handle_window_open, NULL); - - n = 0; -! PtSetArg(&args[ n++ ], Pt_ARG_ANCHOR_FLAGS, Pt_ANCHOR_ALL, Pt_IS_ANCHORED); -! PtSetArg(&args[ n++ ], Pt_ARG_DIM, &window_size, 0); -! PtSetArg(&args[ n++ ], Pt_ARG_POS, &pos, 0); - - #ifdef USE_PANEL_GROUP - /* Put in a temprary place holder title */ -! PtSetArg(&args[ n++ ], Pt_ARG_PG_PANEL_TITLES, &empty_title, 1); - -! gui.vimPanelGroup = PtCreateWidget(PtPanelGroup, gui.vimWindow, n, args); -! if (gui.vimPanelGroup == NULL) - return FAIL; - -! PtAddCallback(gui.vimPanelGroup, Pt_CB_PG_PANEL_SWITCHING, -! gui_ph_handle_pg_change, NULL); - #else - /* Turn off all edge decorations */ -! PtSetArg(&args[ n++ ], Pt_ARG_BASIC_FLAGS, Pt_FALSE, Pt_ALL); -! PtSetArg(&args[ n++ ], Pt_ARG_BEVEL_WIDTH, 0, 0); -! PtSetArg(&args[ n++ ], Pt_ARG_MARGIN_WIDTH, 0, 0); -! PtSetArg(&args[ n++ ], Pt_ARG_MARGIN_HEIGHT, 0, 0); -! PtSetArg(&args[ n++ ], Pt_ARG_CONTAINER_FLAGS, Pt_TRUE, Pt_AUTO_EXTENT); - -! gui.vimContainer = PtCreateWidget(PtPane, gui.vimWindow, n, args); -! if (gui.vimContainer == NULL) - return FAIL; - -! PtAddCallback(gui.vimContainer, Pt_CB_RESIZE, gui_ph_pane_resize, NULL); - #endif - - /* Size for the text area is set in gui_mch_set_text_area_pos */ - n = 0; - -! PtSetArg(&args[ n++ ], Pt_ARG_RAW_DRAW_F, gui_ph_handle_raw_draw, 1); -! PtSetArg(&args[ n++ ], Pt_ARG_BEVEL_WIDTH, GUI_PH_MARGIN, 0); - /* - * Using focus render also causes the whole widget to be redrawn - * whenever it changes focus, which is very annoying :p - */ -! PtSetArg(&args[ n++ ], Pt_ARG_FLAGS, Pt_TRUE, -! Pt_GETS_FOCUS | Pt_HIGHLIGHTED); - #ifndef FEAT_MOUSESHAPE -! PtSetArg(&args[ n++ ], Pt_ARG_CURSOR_TYPE, GUI_PH_MOUSE_TYPE, 0); -! PtSetArg(&args[ n++ ], Pt_ARG_CURSOR_COLOR, gui_ph_mouse_color, 0); - #endif - -! gui.vimTextArea = PtCreateWidget(PtRaw, Pt_DFLT_PARENT, n, args); -! if (gui.vimTextArea == NULL) - return FAIL; - - /* TODO: use PtAddEventHandlers instead? */ - /* Not using Ph_EV_BUT_REPEAT because vim wouldn't use it anyway */ -! PtAddEventHandler(gui.vimTextArea, - Ph_EV_BUT_PRESS | Ph_EV_BUT_RELEASE | Ph_EV_PTR_MOTION_BUTTON, -! gui_ph_handle_mouse, NULL); -! PtAddEventHandler(gui.vimTextArea, Ph_EV_KEY, -! gui_ph_handle_keyboard, NULL); -! PtAddCallback(gui.vimTextArea, Pt_CB_GOT_FOCUS, -! gui_ph_handle_focus, NULL); -! PtAddCallback(gui.vimTextArea, Pt_CB_LOST_FOCUS, -! gui_ph_handle_focus, NULL); - - /* - * Now that the text area widget has been created, set up the colours, -*************** -*** 1218,1278 **** - * Create the two timers, not as accurate as using the kernel timer - * functions, but good enough - */ -! gui_ph_timer_cursor = PtCreateWidget( PtTimer, gui.vimWindow, 0, NULL ); -! if( gui_ph_timer_cursor == NULL ) - return FAIL; - -! gui_ph_timer_timeout = PtCreateWidget( PtTimer, gui.vimWindow, 0, NULL ); -! if( gui_ph_timer_timeout == NULL ) - return FAIL; - -! PtAddCallback( gui_ph_timer_cursor, Pt_CB_TIMER_ACTIVATE, - gui_ph_handle_timer_cursor, NULL); -! PtAddCallback( gui_ph_timer_timeout, Pt_CB_TIMER_ACTIVATE, - gui_ph_handle_timer_timeout, NULL); - - #ifdef FEAT_MENU - n = 0; -! PtSetArg( &args[ n++ ], Pt_ARG_WIDTH, window_size.w, 0 ); -! PtSetArg( &args[ n++ ], Pt_ARG_ANCHOR_FLAGS, Pt_ANCHOR_LEFT_RIGHT, -! Pt_IS_ANCHORED ); -! gui.vimToolBarGroup = PtCreateWidget( PtToolbarGroup, gui.vimWindow, -! n, args ); -! if( gui.vimToolBarGroup == NULL ) - return FAIL; - -! PtAddCallback( gui.vimToolBarGroup, Pt_CB_RESIZE, -! gui_ph_handle_menu_resize, NULL ); - - n = 0; - flags = 0; -! PtSetArg( &args[ n++ ], Pt_ARG_WIDTH, window_size.w, 0 ); -! if( ! vim_strchr( p_go, GO_MENUS ) ) - { - flags |= Pt_DELAY_REALIZE; -! PtSetArg( &args[ n++ ], Pt_ARG_FLAGS, Pt_TRUE, flags ); - } -! gui.vimMenuBar = PtCreateWidget( PtMenuBar, gui.vimToolBarGroup, n, args ); -! if( gui.vimMenuBar == NULL ) - return FAIL; - - # ifdef FEAT_TOOLBAR - n = 0; - -! PtSetArg( &args[ n++ ], Pt_ARG_ANCHOR_FLAGS, -! Pt_ANCHOR_LEFT_RIGHT |Pt_TOP_ANCHORED_TOP, Pt_IS_ANCHORED ); -! PtSetArg( &args[ n++ ], Pt_ARG_RESIZE_FLAGS, Pt_TRUE, -! Pt_RESIZE_Y_AS_REQUIRED ); -! PtSetArg( &args[ n++ ], Pt_ARG_WIDTH, window_size.w, 0 ); - - flags = Pt_GETS_FOCUS; -! if( ! vim_strchr( p_go, GO_TOOLBAR ) ) - flags |= Pt_DELAY_REALIZE; - -! PtSetArg( &args[ n++ ], Pt_ARG_FLAGS, Pt_DELAY_REALIZE, flags ); - -! gui.vimToolBar = PtCreateWidget( PtToolbar, gui.vimToolBarGroup, n, args ); -! if( gui.vimToolBar == NULL ) - return FAIL; - - /* ---- 1218,1278 ---- - * Create the two timers, not as accurate as using the kernel timer - * functions, but good enough - */ -! gui_ph_timer_cursor = PtCreateWidget(PtTimer, gui.vimWindow, 0, NULL); -! if (gui_ph_timer_cursor == NULL) - return FAIL; - -! gui_ph_timer_timeout = PtCreateWidget(PtTimer, gui.vimWindow, 0, NULL); -! if (gui_ph_timer_timeout == NULL) - return FAIL; - -! PtAddCallback(gui_ph_timer_cursor, Pt_CB_TIMER_ACTIVATE, - gui_ph_handle_timer_cursor, NULL); -! PtAddCallback(gui_ph_timer_timeout, Pt_CB_TIMER_ACTIVATE, - gui_ph_handle_timer_timeout, NULL); - - #ifdef FEAT_MENU - n = 0; -! PtSetArg(&args[ n++ ], Pt_ARG_WIDTH, window_size.w, 0); -! PtSetArg(&args[ n++ ], Pt_ARG_ANCHOR_FLAGS, Pt_ANCHOR_LEFT_RIGHT, -! Pt_IS_ANCHORED); -! gui.vimToolBarGroup = PtCreateWidget(PtToolbarGroup, gui.vimWindow, -! n, args); -! if (gui.vimToolBarGroup == NULL) - return FAIL; - -! PtAddCallback(gui.vimToolBarGroup, Pt_CB_RESIZE, -! gui_ph_handle_menu_resize, NULL); - - n = 0; - flags = 0; -! PtSetArg(&args[ n++ ], Pt_ARG_WIDTH, window_size.w, 0); -! if (! vim_strchr(p_go, GO_MENUS)) - { - flags |= Pt_DELAY_REALIZE; -! PtSetArg(&args[ n++ ], Pt_ARG_FLAGS, Pt_TRUE, flags); - } -! gui.vimMenuBar = PtCreateWidget(PtMenuBar, gui.vimToolBarGroup, n, args); -! if (gui.vimMenuBar == NULL) - return FAIL; - - # ifdef FEAT_TOOLBAR - n = 0; - -! PtSetArg(&args[ n++ ], Pt_ARG_ANCHOR_FLAGS, -! Pt_ANCHOR_LEFT_RIGHT |Pt_TOP_ANCHORED_TOP, Pt_IS_ANCHORED); -! PtSetArg(&args[ n++ ], Pt_ARG_RESIZE_FLAGS, Pt_TRUE, -! Pt_RESIZE_Y_AS_REQUIRED); -! PtSetArg(&args[ n++ ], Pt_ARG_WIDTH, window_size.w, 0); - - flags = Pt_GETS_FOCUS; -! if (! vim_strchr(p_go, GO_TOOLBAR)) - flags |= Pt_DELAY_REALIZE; - -! PtSetArg(&args[ n++ ], Pt_ARG_FLAGS, Pt_DELAY_REALIZE, flags); - -! gui.vimToolBar = PtCreateWidget(PtToolbar, gui.vimToolBarGroup, n, args); -! if (gui.vimToolBar == NULL) - return FAIL; - - /* -*************** -*** 1310,1329 **** - if (gui_win_x != -1 && gui_win_y != -1) - gui_mch_set_winpos(gui_win_x, gui_win_y); - -! return (PtRealizeWidget( gui.vimWindow ) == 0) ? OK : FAIL; - } - - void - gui_mch_exit(int rc) - { -! PtDestroyWidget( gui.vimWindow ); - -! PxTranslateSet( charset_translate, NULL ); - -! vim_free( gui.event_buffer ); - - #ifdef USE_PANEL_GROUPS -! vim_free( panel_titles ); - #endif - } - ---- 1310,1329 ---- - if (gui_win_x != -1 && gui_win_y != -1) - gui_mch_set_winpos(gui_win_x, gui_win_y); - -! return (PtRealizeWidget(gui.vimWindow) == 0) ? OK : FAIL; - } - - void - gui_mch_exit(int rc) - { -! PtDestroyWidget(gui.vimWindow); - -! PxTranslateSet(charset_translate, NULL); - -! vim_free(gui.event_buffer); - - #ifdef USE_PANEL_GROUPS -! vim_free(panel_titles); - #endif - } - -*************** -*** 1333,1339 **** - /* When no events are available, photon will call this function, working is - * set to FALSE, and the gui_mch_update loop will exit. */ - static int -! exit_gui_mch_update( void *data ) - { - *(int *)data = FALSE; - return Pt_END; ---- 1333,1339 ---- - /* When no events are available, photon will call this function, working is - * set to FALSE, and the gui_mch_update loop will exit. */ - static int -! exit_gui_mch_update(void *data) - { - *(int *)data = FALSE; - return Pt_END; -*************** -*** 1344,1351 **** - { - int working = TRUE; - -! PtAppAddWorkProc( NULL, exit_gui_mch_update, &working ); -! while( ( working == TRUE ) && !vim_is_input_buf_full()) - { - PtProcessEvent(); - } ---- 1344,1351 ---- - { - int working = TRUE; - -! PtAppAddWorkProc(NULL, exit_gui_mch_update, &working); -! while ((working == TRUE) && !vim_is_input_buf_full()) - { - PtProcessEvent(); - } -*************** -*** 1356,1378 **** - { - is_timeout = FALSE; - -! if( wtime > 0 ) -! PtSetResource( gui_ph_timer_timeout, Pt_ARG_TIMER_INITIAL, wtime, 0 ); - -! while( 1 ) - { - PtProcessEvent(); -! if( input_available() ) - { -! PtSetResource( gui_ph_timer_timeout, Pt_ARG_TIMER_INITIAL, 0, 0 ); - return OK; - } -! else if( is_timeout == TRUE ) - return FAIL; - } - } - -! #if defined( FEAT_BROWSE ) || defined( PROTO ) - /* - * Put up a file requester. - * Returns the selected name in allocated memory, or NULL for Cancel. ---- 1356,1378 ---- - { - is_timeout = FALSE; - -! if (wtime > 0) -! PtSetResource(gui_ph_timer_timeout, Pt_ARG_TIMER_INITIAL, wtime, 0); - -! while (1) - { - PtProcessEvent(); -! if (input_available()) - { -! PtSetResource(gui_ph_timer_timeout, Pt_ARG_TIMER_INITIAL, 0, 0); - return OK; - } -! else if (is_timeout == TRUE) - return FAIL; - } - } - -! #if defined(FEAT_BROWSE) || defined(PROTO) - /* - * Put up a file requester. - * Returns the selected name in allocated memory, or NULL for Cancel. -*************** -*** 1398,1409 **** - char_u *open_text = NULL; - - flags = 0; -! memset( &file, 0, sizeof( file ) ); - -! default_path = alloc( MAXPATHL + 1 + NAME_MAX + 1 ); -! if( default_path != NULL ) - { -! if( saving == TRUE ) - { - /* Don't need Pt_FSR_CONFIRM_EXISTING, vim will ask anyway */ - flags |= Pt_FSR_NO_FCHECK; ---- 1398,1409 ---- - char_u *open_text = NULL; - - flags = 0; -! memset(&file, 0, sizeof(file)); - -! default_path = alloc(MAXPATHL + 1 + NAME_MAX + 1); -! if (default_path != NULL) - { -! if (saving == TRUE) - { - /* Don't need Pt_FSR_CONFIRM_EXISTING, vim will ask anyway */ - flags |= Pt_FSR_NO_FCHECK; -*************** -*** 1411,1433 **** - } - - /* combine the directory and filename into a single path */ -! if( initdir == NULL || *initdir == NUL ) - { -! mch_dirname( default_path, MAXPATHL ); - initdir = default_path; - } - else - { -! STRCPY( default_path, initdir ); - initdir = default_path; - } - -! if( default_name != NULL ) - { -! if( default_path[ STRLEN( default_path ) - 1 ] != '/' ) -! STRCAT( default_path, "/" ); - -! STRCAT( default_path, default_name ); - } - - /* TODO: add a filter? */ ---- 1411,1433 ---- - } - - /* combine the directory and filename into a single path */ -! if (initdir == NULL || *initdir == NUL) - { -! mch_dirname(default_path, MAXPATHL); - initdir = default_path; - } - else - { -! STRCPY(default_path, initdir); - initdir = default_path; - } - -! if (default_name != NULL) - { -! if (default_path[ STRLEN(default_path) - 1 ] != '/') -! STRCAT(default_path, "/"); - -! STRCAT(default_path, default_name); - } - - /* TODO: add a filter? */ -*************** -*** 1441,1495 **** - NULL, - NULL, - &file, -! flags ); - -! vim_free( default_path ); - -! if( file.ret == Pt_FSDIALOG_BTN1 ) - return vim_strsave(file.path); - } - return NULL; - } - #endif - -! #if defined( FEAT_GUI_DIALOG ) || defined( PROTO ) - static PtWidget_t *gui_ph_dialog_text = NULL; - - static int -! gui_ph_dialog_close( int button, void *data ) - { - PtModalCtrl_t *modal_ctrl = data; - char_u *dialog_text, *vim_text; - -! if( gui_ph_dialog_text != NULL ) - { -! PtGetResource( gui_ph_dialog_text, Pt_ARG_TEXT_STRING, &dialog_text, 0 ); -! PtGetResource( gui_ph_dialog_text, Pt_ARG_POINTER, &vim_text, 0 ); -! STRNCPY( vim_text, dialog_text, IOSIZE - 1 ); - } - -! PtModalUnblock( modal_ctrl, (void *) button ); - - return Pt_TRUE; - } - - static int -! gui_ph_dialog_text_enter( PtWidget_t *widget, void *data, PtCallbackInfo_t *info ) - { -! if( info->reason_subtype == Pt_EDIT_ACTIVATE ) -! gui_ph_dialog_close( 1, data ); - return Pt_CONTINUE; - } - - static int -! gui_ph_dialog_esc( PtWidget_t *widget, void *data, PtCallbackInfo_t *info ) - { - PhKeyEvent_t *key; - -! key = PhGetData( info->event ); -! if( ( key->key_flags & Pk_KF_Cap_Valid ) && ( key->key_cap == Pk_Escape ) ) - { -! gui_ph_dialog_close( 0, data ); - return Pt_CONSUME; - } - return Pt_PROCESS; ---- 1441,1495 ---- - NULL, - NULL, - &file, -! flags); - -! vim_free(default_path); - -! if (file.ret == Pt_FSDIALOG_BTN1) - return vim_strsave(file.path); - } - return NULL; - } - #endif - -! #if defined(FEAT_GUI_DIALOG) || defined(PROTO) - static PtWidget_t *gui_ph_dialog_text = NULL; - - static int -! gui_ph_dialog_close(int button, void *data) - { - PtModalCtrl_t *modal_ctrl = data; - char_u *dialog_text, *vim_text; - -! if (gui_ph_dialog_text != NULL) - { -! PtGetResource(gui_ph_dialog_text, Pt_ARG_TEXT_STRING, &dialog_text, 0); -! PtGetResource(gui_ph_dialog_text, Pt_ARG_POINTER, &vim_text, 0); -! STRNCPY(vim_text, dialog_text, IOSIZE - 1); - } - -! PtModalUnblock(modal_ctrl, (void *) button); - - return Pt_TRUE; - } - - static int -! gui_ph_dialog_text_enter(PtWidget_t *widget, void *data, PtCallbackInfo_t *info) - { -! if (info->reason_subtype == Pt_EDIT_ACTIVATE) -! gui_ph_dialog_close(1, data); - return Pt_CONTINUE; - } - - static int -! gui_ph_dialog_esc(PtWidget_t *widget, void *data, PtCallbackInfo_t *info) - { - PhKeyEvent_t *key; - -! key = PhGetData(info->event); -! if ((key->key_flags & Pk_KF_Cap_Valid) && (key->key_cap == Pk_Escape)) - { -! gui_ph_dialog_close(0, data); - return Pt_CONSUME; - } - return Pt_PROCESS; -*************** -*** 1518,1557 **** - - button_count = len = i = 0; - -! if( buttons == NULL || *buttons == NUL ) - return -1; - - /* There is one less separator than buttons, so bump up the button count */ - button_count = 1; - - /* Count string length and number of seperators */ -! for( str = buttons; *str; str++ ) - { - len++; -! if( *str == DLG_BUTTON_SEP ) - button_count++; - } - -! if ( title == NULL ) - title = "Vim"; - -! buttons_copy = alloc( len + 1 ); -! button_array = (char_u **) alloc( button_count * sizeof( char_u * ) ); -! if( buttons_copy != NULL && button_array != NULL ) - { -! STRCPY( buttons_copy, buttons ); - - /* - * Convert DLG_BUTTON_SEP into NUL's and fill in - * button_array with the pointer to each NUL terminated string - */ - str = buttons_copy; -! for( i = 0; i < button_count; i++ ) - { - button_array[ i ] = str; -! for( ; *str; str++ ) - { -! if( *str == DLG_BUTTON_SEP ) - { - *str++ = NUL; - break; ---- 1518,1557 ---- - - button_count = len = i = 0; - -! if (buttons == NULL || *buttons == NUL) - return -1; - - /* There is one less separator than buttons, so bump up the button count */ - button_count = 1; - - /* Count string length and number of seperators */ -! for (str = buttons; *str; str++) - { - len++; -! if (*str == DLG_BUTTON_SEP) - button_count++; - } - -! if (title == NULL) - title = "Vim"; - -! buttons_copy = alloc(len + 1); -! button_array = (char_u **) alloc(button_count * sizeof(char_u *)); -! if (buttons_copy != NULL && button_array != NULL) - { -! STRCPY(buttons_copy, buttons); - - /* - * Convert DLG_BUTTON_SEP into NUL's and fill in - * button_array with the pointer to each NUL terminated string - */ - str = buttons_copy; -! for (i = 0; i < button_count; i++) - { - button_array[ i ] = str; -! for (; *str; str++) - { -! if (*str == DLG_BUTTON_SEP) - { - *str++ = NUL; - break; -*************** -*** 1565,1571 **** - NULL, - message, NULL, - button_count, (const char **) button_array, NULL, -! default_button, 0, Pt_MODAL ); - #else - /* Writing the dialog ourselves lets us add extra features, like - * trapping the escape key and returning 0 to vim */ ---- 1565,1571 ---- - NULL, - message, NULL, - button_count, (const char **) button_array, NULL, -! default_button, 0, Pt_MODAL); - #else - /* Writing the dialog ourselves lets us add extra features, like - * trapping the escape key and returning 0 to vim */ -*************** -*** 1576,1607 **** - PtModalCtrl_t modal_ctrl; - PtDialogInfo_t di; - -! memset( &di, 0, sizeof( di ) ); -! memset( &modal_ctrl, 0, sizeof( modal_ctrl ) ); - - n = 0; -! PtSetArg( &args[n++], Pt_ARG_GROUP_ROWS_COLS, 0, 0 ); -! PtSetArg( &args[n++], Pt_ARG_WIDTH, 350, 0 ); -! PtSetArg( &args[n++], Pt_ARG_GROUP_ORIENTATION, -! Pt_GROUP_VERTICAL, 0 ); -! PtSetArg( &args[n++], Pt_ARG_GROUP_FLAGS, -! Pt_TRUE, Pt_GROUP_NO_KEYS | Pt_GROUP_STRETCH_HORIZONTAL ); -! PtSetArg( &args[n++], Pt_ARG_CONTAINER_FLAGS, Pt_FALSE, Pt_TRUE ); -! pane = PtCreateWidget( PtGroup, NULL, n, args ); - - n = 0; -! PtSetArg( &args[n++], Pt_ARG_TEXT_STRING, message, 0 ); -! PtCreateWidget( PtLabel, pane, n, args ); - -! if( textfield != NULL ) - { - n = 0; -! PtSetArg( &args[n++], Pt_ARG_MAX_LENGTH, IOSIZE - 1, 0 ); -! PtSetArg( &args[n++], Pt_ARG_TEXT_STRING, textfield, 0 ); -! PtSetArg( &args[n++], Pt_ARG_POINTER, textfield, 0 ); -! gui_ph_dialog_text = PtCreateWidget( PtText, pane, n, args ); -! PtAddCallback( gui_ph_dialog_text, Pt_CB_ACTIVATE, -! gui_ph_dialog_text_enter, &modal_ctrl ); - } - - di.parent = gui.vimWindow; ---- 1576,1607 ---- - PtModalCtrl_t modal_ctrl; - PtDialogInfo_t di; - -! memset(&di, 0, sizeof(di)); -! memset(&modal_ctrl, 0, sizeof(modal_ctrl)); - - n = 0; -! PtSetArg(&args[n++], Pt_ARG_GROUP_ROWS_COLS, 0, 0); -! PtSetArg(&args[n++], Pt_ARG_WIDTH, 350, 0); -! PtSetArg(&args[n++], Pt_ARG_GROUP_ORIENTATION, -! Pt_GROUP_VERTICAL, 0); -! PtSetArg(&args[n++], Pt_ARG_GROUP_FLAGS, -! Pt_TRUE, Pt_GROUP_NO_KEYS | Pt_GROUP_STRETCH_HORIZONTAL); -! PtSetArg(&args[n++], Pt_ARG_CONTAINER_FLAGS, Pt_FALSE, Pt_TRUE); -! pane = PtCreateWidget(PtGroup, NULL, n, args); - - n = 0; -! PtSetArg(&args[n++], Pt_ARG_TEXT_STRING, message, 0); -! PtCreateWidget(PtLabel, pane, n, args); - -! if (textfield != NULL) - { - n = 0; -! PtSetArg(&args[n++], Pt_ARG_MAX_LENGTH, IOSIZE - 1, 0); -! PtSetArg(&args[n++], Pt_ARG_TEXT_STRING, textfield, 0); -! PtSetArg(&args[n++], Pt_ARG_POINTER, textfield, 0); -! gui_ph_dialog_text = PtCreateWidget(PtText, pane, n, args); -! PtAddCallback(gui_ph_dialog_text, Pt_CB_ACTIVATE, -! gui_ph_dialog_text_enter, &modal_ctrl); - } - - di.parent = gui.vimWindow; -*************** -*** 1616,1641 **** - di.callback = gui_ph_dialog_close; - di.data = &modal_ctrl; - -! dialog = PtCreateDialog( &di ); -! PtAddFilterCallback( dialog, Ph_EV_KEY, -! gui_ph_dialog_esc, &modal_ctrl ); - -! if( gui_ph_dialog_text != NULL ) -! PtGiveFocus( gui_ph_dialog_text, NULL ); - - /* Open dialog, block the vim window and wait for the dialog to close */ -! PtRealizeWidget( dialog ); -! PtMakeModal( dialog, Ph_CURSOR_NOINPUT, Ph_CURSOR_DEFAULT_COLOR ); -! dialog_result = (int) PtModalBlock( &modal_ctrl, 0 ); - -! PtDestroyWidget( dialog ); - gui_ph_dialog_text = NULL; - } - #endif - } - -! vim_free( button_array ); -! vim_free( buttons_copy ); - - return dialog_result; - } ---- 1616,1641 ---- - di.callback = gui_ph_dialog_close; - di.data = &modal_ctrl; - -! dialog = PtCreateDialog(&di); -! PtAddFilterCallback(dialog, Ph_EV_KEY, -! gui_ph_dialog_esc, &modal_ctrl); - -! if (gui_ph_dialog_text != NULL) -! PtGiveFocus(gui_ph_dialog_text, NULL); - - /* Open dialog, block the vim window and wait for the dialog to close */ -! PtRealizeWidget(dialog); -! PtMakeModal(dialog, Ph_CURSOR_NOINPUT, Ph_CURSOR_DEFAULT_COLOR); -! dialog_result = (int) PtModalBlock(&modal_ctrl, 0); - -! PtDestroyWidget(dialog); - gui_ph_dialog_text = NULL; - } - #endif - } - -! vim_free(button_array); -! vim_free(buttons_copy); - - return dialog_result; - } -*************** -*** 1648,1654 **** - { - PhPoint_t *pos; - -! pos = PtWidgetPos( gui.vimWindow, NULL ); - - *x = pos->x; - *y = pos->y; ---- 1648,1654 ---- - { - PhPoint_t *pos; - -! pos = PtWidgetPos(gui.vimWindow, NULL); - - *x = pos->x; - *y = pos->y; -*************** -*** 1661,1667 **** - { - PhPoint_t pos = { x, y }; - -! PtSetResource( gui.vimWindow, Pt_ARG_POS, &pos, 0 ); - } - - void ---- 1661,1667 ---- - { - PhPoint_t pos = { x, y }; - -! PtSetResource(gui.vimWindow, Pt_ARG_POS, &pos, 0); - } - - void -*************** -*** 1677,1686 **** - window_size.h += pg_margin_top + pg_margin_bottom; - #endif - -! PtSetResource( gui.vimWindow, Pt_ARG_MINIMUM_DIM, &min_size, 0 ); -! PtSetResource( gui.vimWindow, Pt_ARG_DIM, &window_size, 0 ); - -! if( ! PtWidgetIsRealized( gui.vimWindow ) ) - gui_ph_resize_container(); - } - ---- 1677,1686 ---- - window_size.h += pg_margin_top + pg_margin_bottom; - #endif - -! PtSetResource(gui.vimWindow, Pt_ARG_MINIMUM_DIM, &min_size, 0); -! PtSetResource(gui.vimWindow, Pt_ARG_DIM, &window_size, 0); - -! if (! PtWidgetIsRealized(gui.vimWindow)) - gui_ph_resize_container(); - } - -*************** -*** 1693,1700 **** - { - PhRect_t console; - -! PhWindowQueryVisible( Ph_QUERY_WORKSPACE, 0, -! PhInputGroup( NULL ), &console ); - - *screen_w = console.lr.x - console.ul.x + 1; - *screen_h = console.lr.y - console.ul.y + 1; ---- 1693,1700 ---- - { - PhRect_t console; - -! PhWindowQueryVisible(Ph_QUERY_WORKSPACE, 0, -! PhInputGroup(NULL), &console); - - *screen_w = console.lr.x - console.ul.x + 1; - *screen_h = console.lr.y - console.ul.y + 1; -*************** -*** 1705,1715 **** - { - PhWindowEvent_t event; - -! memset( &event, 0, sizeof (event) ); - event.event_f = Ph_WM_HIDE; - event.event_state = Ph_WM_EVSTATE_HIDE; -! event.rid = PtWidgetRid( gui.vimWindow ); -! PtForwardWindowEvent( &event ); - } - - #if defined(FEAT_EVAL) || defined(PROTO) ---- 1705,1715 ---- - { - PhWindowEvent_t event; - -! memset(&event, 0, sizeof (event)); - event.event_f = Ph_WM_HIDE; - event.event_state = Ph_WM_EVSTATE_HIDE; -! event.rid = PtWidgetRid(gui.vimWindow); -! PtForwardWindowEvent(&event); - } - - #if defined(FEAT_EVAL) || defined(PROTO) -*************** -*** 1721,1731 **** - { - PhWindowEvent_t event; - -! memset( &event, 0, sizeof (event) ); - event.event_f = Ph_WM_TOFRONT; - event.event_state = Ph_WM_EVSTATE_FFRONT; -! event.rid = PtWidgetRid( gui.vimWindow ); -! PtForwardWindowEvent( &event ); - } - #endif - ---- 1721,1731 ---- - { - PhWindowEvent_t event; - -! memset(&event, 0, sizeof (event)); - event.event_f = Ph_WM_TOFRONT; - event.event_state = Ph_WM_EVSTATE_FFRONT; -! event.rid = PtWidgetRid(gui.vimWindow); -! PtForwardWindowEvent(&event); - } - #endif - -*************** -*** 1733,1741 **** - gui_mch_settitle(char_u *title, char_u *icon) - { - #ifdef USE_PANEL_GROUP -! gui_ph_pg_set_buffer_num( curwin->w_buffer->b_fnum ); - #endif -! PtSetResource( gui.vimWindow, Pt_ARG_WINDOW_TITLE, title, 0 ); - /* Not sure what to do with the icon text, set balloon text somehow? */ - } - ---- 1733,1741 ---- - gui_mch_settitle(char_u *title, char_u *icon) - { - #ifdef USE_PANEL_GROUP -! gui_ph_pg_set_buffer_num(curwin->w_buffer->b_fnum); - #endif -! PtSetResource(gui.vimWindow, Pt_ARG_WINDOW_TITLE, title, 0); - /* Not sure what to do with the icon text, set balloon text somehow? */ - } - -*************** -*** 1748,1757 **** - int n = 0; - PtArg_t args[3]; - -! PtSetArg( &args[ n++ ], Pt_ARG_MAXIMUM, max, 0 ); -! PtSetArg( &args[ n++ ], Pt_ARG_SLIDER_SIZE, size, 0 ); -! PtSetArg( &args[ n++ ], Pt_ARG_GAUGE_VALUE, val, 0 ); -! PtSetResources( sb->id, n, args ); - } - - void ---- 1748,1757 ---- - int n = 0; - PtArg_t args[3]; - -! PtSetArg(&args[ n++ ], Pt_ARG_MAXIMUM, max, 0); -! PtSetArg(&args[ n++ ], Pt_ARG_SLIDER_SIZE, size, 0); -! PtSetArg(&args[ n++ ], Pt_ARG_GAUGE_VALUE, val, 0); -! PtSetResources(sb->id, n, args); - } - - void -*************** -*** 1759,1765 **** - { - PhArea_t area = {{ x, y }, { w, h }}; - -! PtSetResource( sb->id, Pt_ARG_AREA, &area, 0 ); - } - - void ---- 1759,1765 ---- - { - PhArea_t area = {{ x, y }, { w, h }}; - -! PtSetResource(sb->id, Pt_ARG_AREA, &area, 0); - } - - void -*************** -*** 1775,1786 **** - * - * Also, don't let the scrollbar get focus - */ -! PtSetArg( &args[ n++ ], Pt_ARG_FLAGS, Pt_DELAY_REALIZE, -! Pt_DELAY_REALIZE | Pt_GETS_FOCUS ); -! PtSetArg( &args[ n++ ], Pt_ARG_SCROLLBAR_FLAGS, Pt_SCROLLBAR_SHOW_ARROWS, 0); - #if 0 - /* Don't need this anchoring for the scrollbars */ -! if( orient == SBAR_HORIZ ) - { - anchor_flags = Pt_BOTTOM_ANCHORED_BOTTOM | - Pt_LEFT_ANCHORED_LEFT | Pt_RIGHT_ANCHORED_RIGHT; ---- 1775,1786 ---- - * - * Also, don't let the scrollbar get focus - */ -! PtSetArg(&args[ n++ ], Pt_ARG_FLAGS, Pt_DELAY_REALIZE, -! Pt_DELAY_REALIZE | Pt_GETS_FOCUS); -! PtSetArg(&args[ n++ ], Pt_ARG_SCROLLBAR_FLAGS, Pt_SCROLLBAR_SHOW_ARROWS, 0); - #if 0 - /* Don't need this anchoring for the scrollbars */ -! if (orient == SBAR_HORIZ) - { - anchor_flags = Pt_BOTTOM_ANCHORED_BOTTOM | - Pt_LEFT_ANCHORED_LEFT | Pt_RIGHT_ANCHORED_RIGHT; -*************** -*** 1788,1827 **** - else - { - anchor_flags = Pt_BOTTOM_ANCHORED_BOTTOM | Pt_TOP_ANCHORED_TOP; -! if( sb->wp != NULL ) - { -! if( sb == &sb->wp->w_scrollbars[ SBAR_LEFT ] ) - anchor_flags |= Pt_LEFT_ANCHORED_LEFT; - else - anchor_flags |= Pt_RIGHT_ANCHORED_RIGHT; - } - } -! PtSetArg( &args[ n++ ], Pt_ARG_ANCHOR_FLAGS, anchor_flags, Pt_IS_ANCHORED ); - #endif -! PtSetArg( &args[ n++ ], Pt_ARG_ORIENTATION, -! (orient == SBAR_HORIZ) ? Pt_HORIZONTAL : Pt_VERTICAL, 0 ); - #ifdef USE_PANEL_GROUP -! sb->id = PtCreateWidget( PtScrollbar, gui.vimPanelGroup, n, args ); - #else -! sb->id = PtCreateWidget( PtScrollbar, gui.vimContainer, n, args ); - #endif - -! PtAddCallback( sb->id, Pt_CB_SCROLLBAR_MOVE, gui_ph_handle_scrollbar, sb ); - } - - void - gui_mch_enable_scrollbar(scrollbar_T *sb, int flag) - { -! if( flag != 0 ) -! PtRealizeWidget( sb->id ); - else -! PtUnrealizeWidget( sb->id ); - } - - void - gui_mch_destroy_scrollbar(scrollbar_T *sb) - { -! PtDestroyWidget( sb->id ); - sb->id = NULL; - } - ---- 1788,1827 ---- - else - { - anchor_flags = Pt_BOTTOM_ANCHORED_BOTTOM | Pt_TOP_ANCHORED_TOP; -! if (sb->wp != NULL) - { -! if (sb == &sb->wp->w_scrollbars[ SBAR_LEFT ]) - anchor_flags |= Pt_LEFT_ANCHORED_LEFT; - else - anchor_flags |= Pt_RIGHT_ANCHORED_RIGHT; - } - } -! PtSetArg(&args[ n++ ], Pt_ARG_ANCHOR_FLAGS, anchor_flags, Pt_IS_ANCHORED); - #endif -! PtSetArg(&args[ n++ ], Pt_ARG_ORIENTATION, -! (orient == SBAR_HORIZ) ? Pt_HORIZONTAL : Pt_VERTICAL, 0); - #ifdef USE_PANEL_GROUP -! sb->id = PtCreateWidget(PtScrollbar, gui.vimPanelGroup, n, args); - #else -! sb->id = PtCreateWidget(PtScrollbar, gui.vimContainer, n, args); - #endif - -! PtAddCallback(sb->id, Pt_CB_SCROLLBAR_MOVE, gui_ph_handle_scrollbar, sb); - } - - void - gui_mch_enable_scrollbar(scrollbar_T *sb, int flag) - { -! if (flag != 0) -! PtRealizeWidget(sb->id); - else -! PtUnrealizeWidget(sb->id); - } - - void - gui_mch_destroy_scrollbar(scrollbar_T *sb) - { -! PtDestroyWidget(sb->id); - sb->id = NULL; - } - -*************** -*** 1866,1873 **** - return; - - if (shape == MSHAPE_HIDE || gui.pointer_hidden) -! PtSetResource( gui.vimTextArea, Pt_ARG_CURSOR_TYPE, Ph_CURSOR_NONE, -! 0 ); - else - { - if (shape >= MSHAPE_NUMBERED) ---- 1866,1873 ---- - return; - - if (shape == MSHAPE_HIDE || gui.pointer_hidden) -! PtSetResource(gui.vimTextArea, Pt_ARG_CURSOR_TYPE, Ph_CURSOR_NONE, -! 0); - else - { - if (shape >= MSHAPE_NUMBERED) -*************** -*** 1875,1881 **** - else - id = mshape_ids[shape]; - -! PtSetResource( gui.vimTextArea, Pt_ARG_CURSOR_TYPE, id, 0 ); - } - if (shape != MSHAPE_HIDE) - last_shape = shape; ---- 1875,1881 ---- - else - id = mshape_ids[shape]; - -! PtSetResource(gui.vimTextArea, Pt_ARG_CURSOR_TYPE, id, 0); - } - if (shape != MSHAPE_HIDE) - last_shape = shape; -*************** -*** 1885,1903 **** - void - gui_mch_mousehide(int hide) - { -! if( gui.pointer_hidden != hide ) - { - gui.pointer_hidden = hide; - #ifdef FEAT_MOUSESHAPE -! if( hide ) -! PtSetResource( gui.vimTextArea, Pt_ARG_CURSOR_TYPE, -! Ph_CURSOR_NONE, 0 ); - else -! mch_set_mouse_shape( last_shape ); - #else -! PtSetResource( gui.vimTextArea, Pt_ARG_CURSOR_TYPE, -! ( hide == MOUSE_SHOW ) ? GUI_PH_MOUSE_TYPE : Ph_CURSOR_NONE, -! 0 ); - #endif - } - } ---- 1885,1903 ---- - void - gui_mch_mousehide(int hide) - { -! if (gui.pointer_hidden != hide) - { - gui.pointer_hidden = hide; - #ifdef FEAT_MOUSESHAPE -! if (hide) -! PtSetResource(gui.vimTextArea, Pt_ARG_CURSOR_TYPE, -! Ph_CURSOR_NONE, 0); - else -! mch_set_mouse_shape(last_shape); - #else -! PtSetResource(gui.vimTextArea, Pt_ARG_CURSOR_TYPE, -! (hide == MOUSE_SHOW) ? GUI_PH_MOUSE_TYPE : Ph_CURSOR_NONE, -! 0); - #endif - } - } -*************** -*** 1910,1917 **** - - /* FIXME: does this return the correct position, - * with respect to the border? */ -! PhQueryCursor( PhInputGroup( NULL ), &info ); -! PtGetAbsPosition( gui.vimTextArea , &ix, &iy ); - - *x = info.pos.x - ix; - *y = info.pos.y - iy; ---- 1910,1917 ---- - - /* FIXME: does this return the correct position, - * with respect to the border? */ -! PhQueryCursor(PhInputGroup(NULL), &info); -! PtGetAbsPosition(gui.vimTextArea , &ix, &iy); - - *x = info.pos.x - ix; - *y = info.pos.y - iy; -*************** -*** 1922,1930 **** - { - short abs_x, abs_y; - -! PtGetAbsPosition( gui.vimTextArea, &abs_x, &abs_y ); - /* Add the border offset? */ -! PhMoveCursorAbs( PhInputGroup( NULL ), abs_x + x, abs_y + y ); - } - - /****************************************************************************/ ---- 1922,1930 ---- - { - short abs_x, abs_y; - -! PtGetAbsPosition(gui.vimTextArea, &abs_x, &abs_y); - /* Add the border offset? */ -! PhMoveCursorAbs(PhInputGroup(NULL), abs_x + x, abs_y + y); - } - - /****************************************************************************/ -*************** -*** 1952,1974 **** - color_diff = gui_get_lightness(gui_ph_mouse_color) - - gui_get_lightness(gui.back_pixel); - -! if( abs( color_diff ) < 64 ) - { - short r, g, b; - /* not a great algorithm... */ -! r = PgRedValue( gui_ph_mouse_color ) ^ 255; -! g = PgGreenValue( gui_ph_mouse_color ) ^ 255; -! b = PgBlueValue( gui_ph_mouse_color ) ^ 255; - - #ifndef FEAT_MOUSESHAPE -! gui_ph_mouse_color = PgRGB( r, g, b ); -! PtSetResource( gui.vimTextArea, Pt_ARG_CURSOR_COLOR, -! gui_ph_mouse_color, 0 ); - #endif - } - #endif - -! PtSetResource( gui.vimTextArea, Pt_ARG_FILL_COLOR, gui.back_pixel, 0 ); - } - - static int ---- 1952,1974 ---- - color_diff = gui_get_lightness(gui_ph_mouse_color) - - gui_get_lightness(gui.back_pixel); - -! if (abs(color_diff) < 64) - { - short r, g, b; - /* not a great algorithm... */ -! r = PgRedValue(gui_ph_mouse_color) ^ 255; -! g = PgGreenValue(gui_ph_mouse_color) ^ 255; -! b = PgBlueValue(gui_ph_mouse_color) ^ 255; - - #ifndef FEAT_MOUSESHAPE -! gui_ph_mouse_color = PgRGB(r, g, b); -! PtSetResource(gui.vimTextArea, Pt_ARG_CURSOR_COLOR, -! gui_ph_mouse_color, 0); - #endif - } - #endif - -! PtSetResource(gui.vimTextArea, Pt_ARG_FILL_COLOR, gui.back_pixel, 0); - } - - static int -*************** -*** 2058,2076 **** - }; - - /* is name #rrggbb format? */ -! if( name[0] == '#' && STRLEN( name ) == 7 ) - { -! r = hex_digit( name[1] ) * 16 + hex_digit( name[2] ); -! g = hex_digit( name[3] ) * 16 + hex_digit( name[4] ); -! b = hex_digit( name[5] ) * 16 + hex_digit( name[6] ); -! if( r < 0 || g < 0 || b < 0 ) - return INVALCOLOR; - return RGB(r, g, b); - } - -! for( i = 0; i < ARRAY_LENGTH( table ); i++ ) - { -! if( STRICMP( name, table[i].name ) == 0 ) - return table[i].colour; - } - ---- 2058,2076 ---- - }; - - /* is name #rrggbb format? */ -! if (name[0] == '#' && STRLEN(name) == 7) - { -! r = hex_digit(name[1]) * 16 + hex_digit(name[2]); -! g = hex_digit(name[3]) * 16 + hex_digit(name[4]); -! b = hex_digit(name[5]) * 16 + hex_digit(name[6]); -! if (r < 0 || g < 0 || b < 0) - return INVALCOLOR; - return RGB(r, g, b); - } - -! for (i = 0; i < ARRAY_LENGTH(table); i++) - { -! if (STRICMP(name, table[i].name) == 0) - return table[i].colour; - } - -*************** -*** 2129,2141 **** - void - gui_mch_set_fg_color(guicolor_T color) - { -! PgSetTextColor( color ); - } - - void - gui_mch_set_bg_color(guicolor_T color) - { -! PgSetFillColor( color ); - } - - void ---- 2129,2141 ---- - void - gui_mch_set_fg_color(guicolor_T color) - { -! PgSetTextColor(color); - } - - void - gui_mch_set_bg_color(guicolor_T color) - { -! PgSetFillColor(color); - } - - void -*************** -*** 2148,2168 **** - { - PhRect_t rect; - -! rect.ul.x = FILL_X( col ); -! rect.ul.y = FILL_Y( row ); - - /* FIXME: This has an off by one pixel problem */ - rect.lr.x = rect.ul.x + nc * gui.char_width; - rect.lr.y = rect.ul.y + nr * gui.char_height; -! if( nc > 0 ) - rect.lr.x -= 1; -! if( nr > 0 ) - rect.lr.y -= 1; - - DRAW_START; -! PgSetDrawMode( Pg_DrawModeDSTINVERT ); -! PgDrawRect( &rect, Pg_DRAW_FILL ); -! PgSetDrawMode( Pg_DrawModeSRCCOPY ); - DRAW_END; - } - ---- 2148,2168 ---- - { - PhRect_t rect; - -! rect.ul.x = FILL_X(col); -! rect.ul.y = FILL_Y(row); - - /* FIXME: This has an off by one pixel problem */ - rect.lr.x = rect.ul.x + nc * gui.char_width; - rect.lr.y = rect.ul.y + nr * gui.char_height; -! if (nc > 0) - rect.lr.x -= 1; -! if (nr > 0) - rect.lr.y -= 1; - - DRAW_START; -! PgSetDrawMode(Pg_DrawModeDSTINVERT); -! PgDrawRect(&rect, Pg_DRAW_FILL); -! PgSetDrawMode(Pg_DrawModeSRCCOPY); - DRAW_END; - } - -*************** -*** 2170,2182 **** - gui_mch_clear_block(int row1, int col1, int row2, int col2) - { - PhRect_t block = { -! { FILL_X( col1 ), FILL_Y( row1 ) }, -! { FILL_X( col2 + 1 ) - 1, FILL_Y( row2 + 1 ) - 1} - }; - - DRAW_START; -! gui_mch_set_bg_color( gui.back_pixel ); -! PgDrawRect( &block, Pg_DRAW_FILL ); - DRAW_END; - } - ---- 2170,2182 ---- - gui_mch_clear_block(int row1, int col1, int row2, int col2) - { - PhRect_t block = { -! { FILL_X(col1), FILL_Y(row1) }, -! { FILL_X(col2 + 1) - 1, FILL_Y(row2 + 1) - 1} - }; - - DRAW_START; -! gui_mch_set_bg_color(gui.back_pixel); -! PgDrawRect(&block, Pg_DRAW_FILL); - DRAW_END; - } - -*************** -*** 2189,2200 **** - Rows * gui.char_height + gui.border_width - 1 } - }; - -! if( is_ignore_draw == TRUE ) - return; - - DRAW_START; -! gui_mch_set_bg_color( gui.back_pixel ); -! PgDrawRect( &text_rect, Pg_DRAW_FILL ); - DRAW_END; - } - ---- 2189,2200 ---- - Rows * gui.char_height + gui.border_width - 1 } - }; - -! if (is_ignore_draw == TRUE) - return; - - DRAW_START; -! gui_mch_set_bg_color(gui.back_pixel); -! PgDrawRect(&text_rect, Pg_DRAW_FILL); - DRAW_END; - } - -*************** -*** 2204,2231 **** - PhRect_t rect; - PhPoint_t delta; - -! rect.ul.x = FILL_X( gui.scroll_region_left ); -! rect.ul.y = FILL_Y( row + num_lines ); - -! rect.lr.x = FILL_X( gui.scroll_region_right + 1 ) - 1; -! rect.lr.y = FILL_Y( gui.scroll_region_bot + 1) - 1; - -! PtWidgetOffset( gui.vimTextArea, &gui_ph_raw_offset ); -! PhTranslatePoint( &gui_ph_raw_offset, PtWidgetPos(gui.vimTextArea, NULL)); -! PhTranslateRect( &rect, &gui_ph_raw_offset ); - - delta.x = 0; - delta.y = -num_lines * gui.char_height; - - PgFlush(); - -! PhBlit( PtWidgetRid( PtFindDisjoint( gui.vimTextArea ) ), &rect, &delta ); - - gui_clear_block( - gui.scroll_region_bot - num_lines + 1, - gui.scroll_region_left, - gui.scroll_region_bot, -! gui.scroll_region_right ); - } - - void ---- 2204,2231 ---- - PhRect_t rect; - PhPoint_t delta; - -! rect.ul.x = FILL_X(gui.scroll_region_left); -! rect.ul.y = FILL_Y(row + num_lines); - -! rect.lr.x = FILL_X(gui.scroll_region_right + 1) - 1; -! rect.lr.y = FILL_Y(gui.scroll_region_bot + 1) - 1; - -! PtWidgetOffset(gui.vimTextArea, &gui_ph_raw_offset); -! PhTranslatePoint(&gui_ph_raw_offset, PtWidgetPos(gui.vimTextArea, NULL)); -! PhTranslateRect(&rect, &gui_ph_raw_offset); - - delta.x = 0; - delta.y = -num_lines * gui.char_height; - - PgFlush(); - -! PhBlit(PtWidgetRid(PtFindDisjoint(gui.vimTextArea)), &rect, &delta); - - gui_clear_block( - gui.scroll_region_bot - num_lines + 1, - gui.scroll_region_left, - gui.scroll_region_bot, -! gui.scroll_region_right); - } - - void -*************** -*** 2234,2258 **** - PhRect_t rect; - PhPoint_t delta; - -! rect.ul.x = FILL_X( gui.scroll_region_left ); -! rect.ul.y = FILL_Y( row ); - -! rect.lr.x = FILL_X( gui.scroll_region_right + 1 ) - 1; -! rect.lr.y = FILL_Y( gui.scroll_region_bot - num_lines + 1 ) - 1; - -! PtWidgetOffset( gui.vimTextArea, &gui_ph_raw_offset ); -! PhTranslatePoint( &gui_ph_raw_offset, PtWidgetPos( gui.vimTextArea, NULL ) ); -! PhTranslateRect( &rect, &gui_ph_raw_offset ); - - delta.x = 0; - delta.y = num_lines * gui.char_height; - - PgFlush(); - -! PhBlit( PtWidgetRid( PtFindDisjoint( gui.vimTextArea ) ) , &rect, &delta ); - -! gui_clear_block( row, gui.scroll_region_left, -! row + num_lines - 1, gui.scroll_region_right ); - } - - void ---- 2234,2258 ---- - PhRect_t rect; - PhPoint_t delta; - -! rect.ul.x = FILL_X(gui.scroll_region_left); -! rect.ul.y = FILL_Y(row); - -! rect.lr.x = FILL_X(gui.scroll_region_right + 1) - 1; -! rect.lr.y = FILL_Y(gui.scroll_region_bot - num_lines + 1) - 1; - -! PtWidgetOffset(gui.vimTextArea, &gui_ph_raw_offset); -! PhTranslatePoint(&gui_ph_raw_offset, PtWidgetPos(gui.vimTextArea, NULL)); -! PhTranslateRect(&rect, &gui_ph_raw_offset); - - delta.x = 0; - delta.y = num_lines * gui.char_height; - - PgFlush(); - -! PhBlit(PtWidgetRid(PtFindDisjoint(gui.vimTextArea)) , &rect, &delta); - -! gui_clear_block(row, gui.scroll_region_left, -! row + num_lines - 1, gui.scroll_region_right); - } - - void -*************** -*** 2261,2297 **** - static char *utf8_buffer = NULL; - static int utf8_len = 0; - -! PhPoint_t pos = { TEXT_X( col ), TEXT_Y( row ) }; - PhRect_t rect; - -! if( is_ignore_draw == TRUE ) - return; - - DRAW_START; - -! if( !( flags & DRAW_TRANSP ) ) - { - PgDrawIRect( -! FILL_X( col ), FILL_Y( row ), -! FILL_X( col + len ) - 1, FILL_Y( row + 1 ) - 1, -! Pg_DRAW_FILL ); - } - -! if( flags & DRAW_UNDERL ) -! PgSetUnderline( gui.norm_pixel, Pg_TRANSPARENT, 0 ); - -! if( charset_translate != NULL - #ifdef FEAT_MBYTE - && enc_utf8 == 0 - #endif -! ) - { - int src_taken, dst_made; - - /* Use a static buffer to avoid large amounts of de/allocations */ -! if( utf8_len < len ) - { -! utf8_buffer = realloc( utf8_buffer, len * MB_LEN_MAX ); - utf8_len = len; - } - ---- 2261,2297 ---- - static char *utf8_buffer = NULL; - static int utf8_len = 0; - -! PhPoint_t pos = { TEXT_X(col), TEXT_Y(row) }; - PhRect_t rect; - -! if (is_ignore_draw == TRUE) - return; - - DRAW_START; - -! if (!(flags & DRAW_TRANSP)) - { - PgDrawIRect( -! FILL_X(col), FILL_Y(row), -! FILL_X(col + len) - 1, FILL_Y(row + 1) - 1, -! Pg_DRAW_FILL); - } - -! if (flags & DRAW_UNDERL) -! PgSetUnderline(gui.norm_pixel, Pg_TRANSPARENT, 0); - -! if (charset_translate != NULL - #ifdef FEAT_MBYTE - && enc_utf8 == 0 - #endif -! ) - { - int src_taken, dst_made; - - /* Use a static buffer to avoid large amounts of de/allocations */ -! if (utf8_len < len) - { -! utf8_buffer = realloc(utf8_buffer, len * MB_LEN_MAX); - utf8_len = len; - } - -*************** -*** 2302,2337 **** - &src_taken, - utf8_buffer, - utf8_len, -! &dst_made ); - s = utf8_buffer; - len = dst_made; - } - -! PgDrawText( s, len, &pos, 0 ); - -! if( flags & DRAW_BOLD ) - { - /* FIXME: try and only calculate these values once... */ -! rect.ul.x = FILL_X( col ) + 1; -! rect.ul.y = FILL_Y( row ); -! rect.lr.x = FILL_X( col + len ) - 1; -! rect.lr.y = FILL_Y( row + 1) - 1; -! /* PgSetUserClip( NULL ) causes the scrollbar to not redraw... */ - #if 0 - pos.x++; - -! PgSetUserClip( &rect ); -! PgDrawText( s, len, &pos, 0 ); -! PgSetUserClip( NULL ); - #else -! rect.lr.y -= ( p_linespace + 1 ) / 2; - /* XXX: DrawTextArea doesn't work with phditto */ -! PgDrawTextArea( s, len, &rect, Pg_TEXT_BOTTOM ); - #endif - } - -! if( flags & DRAW_UNDERL ) -! PgSetUnderline( Pg_TRANSPARENT, Pg_TRANSPARENT, 0 ); - - DRAW_END; - } ---- 2302,2337 ---- - &src_taken, - utf8_buffer, - utf8_len, -! &dst_made); - s = utf8_buffer; - len = dst_made; - } - -! PgDrawText(s, len, &pos, 0); - -! if (flags & DRAW_BOLD) - { - /* FIXME: try and only calculate these values once... */ -! rect.ul.x = FILL_X(col) + 1; -! rect.ul.y = FILL_Y(row); -! rect.lr.x = FILL_X(col + len) - 1; -! rect.lr.y = FILL_Y(row + 1) - 1; -! /* PgSetUserClip(NULL) causes the scrollbar to not redraw... */ - #if 0 - pos.x++; - -! PgSetUserClip(&rect); -! PgDrawText(s, len, &pos, 0); -! PgSetUserClip(NULL); - #else -! rect.lr.y -= (p_linespace + 1) / 2; - /* XXX: DrawTextArea doesn't work with phditto */ -! PgDrawTextArea(s, len, &rect, Pg_TEXT_BOTTOM); - #endif - } - -! if (flags & DRAW_UNDERL) -! PgSetUnderline(Pg_TRANSPARENT, Pg_TRANSPARENT, 0); - - DRAW_END; - } -*************** -*** 2346,2359 **** - - /* FIXME: Double width characters */ - -! r.ul.x = FILL_X( gui.col ); -! r.ul.y = FILL_Y( gui.row ); - r.lr.x = r.ul.x + gui.char_width - 1; - r.lr.y = r.ul.y + gui.char_height - 1; - - DRAW_START; -! PgSetStrokeColor( color ); -! PgDrawRect( &r, Pg_DRAW_STROKE ); - DRAW_END; - } - ---- 2346,2359 ---- - - /* FIXME: Double width characters */ - -! r.ul.x = FILL_X(gui.col); -! r.ul.y = FILL_Y(gui.row); - r.lr.x = r.ul.x + gui.char_width - 1; - r.lr.y = r.ul.y + gui.char_height - 1; - - DRAW_START; -! PgSetStrokeColor(color); -! PgDrawRect(&r, Pg_DRAW_STROKE); - DRAW_END; - } - -*************** -*** 2362,2375 **** - { - PhRect_t r; - -! r.ul.x = FILL_X( gui.col ); -! r.ul.y = FILL_Y( gui.row ) + gui.char_height - h; - r.lr.x = r.ul.x + w - 1; - r.lr.y = r.ul.y + h - 1; - - DRAW_START; -! gui_mch_set_bg_color( color ); -! PgDrawRect( &r, Pg_DRAW_FILL ); - DRAW_END; - } - ---- 2362,2375 ---- - { - PhRect_t r; - -! r.ul.x = FILL_X(gui.col); -! r.ul.y = FILL_Y(gui.row) + gui.char_height - h; - r.lr.x = r.ul.x + w - 1; - r.lr.y = r.ul.y + h - 1; - - DRAW_START; -! gui_mch_set_bg_color(color); -! PgDrawRect(&r, Pg_DRAW_FILL); - DRAW_END; - } - -*************** -*** 2385,2394 **** - gui_mch_start_blink(void) - { - /* Only turn on the timer on if none of the times are zero */ -! if( blink_waittime && blink_ontime && blink_offtime && gui.in_focus) - { -! PtSetResource( gui_ph_timer_cursor, Pt_ARG_TIMER_INITIAL, -! blink_waittime, 0 ); - blink_state = BLINK_ON; - gui_update_cursor(TRUE, FALSE); - } ---- 2385,2394 ---- - gui_mch_start_blink(void) - { - /* Only turn on the timer on if none of the times are zero */ -! if (blink_waittime && blink_ontime && blink_offtime && gui.in_focus) - { -! PtSetResource(gui_ph_timer_cursor, Pt_ARG_TIMER_INITIAL, -! blink_waittime, 0); - blink_state = BLINK_ON; - gui_update_cursor(TRUE, FALSE); - } -*************** -*** 2397,2405 **** - void - gui_mch_stop_blink(void) - { -! PtSetResource( gui_ph_timer_cursor, Pt_ARG_TIMER_INITIAL, 0, 0 ); - -! if( blink_state == BLINK_OFF ) - gui_update_cursor(TRUE, FALSE); - - blink_state = BLINK_NONE; ---- 2397,2405 ---- - void - gui_mch_stop_blink(void) - { -! PtSetResource(gui_ph_timer_cursor, Pt_ARG_TIMER_INITIAL, 0, 0); - -! if (blink_state == BLINK_OFF) - gui_update_cursor(TRUE, FALSE); - - blink_state = BLINK_NONE; -*************** -*** 2417,2431 **** - void - gui_mch_flash(int msec) - { -! PgSetFillXORColor( Pg_BLACK, Pg_WHITE ); -! PgSetDrawMode( Pg_DRAWMODE_XOR ); - gui_mch_clear_all(); - gui_mch_flush(); - -! ui_delay( (long) msec, TRUE ); - - gui_mch_clear_all(); -! PgSetDrawMode( Pg_DRAWMODE_OPAQUE ); - gui_mch_flush(); - } - ---- 2417,2431 ---- - void - gui_mch_flash(int msec) - { -! PgSetFillXORColor(Pg_BLACK, Pg_WHITE); -! PgSetDrawMode(Pg_DRAWMODE_XOR); - gui_mch_clear_all(); - gui_mch_flush(); - -! ui_delay((long) msec, TRUE); - - gui_mch_clear_all(); -! PgSetDrawMode(Pg_DRAWMODE_OPAQUE); - gui_mch_flush(); - } - -*************** -*** 2440,2446 **** - { - PhArea_t area = {{x, y}, {w, h}}; - -! PtSetResource( gui.vimTextArea, Pt_ARG_AREA, &area, 0 ); - } - - int ---- 2440,2446 ---- - { - PhArea_t area = {{x, y}, {w, h}}; - -! PtSetResource(gui.vimTextArea, Pt_ARG_AREA, &area, 0); - } - - int -*************** -*** 2496,2514 **** - }; - - static PhImage_t * -! gui_ph_toolbar_load_icon( char_u *iconfile ) - { - static PhImage_t external_icon; - PhImage_t *temp_phi = NULL; - -! temp_phi = PxLoadImage( iconfile, NULL ); -! if( temp_phi != NULL ) - { - /* The label widget will free the image/palette/etc. for us when - * it's destroyed */ - temp_phi->flags |= Ph_RELEASE_IMAGE_ALL; -! memcpy( &external_icon, temp_phi, sizeof( external_icon ) ); -! free( temp_phi ); - - temp_phi = &external_icon; - } ---- 2496,2514 ---- - }; - - static PhImage_t * -! gui_ph_toolbar_load_icon(char_u *iconfile) - { - static PhImage_t external_icon; - PhImage_t *temp_phi = NULL; - -! temp_phi = PxLoadImage(iconfile, NULL); -! if (temp_phi != NULL) - { - /* The label widget will free the image/palette/etc. for us when - * it's destroyed */ - temp_phi->flags |= Ph_RELEASE_IMAGE_ALL; -! memcpy(&external_icon, temp_phi, sizeof(external_icon)); -! free(temp_phi); - - temp_phi = &external_icon; - } -*************** -*** 2523,2551 **** - * PhImage_t are copied, and the original PhImage_t aren't needed anymore). - */ - static PhImage_t * -! gui_ph_toolbar_find_icon( vimmenu_T *menu ) - { - char_u full_pathname[ MAXPATHL + 1 ]; - PhImage_t *icon = NULL; - -! if( menu->icon_builtin == FALSE ) - { -! if( menu->iconfile != NULL ) - /* TODO: use gui_find_iconfile() */ -! icon = gui_ph_toolbar_load_icon( menu->iconfile ); - - /* TODO: Restrict loading to just .png? Search for any format? */ -! if( ( icon == NULL ) && -! ( ( gui_find_bitmap( menu->name, full_pathname, "gif" ) == OK ) || -! ( gui_find_bitmap( menu->name, full_pathname, "png" ) == OK ) ) ) -! icon = gui_ph_toolbar_load_icon( full_pathname ); - -! if( icon != NULL ) - return icon; - } - -! if( menu->iconidx >= 0 && -! ( menu->iconidx < ARRAY_LENGTH( gui_ph_toolbar_images ) ) ) - { - return gui_ph_toolbar_images[menu->iconidx]; - } ---- 2523,2551 ---- - * PhImage_t are copied, and the original PhImage_t aren't needed anymore). - */ - static PhImage_t * -! gui_ph_toolbar_find_icon(vimmenu_T *menu) - { - char_u full_pathname[ MAXPATHL + 1 ]; - PhImage_t *icon = NULL; - -! if (menu->icon_builtin == FALSE) - { -! if (menu->iconfile != NULL) - /* TODO: use gui_find_iconfile() */ -! icon = gui_ph_toolbar_load_icon(menu->iconfile); - - /* TODO: Restrict loading to just .png? Search for any format? */ -! if ((icon == NULL) && -! ((gui_find_bitmap(menu->name, full_pathname, "gif") == OK) || -! (gui_find_bitmap(menu->name, full_pathname, "png") == OK))) -! icon = gui_ph_toolbar_load_icon(full_pathname); - -! if (icon != NULL) - return icon; - } - -! if (menu->iconidx >= 0 && -! (menu->iconidx < ARRAY_LENGTH(gui_ph_toolbar_images))) - { - return gui_ph_toolbar_images[menu->iconidx]; - } -*************** -*** 2554,2567 **** - } - #endif - -! #if defined( FEAT_MENU ) || defined( PROTO ) - void - gui_mch_enable_menu(int flag) - { -! if( flag != 0 ) -! PtRealizeWidget( gui.vimMenuBar ); - else -! PtUnrealizeWidget( gui.vimMenuBar ); - } - - void ---- 2554,2567 ---- - } - #endif - -! #if defined(FEAT_MENU) || defined(PROTO) - void - gui_mch_enable_menu(int flag) - { -! if (flag != 0) -! PtRealizeWidget(gui.vimMenuBar); - else -! PtUnrealizeWidget(gui.vimMenuBar); - } - - void -*************** -*** 2572,2601 **** - - /* Change the position of a menu button in the parent */ - static void -! gui_ph_position_menu( PtWidget_t *widget, int priority ) - { - PtWidget_t *traverse; - vimmenu_T *menu; - -! traverse = PtWidgetChildBack( PtWidgetParent( widget ) ); - - /* Iterate through the list of widgets in traverse, until - * we find the position we want to insert our widget into */ - /* TODO: traverse from front to back, possible speedup? */ -! while( traverse != NULL ) - { -! PtGetResource( traverse, Pt_ARG_POINTER, &menu, 0 ); - -! if( menu != NULL && - priority < menu->priority && -! widget != traverse ) - { - /* Insert the widget before the current traverse widget */ -! PtWidgetInsert( widget, traverse, 1 ); - return; - } - -! traverse = PtWidgetBrotherInFront( traverse ); - } - } - ---- 2572,2601 ---- - - /* Change the position of a menu button in the parent */ - static void -! gui_ph_position_menu(PtWidget_t *widget, int priority) - { - PtWidget_t *traverse; - vimmenu_T *menu; - -! traverse = PtWidgetChildBack(PtWidgetParent(widget)); - - /* Iterate through the list of widgets in traverse, until - * we find the position we want to insert our widget into */ - /* TODO: traverse from front to back, possible speedup? */ -! while (traverse != NULL) - { -! PtGetResource(traverse, Pt_ARG_POINTER, &menu, 0); - -! if (menu != NULL && - priority < menu->priority && -! widget != traverse) - { - /* Insert the widget before the current traverse widget */ -! PtWidgetInsert(widget, traverse, 1); - return; - } - -! traverse = PtWidgetBrotherInFront(traverse); - } - } - -*************** -*** 2611,2621 **** - - menu->submenu_id = menu->id = NULL; - -! if( menu_is_menubar( menu->name ) ) - { - -! accel_key = vim_strchr( menu->name, '&' ); -! if( accel_key != NULL ) - { - mnemonic_str[0] = accel_key[1]; - mnemonic_str[1] = NUL; ---- 2611,2621 ---- - - menu->submenu_id = menu->id = NULL; - -! if (menu_is_menubar(menu->name)) - { - -! accel_key = vim_strchr(menu->name, '&'); -! if (accel_key != NULL) - { - mnemonic_str[0] = accel_key[1]; - mnemonic_str[1] = NUL; -*************** -*** 2623,2673 **** - - /* Create the menu button */ - n = 0; -! PtSetArg( &args[ n++ ], Pt_ARG_TEXT_STRING, menu->dname, 0 ); -! PtSetArg( &args[ n++ ], Pt_ARG_ACCEL_TEXT, menu->actext, 0 ); -! if( accel_key != NULL ) -! PtSetArg( &args[ n++ ], Pt_ARG_ACCEL_KEY, mnemonic_str, 0 ); -! PtSetArg( &args[ n++ ], Pt_ARG_POINTER, menu, 0 ); - -! if( parent != NULL ) -! PtSetArg( &args[ n++ ], Pt_ARG_BUTTON_TYPE, Pt_MENU_RIGHT, 0 ); - -! menu->id = PtCreateWidget( PtMenuButton, - (parent == NULL) ? gui.vimMenuBar : parent->submenu_id, -! n, args ); - -! PtAddCallback( menu->id, Pt_CB_ARM, gui_ph_handle_pulldown_menu, menu ); - - /* Create the actual menu */ - n = 0; -! if( parent != NULL ) -! PtSetArg( &args[ n++ ], Pt_ARG_MENU_FLAGS, Pt_TRUE, Pt_MENU_CHILD ); - -! menu->submenu_id = PtCreateWidget( PtMenu, menu->id, n, args ); - -! if( parent == NULL ) - { -! PtAddCallback( menu->submenu_id, Pt_CB_UNREALIZED, -! gui_ph_handle_menu_unrealized, menu ); - -! if( menu->mnemonic != 0 ) - { -! PtAddHotkeyHandler( gui.vimWindow, tolower( menu->mnemonic ), -! Pk_KM_Alt, 0, menu, gui_ph_handle_pulldown_menu ); - } - } - -! gui_ph_position_menu( menu->id, menu->priority ); - - /* Redraw menubar here instead of gui_mch_draw_menubar */ -! if( gui.menu_is_active ) -! PtRealizeWidget( menu->id ); - } -! else if( menu_is_popup( menu->name ) ) - { -! menu->submenu_id = PtCreateWidget( PtMenu, gui.vimWindow, 0, NULL ); -! PtAddCallback( menu->submenu_id, Pt_CB_UNREALIZED, -! gui_ph_handle_menu_unrealized, menu ); - } - } - ---- 2623,2673 ---- - - /* Create the menu button */ - n = 0; -! PtSetArg(&args[ n++ ], Pt_ARG_TEXT_STRING, menu->dname, 0); -! PtSetArg(&args[ n++ ], Pt_ARG_ACCEL_TEXT, menu->actext, 0); -! if (accel_key != NULL) -! PtSetArg(&args[ n++ ], Pt_ARG_ACCEL_KEY, mnemonic_str, 0); -! PtSetArg(&args[ n++ ], Pt_ARG_POINTER, menu, 0); - -! if (parent != NULL) -! PtSetArg(&args[ n++ ], Pt_ARG_BUTTON_TYPE, Pt_MENU_RIGHT, 0); - -! menu->id = PtCreateWidget(PtMenuButton, - (parent == NULL) ? gui.vimMenuBar : parent->submenu_id, -! n, args); - -! PtAddCallback(menu->id, Pt_CB_ARM, gui_ph_handle_pulldown_menu, menu); - - /* Create the actual menu */ - n = 0; -! if (parent != NULL) -! PtSetArg(&args[ n++ ], Pt_ARG_MENU_FLAGS, Pt_TRUE, Pt_MENU_CHILD); - -! menu->submenu_id = PtCreateWidget(PtMenu, menu->id, n, args); - -! if (parent == NULL) - { -! PtAddCallback(menu->submenu_id, Pt_CB_UNREALIZED, -! gui_ph_handle_menu_unrealized, menu); - -! if (menu->mnemonic != 0) - { -! PtAddHotkeyHandler(gui.vimWindow, tolower(menu->mnemonic), -! Pk_KM_Alt, 0, menu, gui_ph_handle_pulldown_menu); - } - } - -! gui_ph_position_menu(menu->id, menu->priority); - - /* Redraw menubar here instead of gui_mch_draw_menubar */ -! if (gui.menu_is_active) -! PtRealizeWidget(menu->id); - } -! else if (menu_is_popup(menu->name)) - { -! menu->submenu_id = PtCreateWidget(PtMenu, gui.vimWindow, 0, NULL); -! PtAddCallback(menu->submenu_id, Pt_CB_UNREALIZED, -! gui_ph_handle_menu_unrealized, menu); - } - } - -*************** -*** 2681,2784 **** - PtArg_t args[13]; - - n = 0; -! PtSetArg( &args[ n++ ], Pt_ARG_POINTER, menu, 0 ); - - #ifdef FEAT_TOOLBAR -! if( menu_is_toolbar( parent->name ) ) - { -! if( menu_is_separator( menu->name ) ) - { -! PtSetArg( &args[ n++ ], Pt_ARG_SEP_FLAGS, -! Pt_SEP_VERTICAL, Pt_SEP_ORIENTATION ); -! PtSetArg( &args[ n++ ], Pt_ARG_SEP_TYPE, Pt_ETCHED_IN, 0 ); -! PtSetArg( &args[ n++ ], Pt_ARG_ANCHOR_FLAGS, -! Pt_TRUE, Pt_ANCHOR_TOP_BOTTOM ); -! PtSetArg( &args[ n++ ], Pt_ARG_WIDTH, 2, 0 ); -! menu->id = PtCreateWidget( PtSeparator, gui.vimToolBar, n, args ); - } - else - { -! if( strstr( (const char *) p_toolbar, "text" ) != NULL ) - { -! PtSetArg( &args[ n++ ], Pt_ARG_BALLOON_POSITION, -! Pt_BALLOON_BOTTOM, 0 ); -! PtSetArg( &args[ n++ ], Pt_ARG_TEXT_STRING, menu->dname, 0 ); -! PtSetArg( &args[ n++ ], Pt_ARG_TEXT_FONT, "TextFont08", 0 ); - } -! if( ( strstr( (const char *) p_toolbar, "icons" ) != NULL ) && -! ( gui_ph_toolbar_images != NULL ) ) - { -! PtSetArg( &args[ n++ ], Pt_ARG_LABEL_IMAGE, -! gui_ph_toolbar_find_icon( menu ), 0 ); -! PtSetArg( &args[ n++ ], Pt_ARG_LABEL_TYPE, Pt_TEXT_IMAGE, 0 ); -! PtSetArg( &args[ n++ ], Pt_ARG_TEXT_IMAGE_SPACING, 0, 0 ); - } -! if( strstr( (const char *) p_toolbar, "tooltips" ) != NULL ) - { -! PtSetArg( &args[ n++ ], Pt_ARG_LABEL_BALLOON, -! gui_ph_show_tooltip, 0 ); -! PtSetArg( &args[ n++ ], Pt_ARG_LABEL_FLAGS, -! Pt_TRUE, Pt_SHOW_BALLOON ); - } -! PtSetArg( &args[ n++ ], Pt_ARG_MARGIN_HEIGHT, 1, 0 ); -! PtSetArg( &args[ n++ ], Pt_ARG_MARGIN_WIDTH, 1, 0 ); -! PtSetArg( &args[ n++ ], Pt_ARG_FLAGS, Pt_FALSE, -! Pt_HIGHLIGHTED | Pt_GETS_FOCUS ); -! PtSetArg( &args[ n++ ], Pt_ARG_FILL_COLOR, Pg_TRANSPARENT, 0 ); -! menu->id = PtCreateWidget( PtButton, gui.vimToolBar, n, args ); - -! PtAddCallback( menu->id, Pt_CB_ACTIVATE, gui_ph_handle_menu, menu ); - } - /* Update toolbar if it's open */ -! if( PtWidgetIsRealized( gui.vimToolBar ) ) -! PtRealizeWidget( menu->id ); - } - else - #endif -! if( menu_is_separator( menu->name ) ) - { -! menu->id = PtCreateWidget( PtSeparator, parent->submenu_id, n, args ); - } - else - { -! accel_key = vim_strchr( menu->name, '&' ); -! if( accel_key != NULL ) - { - mnemonic_str[0] = accel_key[1]; - mnemonic_str[1] = NUL; - } - -! PtSetArg( &args[ n++ ], Pt_ARG_TEXT_STRING, menu->dname, 0 ); -! if( accel_key != NULL ) -! PtSetArg( &args[ n++ ], Pt_ARG_ACCEL_KEY, mnemonic_str, -! 0 ); - -! PtSetArg( &args[ n++ ], Pt_ARG_ACCEL_TEXT, menu->actext, 0 ); - -! menu->id = PtCreateWidget( PtMenuButton, parent->submenu_id, n, args ); - -! PtAddCallback( menu->id, Pt_CB_ACTIVATE, gui_ph_handle_menu, menu ); - - #ifdef USE_PANEL_GROUP -! if( gui_ph_is_buffer_item( menu, parent ) == TRUE ) - { -! PtAddCallback( menu->id, Pt_CB_DESTROYED, -! gui_ph_handle_buffer_remove, menu ); -! gui_ph_pg_add_buffer( menu->dname ); - } - #endif - } - -! gui_ph_position_menu( menu->id, menu->priority ); - } - - void - gui_mch_destroy_menu(vimmenu_T *menu) - { -! if( menu->submenu_id != NULL ) -! PtDestroyWidget( menu->submenu_id ); -! if( menu->id != NULL ) -! PtDestroyWidget( menu->id ); - - menu->submenu_id = NULL; - menu->id = NULL; ---- 2681,2784 ---- - PtArg_t args[13]; - - n = 0; -! PtSetArg(&args[ n++ ], Pt_ARG_POINTER, menu, 0); - - #ifdef FEAT_TOOLBAR -! if (menu_is_toolbar(parent->name)) - { -! if (menu_is_separator(menu->name)) - { -! PtSetArg(&args[ n++ ], Pt_ARG_SEP_FLAGS, -! Pt_SEP_VERTICAL, Pt_SEP_ORIENTATION); -! PtSetArg(&args[ n++ ], Pt_ARG_SEP_TYPE, Pt_ETCHED_IN, 0); -! PtSetArg(&args[ n++ ], Pt_ARG_ANCHOR_FLAGS, -! Pt_TRUE, Pt_ANCHOR_TOP_BOTTOM); -! PtSetArg(&args[ n++ ], Pt_ARG_WIDTH, 2, 0); -! menu->id = PtCreateWidget(PtSeparator, gui.vimToolBar, n, args); - } - else - { -! if (strstr((const char *) p_toolbar, "text") != NULL) - { -! PtSetArg(&args[ n++ ], Pt_ARG_BALLOON_POSITION, -! Pt_BALLOON_BOTTOM, 0); -! PtSetArg(&args[ n++ ], Pt_ARG_TEXT_STRING, menu->dname, 0); -! PtSetArg(&args[ n++ ], Pt_ARG_TEXT_FONT, "TextFont08", 0); - } -! if ((strstr((const char *) p_toolbar, "icons") != NULL) && -! (gui_ph_toolbar_images != NULL)) - { -! PtSetArg(&args[ n++ ], Pt_ARG_LABEL_IMAGE, -! gui_ph_toolbar_find_icon(menu), 0); -! PtSetArg(&args[ n++ ], Pt_ARG_LABEL_TYPE, Pt_TEXT_IMAGE, 0); -! PtSetArg(&args[ n++ ], Pt_ARG_TEXT_IMAGE_SPACING, 0, 0); - } -! if (strstr((const char *) p_toolbar, "tooltips") != NULL) - { -! PtSetArg(&args[ n++ ], Pt_ARG_LABEL_BALLOON, -! gui_ph_show_tooltip, 0); -! PtSetArg(&args[ n++ ], Pt_ARG_LABEL_FLAGS, -! Pt_TRUE, Pt_SHOW_BALLOON); - } -! PtSetArg(&args[ n++ ], Pt_ARG_MARGIN_HEIGHT, 1, 0); -! PtSetArg(&args[ n++ ], Pt_ARG_MARGIN_WIDTH, 1, 0); -! PtSetArg(&args[ n++ ], Pt_ARG_FLAGS, Pt_FALSE, -! Pt_HIGHLIGHTED | Pt_GETS_FOCUS); -! PtSetArg(&args[ n++ ], Pt_ARG_FILL_COLOR, Pg_TRANSPARENT, 0); -! menu->id = PtCreateWidget(PtButton, gui.vimToolBar, n, args); - -! PtAddCallback(menu->id, Pt_CB_ACTIVATE, gui_ph_handle_menu, menu); - } - /* Update toolbar if it's open */ -! if (PtWidgetIsRealized(gui.vimToolBar)) -! PtRealizeWidget(menu->id); - } - else - #endif -! if (menu_is_separator(menu->name)) - { -! menu->id = PtCreateWidget(PtSeparator, parent->submenu_id, n, args); - } - else - { -! accel_key = vim_strchr(menu->name, '&'); -! if (accel_key != NULL) - { - mnemonic_str[0] = accel_key[1]; - mnemonic_str[1] = NUL; - } - -! PtSetArg(&args[ n++ ], Pt_ARG_TEXT_STRING, menu->dname, 0); -! if (accel_key != NULL) -! PtSetArg(&args[ n++ ], Pt_ARG_ACCEL_KEY, mnemonic_str, -! 0); - -! PtSetArg(&args[ n++ ], Pt_ARG_ACCEL_TEXT, menu->actext, 0); - -! menu->id = PtCreateWidget(PtMenuButton, parent->submenu_id, n, args); - -! PtAddCallback(menu->id, Pt_CB_ACTIVATE, gui_ph_handle_menu, menu); - - #ifdef USE_PANEL_GROUP -! if (gui_ph_is_buffer_item(menu, parent) == TRUE) - { -! PtAddCallback(menu->id, Pt_CB_DESTROYED, -! gui_ph_handle_buffer_remove, menu); -! gui_ph_pg_add_buffer(menu->dname); - } - #endif - } - -! gui_ph_position_menu(menu->id, menu->priority); - } - - void - gui_mch_destroy_menu(vimmenu_T *menu) - { -! if (menu->submenu_id != NULL) -! PtDestroyWidget(menu->submenu_id); -! if (menu->id != NULL) -! PtDestroyWidget(menu->id); - - menu->submenu_id = NULL; - menu->id = NULL; -*************** -*** 2789,2800 **** - { - long flags, mask, fields; - -! if( menu->id == NULL ) - return; - -! flags = PtWidgetFlags( menu->id ); -! if( PtWidgetIsClass( menu->id, PtMenuButton ) && -! PtWidgetIsClass( PtWidgetParent( menu->id ), PtMenu ) ) - { - fields = Pt_FALSE; - mask = Pt_SELECTABLE | Pt_HIGHLIGHTED; ---- 2789,2800 ---- - { - long flags, mask, fields; - -! if (menu->id == NULL) - return; - -! flags = PtWidgetFlags(menu->id); -! if (PtWidgetIsClass(menu->id, PtMenuButton) && -! PtWidgetIsClass(PtWidgetParent(menu->id), PtMenu)) - { - fields = Pt_FALSE; - mask = Pt_SELECTABLE | Pt_HIGHLIGHTED; -*************** -*** 2805,2815 **** - mask = Pt_BLOCKED | Pt_GHOST; - } - -! if( ! grey ) - fields = ~fields; - -! PtSetResource( menu->id, Pt_ARG_FLAGS, fields, -! mask ); - } - - void ---- 2805,2815 ---- - mask = Pt_BLOCKED | Pt_GHOST; - } - -! if (! grey) - fields = ~fields; - -! PtSetResource(menu->id, Pt_ARG_FLAGS, fields, -! mask); - } - - void -*************** -*** 2830,2837 **** - void - gui_mch_show_popupmenu(vimmenu_T *menu) - { -! PtSetResource( menu->submenu_id, Pt_ARG_POS, &abs_mouse, 0 ); -! PtRealizeWidget( menu->submenu_id ); - } - - void ---- 2830,2837 ---- - void - gui_mch_show_popupmenu(vimmenu_T *menu) - { -! PtSetResource(menu->submenu_id, Pt_ARG_POS, &abs_mouse, 0); -! PtRealizeWidget(menu->submenu_id); - } - - void -*************** -*** 2842,2855 **** - - #endif - -! #if defined( FEAT_TOOLBAR ) || defined( PROTO ) - void - gui_mch_show_toolbar(int showit) - { -! if( showit ) -! PtRealizeWidget( gui.vimToolBar ); - else -! PtUnrealizeWidget( gui.vimToolBar ); - } - #endif - ---- 2842,2855 ---- - - #endif - -! #if defined(FEAT_TOOLBAR) || defined(PROTO) - void - gui_mch_show_toolbar(int showit) - { -! if (showit) -! PtRealizeWidget(gui.vimToolBar); - else -! PtUnrealizeWidget(gui.vimToolBar); - } - #endif - -*************** -*** 2870,2903 **** - FontQueryInfo info; - int_u style; - -! font_tag = alloc( MAX_FONT_TAG ); -! if( font_tag != NULL ) - { -! if( PfGenerateFontName( font_name, font_flags, font_size, -! font_tag ) != NULL ) - { - /* Enforce some limits on the font used */ - style = PHFONT_INFO_FIXED; - -! if( enforce & PF_STYLE_BOLD ) - style |= PHFONT_INFO_BOLD; -! if( enforce & PF_STYLE_ANTIALIAS ) - style |= PHFONT_INFO_ALIAS; -! if( enforce & PF_STYLE_ITALIC ) - style |= PHFONT_INFO_ITALIC; - -! PfQueryFontInfo( font_tag, &info ); - -! if( info.size == 0 ) - font_size = 0; - - /* Make sure font size matches, and that the font style - * at least has the bits we're checking for */ -! if( font_size == info.size && -! style == (info.style & style) ) - return (GuiFont)font_tag; - } -! vim_free( font_tag ); - } - return NULL; - } ---- 2870,2903 ---- - FontQueryInfo info; - int_u style; - -! font_tag = alloc(MAX_FONT_TAG); -! if (font_tag != NULL) - { -! if (PfGenerateFontName(font_name, font_flags, font_size, -! font_tag) != NULL) - { - /* Enforce some limits on the font used */ - style = PHFONT_INFO_FIXED; - -! if (enforce & PF_STYLE_BOLD) - style |= PHFONT_INFO_BOLD; -! if (enforce & PF_STYLE_ANTIALIAS) - style |= PHFONT_INFO_ALIAS; -! if (enforce & PF_STYLE_ITALIC) - style |= PHFONT_INFO_ITALIC; - -! PfQueryFontInfo(font_tag, &info); - -! if (info.size == 0) - font_size = 0; - - /* Make sure font size matches, and that the font style - * at least has the bits we're checking for */ -! if (font_size == info.size && -! style == (info.style & style)) - return (GuiFont)font_tag; - } -! vim_free(font_tag); - } - return NULL; - } -*************** -*** 2919,2936 **** - char_u *vim_font, - char_u **font_name, - int_u *font_flags, -! int_u *font_size ) - { - char_u *mark; - int_u name_len, size; - -! mark = vim_strchr( vim_font, ':' ); -! if( mark == NULL ) -! name_len = STRLEN( vim_font ); - else -! name_len = (int_u) ( mark - vim_font ); - -! *font_name = vim_strnsave( vim_font, name_len ); - if (*font_name != NULL) - { - if (mark != NULL) ---- 2919,2936 ---- - char_u *vim_font, - char_u **font_name, - int_u *font_flags, -! int_u *font_size) - { - char_u *mark; - int_u name_len, size; - -! mark = vim_strchr(vim_font, ':'); -! if (mark == NULL) -! name_len = STRLEN(vim_font); - else -! name_len = (int_u) (mark - vim_font); - -! *font_name = vim_strnsave(vim_font, name_len); - if (*font_name != NULL) - { - if (mark != NULL) -*************** -*** 2944,2950 **** - case 'i': *font_flags |= PF_STYLE_ITALIC; break; - - case 's': -! size = getdigits( &mark ); - /* Restrict the size to some vague limits */ - if (size < 1 || size > 100) - size = 8; ---- 2944,2950 ---- - case 'i': *font_flags |= PF_STYLE_ITALIC; break; - - case 's': -! size = getdigits(&mark); - /* Restrict the size to some vague limits */ - if (size < 1 || size > 100) - size = 8; -*************** -*** 2979,3031 **** - vim_font_name = "PC Terminal"; - } - -! if (STRCMP( vim_font_name, "*" ) == 0) - { -! font_tag = PtFontSelection( gui.vimWindow, NULL, NULL, -! "pcterm12", -1, PHFONT_FIXED, NULL ); - - if (font_tag == NULL) - return FAIL; - -! gui_mch_free_font( gui.norm_font ); - gui.norm_font = font_tag; - -! PfQueryFontInfo( font_tag, &info ); -! font_name = vim_strsave( info.font ); - } - else - { -! if (gui_ph_parse_font_name( vim_font_name, &font_name, &font_flags, -! &font_size ) == FALSE) - return FAIL; - -! font_tag = gui_ph_get_font( font_name, font_flags, font_size, 0 ); - if (font_tag == NULL) - { -! vim_free( font_name ); - return FAIL; - } - -! gui_mch_free_font( gui.norm_font ); - gui.norm_font = font_tag; - } - -! gui_mch_free_font( gui.bold_font ); -! gui.bold_font = gui_ph_get_font( font_name, font_flags | PF_STYLE_BOLD, -! font_size, PF_STYLE_BOLD ); -! -! gui_mch_free_font( gui.ital_font ); -! gui.ital_font = gui_ph_get_font( font_name, font_flags | PF_STYLE_ITALIC, -! font_size, PF_STYLE_ITALIC ); - - /* This extent was brought to you by the letter 'g' */ -! PfExtentText( &extent, NULL, font_tag, "g", 1 ); - - gui.char_width = extent.lr.x - extent.ul.x + 1; - gui.char_height = (- extent.ul.y) + extent.lr.y + 1; - gui.char_ascent = - extent.ul.y; - -! vim_free( font_name ); - return OK; - } - ---- 2979,3031 ---- - vim_font_name = "PC Terminal"; - } - -! if (STRCMP(vim_font_name, "*") == 0) - { -! font_tag = PtFontSelection(gui.vimWindow, NULL, NULL, -! "pcterm12", -1, PHFONT_FIXED, NULL); - - if (font_tag == NULL) - return FAIL; - -! gui_mch_free_font(gui.norm_font); - gui.norm_font = font_tag; - -! PfQueryFontInfo(font_tag, &info); -! font_name = vim_strsave(info.font); - } - else - { -! if (gui_ph_parse_font_name(vim_font_name, &font_name, &font_flags, -! &font_size) == FALSE) - return FAIL; - -! font_tag = gui_ph_get_font(font_name, font_flags, font_size, 0); - if (font_tag == NULL) - { -! vim_free(font_name); - return FAIL; - } - -! gui_mch_free_font(gui.norm_font); - gui.norm_font = font_tag; - } - -! gui_mch_free_font(gui.bold_font); -! gui.bold_font = gui_ph_get_font(font_name, font_flags | PF_STYLE_BOLD, -! font_size, PF_STYLE_BOLD); -! -! gui_mch_free_font(gui.ital_font); -! gui.ital_font = gui_ph_get_font(font_name, font_flags | PF_STYLE_ITALIC, -! font_size, PF_STYLE_ITALIC); - - /* This extent was brought to you by the letter 'g' */ -! PfExtentText(&extent, NULL, font_tag, "g", 1); - - gui.char_width = extent.lr.x - extent.ul.x + 1; - gui.char_height = (- extent.ul.y) + extent.lr.y + 1; - gui.char_ascent = - extent.ul.y; - -! vim_free(font_name); - return OK; - } - -*************** -*** 3037,3043 **** - { - FontQueryInfo info; - -! PfQueryFontInfo( gui.norm_font, &info ); - - gui.char_height = - info.ascender + info.descender + p_linespace; - gui.char_ascent = - info.ascender + p_linespace / 2; ---- 3037,3043 ---- - { - FontQueryInfo info; - -! PfQueryFontInfo(gui.norm_font, &info); - - gui.char_height = - info.ascender + info.descender + p_linespace; - gui.char_ascent = - info.ascender + p_linespace / 2; -*************** -*** 3053,3070 **** - int_u font_size = 12; - int_u font_flags = 0; - -! if (gui_ph_parse_font_name( vim_font_name, &font_name, &font_flags, -! &font_size ) != FALSE) - { -! font_tag = gui_ph_get_font( font_name, font_flags, font_size, -1 ); -! vim_free( font_name ); - - if (font_tag != NULL) - return (GuiFont)font_tag; - } - - if (report_error) -! EMSG2(e_font, vim_font_name ); - - return FAIL; - } ---- 3053,3070 ---- - int_u font_size = 12; - int_u font_flags = 0; - -! if (gui_ph_parse_font_name(vim_font_name, &font_name, &font_flags, -! &font_size) != FALSE) - { -! font_tag = gui_ph_get_font(font_name, font_flags, font_size, -1); -! vim_free(font_name); - - if (font_tag != NULL) - return (GuiFont)font_tag; - } - - if (report_error) -! EMSG2(e_font, vim_font_name); - - return FAIL; - } -*************** -*** 3088,3099 **** - void - gui_mch_set_font(GuiFont font) - { -! PgSetFont( font ); - } - - void - gui_mch_free_font(GuiFont font) - { -! vim_free( font ); - } - ---- 3088,3099 ---- - void - gui_mch_set_font(GuiFont font) - { -! PgSetFont(font); - } - - void - gui_mch_free_font(GuiFont font) - { -! vim_free(font); - } - -*** ../vim-7.3.309/src/version.c 2011-09-14 15:41:54.000000000 +0200 ---- src/version.c 2011-09-14 16:01:50.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 310, - /**/ - --- -An operatingsystem is just a name you give to the rest of bloating -idiosyncratic machine-based-features you left out of your editor. - (author unknown) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.311 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.311 (replaces 7.3.289) -Problem: Complete function isn't called when the leader changed. -Solution: Allow the complete function to return a dictionary with a flag - that indicates ins_compl_restart() is to be called when the leader - changes. (Taro Muraoka) -Files: runtime/insert.txt, src/edit.c, src/eval.c, src/proto/eval.pro - - -*** ../vim-7.3.310/src/edit.c 2011-09-05 20:13:37.000000000 +0200 ---- src/edit.c 2011-09-14 16:43:14.000000000 +0200 -*************** -*** 135,140 **** ---- 135,142 ---- - static int compl_cont_mode = 0; - static expand_T compl_xp; - -+ static int compl_opt_refresh_always = FALSE; -+ - static void ins_ctrl_x __ARGS((void)); - static int has_compl_option __ARGS((int dict_opt)); - static int ins_compl_accept_char __ARGS((int c)); -*************** -*** 153,161 **** - static void ins_compl_free __ARGS((void)); - static void ins_compl_clear __ARGS((void)); - static int ins_compl_bs __ARGS((void)); - static void ins_compl_new_leader __ARGS((void)); - static void ins_compl_addleader __ARGS((int c)); -! static int ins_compl_len __ARGS((void)); - static void ins_compl_restart __ARGS((void)); - static void ins_compl_set_original_text __ARGS((char_u *str)); - static void ins_compl_addfrommatch __ARGS((void)); ---- 155,164 ---- - static void ins_compl_free __ARGS((void)); - static void ins_compl_clear __ARGS((void)); - static int ins_compl_bs __ARGS((void)); -+ static int ins_compl_need_restart __ARGS((void)); - static void ins_compl_new_leader __ARGS((void)); - static void ins_compl_addleader __ARGS((int c)); -! static int ins_compl_len __ARGS((void)); - static void ins_compl_restart __ARGS((void)); - static void ins_compl_set_original_text __ARGS((char_u *str)); - static void ins_compl_addfrommatch __ARGS((void)); -*************** -*** 163,168 **** ---- 166,172 ---- - static buf_T *ins_compl_next_buf __ARGS((buf_T *buf, int flag)); - #if defined(FEAT_COMPL_FUNC) || defined(FEAT_EVAL) - static void ins_compl_add_list __ARGS((list_T *list)); -+ static void ins_compl_add_dict __ARGS((dict_T *dict)); - #endif - static int ins_compl_get_exp __ARGS((pos_T *ini)); - static void ins_compl_delete __ARGS((void)); -*************** -*** 3341,3347 **** - /* Deleted more than what was used to find matches or didn't finish - * finding all matches: need to look for matches all over again. */ - if (curwin->w_cursor.col <= compl_col + compl_length -! || compl_was_interrupted) - ins_compl_restart(); - - vim_free(compl_leader); ---- 3345,3351 ---- - /* Deleted more than what was used to find matches or didn't finish - * finding all matches: need to look for matches all over again. */ - if (curwin->w_cursor.col <= compl_col + compl_length -! || ins_compl_need_restart()) - ins_compl_restart(); - - vim_free(compl_leader); -*************** -*** 3355,3360 **** ---- 3359,3378 ---- - } - - /* -+ * Return TRUE when we need to find matches again, ins_compl_restart() is to -+ * be called. -+ */ -+ static int -+ ins_compl_need_restart() -+ { -+ /* Return TRUE if we didn't complete finding matches or when the -+ * 'completefunc' returned "always" in the "refresh" dictionary item. */ -+ return compl_was_interrupted -+ || ((ctrl_x_mode == CTRL_X_FUNCTION || ctrl_x_mode == CTRL_X_OMNI) -+ && compl_opt_refresh_always); -+ } -+ -+ /* - * Called after changing "compl_leader". - * Show the popup menu with a different set of matches. - * May also search for matches again if the previous search was interrupted. -*************** -*** 3443,3449 **** - ins_char(c); - - /* If we didn't complete finding matches we must search again. */ -! if (compl_was_interrupted) - ins_compl_restart(); - - vim_free(compl_leader); ---- 3461,3467 ---- - ins_char(c); - - /* If we didn't complete finding matches we must search again. */ -! if (ins_compl_need_restart()) - ins_compl_restart(); - - vim_free(compl_leader); -*************** -*** 3871,3882 **** - int type; /* CTRL_X_OMNI or CTRL_X_FUNCTION */ - char_u *base; - { -! list_T *matchlist; - char_u *args[2]; - char_u *funcname; - pos_T pos; - win_T *curwin_save; - buf_T *curbuf_save; - - funcname = (type == CTRL_X_FUNCTION) ? curbuf->b_p_cfu : curbuf->b_p_ofu; - if (*funcname == NUL) ---- 3889,3902 ---- - int type; /* CTRL_X_OMNI or CTRL_X_FUNCTION */ - char_u *base; - { -! list_T *matchlist = NULL; -! dict_T *matchdict = NULL; - char_u *args[2]; - char_u *funcname; - pos_T pos; - win_T *curwin_save; - buf_T *curbuf_save; -+ typval_T rettv; - - funcname = (type == CTRL_X_FUNCTION) ? curbuf->b_p_cfu : curbuf->b_p_ofu; - if (*funcname == NUL) -*************** -*** 3889,3895 **** - pos = curwin->w_cursor; - curwin_save = curwin; - curbuf_save = curbuf; -! matchlist = call_func_retlist(funcname, 2, args, FALSE); - if (curwin_save != curwin || curbuf_save != curbuf) - { - EMSG(_(e_complwin)); ---- 3909,3933 ---- - pos = curwin->w_cursor; - curwin_save = curwin; - curbuf_save = curbuf; -! -! /* Call a function, which returns a list or dict. */ -! if (call_vim_function(funcname, 2, args, FALSE, &rettv) == OK) -! { -! switch (rettv.v_type) -! { -! case VAR_LIST: -! matchlist = rettv.vval.v_list; -! break; -! case VAR_DICT: -! matchdict = rettv.vval.v_dict; -! break; -! default: -! /* TODO: Give error message? */ -! clear_tv(&rettv); -! break; -! } -! } -! - if (curwin_save != curwin || curbuf_save != curbuf) - { - EMSG(_(e_complwin)); -*************** -*** 3902,3911 **** ---- 3940,3954 ---- - EMSG(_(e_compldel)); - goto theend; - } -+ - if (matchlist != NULL) - ins_compl_add_list(matchlist); -+ else if (matchdict != NULL) -+ ins_compl_add_dict(matchdict); - - theend: -+ if (matchdict != NULL) -+ dict_unref(matchdict); - if (matchlist != NULL) - list_unref(matchlist); - } -*************** -*** 3934,3939 **** ---- 3977,4009 ---- - } - - /* -+ * Add completions from a dict. -+ */ -+ static void -+ ins_compl_add_dict(dict) -+ dict_T *dict; -+ { -+ dictitem_T *refresh; -+ dictitem_T *words; -+ -+ /* Check for optional "refresh" item. */ -+ compl_opt_refresh_always = FALSE; -+ refresh = dict_find(dict, (char_u *)"refresh", 7); -+ if (refresh != NULL && refresh->di_tv.v_type == VAR_STRING) -+ { -+ char_u *v = refresh->di_tv.vval.v_string; -+ -+ if (v != NULL && STRCMP(v, (char_u *)"always") == 0) -+ compl_opt_refresh_always = TRUE; -+ } -+ -+ /* Add completions from a "words" list. */ -+ words = dict_find(dict, (char_u *)"words", 5); -+ if (words != NULL && words->di_tv.v_type == VAR_LIST) -+ ins_compl_add_list(words->di_tv.vval.v_list); -+ } -+ -+ /* - * Add a match to the list of matches from a typeval_T. - * If the given string is already in the list of completions, then return - * NOTDONE, otherwise add it to the list and return OK. If there is an error, -*************** -*** 5088,5093 **** ---- 5158,5169 ---- - return FAIL; - } - -+ /* -+ * Reset extended parameters of completion, when start new -+ * completion. -+ */ -+ compl_opt_refresh_always = FALSE; -+ - if (col < 0) - col = curs_col; - compl_col = col; -*** ../vim-7.3.310/src/eval.c 2011-09-14 14:33:47.000000000 +0200 ---- src/eval.c 2011-09-14 16:16:47.000000000 +0200 -*************** -*** 380,388 **** - - static void prepare_vimvar __ARGS((int idx, typval_T *save_tv)); - static void restore_vimvar __ARGS((int idx, typval_T *save_tv)); -- #if defined(FEAT_USR_CMDS) && defined(FEAT_CMDL_COMPL) -- static int call_vim_function __ARGS((char_u *func, int argc, char_u **argv, int safe, typval_T *rettv)); -- #endif - static int ex_let_vars __ARGS((char_u *arg, typval_T *tv, int copy, int semicolon, int var_count, char_u *nextchars)); - static char_u *skip_var_list __ARGS((char_u *arg, int *var_count, int *semicolon)); - static char_u *skip_var_one __ARGS((char_u *arg)); ---- 380,385 ---- -*************** -*** 451,457 **** - static void set_ref_in_list __ARGS((list_T *l, int copyID)); - static void set_ref_in_item __ARGS((typval_T *tv, int copyID)); - static int rettv_dict_alloc __ARGS((typval_T *rettv)); -- static void dict_unref __ARGS((dict_T *d)); - static void dict_free __ARGS((dict_T *d, int recurse)); - static dictitem_T *dictitem_copy __ARGS((dictitem_T *org)); - static void dictitem_remove __ARGS((dict_T *dict, dictitem_T *item)); ---- 448,453 ---- -*************** -*** 1563,1569 **** - * arguments are currently supported. - * Returns OK or FAIL. - */ -! static int - call_vim_function(func, argc, argv, safe, rettv) - char_u *func; - int argc; ---- 1559,1565 ---- - * arguments are currently supported. - * Returns OK or FAIL. - */ -! int - call_vim_function(func, argc, argv, safe, rettv) - char_u *func; - int argc; -*************** -*** 6903,6909 **** - * Unreference a Dictionary: decrement the reference count and free it when it - * becomes zero. - */ -! static void - dict_unref(d) - dict_T *d; - { ---- 6899,6905 ---- - * Unreference a Dictionary: decrement the reference count and free it when it - * becomes zero. - */ -! void - dict_unref(d) - dict_T *d; - { -*** ../vim-7.3.310/src/proto/eval.pro 2010-08-15 21:57:28.000000000 +0200 ---- src/proto/eval.pro 2011-09-14 16:16:47.000000000 +0200 -*************** -*** 23,28 **** ---- 23,29 ---- - list_T *eval_spell_expr __ARGS((char_u *badword, char_u *expr)); - int get_spellword __ARGS((list_T *list, char_u **pp)); - typval_T *eval_expr __ARGS((char_u *arg, char_u **nextcmd)); -+ int call_vim_function __ARGS((char_u *func, int argc, char_u **argv, int safe, typval_T *rettv)); - void *call_func_retstr __ARGS((char_u *func, int argc, char_u **argv, int safe)); - long call_func_retnr __ARGS((char_u *func, int argc, char_u **argv, int safe)); - void *call_func_retlist __ARGS((char_u *func, int argc, char_u **argv, int safe)); -*************** -*** 52,57 **** ---- 53,59 ---- - int list_append_string __ARGS((list_T *l, char_u *str, int len)); - int garbage_collect __ARGS((void)); - dict_T *dict_alloc __ARGS((void)); -+ void dict_unref __ARGS((dict_T *d)); - dictitem_T *dictitem_alloc __ARGS((char_u *key)); - void dictitem_free __ARGS((dictitem_T *item)); - int dict_add __ARGS((dict_T *d, dictitem_T *item)); -*** ../vim-7.3.310/src/version.c 2011-09-14 16:04:52.000000000 +0200 ---- src/version.c 2011-09-14 16:25:08.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 311, - /**/ - --- -Contrary to popular belief, it's often your clothing that gets promoted, not -you. - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.312 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.312 (after 7.3.306) -Problem: Can't compile with tiny features. -Solution: Add #ifdef around win_valid(). -Files: src/buffer.c - - -*** ../vim-7.3.311/src/buffer.c 2011-09-14 14:43:21.000000000 +0200 ---- src/buffer.c 2011-09-14 17:46:24.000000000 +0200 -*************** -*** 416,422 **** - #endif - - buf_freeall(buf, (del_buf ? BFA_DEL : 0) + (wipe_buf ? BFA_WIPE : 0)); -! if (win_valid(win) && win->w_buffer == buf) - win->w_buffer = NULL; /* make sure we don't use the buffer now */ - - #ifdef FEAT_AUTOCMD ---- 416,426 ---- - #endif - - buf_freeall(buf, (del_buf ? BFA_DEL : 0) + (wipe_buf ? BFA_WIPE : 0)); -! if ( -! #ifdef FEAT_WINDOWS -! win_valid(win) && -! #endif -! win->w_buffer == buf) - win->w_buffer = NULL; /* make sure we don't use the buffer now */ - - #ifdef FEAT_AUTOCMD -*** ../vim-7.3.311/src/version.c 2011-09-14 16:52:02.000000000 +0200 ---- src/version.c 2011-09-14 17:27:24.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 312, - /**/ - --- -You have heard the saying that if you put a thousand monkeys in a room with a -thousand typewriters and waited long enough, eventually you would have a room -full of dead monkeys. - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.313 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.313 (after 7.3.307) -Problem: One more warning when compiling with dynamic Python 3. -Solution: Change PySliceObject to PyObject. -Files: src/if_python3.c - - -*** ../vim-7.3.312/src/if_python3.c 2011-09-14 15:41:54.000000000 +0200 ---- src/if_python3.c 2011-09-14 18:54:49.000000000 +0200 -*************** -*** 194,200 **** - static int (*py3_PySys_SetObject)(char *, PyObject *); - static PyObject* (*py3_PyList_Append)(PyObject *, PyObject *); - static Py_ssize_t (*py3_PyList_Size)(PyObject *); -! static int (*py3_PySlice_GetIndicesEx)(PySliceObject *r, Py_ssize_t length, - Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step, Py_ssize_t *slicelength); - static PyObject* (*py3_PyErr_NoMemory)(void); - static void (*py3_Py_Finalize)(void); ---- 194,200 ---- - static int (*py3_PySys_SetObject)(char *, PyObject *); - static PyObject* (*py3_PyList_Append)(PyObject *, PyObject *); - static Py_ssize_t (*py3_PyList_Size)(PyObject *); -! static int (*py3_PySlice_GetIndicesEx)(PyObject *r, Py_ssize_t length, - Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step, Py_ssize_t *slicelength); - static PyObject* (*py3_PyErr_NoMemory)(void); - static void (*py3_Py_Finalize)(void); -*** ../vim-7.3.312/src/version.c 2011-09-14 17:50:05.000000000 +0200 ---- src/version.c 2011-09-14 18:56:03.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 313, - /**/ - --- -All good vision statements are created by groups of people with bloated -bladders who would rather be doing anything else. - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.314 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.314 (after 7.3.304) -Problem: Missing parenthesis. -Solution: Add it. (Benjamin R. Haskell) -Files: src/Make_mvc.mak - - -*** ../vim-7.3.313/src/Make_mvc.mak 2011-09-14 10:49:44.000000000 +0200 ---- src/Make_mvc.mak 2011-09-14 18:56:24.000000000 +0200 -*************** -*** 785,791 **** - PERL_INC = /I $(PERL_INCDIR) - PERL_OBJ = $(OUTDIR)\if_perl.obj $(OUTDIR)\if_perlsfio.obj - XSUBPP = $(PERL)\lib\ExtUtils\xsubpp -! !if exist($(XSUBPP) - XSUBPP = $(PERL_EXE) $(XSUBPP) - !else - XSUBPP = xsubpp ---- 785,791 ---- - PERL_INC = /I $(PERL_INCDIR) - PERL_OBJ = $(OUTDIR)\if_perl.obj $(OUTDIR)\if_perlsfio.obj - XSUBPP = $(PERL)\lib\ExtUtils\xsubpp -! !if exist($(XSUBPP)) - XSUBPP = $(PERL_EXE) $(XSUBPP) - !else - XSUBPP = xsubpp -*** ../vim-7.3.313/src/version.c 2011-09-14 18:59:35.000000000 +0200 ---- src/version.c 2011-09-14 19:01:12.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 314, - /**/ - --- -Often you're less important than your furniture. If you think about it, you -can get fired but your furniture stays behind, gainfully employed at the -company that didn't need _you_ anymore. - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.315 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.315 -Problem: Opening a window before forking causes problems for GTK. -Solution: Fork first, create the window in the child and report back to the - parent process whether it worked. If successful the parent exits, - if unsuccessful the child exits and the parent continues in the - terminal. (Tim Starling) -Files: src/gui.c - - -*** ../vim-7.3.314/src/gui.c 2011-08-10 17:44:41.000000000 +0200 ---- src/gui.c 2011-09-14 17:34:30.000000000 +0200 -*************** -*** 37,42 **** ---- 37,60 ---- - static void gui_set_bg_color __ARGS((char_u *name)); - static win_T *xy2win __ARGS((int x, int y)); - -+ #if defined(UNIX) && !defined(__BEOS__) && !defined(MACOS_X) \ -+ && !defined(__APPLE__) -+ # define MAY_FORK -+ static void gui_do_fork __ARGS((void)); -+ -+ static int gui_read_child_pipe __ARGS((int fd)); -+ -+ /* Return values for gui_read_child_pipe */ -+ enum { -+ GUI_CHILD_IO_ERROR, -+ GUI_CHILD_OK, -+ GUI_CHILD_FAILED -+ }; -+ -+ #endif /* MAY_FORK */ -+ -+ static void gui_attempt_start __ARGS((void)); -+ - static int can_update_cursor = TRUE; /* can display the cursor */ - - /* -*************** -*** 59,105 **** - gui_start() - { - char_u *old_term; -- #if defined(UNIX) && !defined(__BEOS__) && !defined(MACOS_X) \ -- && !defined(__APPLE__) -- # define MAY_FORK -- int dofork = TRUE; -- #endif - static int recursive = 0; - - old_term = vim_strsave(T_NAME); - -- /* -- * Set_termname() will call gui_init() to start the GUI. -- * Set the "starting" flag, to indicate that the GUI will start. -- * -- * We don't want to open the GUI shell until after we've read .gvimrc, -- * otherwise we don't know what font we will use, and hence we don't know -- * what size the shell should be. So if there are errors in the .gvimrc -- * file, they will have to go to the terminal: Set full_screen to FALSE. -- * full_screen will be set to TRUE again by a successful termcapinit(). -- */ - settmode(TMODE_COOK); /* stop RAW mode */ - if (full_screen) - cursor_on(); /* needed for ":gui" in .vimrc */ -- gui.starting = TRUE; - full_screen = FALSE; - -! #ifdef FEAT_GUI_GTK -! gui.event_time = GDK_CURRENT_TIME; -! #endif - - #ifdef MAY_FORK -! if (!gui.dofork || vim_strchr(p_go, GO_FORG) || recursive) -! dofork = FALSE; - #endif -! ++recursive; -! -! termcapinit((char_u *)"builtin_gui"); -! gui.starting = recursive - 1; - - if (!gui.in_use) /* failed to start GUI */ - { -! termcapinit(old_term); /* back to old term settings */ - settmode(TMODE_RAW); /* restart RAW mode */ - #ifdef FEAT_TITLE - set_title_defaults(); /* set 'title' and 'icon' again */ ---- 77,123 ---- - gui_start() - { - char_u *old_term; - static int recursive = 0; - - old_term = vim_strsave(T_NAME); - - settmode(TMODE_COOK); /* stop RAW mode */ - if (full_screen) - cursor_on(); /* needed for ":gui" in .vimrc */ - full_screen = FALSE; - -! ++recursive; - - #ifdef MAY_FORK -! /* -! * Quit the current process and continue in the child. -! * Makes "gvim file" disconnect from the shell it was started in. -! * Don't do this when Vim was started with "-f" or the 'f' flag is present -! * in 'guioptions'. -! */ -! if (gui.dofork && !vim_strchr(p_go, GO_FORG) && recursive <= 1) -! { -! gui_do_fork(); -! } -! else - #endif -! { -! gui_attempt_start(); -! } - - if (!gui.in_use) /* failed to start GUI */ - { -! /* Back to old term settings -! * -! * FIXME: If we got here because a child process failed and flagged to -! * the parent to resume, and X11 is enabled with FEAT_TITLE, this will -! * hit an X11 I/O error and do a longjmp(), leaving recursive -! * permanently set to 1. This is probably not as big a problem as it -! * sounds, because gui_mch_init() in both gui_x11.c and gui_gtk_x11.c -! * return "OK" unconditionally, so it would be very difficult to -! * actually hit this case. -! */ -! termcapinit(old_term); - settmode(TMODE_RAW); /* restart RAW mode */ - #ifdef FEAT_TITLE - set_title_defaults(); /* set 'title' and 'icon' again */ -*************** -*** 108,113 **** ---- 126,166 ---- - - vim_free(old_term); - -+ #ifdef FEAT_AUTOCMD -+ /* If the GUI started successfully, trigger the GUIEnter event, otherwise -+ * the GUIFailed event. */ -+ gui_mch_update(); -+ apply_autocmds(gui.in_use ? EVENT_GUIENTER : EVENT_GUIFAILED, -+ NULL, NULL, FALSE, curbuf); -+ #endif -+ --recursive; -+ } -+ -+ /* -+ * Set_termname() will call gui_init() to start the GUI. -+ * Set the "starting" flag, to indicate that the GUI will start. -+ * -+ * We don't want to open the GUI shell until after we've read .gvimrc, -+ * otherwise we don't know what font we will use, and hence we don't know -+ * what size the shell should be. So if there are errors in the .gvimrc -+ * file, they will have to go to the terminal: Set full_screen to FALSE. -+ * full_screen will be set to TRUE again by a successful termcapinit(). -+ */ -+ static void -+ gui_attempt_start() -+ { -+ static int recursive = 0; -+ -+ ++recursive; -+ gui.starting = TRUE; -+ -+ #ifdef FEAT_GUI_GTK -+ gui.event_time = GDK_CURRENT_TIME; -+ #endif -+ -+ termcapinit((char_u *)"builtin_gui"); -+ gui.starting = recursive - 1; -+ - #if defined(FEAT_GUI_GTK) || defined(FEAT_GUI_X11) - if (gui.in_use) - { -*************** -*** 123,218 **** - display_errors(); - } - #endif - -! #if defined(MAY_FORK) && !defined(__QNXNTO__) -! /* -! * Quit the current process and continue in the child. -! * Makes "gvim file" disconnect from the shell it was started in. -! * Don't do this when Vim was started with "-f" or the 'f' flag is present -! * in 'guioptions'. -! */ -! if (gui.in_use && dofork) - { -! int pipefd[2]; /* pipe between parent and child */ -! int pipe_error; -! char dummy; -! pid_t pid = -1; -! -! /* Setup a pipe between the child and the parent, so that the parent -! * knows when the child has done the setsid() call and is allowed to -! * exit. */ -! pipe_error = (pipe(pipefd) < 0); -! pid = fork(); -! if (pid > 0) /* Parent */ - { -! /* Give the child some time to do the setsid(), otherwise the -! * exit() may kill the child too (when starting gvim from inside a -! * gvim). */ -! if (pipe_error) -! ui_delay(300L, TRUE); -! else - { -! /* The read returns when the child closes the pipe (or when -! * the child dies for some reason). */ -! close(pipefd[1]); -! ignored = (int)read(pipefd[0], &dummy, (size_t)1); -! close(pipefd[0]); - } -! -! /* When swapping screens we may need to go to the next line, e.g., -! * after a hit-enter prompt and using ":gui". */ -! if (newline_on_exit) -! mch_errmsg("\r\n"); -! -! /* -! * The parent must skip the normal exit() processing, the child -! * will do it. For example, GTK messes up signals when exiting. -! */ -! _exit(0); - } - -! # if defined(HAVE_SETSID) || defined(HAVE_SETPGID) - /* -! * Change our process group. On some systems/shells a CTRL-C in the -! * shell where Vim was started would otherwise kill gvim! - */ -! if (pid == 0) /* child */ - # if defined(HAVE_SETSID) -! (void)setsid(); - # else -! (void)setpgid(0, 0); - # endif - # endif -! if (!pipe_error) -! { -! close(pipefd[0]); -! close(pipefd[1]); -! } - - # if defined(FEAT_GUI_GNOME) && defined(FEAT_SESSION) -! /* Tell the session manager our new PID */ -! gui_mch_forked(); - # endif - } -- #else -- # if defined(__QNXNTO__) -- if (gui.in_use && dofork) -- procmgr_daemon(0, PROCMGR_DAEMON_KEEPUMASK | PROCMGR_DAEMON_NOCHDIR | -- PROCMGR_DAEMON_NOCLOSE | PROCMGR_DAEMON_NODEVNULL); -- # endif -- #endif - -! #ifdef FEAT_AUTOCMD -! /* If the GUI started successfully, trigger the GUIEnter event, otherwise -! * the GUIFailed event. */ -! gui_mch_update(); -! apply_autocmds(gui.in_use ? EVENT_GUIENTER : EVENT_GUIFAILED, -! NULL, NULL, FALSE, curbuf); - #endif - -! --recursive; - } - - /* - * Call this when vim starts up, whether or not the GUI is started - */ ---- 176,346 ---- - display_errors(); - } - #endif -+ --recursive; -+ } - -! #ifdef MAY_FORK -! -! /* for waitpid() */ -! # if defined(HAVE_SYS_WAIT_H) || defined(HAVE_UNION_WAIT) -! # include <sys/wait.h> -! # endif -! -! /* -! * Create a new process, by forking. In the child, start the GUI, and in -! * the parent, exit. -! * -! * If something goes wrong, this will return with gui.in_use still set -! * to FALSE, in which case the caller should continue execution without -! * the GUI. -! * -! * If the child fails to start the GUI, then the child will exit and the -! * parent will return. If the child succeeds, then the parent will exit -! * and the child will return. -! */ -! static void -! gui_do_fork() -! { -! #ifdef __QNXNTO__ -! procmgr_daemon(0, PROCMGR_DAEMON_KEEPUMASK | PROCMGR_DAEMON_NOCHDIR | -! PROCMGR_DAEMON_NOCLOSE | PROCMGR_DAEMON_NODEVNULL); -! gui_attempt_start(); -! return; -! #else -! int pipefd[2]; /* pipe between parent and child */ -! int pipe_error; -! int status; -! int exit_status; -! pid_t pid = -1; -! FILE *parent_file; -! -! /* Setup a pipe between the child and the parent, so that the parent -! * knows when the child has done the setsid() call and is allowed to -! * exit. */ -! pipe_error = (pipe(pipefd) < 0); -! pid = fork(); -! if (pid < 0) /* Fork error */ - { -! EMSG(_("E851: Failed to create a new process for the GUI")); -! return; -! } -! else if (pid > 0) /* Parent */ -! { -! /* Give the child some time to do the setsid(), otherwise the -! * exit() may kill the child too (when starting gvim from inside a -! * gvim). */ -! if (!pipe_error) - { -! /* The read returns when the child closes the pipe (or when -! * the child dies for some reason). */ -! close(pipefd[1]); -! status = gui_read_child_pipe(pipefd[0]); -! if (status == GUI_CHILD_FAILED) - { -! /* The child failed to start the GUI, so the caller must -! * continue. There may be more error information written -! * to stderr by the child. */ -! # ifdef __NeXT__ -! wait4(pid, &exit_status, 0, (struct rusage *)0); -! # else -! waitpid(pid, &exit_status, 0); -! # endif -! EMSG(_("E852: The child process failed to start the GUI")); -! return; - } -! else if (status == GUI_CHILD_IO_ERROR) -! { -! pipe_error = TRUE; -! } -! /* else GUI_CHILD_OK: parent exit */ - } - -! if (pipe_error) -! ui_delay(300L, TRUE); -! -! /* When swapping screens we may need to go to the next line, e.g., -! * after a hit-enter prompt and using ":gui". */ -! if (newline_on_exit) -! mch_errmsg("\r\n"); -! - /* -! * The parent must skip the normal exit() processing, the child -! * will do it. For example, GTK messes up signals when exiting. - */ -! _exit(0); -! } -! /* Child */ -! -! # if defined(HAVE_SETSID) || defined(HAVE_SETPGID) -! /* -! * Change our process group. On some systems/shells a CTRL-C in the -! * shell where Vim was started would otherwise kill gvim! -! */ - # if defined(HAVE_SETSID) -! (void)setsid(); - # else -! (void)setpgid(0, 0); - # endif - # endif -! if (!pipe_error) -! close(pipefd[0]); - - # if defined(FEAT_GUI_GNOME) && defined(FEAT_SESSION) -! /* Tell the session manager our new PID */ -! gui_mch_forked(); - # endif -+ -+ if (!pipe_error) -+ parent_file = fdopen(pipefd[1], "w"); -+ else -+ parent_file = NULL; -+ -+ /* Try to start the GUI */ -+ gui_attempt_start(); -+ -+ /* Notify the parent */ -+ if (parent_file != NULL) -+ { -+ fputs(gui.in_use ? "ok" : "fail", parent_file); -+ fclose(parent_file); - } - -! /* If we failed to start the GUI, exit now. */ -! if (!gui.in_use) -! exit(1); - #endif -+ } - -! /* -! * Read from a pipe assumed to be connected to the child process (this -! * function is called from the parent). -! * Return GUI_CHILD_OK if the child successfully started the GUI, -! * GUY_CHILD_FAILED if the child failed, or GUI_CHILD_IO_ERROR if there was -! * some other error. -! * -! * The file descriptor will be closed before the function returns. -! */ -! static int -! gui_read_child_pipe(int fd) -! { -! size_t bytes_read; -! FILE *file; -! char buffer[10]; -! -! file = fdopen(fd, "r"); -! if (!file) -! return GUI_CHILD_IO_ERROR; -! -! bytes_read = fread(buffer, sizeof(char), sizeof(buffer)-1, file); -! buffer[bytes_read] = '\0'; -! fclose(file); -! if (strcmp(buffer, "ok") == 0) -! return GUI_CHILD_OK; -! return GUI_CHILD_FAILED; - } - -+ #endif /* MAY_FORK */ -+ - /* - * Call this when vim starts up, whether or not the GUI is started - */ -*** ../vim-7.3.314/src/version.c 2011-09-14 19:01:38.000000000 +0200 ---- src/version.c 2011-09-14 19:02:45.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 315, - /**/ - --- -A)bort, R)etry, B)ang it with a large hammer - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.316 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.316 (after 7.3.306) -Problem: Crash when 'colorcolumn' is set and closing buffer. -Solution: Check for w_buffer to be NULL. (Yasuhiro Matsumoto) -Files: src/option.c - - -*** ../vim-7.3.315/src/option.c 2011-06-12 22:13:37.000000000 +0200 ---- src/option.c 2011-09-21 13:26:31.000000000 +0200 -*************** -*** 7036,7041 **** ---- 7036,7044 ---- - int i; - int j = 0; - -+ if (wp->w_buffer == NULL) -+ return NULL; /* buffer was closed */ -+ - for (s = wp->w_p_cc; *s != NUL && count < 255;) - { - if (*s == '-' || *s == '+') -*** ../vim-7.3.315/src/version.c 2011-09-14 19:04:35.000000000 +0200 ---- src/version.c 2011-09-21 13:40:05.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 316, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -25. You believe nothing looks sexier than a man in boxer shorts illuminated - only by a 17" inch svga monitor. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.317 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.317 -Problem: Calling debug.debug() in Lua may cause Vim to hang. -Solution: Add a better debug method. (Rob Hoelz, Luis Carvalho) -Files: src/if_lua.c - - -*** ../vim-7.3.316/src/if_lua.c 2011-01-17 19:53:20.000000000 +0100 ---- src/if_lua.c 2011-09-21 17:15:21.000000000 +0200 -*************** -*** 100,105 **** ---- 100,106 ---- - #define lua_setfield dll_lua_setfield - #define lua_rawset dll_lua_rawset - #define lua_rawseti dll_lua_rawseti -+ #define lua_remove dll_lua_remove - #define lua_setmetatable dll_lua_setmetatable - #define lua_call dll_lua_call - #define lua_pcall dll_lua_pcall -*************** -*** 161,166 **** ---- 162,168 ---- - void (*dll_lua_setfield) (lua_State *L, int idx, const char *k); - void (*dll_lua_rawset) (lua_State *L, int idx); - void (*dll_lua_rawseti) (lua_State *L, int idx, int n); -+ void (*dll_lua_remove) (lua_State *L, int idx); - int (*dll_lua_setmetatable) (lua_State *L, int objindex); - void (*dll_lua_call) (lua_State *L, int nargs, int nresults); - int (*dll_lua_pcall) (lua_State *L, int nargs, int nresults, int errfunc); -*************** -*** 229,234 **** ---- 231,237 ---- - {"lua_setfield", (luaV_function) &dll_lua_setfield}, - {"lua_rawset", (luaV_function) &dll_lua_rawset}, - {"lua_rawseti", (luaV_function) &dll_lua_rawseti}, -+ {"lua_remove", (luaV_function) &dll_lua_remove}, - {"lua_setmetatable", (luaV_function) &dll_lua_setmetatable}, - {"lua_call", (luaV_function) &dll_lua_call}, - {"lua_pcall", (luaV_function) &dll_lua_pcall}, -*************** -*** 924,929 **** ---- 927,957 ---- - } - - static int -+ luaV_debug(lua_State *L) -+ { -+ lua_settop(L, 0); -+ lua_getglobal(L, "vim"); -+ lua_getfield(L, -1, "eval"); -+ lua_remove(L, -2); /* vim.eval at position 1 */ -+ for (;;) -+ { -+ const char *input; -+ size_t l; -+ lua_pushvalue(L, 1); /* vim.eval */ -+ lua_pushliteral(L, "input('lua_debug> ')"); -+ lua_call(L, 1, 1); /* return string */ -+ input = lua_tolstring(L, -1, &l); -+ if (l == 0 || strcmp(input, "cont") == 0) -+ return 0; -+ msg_putchar('\n'); /* avoid outputting on input line */ -+ if (luaL_loadbuffer(L, input, l, "=(debug command)") -+ || lua_pcall(L, 0, 0, 0)) -+ luaV_emsg(L); -+ lua_settop(L, 1); /* remove eventual returns, but keep vim.eval */ -+ } -+ } -+ -+ static int - luaV_command(lua_State *L) - { - do_cmdline_cmd((char_u *) luaL_checkstring(L, 1)); -*************** -*** 1082,1087 **** ---- 1110,1120 ---- - /* print */ - lua_pushcfunction(L, luaV_print); - lua_setglobal(L, "print"); -+ /* debug.debug */ -+ lua_getglobal(L, "debug"); -+ lua_pushcfunction(L, luaV_debug); -+ lua_setfield(L, -2, "debug"); -+ lua_pop(L, 1); - /* free */ - lua_pushlightuserdata(L, (void *) LUAVIM_FREE); - lua_pushcfunction(L, luaV_free); -*** ../vim-7.3.316/src/version.c 2011-09-21 13:40:13.000000000 +0200 ---- src/version.c 2011-09-21 17:14:01.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 317, - /**/ - --- -Q: What is the difference betwee open-source and commercial software? -A: If you have a problem with commercial software you can call a phone - number and they will tell you it might be solved in a future version. - For open-source software there isn't a phone number to call, but you - get the solution within a day. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.318 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.318 -Problem: "C" on the last line deletes that line if it's blank. -Solution: Only delete the last line for a delete operation. (James Vega) -Files: src/ops.c - - -*** ../vim-7.3.317/src/ops.c 2011-08-10 12:10:55.000000000 +0200 ---- src/ops.c 2011-09-21 17:32:36.000000000 +0200 -*************** -*** 1922,1928 **** - curwin->w_cursor.coladd = 0; - } - #endif -! if (oap->inclusive && oap->end.lnum == curbuf->b_ml.ml_line_count - && n > (int)STRLEN(ml_get(oap->end.lnum))) - { - /* Special case: gH<Del> deletes the last line. */ ---- 1922,1930 ---- - curwin->w_cursor.coladd = 0; - } - #endif -! if (oap->op_type == OP_DELETE -! && oap->inclusive -! && oap->end.lnum == curbuf->b_ml.ml_line_count - && n > (int)STRLEN(ml_get(oap->end.lnum))) - { - /* Special case: gH<Del> deletes the last line. */ -*************** -*** 3331,3338 **** - if (regname == '=') - { - /* For the = register we need to split the string at NL -! * characters. */ -! /* Loop twice: count the number of lines and save them. */ - for (;;) - { - y_size = 0; ---- 3333,3340 ---- - if (regname == '=') - { - /* For the = register we need to split the string at NL -! * characters. -! * Loop twice: count the number of lines and save them. */ - for (;;) - { - y_size = 0; -*************** -*** 3348,3354 **** - if (y_array != NULL) - *ptr = NUL; - ++ptr; -! /* A trailing '\n' makes the string linewise */ - if (*ptr == NUL) - { - y_type = MLINE; ---- 3350,3356 ---- - if (y_array != NULL) - *ptr = NUL; - ++ptr; -! /* A trailing '\n' makes the register linewise. */ - if (*ptr == NUL) - { - y_type = MLINE; -*** ../vim-7.3.317/src/version.c 2011-09-21 17:15:34.000000000 +0200 ---- src/version.c 2011-09-21 17:31:48.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 318, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -26. You check your mail. It says "no new messages." So you check it again. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.319 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.319 (after 7.3.311) -Problem: Redobuff doesn't always include changes of the completion leader. -Solution: Insert backspaces as needed. (idea by Taro Muraoka) -Files: src/edit.c - - -*** ../vim-7.3.318/src/edit.c 2011-09-14 16:52:02.000000000 +0200 ---- src/edit.c 2011-09-21 17:59:10.000000000 +0200 -*************** -*** 163,168 **** ---- 163,169 ---- - static void ins_compl_set_original_text __ARGS((char_u *str)); - static void ins_compl_addfrommatch __ARGS((void)); - static int ins_compl_prep __ARGS((int c)); -+ static void ins_compl_fixRedoBufForLeader __ARGS((char_u *ptr_arg)); - static buf_T *ins_compl_next_buf __ARGS((buf_T *buf, int flag)); - #if defined(FEAT_COMPL_FUNC) || defined(FEAT_EVAL) - static void ins_compl_add_list __ARGS((list_T *list)); -*************** -*** 3713,3721 **** - * memory that was used, and make sure we can redo the insert. */ - if (compl_curr_match != NULL || compl_leader != NULL || c == Ctrl_E) - { -- char_u *p; -- int temp = 0; -- - /* - * If any of the original typed text has been changed, eg when - * ignorecase is set, we must add back-spaces to the redo ---- 3714,3719 ---- -*************** -*** 3726,3750 **** - */ - if (compl_curr_match != NULL && compl_used_match && c != Ctrl_E) - ptr = compl_curr_match->cp_str; -- else if (compl_leader != NULL) -- ptr = compl_leader; - else -! ptr = compl_orig_text; -! if (compl_orig_text != NULL) -! { -! p = compl_orig_text; -! for (temp = 0; p[temp] != NUL && p[temp] == ptr[temp]; -! ++temp) -! ; -! #ifdef FEAT_MBYTE -! if (temp > 0) -! temp -= (*mb_head_off)(compl_orig_text, p + temp); -! #endif -! for (p += temp; *p != NUL; mb_ptr_adv(p)) -! AppendCharToRedobuff(K_BS); -! } -! if (ptr != NULL) -! AppendToRedobuffLit(ptr + temp, -1); - } - - #ifdef FEAT_CINDENT ---- 3724,3732 ---- - */ - if (compl_curr_match != NULL && compl_used_match && c != Ctrl_E) - ptr = compl_curr_match->cp_str; - else -! ptr = NULL; -! ins_compl_fixRedoBufForLeader(ptr); - } - - #ifdef FEAT_CINDENT -*************** -*** 3834,3839 **** ---- 3816,3859 ---- - } - - /* -+ * Fix the redo buffer for the completion leader replacing some of the typed -+ * text. This inserts backspaces and appends the changed text. -+ * "ptr" is the known leader text or NUL. -+ */ -+ static void -+ ins_compl_fixRedoBufForLeader(ptr_arg) -+ char_u *ptr_arg; -+ { -+ int len; -+ char_u *p; -+ char_u *ptr = ptr_arg; -+ -+ if (ptr == NULL) -+ { -+ if (compl_leader != NULL) -+ ptr = compl_leader; -+ else -+ return; /* nothing to do */ -+ } -+ if (compl_orig_text != NULL) -+ { -+ p = compl_orig_text; -+ for (len = 0; p[len] != NUL && p[len] == ptr[len]; ++len) -+ ; -+ #ifdef FEAT_MBYTE -+ if (len > 0) -+ len -= (*mb_head_off)(p, p + len); -+ #endif -+ for (p += len; *p != NUL; mb_ptr_adv(p)) -+ AppendCharToRedobuff(K_BS); -+ } -+ else -+ len = 0; -+ if (ptr != NULL) -+ AppendToRedobuffLit(ptr + len, -1); -+ } -+ -+ /* - * Loops through the list of windows, loaded-buffers or non-loaded-buffers - * (depending on flag) starting from buf and looking for a non-scanned - * buffer (other than curbuf). curbuf is special, if it is called with -*************** -*** 5241,5246 **** ---- 5261,5270 ---- - else - edit_submode = (char_u *)_(CTRL_X_MSG(ctrl_x_mode)); - -+ /* If any of the original typed text has been changed we need to fix -+ * the redo buffer. */ -+ ins_compl_fixRedoBufForLeader(NULL); -+ - /* Always add completion for the original text. */ - vim_free(compl_orig_text); - compl_orig_text = vim_strnsave(line + compl_col, compl_length); -*** ../vim-7.3.318/src/version.c 2011-09-21 17:33:49.000000000 +0200 ---- src/version.c 2011-09-21 18:21:07.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 319, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -27. You refer to your age as 3.x. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.320 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.320 -Problem: When a 0xa0 character is in a sourced file the error message for - unrecognized command does not show the problem. -Solution: Display 0xa0 as <a0>. -Files: src/ex_docmd.c - - -*** ../vim-7.3.319/src/ex_docmd.c 2011-07-20 16:36:35.000000000 +0200 ---- src/ex_docmd.c 2011-09-21 19:02:15.000000000 +0200 -*************** -*** 61,66 **** ---- 61,67 ---- - static char_u *do_one_cmd __ARGS((char_u **, int, char_u *(*fgetline)(int, void *, int), void *cookie)); - static int if_level = 0; /* depth in :if */ - #endif -+ static void append_command __ARGS((char_u *cmd)); - static char_u *find_command __ARGS((exarg_T *eap, int *full)); - - static void ex_abbreviate __ARGS((exarg_T *eap)); -*************** -*** 2136,2145 **** - { - STRCPY(IObuff, _("E492: Not an editor command")); - if (!sourcing) -! { -! STRCAT(IObuff, ": "); -! STRNCAT(IObuff, *cmdlinep, 40); -! } - errormsg = IObuff; - } - goto doend; ---- 2137,2143 ---- - { - STRCPY(IObuff, _("E492: Not an editor command")); - if (!sourcing) -! append_command(*cmdlinep); - errormsg = IObuff; - } - goto doend; -*************** -*** 2708,2715 **** - STRCPY(IObuff, errormsg); - errormsg = IObuff; - } -! STRCAT(errormsg, ": "); -! STRNCAT(errormsg, *cmdlinep, IOSIZE - STRLEN(IObuff) - 1); - } - emsg(errormsg); - } ---- 2706,2712 ---- - STRCPY(IObuff, errormsg); - errormsg = IObuff; - } -! append_command(*cmdlinep); - } - emsg(errormsg); - } -*************** -*** 2797,2802 **** ---- 2794,2835 ---- - } - - /* -+ * Append "cmd" to the error message in IObuff. -+ * Takes care of limiting the length and handling 0xa0, which would be -+ * invisible otherwise. -+ */ -+ static void -+ append_command(cmd) -+ char_u *cmd; -+ { -+ char_u *s = cmd; -+ char_u *d; -+ -+ STRCAT(IObuff, ": "); -+ d = IObuff + STRLEN(IObuff); -+ while (*s != NUL && d - IObuff < IOSIZE - 7) -+ { -+ if ( -+ #ifdef FEAT_MBYTE -+ enc_utf8 ? (s[0] == 0xc2 && s[1] == 0xa0) : -+ #endif -+ *s == 0xa0) -+ { -+ s += -+ #ifdef FEAT_MBYTE -+ enc_utf8 ? 2 : -+ #endif -+ 1; -+ STRCPY(d, "<a0>"); -+ d += 4; -+ } -+ else -+ MB_COPY_CHAR(s, d); -+ } -+ *d = NUL; -+ } -+ -+ /* - * Find an Ex command by its name, either built-in or user. - * Start of the name can be found at eap->cmd. - * Returns pointer to char after the command name. -*** ../vim-7.3.319/src/version.c 2011-09-21 18:23:02.000000000 +0200 ---- src/version.c 2011-09-21 19:04:35.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 320, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -28. You have comandeered your teenager's phone line for the net and even his - friends know not to call on his line anymore. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.321 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.321 -Problem: Code not following Vim style. -Solution: Fix the style. (Elias Diem) -Files: src/os_qnx.c - - -*** ../vim-7.3.320/src/os_qnx.c 2011-06-19 01:14:22.000000000 +0200 ---- src/os_qnx.c 2011-09-21 19:48:08.000000000 +0200 -*************** -*** 24,33 **** - #if defined(FEAT_GUI_PHOTON) - PhChannelParms_t parms; - -! memset( &parms, 0, sizeof( parms ) ); - parms.flags = Ph_DYNAMIC_BUFFER; - -! is_photon_available = (PhAttach( NULL, &parms ) != NULL) ? TRUE : FALSE; - #endif - } - ---- 24,33 ---- - #if defined(FEAT_GUI_PHOTON) - PhChannelParms_t parms; - -! memset(&parms, 0, sizeof(parms)); - parms.flags = Ph_DYNAMIC_BUFFER; - -! is_photon_available = (PhAttach(NULL, &parms) != NULL) ? TRUE : FALSE; - #endif - } - -*************** -*** 39,46 **** - /* Turn on the clipboard for a console vim when photon is running */ - void qnx_clip_init() - { -! if( is_photon_available == TRUE && !gui.in_use) -! clip_init( TRUE ); - } - - /*****************************************************************************/ ---- 39,46 ---- - /* Turn on the clipboard for a console vim when photon is running */ - void qnx_clip_init() - { -! if (is_photon_available == TRUE && !gui.in_use) -! clip_init(TRUE); - } - - /*****************************************************************************/ -*************** -*** 48,79 **** - - /* No support for owning the clipboard */ - int -! clip_mch_own_selection( VimClipboard *cbd ) - { - return FALSE; - } - - void -! clip_mch_lose_selection( VimClipboard *cbd ) - { - } - - void -! clip_mch_request_selection( VimClipboard *cbd ) - { - int type = MLINE, clip_length = 0, is_type_set = FALSE; - void *cbdata; - PhClipHeader *clip_header; - char_u *clip_text = NULL; - -! cbdata = PhClipboardPasteStart( PhInputGroup( NULL )); -! if( cbdata != NULL ) - { - /* Look for the vim specific clip first */ -! clip_header = PhClipboardPasteType( cbdata, CLIP_TYPE_VIM ); -! if( clip_header != NULL && clip_header->data != NULL ) - { -! switch( *(char *) clip_header->data ) - { - default: /* fallthrough to line type */ - case 'L': type = MLINE; break; ---- 48,79 ---- - - /* No support for owning the clipboard */ - int -! clip_mch_own_selection(VimClipboard *cbd) - { - return FALSE; - } - - void -! clip_mch_lose_selection(VimClipboard *cbd) - { - } - - void -! clip_mch_request_selection(VimClipboard *cbd) - { - int type = MLINE, clip_length = 0, is_type_set = FALSE; - void *cbdata; - PhClipHeader *clip_header; - char_u *clip_text = NULL; - -! cbdata = PhClipboardPasteStart(PhInputGroup(NULL)); -! if (cbdata != NULL) - { - /* Look for the vim specific clip first */ -! clip_header = PhClipboardPasteType(cbdata, CLIP_TYPE_VIM); -! if (clip_header != NULL && clip_header->data != NULL) - { -! switch(*(char *) clip_header->data) - { - default: /* fallthrough to line type */ - case 'L': type = MLINE; break; -*************** -*** 86,112 **** - } - - /* Try for just normal text */ -! clip_header = PhClipboardPasteType( cbdata, CLIP_TYPE_TEXT ); -! if( clip_header != NULL ) - { - clip_text = clip_header->data; - clip_length = clip_header->length - 1; - -! if( clip_text != NULL && is_type_set == FALSE ) - type = MAUTO; - } - -! if( (clip_text != NULL) && (clip_length > 0) ) - { -! clip_yank_selection( type, clip_text, clip_length, cbd ); - } - -! PhClipboardPasteFinish( cbdata ); - } - } - - void -! clip_mch_set_selection( VimClipboard *cbd ) - { - int type; - long_u len; ---- 86,112 ---- - } - - /* Try for just normal text */ -! clip_header = PhClipboardPasteType(cbdata, CLIP_TYPE_TEXT); -! if (clip_header != NULL) - { - clip_text = clip_header->data; - clip_length = clip_header->length - 1; - -! if (clip_text != NULL && is_type_set == FALSE) - type = MAUTO; - } - -! if ((clip_text != NULL) && (clip_length > 0)) - { -! clip_yank_selection(type, clip_text, clip_length, cbd); - } - -! PhClipboardPasteFinish(cbdata); - } - } - - void -! clip_mch_set_selection(VimClipboard *cbd) - { - int type; - long_u len; -*************** -*** 114,144 **** - PhClipHeader clip_header[2]; - - /* Prevent recursion from clip_get_selection() */ -! if( cbd->owned == TRUE ) - return; - - cbd->owned = TRUE; -! clip_get_selection( cbd ); - cbd->owned = FALSE; - -! type = clip_convert_selection( &str, &len, cbd ); -! if( type >= 0 ) - { -! text_clip = lalloc( len + 1, TRUE ); /* Normal text */ - -! if( text_clip && vim_clip ) - { -! memset( clip_header, 0, sizeof( clip_header ) ); - -! STRNCPY( clip_header[0].type, CLIP_TYPE_VIM, 8 ); -! clip_header[0].length = sizeof( vim_clip ); - clip_header[0].data = vim_clip; - -! STRNCPY( clip_header[1].type, CLIP_TYPE_TEXT, 8 ); - clip_header[1].length = len + 1; - clip_header[1].data = text_clip; - -! switch( type ) - { - default: /* fallthrough to MLINE */ - case MLINE: *vim_clip = 'L'; break; ---- 114,144 ---- - PhClipHeader clip_header[2]; - - /* Prevent recursion from clip_get_selection() */ -! if (cbd->owned == TRUE) - return; - - cbd->owned = TRUE; -! clip_get_selection(cbd); - cbd->owned = FALSE; - -! type = clip_convert_selection(&str, &len, cbd); -! if (type >= 0) - { -! text_clip = lalloc(len + 1, TRUE); /* Normal text */ - -! if (text_clip && vim_clip) - { -! memset(clip_header, 0, sizeof(clip_header)); - -! STRNCPY(clip_header[0].type, CLIP_TYPE_VIM, 8); -! clip_header[0].length = sizeof(vim_clip); - clip_header[0].data = vim_clip; - -! STRNCPY(clip_header[1].type, CLIP_TYPE_TEXT, 8); - clip_header[1].length = len + 1; - clip_header[1].data = text_clip; - -! switch(type) - { - default: /* fallthrough to MLINE */ - case MLINE: *vim_clip = 'L'; break; -*************** -*** 148,161 **** - #endif - } - -! vim_strncpy( text_clip, str, len ); - - vim_clip[ 1 ] = NUL; - -! PhClipboardCopy( PhInputGroup( NULL ), 2, clip_header); - } -! vim_free( text_clip ); - } -! vim_free( str ); - } - #endif ---- 148,161 ---- - #endif - } - -! vim_strncpy(text_clip, str, len); - - vim_clip[ 1 ] = NUL; - -! PhClipboardCopy(PhInputGroup(NULL), 2, clip_header); - } -! vim_free(text_clip); - } -! vim_free(str); - } - #endif -*** ../vim-7.3.320/src/version.c 2011-09-21 19:10:42.000000000 +0200 ---- src/version.c 2011-09-21 19:47:50.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 321, - /**/ - --- -Bypasses are devices that allow some people to dash from point A to -point B very fast while other people dash from point B to point A very -fast. People living at point C, being a point directly in between, are -often given to wonder what's so great about point A that so many people -from point B are so keen to get there and what's so great about point B -that so many people from point A are so keen to get there. They often -wish that people would just once and for all work out where the hell -they wanted to be. - -- 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/ \\\ -\\\ an exciting new programming language -- http://www.Zimbu.org /// - \\\ help me help AIDS victims -- http://ICCF-Holland.org /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.322 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.322 -Problem: #ifdef for PDP_RETVAL doesn't work, INT_PTR can be a typedef. -Solution: Check the MSC version and 64 bit flags. (Sergiu Dotenco) -Files: src/os_mswin.c - - -*** ../vim-7.3.321/src/os_mswin.c 2011-08-10 17:07:56.000000000 +0200 ---- src/os_mswin.c 2011-09-21 20:09:05.000000000 +0200 -*************** -*** 1781,1787 **** - } - - /* Attempt to make this work for old and new compilers */ -! #if !defined(_MSC_VER) || (_MSC_VER < 1300) || !defined(INT_PTR) - # define PDP_RETVAL BOOL - #else - # define PDP_RETVAL INT_PTR ---- 1781,1787 ---- - } - - /* Attempt to make this work for old and new compilers */ -! #if !defined(_WIN64) && (!defined(_MSC_VER) || _MSC_VER < 1300) - # define PDP_RETVAL BOOL - #else - # define PDP_RETVAL INT_PTR -*** ../vim-7.3.321/src/version.c 2011-09-21 19:50:00.000000000 +0200 ---- src/version.c 2011-09-21 20:08:29.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 322, - /**/ - --- -Don't Panic! - -- 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/ \\\ -\\\ an exciting new programming language -- http://www.Zimbu.org /// - \\\ help me help AIDS victims -- http://ICCF-Holland.org /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.323 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.323 -Problem: The default 'errorformat' does not ignore some "included from" - lines. -Solution: Add a few more patterns. (Ben Boeckel) -Files: src/option.h - - -*** ../vim-7.3.322/src/option.h 2011-07-27 13:59:12.000000000 +0200 ---- src/option.h 2011-09-30 14:32:13.000000000 +0200 -*************** -*** 33,39 **** - # ifdef EBCDIC - #define DFLT_EFM "%*[^ ] %*[^ ] %f:%l%*[ ]%m,%*[^\"]\"%f\"%*\\D%l: %m,\"%f\"%*\\D%l: %m,%f:%l:%c:%m,%f(%l):%m,%f:%l:%m,\"%f\"\\, line %l%*\\D%c%*[^ ] %m,%D%*\\a[%*\\d]: Entering directory `%f',%X%*\\a[%*\\d]: Leaving directory `%f',%DMaking %*\\a in %f,%f|%l| %m" - # else -! #define DFLT_EFM "%*[^\"]\"%f\"%*\\D%l: %m,\"%f\"%*\\D%l: %m,%-G%f:%l: (Each undeclared identifier is reported only once,%-G%f:%l: for each function it appears in.),%-GIn file included from %f:%l:%c:,%-GIn file included from %f:%l:%c,%-GIn file included from %f:%l,%-Gfrom %f:%l:%c,%-Gfrom %f:%l,%f:%l:%c:%m,%f(%l):%m,%f:%l:%m,\"%f\"\\, line %l%*\\D%c%*[^ ] %m,%D%*\\a[%*\\d]: Entering directory `%f',%X%*\\a[%*\\d]: Leaving directory `%f',%D%*\\a: Entering directory `%f',%X%*\\a: Leaving directory `%f',%DMaking %*\\a in %f,%f|%l| %m" - # endif - # endif - # endif ---- 33,39 ---- - # ifdef EBCDIC - #define DFLT_EFM "%*[^ ] %*[^ ] %f:%l%*[ ]%m,%*[^\"]\"%f\"%*\\D%l: %m,\"%f\"%*\\D%l: %m,%f:%l:%c:%m,%f(%l):%m,%f:%l:%m,\"%f\"\\, line %l%*\\D%c%*[^ ] %m,%D%*\\a[%*\\d]: Entering directory `%f',%X%*\\a[%*\\d]: Leaving directory `%f',%DMaking %*\\a in %f,%f|%l| %m" - # else -! #define DFLT_EFM "%*[^\"]\"%f\"%*\\D%l: %m,\"%f\"%*\\D%l: %m,%-G%f:%l: (Each undeclared identifier is reported only once,%-G%f:%l: for each function it appears in.),%-GIn file included from %f:%l:%c:,%-GIn file included from %f:%l:%c\\,,%-GIn file included from %f:%l:%c,%-GIn file included from %f:%l,%-G%*[ ]from %f:%l:%c,%-G%*[ ]from %f:%l:,%-G%*[ ]from %f:%l\\,,%-G%*[ ]from %f:%l,%f:%l:%c:%m,%f(%l):%m,%f:%l:%m,\"%f\"\\, line %l%*\\D%c%*[^ ] %m,%D%*\\a[%*\\d]: Entering directory `%f',%X%*\\a[%*\\d]: Leaving directory `%f',%D%*\\a: Entering directory `%f',%X%*\\a: Leaving directory `%f',%DMaking %*\\a in %f,%f|%l| %m" - # endif - # endif - # endif -*** ../vim-7.3.322/src/version.c 2011-09-21 20:09:38.000000000 +0200 ---- src/version.c 2011-09-30 14:38:59.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 323, - /**/ - --- -Due knot trussed yore spell chequer two fined awl miss steaks. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.324 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.324 (after 7.3.237) -Problem: Completion for ":compiler" shows color scheme names. -Solution: Fix the directory name. (James Vega) -Files: src/ex_getln.c - - -*** ../vim-7.3.323/src/ex_getln.c 2011-08-17 16:25:43.000000000 +0200 ---- src/ex_getln.c 2011-09-30 16:22:14.000000000 +0200 -*************** -*** 4546,4552 **** - } - if (xp->xp_context == EXPAND_COMPILER) - { -! char *directories[] = {"colors", NULL}; - return ExpandRTDir(pat, num_file, file, directories); - } - if (xp->xp_context == EXPAND_OWNSYNTAX) ---- 4546,4552 ---- - } - if (xp->xp_context == EXPAND_COMPILER) - { -! char *directories[] = {"compiler", NULL}; - return ExpandRTDir(pat, num_file, file, directories); - } - if (xp->xp_context == EXPAND_OWNSYNTAX) -*** ../vim-7.3.323/src/version.c 2011-09-30 14:44:49.000000000 +0200 ---- src/version.c 2011-09-30 16:23:15.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 324, - /**/ - - --- -hundred-and-one symptoms of being an internet addict: -31. You code your homework in HTML and give your instructor the URL. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.325 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.325 -Problem: A duplicated function argument gives an internal error. -Solution: Give a proper error message. (based on patch by Tyru) -Files: src/eval.c - - -*** ../vim-7.3.324/src/eval.c 2011-09-14 16:52:02.000000000 +0200 ---- src/eval.c 2011-09-30 16:32:20.000000000 +0200 -*************** -*** 20461,20466 **** ---- 20461,20467 ---- - exarg_T *eap; - { - char_u *theline; -+ int i; - int j; - int c; - int saved_did_emsg; -*************** -*** 20707,20712 **** ---- 20708,20722 ---- - arg = vim_strsave(arg); - if (arg == NULL) - goto erret; -+ -+ /* Check for duplicate argument name. */ -+ for (i = 0; i < newargs.ga_len; ++i) -+ if (STRCMP(((char_u **)(newargs.ga_data))[i], arg) == 0) -+ { -+ EMSG2(_("E853: Duplicate argument name: %s"), arg); -+ goto erret; -+ } -+ - ((char_u **)(newargs.ga_data))[newargs.ga_len] = arg; - *p = c; - newargs.ga_len++; -*** ../vim-7.3.324/src/version.c 2011-09-30 16:23:21.000000000 +0200 ---- src/version.c 2011-09-30 16:39:16.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 325, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -32. You don't know what sex three of your closest friends are, because they - have neutral nicknames and you never bothered to ask. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.326 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.326 -Problem: MingW 4.6 no longer supports the -mno-cygwin option. -Solution: Split the Cygwin and MingW makefiles. (Matsushita Shougo) -Files: src/GvimExt/Make_cyg.mak, src/GvimExt/Make_ming.mak, - src/Make_cyg.mak, src/Make_ming.mak, src/xxd/Make_ming.mak, - Filelist - - -*** ../vim-7.3.325/src/GvimExt/Make_cyg.mak 2011-09-30 16:55:18.000000000 +0200 ---- src/GvimExt/Make_cyg.mak 2011-09-30 16:45:49.000000000 +0200 -*************** -*** 0 **** ---- 1,77 ---- -+ # Project: gvimext -+ # Generates gvimext.dll with gcc. -+ # To be used with Cygwin. -+ # -+ # Originally, the DLL base address was fixed: -Wl,--image-base=0x1C000000 -+ # Now it is allocated dymanically by the linker by evaluating all DLLs -+ # already loaded in memory. The binary image contains as well information -+ # for automatic pseudo-rebasing, if needed by the system. ALV 2004-02-29 -+ -+ # If cross-compiling set this to yes, else set it to no -+ CROSS = no -+ #CROSS = yes -+ # For the old MinGW 2.95 (the one you get e.g. with debian woody) -+ # set the following variable to yes and check if the executables are -+ # really named that way. -+ # If you have a newer MinGW or you are using cygwin set it to no and -+ # check also the executables -+ MINGWOLD = no -+ -+ # Link against the shared versions of libgcc/libstdc++ by default. Set -+ # STATIC_STDCPLUS to "yes" to link against static versions instead. -+ STATIC_STDCPLUS=no -+ #STATIC_STDCPLUS=yes -+ -+ # Note: -static-libstdc++ is not available until gcc 4.5.x. -+ LDFLAGS += -shared -+ ifeq (yes, $(STATIC_STDCPLUS)) -+ LDFLAGS += -static-libgcc -static-libstdc++ -+ endif -+ -+ ifeq ($(CROSS),yes) -+ DEL = rm -+ ifeq ($(MINGWOLD),yes) -+ CXXFLAGS := -O2 -mno-cygwin -fvtable-thunks -+ else -+ CXXFLAGS := -O2 -mno-cygwin -+ endif -+ else -+ CXXFLAGS := -O2 -mno-cygwin -+ ifneq (sh.exe, $(SHELL)) -+ DEL = rm -+ else -+ DEL = del -+ endif -+ endif -+ CXX := $(CROSS_COMPILE)g++ -+ WINDRES := $(CROSS_COMPILE)windres -+ WINDRES_CXX = $(CXX) -+ WINDRES_FLAGS = --preprocessor="$(WINDRES_CXX) -E -xc" -DRC_INVOKED -+ LIBS := -luuid -+ RES := gvimext.res -+ DEFFILE = gvimext_ming.def -+ OBJ := gvimext.o -+ -+ DLL := gvimext.dll -+ -+ .PHONY: all all-before all-after clean clean-custom -+ -+ all: all-before $(DLL) all-after -+ -+ $(DLL): $(OBJ) $(RES) $(DEFFILE) -+ $(CXX) $(LDFLAGS) $(CXXFLAGS) -s -o $@ \ -+ -Wl,--enable-auto-image-base \ -+ -Wl,--enable-auto-import \ -+ -Wl,--whole-archive \ -+ $^ \ -+ -Wl,--no-whole-archive \ -+ $(LIBS) -+ -+ gvimext.o: gvimext.cpp -+ $(CXX) $(CXXFLAGS) -DFEAT_GETTEXT -c $? -o $@ -+ -+ $(RES): gvimext_ming.rc -+ $(WINDRES) $(WINDRES_FLAGS) --input-format=rc --output-format=coff -DMING $? -o $@ -+ -+ clean: clean-custom -+ -$(DEL) $(OBJ) $(RES) $(DLL) -*** ../vim-7.3.325/src/GvimExt/Make_ming.mak 2010-12-30 14:50:46.000000000 +0100 ---- src/GvimExt/Make_ming.mak 2011-09-30 16:47:09.000000000 +0200 -*************** -*** 1,6 **** - # Project: gvimext - # Generates gvimext.dll with gcc. -! # Can be used for Cygwin and MingW (MingW ignores -mno-cygwin) - # - # Originally, the DLL base address was fixed: -Wl,--image-base=0x1C000000 - # Now it is allocated dymanically by the linker by evaluating all DLLs ---- 1,6 ---- - # Project: gvimext - # Generates gvimext.dll with gcc. -! # To be used with MingW. - # - # Originally, the DLL base address was fixed: -Wl,--image-base=0x1C000000 - # Now it is allocated dymanically by the linker by evaluating all DLLs -*************** -*** 31,42 **** - ifeq ($(CROSS),yes) - DEL = rm - ifeq ($(MINGWOLD),yes) -! CXXFLAGS := -O2 -mno-cygwin -fvtable-thunks - else -! CXXFLAGS := -O2 -mno-cygwin - endif - else -! CXXFLAGS := -O2 -mno-cygwin - ifneq (sh.exe, $(SHELL)) - DEL = rm - else ---- 31,42 ---- - ifeq ($(CROSS),yes) - DEL = rm - ifeq ($(MINGWOLD),yes) -! CXXFLAGS := -O2 -fvtable-thunks - else -! CXXFLAGS := -O2 - endif - else -! CXXFLAGS := -O2 - ifneq (sh.exe, $(SHELL)) - DEL = rm - else -*************** -*** 75,78 **** - - clean: clean-custom - -$(DEL) $(OBJ) $(RES) $(DLL) -- ---- 75,77 ---- -*** ../vim-7.3.325/src/Make_cyg.mak 2010-11-03 21:59:23.000000000 +0100 ---- src/Make_cyg.mak 2011-09-30 16:48:11.000000000 +0200 -*************** -*** 536,542 **** - $(MAKE) -C xxd -f Make_cyg.mak CC=$(CC) USEDLL=$(USEDLL) - - GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h -! $(MAKE) -C GvimExt -f Make_ming.mak CROSS_COMPILE=$(CROSS_COMPILE) - - vimrun.exe: vimrun.c - $(CC) $(CFLAGS) -o vimrun.exe vimrun.c $(LIBS) ---- 536,542 ---- - $(MAKE) -C xxd -f Make_cyg.mak CC=$(CC) USEDLL=$(USEDLL) - - GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h -! $(MAKE) -C GvimExt -f Make_cyg.mak CROSS_COMPILE=$(CROSS_COMPILE) - - vimrun.exe: vimrun.c - $(CC) $(CFLAGS) -o vimrun.exe vimrun.c $(LIBS) -*************** -*** 565,571 **** - endif - -$(DEL) pathdef.c - $(MAKE) -C xxd -f Make_cyg.mak clean -! $(MAKE) -C GvimExt -f Make_ming.mak clean - - distclean: clean - -$(DEL) obj$(DIRSLASH)*.o ---- 565,571 ---- - endif - -$(DEL) pathdef.c - $(MAKE) -C xxd -f Make_cyg.mak clean -! $(MAKE) -C GvimExt -f Make_cyg.mak clean - - distclean: clean - -$(DEL) obj$(DIRSLASH)*.o -*** ../vim-7.3.325/src/Make_ming.mak 2011-09-14 10:49:44.000000000 +0200 ---- src/Make_ming.mak 2011-09-30 16:48:11.000000000 +0200 -*************** -*** 641,647 **** - upx vim.exe - - xxd/xxd.exe: xxd/xxd.c -! $(MAKE) -C xxd -f Make_cyg.mak CC=$(CC) - - GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h - $(MAKE) -C GvimExt -f Make_ming.mak CROSS=$(CROSS) CROSS_COMPILE=$(CROSS_COMPILE) ---- 641,647 ---- - upx vim.exe - - xxd/xxd.exe: xxd/xxd.c -! $(MAKE) -C xxd -f Make_ming.mak CC=$(CC) - - GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h - $(MAKE) -C GvimExt -f Make_ming.mak CROSS=$(CROSS) CROSS_COMPILE=$(CROSS_COMPILE) -*************** -*** 659,665 **** - -$(DEL) mzscheme_base.c - endif - $(MAKE) -C GvimExt -f Make_ming.mak clean -! $(MAKE) -C xxd -f Make_cyg.mak clean - - ########################################################################### - INCL = vim.h feature.h os_win32.h os_dos.h ascii.h keymap.h term.h macros.h \ ---- 659,665 ---- - -$(DEL) mzscheme_base.c - endif - $(MAKE) -C GvimExt -f Make_ming.mak clean -! $(MAKE) -C xxd -f Make_ming.mak clean - - ########################################################################### - INCL = vim.h feature.h os_win32.h os_dos.h ascii.h keymap.h term.h macros.h \ -*** ../vim-7.3.325/src/xxd/Make_ming.mak 2011-09-30 16:55:18.000000000 +0200 ---- src/xxd/Make_ming.mak 2011-09-30 16:48:34.000000000 +0200 -*************** -*** 0 **** ---- 1,28 ---- -+ # The most simplistic Makefile, for MinGW gcc on MS-DOS -+ -+ ifndef USEDLL -+ USEDLL = no -+ endif -+ -+ ifeq (yes, $(USEDLL)) -+ DEFINES = -+ LIBS = -lc -+ else -+ DEFINES = -+ LIBS = -+ endif -+ -+ CC = gcc -+ CFLAGS = -O2 -Wall -DWIN32 $(DEFINES) -+ -+ ifneq (sh.exe, $(SHELL)) -+ DEL = rm -+ else -+ DEL = del -+ endif -+ -+ xxd.exe: xxd.c -+ $(CC) $(CFLAGS) -s -o xxd.exe xxd.c $(LIBS) -+ -+ clean: -+ -$(DEL) xxd.exe -*** ../vim-7.3.325/Filelist 2011-06-12 20:36:00.000000000 +0200 ---- Filelist 2011-09-30 16:49:29.000000000 +0200 -*************** -*** 313,318 **** ---- 313,319 ---- - src/xxd/Make_bc5.mak \ - src/xxd/Make_cyg.mak \ - src/xxd/Make_djg.mak \ -+ src/xxd/Make_ming.mak \ - src/xxd/Make_mvc.mak \ - nsis/gvim.nsi \ - nsis/README.txt \ -*** ../vim-7.3.325/src/version.c 2011-09-30 16:39:41.000000000 +0200 ---- src/version.c 2011-09-30 16:49:57.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 326, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -33. You name your children Eudora, Mozilla and Dotcom. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.327 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.327 -Problem: When jumping to a help tag a closed fold doesn't open. -Solution: Save and restore KeyTyped. (Yasuhiro Matsumoto) -Files: src/ex_cmds.c - - -*** ../vim-7.3.326/src/ex_cmds.c 2011-09-14 14:43:21.000000000 +0200 ---- src/ex_cmds.c 2011-09-30 17:24:03.000000000 +0200 -*************** -*** 5508,5513 **** ---- 5508,5516 ---- - int len; - char_u *lang; - #endif -+ #ifdef FEAT_FOLDING -+ int old_KeyTyped = KeyTyped; -+ #endif - - if (eap != NULL) - { -*************** -*** 5671,5676 **** ---- 5674,5685 ---- - if (!p_im) - restart_edit = 0; /* don't want insert mode in help file */ - -+ #ifdef FEAT_FOLDING -+ /* Restore KeyTyped, setting 'filetype=help' may reset it. -+ * It is needed for do_tag top open folds under the cursor. */ -+ KeyTyped = old_KeyTyped; -+ #endif -+ - if (tag != NULL) - do_tag(tag, DT_HELP, 1, FALSE, TRUE); - -*** ../vim-7.3.326/src/version.c 2011-09-30 16:56:00.000000000 +0200 ---- src/version.c 2011-09-30 17:24:17.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 327, - /**/ - --- -Q. What happens to programmers when they die? -A: MS-Windows programmers are reinstalled. C++ programmers become undefined, - anyone who refers to them will die as well. Java programmers reincarnate - after being garbage collected. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.328 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.328 -Problem: When command line wraps the cursor may be displayed wrong when - there are multi-byte characters. -Solution: Position the cursor before drawing the text. (Yasuhiro Matsumoto) -Files: src/ex_getln.c - - -*** ../vim-7.3.327/src/ex_getln.c 2011-09-30 16:23:21.000000000 +0200 ---- src/ex_getln.c 2011-09-30 17:39:27.000000000 +0200 -*************** -*** 2870,2875 **** ---- 2870,2876 ---- - { - msg_no_more = TRUE; - i = cmdline_row; -+ cursorcmd(); - draw_cmdline(ccline.cmdpos, ccline.cmdlen - ccline.cmdpos); - /* Avoid clearing the rest of the line too often. */ - if (cmdline_row != i || ccline.overstrike) -*** ../vim-7.3.327/src/version.c 2011-09-30 17:30:27.000000000 +0200 ---- src/version.c 2011-09-30 17:45:28.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 328, - /**/ - --- -To define recursion, we must first define recursion. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.329 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.329 -Problem: When skipping over code from ":for" to ":endfor" get an error for - calling a dict function. (Yasuhiro Matsumoto) -Solution: Ignore errors when skipping over :call command. -Files: src/ex_docmd.c, src/eval.c - - -*** ../vim-7.3.328/src/ex_docmd.c 2011-09-21 19:10:42.000000000 +0200 ---- src/ex_docmd.c 2011-09-30 17:59:51.000000000 +0200 -*************** -*** 371,381 **** - # define ex_endif ex_ni - # define ex_else ex_ni - # define ex_while ex_ni -- # define ex_for ex_ni - # define ex_continue ex_ni - # define ex_break ex_ni - # define ex_endwhile ex_ni -- # define ex_endfor ex_ni - # define ex_throw ex_ni - # define ex_try ex_ni - # define ex_catch ex_ni ---- 371,379 ---- -*** ../vim-7.3.328/src/eval.c 2011-09-30 16:39:41.000000000 +0200 ---- src/eval.c 2011-09-30 18:29:58.000000000 +0200 -*************** -*** 3377,3383 **** - /* trans_function_name() doesn't work well when skipping, use eval0() - * instead to skip to any following command, e.g. for: - * :if 0 | call dict.foo().bar() | endif */ -! eval0(eap->arg, &rettv, &eap->nextcmd, FALSE); - return; - } - ---- 3377,3386 ---- - /* trans_function_name() doesn't work well when skipping, use eval0() - * instead to skip to any following command, e.g. for: - * :if 0 | call dict.foo().bar() | endif */ -! ++emsg_skip; -! if (eval0(eap->arg, &rettv, &eap->nextcmd, FALSE) != FAIL) -! clear_tv(&rettv); -! --emsg_skip; - return; - } - -*** ../vim-7.3.328/src/version.c 2011-09-30 17:46:14.000000000 +0200 ---- src/version.c 2011-09-30 18:32:27.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 329, - /**/ - --- -Have you heard about the new Beowulf cluster? It's so fast, it executes -an infinite loop in 6 seconds. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.330 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.330 -Problem: When longjmp() is invoked if the X server gives an error the state - is not properly restored. -Solution: Reset vgetc_busy. (Yukihiro Nakadaira) -Files: src/main.c - - -*** ../vim-7.3.329/src/main.c 2011-05-10 16:41:13.000000000 +0200 ---- src/main.c 2011-10-04 16:41:03.000000000 +0200 -*************** -*** 1009,1014 **** ---- 1009,1015 ---- - skip_redraw = FALSE; - RedrawingDisabled = 0; - no_wait_return = 0; -+ vgetc_busy = 0; - # ifdef FEAT_EVAL - emsg_skip = 0; - # endif -*** ../vim-7.3.329/src/version.c 2011-09-30 18:35:49.000000000 +0200 ---- src/version.c 2011-10-04 16:42:23.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 330, - /**/ - --- -Just remember...if the world didn't suck, we'd all fall off. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.331 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.331 -Problem: "vit" selects wrong text when a tag name starts with the same text - as an outer tag name. (Ben Fritz) -Solution: Add "\>" to the pattern to check for word boundary. -Files: src/search.c - - -*** ../vim-7.3.330/src/search.c 2011-07-15 13:21:24.000000000 +0200 ---- src/search.c 2011-10-04 16:54:08.000000000 +0200 -*************** -*** 3927,3933 **** - curwin->w_cursor = old_pos; - goto theend; - } -! sprintf((char *)spat, "<%.*s\\%%(\\_[^>]\\{-}[^/]>\\|>\\)\\c", len, p); - sprintf((char *)epat, "</%.*s>\\c", len, p); - - r = do_searchpair(spat, (char_u *)"", epat, FORWARD, (char_u *)"", ---- 3927,3933 ---- - curwin->w_cursor = old_pos; - goto theend; - } -! sprintf((char *)spat, "<%.*s\\>\\%%(\\_[^>]\\{-}[^/]>\\|>\\)\\c", len, p); - sprintf((char *)epat, "</%.*s>\\c", len, p); - - r = do_searchpair(spat, (char_u *)"", epat, FORWARD, (char_u *)"", -*** ../vim-7.3.330/src/version.c 2011-10-04 16:43:49.000000000 +0200 ---- src/version.c 2011-10-04 16:59:47.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 331, - /**/ - --- -The 50-50-90 rule: Anytime you have a 50-50 chance of getting -something right, there's a 90% probability you'll get it wrong. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.332 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.332 (after 7.3.202) -Problem: Indent after "public:" is not increased in C++ code. (Lech Lorens) -Solution: Check for namespace after the regular checks. (partly by Martin - Gieseking) -Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok - - -*** ../vim-7.3.331/src/misc1.c 2011-09-07 19:58:04.000000000 +0200 ---- src/misc1.c 2011-10-04 17:59:52.000000000 +0200 -*************** -*** 6389,6394 **** ---- 6389,6395 ---- - int lookfor_cpp_namespace = FALSE; - int cont_amount = 0; /* amount for continuation line */ - int original_line_islabel; -+ int added_to_amount = 0; - - for (options = curbuf->b_p_cino; *options; ) - { -*************** -*** 7216,7267 **** - else - amount += ind_continuation; - } -! else if (lookfor_cpp_namespace) - { -! if (curwin->w_cursor.lnum == ourscope) -! continue; - -! if (curwin->w_cursor.lnum == 0 -! || curwin->w_cursor.lnum - < ourscope - FIND_NAMESPACE_LIM) -! break; - -! l = ml_get_curline(); - -! /* -! * If we're in a comment now, skip to the start of the -! * comment. -! */ -! trypos = find_start_comment(ind_maxcomment); -! if (trypos != NULL) -! { -! curwin->w_cursor.lnum = trypos->lnum + 1; -! curwin->w_cursor.col = 0; -! continue; -! } -! -! /* -! * Skip preprocessor directives and blank lines. -! */ -! if (cin_ispreproc_cont(&l, &curwin->w_cursor.lnum)) -! continue; - -! if (cin_is_cpp_namespace(l)) -! { -! amount += ind_cpp_namespace; -! break; -! } - -! if (cin_nocode(l)) -! continue; - -! } -! else if (lookfor != LOOKFOR_TERM -! && lookfor != LOOKFOR_CPP_BASECLASS) -! { -! amount = scope_amount; -! if (theline[0] == '{') -! amount += ind_open_extra; - } - break; - } ---- 7217,7275 ---- - else - amount += ind_continuation; - } -! else - { -! if (lookfor != LOOKFOR_TERM -! && lookfor != LOOKFOR_CPP_BASECLASS) -! { -! amount = scope_amount; -! if (theline[0] == '{') -! { -! amount += ind_open_extra; -! added_to_amount = ind_open_extra; -! } -! } - -! if (lookfor_cpp_namespace) -! { -! /* -! * Looking for C++ namespace, need to look further -! * back. -! */ -! if (curwin->w_cursor.lnum == ourscope) -! continue; -! -! if (curwin->w_cursor.lnum == 0 -! || curwin->w_cursor.lnum - < ourscope - FIND_NAMESPACE_LIM) -! break; - -! l = ml_get_curline(); - -! /* If we're in a comment now, skip to the start of -! * the comment. */ -! trypos = find_start_comment(ind_maxcomment); -! if (trypos != NULL) -! { -! curwin->w_cursor.lnum = trypos->lnum + 1; -! curwin->w_cursor.col = 0; -! continue; -! } - -! /* Skip preprocessor directives and blank lines. */ -! if (cin_ispreproc_cont(&l, &curwin->w_cursor.lnum)) -! continue; - -! /* Finally the actual check for "namespace". */ -! if (cin_is_cpp_namespace(l)) -! { -! amount += ind_cpp_namespace - added_to_amount; -! break; -! } - -! if (cin_nocode(l)) -! continue; -! } - } - break; - } -*** ../vim-7.3.331/src/testdir/test3.in 2011-07-20 15:09:38.000000000 +0200 ---- src/testdir/test3.in 2011-10-04 17:45:20.000000000 +0200 -*************** -*** 1309,1314 **** ---- 1309,1328 ---- - }; - - STARTTEST -+ :set cino=(0,gs,hs -+ 2kdd]]=][ -+ ENDTEST -+ -+ class Foo : public Bar -+ { -+ public: -+ virtual void method1(void) = 0; -+ virtual void method2(int arg1, -+ int arg2, -+ int arg3) = 0; -+ }; -+ -+ STARTTEST - :set cino=+20 - 2kdd]]=][ - ENDTEST -*** ../vim-7.3.331/src/testdir/test3.ok 2011-07-20 15:09:38.000000000 +0200 ---- src/testdir/test3.ok 2011-10-04 17:47:25.000000000 +0200 -*************** -*** 1190,1195 **** ---- 1190,1205 ---- - }; - - -+ class Foo : public Bar -+ { -+ public: -+ virtual void method1(void) = 0; -+ virtual void method2(int arg1, -+ int arg2, -+ int arg3) = 0; -+ }; -+ -+ - void - foo() - { -*** ../vim-7.3.331/src/version.c 2011-10-04 17:00:13.000000000 +0200 ---- src/version.c 2011-10-04 18:02:17.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 332, - /**/ - --- -Latest survey shows that 3 out of 4 people make up 75% of the -world's population. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.333 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.333 -Problem: Using "." to repeat a Visual delete counts the size in bytes, not - characters. (Connor Lane Smith) -Solution: Store the virtual column numbers instead of byte positions. -Files: src/normal.c - - -*** ../vim-7.3.332/src/normal.c 2011-07-15 17:51:30.000000000 +0200 ---- src/normal.c 2011-10-04 19:47:14.000000000 +0200 -*************** -*** 20,26 **** - */ - static int resel_VIsual_mode = NUL; /* 'v', 'V', or Ctrl-V */ - static linenr_T resel_VIsual_line_count; /* number of lines */ -! static colnr_T resel_VIsual_col; /* nr of cols or end col */ - - static int restart_VIsual_select = 0; - #endif ---- 20,26 ---- - */ - static int resel_VIsual_mode = NUL; /* 'v', 'V', or Ctrl-V */ - static linenr_T resel_VIsual_line_count; /* number of lines */ -! static colnr_T resel_VIsual_vcol; /* nr of cols or end col */ - - static int restart_VIsual_select = 0; - #endif -*************** -*** 1436,1442 **** - /* The visual area is remembered for redo */ - static int redo_VIsual_mode = NUL; /* 'v', 'V', or Ctrl-V */ - static linenr_T redo_VIsual_line_count; /* number of lines */ -! static colnr_T redo_VIsual_col; /* number of cols or end column */ - static long redo_VIsual_count; /* count for Visual operator */ - # ifdef FEAT_VIRTUALEDIT - int include_line_break = FALSE; ---- 1436,1442 ---- - /* The visual area is remembered for redo */ - static int redo_VIsual_mode = NUL; /* 'v', 'V', or Ctrl-V */ - static linenr_T redo_VIsual_line_count; /* number of lines */ -! static colnr_T redo_VIsual_vcol; /* number of cols or end column */ - static long redo_VIsual_count; /* count for Visual operator */ - # ifdef FEAT_VIRTUALEDIT - int include_line_break = FALSE; -*************** -*** 1549,1570 **** - #ifdef FEAT_VISUAL - if (redo_VIsual_busy) - { - oap->start = curwin->w_cursor; - curwin->w_cursor.lnum += redo_VIsual_line_count - 1; - if (curwin->w_cursor.lnum > curbuf->b_ml.ml_line_count) - curwin->w_cursor.lnum = curbuf->b_ml.ml_line_count; - VIsual_mode = redo_VIsual_mode; -! if (VIsual_mode == 'v') - { -! if (redo_VIsual_line_count <= 1) -! curwin->w_cursor.col += redo_VIsual_col - 1; - else -! curwin->w_cursor.col = redo_VIsual_col; -! } -! if (redo_VIsual_col == MAXCOL) -! { -! curwin->w_curswant = MAXCOL; -! coladvance((colnr_T)MAXCOL); - } - cap->count0 = redo_VIsual_count; - if (redo_VIsual_count != 0) ---- 1549,1579 ---- - #ifdef FEAT_VISUAL - if (redo_VIsual_busy) - { -+ /* Redo of an operation on a Visual area. Use the same size from -+ * redo_VIsual_line_count and redo_VIsual_vcol. */ - oap->start = curwin->w_cursor; - curwin->w_cursor.lnum += redo_VIsual_line_count - 1; - if (curwin->w_cursor.lnum > curbuf->b_ml.ml_line_count) - curwin->w_cursor.lnum = curbuf->b_ml.ml_line_count; - VIsual_mode = redo_VIsual_mode; -! if (redo_VIsual_vcol == MAXCOL || VIsual_mode == 'v') - { -! if (VIsual_mode == 'v') -! { -! if (redo_VIsual_line_count <= 1) -! { -! validate_virtcol(); -! curwin->w_curswant = -! curwin->w_virtcol + redo_VIsual_vcol - 1; -! } -! else -! curwin->w_curswant = redo_VIsual_vcol; -! } - else -! { -! curwin->w_curswant = MAXCOL; -! } -! coladvance(curwin->w_curswant); - } - cap->count0 = redo_VIsual_count; - if (redo_VIsual_count != 0) -*************** -*** 1710,1716 **** - } - } - else if (redo_VIsual_busy) -! oap->end_vcol = oap->start_vcol + redo_VIsual_col - 1; - /* - * Correct oap->end.col and oap->start.col to be the - * upper-left and lower-right corner of the block area. ---- 1719,1725 ---- - } - } - else if (redo_VIsual_busy) -! oap->end_vcol = oap->start_vcol + redo_VIsual_vcol - 1; - /* - * Correct oap->end.col and oap->start.col to be the - * upper-left and lower-right corner of the block area. -*************** -*** 1735,1747 **** - */ - resel_VIsual_mode = VIsual_mode; - if (curwin->w_curswant == MAXCOL) -! resel_VIsual_col = MAXCOL; -! else if (VIsual_mode == Ctrl_V) -! resel_VIsual_col = oap->end_vcol - oap->start_vcol + 1; -! else if (oap->line_count > 1) -! resel_VIsual_col = oap->end.col; - else -! resel_VIsual_col = oap->end.col - oap->start.col + 1; - resel_VIsual_line_count = oap->line_count; - } - ---- 1744,1765 ---- - */ - resel_VIsual_mode = VIsual_mode; - if (curwin->w_curswant == MAXCOL) -! resel_VIsual_vcol = MAXCOL; - else -! { -! if (VIsual_mode != Ctrl_V) -! getvvcol(curwin, &(oap->end), -! NULL, NULL, &oap->end_vcol); -! if (VIsual_mode == Ctrl_V || oap->line_count <= 1) -! { -! if (VIsual_mode != Ctrl_V) -! getvvcol(curwin, &(oap->start), -! &oap->start_vcol, NULL, NULL); -! resel_VIsual_vcol = oap->end_vcol - oap->start_vcol + 1; -! } -! else -! resel_VIsual_vcol = oap->end_vcol; -! } - resel_VIsual_line_count = oap->line_count; - } - -*************** -*** 1769,1775 **** - if (!redo_VIsual_busy) - { - redo_VIsual_mode = resel_VIsual_mode; -! redo_VIsual_col = resel_VIsual_col; - redo_VIsual_line_count = resel_VIsual_line_count; - redo_VIsual_count = cap->count0; - } ---- 1787,1793 ---- - if (!redo_VIsual_busy) - { - redo_VIsual_mode = resel_VIsual_mode; -! redo_VIsual_vcol = resel_VIsual_vcol; - redo_VIsual_line_count = resel_VIsual_line_count; - redo_VIsual_count = cap->count0; - } -*************** -*** 7631,7642 **** - if (VIsual_mode == 'v') - { - if (resel_VIsual_line_count <= 1) -! curwin->w_cursor.col += resel_VIsual_col * cap->count0 - 1; - else -! curwin->w_cursor.col = resel_VIsual_col; -! check_cursor_col(); - } -! if (resel_VIsual_col == MAXCOL) - { - curwin->w_curswant = MAXCOL; - coladvance((colnr_T)MAXCOL); ---- 7649,7664 ---- - if (VIsual_mode == 'v') - { - if (resel_VIsual_line_count <= 1) -! { -! validate_virtcol(); -! curwin->w_curswant = curwin->w_virtcol -! + resel_VIsual_vcol * cap->count0 - 1; -! } - else -! curwin->w_curswant = resel_VIsual_vcol; -! coladvance(curwin->w_curswant); - } -! if (resel_VIsual_vcol == MAXCOL) - { - curwin->w_curswant = MAXCOL; - coladvance((colnr_T)MAXCOL); -*************** -*** 7645,7651 **** - { - validate_virtcol(); - curwin->w_curswant = curwin->w_virtcol -! + resel_VIsual_col * cap->count0 - 1; - coladvance(curwin->w_curswant); - } - else ---- 7667,7673 ---- - { - validate_virtcol(); - curwin->w_curswant = curwin->w_virtcol -! + resel_VIsual_vcol * cap->count0 - 1; - coladvance(curwin->w_curswant); - } - else -*** ../vim-7.3.332/src/version.c 2011-10-04 18:03:43.000000000 +0200 ---- src/version.c 2011-10-04 21:05:44.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 333, - /**/ - --- -It was recently discovered that research causes cancer in rats. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.334 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.334 -Problem: Latest MingW about XSUBPP referencing itself. (Gongqian Li) -Solution: Rename the first use to XSUBPPTRY. -Files: src/Make_ming.mak - - -*** ../vim-7.3.333/src/Make_ming.mak 2011-09-30 16:56:00.000000000 +0200 ---- src/Make_ming.mak 2011-10-09 14:23:06.000000000 +0200 -*************** -*** 108,117 **** - # on NT, it's here: - PERLLIB=$(PERL)/lib - PERLLIBS=$(PERLLIB)/Core -! XSUBPP=$(PERLLIB)/ExtUtils/xsubpp -! XSUBPP_EXISTS=$(shell perl -e "print 1 unless -e '$(XSUBPP)'") - ifeq "$(XSUBPP_EXISTS)" "" -! XSUBPP=perl $(XSUBPP) - else - XSUBPP=xsubpp - endif ---- 108,117 ---- - # on NT, it's here: - PERLLIB=$(PERL)/lib - PERLLIBS=$(PERLLIB)/Core -! XSUBPPTRY=$(PERLLIB)/ExtUtils/xsubpp -! XSUBPP_EXISTS=$(shell perl -e "print 1 unless -e '$(XSUBPPTRY)'") - ifeq "$(XSUBPP_EXISTS)" "" -! XSUBPP=perl $(XSUBPPTRY) - else - XSUBPP=xsubpp - endif -*** ../vim-7.3.333/src/version.c 2011-10-04 21:22:40.000000000 +0200 ---- src/version.c 2011-10-12 14:10:20.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 334, - /**/ - --- -Q: Should I clean my house or work on Vim? -A: Whatever contains more bugs. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.335 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.335 -Problem: When 'imdisable' is reset from an autocommand in Insert mode it - doesn't take effect. -Solution: Call im_set_active() in Insert mode. (Taro Muraoka) -Files: src/option.c - - -*** ../vim-7.3.334/src/option.c 2011-09-21 13:40:13.000000000 +0200 ---- src/option.c 2011-10-12 14:09:46.000000000 +0200 -*************** -*** 7806,7811 **** ---- 7806,7815 ---- - /* Only de-activate it here, it will be enabled when changing mode. */ - if (p_imdisable) - im_set_active(FALSE); -+ else if (State & INSERT) -+ /* When the option is set from an autocommand, it may need to take -+ * effect right away. */ -+ im_set_active(curbuf->b_p_iminsert == B_IMODE_IM); - } - #endif - -*** ../vim-7.3.334/src/version.c 2011-10-12 14:11:43.000000000 +0200 ---- src/version.c 2011-10-12 16:56:30.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 335, - /**/ - --- -Time is money. Especially if you make clocks. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.336 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.336 -Problem: When a tags file specifies an encoding different from 'enc' it - may hang and using a pattern doesn't work. -Solution: Convert the whole line. Continue reading the header after the - SORT tag. Add test83. (Yukihiro Nakadaira) -Files: src/tag.c, src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, - src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, - src/testdir/Make_vms.mms, src/testdir/Makefile, - src/testdir/test83-tags2, src/testdir/test83-tags3, - src/testdir/test83.in, src/testdir/test83.ok - - -*** ../vim-7.3.335/src/tag.c 2011-04-11 21:35:03.000000000 +0200 ---- src/tag.c 2011-10-12 19:51:04.000000000 +0200 -*************** -*** 1277,1282 **** ---- 1277,1283 ---- - { - FILE *fp; - char_u *lbuf; /* line buffer */ -+ int lbuf_size = LSIZE; /* length of lbuf */ - char_u *tag_fname; /* name of tag file */ - tagname_T tn; /* info for get_tagfname() */ - int first_file; /* trying first tag file */ -*************** -*** 1291,1296 **** ---- 1292,1298 ---- - char_u *s; - int i; - #ifdef FEAT_TAG_BINS -+ int tag_file_sorted = NUL; /* !_TAG_FILE_SORTED value */ - struct tag_search_info /* Binary search file offsets */ - { - off_t low_offset; /* offset for first char of first line that -*************** -*** 1360,1372 **** - char_u *saved_pat = NULL; /* copy of pat[] */ - #endif - -- /* Use two sets of variables for the pattern: "orgpat" holds the values -- * for the original pattern and "convpat" converted from 'encoding' to -- * encoding of the tags file. "pats" point to either one of these. */ -- pat_T *pats; - pat_T orgpat; /* holds unconverted pattern info */ - #ifdef FEAT_MBYTE -- pat_T convpat; /* holds converted pattern info */ - vimconv_T vimconv; - #endif - ---- 1362,1369 ---- -*************** -*** 1390,1396 **** - - help_save = curbuf->b_help; - orgpat.pat = pat; -- pats = &orgpat; - #ifdef FEAT_MBYTE - vimconv.vc_type = CONV_NONE; - #endif ---- 1387,1392 ---- -*************** -*** 1398,1404 **** - /* - * Allocate memory for the buffers that are used - */ -! lbuf = alloc(LSIZE); - tag_fname = alloc(MAXPATHL + 1); - #ifdef FEAT_EMACS_TAGS - ebuf = alloc(LSIZE); ---- 1394,1400 ---- - /* - * Allocate memory for the buffers that are used - */ -! lbuf = alloc(lbuf_size); - tag_fname = alloc(MAXPATHL + 1); - #ifdef FEAT_EMACS_TAGS - ebuf = alloc(LSIZE); -*************** -*** 1424,1453 **** - if (help_only) /* want tags from help file */ - curbuf->b_help = TRUE; /* will be restored later */ - -! pats->len = (int)STRLEN(pat); - #ifdef FEAT_MULTI_LANG - if (curbuf->b_help) - { - /* When "@ab" is specified use only the "ab" language, otherwise - * search all languages. */ -! if (pats->len > 3 && pat[pats->len - 3] == '@' -! && ASCII_ISALPHA(pat[pats->len - 2]) -! && ASCII_ISALPHA(pat[pats->len - 1])) - { -! saved_pat = vim_strnsave(pat, pats->len - 3); - if (saved_pat != NULL) - { -! help_lang_find = &pat[pats->len - 2]; -! pats->pat = saved_pat; -! pats->len -= 3; - } - } - } - #endif -! if (p_tl != 0 && pats->len > p_tl) /* adjust for 'taglength' */ -! pats->len = p_tl; - -! prepare_pats(pats, has_re); - - #ifdef FEAT_TAG_BINS - /* This is only to avoid a compiler warning for using search_info ---- 1420,1449 ---- - if (help_only) /* want tags from help file */ - curbuf->b_help = TRUE; /* will be restored later */ - -! orgpat.len = (int)STRLEN(pat); - #ifdef FEAT_MULTI_LANG - if (curbuf->b_help) - { - /* When "@ab" is specified use only the "ab" language, otherwise - * search all languages. */ -! if (orgpat.len > 3 && pat[orgpat.len - 3] == '@' -! && ASCII_ISALPHA(pat[orgpat.len - 2]) -! && ASCII_ISALPHA(pat[orgpat.len - 1])) - { -! saved_pat = vim_strnsave(pat, orgpat.len - 3); - if (saved_pat != NULL) - { -! help_lang_find = &pat[orgpat.len - 2]; -! orgpat.pat = saved_pat; -! orgpat.len -= 3; - } - } - } - #endif -! if (p_tl != 0 && orgpat.len > p_tl) /* adjust for 'taglength' */ -! orgpat.len = p_tl; - -! prepare_pats(&orgpat, has_re); - - #ifdef FEAT_TAG_BINS - /* This is only to avoid a compiler warning for using search_info -*************** -*** 1466,1478 **** - * Only ignore case when TAG_NOIC not used or 'ignorecase' set. - */ - #ifdef FEAT_TAG_BINS -! pats->regmatch.rm_ic = ((p_ic || !noic) -! && (findall || pats->headlen == 0 || !p_tbs)); - for (round = 1; round <= 2; ++round) - { -! linear = (pats->headlen == 0 || !p_tbs || round == 2); - #else -! pats->regmatch.rm_ic = (p_ic || !noic); - #endif - - /* ---- 1462,1474 ---- - * Only ignore case when TAG_NOIC not used or 'ignorecase' set. - */ - #ifdef FEAT_TAG_BINS -! orgpat.regmatch.rm_ic = ((p_ic || !noic) -! && (findall || orgpat.headlen == 0 || !p_tbs)); - for (round = 1; round <= 2; ++round) - { -! linear = (orgpat.headlen == 0 || !p_tbs || round == 2); - #else -! orgpat.regmatch.rm_ic = (p_ic || !noic); - #endif - - /* -*************** -*** 1701,1706 **** ---- 1697,1732 ---- - } - line_read_in: - -+ #ifdef FEAT_MBYTE -+ if (vimconv.vc_type != CONV_NONE) -+ { -+ char_u *conv_line; -+ int len; -+ -+ /* Convert every line. Converting the pattern from 'enc' to -+ * the tags file encoding doesn't work, because characters are -+ * not recognized. */ -+ conv_line = string_convert(&vimconv, lbuf, NULL); -+ if (conv_line != NULL) -+ { -+ /* Copy or swap lbuf and conv_line. */ -+ len = (int)STRLEN(conv_line) + 1; -+ if (len > lbuf_size) -+ { -+ vim_free(lbuf); -+ lbuf = conv_line; -+ lbuf_size = len; -+ } -+ else -+ { -+ STRCPY(lbuf, conv_line); -+ vim_free(conv_line); -+ } -+ } -+ } -+ #endif -+ -+ - #ifdef FEAT_EMACS_TAGS - /* - * Emacs tags line with CTRL-L: New file name on next line. -*************** -*** 1770,1775 **** ---- 1796,1828 ---- - */ - if (state == TS_START) - { -+ if (STRNCMP(lbuf, "!_TAG_", 6) <= 0) -+ { -+ /* -+ * Read header line. -+ */ -+ #ifdef FEAT_TAG_BINS -+ if (STRNCMP(lbuf, "!_TAG_FILE_SORTED\t", 18) == 0) -+ tag_file_sorted = lbuf[18]; -+ #endif -+ #ifdef FEAT_MBYTE -+ if (STRNCMP(lbuf, "!_TAG_FILE_ENCODING\t", 20) == 0) -+ { -+ /* Prepare to convert every line from the specified -+ * encoding to 'encoding'. */ -+ for (p = lbuf + 20; *p > ' ' && *p < 127; ++p) -+ ; -+ *p = NUL; -+ convert_setup(&vimconv, lbuf + 20, p_enc); -+ } -+ #endif -+ -+ /* Read the next line. Unrecognized flags are ignored. */ -+ continue; -+ } -+ -+ /* Headers ends. */ -+ - #ifdef FEAT_TAG_BINS - /* - * When there is no tag head, or ignoring case, need to do a -*************** -*** 1786,1809 **** - if (linear) - # endif - state = TS_LINEAR; -! else if (STRNCMP(lbuf, "!_TAG_", 6) > 0) - state = TS_BINARY; -! else if (STRNCMP(lbuf, "!_TAG_FILE_SORTED\t", 18) == 0) -! { -! /* Check sorted flag */ -! if (lbuf[18] == '1') - state = TS_BINARY; -! else if (lbuf[18] == '2') -! { -! state = TS_BINARY; -! sortic = TRUE; -! pats->regmatch.rm_ic = (p_ic || !noic); -! } -! else -! state = TS_LINEAR; - } - -! if (state == TS_BINARY && pats->regmatch.rm_ic && !sortic) - { - /* binary search won't work for ignoring case, use linear - * search. */ ---- 1839,1858 ---- - if (linear) - # endif - state = TS_LINEAR; -! else if (tag_file_sorted == NUL) - state = TS_BINARY; -! else if (tag_file_sorted == '1') - state = TS_BINARY; -! else if (tag_file_sorted == '2') -! { -! state = TS_BINARY; -! sortic = TRUE; -! orgpat.regmatch.rm_ic = (p_ic || !noic); - } -+ else -+ state = TS_LINEAR; - -! if (state == TS_BINARY && orgpat.regmatch.rm_ic && !sortic) - { - /* binary search won't work for ignoring case, use linear - * search. */ -*************** -*** 1843,1882 **** - #endif - } - -- #ifdef FEAT_MBYTE -- if (lbuf[0] == '!' && pats == &orgpat -- && STRNCMP(lbuf, "!_TAG_FILE_ENCODING\t", 20) == 0) -- { -- /* Convert the search pattern from 'encoding' to the -- * specified encoding. */ -- for (p = lbuf + 20; *p > ' ' && *p < 127; ++p) -- ; -- *p = NUL; -- convert_setup(&vimconv, p_enc, lbuf + 20); -- if (vimconv.vc_type != CONV_NONE) -- { -- convpat.pat = string_convert(&vimconv, pats->pat, NULL); -- if (convpat.pat != NULL) -- { -- pats = &convpat; -- pats->len = (int)STRLEN(pats->pat); -- prepare_pats(pats, has_re); -- pats->regmatch.rm_ic = orgpat.regmatch.rm_ic; -- } -- } -- -- /* Prepare for converting a match the other way around. */ -- convert_setup(&vimconv, lbuf + 20, p_enc); -- continue; -- } -- #endif -- - /* - * Figure out where the different strings are in this line. - * For "normal" tags: Do a quick check if the tag matches. - * This speeds up tag searching a lot! - */ -! if (pats->headlen - #ifdef FEAT_EMACS_TAGS - && !is_etag - #endif ---- 1892,1903 ---- - #endif - } - - /* - * Figure out where the different strings are in this line. - * For "normal" tags: Do a quick check if the tag matches. - * This speeds up tag searching a lot! - */ -! if (orgpat.headlen - #ifdef FEAT_EMACS_TAGS - && !is_etag - #endif -*************** -*** 1933,1941 **** - cmplen = (int)(tagp.tagname_end - tagp.tagname); - if (p_tl != 0 && cmplen > p_tl) /* adjust for 'taglength' */ - cmplen = p_tl; -! if (has_re && pats->headlen < cmplen) -! cmplen = pats->headlen; -! else if (state == TS_LINEAR && pats->headlen != cmplen) - continue; - - #ifdef FEAT_TAG_BINS ---- 1954,1962 ---- - cmplen = (int)(tagp.tagname_end - tagp.tagname); - if (p_tl != 0 && cmplen > p_tl) /* adjust for 'taglength' */ - cmplen = p_tl; -! if (has_re && orgpat.headlen < cmplen) -! cmplen = orgpat.headlen; -! else if (state == TS_LINEAR && orgpat.headlen != cmplen) - continue; - - #ifdef FEAT_TAG_BINS -*************** -*** 1954,1963 **** - * Compare the current tag with the searched tag. - */ - if (sortic) -! tagcmp = tag_strnicmp(tagp.tagname, pats->head, - (size_t)cmplen); - else -! tagcmp = STRNCMP(tagp.tagname, pats->head, cmplen); - - /* - * A match with a shorter tag means to search forward. ---- 1975,1984 ---- - * Compare the current tag with the searched tag. - */ - if (sortic) -! tagcmp = tag_strnicmp(tagp.tagname, orgpat.head, - (size_t)cmplen); - else -! tagcmp = STRNCMP(tagp.tagname, orgpat.head, cmplen); - - /* - * A match with a shorter tag means to search forward. -*************** -*** 1965,1973 **** - */ - if (tagcmp == 0) - { -! if (cmplen < pats->headlen) - tagcmp = -1; -! else if (cmplen > pats->headlen) - tagcmp = 1; - } - ---- 1986,1994 ---- - */ - if (tagcmp == 0) - { -! if (cmplen < orgpat.headlen) - tagcmp = -1; -! else if (cmplen > orgpat.headlen) - tagcmp = 1; - } - -*************** -*** 2011,2017 **** - } - else if (state == TS_SKIP_BACK) - { -! if (MB_STRNICMP(tagp.tagname, pats->head, cmplen) != 0) - state = TS_STEP_FORWARD; - else - /* Have to skip back more. Restore the curr_offset ---- 2032,2038 ---- - } - else if (state == TS_SKIP_BACK) - { -! if (MB_STRNICMP(tagp.tagname, orgpat.head, cmplen) != 0) - state = TS_STEP_FORWARD; - else - /* Have to skip back more. Restore the curr_offset -*************** -*** 2021,2027 **** - } - else if (state == TS_STEP_FORWARD) - { -! if (MB_STRNICMP(tagp.tagname, pats->head, cmplen) != 0) - { - if ((off_t)ftell(fp) > search_info.match_offset) - break; /* past last match */ ---- 2042,2048 ---- - } - else if (state == TS_STEP_FORWARD) - { -! if (MB_STRNICMP(tagp.tagname, orgpat.head, cmplen) != 0) - { - if ((off_t)ftell(fp) > search_info.match_offset) - break; /* past last match */ -*************** -*** 2032,2038 **** - else - #endif - /* skip this match if it can't match */ -! if (MB_STRNICMP(tagp.tagname, pats->head, cmplen) != 0) - continue; - - /* ---- 2053,2059 ---- - else - #endif - /* skip this match if it can't match */ -! if (MB_STRNICMP(tagp.tagname, orgpat.head, cmplen) != 0) - continue; - - /* -*************** -*** 2083,2123 **** - if (p_tl != 0 && cmplen > p_tl) /* adjust for 'taglength' */ - cmplen = p_tl; - /* if tag length does not match, don't try comparing */ -! if (pats->len != cmplen) - match = FALSE; - else - { -! if (pats->regmatch.rm_ic) - { -! match = (MB_STRNICMP(tagp.tagname, pats->pat, cmplen) == 0); - if (match) -! match_no_ic = (STRNCMP(tagp.tagname, pats->pat, - cmplen) == 0); - } - else -! match = (STRNCMP(tagp.tagname, pats->pat, cmplen) == 0); - } - - /* - * Has a regexp: Also find tags matching regexp. - */ - match_re = FALSE; -! if (!match && pats->regmatch.regprog != NULL) - { - int cc; - - cc = *tagp.tagname_end; - *tagp.tagname_end = NUL; -! match = vim_regexec(&pats->regmatch, tagp.tagname, (colnr_T)0); - if (match) - { -! matchoff = (int)(pats->regmatch.startp[0] - tagp.tagname); -! if (pats->regmatch.rm_ic) - { -! pats->regmatch.rm_ic = FALSE; -! match_no_ic = vim_regexec(&pats->regmatch, tagp.tagname, - (colnr_T)0); -! pats->regmatch.rm_ic = TRUE; - } - } - *tagp.tagname_end = cc; ---- 2104,2144 ---- - if (p_tl != 0 && cmplen > p_tl) /* adjust for 'taglength' */ - cmplen = p_tl; - /* if tag length does not match, don't try comparing */ -! if (orgpat.len != cmplen) - match = FALSE; - else - { -! if (orgpat.regmatch.rm_ic) - { -! match = (MB_STRNICMP(tagp.tagname, orgpat.pat, cmplen) == 0); - if (match) -! match_no_ic = (STRNCMP(tagp.tagname, orgpat.pat, - cmplen) == 0); - } - else -! match = (STRNCMP(tagp.tagname, orgpat.pat, cmplen) == 0); - } - - /* - * Has a regexp: Also find tags matching regexp. - */ - match_re = FALSE; -! if (!match && orgpat.regmatch.regprog != NULL) - { - int cc; - - cc = *tagp.tagname_end; - *tagp.tagname_end = NUL; -! match = vim_regexec(&orgpat.regmatch, tagp.tagname, (colnr_T)0); - if (match) - { -! matchoff = (int)(orgpat.regmatch.startp[0] - tagp.tagname); -! if (orgpat.regmatch.rm_ic) - { -! orgpat.regmatch.rm_ic = FALSE; -! match_no_ic = vim_regexec(&orgpat.regmatch, tagp.tagname, - (colnr_T)0); -! orgpat.regmatch.rm_ic = TRUE; - } - } - *tagp.tagname_end = cc; -*************** -*** 2174,2180 **** - else - mtt = MT_GL_OTH; - } -! if (pats->regmatch.rm_ic && !match_no_ic) - mtt += MT_IC_OFF; - if (match_re) - mtt += MT_RE_OFF; ---- 2195,2201 ---- - else - mtt = MT_GL_OTH; - } -! if (orgpat.regmatch.rm_ic && !match_no_ic) - mtt += MT_IC_OFF; - if (match_re) - mtt += MT_RE_OFF; -*************** -*** 2187,2221 **** - */ - if (ga_grow(&ga_match[mtt], 1) == OK) - { -- #ifdef FEAT_MBYTE -- char_u *conv_line = NULL; -- char_u *lbuf_line = lbuf; -- -- if (vimconv.vc_type != CONV_NONE) -- { -- /* Convert the tag line from the encoding of the tags -- * file to 'encoding'. Then parse the line again. */ -- conv_line = string_convert(&vimconv, lbuf, NULL); -- if (conv_line != NULL) -- { -- if (parse_tag_line(conv_line, -- #ifdef FEAT_EMACS_TAGS -- is_etag, -- #endif -- &tagp) == OK) -- lbuf_line = conv_line; -- else -- /* doesn't work, go back to unconverted line. */ -- (void)parse_tag_line(lbuf, -- #ifdef FEAT_EMACS_TAGS -- is_etag, -- #endif -- &tagp); -- } -- } -- #else -- # define lbuf_line lbuf -- #endif - if (help_only) - { - #ifdef FEAT_MULTI_LANG ---- 2208,2213 ---- -*************** -*** 2307,2313 **** - * without Emacs tags: <mtt><tag_fname><NUL><lbuf> - */ - len = (int)STRLEN(tag_fname) -! + (int)STRLEN(lbuf_line) + 3; - #ifdef FEAT_EMACS_TAGS - if (is_etag) - len += (int)STRLEN(ebuf) + 1; ---- 2299,2305 ---- - * without Emacs tags: <mtt><tag_fname><NUL><lbuf> - */ - len = (int)STRLEN(tag_fname) -! + (int)STRLEN(lbuf) + 3; - #ifdef FEAT_EMACS_TAGS - if (is_etag) - len += (int)STRLEN(ebuf) + 1; -*************** -*** 2337,2343 **** - else - *s++ = NUL; - #endif -! STRCPY(s, lbuf_line); - } - } - ---- 2329,2335 ---- - else - *s++ = NUL; - #endif -! STRCPY(s, lbuf); - } - } - -*************** -*** 2373,2382 **** - else - vim_free(mfp); - } -- #ifdef FEAT_MBYTE -- /* Note: this makes the values in "tagp" invalid! */ -- vim_free(conv_line); -- #endif - } - else /* Out of memory! Just forget about the rest. */ - { ---- 2365,2370 ---- -*************** -*** 2415,2433 **** - } - #endif - #ifdef FEAT_MBYTE -- if (pats == &convpat) -- { -- /* Go back from converted pattern to original pattern. */ -- vim_free(pats->pat); -- vim_free(pats->regmatch.regprog); -- orgpat.regmatch.rm_ic = pats->regmatch.rm_ic; -- pats = &orgpat; -- } - if (vimconv.vc_type != CONV_NONE) - convert_setup(&vimconv, NULL, NULL); - #endif - - #ifdef FEAT_TAG_BINS - if (sort_error) - { - EMSG2(_("E432: Tags file not sorted: %s"), tag_fname); ---- 2403,2414 ---- - } - #endif - #ifdef FEAT_MBYTE - if (vimconv.vc_type != CONV_NONE) - convert_setup(&vimconv, NULL, NULL); - #endif - - #ifdef FEAT_TAG_BINS -+ tag_file_sorted = NUL; - if (sort_error) - { - EMSG2(_("E432: Tags file not sorted: %s"), tag_fname); -*************** -*** 2461,2473 **** - #ifdef FEAT_TAG_BINS - /* stop searching when already did a linear search, or when TAG_NOIC - * used, and 'ignorecase' not set or already did case-ignore search */ -! if (stop_searching || linear || (!p_ic && noic) || pats->regmatch.rm_ic) - break; - # ifdef FEAT_CSCOPE - if (use_cscope) - break; - # endif -! pats->regmatch.rm_ic = TRUE; /* try another time while ignoring case */ - } - #endif - ---- 2442,2454 ---- - #ifdef FEAT_TAG_BINS - /* stop searching when already did a linear search, or when TAG_NOIC - * used, and 'ignorecase' not set or already did case-ignore search */ -! if (stop_searching || linear || (!p_ic && noic) || orgpat.regmatch.rm_ic) - break; - # ifdef FEAT_CSCOPE - if (use_cscope) - break; - # endif -! orgpat.regmatch.rm_ic = TRUE; /* try another time while ignoring case */ - } - #endif - -*************** -*** 2480,2486 **** - - findtag_end: - vim_free(lbuf); -! vim_free(pats->regmatch.regprog); - vim_free(tag_fname); - #ifdef FEAT_EMACS_TAGS - vim_free(ebuf); ---- 2461,2467 ---- - - findtag_end: - vim_free(lbuf); -! vim_free(orgpat.regmatch.regprog); - vim_free(tag_fname); - #ifdef FEAT_EMACS_TAGS - vim_free(ebuf); -*** ../vim-7.3.335/src/testdir/Make_amiga.mak 2011-07-15 21:16:54.000000000 +0200 ---- src/testdir/Make_amiga.mak 2011-10-12 19:21:00.000000000 +0200 -*************** -*** 29,35 **** - test66.out test67.out test68.out test69.out test70.out \ - test71.out test72.out test73.out test74.out test75.out \ - test76.out test77.out test78.out test79.out test80.out \ -! test81.out test82.out - - .SUFFIXES: .in .out - ---- 29,35 ---- - test66.out test67.out test68.out test69.out test70.out \ - test71.out test72.out test73.out test74.out test75.out \ - test76.out test77.out test78.out test79.out test80.out \ -! test81.out test82.out test83.out - - .SUFFIXES: .in .out - -*************** -*** 131,133 **** ---- 131,134 ---- - test80.out: test80.in - test81.out: test81.in - test82.out: test82.in -+ test83.out: test83.in -*** ../vim-7.3.335/src/testdir/Make_dos.mak 2011-07-15 21:16:54.000000000 +0200 ---- src/testdir/Make_dos.mak 2011-10-12 17:39:03.000000000 +0200 -*************** -*** 29,35 **** - test42.out test52.out test65.out test66.out test67.out \ - test68.out test69.out test71.out test72.out test73.out \ - test74.out test75.out test76.out test77.out test78.out \ -! test79.out test80.out test81.out test82.out - - SCRIPTS32 = test50.out test70.out - ---- 29,35 ---- - test42.out test52.out test65.out test66.out test67.out \ - test68.out test69.out test71.out test72.out test73.out \ - test74.out test75.out test76.out test77.out test78.out \ -! test79.out test80.out test81.out test82.out test83.out - - SCRIPTS32 = test50.out test70.out - -*** ../vim-7.3.335/src/testdir/Make_ming.mak 2011-07-15 21:16:54.000000000 +0200 ---- src/testdir/Make_ming.mak 2011-10-12 17:39:03.000000000 +0200 -*************** -*** 49,55 **** - test42.out test52.out test65.out test66.out test67.out \ - test68.out test69.out test71.out test72.out test73.out \ - test74.out test75.out test76.out test77.out test78.out \ -! test79.out test80.out test81.out test82.out - - SCRIPTS32 = test50.out test70.out - ---- 49,55 ---- - test42.out test52.out test65.out test66.out test67.out \ - test68.out test69.out test71.out test72.out test73.out \ - test74.out test75.out test76.out test77.out test78.out \ -! test79.out test80.out test81.out test82.out test83.out - - SCRIPTS32 = test50.out test70.out - -*** ../vim-7.3.335/src/testdir/Make_os2.mak 2011-07-15 21:16:54.000000000 +0200 ---- src/testdir/Make_os2.mak 2011-10-12 17:39:03.000000000 +0200 -*************** -*** 29,35 **** - test66.out test67.out test68.out test69.out test70.out \ - test71.out test72.out test73.out test74.out test75.out \ - test76.out test77.out test78.out test79.out test80.out \ -! test81.out test82.out - - .SUFFIXES: .in .out - ---- 29,35 ---- - test66.out test67.out test68.out test69.out test70.out \ - test71.out test72.out test73.out test74.out test75.out \ - test76.out test77.out test78.out test79.out test80.out \ -! test81.out test82.out test83.out - - .SUFFIXES: .in .out - -*** ../vim-7.3.335/src/testdir/Make_vms.mms 2011-07-15 21:16:54.000000000 +0200 ---- src/testdir/Make_vms.mms 2011-10-12 17:39:03.000000000 +0200 -*************** -*** 76,82 **** - test66.out test67.out test68.out test69.out \ - test71.out test72.out test74.out test75.out test76.out \ - test77.out test78.out test79.out test80.out test81.out \ -! test82.out - - # Known problems: - # Test 30: a problem around mac format - unknown reason ---- 76,82 ---- - test66.out test67.out test68.out test69.out \ - test71.out test72.out test74.out test75.out test76.out \ - test77.out test78.out test79.out test80.out test81.out \ -! test82.out test83.out - - # Known problems: - # Test 30: a problem around mac format - unknown reason -*** ../vim-7.3.335/src/testdir/Makefile 2011-07-15 21:16:54.000000000 +0200 ---- src/testdir/Makefile 2011-10-12 17:39:03.000000000 +0200 -*************** -*** 26,32 **** - test64.out test65.out test66.out test67.out test68.out \ - test69.out test70.out test71.out test72.out test73.out \ - test74.out test75.out test76.out test77.out test78.out \ -! test79.out test80.out test81.out test82.out - - SCRIPTS_GUI = test16.out - ---- 26,32 ---- - test64.out test65.out test66.out test67.out test68.out \ - test69.out test70.out test71.out test72.out test73.out \ - test74.out test75.out test76.out test77.out test78.out \ -! test79.out test80.out test81.out test82.out test83.out - - SCRIPTS_GUI = test16.out - -*************** -*** 72,78 **** - fi \ - else echo $* NO OUTPUT >>test.log; \ - fi" -! -rm -rf X* test.ok viminfo - - test49.out: test49.vim - ---- 72,78 ---- - fi \ - else echo $* NO OUTPUT >>test.log; \ - fi" -! # -rm -rf X* test.ok viminfo - - test49.out: test49.vim - -*** ../vim-7.3.335/src/testdir/test83-tags2 2011-10-12 19:49:38.000000000 +0200 ---- src/testdir/test83-tags2 2011-10-12 19:34:15.000000000 +0200 -*************** -*** 0 **** ---- 1,2 ---- -+ !_TAG_FILE_ENCODING cp932 // -+ ‚`‚a‚b Xtags2.txt /‚`‚a‚b -*** ../vim-7.3.335/src/testdir/test83-tags3 2011-10-12 19:49:38.000000000 +0200 ---- src/testdir/test83-tags3 2011-10-12 19:35:42.000000000 +0200 -*************** -*** 0 **** ---- 1,102 ---- -+ !_TAG_FILE_SORTED 1 // -+ !_TAG_FILE_ENCODING cp932 // -+ abc1 Xtags3.txt /‚`‚a‚b -+ abc2 Xtags3.txt /‚`‚a‚b -+ abc3 Xtags3.txt /‚`‚a‚b -+ abc4 Xtags3.txt /‚`‚a‚b -+ abc5 Xtags3.txt /‚`‚a‚b -+ abc6 Xtags3.txt /‚`‚a‚b -+ abc7 Xtags3.txt /‚`‚a‚b -+ abc8 Xtags3.txt /‚`‚a‚b -+ abc9 Xtags3.txt /‚`‚a‚b -+ abc10 Xtags3.txt /‚`‚a‚b -+ abc11 Xtags3.txt /‚`‚a‚b -+ abc12 Xtags3.txt /‚`‚a‚b -+ abc13 Xtags3.txt /‚`‚a‚b -+ abc14 Xtags3.txt /‚`‚a‚b -+ abc15 Xtags3.txt /‚`‚a‚b -+ abc16 Xtags3.txt /‚`‚a‚b -+ abc17 Xtags3.txt /‚`‚a‚b -+ abc18 Xtags3.txt /‚`‚a‚b -+ abc19 Xtags3.txt /‚`‚a‚b -+ abc20 Xtags3.txt /‚`‚a‚b -+ abc21 Xtags3.txt /‚`‚a‚b -+ abc22 Xtags3.txt /‚`‚a‚b -+ abc23 Xtags3.txt /‚`‚a‚b -+ abc24 Xtags3.txt /‚`‚a‚b -+ abc25 Xtags3.txt /‚`‚a‚b -+ abc26 Xtags3.txt /‚`‚a‚b -+ abc27 Xtags3.txt /‚`‚a‚b -+ abc28 Xtags3.txt /‚`‚a‚b -+ abc29 Xtags3.txt /‚`‚a‚b -+ abc30 Xtags3.txt /‚`‚a‚b -+ abc31 Xtags3.txt /‚`‚a‚b -+ abc32 Xtags3.txt /‚`‚a‚b -+ abc33 Xtags3.txt /‚`‚a‚b -+ abc34 Xtags3.txt /‚`‚a‚b -+ abc35 Xtags3.txt /‚`‚a‚b -+ abc36 Xtags3.txt /‚`‚a‚b -+ abc37 Xtags3.txt /‚`‚a‚b -+ abc38 Xtags3.txt /‚`‚a‚b -+ abc39 Xtags3.txt /‚`‚a‚b -+ abc40 Xtags3.txt /‚`‚a‚b -+ abc41 Xtags3.txt /‚`‚a‚b -+ abc42 Xtags3.txt /‚`‚a‚b -+ abc43 Xtags3.txt /‚`‚a‚b -+ abc44 Xtags3.txt /‚`‚a‚b -+ abc45 Xtags3.txt /‚`‚a‚b -+ abc46 Xtags3.txt /‚`‚a‚b -+ abc47 Xtags3.txt /‚`‚a‚b -+ abc48 Xtags3.txt /‚`‚a‚b -+ abc49 Xtags3.txt /‚`‚a‚b -+ abc50 Xtags3.txt /‚`‚a‚b -+ abc51 Xtags3.txt /‚`‚a‚b -+ abc52 Xtags3.txt /‚`‚a‚b -+ abc53 Xtags3.txt /‚`‚a‚b -+ abc54 Xtags3.txt /‚`‚a‚b -+ abc55 Xtags3.txt /‚`‚a‚b -+ abc56 Xtags3.txt /‚`‚a‚b -+ abc57 Xtags3.txt /‚`‚a‚b -+ abc58 Xtags3.txt /‚`‚a‚b -+ abc59 Xtags3.txt /‚`‚a‚b -+ abc60 Xtags3.txt /‚`‚a‚b -+ abc61 Xtags3.txt /‚`‚a‚b -+ abc62 Xtags3.txt /‚`‚a‚b -+ abc63 Xtags3.txt /‚`‚a‚b -+ abc64 Xtags3.txt /‚`‚a‚b -+ abc65 Xtags3.txt /‚`‚a‚b -+ abc66 Xtags3.txt /‚`‚a‚b -+ abc67 Xtags3.txt /‚`‚a‚b -+ abc68 Xtags3.txt /‚`‚a‚b -+ abc69 Xtags3.txt /‚`‚a‚b -+ abc70 Xtags3.txt /‚`‚a‚b -+ abc71 Xtags3.txt /‚`‚a‚b -+ abc72 Xtags3.txt /‚`‚a‚b -+ abc73 Xtags3.txt /‚`‚a‚b -+ abc74 Xtags3.txt /‚`‚a‚b -+ abc75 Xtags3.txt /‚`‚a‚b -+ abc76 Xtags3.txt /‚`‚a‚b -+ abc77 Xtags3.txt /‚`‚a‚b -+ abc78 Xtags3.txt /‚`‚a‚b -+ abc79 Xtags3.txt /‚`‚a‚b -+ abc80 Xtags3.txt /‚`‚a‚b -+ abc81 Xtags3.txt /‚`‚a‚b -+ abc82 Xtags3.txt /‚`‚a‚b -+ abc83 Xtags3.txt /‚`‚a‚b -+ abc84 Xtags3.txt /‚`‚a‚b -+ abc85 Xtags3.txt /‚`‚a‚b -+ abc86 Xtags3.txt /‚`‚a‚b -+ abc87 Xtags3.txt /‚`‚a‚b -+ abc88 Xtags3.txt /‚`‚a‚b -+ abc89 Xtags3.txt /‚`‚a‚b -+ abc90 Xtags3.txt /‚`‚a‚b -+ abc91 Xtags3.txt /‚`‚a‚b -+ abc92 Xtags3.txt /‚`‚a‚b -+ abc93 Xtags3.txt /‚`‚a‚b -+ abc94 Xtags3.txt /‚`‚a‚b -+ abc95 Xtags3.txt /‚`‚a‚b -+ abc96 Xtags3.txt /‚`‚a‚b -+ abc97 Xtags3.txt /‚`‚a‚b -+ abc98 Xtags3.txt /‚`‚a‚b -+ abc99 Xtags3.txt /‚`‚a‚b -+ abc100 Xtags3.txt /‚`‚a‚b -*** ../vim-7.3.335/src/testdir/test83.in 2011-10-12 19:49:38.000000000 +0200 ---- src/testdir/test83.in 2011-10-12 19:40:47.000000000 +0200 -*************** -*** 0 **** ---- 1,76 ---- -+ Tests for tag search with !_TAG_FILE_ENCODING. -+ -+ STARTTEST -+ :so mbyte.vim -+ :if !has('iconv') -+ : e! test.ok -+ : w! test.out -+ : qa! -+ :endif -+ :set enc=utf8 -+ -+ :/^text for tags1$/,/^text for tags1$/+1w! Xtags1.txt -+ :/^text for tags2$/,/^text for tags2$/+1w! Xtags2.txt -+ :/^text for tags3$/,/^text for tags3$/+1w! Xtags3.txt -+ :/^tags1$/+1,/^tags1-end$/-1w! Xtags1 -+ -+ ggdG -+ -+ :call setline('.', 'Results of test83') -+ -+ :" case1: -+ :new -+ :set tags=Xtags1 -+ :let v:errmsg = '' -+ :tag abcdefghijklmnopqrs -+ :if v:errmsg =~ 'E426:' || getline('.') != 'abcdefghijklmnopqrs' -+ : close -+ : put ='case1: failed' -+ :else -+ : close -+ : put ='case1: ok' -+ :endif -+ -+ :" case2: -+ :new -+ :set tags=test83-tags2 -+ :let v:errmsg = '' -+ :tag /.BC -+ :if v:errmsg =~ 'E426:' || getline('.') != 'ABC' -+ : close -+ : put ='case2: failed' -+ :else -+ : close -+ : put ='case2: ok' -+ :endif -+ -+ :" case3: -+ :new -+ :set tags=test83-tags3 -+ :let v:errmsg = '' -+ :tag abc50 -+ :if v:errmsg =~ 'E426:' || getline('.') != 'ABC' -+ : close -+ : put ='case3: failed' -+ :else -+ : close -+ : put ='case3: ok' -+ :endif -+ :close -+ -+ :wq! test.out -+ ENDTEST -+ -+ text for tags1 -+ abcdefghijklmnopqrs -+ -+ text for tags2 -+ ABC -+ -+ text for tags3 -+ ABC -+ -+ tags1 -+ !_TAG_FILE_ENCODING utf-8 // -+ abcdefghijklmnopqrs Xtags1.txt /abcdefghijklmnopqrs -+ tags1-end -*** ../vim-7.3.335/src/testdir/test83.ok 2011-10-12 19:49:38.000000000 +0200 ---- src/testdir/test83.ok 2011-10-12 17:39:03.000000000 +0200 -*************** -*** 0 **** ---- 1,4 ---- -+ Results of test83 -+ case1: ok -+ case2: ok -+ case3: ok -*** ../vim-7.3.335/src/version.c 2011-10-12 16:57:07.000000000 +0200 ---- src/version.c 2011-10-12 19:45:46.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 336, - /**/ - - --- -hundred-and-one symptoms of being an internet addict: -62. If your doorbell rings, you think that new mail has arrived. And then - you're disappointed that it's only someone at the door. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.337 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.337 (after 7.3.295) -Problem: Screen doesn't update after resizing the xterm until a character - is typed. -Solution: When the select call is interrupted check do_resize. (Taylor - Hedberg) -Files: src/os_unix.c - - -*** ../vim-7.3.336/src/os_unix.c 2011-09-08 23:24:09.000000000 +0200 ---- src/os_unix.c 2011-10-12 20:57:15.000000000 +0200 -*************** -*** 5146,5156 **** ---- 5146,5163 ---- - # endif - # ifdef EINTR - if (ret == -1 && errno == EINTR) -+ { -+ /* Check whether window has been resized, EINTR may be caused by -+ * SIGWINCH. */ -+ if (do_resize) -+ handle_resize(); -+ - /* Interrupted by a signal, need to try again. We ignore msec - * here, because we do want to check even after a timeout if - * characters are available. Needed for reading output of an - * external command after the process has finished. */ - goto select_eintr; -+ } - # endif - # ifdef __TANDEM - if (ret == -1 && errno == ENOTSUP) -*** ../vim-7.3.336/src/version.c 2011-10-12 19:53:31.000000000 +0200 ---- src/version.c 2011-10-12 21:03:47.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 337, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -64. The remote to the T.V. is missing...and you don't even care. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.338 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.338 -Problem: Using getchar() in an expression mapping doesn't work well. -Solution: Don't save and restore the typeahead. (James Vega) -Files: src/getchar.c, src/testdir/test34.ok - - -*** ../vim-7.3.337/src/getchar.c 2011-08-17 20:33:18.000000000 +0200 ---- src/getchar.c 2011-10-12 21:53:27.000000000 +0200 -*************** -*** 2460,2486 **** - - /* - * Handle ":map <expr>": evaluate the {rhs} as an -! * expression. Save and restore the typeahead so that -! * getchar() can be used. Also save and restore the -! * command line for "normal :". - */ - if (mp->m_expr) - { -- tasave_T tabuf; - int save_vgetc_busy = vgetc_busy; - -! save_typeahead(&tabuf); -! if (tabuf.typebuf_valid) -! { -! vgetc_busy = 0; -! save_m_keys = vim_strsave(mp->m_keys); -! save_m_str = vim_strsave(mp->m_str); -! s = eval_map_expr(save_m_str, NUL); -! vgetc_busy = save_vgetc_busy; -! } -! else -! s = NULL; -! restore_typeahead(&tabuf); - } - else - #endif ---- 2460,2477 ---- - - /* - * Handle ":map <expr>": evaluate the {rhs} as an -! * expression. Also save and restore the command line -! * for "normal :". - */ - if (mp->m_expr) - { - int save_vgetc_busy = vgetc_busy; - -! vgetc_busy = 0; -! save_m_keys = vim_strsave(mp->m_keys); -! save_m_str = vim_strsave(mp->m_str); -! s = eval_map_expr(save_m_str, NUL); -! vgetc_busy = save_vgetc_busy; - } - else - #endif -*** ../vim-7.3.337/src/testdir/test34.ok 2010-08-15 21:57:29.000000000 +0200 ---- src/testdir/test34.ok 2011-10-12 21:59:39.000000000 +0200 -*************** -*** 1,5 **** - xxx4asdf fail nop ok 9 333 -! XX111XX - ---222--- - 1. one - 2. two ---- 1,5 ---- - xxx4asdf fail nop ok 9 333 -! XX111-XX - ---222--- - 1. one - 2. two -*** ../vim-7.3.337/src/version.c 2011-10-12 21:04:15.000000000 +0200 ---- src/version.c 2011-10-12 21:20:31.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 338, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -65. The last time you looked at the clock it was 11:30pm, and in what - seems like only a few seconds later, your sister runs past you to - catch her 7am school bus. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.339 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.339 -Problem: "make shadow" doesn't link all test files. -Solution: Add a line in Makefile and Filelist. -Files: src/Makefile, Filelist - - -*** ../vim-7.3.338/Filelist 2011-09-30 16:56:00.000000000 +0200 ---- Filelist 2011-10-16 14:00:42.000000000 +0200 -*************** -*** 81,86 **** ---- 81,87 ---- - src/testdir/test[0-9]*.ok \ - src/testdir/test49.vim \ - src/testdir/test60.vim \ -+ src/testdir/test83-tags? \ - src/proto.h \ - src/proto/blowfish.pro \ - src/proto/buffer.pro \ -*** ../vim-7.3.338/src/Makefile 2011-05-19 13:40:47.000000000 +0200 ---- src/Makefile 2011-10-16 13:59:40.000000000 +0200 -*************** -*** 2328,2333 **** ---- 2328,2334 ---- - ../../testdir/vimrc.unix \ - ../../testdir/*.in \ - ../../testdir/*.vim \ -+ ../../testdir/test83-tags? \ - ../../testdir/*.ok . - - # Link needed for doing "make install" in a shadow directory. -*** ../vim-7.3.338/src/version.c 2011-10-12 22:02:07.000000000 +0200 ---- src/version.c 2011-10-20 16:34:28.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 339, - /**/ - --- -From "know your smileys": - :-O>-o Smiley American tourist (note big mouth and camera) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.340 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.340 -Problem: When 'verbosefile' is set ftplugof.vim can give an error. -Solution: Only remove filetypeplugin autocommands when they exist. (Yasuhiro - Matsumoto) -Files: runtime/ftplugof.vim - - -*** ../vim-7.3.339/runtime/ftplugof.vim 2010-08-15 21:57:11.000000000 +0200 ---- runtime/ftplugof.vim 2011-10-20 16:51:00.000000000 +0200 -*************** -*** 1,11 **** - " Vim support file to switch off loading plugins for file types - " - " Maintainer: Bram Moolenaar <Bram@vim.org> -! " Last Change: 2002 Apr 04 - - if exists("did_load_ftplugin") - unlet did_load_ftplugin - endif - -! " Remove all autocommands in the filetypeplugin group -! silent! au! filetypeplugin * ---- 1,13 ---- - " Vim support file to switch off loading plugins for file types - " - " Maintainer: Bram Moolenaar <Bram@vim.org> -! " Last Change: 2011 Oct 20 - - if exists("did_load_ftplugin") - unlet did_load_ftplugin - endif - -! " Remove all autocommands in the filetypeplugin group, if any exist. -! if exists("#filetypeplugin") -! silent! au! filetypeplugin * -! endif -*** ../vim-7.3.339/src/version.c 2011-10-20 16:35:25.000000000 +0200 ---- src/version.c 2011-10-20 18:01:18.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 340, - /**/ - --- -How many light bulbs does it take to change a person? - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.341 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.341 -Problem: Local help files are only listed in help.txt, not in translated - help files. -Solution: Also find translated help files. (Yasuhiro Matsumoto) -Files: src/ex_cmds.c - - -*** ../vim-7.3.340/src/ex_cmds.c 2011-09-30 17:30:27.000000000 +0200 ---- src/ex_cmds.c 2011-10-20 17:39:45.000000000 +0200 -*************** -*** 5982,5987 **** ---- 5982,5988 ---- - char_u *line; - int in_example = FALSE; - int len; -+ char_u *fname; - char_u *p; - char_u *rt; - int mustfree; -*************** -*** 6028,6151 **** - } - - /* -! * In the "help.txt" file, add the locally added help files. -! * This uses the very first line in the help file. - */ -! if (fnamecmp(gettail(curbuf->b_fname), "help.txt") == 0) - { - for (lnum = 1; lnum < curbuf->b_ml.ml_line_count; ++lnum) - { - line = ml_get_buf(curbuf, lnum, FALSE); -! if (strstr((char *)line, "*local-additions*") != NULL) - { -! /* Go through all directories in 'runtimepath', skipping -! * $VIMRUNTIME. */ -! p = p_rtp; -! while (*p != NUL) - { -! copy_option_part(&p, NameBuff, MAXPATHL, ","); -! mustfree = FALSE; -! rt = vim_getenv((char_u *)"VIMRUNTIME", &mustfree); -! if (fullpathcmp(rt, NameBuff, FALSE) != FPC_SAME) -! { -! int fcount; -! char_u **fnames; -! FILE *fd; -! char_u *s; -! int fi; - #ifdef FEAT_MBYTE -! vimconv_T vc; -! char_u *cp; - #endif - -! /* Find all "doc/ *.txt" files in this directory. */ -! add_pathsep(NameBuff); -! STRCAT(NameBuff, "doc/*.txt"); -! if (gen_expand_wildcards(1, &NameBuff, &fcount, -! &fnames, EW_FILE|EW_SILENT) == OK -! && fcount > 0) - { -! for (fi = 0; fi < fcount; ++fi) - { -! fd = mch_fopen((char *)fnames[fi], "r"); -! if (fd != NULL) - { -! vim_fgets(IObuff, IOSIZE, fd); -! if (IObuff[0] == '*' -! && (s = vim_strchr(IObuff + 1, '*')) -! != NULL) -! { -! #ifdef FEAT_MBYTE -! int this_utf = MAYBE; - #endif -! /* Change tag definition to a -! * reference and remove <CR>/<NL>. */ -! IObuff[0] = '|'; -! *s = '|'; -! while (*s != NUL) -! { -! if (*s == '\r' || *s == '\n') -! *s = NUL; - #ifdef FEAT_MBYTE -! /* The text is utf-8 when a byte -! * above 127 is found and no -! * illegal byte sequence is found. -! */ -! if (*s >= 0x80 && this_utf != FALSE) -! { -! int l; -! -! this_utf = TRUE; -! l = utf_ptr2len(s); -! if (l == 1) -! this_utf = FALSE; -! s += l - 1; -! } - #endif -! ++s; -! } - #ifdef FEAT_MBYTE -! /* The help file is latin1 or utf-8; -! * conversion to the current -! * 'encoding' may be required. */ -! vc.vc_type = CONV_NONE; -! convert_setup(&vc, (char_u *)( -! this_utf == TRUE ? "utf-8" -! : "latin1"), p_enc); -! if (vc.vc_type == CONV_NONE) -! /* No conversion needed. */ -! cp = IObuff; -! else - { -! /* Do the conversion. If it fails -! * use the unconverted text. */ -! cp = string_convert(&vc, IObuff, -! NULL); -! if (cp == NULL) -! cp = IObuff; - } -! convert_setup(&vc, NULL, NULL); - -! ml_append(lnum, cp, (colnr_T)0, FALSE); -! if (cp != IObuff) -! vim_free(cp); - #else -! ml_append(lnum, IObuff, (colnr_T)0, -! FALSE); - #endif -! ++lnum; -! } -! fclose(fd); - } - } -- FreeWild(fcount, fnames); - } - } -- if (mustfree) -- vim_free(rt); - } -! break; - } - } - } - } ---- 6029,6215 ---- - } - - /* -! * In the "help.txt" and "help.abx" file, add the locally added help -! * files. This uses the very first line in the help file. - */ -! fname = gettail(curbuf->b_fname); -! if (fnamecmp(fname, "help.txt") == 0 -! #ifdef FEAT_MULTI_LANG -! || (fnamencmp(fname, "help.", 5) == 0 -! && ASCII_ISALPHA(fname[5]) -! && ASCII_ISALPHA(fname[6]) -! && TOLOWER_ASC(fname[7]) == 'x' -! && fname[8] == NUL) -! #endif -! ) - { - for (lnum = 1; lnum < curbuf->b_ml.ml_line_count; ++lnum) - { - line = ml_get_buf(curbuf, lnum, FALSE); -! if (strstr((char *)line, "*local-additions*") == NULL) -! continue; -! -! /* Go through all directories in 'runtimepath', skipping -! * $VIMRUNTIME. */ -! p = p_rtp; -! while (*p != NUL) - { -! copy_option_part(&p, NameBuff, MAXPATHL, ","); -! mustfree = FALSE; -! rt = vim_getenv((char_u *)"VIMRUNTIME", &mustfree); -! if (fullpathcmp(rt, NameBuff, FALSE) != FPC_SAME) - { -! int fcount; -! char_u **fnames; -! FILE *fd; -! char_u *s; -! int fi; - #ifdef FEAT_MBYTE -! vimconv_T vc; -! char_u *cp; - #endif - -! /* Find all "doc/ *.txt" files in this directory. */ -! add_pathsep(NameBuff); -! #ifdef FEAT_MULTI_LANG -! STRCAT(NameBuff, "doc/*.??[tx]"); -! #else -! STRCAT(NameBuff, "doc/*.txt"); -! #endif -! if (gen_expand_wildcards(1, &NameBuff, &fcount, -! &fnames, EW_FILE|EW_SILENT) == OK -! && fcount > 0) -! { -! #ifdef FEAT_MULTI_LANG -! int i1; -! int i2; -! char_u *f1; -! char_u *f2; -! char_u *t1; -! char_u *e1; -! char_u *e2; -! -! /* If foo.abx is found use it instead of foo.txt in -! * the same directory. */ -! for (i1 = 0; i1 < fcount; ++i1) - { -! for (i2 = 0; i2 < fcount; ++i2) - { -! if (i1 == i2) -! continue; -! if (fnames[i1] == NULL || fnames[i2] == NULL) -! continue; -! f1 = fnames[i1]; -! f2 = fnames[i2]; -! t1 = gettail(f1); -! if (fnamencmp(f1, f2, t1 - f1) != 0) -! continue; -! e1 = vim_strrchr(t1, '.'); -! e2 = vim_strrchr(gettail(f2), '.'); -! if (e1 == NUL || e2 == NUL) -! continue; -! if (fnamecmp(e1, ".txt") != 0 -! && fnamecmp(e1, fname + 4) != 0) - { -! /* Not .txt and not .abx, remove it. */ -! vim_free(fnames[i1]); -! fnames[i1] = NULL; -! continue; -! } -! if (fnamencmp(f1, f2, e1 - f1) != 0) -! continue; -! if (fnamecmp(e1, ".txt") == 0 -! && fnamecmp(e2, fname + 4) == 0) -! { -! /* use .abx instead of .txt */ -! vim_free(fnames[i1]); -! fnames[i1] = NULL; -! } -! } -! } - #endif -! for (fi = 0; fi < fcount; ++fi) -! { -! if (fnames[fi] == NULL) -! continue; -! fd = mch_fopen((char *)fnames[fi], "r"); -! if (fd != NULL) -! { -! vim_fgets(IObuff, IOSIZE, fd); -! if (IObuff[0] == '*' -! && (s = vim_strchr(IObuff + 1, '*')) -! != NULL) -! { - #ifdef FEAT_MBYTE -! int this_utf = MAYBE; - #endif -! /* Change tag definition to a -! * reference and remove <CR>/<NL>. */ -! IObuff[0] = '|'; -! *s = '|'; -! while (*s != NUL) -! { -! if (*s == '\r' || *s == '\n') -! *s = NUL; - #ifdef FEAT_MBYTE -! /* The text is utf-8 when a byte -! * above 127 is found and no -! * illegal byte sequence is found. -! */ -! if (*s >= 0x80 && this_utf != FALSE) - { -! int l; -! -! this_utf = TRUE; -! l = utf_ptr2len(s); -! if (l == 1) -! this_utf = FALSE; -! s += l - 1; - } -! #endif -! ++s; -! } -! #ifdef FEAT_MBYTE -! /* The help file is latin1 or utf-8; -! * conversion to the current -! * 'encoding' may be required. */ -! vc.vc_type = CONV_NONE; -! convert_setup(&vc, (char_u *)( -! this_utf == TRUE ? "utf-8" -! : "latin1"), p_enc); -! if (vc.vc_type == CONV_NONE) -! /* No conversion needed. */ -! cp = IObuff; -! else -! { -! /* Do the conversion. If it fails -! * use the unconverted text. */ -! cp = string_convert(&vc, IObuff, -! NULL); -! if (cp == NULL) -! cp = IObuff; -! } -! convert_setup(&vc, NULL, NULL); - -! ml_append(lnum, cp, (colnr_T)0, FALSE); -! if (cp != IObuff) -! vim_free(cp); - #else -! ml_append(lnum, IObuff, (colnr_T)0, -! FALSE); - #endif -! ++lnum; - } -+ fclose(fd); - } - } -+ FreeWild(fcount, fnames); - } - } -! if (mustfree) -! vim_free(rt); - } -+ break; - } - } - } -*** ../vim-7.3.340/src/version.c 2011-10-20 18:12:27.000000000 +0200 ---- src/version.c 2011-10-20 18:13:46.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 341, - /**/ - --- -From "know your smileys": - :-)-O Smiling doctor with stethoscope - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.342 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.342 -Problem: Code not in Vim style. -Solution: Fix the style. (Elias Diem) -Files: src/os_amiga.c, src/os_mac_conv.c, src/os_win16.c - - -*** ../vim-7.3.341/src/os_amiga.c 2010-08-15 21:57:27.000000000 +0200 ---- src/os_amiga.c 2011-10-20 18:19:45.000000000 +0200 -*************** -*** 1022,1028 **** - - /* insure longword alignment */ - #ifdef __amigaos4__ -! if(!(id = AllocDosObject(DOS_INFODATA, 0))) - goto out; - #else - id = (struct InfoData *)(((long)id_a + 3L) & ~3L); ---- 1022,1028 ---- - - /* insure longword alignment */ - #ifdef __amigaos4__ -! if (!(id = AllocDosObject(DOS_INFODATA, 0))) - goto out; - #else - id = (struct InfoData *)(((long)id_a + 3L) & ~3L); -*** ../vim-7.3.341/src/os_mac_conv.c 2011-06-13 02:03:55.000000000 +0200 ---- src/os_mac_conv.c 2011-10-20 18:19:45.000000000 +0200 -*************** -*** 77,83 **** - *unconvlenp = 0; - cfstr = CFStringCreateWithBytes(NULL, ptr, len, from, 0); - -! if(cfstr == NULL) - fprintf(stderr, "Encoding failed\n"); - /* When conversion failed, try excluding bytes from the end, helps when - * there is an incomplete byte sequence. Only do up to 6 bytes to avoid ---- 77,83 ---- - *unconvlenp = 0; - cfstr = CFStringCreateWithBytes(NULL, ptr, len, from, 0); - -! if (cfstr == NULL) - fprintf(stderr, "Encoding failed\n"); - /* When conversion failed, try excluding bytes from the end, helps when - * there is an incomplete byte sequence. Only do up to 6 bytes to avoid -*** ../vim-7.3.341/src/os_win16.c 2010-12-17 20:23:56.000000000 +0100 ---- src/os_win16.c 2011-10-20 18:19:45.000000000 +0200 -*************** -*** 243,251 **** - /* Wait for the command to terminate before continuing */ - while (GetModuleUsage((HINSTANCE)h_module) > 0 && again ) - { -! while( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) && again ) - { -! if(msg.message == WM_QUIT) - - { - PostQuitMessage(msg.wParam); ---- 243,251 ---- - /* Wait for the command to terminate before continuing */ - while (GetModuleUsage((HINSTANCE)h_module) > 0 && again ) - { -! while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE) && again) - { -! if (msg.message == WM_QUIT) - - { - PostQuitMessage(msg.wParam); -*** ../vim-7.3.341/src/version.c 2011-10-20 18:17:38.000000000 +0200 ---- src/version.c 2011-10-20 18:21:43.000000000 +0200 -*************** -*** 711,712 **** ---- 711,714 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 342, - /**/ - --- -You are only young once, but you can stay immature indefinitely. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.343 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.343 -Problem: No mouse support for urxvt. -Solution: Implement urxvt mouse support, also for > 252 columns. (Yiding - Jia) -Files: src/feature.h, src/keymap.h, src/option.h, src/os_unix.c, - src/term.c, src/version.c - - -*** ../vim-7.3.342/src/feature.h 2011-05-19 13:40:47.000000000 +0200 ---- src/feature.h 2011-10-20 21:02:15.000000000 +0200 -*************** -*** 1053,1058 **** ---- 1053,1061 ---- - # ifdef FEAT_BIG - # define FEAT_MOUSE_DEC - # endif -+ # ifdef FEAT_BIG -+ # define FEAT_MOUSE_URXVT -+ # endif - # if defined(FEAT_NORMAL) && (defined(MSDOS) || defined(WIN3264)) - # define DOS_MOUSE - # endif -*************** -*** 1068,1080 **** - #if defined(FEAT_NORMAL) && defined(HAVE_SYSMOUSE) - # define FEAT_SYSMOUSE - #endif - /* Define FEAT_MOUSE when any of the above is defined or FEAT_GUI. */ - #if !defined(FEAT_MOUSE_TTY) \ - && (defined(FEAT_MOUSE_XTERM) \ -! || defined(FEAT_MOUSE_NET) || defined(FEAT_MOUSE_DEC) \ -! || defined(DOS_MOUSE) || defined(FEAT_MOUSE_GPM) \ -! || defined(FEAT_MOUSE_JSB) || defined(FEAT_MOUSE_PTERM) \ -! || defined(FEAT_SYSMOUSE)) - # define FEAT_MOUSE_TTY /* include non-GUI mouse support */ - #endif - #if !defined(FEAT_MOUSE) && (defined(FEAT_MOUSE_TTY) || defined(FEAT_GUI)) ---- 1071,1093 ---- - #if defined(FEAT_NORMAL) && defined(HAVE_SYSMOUSE) - # define FEAT_SYSMOUSE - #endif -+ -+ /* urxvt is a small variation of mouse_xterm, and shares its code */ -+ #if defined(FEAT_MOUSE_URXVT) && !defined(FEAT_MOUSE_XTERM) -+ # define FEAT_MOUSE_XTERM -+ #endif -+ - /* Define FEAT_MOUSE when any of the above is defined or FEAT_GUI. */ - #if !defined(FEAT_MOUSE_TTY) \ - && (defined(FEAT_MOUSE_XTERM) \ -! || defined(FEAT_MOUSE_NET) \ -! || defined(FEAT_MOUSE_DEC) \ -! || defined(DOS_MOUSE) \ -! || defined(FEAT_MOUSE_GPM) \ -! || defined(FEAT_MOUSE_JSB) \ -! || defined(FEAT_MOUSE_PTERM) \ -! || defined(FEAT_SYSMOUSE) \ -! || defined(FEAT_MOUSE_URXVT)) - # define FEAT_MOUSE_TTY /* include non-GUI mouse support */ - #endif - #if !defined(FEAT_MOUSE) && (defined(FEAT_MOUSE_TTY) || defined(FEAT_GUI)) -*** ../vim-7.3.342/src/keymap.h 2010-08-15 21:57:32.000000000 +0200 ---- src/keymap.h 2011-10-20 21:00:37.000000000 +0200 -*************** -*** 92,104 **** - */ - #define KS_TEAROFF 244 - -! /* used for JSB term mouse */ - #define KS_JSBTERM_MOUSE 243 - -! /* used a termcap entry that produces a normal character */ - #define KS_KEY 242 - -! /* Used for the qnx pterm mouse */ - #define KS_PTERM_MOUSE 241 - - /* Used for click in a tab pages label. */ ---- 92,104 ---- - */ - #define KS_TEAROFF 244 - -! /* Used for JSB term mouse. */ - #define KS_JSBTERM_MOUSE 243 - -! /* Used a termcap entry that produces a normal character. */ - #define KS_KEY 242 - -! /* Used for the qnx pterm mouse. */ - #define KS_PTERM_MOUSE 241 - - /* Used for click in a tab pages label. */ -*************** -*** 107,112 **** ---- 107,115 ---- - /* Used for menu in a tab pages line. */ - #define KS_TABMENU 239 - -+ /* Used for the urxvt mouse. */ -+ #define KS_URXVT_MOUSE 238 -+ - /* - * Filler used after KS_SPECIAL and others - */ -*** ../vim-7.3.342/src/option.h 2011-09-30 14:44:49.000000000 +0200 ---- src/option.h 2011-10-20 19:38:59.000000000 +0200 -*************** -*** 819,825 **** - EXTERN char_u *p_ttym; /* 'ttymouse' */ - EXTERN unsigned ttym_flags; - # ifdef IN_OPTION_C -! static char *(p_ttym_values[]) = {"xterm", "xterm2", "dec", "netterm", "jsbterm", "pterm", NULL}; - # endif - # define TTYM_XTERM 0x01 - # define TTYM_XTERM2 0x02 ---- 819,825 ---- - EXTERN char_u *p_ttym; /* 'ttymouse' */ - EXTERN unsigned ttym_flags; - # ifdef IN_OPTION_C -! static char *(p_ttym_values[]) = {"xterm", "xterm2", "dec", "netterm", "jsbterm", "pterm", "urxvt", NULL}; - # endif - # define TTYM_XTERM 0x01 - # define TTYM_XTERM2 0x02 -*************** -*** 827,832 **** ---- 827,833 ---- - # define TTYM_NETTERM 0x08 - # define TTYM_JSBTERM 0x10 - # define TTYM_PTERM 0x20 -+ # define TTYM_URXVT 0x40 - #endif - EXTERN char_u *p_udir; /* 'undodir' */ - EXTERN long p_ul; /* 'undolevels' */ -*** ../vim-7.3.342/src/os_unix.c 2011-10-12 21:04:15.000000000 +0200 ---- src/os_unix.c 2011-10-20 21:02:00.000000000 +0200 -*************** -*** 2158,2167 **** ---- 2158,2170 ---- - * Return non-zero when using an xterm mouse, according to 'ttymouse'. - * Return 1 for "xterm". - * Return 2 for "xterm2". -+ * Return 3 for "urxvt". - */ - int - use_xterm_mouse() - { -+ if (ttym_flags == TTYM_URXVT) -+ return 3; - if (ttym_flags == TTYM_XTERM2) - return 2; - if (ttym_flags == TTYM_XTERM) -*************** -*** 3318,3323 **** ---- 3321,3337 ---- - return; - - xterm_mouse_vers = use_xterm_mouse(); -+ -+ # ifdef FEAT_MOUSE_URXVT -+ if (ttym_flags == TTYM_URXVT) { -+ out_str_nf((char_u *) -+ (on -+ ? IF_EB("\033[?1015h", ESC_STR "[?1015h") -+ : IF_EB("\033[?1015l", ESC_STR "[?1015l"))); -+ ison = on; -+ } -+ # endif -+ - if (xterm_mouse_vers > 0) - { - if (on) /* enable mouse events, use mouse tracking if available */ -*************** -*** 3434,3439 **** ---- 3448,3456 ---- - { - # ifdef FEAT_MOUSE_XTERM - if (use_xterm_mouse() -+ # ifdef FEAT_MOUSE_URXVT -+ && use_xterm_mouse() != 3 -+ # endif - # ifdef FEAT_GUI - && !gui.in_use - # endif -*************** -*** 3523,3528 **** ---- 3540,3566 ---- - else - del_mouse_termcode(KS_PTERM_MOUSE); - # endif -+ # ifdef FEAT_MOUSE_URXVT -+ /* same as the dec mouse */ -+ if (use_xterm_mouse() == 3 -+ # ifdef FEAT_GUI -+ && !gui.in_use -+ # endif -+ ) -+ { -+ set_mouse_termcode(KS_URXVT_MOUSE, (char_u *)(term_is_8bit(T_NAME) -+ ? IF_EB("\233", CSI_STR) -+ : IF_EB("\033[", ESC_STR "["))); -+ -+ if (*p_mouse != NUL) -+ { -+ mch_setmouse(FALSE); -+ setmouse(); -+ } -+ } -+ else -+ del_mouse_termcode(KS_URXVT_MOUSE); -+ # endif - } - #endif - -*** ../vim-7.3.342/src/version.c 2011-10-20 18:24:16.000000000 +0200 ---- src/version.c 2011-10-20 19:40:48.000000000 +0200 -*************** -*** 380,383 **** ---- 380,388 ---- - "-mouse_xterm", - # endif -+ # ifdef FEAT_MOUSE_URXVT -+ "+mouse_urxvt", -+ # else -+ "-mouse_urxvt", -+ # endif - #endif - #ifdef __QNX__ -*************** -*** 711,712 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 343, - /**/ - --- -Warning label on a superhero Halloween costume: -"Caution: Cape does not enable user to fly." - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.344 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.344 -Problem: Problem with GUI startup related to XInitThreads. -Solution: Use read() and write() instead of fputs() and fread(). (James - Vega) -Files: src/gui.c - - -*** ../vim-7.3.343/src/gui.c 2011-09-14 19:04:35.000000000 +0200 ---- src/gui.c 2011-10-20 21:23:43.000000000 +0200 -*************** -*** 212,218 **** - int status; - int exit_status; - pid_t pid = -1; -- FILE *parent_file; - - /* Setup a pipe between the child and the parent, so that the parent - * knows when the child has done the setsid() call and is allowed to ---- 212,217 ---- -*************** -*** 290,308 **** - gui_mch_forked(); - # endif - -- if (!pipe_error) -- parent_file = fdopen(pipefd[1], "w"); -- else -- parent_file = NULL; -- - /* Try to start the GUI */ - gui_attempt_start(); - - /* Notify the parent */ -! if (parent_file != NULL) - { -! fputs(gui.in_use ? "ok" : "fail", parent_file); -! fclose(parent_file); - } - - /* If we failed to start the GUI, exit now. */ ---- 289,305 ---- - gui_mch_forked(); - # endif - - /* Try to start the GUI */ - gui_attempt_start(); - - /* Notify the parent */ -! if (!pipe_error) - { -! if (gui.in_use) -! write_eintr(pipefd[1], "ok", 3); -! else -! write_eintr(pipefd[1], "fail", 5); -! close(pipefd[1]); - } - - /* If we failed to start the GUI, exit now. */ -*************** -*** 323,339 **** - static int - gui_read_child_pipe(int fd) - { -! size_t bytes_read; -! FILE *file; -! char buffer[10]; -! -! file = fdopen(fd, "r"); -! if (!file) - return GUI_CHILD_IO_ERROR; -! -! bytes_read = fread(buffer, sizeof(char), sizeof(buffer)-1, file); -! buffer[bytes_read] = '\0'; -! fclose(file); - if (strcmp(buffer, "ok") == 0) - return GUI_CHILD_OK; - return GUI_CHILD_FAILED; ---- 320,335 ---- - static int - gui_read_child_pipe(int fd) - { -! long bytes_read; -! #define READ_BUFFER_SIZE 10 -! char buffer[READ_BUFFER_SIZE]; -! -! bytes_read = read_eintr(fd, buffer, READ_BUFFER_SIZE - 1); -! #undef READ_BUFFER_SIZE -! close(fd); -! if (bytes_read < 0) - return GUI_CHILD_IO_ERROR; -! buffer[bytes_read] = NUL; - if (strcmp(buffer, "ok") == 0) - return GUI_CHILD_OK; - return GUI_CHILD_FAILED; -*** ../vim-7.3.343/src/version.c 2011-10-20 21:09:25.000000000 +0200 ---- src/version.c 2011-10-20 21:27:31.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 344, - /**/ - --- -From "know your smileys": - *<|:-) Santa Claus (Ho Ho Ho) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.345 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.345 -Problem: When switching language with ":lang" the window title doesn't - change until later. -Solution: Update the window title right away. (Dominique Pelle) -Files: src/ex_cmds2.c - - -*** ../vim-7.3.344/src/ex_cmds2.c 2011-06-26 04:25:24.000000000 +0200 ---- src/ex_cmds2.c 2011-10-20 21:31:09.000000000 +0200 -*************** -*** 4154,4159 **** ---- 4154,4162 ---- - /* Set v:lang, v:lc_time and v:ctype to the final result. */ - set_lang_var(); - # endif -+ # ifdef FEAT_TITLE -+ maketitle(); -+ # endif - } - } - } -*** ../vim-7.3.344/src/version.c 2011-10-20 21:27:57.000000000 +0200 ---- src/version.c 2011-10-20 21:38:32.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 345, - /**/ - --- -You can't have everything. Where would you put it? - -- Steven Wright - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.346 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.346 -Problem: It's hard to test netbeans commands. -Solution: Process netbeans commands after :sleep. (Xavier de Gaye) -Files: runtime/doc/netbeans.txt, src/ex_docmd.c, src/netbeans.c - - -*** ../vim-7.3.345/runtime/doc/netbeans.txt 2010-09-29 17:26:57.000000000 +0200 ---- runtime/doc/netbeans.txt 2011-10-20 21:51:41.000000000 +0200 -*************** -*** 1,4 **** -! *netbeans.txt* For Vim version 7.3. Last change: 2010 Aug 20 - - - VIM REFERENCE MANUAL by Gordon Prieur et al. ---- 1,4 ---- -! *netbeans.txt* For Vim version 7.3. Last change: 2011 Oct 20 - - - VIM REFERENCE MANUAL by Gordon Prieur et al. -*************** -*** 263,268 **** ---- 263,274 ---- - plain UTF-8 text this protocol could also be used with any other communication - mechanism. - -+ Netbeans messages are processed when Vim is idle, waiting for user input. -+ When Vim is run in non-interactive mode, for example when running an automated -+ test case that sources a Vim script, the idle loop may not be called often -+ enough. In that case, insert |sleep| commands in the Vim script. The |sleep| -+ command does invoke Netbeans messages processing. -+ - 6.1 Kinds of messages |nb-messages| - 6.2 Terms |nb-terms| - 6.3 Commands |nb-commands| -*************** -*** 820,826 **** - ============================================================================== - 7. NetBeans commands *netbeans-commands* - -! *:nbstart* *E511* - :nbs[tart] {connection} Start a new Netbeans session with {connection} as the - socket connection parameters. The format of - {connection} is described in |netbeans-parameters|. ---- 826,832 ---- - ============================================================================== - 7. NetBeans commands *netbeans-commands* - -! *:nbstart* *E511* *E838* - :nbs[tart] {connection} Start a new Netbeans session with {connection} as the - socket connection parameters. The format of - {connection} is described in |netbeans-parameters|. -*************** -*** 833,843 **** - signs. - - *:nbkey* -! :nb[key] {key} Pass the {key} to the Vim Controller for processing -! -! When a hot-key has been installed with the specialKeys command, this command -! can be used to generate a hotkey messages to the Vim Controller. The events -! newDotAndMark, keyCommand and keyAtPos are generated (in this order). - - - ============================================================================== ---- 839,854 ---- - signs. - - *:nbkey* -! :nb[key] {key} Pass the {key} to the Vim Controller for processing. -! When a hot-key has been installed with the specialKeys -! command, this command can be used to generate a hotkey -! message to the Vim Controller. -! This command can also be used to pass any text to the -! Vim Controller. It is used by Pyclewn, for example, -! to build the complete set of gdb commands as Vim user -! commands. -! The events newDotAndMark, keyCommand and keyAtPos are -! generated (in this order). - - - ============================================================================== -*** ../vim-7.3.345/src/ex_docmd.c 2011-09-30 18:35:49.000000000 +0200 ---- src/ex_docmd.c 2011-10-20 21:50:06.000000000 +0200 -*************** -*** 8205,8210 **** ---- 8205,8216 ---- - { - ui_delay(msec - done > 1000L ? 1000L : msec - done, TRUE); - ui_breakcheck(); -+ #ifdef FEAT_NETBEANS_INTG -+ /* Process the netbeans messages that may have been received in the -+ * call to ui_breakcheck() when the GUI is in use. This may occur when -+ * running a test case. */ -+ netbeans_parse_messages(); -+ #endif - } - } - -*** ../vim-7.3.345/src/netbeans.c 2011-04-11 21:35:03.000000000 +0200 ---- src/netbeans.c 2011-10-20 21:47:17.000000000 +0200 -*************** -*** 14,19 **** ---- 14,26 ---- - * which are *between* characters, whereas vim uses line number - * and column number which are *on* characters. - * See ":help netbeans-protocol" for explanation. -+ * -+ * The Netbeans messages are received and queued in the gui event loop, or in -+ * the select loop when Vim runs in a terminal. These messages are processed -+ * by netbeans_parse_messages() which is invoked in the idle loop when Vim is -+ * waiting for user input. The function netbeans_parse_messages() is also -+ * called from the ":sleep" command, to allow the execution of test cases that -+ * may not invoke the idle loop. - */ - - #include "vim.h" -*** ../vim-7.3.345/src/version.c 2011-10-20 21:57:43.000000000 +0200 ---- src/version.c 2011-10-20 21:50:23.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 346, - /**/ - --- -From "know your smileys": - ...---... SOS - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.347 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.347 -Problem: When dropping text from a browser on Vim it receives HTML even - though "html" is excluded from 'clipboard'. (Andrei Avk) -Solution: Fix the condition for TARGET_HTML. -Files: src/gui_gtk_x11.c - - -*** ../vim-7.3.346/src/gui_gtk_x11.c 2011-08-10 17:44:41.000000000 +0200 ---- src/gui_gtk_x11.c 2011-10-23 20:56:38.000000000 +0200 -*************** -*** 3081,3087 **** - - for (i = 0; i < (int)N_DND_TARGETS; ++i) - { -! if (!clip_html && selection_targets[i].info == TARGET_HTML) - n_targets--; - else - targets[j++] = dnd_targets[i]; ---- 3081,3087 ---- - - for (i = 0; i < (int)N_DND_TARGETS; ++i) - { -! if (!clip_html && dnd_targets[i].info == TARGET_HTML) - n_targets--; - else - targets[j++] = dnd_targets[i]; -*** ../vim-7.3.346/src/version.c 2011-10-20 21:58:20.000000000 +0200 ---- src/version.c 2011-10-26 11:35:23.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 347, - /**/ - --- -I AM THANKFUL... -...for a lawn that needs mowing, windows that need cleaning -and gutters that need fixing because it means I have a home. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.348 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.348 -Problem: "call range(1, 947948399)" causes a crash. (ZyX) -Solution: Avoid a loop in the out of memory message. -Files: src/misc2.c - - -*** ../vim-7.3.347/src/misc2.c 2011-08-19 22:28:58.000000000 +0200 ---- src/misc2.c 2011-10-26 11:17:26.000000000 +0200 -*************** -*** 1012,1019 **** - { - /* Don't hide this message */ - emsg_silent = 0; -! EMSGN(_("E342: Out of memory! (allocating %lu bytes)"), size); - did_outofmem_msg = TRUE; - } - } - ---- 1012,1023 ---- - { - /* Don't hide this message */ - emsg_silent = 0; -! -! /* Must come first to avoid coming back here when printing the error -! * message fails, e.g. when setting v:errmsg. */ - did_outofmem_msg = TRUE; -+ -+ EMSGN(_("E342: Out of memory! (allocating %lu bytes)"), size); - } - } - -*** ../vim-7.3.347/src/version.c 2011-10-26 11:36:21.000000000 +0200 ---- src/version.c 2011-10-26 11:38:33.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 348, - /**/ - --- -A fool learns from his mistakes, a wise man from someone else's. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.349 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.349 -Problem: When running out of memory during startup trying to open a - swapfile will loop forever. -Solution: Let findswapname() set dirp to NULL if out of memory. -Files: src/memline.c - - -*** ../vim-7.3.348/src/memline.c 2011-06-13 01:07:22.000000000 +0200 ---- src/memline.c 2011-10-26 11:26:06.000000000 +0200 -*************** -*** 621,626 **** ---- 621,628 ---- - break; - fname = findswapname(buf, &dirp, mfp->mf_fname); - /* alloc's fname */ -+ if (dirp == NULL) /* out of memory */ -+ break; - if (fname == NULL) /* no file name found for this dir */ - continue; - -*************** -*** 744,749 **** ---- 746,753 ---- - * and creating it, another Vim creates the file. In that case the - * creation will fail and we will use another directory. */ - fname = findswapname(buf, &dirp, NULL); /* allocates fname */ -+ if (dirp == NULL) -+ break; /* out of memory */ - if (fname == NULL) - continue; - if (mf_open_file(mfp, fname) == OK) /* consumes fname! */ -*************** -*** 4114,4119 **** ---- 4118,4124 ---- - * - * Several names are tried to find one that does not exist - * Returns the name in allocated memory or NULL. -+ * When out of memory "dirp" is set to NULL. - * - * Note: If BASENAMELEN is not correct, you will get error messages for - * not being able to open the swap or undo file -*************** -*** 4157,4163 **** - * First allocate some memory to put the directory name in. - */ - dir_name = alloc((unsigned)STRLEN(*dirp) + 1); -! if (dir_name != NULL) - (void)copy_option_part(dirp, dir_name, 31000, ","); - - /* ---- 4162,4170 ---- - * First allocate some memory to put the directory name in. - */ - dir_name = alloc((unsigned)STRLEN(*dirp) + 1); -! if (dir_name == NULL) -! *dirp = NULL; -! else - (void)copy_option_part(dirp, dir_name, 31000, ","); - - /* -*** ../vim-7.3.348/src/version.c 2011-10-26 11:40:56.000000000 +0200 ---- src/version.c 2011-10-26 11:43:05.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 349, - /**/ - --- -I AM THANKFUL... -...for all the complaining I hear about the government -because it means we have freedom of speech. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.350 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.350 -Problem: Block of code after ":lua << EOF" may not work. (Paul Isambert) -Solution: Recognize the ":lua" command, skip to EOF. -Files: src/eval.c - - -*** ../vim-7.3.349/src/eval.c 2011-09-30 18:35:49.000000000 +0200 ---- src/eval.c 2011-10-26 13:12:06.000000000 +0200 -*************** -*** 20899,20904 **** ---- 20899,20906 ---- - && (!ASCII_ISALPHA(p[2]) || p[2] == 'r')) - || (p[0] == 't' && p[1] == 'c' - && (!ASCII_ISALPHA(p[2]) || p[2] == 'l')) -+ || (p[0] == 'l' && p[1] == 'u' && p[2] == 'a' -+ && !ASCII_ISALPHA(p[3])) - || (p[0] == 'r' && p[1] == 'u' && p[2] == 'b' - && (!ASCII_ISALPHA(p[3]) || p[3] == 'y')) - || (p[0] == 'm' && p[1] == 'z' -*** ../vim-7.3.349/src/version.c 2011-10-26 11:44:15.000000000 +0200 ---- src/version.c 2011-10-26 13:13:21.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 350, - /**/ - --- -From "know your smileys": - :-| :-| Deja' vu! - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.351 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.351 -Problem: Text formatting uses start of insert position when it should not. - (Peter Wagenaar) -Solution: Do not use Insstart when intentionally formatting. -Files: src/edit.c - - -*** ../vim-7.3.350/src/edit.c 2011-09-21 18:23:02.000000000 +0200 ---- src/edit.c 2011-10-26 16:58:21.000000000 +0200 -*************** -*** 6078,6083 **** ---- 6078,6084 ---- - * Stop at first entered white when 'formatoptions' has 'v' - */ - while ((!fo_ins_blank && !has_format_option(FO_INS_VI)) -+ || (flags & INSCHAR_FORMAT) - || curwin->w_cursor.lnum != Insstart.lnum - || curwin->w_cursor.col >= Insstart.col) - { -*** ../vim-7.3.350/src/version.c 2011-10-26 13:19:23.000000000 +0200 ---- src/version.c 2011-10-26 17:03:37.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 351, - /**/ - --- -From "know your smileys": - :-* A big kiss! - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.352 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.352 -Problem: When completing methods dict functions and script-local functions - get in the way. -Solution: Sort function names starting with "<" to the end. (Yasuhiro - Matsumoto) -Files: src/ex_getln.c - - -*** ../vim-7.3.351/src/ex_getln.c 2011-09-30 17:46:14.000000000 +0200 ---- src/ex_getln.c 2011-10-26 21:37:53.000000000 +0200 -*************** -*** 121,126 **** ---- 121,134 ---- - static int ex_window __ARGS((void)); - #endif - -+ #if defined(FEAT_CMDL_COMPL) || defined(PROTO) -+ static int -+ #ifdef __BORLANDC__ -+ _RTLENTRYF -+ #endif -+ sort_func_compare __ARGS((const void *s1, const void *s2)); -+ #endif -+ - /* - * getcmdline() - accept a command line starting with firstc. - * -*************** -*** 3286,3291 **** ---- 3294,3317 ---- - return check_abbr(c, ccline.cmdbuff, ccline.cmdpos, 0); - } - -+ #if defined(FEAT_CMDL_COMPL) || defined(PROTO) -+ static int -+ #ifdef __BORLANDC__ -+ _RTLENTRYF -+ #endif -+ sort_func_compare(s1, s2) -+ const void *s1; -+ const void *s2; -+ { -+ char_u *p1 = *(char_u **)s1; -+ char_u *p2 = *(char_u **)s2; -+ -+ if (*p1 != '<' && *p2 == '<') return -1; -+ if (*p1 == '<' && *p2 != '<') return 1; -+ return STRCMP(p1, p2); -+ } -+ #endif -+ - /* - * Return FAIL if this is not an appropriate context in which to do - * completion of anything, return OK if it is (even if there are no matches). -*************** -*** 4735,4741 **** - - /* Sort the results. Keep menu's in the specified order. */ - if (xp->xp_context != EXPAND_MENUNAMES && xp->xp_context != EXPAND_MENUS) -! sort_strings(*file, *num_file); - - #ifdef FEAT_CMDL_COMPL - /* Reset the variables used for special highlight names expansion, so that ---- 4761,4776 ---- - - /* Sort the results. Keep menu's in the specified order. */ - if (xp->xp_context != EXPAND_MENUNAMES && xp->xp_context != EXPAND_MENUS) -! { -! if (xp->xp_context == EXPAND_EXPRESSION -! || xp->xp_context == EXPAND_FUNCTIONS -! || xp->xp_context == EXPAND_USER_FUNC) -! /* <SNR> functions should be sorted to the end. */ -! qsort((void *)*file, (size_t)*num_file, sizeof(char_u *), -! sort_func_compare); -! else -! sort_strings(*file, *num_file); -! } - - #ifdef FEAT_CMDL_COMPL - /* Reset the variables used for special highlight names expansion, so that -*** ../vim-7.3.351/src/version.c 2011-10-26 17:04:23.000000000 +0200 ---- src/version.c 2011-10-26 21:49:53.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 352, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -94. Now admit it... How many of you have made "modem noises" into - the phone just to see if it was possible? :-) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.353 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.353 (after 7.3.343) -Problem: Missing part of the urxvt patch. -Solution: Add the change in term.c -Files: src/term.c - - -*** ../vim-7.3.352/src/term.c 2011-09-14 14:43:21.000000000 +0200 ---- src/term.c 2011-10-26 23:48:01.000000000 +0200 -*************** -*** 4008,4014 **** - } - - #ifdef FEAT_TERMRESPONSE -! if (key_name[0] == NUL) - { - /* Check for xterm version string: "<Esc>[>{x};{vers};{y}c". Also - * eat other possible responses to t_RV, rxvt returns ---- 4008,4016 ---- - } - - #ifdef FEAT_TERMRESPONSE -! if (key_name[0] == NUL -! /* URXVT mouse uses <ESC>[#;#;#M, but we are matching <ESC>[ */ -! || key_name[0] == KS_URXVT_MOUSE) - { - /* Check for xterm version string: "<Esc>[>{x};{vers};{y}c". Also - * eat other possible responses to t_RV, rxvt returns -*************** -*** 4047,4053 **** - if (tp[1 + (tp[0] != CSI)] == '>' && j == 2) - { - /* if xterm version >= 95 use mouse dragging */ -! if (extra >= 95) - set_option_value((char_u *)"ttym", 0L, - (char_u *)"xterm2", 0); - /* if xterm version >= 141 try to get termcap codes */ ---- 4049,4055 ---- - if (tp[1 + (tp[0] != CSI)] == '>' && j == 2) - { - /* if xterm version >= 95 use mouse dragging */ -! if (extra >= 95 && ttym_flags != TTYM_URXVT) - set_option_value((char_u *)"ttym", 0L, - (char_u *)"xterm2", 0); - /* if xterm version >= 141 try to get termcap codes */ -*************** -*** 4141,4146 **** ---- 4143,4151 ---- - # ifdef FEAT_MOUSE_PTERM - || key_name[0] == (int)KS_PTERM_MOUSE - # endif -+ # ifdef FEAT_MOUSE_URXVT -+ || key_name[0] == (int)KS_URXVT_MOUSE -+ # endif - ) - { - is_click = is_drag = FALSE; -*************** -*** 4219,4225 **** ---- 4224,4292 ---- - else - break; - } -+ } -+ -+ # ifdef FEAT_MOUSE_URXVT -+ if (key_name[0] == (int)KS_URXVT_MOUSE) -+ { -+ for (;;) -+ { -+ /* URXVT 1015 mouse reporting mode: -+ * Almost identical to xterm mouse mode, except the values -+ * are decimal instead of bytes. -+ * -+ * \033[%d;%d;%dM -+ * ^-- row -+ * ^----- column -+ * ^-------- code -+ */ -+ p = tp + slen; -+ -+ mouse_code = getdigits(&p); -+ if (*p++ != ';') -+ return -1; -+ -+ mouse_col = getdigits(&p) - 1; -+ if (*p++ != ';') -+ return -1; -+ -+ mouse_row = getdigits(&p) - 1; -+ if (*p++ != 'M') -+ return -1; -+ -+ slen += (int)(p - (tp + slen)); -+ -+ /* skip this one if next one has same code (like xterm -+ * case) */ -+ j = termcodes[idx].len; -+ if (STRNCMP(tp, tp + slen, (size_t)j) == 0) { -+ /* check if the command is complete by looking for the -+ * M */ -+ int slen2; -+ int cmd_complete = 0; -+ for (slen2 = slen; slen2 < len; slen2++) { -+ if (tp[slen2] == 'M') { -+ cmd_complete = 1; -+ break; -+ } -+ } -+ p += j; -+ if (cmd_complete && getdigits(&p) == mouse_code) { -+ slen += j; /* skip the \033[ */ -+ continue; -+ } -+ } -+ break; -+ } -+ } -+ # endif - -+ if (key_name[0] == (int)KS_MOUSE -+ #ifdef FEAT_MOUSE_URXVT -+ || key_name[0] == (int)KS_URXVT_MOUSE -+ #endif -+ ) -+ { - # if !defined(MSWIN) && !defined(MSDOS) - /* - * Handle mouse events. -*** ../vim-7.3.352/src/version.c 2011-10-26 22:02:10.000000000 +0200 ---- src/version.c 2011-10-26 23:43:26.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 353, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -99. The hum of a cooling fan and the click of keys is comforting to you. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.354 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.354 -Problem: ":set backspace+=eol" doesn't work when 'backspace' has a - backwards compatible value of 2. -Solution: Convert the number to a string. (Hirohito Higashi) -Files: src/option.c - - -*** ../vim-7.3.353/src/option.c 2011-10-12 16:57:07.000000000 +0200 ---- src/option.c 2011-11-30 11:11:15.000000000 +0100 -*************** -*** 4567,4572 **** ---- 4567,4597 ---- - arg = errbuf; - } - /* -+ * Convert 'backspace' number to string, for -+ * adding, prepending and removing string. -+ */ -+ else if (varp == (char_u *)&p_bs -+ && VIM_ISDIGIT(**(char_u **)varp)) -+ { -+ i = getdigits((char_u **)varp); -+ switch (i) -+ { -+ case 0: -+ *(char_u **)varp = empty_option; -+ break; -+ case 1: -+ *(char_u **)varp = vim_strsave( -+ (char_u *)"indent,eol"); -+ break; -+ case 2: -+ *(char_u **)varp = vim_strsave( -+ (char_u *)"indent,eol,start"); -+ break; -+ } -+ vim_free(oldval); -+ oldval = *(char_u **)varp; -+ } -+ /* - * Convert 'whichwrap' number to string, for - * backwards compatibility with Vim 3.0. - * Misuse errbuf[] for the resulting string. -*** ../vim-7.3.353/src/version.c 2011-10-26 23:48:17.000000000 +0200 ---- src/version.c 2011-11-30 11:14:44.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 354, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -206. You religiously respond immediately to e-mail, while ignoring - your growing pile of snail mail. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.355 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.355 -Problem: GTK warnings when using netrw.vim. (Ivan Krasilnikov) -Solution: Do not remove the beval event handler twice. -Files: src/option.c - - -*** ../vim-7.3.354/src/option.c 2011-11-30 11:15:40.000000000 +0100 ---- src/option.c 2011-11-30 11:11:15.000000000 +0100 -*************** -*** 7796,7804 **** - #ifdef FEAT_BEVAL - else if ((int *)varp == &p_beval) - { -! if (p_beval == TRUE) - gui_mch_enable_beval_area(balloonEval); -! else - gui_mch_disable_beval_area(balloonEval); - } - #endif ---- 7796,7804 ---- - #ifdef FEAT_BEVAL - else if ((int *)varp == &p_beval) - { -! if (p_beval && !old_value) - gui_mch_enable_beval_area(balloonEval); -! else if (!p_beval && old_value) - gui_mch_disable_beval_area(balloonEval); - } - #endif -*** ../vim-7.3.354/src/version.c 2011-11-30 11:15:40.000000000 +0100 ---- src/version.c 2011-11-30 11:30:55.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 355, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -209. Your house stinks because you haven't cleaned it in a week. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.356 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.356 -Problem: Using "o" with 'cindent' set may freeze Vim. (lolilolicon) -Solution: Skip over {} correctly. (Hari G) -Files: src/misc1.c - - -*** ../vim-7.3.355/src/misc1.c 2011-10-04 18:03:43.000000000 +0200 ---- src/misc1.c 2011-11-30 12:56:55.000000000 +0100 -*************** -*** 6127,6133 **** - - /* - * Set w_cursor.col to the column number of the last unmatched ')' or '{' in -! * line "l". - */ - static int - find_last_paren(l, start, end) ---- 6127,6133 ---- - - /* - * Set w_cursor.col to the column number of the last unmatched ')' or '{' in -! * line "l". "l" must point to the start of the line. - */ - static int - find_last_paren(l, start, end) -*************** -*** 6140,6146 **** - - curwin->w_cursor.col = 0; /* default is start of line */ - -! for (i = 0; l[i]; i++) - { - i = (int)(cin_skipcomment(l + i) - l); /* ignore parens in comments */ - i = (int)(skip_string(l + i) - l); /* ignore parens in quotes */ ---- 6140,6146 ---- - - curwin->w_cursor.col = 0; /* default is start of line */ - -! for (i = 0; l[i] != NUL; i++) - { - i = (int)(cin_skipcomment(l + i) - l); /* ignore parens in comments */ - i = (int)(skip_string(l + i) - l); /* ignore parens in quotes */ -*************** -*** 7953,7958 **** ---- 7953,7959 ---- - * If we're at the end of a block, skip to the start of - * that block. - */ -+ l = ml_get_curline(); - if (find_last_paren(l, '{', '}') - && (trypos = find_start_brace(ind_maxcomment)) - != NULL) /* XXX */ -*** ../vim-7.3.355/src/version.c 2011-11-30 11:31:25.000000000 +0100 ---- src/version.c 2011-11-30 13:02:52.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 356, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -213. Your kids start referring to you as "that guy in front of the monitor." - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.357 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.357 -Problem: Compiler warning in MS-Windows console build. -Solution: Adjust return type of PrintHookProc(). (Mike Williams) -Files: src/os_mswin.c - - -*** ../vim-7.3.356/src/os_mswin.c 2011-09-21 20:09:38.000000000 +0200 ---- src/os_mswin.c 2011-11-30 13:41:13.000000000 +0100 -*************** -*** 1869,1875 **** - - #ifndef FEAT_GUI - -! static UINT CALLBACK - PrintHookProc( - HWND hDlg, // handle to dialog box - UINT uiMsg, // message identifier ---- 1869,1875 ---- - - #ifndef FEAT_GUI - -! static UINT_PTR CALLBACK - PrintHookProc( - HWND hDlg, // handle to dialog box - UINT uiMsg, // message identifier -*** ../vim-7.3.356/src/version.c 2011-11-30 13:03:24.000000000 +0100 ---- src/version.c 2011-11-30 13:41:55.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 357, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -215. Your mouse-clicking forearm rivals Popeye's. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.358 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.358 (after 7.3.353) -Problem: Mouse support doesn't work properly. -Solution: Add HMT_URXVT. (lilydjwg, James McCoy) -Files: src/term.c - - -*** ../vim-7.3.357/src/term.c 2011-10-26 23:48:17.000000000 +0200 ---- src/term.c 2011-11-30 14:42:22.000000000 +0100 -*************** -*** 1996,2001 **** ---- 1996,2002 ---- - # define HMT_DEC 4 - # define HMT_JSBTERM 8 - # define HMT_PTERM 16 -+ # define HMT_URXVT 32 - static int has_mouse_termcode = 0; - # endif - -*************** -*** 2031,2036 **** ---- 2032,2042 ---- - has_mouse_termcode |= HMT_PTERM; - else - # endif -+ # ifdef FEAT_MOUSE_URXVT -+ if (n == KS_URXVT_MOUSE) -+ has_mouse_termcode |= HMT_URXVT; -+ else -+ # endif - has_mouse_termcode |= HMT_NORMAL; - # endif - } -*************** -*** 2068,2073 **** ---- 2074,2084 ---- - has_mouse_termcode &= ~HMT_PTERM; - else - # endif -+ # ifdef FEAT_MOUSE_URXVT -+ if (n == KS_URXVT_MOUSE) -+ has_mouse_termcode &= ~HMT_URXVT; -+ else -+ # endif - has_mouse_termcode &= ~HMT_NORMAL; - # endif - } -*** ../vim-7.3.357/src/version.c 2011-11-30 13:42:40.000000000 +0100 ---- src/version.c 2011-11-30 14:45:06.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 358, - /**/ - --- -I noticed my daughter's Disney-net password on a sticky note: -"MickeyMinnieGoofyPluto". I asked her why it was so long. -"Because they say it has to have at least four characters." - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.359 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.359 -Problem: Command line completion shows dict functions. -Solution: Skip dict functions for completion. (Yasuhiro Matsumoto) -Files: src/eval.c - - -*** ../vim-7.3.358/src/eval.c 2011-10-26 13:19:23.000000000 +0200 ---- src/eval.c 2011-11-30 14:53:38.000000000 +0100 -*************** -*** 875,881 **** - - #ifdef EBCDIC - /* -! * Sort the function table, to enable binary sort. - */ - sortFunctions(); - #endif ---- 875,881 ---- - - #ifdef EBCDIC - /* -! * Sort the function table, to enable binary search. - */ - sortFunctions(); - #endif -*************** -*** 21737,21742 **** ---- 21737,21745 ---- - ++hi; - fp = HI2UF(hi); - -+ if (fp->uf_flags & FC_DICT) -+ return NULL; /* don't show dict functions */ -+ - if (STRLEN(fp->uf_name) + 4 >= IOSIZE) - return fp->uf_name; /* prevents overflow */ - -*** ../vim-7.3.358/src/version.c 2011-11-30 14:47:12.000000000 +0100 ---- src/version.c 2011-11-30 14:56:57.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 359, - /**/ - --- -'Psychologist' -- Someone who looks at everyone else when -an attractive woman enters the room. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.360 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.360 -Problem: Interrupting the load of an autoload function may cause a crash. -Solution: Do not use the hashitem when not valid. (Yukihiro Nakadaira) -Files: src/eval.c - - -*** ../vim-7.3.359/src/eval.c 2011-11-30 14:57:26.000000000 +0100 ---- src/eval.c 2011-11-30 15:06:53.000000000 +0100 -*************** -*** 19589,19597 **** - * worked find the variable again. Don't auto-load a script if it was - * loaded already, otherwise it would be loaded every time when - * checking if a function name is a Funcref variable. */ -! if (ht == &globvarht && !writing -! && script_autoload(varname, FALSE) && !aborting()) - hi = hash_find(ht, varname); - if (HASHITEM_EMPTY(hi)) - return NULL; - } ---- 19589,19602 ---- - * worked find the variable again. Don't auto-load a script if it was - * loaded already, otherwise it would be loaded every time when - * checking if a function name is a Funcref variable. */ -! if (ht == &globvarht && !writing) -! { -! /* Note: script_autoload() may make "hi" invalid. It must either -! * be obtained again or not used. */ -! if (!script_autoload(varname, FALSE) || aborting()) -! return NULL; - hi = hash_find(ht, varname); -+ } - if (HASHITEM_EMPTY(hi)) - return NULL; - } -*** ../vim-7.3.359/src/version.c 2011-11-30 14:57:26.000000000 +0100 ---- src/version.c 2011-11-30 15:17:28.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 360, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -217. Your sex life has drastically improved...so what if it's only cyber-sex! - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.361 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.361 -Problem: Accessing memory after it is freed when EXITFREE is defined. -Solution: Don't access curwin when firstwin is NULL. (Dominique Pelle) -Files: src/buffer.c - -*** ../vim-7.3.360/src/buffer.c 2011-09-14 17:50:05.000000000 +0200 ---- src/buffer.c 2011-11-30 15:38:00.000000000 +0100 -*************** -*** 567,574 **** - diff_buf_delete(buf); /* Can't use 'diff' for unloaded buffer. */ - #endif - #ifdef FEAT_SYN_HL -! if (curwin->w_buffer == buf) -! reset_synblock(curwin); /* remove any ownsyntax */ - #endif - - #ifdef FEAT_FOLDING ---- 567,575 ---- - diff_buf_delete(buf); /* Can't use 'diff' for unloaded buffer. */ - #endif - #ifdef FEAT_SYN_HL -! /* Remove any ownsyntax, unless exiting. */ -! if (firstwin != NULL && curwin->w_buffer == buf) -! reset_synblock(curwin); - #endif - - #ifdef FEAT_FOLDING -*** ../vim-7.3.360/src/version.c 2011-11-30 15:19:25.000000000 +0100 ---- src/version.c 2011-11-30 15:40:22.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 361, - /**/ - - --- -From the classified section of a city newspaper: -Dog for sale: eats anything and is fond of children. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.362 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.362 -Problem: ml_get error when using ":g" with folded lines. -Solution: Adjust the line number for changed_lines(). (Christian Brabandt) -Files: src/ex_cmds.c - - -*** ../vim-7.3.361/src/ex_cmds.c 2011-10-20 18:17:38.000000000 +0200 ---- src/ex_cmds.c 2011-11-30 16:58:34.000000000 +0100 -*************** -*** 820,826 **** - curwin->w_cursor.lnum = dest + (line2 - line1) + 1; - - if (line1 < dest) -! changed_lines(line1, 0, dest + num_lines + 1, 0L); - else - changed_lines(dest + 1, 0, line1 + num_lines, 0L); - ---- 820,832 ---- - curwin->w_cursor.lnum = dest + (line2 - line1) + 1; - - if (line1 < dest) -! { -! dest += num_lines + 1; -! last_line = curbuf->b_ml.ml_line_count; -! if (dest > last_line + 1) -! dest = last_line + 1; -! changed_lines(line1, 0, dest, 0L); -! } - else - changed_lines(dest + 1, 0, line1 + num_lines, 0L); - -*** ../vim-7.3.361/src/version.c 2011-11-30 15:40:51.000000000 +0100 ---- src/version.c 2011-11-30 17:01:07.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 362, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -218. Your spouse hands you a gift wrapped magnet with your PC's name - on it and you accuse him or her of genocide. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.363 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.363 -Problem: C indenting is wrong after #endif followed by a semicolon. -Solution: Add special handling for a semicolon in a line by itself. (Lech - Lorens) -Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok - - -*** ../vim-7.3.362/src/misc1.c 2011-11-30 13:03:24.000000000 +0100 ---- src/misc1.c 2011-11-30 17:10:59.000000000 +0100 -*************** -*** 8143,8148 **** ---- 8143,8171 ---- - break; - - /* -+ * Find a line only has a semicolon that belongs to a previous -+ * line ending in '}', e.g. before an #endif. Don't increase -+ * indent then. -+ */ -+ if (*(look = skipwhite(l)) == ';' && cin_nocode(look + 1)) -+ { -+ pos_T curpos_save = curwin->w_cursor; -+ -+ while (curwin->w_cursor.lnum > 1) -+ { -+ look = ml_get(--curwin->w_cursor.lnum); -+ if (!(cin_nocode(look) || cin_ispreproc_cont( -+ &look, &curwin->w_cursor.lnum))) -+ break; -+ } -+ if (curwin->w_cursor.lnum > 0 -+ && cin_ends_in(look, (char_u *)"}", NULL)) -+ break; -+ -+ curwin->w_cursor = curpos_save; -+ } -+ -+ /* - * If the PREVIOUS line is a function declaration, the current - * line (and the ones that follow) needs to be indented as - * parameters. -*** ../vim-7.3.362/src/testdir/test3.in 2011-10-04 18:03:43.000000000 +0200 ---- src/testdir/test3.in 2011-11-30 17:05:20.000000000 +0100 -*************** -*** 1454,1459 **** ---- 1454,1469 ---- - printf("This line used to be indented incorrectly.\n"); - } - -+ int foo[] -+ #ifdef BAR -+ -+ = { 1, 2, 3, -+ 4, 5, 6 } -+ -+ #endif -+ ; -+ int baz; -+ - void func3(void) - { - int tab[] = { -*** ../vim-7.3.362/src/testdir/test3.ok 2011-10-04 18:03:43.000000000 +0200 ---- src/testdir/test3.ok 2011-11-30 17:05:20.000000000 +0100 -*************** -*** 1307,1312 **** ---- 1307,1322 ---- - printf("This line used to be indented incorrectly.\n"); - } - -+ int foo[] -+ #ifdef BAR -+ -+ = { 1, 2, 3, -+ 4, 5, 6 } -+ -+ #endif -+ ; -+ int baz; -+ - void func3(void) - { - int tab[] = { -*** ../vim-7.3.362/src/version.c 2011-11-30 17:01:55.000000000 +0100 ---- src/version.c 2011-11-30 17:06:57.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 363, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -220. Your wife asks for sex and you tell her where to find you on IRC. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.364 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.364 (after 7.3.353) -Problem: Can't compile on HP-UX. (John Marriott) -Solution: Only use TTYM_URXVT when it is defined. -Files: src/term.c - - -*** ../vim-7.3.363/src/term.c 2011-11-30 14:47:12.000000000 +0100 ---- src/term.c 2011-12-01 20:53:57.000000000 +0100 -*************** -*** 4060,4066 **** - if (tp[1 + (tp[0] != CSI)] == '>' && j == 2) - { - /* if xterm version >= 95 use mouse dragging */ -! if (extra >= 95 && ttym_flags != TTYM_URXVT) - set_option_value((char_u *)"ttym", 0L, - (char_u *)"xterm2", 0); - /* if xterm version >= 141 try to get termcap codes */ ---- 4060,4070 ---- - if (tp[1 + (tp[0] != CSI)] == '>' && j == 2) - { - /* if xterm version >= 95 use mouse dragging */ -! if (extra >= 95 -! # ifdef TTYM_URXVT -! && ttym_flags != TTYM_URXVT -! # endif -! ) - set_option_value((char_u *)"ttym", 0L, - (char_u *)"xterm2", 0); - /* if xterm version >= 141 try to get termcap codes */ -*** ../vim-7.3.363/src/version.c 2011-11-30 17:20:18.000000000 +0100 ---- src/version.c 2011-12-01 20:56:55.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 364, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -224. You set up your own Web page. You set up a Web page for each - of your kids... and your pets. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.365 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.365 -Problem: Crash when using a large Unicode character in a file that has - syntax highlighting. (ngollan) -Solution: Check for going past the end of the utf tables. (Dominique Pelle) -Files: src/mbyte.c - - -*** ../vim-7.3.364/src/mbyte.c 2011-08-10 13:21:30.000000000 +0200 ---- src/mbyte.c 2011-12-08 15:09:13.000000000 +0100 -*************** -*** 2764,2782 **** - int tableSize; - { - int start, mid, end; /* indices into table */ - - start = 0; -! end = tableSize / sizeof(convertStruct); - while (start < end) - { - /* need to search further */ -! mid = (end + start) /2; - if (table[mid].rangeEnd < a) - start = mid + 1; - else - end = mid; - } -! if (table[start].rangeStart <= a && a <= table[start].rangeEnd - && (a - table[start].rangeStart) % table[start].step == 0) - return (a + table[start].offset); - else ---- 2764,2785 ---- - int tableSize; - { - int start, mid, end; /* indices into table */ -+ int entries = tableSize / sizeof(convertStruct); - - start = 0; -! end = entries; - while (start < end) - { - /* need to search further */ -! mid = (end + start) / 2; - if (table[mid].rangeEnd < a) - start = mid + 1; - else - end = mid; - } -! if (start < entries -! && table[start].rangeStart <= a -! && a <= table[start].rangeEnd - && (a - table[start].rangeStart) % table[start].step == 0) - return (a + table[start].offset); - else -*************** -*** 2791,2797 **** - utf_fold(a) - int a; - { -! return utf_convert(a, foldCase, sizeof(foldCase)); - } - - static convertStruct toLower[] = ---- 2794,2800 ---- - utf_fold(a) - int a; - { -! return utf_convert(a, foldCase, (int)sizeof(foldCase)); - } - - static convertStruct toLower[] = -*************** -*** 3119,3125 **** - return TOUPPER_LOC(a); - - /* For any other characters use the above mapping table. */ -! return utf_convert(a, toUpper, sizeof(toUpper)); - } - - int ---- 3122,3128 ---- - return TOUPPER_LOC(a); - - /* For any other characters use the above mapping table. */ -! return utf_convert(a, toUpper, (int)sizeof(toUpper)); - } - - int -*************** -*** 3152,3158 **** - return TOLOWER_LOC(a); - - /* For any other characters use the above mapping table. */ -! return utf_convert(a, toLower, sizeof(toLower)); - } - - int ---- 3155,3161 ---- - return TOLOWER_LOC(a); - - /* For any other characters use the above mapping table. */ -! return utf_convert(a, toLower, (int)sizeof(toLower)); - } - - int -*** ../vim-7.3.364/src/version.c 2011-12-01 20:59:16.000000000 +0100 ---- src/version.c 2011-12-08 15:07:53.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 365, - /**/ - --- -Hear about the guy who played a blank tape at full blast? -The mime next door went nuts. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.366 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.366 -Problem: A tags file with an extremely long name causes errors. -Solution: Ignore tags that are too long. (Arno Renevier) -Files: src/tag.c - - -*** ../vim-7.3.365/src/tag.c 2011-10-12 19:53:31.000000000 +0200 ---- src/tag.c 2011-12-08 13:32:51.000000000 +0100 -*************** -*** 1906,1917 **** - tagp.tagname = lbuf; - #ifdef FEAT_TAG_ANYWHITE - tagp.tagname_end = skiptowhite(lbuf); -! if (*tagp.tagname_end == NUL) /* corrupted tag line */ - #else - tagp.tagname_end = vim_strchr(lbuf, TAB); -! if (tagp.tagname_end == NULL) /* corrupted tag line */ - #endif - { - line_error = TRUE; - break; - } ---- 1906,1931 ---- - tagp.tagname = lbuf; - #ifdef FEAT_TAG_ANYWHITE - tagp.tagname_end = skiptowhite(lbuf); -! if (*tagp.tagname_end == NUL) - #else - tagp.tagname_end = vim_strchr(lbuf, TAB); -! if (tagp.tagname_end == NULL) - #endif - { -+ if (vim_strchr(lbuf, NL) == NULL) -+ { -+ /* Truncated line, ignore it. Has been reported for -+ * Mozilla JS with extremely long names. */ -+ if (p_verbose >= 5) -+ { -+ verbose_enter(); -+ MSG(_("Ignoring long line in tags file")); -+ verbose_leave(); -+ } -+ continue; -+ } -+ -+ /* Corrupted tag line. */ - line_error = TRUE; - break; - } -*** ../vim-7.3.365/src/version.c 2011-12-08 15:09:46.000000000 +0100 ---- src/version.c 2011-12-08 15:11:10.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 366, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -246. You use up your free 100 hours in less than a week. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.367 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.367 -Problem: :wundo and :rundo use a wrong checksum. -Solution: Include the last line when computing the hash. (Christian Brabandt) -Files: src/undo.c - - -*** ../vim-7.3.366/src/undo.c 2011-01-22 21:25:07.000000000 +0100 ---- src/undo.c 2011-12-08 14:19:03.000000000 +0100 -*************** -*** 719,725 **** - char_u *p; - - sha256_start(&ctx); -! for (lnum = 1; lnum < curbuf->b_ml.ml_line_count; ++lnum) - { - p = ml_get(lnum); - sha256_update(&ctx, p, (UINT32_T)(STRLEN(p) + 1)); ---- 719,725 ---- - char_u *p; - - sha256_start(&ctx); -! for (lnum = 1; lnum <= curbuf->b_ml.ml_line_count; ++lnum) - { - p = ml_get(lnum); - sha256_update(&ctx, p, (UINT32_T)(STRLEN(p) + 1)); -*** ../vim-7.3.366/src/version.c 2011-12-08 15:12:08.000000000 +0100 ---- src/version.c 2011-12-08 15:13:32.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 367, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -247. You use www.switchboard.com instead of dialing 411 and 555-12-12 - for directory assistance. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.368 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.368 -Problem: Gcc complains about redefining _FORTIFY_SOURCE. -Solution: Undefine it before redefining it. -Files: src/Makefile, src/configure.in, src/auto/configure - - -*** ../vim-7.3.367/src/Makefile 2011-10-20 16:35:25.000000000 +0200 ---- src/Makefile 2011-12-08 15:16:13.000000000 +0100 -*************** -*** 561,568 **** - #CFLAGS = -g -O2 '-DSTARTUPTIME="vimstartup"' -fno-strength-reduce -Wall -Wmissing-prototypes - - # Use this with GCC to check for mistakes, unused arguments, etc. -! #CFLAGS = -g -Wall -Wextra -Wmissing-prototypes -Wunreachable-code -D_FORTIFY_SOURCE=1 -! #CFLAGS = -g -O2 -Wall -Wextra -Wmissing-prototypes -D_FORTIFY_SOURCE=1 -DU_DEBUG - #PYTHON_CFLAGS_EXTRA = -Wno-missing-field-initializers - #MZSCHEME_CFLAGS_EXTRA = -Wno-unreachable-code -Wno-unused-parameter - ---- 561,568 ---- - #CFLAGS = -g -O2 '-DSTARTUPTIME="vimstartup"' -fno-strength-reduce -Wall -Wmissing-prototypes - - # Use this with GCC to check for mistakes, unused arguments, etc. -! #CFLAGS = -g -Wall -Wextra -Wmissing-prototypes -Wunreachable-code -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1 -! #CFLAGS = -g -O2 -Wall -Wextra -Wmissing-prototypes -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1 -DU_DEBUG - #PYTHON_CFLAGS_EXTRA = -Wno-missing-field-initializers - #MZSCHEME_CFLAGS_EXTRA = -Wno-unreachable-code -Wno-unused-parameter - -*** ../vim-7.3.367/src/configure.in 2011-09-02 12:27:20.000000000 +0200 ---- src/configure.in 2011-12-01 20:23:22.000000000 +0100 -*************** -*** 3584,3592 **** - dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is - dnl declared as char x[1] but actually longer. Introduced in gcc 4.0. - dnl Also remove duplicate _FORTIFY_SOURCE arguments. - AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1) - if test "$gccmajor" -gt "3"; then -! CFLAGS=`echo "$CFLAGS" | sed -e 's/-Wp,-D_FORTIFY_SOURCE=.//g' -e 's/-D_FORTIFY_SOURCE=.//g' -e 's/$/ -D_FORTIFY_SOURCE=1/'` - AC_MSG_RESULT(yes) - else - AC_MSG_RESULT(no) ---- 3584,3593 ---- - dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is - dnl declared as char x[1] but actually longer. Introduced in gcc 4.0. - dnl Also remove duplicate _FORTIFY_SOURCE arguments. -+ dnl And undefine it first to avoid a warning. - AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1) - if test "$gccmajor" -gt "3"; then -! CFLAGS=`echo "$CFLAGS" | sed -e 's/-Wp,-D_FORTIFY_SOURCE=.//g' -e 's/-D_FORTIFY_SOURCE=.//g' -e 's/$/ -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1/'` - AC_MSG_RESULT(yes) - else - AC_MSG_RESULT(no) -*** ../vim-7.3.367/src/auto/configure 2011-09-02 12:27:20.000000000 +0200 ---- src/auto/configure 2011-12-01 20:24:02.000000000 +0100 -*************** -*** 12483,12492 **** - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 - $as_echo "no" >&6; } - fi -! { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we need -D_FORTIFY_SOURCE=1" >&5 - $as_echo_n "checking whether we need -D_FORTIFY_SOURCE=1... " >&6; } - if test "$gccmajor" -gt "3"; then -! CFLAGS=`echo "$CFLAGS" | sed -e 's/-Wp,-D_FORTIFY_SOURCE=.//g' -e 's/-D_FORTIFY_SOURCE=.//g' -e 's/$/ -D_FORTIFY_SOURCE=1/'` - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 - $as_echo "yes" >&6; } - else ---- 12483,12492 ---- - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 - $as_echo "no" >&6; } - fi -! { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we need -D_FORTIFY_SOURCE=1" >&5 - $as_echo_n "checking whether we need -D_FORTIFY_SOURCE=1... " >&6; } - if test "$gccmajor" -gt "3"; then -! CFLAGS=`echo "$CFLAGS" | sed -e 's/-Wp,-D_FORTIFY_SOURCE=.//g' -e 's/-D_FORTIFY_SOURCE=.//g' -e 's/$/ -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1/'` - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 - $as_echo "yes" >&6; } - else -*** ../vim-7.3.367/src/version.c 2011-12-08 15:14:04.000000000 +0100 ---- src/version.c 2011-12-08 15:15:13.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 368, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -248. You sign your letters with your e-mail address instead of your name. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.369 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.369 -Problem: When compiled with Gnome get an error message when using --help. -Solution: Don't fork. (Ivan Krasilnikov) -Files: src/main.c - - -*** ../vim-7.3.368/src/main.c 2011-10-04 16:43:49.000000000 +0200 ---- src/main.c 2011-12-01 20:27:11.000000000 +0100 -*************** -*** 3294,3300 **** ---- 3294,3303 ---- - #ifdef FEAT_GUI_GNOME - /* Gnome gives extra messages for --help if we continue, but not for -h. */ - if (gui.starting) -+ { - mch_msg("\n"); -+ gui.dofork = FALSE; -+ } - else - #endif - mch_exit(0); -*** ../vim-7.3.368/src/version.c 2011-12-08 15:17:28.000000000 +0100 ---- src/version.c 2011-12-08 15:57:03.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 369, - /**/ - --- -Vi is clearly superior to emacs, since "vi" has only two characters -(and two keystrokes), while "emacs" has five. (Randy C. Ford) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.370 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.370 -Problem: Compiler warns for unused variable in Lua interface. -Solution: Remove the variable. -Files: src/if_lua.c - - -*** ../vim-7.3.369/src/if_lua.c 2011-09-21 17:15:34.000000000 +0200 ---- src/if_lua.c 2011-12-01 20:19:17.000000000 +0100 -*************** -*** 1044,1056 **** - static int - luaV_open(lua_State *L) - { -- luaV_Buffer *b; - char_u *s = NULL; - #ifdef HAVE_SANDBOX - luaV_checksandbox(L); - #endif - if (lua_isstring(L, 1)) s = (char_u *) lua_tostring(L, 1); -! b = luaV_pushbuffer(L, buflist_new(s, NULL, 1L, BLN_LISTED)); - return 1; - } - ---- 1044,1055 ---- - static int - luaV_open(lua_State *L) - { - char_u *s = NULL; - #ifdef HAVE_SANDBOX - luaV_checksandbox(L); - #endif - if (lua_isstring(L, 1)) s = (char_u *) lua_tostring(L, 1); -! luaV_pushbuffer(L, buflist_new(s, NULL, 1L, BLN_LISTED)); - return 1; - } - -*** ../vim-7.3.369/src/version.c 2011-12-08 15:57:54.000000000 +0100 ---- src/version.c 2011-12-08 15:59:35.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 370, - /**/ - --- -Emacs is a nice OS - but it lacks a good text editor. -That's why I am using Vim. --Anonymous - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.371 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.371 -Problem: Crash in autocomplete. (Greg Weber) -Solution: Check not going over allocated buffer size. -Files: src/misc2.c - - -*** ../vim-7.3.370/src/misc2.c 2011-10-26 11:40:56.000000000 +0200 ---- src/misc2.c 2011-12-08 17:49:23.000000000 +0100 -*************** -*** 4293,4298 **** ---- 4293,4300 ---- - static int ff_path_in_stoplist __ARGS((char_u *, int, char_u **)); - #endif - -+ static char_u e_pathtoolong[] = N_("E854: path too long for completion"); -+ - #if 0 - /* - * if someone likes findfirst/findnext, here are the functions -*************** -*** 4589,4594 **** ---- 4591,4601 ---- - len = 0; - while (*wc_part != NUL) - { -+ if (len + 5 >= MAXPATHL) -+ { -+ EMSG(_(e_pathtoolong)); -+ break; -+ } - if (STRNCMP(wc_part, "**", 2) == 0) - { - ff_expand_buffer[len++] = *wc_part++; -*************** -*** 4634,4639 **** ---- 4641,4652 ---- - } - - /* create an absolute path */ -+ if (STRLEN(search_ctx->ffsc_start_dir) -+ + STRLEN(search_ctx->ffsc_fix_path) + 3 >= MAXPATHL) -+ { -+ EMSG(_(e_pathtoolong)); -+ goto error_return; -+ } - STRCPY(ff_expand_buffer, search_ctx->ffsc_start_dir); - add_pathsep(ff_expand_buffer); - STRCAT(ff_expand_buffer, search_ctx->ffsc_fix_path); -*** ../vim-7.3.370/src/version.c 2011-12-08 16:00:12.000000000 +0100 ---- src/version.c 2011-12-08 17:46:41.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 371, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -253. You wait for a slow loading web page before going to the toilet. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.372 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.372 -Problem: When using a command line mapping to <Up> with file name - completion to go one directory up, 'wildchar' is inserted. - (Yasuhiro Matsumoto) -Solution: Set the KeyTyped flag. -Files: src/ex_getln.c - - -*** ../vim-7.3.371/src/ex_getln.c 2011-10-26 22:02:10.000000000 +0200 ---- src/ex_getln.c 2011-12-08 18:40:49.000000000 +0100 -*************** -*** 645,651 **** ---- 645,655 ---- - } - else if (ccline.cmdpos > i) - cmdline_del(i); -+ -+ /* Now complete in the new directory. Set KeyTyped in case the -+ * Up key came from a mapping. */ - c = p_wc; -+ KeyTyped = TRUE; - } - } - -*** ../vim-7.3.371/src/version.c 2011-12-08 17:49:31.000000000 +0100 ---- src/version.c 2011-12-08 18:42:54.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 372, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -255. You work for a newspaper and your editor asks you to write an - article about Internet addiction...in the "first person." - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.373 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.373 (after 7.3.366) -Problem: A tags file with an extremely long name may cause an infinite loop. -Solution: When encountering a long name switch to linear search. -Files: src/tag.c - - -*** ../vim-7.3.372/src/tag.c 2011-12-08 15:12:08.000000000 +0100 ---- src/tag.c 2011-12-14 14:13:28.000000000 +0100 -*************** -*** 1854,1860 **** - - if (state == TS_BINARY && orgpat.regmatch.rm_ic && !sortic) - { -! /* binary search won't work for ignoring case, use linear - * search. */ - linear = TRUE; - state = TS_LINEAR; ---- 1854,1860 ---- - - if (state == TS_BINARY && orgpat.regmatch.rm_ic && !sortic) - { -! /* Binary search won't work for ignoring case, use linear - * search. */ - linear = TRUE; - state = TS_LINEAR; -*************** -*** 1922,1927 **** ---- 1922,1940 ---- - MSG(_("Ignoring long line in tags file")); - verbose_leave(); - } -+ #ifdef FEAT_TAG_BINS -+ if (state != TS_LINEAR) -+ { -+ /* Avoid getting stuck. */ -+ linear = TRUE; -+ state = TS_LINEAR; -+ # ifdef HAVE_FSEEKO -+ fseeko(fp, search_info.low_offset, SEEK_SET); -+ # else -+ fseek(fp, (long)search_info.low_offset, SEEK_SET); -+ # endif -+ } -+ #endif - continue; - } - -*** ../vim-7.3.372/src/version.c 2011-12-08 18:44:47.000000000 +0100 ---- src/version.c 2011-12-14 14:12:06.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 373, - /**/ - --- -ZOOT: I'm afraid our life must seem very dull and quiet compared to yours. - We are but eightscore young blondes, all between sixteen and - nineteen-and-a-half, cut off in this castle, with no one to protect us. - Oooh. It is a lonely life ... bathing ... dressing ... undressing ... - making exciting underwear.... - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.374 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.374 -Problem: ++encoding does not work properly. -Solution: Recognize ++encoding before ++enc. (Charles Cooper) -Files: src/ex_docmd.c - - -*** ../vim-7.3.373/src/ex_docmd.c 2011-10-20 21:58:20.000000000 +0200 ---- src/ex_docmd.c 2011-12-14 14:46:05.000000000 +0100 -*************** -*** 4840,4851 **** - #ifdef FEAT_MBYTE - else if (STRNCMP(arg, "enc", 3) == 0) - { -! arg += 3; -! pp = &eap->force_enc; -! } -! else if (STRNCMP(arg, "encoding", 8) == 0) -! { -! arg += 8; - pp = &eap->force_enc; - } - else if (STRNCMP(arg, "bad", 3) == 0) ---- 4840,4849 ---- - #ifdef FEAT_MBYTE - else if (STRNCMP(arg, "enc", 3) == 0) - { -! if (STRNCMP(arg, "encoding", 8) == 0) -! arg += 8; -! else -! arg += 3; - pp = &eap->force_enc; - } - else if (STRNCMP(arg, "bad", 3) == 0) -*** ../vim-7.3.373/src/version.c 2011-12-14 14:15:12.000000000 +0100 ---- src/version.c 2011-12-14 14:44:01.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 374, - /**/ - --- -Linux is just like a wigwam: no Windows, no Gates and an Apache inside. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.375 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.375 -Problem: Duplicate return statement. -Solution: Remove the superfluous one. (Dominique Pelle) -Files: src/gui_mac.c - - -*** ../vim-7.3.374/src/gui_mac.c 2011-06-19 01:14:22.000000000 +0200 ---- src/gui_mac.c 2011-12-10 17:20:59.000000000 +0100 -*************** -*** 3216,3222 **** - { - /* TODO: - * This proc is called when Normal is set to a value -! * so what msut be done? I don't know - */ - } - ---- 3216,3222 ---- - { - /* TODO: - * This proc is called when Normal is set to a value -! * so what must be done? I don't know - */ - } - -*************** -*** 3303,3309 **** - *x = bounds.left; - *y = bounds.top; - return OK; -- return FAIL; - } - - /* ---- 3303,3308 ---- -*** ../vim-7.3.374/src/version.c 2011-12-14 14:49:41.000000000 +0100 ---- src/version.c 2011-12-14 15:06:01.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 375, - /**/ - --- -GALAHAD: No look, really, this isn't nescess ... -PIGLET: We must examine you. -GALAHAD: There's nothing wrong with ... that. - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.376 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.376 -Problem: Win32: Toolbar repainting does not work when the mouse pointer - hovers over a button. -Solution: Call DefWindowProc() when not handling an event. (Sergiu Dotenco) -Files: src/gui_w32.c - - -*** ../vim-7.3.375/src/gui_w32.c 2011-08-10 17:07:56.000000000 +0200 ---- src/gui_w32.c 2011-12-14 15:14:48.000000000 +0100 -*************** -*** 1101,1107 **** - return MyWindowProc(hwnd, uMsg, wParam, lParam); - } - -! return 1; - } - - /* ---- 1101,1107 ---- - return MyWindowProc(hwnd, uMsg, wParam, lParam); - } - -! return DefWindowProc(hwnd, uMsg, wParam, lParam); - } - - /* -*** ../vim-7.3.375/src/version.c 2011-12-14 15:07:11.000000000 +0100 ---- src/version.c 2011-12-14 15:23:10.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 376, - /**/ - --- - GALAHAD hurries to the door and pushes through it. As he leaves the room - we CUT TO the reverse to show that he is now in a room full of bathing - and romping GIRLIES, all innocent, wide-eyed and beautiful. They smile - enchantingly at him as he tries to keep walking without being diverted by - the lovely sights assaulting his eyeballs. - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.377 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.377 -Problem: No support for bitwise AND, OR, XOR and invert. -Solution: Add and(), or(), invert() and xor() functions. -Files: src/eval.c, src/testdir/test49.in, src/testdir/test65.in, - src/testdir/test65.ok, runtime/doc/eval.txt - - -*** ../vim-7.3.376/src/eval.c 2011-11-30 15:19:25.000000000 +0100 ---- src/eval.c 2011-12-11 13:49:31.000000000 +0100 -*************** -*** 474,479 **** ---- 474,480 ---- - static void f_acos __ARGS((typval_T *argvars, typval_T *rettv)); - #endif - static void f_add __ARGS((typval_T *argvars, typval_T *rettv)); -+ static void f_and __ARGS((typval_T *argvars, typval_T *rettv)); - static void f_append __ARGS((typval_T *argvars, typval_T *rettv)); - static void f_argc __ARGS((typval_T *argvars, typval_T *rettv)); - static void f_argidx __ARGS((typval_T *argvars, typval_T *rettv)); -*************** -*** 602,607 **** ---- 603,609 ---- - static void f_inputsave __ARGS((typval_T *argvars, typval_T *rettv)); - static void f_inputsecret __ARGS((typval_T *argvars, typval_T *rettv)); - static void f_insert __ARGS((typval_T *argvars, typval_T *rettv)); -+ static void f_invert __ARGS((typval_T *argvars, typval_T *rettv)); - static void f_isdirectory __ARGS((typval_T *argvars, typval_T *rettv)); - static void f_islocked __ARGS((typval_T *argvars, typval_T *rettv)); - static void f_items __ARGS((typval_T *argvars, typval_T *rettv)); -*************** -*** 640,645 **** ---- 642,648 ---- - #endif - static void f_nextnonblank __ARGS((typval_T *argvars, typval_T *rettv)); - static void f_nr2char __ARGS((typval_T *argvars, typval_T *rettv)); -+ static void f_or __ARGS((typval_T *argvars, typval_T *rettv)); - static void f_pathshorten __ARGS((typval_T *argvars, typval_T *rettv)); - #ifdef FEAT_FLOAT - static void f_pow __ARGS((typval_T *argvars, typval_T *rettv)); -*************** -*** 751,756 **** ---- 754,760 ---- - static void f_winsaveview __ARGS((typval_T *argvars, typval_T *rettv)); - static void f_winwidth __ARGS((typval_T *argvars, typval_T *rettv)); - static void f_writefile __ARGS((typval_T *argvars, typval_T *rettv)); -+ static void f_xor __ARGS((typval_T *argvars, typval_T *rettv)); - - static int list2fpos __ARGS((typval_T *arg, pos_T *posp, int *fnump)); - static pos_T *var2fpos __ARGS((typval_T *varp, int dollar_lnum, int *fnum)); -*************** -*** 7715,7720 **** ---- 7719,7725 ---- - {"acos", 1, 1, f_acos}, /* WJMc */ - #endif - {"add", 2, 2, f_add}, -+ {"and", 2, 2, f_and}, - {"append", 2, 2, f_append}, - {"argc", 0, 0, f_argc}, - {"argidx", 0, 0, f_argidx}, -*************** -*** 7850,7855 **** ---- 7855,7861 ---- - {"inputsave", 0, 0, f_inputsave}, - {"inputsecret", 1, 2, f_inputsecret}, - {"insert", 2, 3, f_insert}, -+ {"invert", 1, 1, f_invert}, - {"isdirectory", 1, 1, f_isdirectory}, - {"islocked", 1, 1, f_islocked}, - {"items", 1, 1, f_items}, -*************** -*** 7888,7893 **** ---- 7894,7900 ---- - #endif - {"nextnonblank", 1, 1, f_nextnonblank}, - {"nr2char", 1, 1, f_nr2char}, -+ {"or", 2, 2, f_or}, - {"pathshorten", 1, 1, f_pathshorten}, - #ifdef FEAT_FLOAT - {"pow", 2, 2, f_pow}, -*************** -*** 7999,8004 **** ---- 8006,8012 ---- - {"winsaveview", 0, 0, f_winsaveview}, - {"winwidth", 1, 1, f_winwidth}, - {"writefile", 2, 3, f_writefile}, -+ {"xor", 2, 2, f_xor}, - }; - - #if defined(FEAT_CMDL_COMPL) || defined(PROTO) -*************** -*** 8572,8577 **** ---- 8580,8597 ---- - } - - /* -+ * "and(expr, expr)" function -+ */ -+ static void -+ f_and(argvars, rettv) -+ typval_T *argvars; -+ typval_T *rettv; -+ { -+ rettv->vval.v_number = get_tv_number_chk(&argvars[0], NULL) -+ & get_tv_number_chk(&argvars[1], NULL); -+ } -+ -+ /* - * "append(lnum, string/list)" function - */ - static void -*************** -*** 12958,12963 **** ---- 12978,12994 ---- - } - - /* -+ * "invert(expr)" function -+ */ -+ static void -+ f_invert(argvars, rettv) -+ typval_T *argvars; -+ typval_T *rettv; -+ { -+ rettv->vval.v_number = ~get_tv_number_chk(&argvars[0], NULL); -+ } -+ -+ /* - * "isdirectory()" function - */ - static void -*************** -*** 14108,14113 **** ---- 14139,14156 ---- - } - - /* -+ * "or(expr, expr)" function -+ */ -+ static void -+ f_or(argvars, rettv) -+ typval_T *argvars; -+ typval_T *rettv; -+ { -+ rettv->vval.v_number = get_tv_number_chk(&argvars[0], NULL) -+ | get_tv_number_chk(&argvars[1], NULL); -+ } -+ -+ /* - * "pathshorten()" function - */ - static void -*************** -*** 18394,18399 **** ---- 18437,18455 ---- - } - - /* -+ * "xor(expr, expr)" function -+ */ -+ static void -+ f_xor(argvars, rettv) -+ typval_T *argvars; -+ typval_T *rettv; -+ { -+ rettv->vval.v_number = get_tv_number_chk(&argvars[0], NULL) -+ ^ get_tv_number_chk(&argvars[1], NULL); -+ } -+ -+ -+ /* - * Translate a String variable into a position. - * Returns NULL when there is an error. - */ -*** ../vim-7.3.376/src/testdir/test65.in 2010-08-15 21:57:29.000000000 +0200 ---- src/testdir/test65.in 2011-12-11 13:55:06.000000000 +0100 -*************** -*** 1,4 **** -! Test for floating point. - - STARTTEST - :so small.vim ---- 1,4 ---- -! Test for floating point and logical operators. - - STARTTEST - :so small.vim -*************** -*** 72,77 **** ---- 72,94 ---- - :$put ='float2nr' - :$put =float2nr(123.456) - :$put =float2nr(-123.456) -+ :$put ='AND' -+ :$put =and(127, 127) -+ :$put =and(127, 16) -+ :$put =and(127, 128) -+ :$put ='OR' -+ :$put =or(16, 7) -+ :$put =or(8, 7) -+ :$put =or(0, 123) -+ :$put ='XOR' -+ :$put =xor(127, 127) -+ :$put =xor(127, 16) -+ :$put =xor(127, 128) -+ :$put ='invert' -+ :$put =and(invert(127), 65535) -+ :$put =and(invert(16), 65535) -+ :$put =and(invert(128), 65535) -+ :$put =invert(1.0) - :/^Results/,$wq! test.out - ENDTEST - -*** ../vim-7.3.376/src/testdir/test65.ok 2010-08-15 21:57:29.000000000 +0200 ---- src/testdir/test65.ok 2011-12-11 13:55:30.000000000 +0100 -*************** -*** 54,56 **** ---- 54,73 ---- - float2nr - 123 - -123 -+ AND -+ 127 -+ 16 -+ 0 -+ OR -+ 23 -+ 15 -+ 123 -+ XOR -+ 0 -+ 111 -+ 255 -+ invert -+ 65408 -+ 65519 -+ 65407 -+ 0 -*** ../vim-7.3.376/runtime/doc/eval.txt 2011-06-19 02:55:32.000000000 +0200 ---- runtime/doc/eval.txt 2011-12-14 15:28:23.000000000 +0100 -*************** -*** 798,808 **** - For |Lists| only "+" is possible and then both expr6 must be a list. The - result is a new list with the two lists Concatenated. - -! expr7 * expr7 .. number multiplication *expr-star* -! expr7 / expr7 .. number division *expr-/* -! expr7 % expr7 .. number modulo *expr-%* - - For all, except ".", Strings are converted to Numbers. - - Note the difference between "+" and ".": - "123" + "456" = 579 ---- 800,811 ---- - For |Lists| only "+" is possible and then both expr6 must be a list. The - result is a new list with the two lists Concatenated. - -! expr7 * expr7 .. Number multiplication *expr-star* -! expr7 / expr7 .. Number division *expr-/* -! expr7 % expr7 .. Number modulo *expr-%* - - For all, except ".", Strings are converted to Numbers. -+ For bitwise operators see |and()|, |or()| and |xor()|. - - Note the difference between "+" and ".": - "123" + "456" = 579 -*************** -*** 1679,1684 **** ---- 1688,1694 ---- - abs( {expr}) Float or Number absolute value of {expr} - acos( {expr}) Float arc cosine of {expr} - add( {list}, {item}) List append {item} to |List| {list} -+ and( {expr}, {expr}) Number bitwise AND - append( {lnum}, {string}) Number append {string} below line {lnum} - append( {lnum}, {list}) Number append lines {list} below line {lnum} - argc() Number number of files in the argument list -*************** -*** 1817,1822 **** ---- 1827,1833 ---- - inputsave() Number save and clear typeahead - inputsecret( {prompt} [, {text}]) String like input() but hiding the text - insert( {list}, {item} [, {idx}]) List insert {item} in {list} [before {idx}] -+ invert( {expr}) Number bitwise invert - isdirectory( {directory}) Number TRUE if {directory} is a directory - islocked( {expr}) Number TRUE if {expr} is locked - items( {dict}) List key-value pairs in {dict} -*************** -*** 1856,1861 **** ---- 1868,1874 ---- - mzeval( {expr}) any evaluate |MzScheme| expression - nextnonblank( {lnum}) Number line nr of non-blank line >= {lnum} - nr2char( {expr}) String single char with ASCII value {expr} -+ or( {expr}, {expr}) Number bitwise OR - pathshorten( {expr}) String shorten directory names in a path - pow( {x}, {y}) Float {x} to the power of {y} - prevnonblank( {lnum}) Number line nr of non-blank line <= {lnum} -*************** -*** 1978,1983 **** ---- 1992,1998 ---- - winwidth( {nr}) Number width of window {nr} - writefile( {list}, {fname} [, {binary}]) - Number write list of lines to file {fname} -+ xor( {expr}, {expr}) Number bitwise XOR - - abs({expr}) *abs()* - Return the absolute value of {expr}. When {expr} evaluates to -*************** -*** 2017,2022 **** ---- 2032,2044 ---- - Use |insert()| to add an item at another position. - - -+ and({expr}, {expr}) *and()* -+ Bitwise AND on the two arguments. The arguments are converted -+ to a number. A List, Dict or Float argument causes an error. -+ Example: > -+ :let flag = and(bits, 0x80) -+ -+ - append({lnum}, {expr}) *append()* - When {expr} is a |List|: Append each item of the |List| as a - text line below line {lnum} in the current buffer. -*************** -*** 3770,3775 **** ---- 3798,3808 ---- - Note that when {item} is a |List| it is inserted as a single - item. Use |extend()| to concatenate |Lists|. - -+ invert({expr}) *invert()* -+ Bitwise invert. The argument is converted to a number. A -+ List, Dict or Float argument causes an error. Example: > -+ :let bits = invert(bits) -+ - isdirectory({directory}) *isdirectory()* - The result is a Number, which is non-zero when a directory - with the name {directory} exists. If {directory} doesn't -*************** -*** 4334,4339 **** ---- 4368,4380 ---- - call setpos('.', save_cursor) - < Also see |setpos()|. - -+ or({expr}, {expr}) *or()* -+ Bitwise OR on the two arguments. The arguments are converted -+ to a number. A List, Dict or Float argument causes an error. -+ Example: > -+ :let bits = or(bits, 0x80) -+ -+ - pathshorten({expr}) *pathshorten()* - Shorten directory names in the path {expr} and return the - result. The tail, the file name, is kept as-is. The other -*************** -*** 6097,6103 **** - To copy a file byte for byte: > - :let fl = readfile("foo", "b") - :call writefile(fl, "foocopy", "b") -! < - - *feature-list* - There are three types of features: ---- 6149,6163 ---- - To copy a file byte for byte: > - :let fl = readfile("foo", "b") - :call writefile(fl, "foocopy", "b") -! -! -! xor({expr}, {expr}) *xor()* -! Bitwise XOR on the two arguments. The arguments are converted -! to a number. A List, Dict or Float argument causes an error. -! Example: > -! :let bits = xor(bits, 0x80) -! -! - - *feature-list* - There are three types of features: -*** ../vim-7.3.376/src/version.c 2011-12-14 15:23:53.000000000 +0100 ---- src/version.c 2011-12-14 15:28:39.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 377, - /**/ - --- -DINGO: Wicked wicked Zoot ... she is a bad person and she must pay the - penalty. And here in Castle Anthrax, we have but one punishment - ... you must tie her down on a bed ... and spank her. Come! -GIRLS: A spanking! A spanking! - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.378 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.378 -Problem: When cross-compiling the check for uint32_t fails. -Solution: Only give a warning message. (Maksim Melnikau) -Files: src/configure.in, src/auto/configure - - -*** ../vim-7.3.377/src/configure.in 2011-12-08 15:17:28.000000000 +0100 ---- src/configure.in 2011-12-14 19:18:36.000000000 +0100 -*************** -*** 3283,3289 **** - }], - AC_MSG_RESULT(ok), - AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]), -! AC_MSG_ERROR([could not compile program using uint32_t.])) - - dnl Check for memmove() before bcopy(), makes memmove() be used when both are - dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5. ---- 3283,3289 ---- - }], - AC_MSG_RESULT(ok), - AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]), -! AC_MSG_WARN([cannot check uint32_t when cross-compiling.])) - - dnl Check for memmove() before bcopy(), makes memmove() be used when both are - dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5. -*** ../vim-7.3.377/src/auto/configure 2011-12-08 15:17:28.000000000 +0100 ---- src/auto/configure 2011-12-14 19:20:55.000000000 +0100 -*************** -*** 11777,11783 **** - { $as_echo "$as_me:${as_lineno-$LINENO}: checking uint32_t is 32 bits" >&5 - $as_echo_n "checking uint32_t is 32 bits... " >&6; } - if test "$cross_compiling" = yes; then : -! as_fn_error "could not compile program using uint32_t." "$LINENO" 5 - else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ ---- 11777,11784 ---- - { $as_echo "$as_me:${as_lineno-$LINENO}: checking uint32_t is 32 bits" >&5 - $as_echo_n "checking uint32_t is 32 bits... " >&6; } - if test "$cross_compiling" = yes; then : -! { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check uint32_t when cross-compiling." >&5 -! $as_echo "$as_me: WARNING: cannot check uint32_t when cross-compiling." >&2;} - else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ -*** ../vim-7.3.377/src/version.c 2011-12-14 15:32:44.000000000 +0100 ---- src/version.c 2011-12-14 19:21:08.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 378, - /**/ - --- - ### Hiroshima 45, Chernobyl 86, Windows 95 ### - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.379 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.379 -Problem: C-indenting wrong for static enum. -Solution: Skip over "static". (Lech Lorens) -Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok - - -*** ../vim-7.3.378/src/misc1.c 2011-11-30 17:20:18.000000000 +0100 ---- src/misc1.c 2011-12-14 19:37:48.000000000 +0100 -*************** -*** 5138,5143 **** ---- 5138,5146 ---- - if (STRNCMP(s, "typedef", 7) == 0 && !vim_isIDc(s[7])) - s = cin_skipcomment(s + 7); - -+ if (STRNCMP(s, "static", 6) == 0 && !vim_isIDc(s[6])) -+ s = cin_skipcomment(s + 6); -+ - if (STRNCMP(s, "enum", 4) == 0 && !vim_isIDc(s[4])) - return TRUE; - -*** ../vim-7.3.378/src/testdir/test3.in 2011-11-30 17:20:18.000000000 +0100 ---- src/testdir/test3.in 2011-12-14 20:03:11.000000000 +0100 -*************** -*** 299,316 **** - - enum soppie - { -! yes = 0, -! no, -! maybe - }; - - typedef enum soppie - { -! yes = 0, -! no, -! maybe - }; - - { - int a, - b; ---- 299,323 ---- - - enum soppie - { -! yes = 0, -! no, -! maybe - }; - - typedef enum soppie - { -! yes = 0, -! no, -! maybe - }; - -+ static enum -+ { -+ yes = 0, -+ no, -+ maybe -+ } soppie; -+ - { - int a, - b; -*** ../vim-7.3.378/src/testdir/test3.ok 2011-11-30 17:20:18.000000000 +0100 ---- src/testdir/test3.ok 2011-12-14 19:37:48.000000000 +0100 -*************** -*** 299,304 **** ---- 299,311 ---- - maybe - }; - -+ static enum -+ { -+ yes = 0, -+ no, -+ maybe -+ } soppie; -+ - { - int a, - b; -*** ../vim-7.3.378/src/version.c 2011-12-14 19:22:29.000000000 +0100 ---- src/version.c 2011-12-14 20:02:19.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 379, - /**/ - --- -You cannot propel yourself forward by patting yourself on the back. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.380 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.380 -Problem: C-indenting wrong for a function header. -Solution: Skip to the start paren. (Lech Lorens) -Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok - - -*** ../vim-7.3.379/src/misc1.c 2011-12-14 20:05:17.000000000 +0100 ---- src/misc1.c 2011-12-14 20:16:43.000000000 +0100 -*************** -*** 4943,4949 **** - static int cin_islinecomment __ARGS((char_u *)); - static int cin_isterminated __ARGS((char_u *, int, int)); - static int cin_isinit __ARGS((void)); -! static int cin_isfuncdecl __ARGS((char_u **, linenr_T)); - static int cin_isif __ARGS((char_u *)); - static int cin_iselse __ARGS((char_u *)); - static int cin_isdo __ARGS((char_u *)); ---- 4943,4949 ---- - static int cin_islinecomment __ARGS((char_u *)); - static int cin_isterminated __ARGS((char_u *, int, int)); - static int cin_isinit __ARGS((void)); -! static int cin_isfuncdecl __ARGS((char_u **, linenr_T, linenr_T, int, int)); - static int cin_isif __ARGS((char_u *)); - static int cin_iselse __ARGS((char_u *)); - static int cin_isdo __ARGS((char_u *)); -*************** -*** 5585,5605 **** - * "sp" points to a string with the line. When looking at other lines it must - * be restored to the line. When it's NULL fetch lines here. - * "lnum" is where we start looking. - */ - static int -! cin_isfuncdecl(sp, first_lnum) - char_u **sp; - linenr_T first_lnum; - { - char_u *s; - linenr_T lnum = first_lnum; - int retval = FALSE; - - if (sp == NULL) - s = ml_get(lnum); - else - s = *sp; - - /* Ignore line starting with #. */ - if (cin_ispreproc(s)) - return FALSE; ---- 5585,5621 ---- - * "sp" points to a string with the line. When looking at other lines it must - * be restored to the line. When it's NULL fetch lines here. - * "lnum" is where we start looking. -+ * "min_lnum" is the line before which we will not be looking. - */ - static int -! cin_isfuncdecl(sp, first_lnum, min_lnum, ind_maxparen, ind_maxcomment) - char_u **sp; - linenr_T first_lnum; -+ linenr_T min_lnum; -+ int ind_maxparen; -+ int ind_maxcomment; - { - char_u *s; - linenr_T lnum = first_lnum; - int retval = FALSE; -+ pos_T *trypos; -+ int just_started = TRUE; - - if (sp == NULL) - s = ml_get(lnum); - else - s = *sp; - -+ if (find_last_paren(s, '(', ')') -+ && (trypos = find_match_paren(ind_maxparen, ind_maxcomment)) != NULL) -+ { -+ lnum = trypos->lnum; -+ if (lnum < min_lnum) -+ return FALSE; -+ -+ s = ml_get(lnum); -+ } -+ - /* Ignore line starting with #. */ - if (cin_ispreproc(s)) - return FALSE; -*************** -*** 5650,5662 **** - /* Require a comma at end of the line or a comma or ')' at the - * start of next line. */ - s = skipwhite(s); -! if (!comma && *s != ',' && *s != ')') - break; - } - else if (cin_iscomment(s)) /* ignore comments */ - s = cin_skipcomment(s); - else - ++s; - } - - done: ---- 5666,5682 ---- - /* Require a comma at end of the line or a comma or ')' at the - * start of next line. */ - s = skipwhite(s); -! if (!just_started && (!comma && *s != ',' && *s != ')')) - break; -+ just_started = FALSE; - } - else if (cin_iscomment(s)) /* ignore comments */ - s = cin_skipcomment(s); - else -+ { - ++s; -+ just_started = FALSE; -+ } - } - - done: -*************** -*** 7158,7164 **** - * (it's a variable declaration). - */ - if (start_brace != BRACE_IN_COL0 -! || !cin_isfuncdecl(&l, curwin->w_cursor.lnum)) - { - /* if the line is terminated with another ',' - * it is a continued variable initialization. ---- 7178,7185 ---- - * (it's a variable declaration). - */ - if (start_brace != BRACE_IN_COL0 -! || !cin_isfuncdecl(&l, curwin->w_cursor.lnum, -! 0, ind_maxparen, ind_maxcomment)) - { - /* if the line is terminated with another ',' - * it is a continued variable initialization. -*************** -*** 8019,8025 **** - && vim_strchr(theline, '}') == NULL - && !cin_ends_in(theline, (char_u *)":", NULL) - && !cin_ends_in(theline, (char_u *)",", NULL) -! && cin_isfuncdecl(NULL, cur_curpos.lnum + 1) - && !cin_isterminated(theline, FALSE, TRUE)) - { - amount = ind_func_type; ---- 8040,8048 ---- - && vim_strchr(theline, '}') == NULL - && !cin_ends_in(theline, (char_u *)":", NULL) - && !cin_ends_in(theline, (char_u *)",", NULL) -! && cin_isfuncdecl(NULL, cur_curpos.lnum + 1, -! cur_curpos.lnum + 1, -! ind_maxparen, ind_maxcomment) - && !cin_isterminated(theline, FALSE, TRUE)) - { - amount = ind_func_type; -*************** -*** 8125,8131 **** - * If the line looks like a function declaration, and we're - * not in a comment, put it the left margin. - */ -! if (cin_isfuncdecl(NULL, cur_curpos.lnum)) /* XXX */ - break; - l = ml_get_curline(); - ---- 8148,8155 ---- - * If the line looks like a function declaration, and we're - * not in a comment, put it the left margin. - */ -! if (cin_isfuncdecl(NULL, cur_curpos.lnum, 0, -! ind_maxparen, ind_maxcomment)) /* XXX */ - break; - l = ml_get_curline(); - -*************** -*** 8173,8179 **** - * line (and the ones that follow) needs to be indented as - * parameters. - */ -! if (cin_isfuncdecl(&l, curwin->w_cursor.lnum)) - { - amount = ind_param; - break; ---- 8197,8204 ---- - * line (and the ones that follow) needs to be indented as - * parameters. - */ -! if (cin_isfuncdecl(&l, curwin->w_cursor.lnum, 0, -! ind_maxparen, ind_maxcomment)) - { - amount = ind_param; - break; -*** ../vim-7.3.379/src/testdir/test3.in 2011-12-14 20:05:17.000000000 +0100 ---- src/testdir/test3.in 2011-12-14 20:11:24.000000000 +0100 -*************** -*** 1429,1435 **** - - STARTTEST - :set cino& -! 2kdd=4][ - ENDTEST - - void func(void) ---- 1429,1435 ---- - - STARTTEST - :set cino& -! 2kdd=7][ - ENDTEST - - void func(void) -*************** -*** 1478,1484 **** - 3, 4, - 5, 6}; - -! printf("Don't you dare indent this line incorrectly!\n); - } - - STARTTEST ---- 1478,1506 ---- - 3, 4, - 5, 6}; - -! printf("Don't you dare indent this line incorrectly!\n"); -! } -! -! void -! func4(a, b, -! c) -! int a; -! int b; -! int c; -! { -! } -! -! void -! func5( -! int a, -! int b) -! { -! } -! -! void -! func6( -! int a) -! { - } - - STARTTEST -*** ../vim-7.3.379/src/testdir/test3.ok 2011-12-14 20:05:17.000000000 +0100 ---- src/testdir/test3.ok 2011-12-14 20:11:24.000000000 +0100 -*************** -*** 1331,1337 **** - 3, 4, - 5, 6}; - -! printf("Don't you dare indent this line incorrectly!\n); - } - - ---- 1331,1359 ---- - 3, 4, - 5, 6}; - -! printf("Don't you dare indent this line incorrectly!\n"); -! } -! -! void -! func4(a, b, -! c) -! int a; -! int b; -! int c; -! { -! } -! -! void -! func5( -! int a, -! int b) -! { -! } -! -! void -! func6( -! int a) -! { - } - - -*** ../vim-7.3.379/src/version.c 2011-12-14 20:05:17.000000000 +0100 ---- src/version.c 2011-12-14 20:20:50.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 380, - /**/ - --- -"Intelligence has much less practical application than you'd think." - -- Scott Adams, Dilbert. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.381 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.381 -Problem: Configure silently skips interfaces that won't work. -Solution: Add the --enable-fail_if_missing argument. (Shlomi Fish) -Files: src/Makefile, src/configure.in, src/auto/configure - - -*** ../vim-7.3.380/src/Makefile 2011-12-08 15:17:28.000000000 +0100 ---- src/Makefile 2011-12-14 20:49:26.000000000 +0100 -*************** -*** 389,394 **** ---- 389,399 ---- - #CONF_OPT_PLTHOME = --with-plthome=/usr/local/drscheme - #CONF_OPT_PLTHOME = --with-plthome=/home/me/mz - -+ # Uncomment the next line to fail if one of the requested language interfaces -+ # cannot be configured. Without this Vim will be build anyway, without -+ # the failing interfaces. -+ #CONF_OPT_FAIL = --enable-fail-if-missing -+ - # PERL - # Uncomment one of these when you want to include the Perl interface. - # First one is for static linking, second one for dynamic loading. -*************** -*** 1648,1654 **** - CC="$(CC)" CPPFLAGS="$(CPPFLAGS)" CFLAGS="$(CFLAGS)" \ - LDFLAGS="$(LDFLAGS)" $(CONF_SHELL) srcdir="$(srcdir)" \ - ./configure $(CONF_OPT_GUI) $(CONF_OPT_X) $(CONF_OPT_XSMP) \ -! $(CONF_OPT_DARWIN) $(CONF_OPT_PERL) $(CONF_OPT_PYTHON) $(CONF_OPT_PYTHON3) \ - $(CONF_OPT_TCL) $(CONF_OPT_RUBY) $(CONF_OPT_NLS) \ - $(CONF_OPT_CSCOPE) $(CONF_OPT_MULTIBYTE) $(CONF_OPT_INPUT) \ - $(CONF_OPT_OUTPUT) $(CONF_OPT_GPM) $(CONF_OPT_WORKSHOP) \ ---- 1653,1660 ---- - CC="$(CC)" CPPFLAGS="$(CPPFLAGS)" CFLAGS="$(CFLAGS)" \ - LDFLAGS="$(LDFLAGS)" $(CONF_SHELL) srcdir="$(srcdir)" \ - ./configure $(CONF_OPT_GUI) $(CONF_OPT_X) $(CONF_OPT_XSMP) \ -! $(CONF_OPT_DARWIN) $(CONF_OPT_FAIL) \ -! $(CONF_OPT_PERL) $(CONF_OPT_PYTHON) $(CONF_OPT_PYTHON3) \ - $(CONF_OPT_TCL) $(CONF_OPT_RUBY) $(CONF_OPT_NLS) \ - $(CONF_OPT_CSCOPE) $(CONF_OPT_MULTIBYTE) $(CONF_OPT_INPUT) \ - $(CONF_OPT_OUTPUT) $(CONF_OPT_GPM) $(CONF_OPT_WORKSHOP) \ -*** ../vim-7.3.380/src/configure.in 2011-12-14 19:22:29.000000000 +0100 ---- src/configure.in 2011-12-14 20:46:36.000000000 +0100 -*************** -*** 28,33 **** ---- 28,43 ---- - AC_HEADER_STDC - AC_HEADER_SYS_WAIT - -+ dnl Check for the flag that fails if stuff are missing. -+ -+ AC_MSG_CHECKING(--enable-fail-if-missing argument) -+ AC_ARG_ENABLE(fail_if_missing, -+ [ --enable-fail-if-missing Fail if dependencies on additional features -+ specified on the command line are missing.], -+ [fail_if_missing="yes"], -+ [fail_if_missing="no"]) -+ AC_MSG_RESULT($fail_if_missing) -+ - dnl Set default value for CFLAGS if none is defined or it's empty - if test -z "$CFLAGS"; then - CFLAGS="-O" -*************** -*** 491,496 **** ---- 501,509 ---- - LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"liblua${vi_cv_version_lua}.so$LUA_SONAME\\\" $LUA_CFLAGS" - fi - fi -+ if test "$fail_if_missing" = "yes" -a -z "$LUA_SRC"; then -+ AC_MSG_ERROR([could not configure lua]) -+ fi - AC_SUBST(LUA_SRC) - AC_SUBST(LUA_OBJ) - AC_SUBST(LUA_PRO) -*************** -*** 781,786 **** ---- 794,803 ---- - PERL_CFLAGS="-DDYNAMIC_PERL_DLL=\\\"$libperl\\\" $PERL_CFLAGS" - fi - fi -+ -+ if test "$fail_if_missing" = "yes" -a "$perl_ok" != "yes"; then -+ AC_MSG_ERROR([could not configure perl]) -+ fi - fi - AC_SUBST(shrpenv) - AC_SUBST(PERL_SRC) -*************** -*** 966,971 **** ---- 983,992 ---- - AC_MSG_RESULT(too old) - fi - fi -+ -+ if test "$fail_if_missing" = "yes" -a "$python_ok" != "yes"; then -+ AC_MSG_ERROR([could not configure python]) -+ fi - fi - - AC_SUBST(PYTHON_CONFDIR) -*************** -*** 1389,1394 **** ---- 1410,1418 ---- - AC_MSG_RESULT(too old; need Tcl version 8.0 or later) - fi - fi -+ if test "$fail_if_missing" = "yes" -a -z "$TCL_SRC"; then -+ AC_MSG_ERROR([could not configure Tcl]) -+ fi - fi - AC_SUBST(TCL_SRC) - AC_SUBST(TCL_OBJ) -*************** -*** 1469,1474 **** ---- 1493,1502 ---- - AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later) - fi - fi -+ -+ if test "$fail_if_missing" = "yes" -a -z "$RUBY_OBJ"; then -+ AC_MSG_ERROR([could not configure Ruby]) -+ fi - fi - AC_SUBST(RUBY_SRC) - AC_SUBST(RUBY_OBJ) -*** ../vim-7.3.380/src/auto/configure 2011-12-14 19:22:29.000000000 +0100 ---- src/auto/configure 2011-12-14 20:49:51.000000000 +0100 -*************** -*** 741,746 **** ---- 741,747 ---- - ac_subst_files='' - ac_user_opts=' - enable_option_checking -+ enable_fail_if_missing - enable_darwin - with_mac_arch - with_developer_dir -*************** -*** 1418,1423 **** ---- 1419,1426 ---- - --disable-option-checking ignore unrecognized --enable/--with options - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] -+ --enable-fail-if-missing Fail if dependencies on additional features -+ specified on the command line are missing. - --disable-darwin Disable Darwin (Mac OS X) support. - --disable-selinux Don't check for SELinux support. - --disable-xsmp Disable XSMP session management -*************** -*** 3949,3954 **** ---- 3952,3970 ---- - fi - - -+ -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking --enable-fail-if-missing argument" >&5 -+ $as_echo_n "checking --enable-fail-if-missing argument... " >&6; } -+ # Check whether --enable-fail_if_missing was given. -+ if test "${enable_fail_if_missing+set}" = set; then : -+ enableval=$enable_fail_if_missing; fail_if_missing="yes" -+ else -+ fail_if_missing="no" -+ fi -+ -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $fail_if_missing" >&5 -+ $as_echo "$fail_if_missing" >&6; } -+ - if test -z "$CFLAGS"; then - CFLAGS="-O" - test "$GCC" = yes && CFLAGS="-O2 -fno-strength-reduce -Wall" -*************** -*** 4727,4732 **** ---- 4743,4751 ---- - LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"liblua${vi_cv_version_lua}.so$LUA_SONAME\\\" $LUA_CFLAGS" - fi - fi -+ if test "$fail_if_missing" = "yes" -a -z "$LUA_SRC"; then -+ as_fn_error "could not configure lua" "$LINENO" 5 -+ fi - - - -*************** -*** 5140,5145 **** ---- 5159,5168 ---- - PERL_CFLAGS="-DDYNAMIC_PERL_DLL=\\\"$libperl\\\" $PERL_CFLAGS" - fi - fi -+ -+ if test "$fail_if_missing" = "yes" -a "$perl_ok" != "yes"; then -+ as_fn_error "could not configure perl" "$LINENO" 5 -+ fi - fi - - -*************** -*** 5429,5434 **** ---- 5452,5461 ---- - $as_echo "too old" >&6; } - fi - fi -+ -+ if test "$fail_if_missing" = "yes" -a "$python_ok" != "yes"; then -+ as_fn_error "could not configure python" "$LINENO" 5 -+ fi - fi - - -*************** -*** 6216,6221 **** ---- 6243,6251 ---- - $as_echo "too old; need Tcl version 8.0 or later" >&6; } - fi - fi -+ if test "$fail_if_missing" = "yes" -a -z "$TCL_SRC"; then -+ as_fn_error "could not configure Tcl" "$LINENO" 5 -+ fi - fi - - -*************** -*** 6353,6358 **** ---- 6383,6392 ---- - $as_echo "too old; need Ruby version 1.6.0 or later" >&6; } - fi - fi -+ -+ if test "$fail_if_missing" = "yes" -a -z "$RUBY_OBJ"; then -+ as_fn_error "could not configure Ruby" "$LINENO" 5 -+ fi - fi - - -*** ../vim-7.3.380/src/version.c 2011-12-14 20:21:29.000000000 +0100 ---- src/version.c 2011-12-14 20:50:42.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 381, - /**/ - --- -The psychic said, "God bless you." I said, "I didn't sneeze." She -looked deep into my eyes and said, "You will, eventually." And, damn -if she wasn't right. Two days later, I sneezed. --Ellen Degeneres - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.382 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.382 (after 7.3.376) -Problem: IME characters are inserted twice. -Solution: Do not call DefWindowProc() if the event was handled. (Yasuhiro - Matsumoto) -Files: src/gui_w32.c - - -*** ../vim-7.3.381/src/gui_w32.c 2011-12-14 15:23:53.000000000 +0100 ---- src/gui_w32.c 2011-12-15 21:50:51.000000000 +0100 -*************** -*** 798,804 **** - if (pt.y < rect.top) - { - show_tabline_popup_menu(); -! return 0; - } - } - return MyWindowProc(hwnd, uMsg, wParam, lParam); ---- 798,804 ---- - if (pt.y < rect.top) - { - show_tabline_popup_menu(); -! return 0L; - } - } - return MyWindowProc(hwnd, uMsg, wParam, lParam); -*************** -*** 828,834 **** ---- 828,837 ---- - - case WM_ENDSESSION: - if (wParam) /* system only really goes down when wParam is TRUE */ -+ { - _OnEndSession(); -+ return 0L; -+ } - break; - - case WM_CHAR: -*************** -*** 866,872 **** - * are received, mouse pointer remains hidden. */ - return MyWindowProc(hwnd, uMsg, wParam, lParam); - #else -! return 0; - #endif - - case WM_SIZING: /* HANDLE_MSG doesn't seem to handle this one */ ---- 869,875 ---- - * are received, mouse pointer remains hidden. */ - return MyWindowProc(hwnd, uMsg, wParam, lParam); - #else -! return 0L; - #endif - - case WM_SIZING: /* HANDLE_MSG doesn't seem to handle this one */ -*************** -*** 874,880 **** - - case WM_MOUSEWHEEL: - _OnMouseWheel(hwnd, HIWORD(wParam)); -! break; - - /* Notification for change in SystemParametersInfo() */ - case WM_SETTINGCHANGE: ---- 877,883 ---- - - case WM_MOUSEWHEEL: - _OnMouseWheel(hwnd, HIWORD(wParam)); -! return 0L; - - /* Notification for change in SystemParametersInfo() */ - case WM_SETTINGCHANGE: -*************** -*** 987,999 **** ---- 990,1008 ---- - case TCN_SELCHANGE: - if (gui_mch_showing_tabline() - && ((LPNMHDR)lParam)->hwndFrom == s_tabhwnd) -+ { - send_tabline_event(TabCtrl_GetCurSel(s_tabhwnd) + 1); -+ return 0L; -+ } - break; - - case NM_RCLICK: - if (gui_mch_showing_tabline() - && ((LPNMHDR)lParam)->hwndFrom == s_tabhwnd) -+ { - show_tabline_popup_menu(); -+ return 0L; -+ } - break; - # endif - default: -*************** -*** 1037,1042 **** ---- 1046,1052 ---- - out_flush(); - did_menu_tip = TRUE; - } -+ return 0L; - } - break; - #endif -*************** -*** 1079,1096 **** - case WM_IME_NOTIFY: - if (!_OnImeNotify(hwnd, (DWORD)wParam, (DWORD)lParam)) - return MyWindowProc(hwnd, uMsg, wParam, lParam); -! break; - case WM_IME_COMPOSITION: - if (!_OnImeComposition(hwnd, wParam, lParam)) - return MyWindowProc(hwnd, uMsg, wParam, lParam); -! break; - #endif - - default: - if (uMsg == msh_msgmousewheel && msh_msgmousewheel != 0) - { /* handle MSH_MOUSEWHEEL messages for Intellimouse */ - _OnMouseWheel(hwnd, HIWORD(wParam)); -! break; - } - #ifdef MSWIN_FIND_REPLACE - else if (uMsg == s_findrep_msg && s_findrep_msg != 0) ---- 1089,1107 ---- - case WM_IME_NOTIFY: - if (!_OnImeNotify(hwnd, (DWORD)wParam, (DWORD)lParam)) - return MyWindowProc(hwnd, uMsg, wParam, lParam); -! return 1L; -! - case WM_IME_COMPOSITION: - if (!_OnImeComposition(hwnd, wParam, lParam)) - return MyWindowProc(hwnd, uMsg, wParam, lParam); -! return 1L; - #endif - - default: - if (uMsg == msh_msgmousewheel && msh_msgmousewheel != 0) - { /* handle MSH_MOUSEWHEEL messages for Intellimouse */ - _OnMouseWheel(hwnd, HIWORD(wParam)); -! return 0L; - } - #ifdef MSWIN_FIND_REPLACE - else if (uMsg == s_findrep_msg && s_findrep_msg != 0) -*** ../vim-7.3.381/src/version.c 2011-12-14 20:51:19.000000000 +0100 ---- src/version.c 2011-12-15 21:48:49.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 382, - /**/ - --- -Even got a Datapoint 3600(?) with a DD50 connector instead of the -usual DB25... what a nightmare trying to figure out the pinout -for *that* with no spex... - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.383 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.383 -Problem: For EBCDIC pound sign is defined as 't'. -Solution: Correctly define POUND. -Files: src/ascii.h - - -*** ../vim-7.3.382/src/ascii.h 2011-09-02 14:18:14.000000000 +0200 ---- src/ascii.h 2011-12-17 21:38:36.000000000 +0100 -*************** -*** 123,129 **** - #define DCS 0x90 /* Device Control String */ - #define STERM 0x9c /* String Terminator */ - -! #define POUND '\xA3' - - #define CTRL_F_STR "\056" - #define CTRL_H_STR "\026" ---- 123,129 ---- - #define DCS 0x90 /* Device Control String */ - #define STERM 0x9c /* String Terminator */ - -! #define POUND 0xB1 - - #define CTRL_F_STR "\056" - #define CTRL_H_STR "\026" -*** ../vim-7.3.382/src/version.c 2011-12-15 21:51:32.000000000 +0100 ---- src/version.c 2011-12-23 12:46:08.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 383, - /**/ - --- -Vim is like Emacs without all the typing. (John "Johann" Spetz) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.384 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.384 -Problem: Mapping CTRL-K in Insert mode breaks CTRL-X CTRL-K for dictionary - completion. -Solution: Add CTRL-K to the list of recognized keys. (James McCoy) -Files: src/edit.c - - -*** ../vim-7.3.383/src/edit.c 2011-10-26 17:04:23.000000000 +0200 ---- src/edit.c 2011-12-23 12:36:22.000000000 +0100 -*************** -*** 2183,2189 **** - || c == Ctrl_I || c == Ctrl_D || c == Ctrl_P - || c == Ctrl_N || c == Ctrl_T || c == Ctrl_V - || c == Ctrl_Q || c == Ctrl_U || c == Ctrl_O -! || c == Ctrl_S || c == 's'); - case CTRL_X_SCROLL: - return (c == Ctrl_Y || c == Ctrl_E); - case CTRL_X_WHOLE_LINE: ---- 2183,2189 ---- - || c == Ctrl_I || c == Ctrl_D || c == Ctrl_P - || c == Ctrl_N || c == Ctrl_T || c == Ctrl_V - || c == Ctrl_Q || c == Ctrl_U || c == Ctrl_O -! || c == Ctrl_S || c == Ctrl_K || c == 's'); - case CTRL_X_SCROLL: - return (c == Ctrl_Y || c == Ctrl_E); - case CTRL_X_WHOLE_LINE: -*** ../vim-7.3.383/src/version.c 2011-12-23 12:46:56.000000000 +0100 ---- src/version.c 2011-12-23 12:53:38.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 384, - /**/ - --- -Q: Is selling software the same as selling hardware? -A: No, good hardware is sold new, good software has already been used by many. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.385 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.385 -Problem: When using an expression mapping on the command line the cursor - ends up in the wrong place. (Yasuhiro Matsumoto) -Solution: Save and restore msg_col and msg_row when evaluating the - expression. -Files: src/getchar. - - -*** ../vim-7.3.384/src/getchar.c 2011-10-12 22:02:07.000000000 +0200 ---- src/getchar.c 2011-12-14 18:37:52.000000000 +0100 -*************** -*** 4510,4515 **** ---- 4510,4517 ---- - char_u *expr; - char_u *save_cmd; - pos_T save_cursor; -+ int save_msg_col; -+ int save_msg_row; - - /* Remove escaping of CSI, because "str" is in a format to be used as - * typeahead. */ -*************** -*** 4533,4544 **** ---- 4535,4550 ---- - #endif - set_vim_var_char(c); /* set v:char to the typed character */ - save_cursor = curwin->w_cursor; -+ save_msg_col = msg_col; -+ save_msg_row = msg_row; - p = eval_to_string(expr, NULL, FALSE); - --textlock; - #ifdef FEAT_EX_EXTRA - --ex_normal_lock; - #endif - curwin->w_cursor = save_cursor; -+ msg_col = save_msg_col; -+ msg_row = save_msg_row; - - restore_cmdline_alloc(save_cmd); - vim_free(expr); -*** ../vim-7.3.384/src/version.c 2011-12-23 13:14:58.000000000 +0100 ---- src/version.c 2011-12-23 14:53:23.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 385, - /**/ - --- -`When any government, or any church for that matter, undertakes to say to - its subjects, "This you may not read, this you must not see, this you are - forbidden to know," the end result is tyranny and oppression no matter how - holy the motives' -- Robert A Heinlein, "If this goes on --" - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.386 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.386 -Problem: Test 83 fails when iconv does not support cp932. (raf) -Solution: Test if conversion works. (Yukihiro Nakadaira) -Files: src/testdir/test83.in - - -*** ../vim-7.3.385/src/testdir/test83.in 2011-10-12 19:53:31.000000000 +0200 ---- src/testdir/test83.in 2011-12-21 21:01:44.000000000 +0100 -*************** -*** 2,8 **** - - STARTTEST - :so mbyte.vim -! :if !has('iconv') - : e! test.ok - : w! test.out - : qa! ---- 2,8 ---- - - STARTTEST - :so mbyte.vim -! :if !has('iconv') || iconv("\x82\x60", "cp932", "utf-8") != "\uff21" - : e! test.ok - : w! test.out - : qa! -*** ../vim-7.3.385/src/version.c 2011-12-23 14:54:01.000000000 +0100 ---- src/version.c 2011-12-23 14:55:38.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 386, - /**/ - --- -WOMAN: King of the who? -ARTHUR: The Britons. -WOMAN: Who are the Britons? -ARTHUR: Well, we all are. we're all Britons and I am your king. - The Quest for the Holy Grail (Monty Python) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.387 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.387 (after 7.3.386) -Problem: Test 83 may fail for some encodings. -Solution: Set 'encoding' to utf-8 earlier. -Files: src/testdir/test83.in - - -*** ../vim-7.3.386/src/testdir/test83.in 2011-12-23 14:56:24.000000000 +0100 ---- src/testdir/test83.in 2011-12-30 13:05:05.000000000 +0100 -*************** -*** 2,13 **** - - STARTTEST - :so mbyte.vim - :if !has('iconv') || iconv("\x82\x60", "cp932", "utf-8") != "\uff21" - : e! test.ok - : w! test.out - : qa! - :endif -- :set enc=utf8 - - :/^text for tags1$/,/^text for tags1$/+1w! Xtags1.txt - :/^text for tags2$/,/^text for tags2$/+1w! Xtags2.txt ---- 2,13 ---- - - STARTTEST - :so mbyte.vim -+ :set enc=utf8 - :if !has('iconv') || iconv("\x82\x60", "cp932", "utf-8") != "\uff21" - : e! test.ok - : w! test.out - : qa! - :endif - - :/^text for tags1$/,/^text for tags1$/+1w! Xtags1.txt - :/^text for tags2$/,/^text for tags2$/+1w! Xtags2.txt -*** ../vim-7.3.386/src/version.c 2011-12-23 14:56:24.000000000 +0100 ---- src/version.c 2011-12-30 13:06:17.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 387, - /**/ - --- -Mental Floss prevents moral decay! - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.388 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.388 -Problem: Crash on exit when EXITFREE is defined and using tiny features. -Solution: Check for NULL window pointer. (Dominique Pelle) -Files: src/buffer.c - - -*** ../vim-7.3.387/src/buffer.c 2011-11-30 15:40:51.000000000 +0100 ---- src/buffer.c 2011-12-30 13:35:26.000000000 +0100 -*************** -*** 419,424 **** ---- 419,426 ---- - if ( - #ifdef FEAT_WINDOWS - win_valid(win) && -+ #else -+ win != NULL && - #endif - win->w_buffer == buf) - win->w_buffer = NULL; /* make sure we don't use the buffer now */ -*** ../vim-7.3.387/src/version.c 2011-12-30 13:09:15.000000000 +0100 ---- src/version.c 2011-12-30 13:37:23.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 388, - /**/ - --- -Be nice to your kids... they'll be the ones choosing your nursing home. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.389 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.389 -Problem: After typing at a prompt the "MORE" message appears too soon. -Solution: reset lines_left in msg_end_prompt(). (Eswald) -Files: src/message.c - - -*** ../vim-7.3.388/src/message.c 2011-09-14 15:39:26.000000000 +0200 ---- src/message.c 2011-12-30 14:08:05.000000000 +0100 -*************** -*** 85,91 **** - * need_wait_return to be set. This is a hack to make ":ts" - * work without an extra prompt. - * lines_left Number of lines available for messages before the -! * more-prompt is to be given. - * need_wait_return TRUE when the hit-return prompt is needed. - * Reset: After giving the hit-return prompt, when the user - * has answered some other prompt. ---- 85,91 ---- - * need_wait_return to be set. This is a hack to make ":ts" - * work without an extra prompt. - * lines_left Number of lines available for messages before the -! * more-prompt is to be given. -1 when not set. - * need_wait_return TRUE when the hit-return prompt is needed. - * Reset: After giving the hit-return prompt, when the user - * has answered some other prompt. -*************** -*** 855,860 **** ---- 855,861 ---- - cmdline_row = msg_row; - msg_col = 0; - msg_clr_eos(); -+ lines_left = -1; - } - #endif - -*** ../vim-7.3.388/src/version.c 2011-12-30 13:39:04.000000000 +0100 ---- src/version.c 2011-12-30 14:11:00.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 389, - /**/ - --- -Proofread carefully to see if you any words out. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.390 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.390 -Problem: Using NULL buffer pointer in a window. -Solution: Check for w_buffer being NULL in more places. (Bjorn Winckler) -Files: src/ex_cmds.c, src/quickfix.c, src/window.c - - -*** ../vim-7.3.389/src/ex_cmds.c 2011-11-30 17:01:55.000000000 +0100 ---- src/ex_cmds.c 2011-12-30 14:59:57.000000000 +0100 -*************** -*** 3390,3395 **** ---- 3390,3402 ---- - (flags & ECMD_HIDE) ? 0 : DOBUF_UNLOAD); - - #ifdef FEAT_AUTOCMD -+ /* Autocommands may open a new window and leave oldwin open -+ * which leads to crashes since the above call sets -+ * oldwin->w_buffer to NULL. */ -+ if (curwin != oldwin && oldwin != aucmd_win -+ && win_valid(oldwin) && oldwin->w_buffer == NULL) -+ win_close(oldwin, FALSE); -+ - # ifdef FEAT_EVAL - if (aborting()) /* autocmds may abort script processing */ - { -*** ../vim-7.3.389/src/quickfix.c 2011-08-10 18:36:49.000000000 +0200 ---- src/quickfix.c 2011-12-30 14:45:19.000000000 +0100 -*************** -*** 2675,2681 **** - bt_quickfix(buf) - buf_T *buf; - { -! return (buf->b_p_bt[0] == 'q'); - } - - /* ---- 2675,2681 ---- - bt_quickfix(buf) - buf_T *buf; - { -! return buf != NULL && buf->b_p_bt[0] == 'q'; - } - - /* -*************** -*** 2686,2693 **** - bt_nofile(buf) - buf_T *buf; - { -! return (buf->b_p_bt[0] == 'n' && buf->b_p_bt[2] == 'f') -! || buf->b_p_bt[0] == 'a'; - } - - /* ---- 2686,2693 ---- - bt_nofile(buf) - buf_T *buf; - { -! return buf != NULL && ((buf->b_p_bt[0] == 'n' && buf->b_p_bt[2] == 'f') -! || buf->b_p_bt[0] == 'a'); - } - - /* -*************** -*** 2697,2703 **** - bt_dontwrite(buf) - buf_T *buf; - { -! return (buf->b_p_bt[0] == 'n'); - } - - int ---- 2697,2703 ---- - bt_dontwrite(buf) - buf_T *buf; - { -! return buf != NULL && buf->b_p_bt[0] == 'n'; - } - - int -*** ../vim-7.3.389/src/window.c 2011-09-14 14:43:21.000000000 +0200 ---- src/window.c 2011-12-30 14:44:18.000000000 +0100 -*************** -*** 2170,2176 **** - - /* When closing the help window, try restoring a snapshot after closing - * the window. Otherwise clear the snapshot, it's now invalid. */ -! if (win->w_buffer->b_help) - help_window = TRUE; - else - clear_snapshot(curtab, SNAP_HELP_IDX); ---- 2170,2176 ---- - - /* When closing the help window, try restoring a snapshot after closing - * the window. Otherwise clear the snapshot, it's now invalid. */ -! if (win->w_buffer != NULL && win->w_buffer->b_help) - help_window = TRUE; - else - clear_snapshot(curtab, SNAP_HELP_IDX); -*************** -*** 2214,2226 **** - - #ifdef FEAT_SYN_HL - /* Free independent synblock before the buffer is freed. */ -! reset_synblock(win); - #endif - - /* - * Close the link to the buffer. - */ -! close_buffer(win, win->w_buffer, free_buf ? DOBUF_UNLOAD : 0); - - /* Autocommands may have closed the window already, or closed the only - * other window or moved to another tab page. */ ---- 2214,2228 ---- - - #ifdef FEAT_SYN_HL - /* Free independent synblock before the buffer is freed. */ -! if (win->w_buffer != NULL) -! reset_synblock(win); - #endif - - /* - * Close the link to the buffer. - */ -! if (win->w_buffer != NULL) -! close_buffer(win, win->w_buffer, free_buf ? DOBUF_UNLOAD : 0); - - /* Autocommands may have closed the window already, or closed the only - * other window or moved to another tab page. */ -*** ../vim-7.3.389/src/version.c 2011-12-30 14:14:16.000000000 +0100 ---- src/version.c 2011-12-30 14:38:39.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 390, - /**/ - --- -There can't be a crisis today, my schedule is already full. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.391 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.391 -Problem: Can't check if the XPM_W32 feature is enabled. -Solution: Add xpm_w32 to the list of features. (kat) -Files: src/eval.c - - -*** ../vim-7.3.390/src/eval.c 2011-12-14 15:32:44.000000000 +0100 ---- src/eval.c 2012-01-04 14:33:22.000000000 +0100 -*************** -*** 12260,12265 **** ---- 12260,12268 ---- - #ifdef FEAT_XFONTSET - "xfontset", - #endif -+ #ifdef FEAT_XPM_W32 -+ "xpm_w32", -+ #endif - #ifdef USE_XSMP - "xsmp", - #endif -*** ../vim-7.3.390/src/version.c 2011-12-30 15:01:55.000000000 +0100 ---- src/version.c 2012-01-04 14:34:31.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 391, - /**/ - --- -ROBIN: The what? -ARTHUR: The Holy Hand Grenade of Antioch. 'Tis one of the sacred relics - Brother Maynard always carries with him. -ALL: Yes. Of course. -ARTHUR: (shouting) Bring up the Holy Hand Grenade! - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.392 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.392 -Problem: When setting 'undofile' while the file is already loaded but - unchanged, try reading the undo file. (Andy Wokula) -Solution: Compute a checksum of the text when 'undofile' is set. (Christian - Brabandt) -Files: src/option.c, src/testdir/test72.in, src/testdir/test72.ok - - -*** ../vim-7.3.391/src/option.c 2011-11-30 11:31:25.000000000 +0100 ---- src/option.c 2012-01-04 19:34:11.000000000 +0100 -*************** -*** 7516,7521 **** ---- 7516,7545 ---- - compatible_set(); - } - -+ #ifdef FEAT_PERSISTENT_UNDO -+ /* 'undofile' */ -+ else if ((int *)varp == &curbuf->b_p_udf || (int *)varp == &p_udf) -+ { -+ char_u hash[UNDO_HASH_SIZE]; -+ buf_T *save_curbuf = curbuf; -+ -+ for (curbuf = firstbuf; curbuf != NULL; curbuf = curbuf->b_next) -+ { -+ /* When 'undofile' is set globally: for every buffer, otherwise -+ * only for the current buffer: Try to read in the undofile, if -+ * one exists and the buffer wasn't changed. */ -+ if ((curbuf == save_curbuf -+ || (opt_flags & OPT_GLOBAL) || opt_flags == 0) -+ && !curbufIsChanged()) -+ { -+ u_compute_hash(hash); -+ u_read_undo(NULL, hash, curbuf->b_fname); -+ } -+ } -+ curbuf = save_curbuf; -+ } -+ #endif -+ - /* 'list', 'number' */ - else if ((int *)varp == &curwin->w_p_list - || (int *)varp == &curwin->w_p_nu -*** ../vim-7.3.391/src/testdir/test72.in 2010-08-15 21:57:29.000000000 +0200 ---- src/testdir/test72.in 2012-01-04 19:04:17.000000000 +0100 -*************** -*** 51,56 **** ---- 51,62 ---- - :e Xtestfile - uuu:w >>test.out - :" -+ :" Test that reading the undofiles when setting undofile works -+ :set noundofile ul=0 -+ i -+ u:e! Xtestfile -+ :set undofile ul=100 -+ uuuuuu:w >>test.out - :" And now with encryption, cryptmethod=zip - :e! Xtestfile - :set undofile cm=zip -*** ../vim-7.3.391/src/testdir/test72.ok 2010-08-15 21:57:29.000000000 +0200 ---- src/testdir/test72.ok 2012-01-04 19:04:17.000000000 +0100 -*************** -*** 7,12 **** ---- 7,22 ---- - eight - nine - ten -+ one -+ two -+ three -+ four -+ five -+ six -+ seven -+ eight -+ nine -+ ten - monday - wednesday - thursday -*** ../vim-7.3.391/src/version.c 2012-01-04 14:35:31.000000000 +0100 ---- src/version.c 2012-01-04 19:33:41.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 392, - /**/ - --- -BROTHER MAYNARD: Armaments Chapter Two Verses Nine to Twenty One. -ANOTHER MONK: And St. Attila raised his hand grenade up on high saying "O - Lord bless this thy hand grenade that with it thou mayest - blow thine enemies to tiny bits, in thy mercy. "and the Lord - did grin and people did feast upon the lambs and sloths and - carp and anchovies and orang-utans and breakfast cereals and - fruit bats and... -BROTHER MAYNARD: Skip a bit brother ... - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.393 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.393 -Problem: Win32: When resizing Vim it is always moved to the primary monitor - if the secondary monitor is on the left. -Solution: Use the nearest monitor. (Yukihiro Nakadaira) -Files: src/gui_w32.c - - -*** ../vim-7.3.392/src/gui_w32.c 2011-12-15 21:51:32.000000000 +0100 ---- src/gui_w32.c 2012-01-04 20:25:58.000000000 +0100 -*************** -*** 1661,1669 **** - { - RECT workarea_rect; - int win_width, win_height; -- int win_xpos, win_ypos; - WINDOWPLACEMENT wndpl; -- int workarea_left; - - /* Try to keep window completely on screen. */ - /* Get position of the screen work area. This is the part that is not ---- 1661,1667 ---- -*************** -*** 1685,1693 **** - GetWindowPlacement(s_hwnd, &wndpl); - } - -- win_xpos = wndpl.rcNormalPosition.left; -- win_ypos = wndpl.rcNormalPosition.top; -- - /* compute the size of the outside of the window */ - win_width = width + GetSystemMetrics(SM_CXFRAME) * 2; - win_height = height + GetSystemMetrics(SM_CYFRAME) * 2 ---- 1683,1688 ---- -*************** -*** 1697,1732 **** - #endif - ; - -! /* There is an inconsistency when using two monitors and Vim is on the -! * second (right) one: win_xpos will be the offset from the workarea of -! * the left monitor. While with one monitor it's the offset from the -! * workarea (including a possible taskbar on the left). Detect the second -! * monitor by checking for the left offset to be quite big. */ -! if (workarea_rect.left > 300) -! workarea_left = 0; -! else -! workarea_left = workarea_rect.left; - -! /* If the window is going off the screen, move it on to the screen. -! * win_xpos and win_ypos are relative to the workarea. */ - if ((direction & RESIZE_HOR) -! && workarea_left + win_xpos + win_width > workarea_rect.right) -! win_xpos = workarea_rect.right - win_width - workarea_left; - -! if ((direction & RESIZE_HOR) && win_xpos < 0) -! win_xpos = 0; - - if ((direction & RESIZE_VERT) -! && workarea_rect.top + win_ypos + win_height > workarea_rect.bottom) -! win_ypos = workarea_rect.bottom - win_height - workarea_rect.top; - -! if ((direction & RESIZE_VERT) && win_ypos < 0) -! win_ypos = 0; -! -! wndpl.rcNormalPosition.left = win_xpos; -! wndpl.rcNormalPosition.right = win_xpos + win_width; -! wndpl.rcNormalPosition.top = win_ypos; -! wndpl.rcNormalPosition.bottom = win_ypos + win_height; - - /* set window position - we should use SetWindowPlacement rather than - * SetWindowPos as the MSDN docs say the coord systems returned by ---- 1692,1723 ---- - #endif - ; - -! /* The following should take care of keeping Vim on the same monitor, no -! * matter if the secondary monitor is left or right of the primary -! * monitor. */ -! wndpl.rcNormalPosition.right = wndpl.rcNormalPosition.left + win_width; -! wndpl.rcNormalPosition.bottom = wndpl.rcNormalPosition.top + win_height; - -! /* If the window is going off the screen, move it on to the screen. */ - if ((direction & RESIZE_HOR) -! && wndpl.rcNormalPosition.right > workarea_rect.right) -! OffsetRect(&wndpl.rcNormalPosition, -! workarea_rect.right - wndpl.rcNormalPosition.right, 0); - -! if ((direction & RESIZE_HOR) -! && wndpl.rcNormalPosition.left < workarea_rect.left) -! OffsetRect(&wndpl.rcNormalPosition, -! workarea_rect.left - wndpl.rcNormalPosition.left, 0); - - if ((direction & RESIZE_VERT) -! && wndpl.rcNormalPosition.bottom > workarea_rect.bottom) -! OffsetRect(&wndpl.rcNormalPosition, -! 0, workarea_rect.bottom - wndpl.rcNormalPosition.bottom); - -! if ((direction & RESIZE_VERT) -! && wndpl.rcNormalPosition.top < workarea_rect.top) -! OffsetRect(&wndpl.rcNormalPosition, -! 0, workarea_rect.top - wndpl.rcNormalPosition.top); - - /* set window position - we should use SetWindowPlacement rather than - * SetWindowPos as the MSDN docs say the coord systems returned by -*** ../vim-7.3.392/src/version.c 2012-01-04 19:34:32.000000000 +0100 ---- src/version.c 2012-01-04 20:28:57.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 393, - /**/ - --- -I wonder, do vegetarians eat fruit bats? - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.394 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.394 -Problem: When placing a mark while starting up a screen redraw messes up - the screen. (lith) -Solution: Don't redraw while still starting up. (Christian Brabandt) -Files: src/screen.c - - -*** ../vim-7.3.393/src/screen.c 2011-09-02 14:07:31.000000000 +0200 ---- src/screen.c 2012-01-10 12:36:52.000000000 +0100 -*************** -*** 764,772 **** - doit = TRUE; - } - -! /* Return when there is nothing to do or screen updating already -! * happening. */ -! if (!doit || updating_screen) - return; - - /* update all windows that need updating */ ---- 764,776 ---- - doit = TRUE; - } - -! /* Return when there is nothing to do, screen updating is already -! * happening (recursive call) or still starting up. */ -! if (!doit || updating_screen -! #ifdef FEAT_GUI -! || gui.starting -! #endif -! || starting) - return; - - /* update all windows that need updating */ -*** ../vim-7.3.393/src/version.c 2012-01-04 20:29:18.000000000 +0100 ---- src/version.c 2012-01-10 12:41:32.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 394, - /**/ - --- -It is illegal for anyone to try and stop a child from playfully jumping over -puddles of water. - [real standing law in California, United States of America] - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.395 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.395 (after 7.3.251) -Problem: "dv?bar" in the last line deletes too much and breaks undo. -Solution: Only adjust the cursor position when it's after the last line of - the buffer. Add a test. (Christian Brabandt) -Files: src/ops.c, src/testdir/test43.in, src/testdir/test43.ok - - -*** ../vim-7.3.394/src/ops.c 2011-09-21 17:33:49.000000000 +0200 ---- src/ops.c 2012-01-10 13:28:05.000000000 +0100 -*************** -*** 1961,1968 **** - /* Special case: gH<Del> deletes the last line. */ - del_lines(1L, FALSE); - curwin->w_cursor = curpos; /* restore curwin->w_cursor */ -! if (curwin->w_cursor.lnum > 1) -! --curwin->w_cursor.lnum; - } - else - { ---- 1962,1969 ---- - /* Special case: gH<Del> deletes the last line. */ - del_lines(1L, FALSE); - curwin->w_cursor = curpos; /* restore curwin->w_cursor */ -! if (curwin->w_cursor.lnum > curbuf->b_ml.ml_line_count) -! curwin->w_cursor.lnum = curbuf->b_ml.ml_line_count; - } - else - { -*************** -*** 4434,4440 **** - #endif - - /* -! * implementation of the format operator 'gq' - */ - void - op_format(oap, keep_cursor) ---- 4435,4441 ---- - #endif - - /* -! * Implementation of the format operator 'gq'. - */ - void - op_format(oap, keep_cursor) -*** ../vim-7.3.394/src/testdir/test43.in 2010-08-15 21:57:29.000000000 +0200 ---- src/testdir/test43.in 2012-01-10 13:41:13.000000000 +0100 -*************** -*** 13,19 **** - x:set magic - /\v(a)(b)\2\1\1/e - x/\V[ab]\(\[xy]\)\1 -! x:?^1?,$w! test.out - :qa! - ENDTEST - ---- 13,23 ---- - x:set magic - /\v(a)(b)\2\1\1/e - x/\V[ab]\(\[xy]\)\1 -! x:$ -! :set undolevels=100 -! dv?bar? -! Yup:" -! :?^1?,$w! test.out - :qa! - ENDTEST - -*************** -*** 25,27 **** ---- 29,33 ---- - 6 x ^aa$ x - 7 (a)(b) abbaa - 8 axx [ab]xx -+ 9 foobar -+ -*** ../vim-7.3.394/src/testdir/test43.ok 2010-08-15 21:57:29.000000000 +0200 ---- src/testdir/test43.ok 2012-01-10 13:42:39.000000000 +0100 -*************** -*** 6,8 **** ---- 6,11 ---- - 6 x aa$ x - 7 (a)(b) abba - 8 axx ab]xx -+ 9 foobar -+ 9 foo -+ -*** ../vim-7.3.394/src/version.c 2012-01-10 12:42:05.000000000 +0100 ---- src/version.c 2012-01-10 13:30:40.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 395, - /**/ - --- -The Law, in its majestic equality, forbids the rich, as well as the -poor, to sleep under the bridges, to beg in the streets, and to steal -bread. -- Anatole France - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.396 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.396 -Problem: After forcing an operator to be characterwise it can still become - linewise when spanning whole lines. -Solution: Don't make the operator linewise when motion_force was set. - (Christian Brabandt) -Files: src/ops.c - - -*** ../vim-7.3.395/src/ops.c 2012-01-10 13:44:23.000000000 +0100 ---- src/ops.c 2012-01-10 13:28:05.000000000 +0100 -*************** -*** 1648,1653 **** ---- 1648,1654 ---- - && !oap->block_mode - #endif - && oap->line_count > 1 -+ && oap->motion_force == NUL - && oap->op_type == OP_DELETE) - { - ptr = ml_get(oap->end.lnum) + oap->end.col; -*** ../vim-7.3.395/src/version.c 2012-01-10 13:44:23.000000000 +0100 ---- src/version.c 2012-01-10 13:45:31.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 396, - /**/ - --- -Any sufficiently advanced technology is indistinguishable from magic. - Arthur C. Clarke -Any sufficiently advanced bug is indistinguishable from a feature. - Rich Kulawiec - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.397 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.397 -Problem: ":helpgrep" does not work properly when 'encoding' is not utf-8 or - latin1. -Solution: Convert non-ascii lines to 'encoding'. (Yasuhiro Matsumoto) -Files: src/quickfix.c, src/spell.c, src/misc2.c, src/proto/misc2.pro - - -*** ../vim-7.3.396/src/quickfix.c 2011-12-30 15:01:55.000000000 +0100 ---- src/quickfix.c 2012-01-10 16:18:51.000000000 +0100 -*************** -*** 3914,3919 **** ---- 3914,3929 ---- - regmatch.rm_ic = FALSE; - if (regmatch.regprog != NULL) - { -+ #ifdef FEAT_MBYTE -+ vimconv_T vc; -+ -+ /* Help files are in utf-8 or latin1, convert lines when 'encoding' -+ * differs. */ -+ vc.vc_type = CONV_NONE; -+ if (!enc_utf8) -+ convert_setup(&vc, (char_u *)"utf-8", p_enc); -+ #endif -+ - /* create a new quickfix list */ - qf_new_list(qi, *eap->cmdlinep); - -*************** -*** 3948,3968 **** - lnum = 1; - while (!vim_fgets(IObuff, IOSIZE, fd) && !got_int) - { -! if (vim_regexec(®match, IObuff, (colnr_T)0)) - { -! int l = (int)STRLEN(IObuff); - - /* remove trailing CR, LF, spaces, etc. */ -! while (l > 0 && IObuff[l - 1] <= ' ') -! IObuff[--l] = NUL; - - if (qf_add_entry(qi, &prevp, - NULL, /* dir */ - fnames[fi], - 0, -! IObuff, - lnum, -! (int)(regmatch.startp[0] - IObuff) - + 1, /* col */ - FALSE, /* vis_col */ - NULL, /* search pattern */ ---- 3958,3990 ---- - lnum = 1; - while (!vim_fgets(IObuff, IOSIZE, fd) && !got_int) - { -! char_u *line = IObuff; -! #ifdef FEAT_MBYTE -! /* Convert a line if 'encoding' is not utf-8 and -! * the line contains a non-ASCII character. */ -! if (vc.vc_type != CONV_NONE -! && has_non_ascii(IObuff)) { -! line = string_convert(&vc, IObuff, NULL); -! if (line == NULL) -! line = IObuff; -! } -! #endif -! -! if (vim_regexec(®match, line, (colnr_T)0)) - { -! int l = (int)STRLEN(line); - - /* remove trailing CR, LF, spaces, etc. */ -! while (l > 0 && line[l - 1] <= ' ') -! line[--l] = NUL; - - if (qf_add_entry(qi, &prevp, - NULL, /* dir */ - fnames[fi], - 0, -! line, - lnum, -! (int)(regmatch.startp[0] - line) - + 1, /* col */ - FALSE, /* vis_col */ - NULL, /* search pattern */ -*************** -*** 3972,3980 **** ---- 3994,4010 ---- - ) == FAIL) - { - got_int = TRUE; -+ #ifdef FEAT_MBYTE -+ if (line != IObuff) -+ vim_free(line); -+ #endif - break; - } - } -+ #ifdef FEAT_MBYTE -+ if (line != IObuff) -+ vim_free(line); -+ #endif - ++lnum; - line_breakcheck(); - } -*************** -*** 3984,3990 **** ---- 4014,4025 ---- - FreeWild(fcount, fnames); - } - } -+ - vim_free(regmatch.regprog); -+ #ifdef FEAT_MBYTE -+ if (vc.vc_type != CONV_NONE) -+ convert_setup(&vc, NULL, NULL); -+ #endif - - qi->qf_lists[qi->qf_curlist].qf_nonevalid = FALSE; - qi->qf_lists[qi->qf_curlist].qf_ptr = -*** ../vim-7.3.396/src/spell.c 2011-09-02 14:18:14.000000000 +0200 ---- src/spell.c 2012-01-10 16:19:33.000000000 +0100 -*************** -*** 5020,5026 **** - static int str_equal __ARGS((char_u *s1, char_u *s2)); - static void add_fromto __ARGS((spellinfo_T *spin, garray_T *gap, char_u *from, char_u *to)); - static int sal_to_bool __ARGS((char_u *s)); -- static int has_non_ascii __ARGS((char_u *s)); - static void spell_free_aff __ARGS((afffile_T *aff)); - static int spell_read_dic __ARGS((spellinfo_T *spin, char_u *fname, afffile_T *affile)); - static int get_affix_flags __ARGS((afffile_T *affile, char_u *afflist)); ---- 5020,5025 ---- -*************** -*** 6485,6507 **** - } - - /* -- * Return TRUE if string "s" contains a non-ASCII character (128 or higher). -- * When "s" is NULL FALSE is returned. -- */ -- static int -- has_non_ascii(s) -- char_u *s; -- { -- char_u *p; -- -- if (s != NULL) -- for (p = s; *p != NUL; ++p) -- if (*p >= 128) -- return TRUE; -- return FALSE; -- } -- -- /* - * Free the structure filled by spell_read_aff(). - */ - static void ---- 6484,6489 ---- -*** ../vim-7.3.396/src/misc2.c 2011-12-08 17:49:31.000000000 +0100 ---- src/misc2.c 2012-01-10 16:25:53.000000000 +0100 -*************** -*** 6541,6543 **** ---- 6541,6563 ---- - #endif - - #endif -+ -+ #if (defined(FEAT_MBYTE) && defined(FEAT_QUICKFIX)) \ -+ || defined(FEAT_SPELL) || defined(PROTO) -+ /* -+ * Return TRUE if string "s" contains a non-ASCII character (128 or higher). -+ * When "s" is NULL FALSE is returned. -+ */ -+ int -+ has_non_ascii(s) -+ char_u *s; -+ { -+ char_u *p; -+ -+ if (s != NULL) -+ for (p = s; *p != NUL; ++p) -+ if (*p >= 128) -+ return TRUE; -+ return FALSE; -+ } -+ #endif -*** ../vim-7.3.396/src/proto/misc2.pro 2011-07-07 16:20:45.000000000 +0200 ---- src/proto/misc2.pro 2012-01-10 16:20:03.000000000 +0100 -*************** -*** 116,119 **** ---- 116,120 ---- - char_u *read_string __ARGS((FILE *fd, int cnt)); - int put_bytes __ARGS((FILE *fd, long_u nr, int len)); - void put_time __ARGS((FILE *fd, time_t the_time)); -+ int has_non_ascii __ARGS((char_u *s)); - /* vim: set ft=c : */ -*** ../vim-7.3.396/src/version.c 2012-01-10 13:46:18.000000000 +0100 ---- src/version.c 2012-01-10 16:26:32.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 397, - /**/ - --- -Biting someone with your natural teeth is "simple assault," while biting -someone with your false teeth is "aggravated assault." - [real standing law in Louisana, United States of America] - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.398 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.398 -Problem: When creating more than 10 location lists and adding items one by - one a previous location may be used. (Audrius Kažukauskas) -Solution: Clear the location list completely when adding the tenth one. -Files: src/quickfix.c - - -*** ../vim-7.3.397/src/quickfix.c 2012-01-10 16:28:41.000000000 +0100 ---- src/quickfix.c 2012-01-10 16:58:52.000000000 +0100 -*************** -*** 899,906 **** - } - else - qi->qf_curlist = qi->qf_listcount++; -! qi->qf_lists[qi->qf_curlist].qf_index = 0; -! qi->qf_lists[qi->qf_curlist].qf_count = 0; - if (qf_title != NULL) - { - char_u *p = alloc((int)STRLEN(qf_title) + 2); ---- 899,905 ---- - } - else - qi->qf_curlist = qi->qf_listcount++; -! vim_memset(&qi->qf_lists[qi->qf_curlist], 0, (size_t)(sizeof(qf_list_T))); - if (qf_title != NULL) - { - char_u *p = alloc((int)STRLEN(qf_title) + 2); -*************** -*** 909,916 **** - if (p != NULL) - sprintf((char *)p, ":%s", (char *)qf_title); - } -- else -- qi->qf_lists[qi->qf_curlist].qf_title = NULL; - } - - /* ---- 908,913 ---- -*** ../vim-7.3.397/src/version.c 2012-01-10 16:28:41.000000000 +0100 ---- src/version.c 2012-01-10 17:13:09.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 398, - /**/ - --- -Why don't cannibals eat clowns? -Because they taste funny. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.399 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.399 -Problem: ":cd" doesn't work when the path contains wildcards. (Yukihiro - Nakadaira) -Solution: Ignore wildcard errors when the EW_NOTWILD flag is used. -Files: src/misc1.c - - -*** ../vim-7.3.398/src/misc1.c 2011-12-14 20:21:29.000000000 +0100 ---- src/misc1.c 2012-01-10 17:57:42.000000000 +0100 -*************** -*** 9103,9117 **** - } - - /* compile the regexp into a program */ -! if (flags & EW_NOERROR) - ++emsg_silent; - regmatch.rm_ic = TRUE; /* Always ignore case */ - regmatch.regprog = vim_regcomp(pat, RE_MAGIC); -! if (flags & EW_NOERROR) - --emsg_silent; - vim_free(pat); - -! if (regmatch.regprog == NULL) - { - vim_free(buf); - return 0; ---- 9103,9117 ---- - } - - /* compile the regexp into a program */ -! if (flags & (EW_NOERROR | EW_NOTWILD)) - ++emsg_silent; - regmatch.rm_ic = TRUE; /* Always ignore case */ - regmatch.regprog = vim_regcomp(pat, RE_MAGIC); -! if (flags & (EW_NOERROR | EW_NOTWILD)) - --emsg_silent; - vim_free(pat); - -! if (regmatch.regprog == NULL && (flags & EW_NOTWILD) == 0) - { - vim_free(buf); - return 0; -*************** -*** 9179,9185 **** - * all entries found with "matchname". */ - if ((p[0] != '.' || starts_with_dot) - && (matchname == NULL -! || vim_regexec(®match, p, (colnr_T)0) - || ((flags & EW_NOTWILD) - && fnamencmp(path + (s - buf), p, e - s) == 0))) - { ---- 9179,9186 ---- - * all entries found with "matchname". */ - if ((p[0] != '.' || starts_with_dot) - && (matchname == NULL -! || (regmatch.regprog != NULL -! && vim_regexec(®match, p, (colnr_T)0)) - || ((flags & EW_NOTWILD) - && fnamencmp(path + (s - buf), p, e - s) == 0))) - { -*************** -*** 9419,9428 **** - else - regmatch.rm_ic = FALSE; /* Don't ignore case */ - #endif - regmatch.regprog = vim_regcomp(pat, RE_MAGIC); - vim_free(pat); - -! if (regmatch.regprog == NULL) - { - vim_free(buf); - return 0; ---- 9420,9433 ---- - else - regmatch.rm_ic = FALSE; /* Don't ignore case */ - #endif -+ if (flags & (EW_NOERROR | EW_NOTWILD)) -+ ++emsg_silent; - regmatch.regprog = vim_regcomp(pat, RE_MAGIC); -+ if (flags & (EW_NOERROR | EW_NOTWILD)) -+ --emsg_silent; - vim_free(pat); - -! if (regmatch.regprog == NULL && (flags & EW_NOTWILD) == 0) - { - vim_free(buf); - return 0; -*************** -*** 9452,9458 **** - if (dp == NULL) - break; - if ((dp->d_name[0] != '.' || starts_with_dot) -! && (vim_regexec(®match, (char_u *)dp->d_name, (colnr_T)0) - || ((flags & EW_NOTWILD) - && fnamencmp(path + (s - buf), dp->d_name, e - s) == 0))) - { ---- 9457,9464 ---- - if (dp == NULL) - break; - if ((dp->d_name[0] != '.' || starts_with_dot) -! && ((regmatch.regprog != NULL && vim_regexec(®match, -! (char_u *)dp->d_name, (colnr_T)0)) - || ((flags & EW_NOTWILD) - && fnamencmp(path + (s - buf), dp->d_name, e - s) == 0))) - { -*** ../vim-7.3.398/src/version.c 2012-01-10 17:13:48.000000000 +0100 ---- src/version.c 2012-01-10 18:21:05.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 399, - /**/ - --- -Close your shells, or I'll kill -9 you -Tomorrow I'll quota you -Remember the disks'll always be full -And then while I'm away -I'll write ~ everyday -And I'll send-pr all my buggings to you. - [ CVS log "Beatles style" for FreeBSD ports/INDEX, Satoshi Asami ] - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.400 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.400 -Problem: Compiler warnings for shadowed variables. -Solution: Remove or rename the variables. -Files: src/charset.c, src/digraph.c, src/edit.c, src/eval.c, src/fold.c, - src/getchar.c, src/message.c, src/misc2.c, src/move.c, - src/netbeans.c, src/option.c, src/os_unix.c, src/screen.c, - src/search.c, src/spell.c, src/syntax.c, src/tag.c, src/window.c - - -*** ../vim-7.3.399/src/charset.c 2010-08-15 21:57:25.000000000 +0200 ---- src/charset.c 2012-01-10 21:55:50.000000000 +0100 -*************** -*** 463,503 **** - if (enc_utf8) - { - int c = utf_ptr2char(STR_PTR(i)); -! int ol = utf_ptr2len(STR_PTR(i)); - int lc = utf_tolower(c); - - /* Only replace the character when it is not an invalid - * sequence (ASCII character or more than one byte) and - * utf_tolower() doesn't return the original character. */ -! if ((c < 0x80 || ol > 1) && c != lc) - { -! int nl = utf_char2len(lc); - - /* If the byte length changes need to shift the following - * characters forward or backward. */ -! if (ol != nl) - { -! if (nl > ol) - { -! if (buf == NULL ? ga_grow(&ga, nl - ol + 1) == FAIL -! : len + nl - ol >= buflen) - { - /* out of memory, keep old char */ - lc = c; -! nl = ol; - } - } -! if (ol != nl) - { - if (buf == NULL) - { -! STRMOVE(GA_PTR(i) + nl, GA_PTR(i) + ol); -! ga.ga_len += nl - ol; - } - else - { -! STRMOVE(buf + i + nl, buf + i + ol); -! len += nl - ol; - } - } - } ---- 463,504 ---- - if (enc_utf8) - { - int c = utf_ptr2char(STR_PTR(i)); -! int olen = utf_ptr2len(STR_PTR(i)); - int lc = utf_tolower(c); - - /* Only replace the character when it is not an invalid - * sequence (ASCII character or more than one byte) and - * utf_tolower() doesn't return the original character. */ -! if ((c < 0x80 || olen > 1) && c != lc) - { -! int nlen = utf_char2len(lc); - - /* If the byte length changes need to shift the following - * characters forward or backward. */ -! if (olen != nlen) - { -! if (nlen > olen) - { -! if (buf == NULL -! ? ga_grow(&ga, nlen - olen + 1) == FAIL -! : len + nlen - olen >= buflen) - { - /* out of memory, keep old char */ - lc = c; -! nlen = olen; - } - } -! if (olen != nlen) - { - if (buf == NULL) - { -! STRMOVE(GA_PTR(i) + nlen, GA_PTR(i) + olen); -! ga.ga_len += nlen - olen; - } - else - { -! STRMOVE(buf + i + nlen, buf + i + olen); -! len += nlen - olen; - } - } - } -*** ../vim-7.3.399/src/digraph.c 2010-08-15 21:57:28.000000000 +0200 ---- src/digraph.c 2012-01-10 21:57:16.000000000 +0100 -*************** -*** 2080,2092 **** - /* - * Lookup the pair "char1", "char2" in the digraph tables. - * If no match, return "char2". -! * If "meta" is TRUE and "char1" is a space, return "char2" | 0x80. - */ - static int -! getexactdigraph(char1, char2, meta) - int char1; - int char2; -! int meta; - { - int i; - int retval = 0; ---- 2080,2092 ---- - /* - * Lookup the pair "char1", "char2" in the digraph tables. - * If no match, return "char2". -! * If "meta_char" is TRUE and "char1" is a space, return "char2" | 0x80. - */ - static int -! getexactdigraph(char1, char2, meta_char) - int char1; - int char2; -! int meta_char; - { - int i; - int retval = 0; -*************** -*** 2159,2165 **** - - if (retval == 0) /* digraph deleted or not found */ - { -! if (char1 == ' ' && meta) /* <space> <char> --> meta-char */ - return (char2 | 0x80); - return char2; - } ---- 2159,2165 ---- - - if (retval == 0) /* digraph deleted or not found */ - { -! if (char1 == ' ' && meta_char) /* <space> <char> --> meta-char */ - return (char2 | 0x80); - return char2; - } -*************** -*** 2171,2186 **** - * Allow for both char1-char2 and char2-char1 - */ - int -! getdigraph(char1, char2, meta) - int char1; - int char2; -! int meta; - { - int retval; - -! if (((retval = getexactdigraph(char1, char2, meta)) == char2) - && (char1 != char2) -! && ((retval = getexactdigraph(char2, char1, meta)) == char1)) - return char2; - return retval; - } ---- 2171,2186 ---- - * Allow for both char1-char2 and char2-char1 - */ - int -! getdigraph(char1, char2, meta_char) - int char1; - int char2; -! int meta_char; - { - int retval; - -! if (((retval = getexactdigraph(char1, char2, meta_char)) == char2) - && (char1 != char2) -! && ((retval = getexactdigraph(char2, char1, meta_char)) == char1)) - return char2; - return retval; - } -*** ../vim-7.3.399/src/edit.c 2011-12-23 13:14:58.000000000 +0100 ---- src/edit.c 2012-01-10 21:58:28.000000000 +0100 -*************** -*** 4003,4026 **** - ins_compl_add_dict(dict) - dict_T *dict; - { -! dictitem_T *refresh; -! dictitem_T *words; - - /* Check for optional "refresh" item. */ - compl_opt_refresh_always = FALSE; -! refresh = dict_find(dict, (char_u *)"refresh", 7); -! if (refresh != NULL && refresh->di_tv.v_type == VAR_STRING) - { -! char_u *v = refresh->di_tv.vval.v_string; - - if (v != NULL && STRCMP(v, (char_u *)"always") == 0) - compl_opt_refresh_always = TRUE; - } - - /* Add completions from a "words" list. */ -! words = dict_find(dict, (char_u *)"words", 5); -! if (words != NULL && words->di_tv.v_type == VAR_LIST) -! ins_compl_add_list(words->di_tv.vval.v_list); - } - - /* ---- 4003,4026 ---- - ins_compl_add_dict(dict) - dict_T *dict; - { -! dictitem_T *di_refresh; -! dictitem_T *di_words; - - /* Check for optional "refresh" item. */ - compl_opt_refresh_always = FALSE; -! di_refresh = dict_find(dict, (char_u *)"refresh", 7); -! if (di_refresh != NULL && di_refresh->di_tv.v_type == VAR_STRING) - { -! char_u *v = di_refresh->di_tv.vval.v_string; - - if (v != NULL && STRCMP(v, (char_u *)"always") == 0) - compl_opt_refresh_always = TRUE; - } - - /* Add completions from a "words" list. */ -! di_words = dict_find(dict, (char_u *)"words", 5); -! if (di_words != NULL && di_words->di_tv.v_type == VAR_LIST) -! ins_compl_add_list(di_words->di_tv.vval.v_list); - } - - /* -*** ../vim-7.3.399/src/eval.c 2012-01-04 14:35:31.000000000 +0100 ---- src/eval.c 2012-01-10 22:00:50.000000000 +0100 -*************** -*** 6573,6587 **** - - /* - * Join list "l" into a string in "*gap", using separator "sep". -! * When "echo" is TRUE use String as echoed, otherwise as inside a List. - * Return FAIL or OK. - */ - static int -! list_join(gap, l, sep, echo, copyID) - garray_T *gap; - list_T *l; - char_u *sep; -! int echo; - int copyID; - { - int first = TRUE; ---- 6573,6587 ---- - - /* - * Join list "l" into a string in "*gap", using separator "sep". -! * When "echo_style" is TRUE use String as echoed, otherwise as inside a List. - * Return FAIL or OK. - */ - static int -! list_join(gap, l, sep, echo_style, copyID) - garray_T *gap; - list_T *l; - char_u *sep; -! int echo_style; - int copyID; - { - int first = TRUE; -*************** -*** 6597,6603 **** - else - ga_concat(gap, sep); - -! if (echo) - s = echo_string(&item->li_tv, &tofree, numbuf, copyID); - else - s = tv2string(&item->li_tv, &tofree, numbuf, copyID); ---- 6597,6603 ---- - else - ga_concat(gap, sep); - -! if (echo_style) - s = echo_string(&item->li_tv, &tofree, numbuf, copyID); - else - s = tv2string(&item->li_tv, &tofree, numbuf, copyID); -*************** -*** 17893,17899 **** - typval_T *argvars; - typval_T *rettv; - { -! char_u *instr; - char_u *fromstr; - char_u *tostr; - char_u *p; ---- 17893,17899 ---- - typval_T *argvars; - typval_T *rettv; - { -! char_u *in_str; - char_u *fromstr; - char_u *tostr; - char_u *p; -*************** -*** 17910,17916 **** - char_u buf2[NUMBUFLEN]; - garray_T ga; - -! instr = get_tv_string(&argvars[0]); - fromstr = get_tv_string_buf_chk(&argvars[1], buf); - tostr = get_tv_string_buf_chk(&argvars[2], buf2); - ---- 17910,17916 ---- - char_u buf2[NUMBUFLEN]; - garray_T ga; - -! in_str = get_tv_string(&argvars[0]); - fromstr = get_tv_string_buf_chk(&argvars[1], buf); - tostr = get_tv_string_buf_chk(&argvars[2], buf2); - -*************** -*** 17936,17954 **** - } - - /* fromstr and tostr have to contain the same number of chars */ -! while (*instr != NUL) - { - #ifdef FEAT_MBYTE - if (has_mbyte) - { -! inlen = (*mb_ptr2len)(instr); -! cpstr = instr; - cplen = inlen; - idx = 0; - for (p = fromstr; *p != NUL; p += fromlen) - { - fromlen = (*mb_ptr2len)(p); -! if (fromlen == inlen && STRNCMP(instr, p, inlen) == 0) - { - for (p = tostr; *p != NUL; p += tolen) - { ---- 17936,17954 ---- - } - - /* fromstr and tostr have to contain the same number of chars */ -! while (*in_str != NUL) - { - #ifdef FEAT_MBYTE - if (has_mbyte) - { -! inlen = (*mb_ptr2len)(in_str); -! cpstr = in_str; - cplen = inlen; - idx = 0; - for (p = fromstr; *p != NUL; p += fromlen) - { - fromlen = (*mb_ptr2len)(p); -! if (fromlen == inlen && STRNCMP(in_str, p, inlen) == 0) - { - for (p = tostr; *p != NUL; p += tolen) - { -*************** -*** 17967,17977 **** - ++idx; - } - -! if (first && cpstr == instr) - { - /* Check that fromstr and tostr have the same number of - * (multi-byte) characters. Done only once when a character -! * of instr doesn't appear in fromstr. */ - first = FALSE; - for (p = tostr; *p != NUL; p += tolen) - { ---- 17967,17977 ---- - ++idx; - } - -! if (first && cpstr == in_str) - { - /* Check that fromstr and tostr have the same number of - * (multi-byte) characters. Done only once when a character -! * of in_str doesn't appear in fromstr. */ - first = FALSE; - for (p = tostr; *p != NUL; p += tolen) - { -*************** -*** 17986,18003 **** - mch_memmove((char *)ga.ga_data + ga.ga_len, cpstr, (size_t)cplen); - ga.ga_len += cplen; - -! instr += inlen; - } - else - #endif - { - /* When not using multi-byte chars we can do it faster. */ -! p = vim_strchr(fromstr, *instr); - if (p != NULL) - ga_append(&ga, tostr[p - fromstr]); - else -! ga_append(&ga, *instr); -! ++instr; - } - } - ---- 17986,18003 ---- - mch_memmove((char *)ga.ga_data + ga.ga_len, cpstr, (size_t)cplen); - ga.ga_len += cplen; - -! in_str += inlen; - } - else - #endif - { - /* When not using multi-byte chars we can do it faster. */ -! p = vim_strchr(fromstr, *in_str); - if (p != NULL) - ga_append(&ga, tostr[p - fromstr]); - else -! ga_append(&ga, *in_str); -! ++in_str; - } - } - -*** ../vim-7.3.399/src/fold.c 2011-08-26 16:12:55.000000000 +0200 ---- src/fold.c 2012-01-10 22:01:26.000000000 +0100 -*************** -*** 1033,1042 **** - * Init the fold info in a new window. - */ - void -! foldInitWin(newwin) -! win_T *newwin; - { -! ga_init2(&newwin->w_folds, (int)sizeof(fold_T), 10); - } - - /* find_wl_entry() {{{2 */ ---- 1033,1042 ---- - * Init the fold info in a new window. - */ - void -! foldInitWin(new_win) -! win_T *new_win; - { -! ga_init2(&new_win->w_folds, (int)sizeof(fold_T), 10); - } - - /* find_wl_entry() {{{2 */ -*** ../vim-7.3.399/src/getchar.c 2011-12-23 14:54:01.000000000 +0100 ---- src/getchar.c 2012-01-10 22:02:30.000000000 +0100 -*************** -*** 418,429 **** - - /* - * Remove the contents of the stuff buffer and the mapped characters in the -! * typeahead buffer (used in case of an error). If 'typeahead' is true, - * flush all typeahead characters (used when interrupted by a CTRL-C). - */ - void -! flush_buffers(typeahead) -! int typeahead; - { - init_typebuf(); - ---- 418,429 ---- - - /* - * Remove the contents of the stuff buffer and the mapped characters in the -! * typeahead buffer (used in case of an error). If "flush_typeahead" is true, - * flush all typeahead characters (used when interrupted by a CTRL-C). - */ - void -! flush_buffers(flush_typeahead) -! int flush_typeahead; - { - init_typebuf(); - -*************** -*** 431,437 **** - while (read_stuff(TRUE) != NUL) - ; - -! if (typeahead) /* remove all typeahead */ - { - /* - * We have to get all characters, because we may delete the first part ---- 431,437 ---- - while (read_stuff(TRUE) != NUL) - ; - -! if (flush_typeahead) /* remove all typeahead */ - { - /* - * We have to get all characters, because we may delete the first part -*** ../vim-7.3.399/src/message.c 2011-12-30 14:14:16.000000000 +0100 ---- src/message.c 2012-01-10 22:03:56.000000000 +0100 -*************** -*** 2487,2493 **** - #ifdef FEAT_CON_DIALOG - int retval = FALSE; - #endif -! int scroll; - msgchunk_T *mp_last = NULL; - msgchunk_T *mp; - int i; ---- 2487,2493 ---- - #ifdef FEAT_CON_DIALOG - int retval = FALSE; - #endif -! int toscroll; - msgchunk_T *mp_last = NULL; - msgchunk_T *mp; - int i; -*************** -*** 2538,2586 **** - } - #endif - -! scroll = 0; - switch (c) - { - case BS: /* scroll one line back */ - case K_BS: - case 'k': - case K_UP: -! scroll = -1; - break; - - case CAR: /* one extra line */ - case NL: - case 'j': - case K_DOWN: -! scroll = 1; - break; - - case 'u': /* Up half a page */ -! scroll = -(Rows / 2); - break; - - case 'd': /* Down half a page */ -! scroll = Rows / 2; - break; - - case 'b': /* one page back */ - case K_PAGEUP: -! scroll = -(Rows - 1); - break; - - case ' ': /* one extra page */ - case 'f': - case K_PAGEDOWN: - case K_LEFTMOUSE: -! scroll = Rows - 1; - break; - - case 'g': /* all the way back to the start */ -! scroll = -999999; - break; - - case 'G': /* all the way to the end */ -! scroll = 999999; - lines_left = 999999; - break; - ---- 2538,2586 ---- - } - #endif - -! toscroll = 0; - switch (c) - { - case BS: /* scroll one line back */ - case K_BS: - case 'k': - case K_UP: -! toscroll = -1; - break; - - case CAR: /* one extra line */ - case NL: - case 'j': - case K_DOWN: -! toscroll = 1; - break; - - case 'u': /* Up half a page */ -! toscroll = -(Rows / 2); - break; - - case 'd': /* Down half a page */ -! toscroll = Rows / 2; - break; - - case 'b': /* one page back */ - case K_PAGEUP: -! toscroll = -(Rows - 1); - break; - - case ' ': /* one extra page */ - case 'f': - case K_PAGEDOWN: - case K_LEFTMOUSE: -! toscroll = Rows - 1; - break; - - case 'g': /* all the way back to the start */ -! toscroll = -999999; - break; - - case 'G': /* all the way to the end */ -! toscroll = 999999; - lines_left = 999999; - break; - -*************** -*** 2633,2641 **** - continue; - } - -! if (scroll != 0) - { -! if (scroll < 0) - { - /* go to start of last line */ - if (mp_last == NULL) ---- 2633,2641 ---- - continue; - } - -! if (toscroll != 0) - { -! if (toscroll < 0) - { - /* go to start of last line */ - if (mp_last == NULL) -*************** -*** 2653,2659 **** - if (mp != NULL && mp->sb_prev != NULL) - { - /* Find line to be displayed at top. */ -! for (i = 0; i > scroll; --i) - { - if (mp == NULL || mp->sb_prev == NULL) - break; ---- 2653,2659 ---- - if (mp != NULL && mp->sb_prev != NULL) - { - /* Find line to be displayed at top. */ -! for (i = 0; i > toscroll; --i) - { - if (mp == NULL || mp->sb_prev == NULL) - break; -*************** -*** 2664,2670 **** - mp_last = msg_sb_start(mp_last->sb_prev); - } - -! if (scroll == -1 && screen_ins_lines(0, 0, 1, - (int)Rows, NULL) == OK) - { - /* display line at top */ ---- 2664,2670 ---- - mp_last = msg_sb_start(mp_last->sb_prev); - } - -! if (toscroll == -1 && screen_ins_lines(0, 0, 1, - (int)Rows, NULL) == OK) - { - /* display line at top */ -*************** -*** 2680,2692 **** - ++msg_scrolled; - } - } -! scroll = 0; - } - } - else - { - /* First display any text that we scrolled back. */ -! while (scroll > 0 && mp_last != NULL) - { - /* scroll up, display line at bottom */ - msg_scroll_up(); ---- 2680,2692 ---- - ++msg_scrolled; - } - } -! toscroll = 0; - } - } - else - { - /* First display any text that we scrolled back. */ -! while (toscroll > 0 && mp_last != NULL) - { - /* scroll up, display line at bottom */ - msg_scroll_up(); -*************** -*** 2694,2704 **** - screen_fill((int)Rows - 2, (int)Rows - 1, 0, - (int)Columns, ' ', ' ', 0); - mp_last = disp_sb_line((int)Rows - 2, mp_last); -! --scroll; - } - } - -! if (scroll <= 0) - { - /* displayed the requested text, more prompt again */ - screen_fill((int)Rows - 1, (int)Rows, 0, ---- 2694,2704 ---- - screen_fill((int)Rows - 2, (int)Rows - 1, 0, - (int)Columns, ' ', ' ', 0); - mp_last = disp_sb_line((int)Rows - 2, mp_last); -! --toscroll; - } - } - -! if (toscroll <= 0) - { - /* displayed the requested text, more prompt again */ - screen_fill((int)Rows - 1, (int)Rows, 0, -*************** -*** 2708,2714 **** - } - - /* display more text, return to caller */ -! lines_left = scroll; - } - - break; ---- 2708,2714 ---- - } - - /* display more text, return to caller */ -! lines_left = toscroll; - } - - break; -*** ../vim-7.3.399/src/misc2.c 2012-01-10 16:28:41.000000000 +0100 ---- src/misc2.c 2012-01-10 22:04:25.000000000 +0100 -*************** -*** 1559,1565 **** - if (enc_utf8) - { - int c, uc; -! int nl; - char_u *s; - - c = utf_ptr2char(p); ---- 1559,1565 ---- - if (enc_utf8) - { - int c, uc; -! int newl; - char_u *s; - - c = utf_ptr2char(p); -*************** -*** 1568,1588 **** - /* Reallocate string when byte count changes. This is rare, - * thus it's OK to do another malloc()/free(). */ - l = utf_ptr2len(p); -! nl = utf_char2len(uc); -! if (nl != l) - { -! s = alloc((unsigned)STRLEN(res) + 1 + nl - l); - if (s == NULL) - break; - mch_memmove(s, res, p - res); -! STRCPY(s + (p - res) + nl, p + l); - p = s + (p - res); - vim_free(res); - res = s; - } - - utf_char2bytes(uc, p); -! p += nl; - } - else if (has_mbyte && (l = (*mb_ptr2len)(p)) > 1) - p += l; /* skip multi-byte character */ ---- 1568,1588 ---- - /* Reallocate string when byte count changes. This is rare, - * thus it's OK to do another malloc()/free(). */ - l = utf_ptr2len(p); -! newl = utf_char2len(uc); -! if (newl != l) - { -! s = alloc((unsigned)STRLEN(res) + 1 + newl - l); - if (s == NULL) - break; - mch_memmove(s, res, p - res); -! STRCPY(s + (p - res) + newl, p + l); - p = s + (p - res); - vim_free(res); - res = s; - } - - utf_char2bytes(uc, p); -! p += newl; - } - else if (has_mbyte && (l = (*mb_ptr2len)(p)) > 1) - p += l; /* skip multi-byte character */ -*** ../vim-7.3.399/src/move.c 2011-02-01 18:01:06.000000000 +0100 ---- src/move.c 2012-01-10 22:05:22.000000000 +0100 -*************** -*** 926,933 **** - * Also updates curwin->w_leftcol. - */ - void -! curs_columns(scroll) -! int scroll; /* when TRUE, may scroll horizontally */ - { - int diff; - int extra; /* offset for first screen line */ ---- 926,933 ---- - * Also updates curwin->w_leftcol. - */ - void -! curs_columns(may_scroll) -! int may_scroll; /* when TRUE, may scroll horizontally */ - { - int diff; - int extra; /* offset for first screen line */ -*************** -*** 1014,1020 **** - /* No line wrapping: compute curwin->w_leftcol if scrolling is on and line - * is not folded. - * If scrolling is off, curwin->w_leftcol is assumed to be 0 */ -! else if (scroll - #ifdef FEAT_FOLDING - && !curwin->w_cline_folded - #endif ---- 1014,1020 ---- - /* No line wrapping: compute curwin->w_leftcol if scrolling is on and line - * is not folded. - * If scrolling is off, curwin->w_leftcol is assumed to be 0 */ -! else if (may_scroll - #ifdef FEAT_FOLDING - && !curwin->w_cline_folded - #endif -*** ../vim-7.3.399/src/netbeans.c 2011-10-20 21:58:20.000000000 +0200 ---- src/netbeans.c 2012-01-10 22:16:26.000000000 +0100 -*************** -*** 1395,1401 **** - int cmdno, - char_u *args) /* points to space before arguments or NUL */ - { -! int doupdate = 0; - long off = 0; - nbbuf_T *buf = nb_get_buf(bufno); - static int skip = 0; ---- 1395,1401 ---- - int cmdno, - char_u *args) /* points to space before arguments or NUL */ - { -! int do_update = 0; - long off = 0; - nbbuf_T *buf = nb_get_buf(bufno); - static int skip = 0; -*************** -*** 1600,1606 **** - last.lnum, last.col)); - del_from_lnum = first.lnum; - del_to_lnum = last.lnum; -! doupdate = 1; - - /* Get the position of the first byte after the deleted - * section. "next" is NULL when deleting to the end of the ---- 1600,1606 ---- - last.lnum, last.col)); - del_from_lnum = first.lnum; - del_to_lnum = last.lnum; -! do_update = 1; - - /* Get the position of the first byte after the deleted - * section. "next" is NULL when deleting to the end of the -*************** -*** 1777,1783 **** - lnum = lnum_start; - - /* Loop over the "\n" separated lines of the argument. */ -! doupdate = 1; - while (*args != NUL) - { - nl = vim_strchr(args, '\n'); ---- 1777,1783 ---- - lnum = lnum_start; - - /* Loop over the "\n" separated lines of the argument. */ -! do_update = 1; - while (*args != NUL) - { - nl = vim_strchr(args, '\n'); -*************** -*** 1992,1998 **** - EMSG("E640: invalid buffer identifier in initDone"); - return FAIL; - } -! doupdate = 1; - buf->initDone = TRUE; - nb_set_curbuf(buf->bufp); - #if defined(FEAT_AUTOCMD) ---- 1992,1998 ---- - EMSG("E640: invalid buffer identifier in initDone"); - return FAIL; - } -! do_update = 1; - buf->initDone = TRUE; - nb_set_curbuf(buf->bufp); - #if defined(FEAT_AUTOCMD) -*************** -*** 2081,2087 **** - ECMD_HIDE + ECMD_OLDBUF, curwin); - buf->bufp = curbuf; - buf->initDone = TRUE; -! doupdate = 1; - #if defined(FEAT_TITLE) - maketitle(); - #endif ---- 2081,2087 ---- - ECMD_HIDE + ECMD_OLDBUF, curwin); - buf->bufp = curbuf; - buf->initDone = TRUE; -! do_update = 1; - #if defined(FEAT_TITLE) - maketitle(); - #endif -*************** -*** 2109,2115 **** - exarg.forceit = FALSE; - dosetvisible = TRUE; - goto_buffer(&exarg, DOBUF_FIRST, FORWARD, buf->bufp->b_fnum); -! doupdate = 1; - dosetvisible = FALSE; - - #ifdef FEAT_GUI ---- 2109,2115 ---- - exarg.forceit = FALSE; - dosetvisible = TRUE; - goto_buffer(&exarg, DOBUF_FIRST, FORWARD, buf->bufp->b_fnum); -! do_update = 1; - dosetvisible = FALSE; - - #ifdef FEAT_GUI -*************** -*** 2309,2315 **** - buf->bufp->b_fnum, TRUE); - buf->bufp = NULL; - buf->initDone = FALSE; -! doupdate = 1; - /* =====================================================================*/ - } - else if (streq((char *)cmd, "setStyle")) /* obsolete... */ ---- 2309,2315 ---- - buf->bufp->b_fnum, TRUE); - buf->bufp = NULL; - buf->initDone = FALSE; -! do_update = 1; - /* =====================================================================*/ - } - else if (streq((char *)cmd, "setStyle")) /* obsolete... */ -*************** -*** 2400,2406 **** - return FAIL; - } - -! doupdate = 1; - - cp = (char *)args; - serNum = strtol(cp, &cp, 10); ---- 2400,2406 ---- - return FAIL; - } - -! do_update = 1; - - cp = (char *)args; - serNum = strtol(cp, &cp, 10); -*************** -*** 2448,2454 **** - nbdebug((" invalid buffer identifier in removeAnno\n")); - return FAIL; - } -! doupdate = 1; - cp = (char *)args; - serNum = strtol(cp, &cp, 10); - args = (char_u *)cp; ---- 2448,2454 ---- - nbdebug((" invalid buffer identifier in removeAnno\n")); - return FAIL; - } -! do_update = 1; - cp = (char *)args; - serNum = strtol(cp, &cp, 10); - args = (char_u *)cp; -*************** -*** 2493,2499 **** - len = strtol(cp, NULL, 10); - args = (char_u *)cp; - pos = off2pos(buf->bufp, off); -! doupdate = 1; - if (!pos) - nbdebug((" no such start pos in %s, %ld\n", cmd, off)); - else ---- 2493,2499 ---- - len = strtol(cp, NULL, 10); - args = (char_u *)cp; - pos = off2pos(buf->bufp, off); -! do_update = 1; - if (!pos) - nbdebug((" no such start pos in %s, %ld\n", cmd, off)); - else -*************** -*** 2555,2561 **** - inAtomic = 0; - if (needupdate) - { -! doupdate = 1; - needupdate = 0; - } - /* =====================================================================*/ ---- 2555,2561 ---- - inAtomic = 0; - if (needupdate) - { -! do_update = 1; - needupdate = 0; - } - /* =====================================================================*/ -*************** -*** 2636,2653 **** - * Unrecognized command is ignored. - */ - } -! if (inAtomic && doupdate) - { - needupdate = 1; -! doupdate = 0; - } - - /* - * Is this needed? I moved the netbeans_Xt_connect() later during startup - * and it may no longer be necessary. If its not needed then needupdate -! * and doupdate can also be removed. - */ -! if (buf != NULL && buf->initDone && doupdate) - { - update_screen(NOT_VALID); - setcursor(); ---- 2636,2653 ---- - * Unrecognized command is ignored. - */ - } -! if (inAtomic && do_update) - { - needupdate = 1; -! do_update = 0; - } - - /* - * Is this needed? I moved the netbeans_Xt_connect() later during startup - * and it may no longer be necessary. If its not needed then needupdate -! * and do_update can also be removed. - */ -! if (buf != NULL && buf->initDone && do_update) - { - update_screen(NOT_VALID); - setcursor(); -*** ../vim-7.3.399/src/option.c 2012-01-04 19:34:32.000000000 +0100 ---- src/option.c 2012-01-10 22:06:03.000000000 +0100 -*************** -*** 8584,8591 **** - long_u flags; - { - /* Careful: P_RCLR and P_RALL are a combination of other P_ flags */ -! int clear = (flags & P_RCLR) == P_RCLR; -! int all = ((flags & P_RALL) == P_RALL || clear); - - #ifdef FEAT_WINDOWS - if ((flags & P_RSTAT) || all) /* mark all status lines dirty */ ---- 8584,8591 ---- - long_u flags; - { - /* Careful: P_RCLR and P_RALL are a combination of other P_ flags */ -! int doclear = (flags & P_RCLR) == P_RCLR; -! int all = ((flags & P_RALL) == P_RALL || doclear); - - #ifdef FEAT_WINDOWS - if ((flags & P_RSTAT) || all) /* mark all status lines dirty */ -*************** -*** 8596,8602 **** - changed_window_setting(); - if (flags & P_RBUF) - redraw_curbuf_later(NOT_VALID); -! if (clear) - redraw_all_later(CLEAR); - else if (all) - redraw_all_later(NOT_VALID); ---- 8596,8602 ---- - changed_window_setting(); - if (flags & P_RBUF) - redraw_curbuf_later(NOT_VALID); -! if (doclear) - redraw_all_later(CLEAR); - else if (all) - redraw_all_later(NOT_VALID); -*** ../vim-7.3.399/src/os_unix.c 2011-10-20 21:09:25.000000000 +0200 ---- src/os_unix.c 2012-01-10 21:48:49.000000000 +0100 -*************** -*** 3884,3890 **** - char_u *p_shcf_copy = NULL; - int i; - char_u *p; -- char_u *s; - int inquote; - int pty_master_fd = -1; /* for pty's */ - # ifdef FEAT_GUI ---- 3884,3889 ---- -*************** -*** 3963,3968 **** ---- 3962,3969 ---- - } - if (cmd != NULL) - { -+ char_u *s; -+ - if (extra_shell_arg != NULL) - argv[argc++] = (char *)extra_shell_arg; - -*************** -*** 4325,4331 **** - linenr_T lnum = curbuf->b_op_start.lnum; - int written = 0; - char_u *lp = ml_get(lnum); -- char_u *s; - size_t l; - - close(fromshell_fd); ---- 4326,4331 ---- -*************** -*** 4339,4345 **** - len = write(toshell_fd, "", (size_t)1); - else - { -! s = vim_strchr(lp + written, NL); - len = write(toshell_fd, (char *)lp + written, - s == NULL ? l - : (size_t)(s - (lp + written))); ---- 4339,4346 ---- - len = write(toshell_fd, "", (size_t)1); - else - { -! char_u *s = vim_strchr(lp + written, NL); -! - len = write(toshell_fd, (char *)lp + written, - s == NULL ? l - : (size_t)(s - (lp + written))); -*** ../vim-7.3.399/src/screen.c 2012-01-10 12:42:05.000000000 +0100 ---- src/screen.c 2012-01-10 22:06:51.000000000 +0100 -*************** -*** 7849,7863 **** - - /* - * screen_valid - allocate screen buffers if size changed -! * If "clear" is TRUE: clear screen if it has been resized. - * Returns TRUE if there is a valid screen to write to. - * Returns FALSE when starting up and screen not initialized yet. - */ - int -! screen_valid(clear) -! int clear; - { -! screenalloc(clear); /* allocate screen buffers if size changed */ - return (ScreenLines != NULL); - } - ---- 7849,7863 ---- - - /* - * screen_valid - allocate screen buffers if size changed -! * If "doclear" is TRUE: clear screen if it has been resized. - * Returns TRUE if there is a valid screen to write to. - * Returns FALSE when starting up and screen not initialized yet. - */ - int -! screen_valid(doclear) -! int doclear; - { -! screenalloc(doclear); /* allocate screen buffers if size changed */ - return (ScreenLines != NULL); - } - -*************** -*** 7872,7879 **** - * final size of the shell is needed. - */ - void -! screenalloc(clear) -! int clear; - { - int new_row, old_row; - #ifdef FEAT_GUI ---- 7872,7879 ---- - * final size of the shell is needed. - */ - void -! screenalloc(doclear) -! int doclear; - { - int new_row, old_row; - #ifdef FEAT_GUI -*************** -*** 8069,8075 **** - * (used when resizing the window at the "--more--" prompt or when - * executing an external command, for the GUI). - */ -! if (!clear) - { - (void)vim_memset(new_ScreenLines + new_row * Columns, - ' ', (size_t)Columns * sizeof(schar_T)); ---- 8069,8075 ---- - * (used when resizing the window at the "--more--" prompt or when - * executing an external command, for the GUI). - */ -! if (!doclear) - { - (void)vim_memset(new_ScreenLines + new_row * Columns, - ' ', (size_t)Columns * sizeof(schar_T)); -*************** -*** 8159,8165 **** - screen_Columns = Columns; - - must_redraw = CLEAR; /* need to clear the screen later */ -! if (clear) - screenclear2(); - - #ifdef FEAT_GUI ---- 8159,8165 ---- - screen_Columns = Columns; - - must_redraw = CLEAR; /* need to clear the screen later */ -! if (doclear) - screenclear2(); - - #ifdef FEAT_GUI -*** ../vim-7.3.399/src/search.c 2011-10-04 17:00:13.000000000 +0200 ---- src/search.c 2012-01-10 22:07:16.000000000 +0100 -*************** -*** 2402,2425 **** - { - if (vim_strchr(p, ';') != NULL) /* there may be comments */ - { -! int instr = FALSE; /* inside of string */ - - p = line; /* scan from start */ - while ((p = vim_strpbrk(p, (char_u *)"\";")) != NULL) - { - if (*p == '"') - { -! if (instr) - { - if (*(p - 1) != '\\') /* skip escaped quote */ -! instr = FALSE; - } - else if (p == line || ((p - line) >= 2 - /* skip #\" form */ - && *(p - 1) != '\\' && *(p - 2) != '#')) -! instr = TRUE; - } -! else if (!instr && ((p - line) < 2 - || (*(p - 1) != '\\' && *(p - 2) != '#'))) - break; /* found! */ - ++p; ---- 2402,2425 ---- - { - if (vim_strchr(p, ';') != NULL) /* there may be comments */ - { -! int in_str = FALSE; /* inside of string */ - - p = line; /* scan from start */ - while ((p = vim_strpbrk(p, (char_u *)"\";")) != NULL) - { - if (*p == '"') - { -! if (in_str) - { - if (*(p - 1) != '\\') /* skip escaped quote */ -! in_str = FALSE; - } - else if (p == line || ((p - line) >= 2 - /* skip #\" form */ - && *(p - 1) != '\\' && *(p - 2) != '#')) -! in_str = TRUE; - } -! else if (!in_str && ((p - line) < 2 - || (*(p - 1) != '\\' && *(p - 2) != '#'))) - break; /* found! */ - ++p; -*** ../vim-7.3.399/src/spell.c 2012-01-10 16:28:41.000000000 +0100 ---- src/spell.c 2012-01-10 22:09:23.000000000 +0100 -*************** -*** 5049,5055 **** - static int offset2bytes __ARGS((int nr, char_u *buf)); - static int bytes2offset __ARGS((char_u **pp)); - static void sug_write __ARGS((spellinfo_T *spin, char_u *fname)); -! static void mkspell __ARGS((int fcount, char_u **fnames, int ascii, int overwrite, int added_word)); - static void spell_message __ARGS((spellinfo_T *spin, char_u *str)); - static void init_spellfile __ARGS((void)); - ---- 5049,5055 ---- - static int offset2bytes __ARGS((int nr, char_u *buf)); - static int bytes2offset __ARGS((char_u **pp)); - static void sug_write __ARGS((spellinfo_T *spin, char_u *fname)); -! static void mkspell __ARGS((int fcount, char_u **fnames, int ascii, int over_write, int added_word)); - static void spell_message __ARGS((spellinfo_T *spin, char_u *str)); - static void init_spellfile __ARGS((void)); - -*************** -*** 9085,9095 **** - * and ".spl" is appended to make the output file name. - */ - static void -! mkspell(fcount, fnames, ascii, overwrite, added_word) - int fcount; - char_u **fnames; - int ascii; /* -ascii argument given */ -! int overwrite; /* overwrite existing output file */ - int added_word; /* invoked through "zg" */ - { - char_u *fname = NULL; ---- 9085,9095 ---- - * and ".spl" is appended to make the output file name. - */ - static void -! mkspell(fcount, fnames, ascii, over_write, added_word) - int fcount; - char_u **fnames; - int ascii; /* -ascii argument given */ -! int over_write; /* overwrite existing output file */ - int added_word; /* invoked through "zg" */ - { - char_u *fname = NULL; -*************** -*** 9173,9179 **** - { - /* Check for overwriting before doing things that may take a lot of - * time. */ -! if (!overwrite && mch_stat((char *)wfname, &st) >= 0) - { - EMSG(_(e_exists)); - goto theend; ---- 9173,9179 ---- - { - /* Check for overwriting before doing things that may take a lot of - * time. */ -! if (!over_write && mch_stat((char *)wfname, &st) >= 0) - { - EMSG(_(e_exists)); - goto theend; -*** ../vim-7.3.399/src/syntax.c 2011-06-19 04:54:17.000000000 +0200 ---- src/syntax.c 2012-01-10 22:10:23.000000000 +0100 -*************** -*** 4006,4022 **** - } - - static void -! syn_list_flags(nl, flags, attr) -! struct name_list *nl; - int flags; - int attr; - { - int i; - -! for (i = 0; nl[i].flag != 0; ++i) -! if (flags & nl[i].flag) - { -! msg_puts_attr((char_u *)nl[i].name, attr); - msg_putchar(' '); - } - } ---- 4006,4022 ---- - } - - static void -! syn_list_flags(nlist, flags, attr) -! struct name_list *nlist; - int flags; - int attr; - { - int i; - -! for (i = 0; nlist[i].flag != 0; ++i) -! if (flags & nlist[i].flag) - { -! msg_puts_attr((char_u *)nlist[i].name, attr); - msg_putchar(' '); - } - } -*** ../vim-7.3.399/src/tag.c 2011-12-14 14:15:12.000000000 +0100 ---- src/tag.c 2012-01-10 21:51:05.000000000 +0100 -*************** -*** 1353,1359 **** - int match_count = 0; /* number of matches found */ - char_u **matches; - int mtt; -- int len; - int help_save; - #ifdef FEAT_MULTI_LANG - int help_pri = 0; ---- 1353,1358 ---- -*************** -*** 2235,2240 **** ---- 2234,2241 ---- - */ - if (ga_grow(&ga_match[mtt], 1) == OK) - { -+ int len; -+ - if (help_only) - { - #ifdef FEAT_MULTI_LANG -*** ../vim-7.3.399/src/window.c 2011-12-30 15:01:55.000000000 +0100 ---- src/window.c 2012-01-10 22:11:41.000000000 +0100 -*************** -*** 683,701 **** - } - - /* -! * When "newwin" is NULL: split the current window in two. -! * When "newwin" is not NULL: insert this window at the far - * top/left/right/bottom. - * return FAIL for failure, OK otherwise - */ - int -! win_split_ins(size, flags, newwin, dir) - int size; - int flags; -! win_T *newwin; - int dir; - { -! win_T *wp = newwin; - win_T *oldwin; - int new_size = size; - int i; ---- 683,701 ---- - } - - /* -! * When "new_wp" is NULL: split the current window in two. -! * When "new_wp" is not NULL: insert this window at the far - * top/left/right/bottom. - * return FAIL for failure, OK otherwise - */ - int -! win_split_ins(size, flags, new_wp, dir) - int size; - int flags; -! win_T *new_wp; - int dir; - { -! win_T *wp = new_wp; - win_T *oldwin; - int new_size = size; - int i; -*************** -*** 718,724 **** - /* add a status line when p_ls == 1 and splitting the first window */ - if (lastwin == firstwin && p_ls == 1 && oldwin->w_status_height == 0) - { -! if (oldwin->w_height <= p_wmh && newwin == NULL) - { - EMSG(_(e_noroom)); - return FAIL; ---- 718,724 ---- - /* add a status line when p_ls == 1 and splitting the first window */ - if (lastwin == firstwin && p_ls == 1 && oldwin->w_status_height == 0) - { -! if (oldwin->w_height <= p_wmh && new_wp == NULL) - { - EMSG(_(e_noroom)); - return FAIL; -*************** -*** 751,757 **** - } - else - available = oldwin->w_width; -! if (available < needed && newwin == NULL) - { - EMSG(_(e_noroom)); - return FAIL; ---- 751,757 ---- - } - else - available = oldwin->w_width; -! if (available < needed && new_wp == NULL) - { - EMSG(_(e_noroom)); - return FAIL; -*************** -*** 815,821 **** - available = oldwin->w_height; - needed += p_wmh; - } -! if (available < needed && newwin == NULL) - { - EMSG(_(e_noroom)); - return FAIL; ---- 815,821 ---- - available = oldwin->w_height; - needed += p_wmh; - } -! if (available < needed && new_wp == NULL) - { - EMSG(_(e_noroom)); - return FAIL; -*************** -*** 888,907 **** - p_sb)))) - { - /* new window below/right of current one */ -! if (newwin == NULL) - wp = win_alloc(oldwin, FALSE); - else - win_append(oldwin, wp); - } - else - { -! if (newwin == NULL) - wp = win_alloc(oldwin->w_prev, FALSE); - else - win_append(oldwin->w_prev, wp); - } - -! if (newwin == NULL) - { - if (wp == NULL) - return FAIL; ---- 888,907 ---- - p_sb)))) - { - /* new window below/right of current one */ -! if (new_wp == NULL) - wp = win_alloc(oldwin, FALSE); - else - win_append(oldwin, wp); - } - else - { -! if (new_wp == NULL) - wp = win_alloc(oldwin->w_prev, FALSE); - else - win_append(oldwin->w_prev, wp); - } - -! if (new_wp == NULL) - { - if (wp == NULL) - return FAIL; -*************** -*** 972,981 **** - frp->fr_parent = curfrp; - } - -! if (newwin == NULL) - frp = wp->w_frame; - else -! frp = newwin->w_frame; - frp->fr_parent = curfrp->fr_parent; - - /* Insert the new frame at the right place in the frame list. */ ---- 972,981 ---- - frp->fr_parent = curfrp; - } - -! if (new_wp == NULL) - frp = wp->w_frame; - else -! frp = new_wp->w_frame; - frp->fr_parent = curfrp->fr_parent; - - /* Insert the new frame at the right place in the frame list. */ -*************** -*** 4284,4302 **** - win_T *after UNUSED; - int hidden UNUSED; - { -! win_T *newwin; - - /* - * allocate window structure and linesizes arrays - */ -! newwin = (win_T *)alloc_clear((unsigned)sizeof(win_T)); -! if (newwin != NULL && win_alloc_lines(newwin) == FAIL) - { -! vim_free(newwin); -! newwin = NULL; - } - -! if (newwin != NULL) - { - #ifdef FEAT_AUTOCMD - /* Don't execute autocommands while the window is not properly ---- 4284,4302 ---- - win_T *after UNUSED; - int hidden UNUSED; - { -! win_T *new_wp; - - /* - * allocate window structure and linesizes arrays - */ -! new_wp = (win_T *)alloc_clear((unsigned)sizeof(win_T)); -! if (new_wp != NULL && win_alloc_lines(new_wp) == FAIL) - { -! vim_free(new_wp); -! new_wp = NULL; - } - -! if (new_wp != NULL) - { - #ifdef FEAT_AUTOCMD - /* Don't execute autocommands while the window is not properly -*************** -*** 4309,4361 **** - */ - #ifdef FEAT_WINDOWS - if (!hidden) -! win_append(after, newwin); - #endif - #ifdef FEAT_VERTSPLIT -! newwin->w_wincol = 0; -! newwin->w_width = Columns; - #endif - - /* position the display and the cursor at the top of the file. */ -! newwin->w_topline = 1; - #ifdef FEAT_DIFF -! newwin->w_topfill = 0; - #endif -! newwin->w_botline = 2; -! newwin->w_cursor.lnum = 1; - #ifdef FEAT_SCROLLBIND -! newwin->w_scbind_pos = 1; - #endif - - /* We won't calculate w_fraction until resizing the window */ -! newwin->w_fraction = 0; -! newwin->w_prev_fraction_row = -1; - - #ifdef FEAT_GUI - if (gui.in_use) - { -! gui_create_scrollbar(&newwin->w_scrollbars[SBAR_LEFT], -! SBAR_LEFT, newwin); -! gui_create_scrollbar(&newwin->w_scrollbars[SBAR_RIGHT], -! SBAR_RIGHT, newwin); - } - #endif - #ifdef FEAT_EVAL - /* init w: variables */ -! init_var_dict(&newwin->w_vars, &newwin->w_winvar); - #endif - #ifdef FEAT_FOLDING -! foldInitWin(newwin); - #endif - #ifdef FEAT_AUTOCMD - unblock_autocmds(); - #endif - #ifdef FEAT_SEARCH_EXTRA -! newwin->w_match_head = NULL; -! newwin->w_next_match_id = 4; - #endif - } -! return newwin; - } - - #if defined(FEAT_WINDOWS) || defined(PROTO) ---- 4309,4361 ---- - */ - #ifdef FEAT_WINDOWS - if (!hidden) -! win_append(after, new_wp); - #endif - #ifdef FEAT_VERTSPLIT -! new_wp->w_wincol = 0; -! new_wp->w_width = Columns; - #endif - - /* position the display and the cursor at the top of the file. */ -! new_wp->w_topline = 1; - #ifdef FEAT_DIFF -! new_wp->w_topfill = 0; - #endif -! new_wp->w_botline = 2; -! new_wp->w_cursor.lnum = 1; - #ifdef FEAT_SCROLLBIND -! new_wp->w_scbind_pos = 1; - #endif - - /* We won't calculate w_fraction until resizing the window */ -! new_wp->w_fraction = 0; -! new_wp->w_prev_fraction_row = -1; - - #ifdef FEAT_GUI - if (gui.in_use) - { -! gui_create_scrollbar(&new_wp->w_scrollbars[SBAR_LEFT], -! SBAR_LEFT, new_wp); -! gui_create_scrollbar(&new_wp->w_scrollbars[SBAR_RIGHT], -! SBAR_RIGHT, new_wp); - } - #endif - #ifdef FEAT_EVAL - /* init w: variables */ -! init_var_dict(&new_wp->w_vars, &new_wp->w_winvar); - #endif - #ifdef FEAT_FOLDING -! foldInitWin(new_wp); - #endif - #ifdef FEAT_AUTOCMD - unblock_autocmds(); - #endif - #ifdef FEAT_SEARCH_EXTRA -! new_wp->w_match_head = NULL; -! new_wp->w_next_match_id = 4; - #endif - } -! return new_wp; - } - - #if defined(FEAT_WINDOWS) || defined(PROTO) -*** ../vim-7.3.399/src/version.c 2012-01-10 18:37:53.000000000 +0100 ---- src/version.c 2012-01-10 22:23:10.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 400, - /**/ - --- -A parent can be arrested if his child cannot hold back a burp during a church -service. - [real standing law in Nebraska, United States of America] - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.401 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.401 -Problem: A couple more shadowed variables. -Solution: Rename the variables. -Files: src/netbeans.c - - -*** ../vim-7.3.400/src/netbeans.c 2012-01-10 22:26:12.000000000 +0100 ---- src/netbeans.c 2012-01-10 22:30:17.000000000 +0100 -*************** -*** 443,449 **** - FILE *fp; - char_u buf[BUFSIZ]; - char_u *lp; -! char_u *nl; - #ifdef UNIX - struct stat st; - ---- 443,449 ---- - FILE *fp; - char_u buf[BUFSIZ]; - char_u *lp; -! char_u *nlp; - #ifdef UNIX - struct stat st; - -*************** -*** 472,479 **** - /* Read the file. There should be one of each parameter */ - while ((lp = (char_u *)fgets((char *)buf, BUFSIZ, fp)) != NULL) - { -! if ((nl = vim_strchr(lp, '\n')) != NULL) -! *nl = 0; /* strip off the trailing newline */ - - if (STRNCMP(lp, "host=", 5) == 0) - { ---- 472,479 ---- - /* Read the file. There should be one of each parameter */ - while ((lp = (char_u *)fgets((char *)buf, BUFSIZ, fp)) != NULL) - { -! if ((nlp = vim_strchr(lp, '\n')) != NULL) -! *nlp = 0; /* strip off the trailing newline */ - - if (STRNCMP(lp, "host=", 5) == 0) - { -*************** -*** 1740,1746 **** - int added = 0; - int oldFire = netbeansFireChanges; - int old_b_changed; -! char_u *nl; - linenr_T lnum; - linenr_T lnum_start; - pos_T *pos; ---- 1740,1746 ---- - int added = 0; - int oldFire = netbeansFireChanges; - int old_b_changed; -! char_u *nlp; - linenr_T lnum; - linenr_T lnum_start; - pos_T *pos; -*************** -*** 1780,1787 **** - do_update = 1; - while (*args != NUL) - { -! nl = vim_strchr(args, '\n'); -! if (nl == NULL) - { - /* Incomplete line, probably truncated. Next "insert" - * command should append to this one. */ ---- 1780,1787 ---- - do_update = 1; - while (*args != NUL) - { -! nlp = vim_strchr(args, '\n'); -! if (nlp == NULL) - { - /* Incomplete line, probably truncated. Next "insert" - * command should append to this one. */ -*************** -*** 1789,1801 **** - } - else - { -! len = nl - args; - - /* - * We need to detect EOL style, because the commands - * use a character offset. - */ -! if (nl > args && nl[-1] == '\r') - { - ff_detected = EOL_DOS; - --len; ---- 1789,1801 ---- - } - else - { -! len = nlp - args; - - /* - * We need to detect EOL style, because the commands - * use a character offset. - */ -! if (nlp > args && nlp[-1] == '\r') - { - ff_detected = EOL_DOS; - --len; -*************** -*** 1814,1820 **** - - /* Insert halfway a line. For simplicity we assume we - * need to append to the line. */ -! newline = alloc_check((unsigned)(STRLEN(oldline) + len + 1)); - if (newline != NULL) - { - STRCPY(newline, oldline); ---- 1814,1821 ---- - - /* Insert halfway a line. For simplicity we assume we - * need to append to the line. */ -! newline = alloc_check( -! (unsigned)(STRLEN(oldline) + len + 1)); - if (newline != NULL) - { - STRCPY(newline, oldline); -*************** -*** 1826,1839 **** - { - /* Append a new line. Not that we always do this, - * also when the text doesn't end in a "\n". */ -! ml_append((linenr_T)(lnum - 1), args, (colnr_T)(len + 1), FALSE); - ++added; - } - -! if (nl == NULL) - break; - ++lnum; -! args = nl + 1; - } - - /* Adjust the marks below the inserted lines. */ ---- 1827,1841 ---- - { - /* Append a new line. Not that we always do this, - * also when the text doesn't end in a "\n". */ -! ml_append((linenr_T)(lnum - 1), args, -! (colnr_T)(len + 1), FALSE); - ++added; - } - -! if (nlp == NULL) - break; - ++lnum; -! args = nlp + 1; - } - - /* Adjust the marks below the inserted lines. */ -*** ../vim-7.3.400/src/version.c 2012-01-10 22:26:12.000000000 +0100 ---- src/version.c 2012-01-10 22:30:47.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 401, - /**/ - --- -So when I saw the post to comp.editors, I rushed over to the FTP site to -grab it. So I yank apart the tarball, light x candles, where x= the -vim version multiplied by the md5sum of the source divided by the MAC of -my NIC (8A3FA78155A8A1D346C3C4A), put on black robes, dim the lights, -wave a dead chicken over the hard drive, and summon the power of GNU GCC -with the magic words "make config ; make!". - [Jason Spence, compiling Vim 5.0] - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.402 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.402 -Problem: When jumping to the first error a line of the buffer is sometimes - redrawn on top of the list of errors. -Solution: Do not call update_topline_redraw() if the display was scrolled - up. -Files: src/quickfix.c - - -*** ../vim-7.3.401/src/quickfix.c 2012-01-10 17:13:48.000000000 +0100 ---- src/quickfix.c 2012-01-20 13:13:25.000000000 +0100 -*************** -*** 1842,1849 **** - #endif - if (print_message) - { -! /* Update the screen before showing the message */ -! update_topline_redraw(); - sprintf((char *)IObuff, _("(%d of %d)%s%s: "), qf_index, - qi->qf_lists[qi->qf_curlist].qf_count, - qf_ptr->qf_cleared ? _(" (line deleted)") : "", ---- 1842,1851 ---- - #endif - if (print_message) - { -! /* Update the screen before showing the message, unless the screen -! * scrolled up. */ -! if (!msg_scrolled) -! update_topline_redraw(); - sprintf((char *)IObuff, _("(%d of %d)%s%s: "), qf_index, - qi->qf_lists[qi->qf_curlist].qf_count, - qf_ptr->qf_cleared ? _(" (line deleted)") : "", -*** ../vim-7.3.401/src/version.c 2012-01-10 22:31:26.000000000 +0100 ---- src/version.c 2012-01-20 13:17:50.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 402, - /**/ - --- -If all you have is a hammer, everything looks like a nail. -When your hammer is C++, everything begins to look like a thumb. - -- Steve Hoflich, comp.lang.c++ - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.403 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.403 -Problem: ":helpgrep" does not trigger QuickFixCmd* autocommands. -Solution: Trigger the autocommands. (Christian Brabandt) -Files: src/quickfix.c - - -*** ../vim-7.3.402/src/quickfix.c 2012-01-20 13:28:28.000000000 +0100 ---- src/quickfix.c 2012-01-20 13:37:10.000000000 +0100 -*************** -*** 3878,3893 **** - qf_info_T *qi = &ql_info; - int new_qi = FALSE; - win_T *wp; -! -! /* Make 'cpoptions' empty, the 'l' flag should not be used here. */ -! save_cpo = p_cpo; -! p_cpo = empty_option; - - #ifdef FEAT_MULTI_LANG - /* Check for a specified language */ - lang = check_help_lang(eap->arg); - #endif - - if (eap->cmdidx == CMD_lhelpgrep) - { - /* Find an existing help window */ ---- 3878,3912 ---- - qf_info_T *qi = &ql_info; - int new_qi = FALSE; - win_T *wp; -! #ifdef FEAT_AUTOCMD -! char_u *au_name = NULL; -! #endif - - #ifdef FEAT_MULTI_LANG - /* Check for a specified language */ - lang = check_help_lang(eap->arg); - #endif - -+ #ifdef FEAT_AUTOCMD -+ switch (eap->cmdidx) -+ { -+ case CMD_helpgrep: au_name = (char_u *)"helpgrep"; break; -+ case CMD_lhelpgrep: au_name = (char_u *)"lhelpgrep"; break; -+ default: break; -+ } -+ if (au_name != NULL) -+ { -+ apply_autocmds(EVENT_QUICKFIXCMDPRE, au_name, -+ curbuf->b_fname, TRUE, curbuf); -+ if (did_throw || force_abort) -+ return; -+ } -+ #endif -+ -+ /* Make 'cpoptions' empty, the 'l' flag should not be used here. */ -+ save_cpo = p_cpo; -+ p_cpo = empty_option; -+ - if (eap->cmdidx == CMD_lhelpgrep) - { - /* Find an existing help window */ -*************** -*** 4036,4041 **** ---- 4055,4071 ---- - qf_update_buffer(qi); - #endif - -+ #ifdef FEAT_AUTOCMD -+ if (au_name != NULL) -+ { -+ apply_autocmds(EVENT_QUICKFIXCMDPOST, au_name, -+ curbuf->b_fname, TRUE, curbuf); -+ if (!new_qi && qi != &ql_info && qf_find_buf(qi) == NULL) -+ /* autocommands made "qi" invalid */ -+ return; -+ } -+ #endif -+ - /* Jump to first match. */ - if (qi->qf_lists[qi->qf_curlist].qf_count > 0) - qf_jump(qi, 0, 0, FALSE); -*** ../vim-7.3.402/src/version.c 2012-01-20 13:28:28.000000000 +0100 ---- src/version.c 2012-01-20 13:30:37.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 403, - /**/ - --- -Looking at Perl through Lisp glasses, Perl looks atrocious. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.404 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.404 -Problem: When a complete function uses refresh "always" redo will not work - properly. -Solution: Do not reset compl_leader when compl_opt_refresh_always is set. - (Yasuhiro Matsumoto) -Files: src/edit.c - - -*** ../vim-7.3.403/src/edit.c 2012-01-10 22:26:12.000000000 +0100 ---- src/edit.c 2012-01-20 14:26:06.000000000 +0100 -*************** -*** 3465,3475 **** - if (ins_compl_need_restart()) - ins_compl_restart(); - -! vim_free(compl_leader); -! compl_leader = vim_strnsave(ml_get_curline() + compl_col, - (int)(curwin->w_cursor.col - compl_col)); -! if (compl_leader != NULL) -! ins_compl_new_leader(); - } - - /* ---- 3465,3481 ---- - if (ins_compl_need_restart()) - ins_compl_restart(); - -! /* When 'always' is set, don't reset compl_leader. While completing, -! * cursor don't point original position, changing compl_leader would -! * break redo. */ -! if (!compl_opt_refresh_always) -! { -! vim_free(compl_leader); -! compl_leader = vim_strnsave(ml_get_curline() + compl_col, - (int)(curwin->w_cursor.col - compl_col)); -! if (compl_leader != NULL) -! ins_compl_new_leader(); -! } - } - - /* -*************** -*** 4554,4559 **** ---- 4560,4570 ---- - int found_end = FALSE; - int advance; - -+ /* When user complete function return -1 for findstart which is next -+ * time of 'always', compl_shown_match become NULL. */ -+ if (compl_shown_match == NULL) -+ return -1; -+ - if (compl_leader != NULL - && (compl_shown_match->cp_flags & ORIGINAL_TEXT) == 0) - { -*** ../vim-7.3.403/src/version.c 2012-01-20 13:39:03.000000000 +0100 ---- src/version.c 2012-01-20 14:31:26.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 404, - /**/ - --- -ARTHUR: I've said I'm sorry about the old woman, but from the behind you - looked ... -DENNIS: What I object to is that you automatically treat me like an inferior... -ARTHUR: Well ... I AM king. - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.405 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.405 -Problem: When xterm gets back the function keys it may delete the urxvt - mouse termcap code. -Solution: Check for the whole code, not just the start. (Egmont Koblinger) -Files: src/keymap.h, src/misc2.c, src/term.c - - -*** ../vim-7.3.404/src/keymap.h 2011-10-20 21:09:25.000000000 +0200 ---- src/keymap.h 2012-01-20 16:35:43.000000000 +0100 -*************** -*** 411,416 **** ---- 411,417 ---- - #define K_DEC_MOUSE TERMCAP2KEY(KS_DEC_MOUSE, KE_FILLER) - #define K_JSBTERM_MOUSE TERMCAP2KEY(KS_JSBTERM_MOUSE, KE_FILLER) - #define K_PTERM_MOUSE TERMCAP2KEY(KS_PTERM_MOUSE, KE_FILLER) -+ #define K_URXVT_MOUSE TERMCAP2KEY(KS_URXVT_MOUSE, KE_FILLER) - - #define K_SELECT TERMCAP2KEY(KS_SELECT, KE_FILLER) - #define K_TEAROFF TERMCAP2KEY(KS_TEAROFF, KE_FILLER) -*** ../vim-7.3.404/src/misc2.c 2012-01-10 22:26:12.000000000 +0100 ---- src/misc2.c 2012-01-20 16:38:27.000000000 +0100 -*************** -*** 2416,2425 **** ---- 2416,2436 ---- - {'<', (char_u *)"lt"}, - - {K_MOUSE, (char_u *)"Mouse"}, -+ #ifdef FEAT_MOUSE_NET - {K_NETTERM_MOUSE, (char_u *)"NetMouse"}, -+ #endif -+ #ifdef FEAT_MOUSE_DEC - {K_DEC_MOUSE, (char_u *)"DecMouse"}, -+ #endif -+ #ifdef FEAT_MOUSE_JSB - {K_JSBTERM_MOUSE, (char_u *)"JsbMouse"}, -+ #endif -+ #ifdef FEAT_MOUSE_PTERM - {K_PTERM_MOUSE, (char_u *)"PtermMouse"}, -+ #endif -+ #ifdef FEAT_MOUSE_URXVT -+ {K_URXVT_MOUSE, (char_u *)"UrxvtMouse"}, -+ #endif - {K_LEFTMOUSE, (char_u *)"LeftMouse"}, - {K_LEFTMOUSE_NM, (char_u *)"LeftMouseNM"}, - {K_LEFTDRAG, (char_u *)"LeftDrag"}, -*** ../vim-7.3.404/src/term.c 2011-12-01 20:59:16.000000000 +0100 ---- src/term.c 2012-01-20 16:50:41.000000000 +0100 -*************** -*** 5252,5263 **** - char_u *src; - { - int i; -! int slen; - - for (i = 0; i < tc_len; ++i) - { -! slen = termcodes[i].len; -! if (slen > 1 && STRNCMP(termcodes[i].code, src, (size_t)slen) == 0) - return i; - } - return -1; ---- 5252,5263 ---- - char_u *src; - { - int i; -! int slen = STRLEN(src); - - for (i = 0; i < tc_len; ++i) - { -! if (slen == termcodes[i].len -! && STRNCMP(termcodes[i].code, src, (size_t)slen) == 0) - return i; - } - return -1; -*** ../vim-7.3.404/src/version.c 2012-01-20 14:32:22.000000000 +0100 ---- src/version.c 2012-01-20 16:59:47.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 405, - /**/ - --- -"The future's already arrived - it's just not evenly distributed yet." - -- William Gibson - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.406 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.406 -Problem: Multi-byte characters in b:browsefilter are not handled correctly. -Solution: First use convert_filter() normally and then convert to wide - characters. (Taro Muraoka) -Files: src/gui_w48.c - - -*** ../vim-7.3.405/src/gui_w48.c 2011-09-07 18:58:24.000000000 +0200 ---- src/gui_w48.c 2012-01-20 17:54:19.000000000 +0100 -*************** -*** 328,333 **** ---- 328,337 ---- - static LRESULT _OnImeNotify(HWND hWnd, DWORD dwCommand, DWORD dwData); - #endif - -+ #if defined(FEAT_MBYTE) && defined(WIN3264) -+ static char_u *convert_filter(char_u *s); -+ #endif -+ - #ifdef DEBUG_PRINT_ERROR - /* - * Print out the last Windows error message -*************** -*** 3275,3302 **** - - # if defined(FEAT_MBYTE) && defined(WIN3264) - /* -! * Wide version of convert_filter(). Keep in sync! - */ - static WCHAR * - convert_filterW(char_u *s) - { -! WCHAR *res; -! unsigned s_len = (unsigned)STRLEN(s); -! unsigned i; - -! res = (WCHAR *)alloc((s_len + 3) * sizeof(WCHAR)); -! if (res != NULL) -! { -! for (i = 0; i < s_len; ++i) -! if (s[i] == '\t' || s[i] == '\n') -! res[i] = '\0'; -! else -! res[i] = s[i]; -! res[s_len] = NUL; -! /* Add two extra NULs to make sure it's properly terminated. */ -! res[s_len + 1] = NUL; -! res[s_len + 2] = NUL; -! } - return res; - } - ---- 3279,3298 ---- - - # if defined(FEAT_MBYTE) && defined(WIN3264) - /* -! * Wide version of convert_filter(). - */ - static WCHAR * - convert_filterW(char_u *s) - { -! char_u *tmp; -! int len; - -! tmp = convert_filter(s); -! if (tmp == NULL) -! return NULL; -! len = (int)STRLEN(s) + 3; -! res = enc_to_utf16(tmp, &len); -! vim_free(tmp); - return res; - } - -*** ../vim-7.3.405/src/version.c 2012-01-20 17:15:47.000000000 +0100 ---- src/version.c 2012-01-20 17:57:09.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 406, - /**/ - --- -DENNIS: Look, strange women lying on their backs in ponds handing out - swords ... that's no basis for a system of government. Supreme - executive power derives from a mandate from the masses, not from some - farcical aquatic ceremony. - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.407 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.407 -Problem: ":12verbose call F()" may duplicate text while trying to truncate. - (Thinca) -Solution: Only truncate when there is not enough room. Also check the byte - length of the buffer. -Files: src/buffer.c, src/eval.c, src/ex_getln.c, src/message.c, - src/proto/message.pro - - -*** ../vim-7.3.406/src/buffer.c 2011-12-30 13:39:04.000000000 +0100 ---- src/buffer.c 2012-01-20 18:37:43.000000000 +0100 -*************** -*** 3258,3266 **** - if (maxlen > 0) - { - /* make it shorter by removing a bit in the middle */ -! len = vim_strsize(buf); -! if (len > maxlen) -! trunc_string(buf, buf, maxlen); - } - } - } ---- 3258,3265 ---- - if (maxlen > 0) - { - /* make it shorter by removing a bit in the middle */ -! if (vim_strsize(buf) > maxlen) -! trunc_string(buf, buf, maxlen, IOSIZE); - } - } - } -*** ../vim-7.3.406/src/eval.c 2012-01-10 22:26:12.000000000 +0100 ---- src/eval.c 2012-01-20 20:43:32.000000000 +0100 -*************** -*** 22163,22170 **** - s = tv2string(&argvars[i], &tofree, numbuf2, 0); - if (s != NULL) - { -! trunc_string(s, buf, MSG_BUF_CLEN); -! msg_puts(buf); - vim_free(tofree); - } - } ---- 22163,22174 ---- - s = tv2string(&argvars[i], &tofree, numbuf2, 0); - if (s != NULL) - { -! if (vim_strsize(s) > MSG_BUF_CLEN) -! { -! trunc_string(s, buf, MSG_BUF_CLEN, MSG_BUF_LEN); -! s = buf; -! } -! msg_puts(s); - vim_free(tofree); - } - } -*************** -*** 22252,22259 **** - s = tv2string(fc->rettv, &tofree, numbuf2, 0); - if (s != NULL) - { -! trunc_string(s, buf, MSG_BUF_CLEN); -! smsg((char_u *)_("%s returning %s"), sourcing_name, buf); - vim_free(tofree); - } - } ---- 22256,22267 ---- - s = tv2string(fc->rettv, &tofree, numbuf2, 0); - if (s != NULL) - { -! if (vim_strsize(s) > MSG_BUF_CLEN) -! { -! trunc_string(s, buf, MSG_BUF_CLEN, MSG_BUF_LEN); -! s = buf; -! } -! smsg((char_u *)_("%s returning %s"), sourcing_name, s); - vim_free(tofree); - } - } -*** ../vim-7.3.406/src/ex_getln.c 2011-12-08 18:44:47.000000000 +0100 ---- src/ex_getln.c 2012-01-20 18:40:46.000000000 +0100 -*************** -*** 5923,5929 **** - hist[i].hisnum); - if (vim_strsize(hist[i].hisstr) > (int)Columns - 10) - trunc_string(hist[i].hisstr, IObuff + STRLEN(IObuff), -! (int)Columns - 10); - else - STRCAT(IObuff, hist[i].hisstr); - msg_outtrans(IObuff); ---- 5923,5929 ---- - hist[i].hisnum); - if (vim_strsize(hist[i].hisstr) > (int)Columns - 10) - trunc_string(hist[i].hisstr, IObuff + STRLEN(IObuff), -! (int)Columns - 10, IOSIZE - STRLEN(IObuff)); - else - STRCAT(IObuff, hist[i].hisstr); - msg_outtrans(IObuff); -*** ../vim-7.3.406/src/message.c 2012-01-10 22:26:12.000000000 +0100 ---- src/message.c 2012-01-20 20:38:29.000000000 +0100 -*************** -*** 222,236 **** - if (enc_utf8) - /* may have up to 18 bytes per cell (6 per char, up to two - * composing chars) */ -! buf = alloc((room + 2) * 18); - else if (enc_dbcs == DBCS_JPNU) - /* may have up to 2 bytes per cell for euc-jp */ -! buf = alloc((room + 2) * 2); - else - #endif -! buf = alloc(room + 2); - if (buf != NULL) -! trunc_string(s, buf, room); - } - } - return buf; ---- 222,237 ---- - if (enc_utf8) - /* may have up to 18 bytes per cell (6 per char, up to two - * composing chars) */ -! len = (room + 2) * 18; - else if (enc_dbcs == DBCS_JPNU) - /* may have up to 2 bytes per cell for euc-jp */ -! len = (room + 2) * 2; - else - #endif -! len = room + 2; -! buf = alloc(len); - if (buf != NULL) -! trunc_string(s, buf, room, len); - } - } - return buf; -*************** -*** 241,250 **** - * "s" and "buf" may be equal. - */ - void -! trunc_string(s, buf, room) - char_u *s; - char_u *buf; - int room; - { - int half; - int len; ---- 242,252 ---- - * "s" and "buf" may be equal. - */ - void -! trunc_string(s, buf, room, buflen) - char_u *s; - char_u *buf; - int room; -+ int buflen; - { - int half; - int len; -*************** -*** 257,263 **** - len = 0; - - /* First part: Start of the string. */ -! for (e = 0; len < half; ++e) - { - if (s[e] == NUL) - { ---- 259,265 ---- - len = 0; - - /* First part: Start of the string. */ -! for (e = 0; len < half && e < buflen; ++e) - { - if (s[e] == NUL) - { -*************** -*** 274,280 **** - if (has_mbyte) - for (n = (*mb_ptr2len)(s + e); --n > 0; ) - { -! ++e; - buf[e] = s[e]; - } - #endif ---- 276,283 ---- - if (has_mbyte) - for (n = (*mb_ptr2len)(s + e); --n > 0; ) - { -! if (++e == buflen) -! break; - buf[e] = s[e]; - } - #endif -*************** -*** 319,326 **** - } - - /* Set the middle and copy the last part. */ -! mch_memmove(buf + e, "...", (size_t)3); -! STRMOVE(buf + e + 3, s + i); - } - - /* ---- 322,340 ---- - } - - /* Set the middle and copy the last part. */ -! if (e + 3 < buflen) -! { -! mch_memmove(buf + e, "...", (size_t)3); -! len = STRLEN(s + i) + 1; -! if (len >= buflen - e - 3) -! len = buflen - e - 3 - 1; -! mch_memmove(buf + e + 3, s + i, len); -! buf[e + 3 + len - 1] = NUL; -! } -! else -! { -! buf[e - 1] = NUL; // make sure it is truncated -! } - } - - /* -*** ../vim-7.3.406/src/proto/message.pro 2011-01-17 20:08:03.000000000 +0100 ---- src/proto/message.pro 2012-01-20 18:51:19.000000000 +0100 -*************** -*** 4,10 **** - int msg_attr __ARGS((char_u *s, int attr)); - int msg_attr_keep __ARGS((char_u *s, int attr, int keep)); - char_u *msg_strtrunc __ARGS((char_u *s, int force)); -! void trunc_string __ARGS((char_u *s, char_u *buf, int room)); - void reset_last_sourcing __ARGS((void)); - void msg_source __ARGS((int attr)); - int emsg_not_now __ARGS((void)); ---- 4,10 ---- - int msg_attr __ARGS((char_u *s, int attr)); - int msg_attr_keep __ARGS((char_u *s, int attr, int keep)); - char_u *msg_strtrunc __ARGS((char_u *s, int force)); -! void trunc_string __ARGS((char_u *s, char_u *buf, int room, int buflen)); - void reset_last_sourcing __ARGS((void)); - void msg_source __ARGS((int attr)); - int emsg_not_now __ARGS((void)); -*** ../vim-7.3.406/src/version.c 2012-01-20 17:57:47.000000000 +0100 ---- src/version.c 2012-01-20 20:42:23.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 407, - /**/ - --- -Hanson's Treatment of Time: - There are never enough hours in a day, but always too - many days before Saturday. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.408 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.408 (after 7.3.406) -Problem: Missing declaration. -Solution: Add the declaration. (John Marriott) -Files: src/gui_w48.c - - -*** ../vim-7.3.407/src/gui_w48.c 2012-01-20 17:57:47.000000000 +0100 ---- src/gui_w48.c 2012-01-20 20:51:57.000000000 +0100 -*************** -*** 3286,3291 **** ---- 3286,3292 ---- - { - char_u *tmp; - int len; -+ WCHAR *res; - - tmp = convert_filter(s); - if (tmp == NULL) -*** ../vim-7.3.407/src/version.c 2012-01-20 20:44:38.000000000 +0100 ---- src/version.c 2012-01-20 20:52:56.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 408, - /**/ - --- -BLACK KNIGHT: None shall pass. -ARTHUR: I have no quarrel with you, brave Sir knight, but I must cross - this bridge. -BLACK KNIGHT: Then you shall die. - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.409 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.409 -Problem: The license in pty.c is unclear. -Solution: Add a comment about the license. -Files: src/pty.c - - -*** ../vim-7.3.408/src/pty.c 2011-05-19 13:40:47.000000000 +0200 ---- src/pty.c 2012-01-20 21:07:56.000000000 +0100 -*************** -*** 14,19 **** ---- 14,23 ---- - * It has been modified to work better with Vim. - * The parts that are not used in Vim have been deleted. - * See the "screen" sources for the complete stuff. -+ * -+ * This specific version is distibuted under the Vim license (attribution by -+ * Juergen Weigert), the GPL applies to the original version, see the -+ * copyright notice below. - */ - - /* Copyright (c) 1993 -*** ../vim-7.3.408/src/version.c 2012-01-20 20:54:15.000000000 +0100 ---- src/version.c 2012-01-20 21:13:11.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 409, - /**/ - --- -ARTHUR: What are you going to do. bleed on me? - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.410 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.410 -Problem: Compiler error for // comment. (Joachim Schmitz) -Solution: Turn into /* comment */. -Files: src/message.c - - -*** ../vim-7.3.409/src/message.c 2012-01-20 20:44:38.000000000 +0100 ---- src/message.c 2012-01-23 20:46:36.000000000 +0100 -*************** -*** 333,339 **** - } - else - { -! buf[e - 1] = NUL; // make sure it is truncated - } - } - ---- 333,339 ---- - } - else - { -! buf[e - 1] = NUL; /* make sure it is truncated */ - } - } - -*** ../vim-7.3.409/src/version.c 2012-01-20 21:13:55.000000000 +0100 ---- src/version.c 2012-01-23 20:47:30.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 410, - /**/ - - --- -Are leaders born or made? And if they're made, can we return them under -warranty? - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.411 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.411 -Problem: Pasting in Visual mode using the "" register does not work. (John - Beckett) -Solution: Detect that the write is overwriting the pasted register. - (Christian Brabandt) -Files: src/normal.c - - -*** ../vim-7.3.410/src/normal.c 2011-10-04 21:22:40.000000000 +0200 ---- src/normal.c 2012-01-23 22:13:44.000000000 +0100 -*************** -*** 9329,9335 **** - # ifdef FEAT_CLIPBOARD - adjust_clip_reg(®name); - # endif -! if (regname == 0 || VIM_ISDIGIT(regname) - # ifdef FEAT_CLIPBOARD - || (clip_unnamed && (regname == '*' || regname == '+')) - # endif ---- 9329,9335 ---- - # ifdef FEAT_CLIPBOARD - adjust_clip_reg(®name); - # endif -! if (regname == 0 || regname == '"' || VIM_ISDIGIT(regname) - # ifdef FEAT_CLIPBOARD - || (clip_unnamed && (regname == '*' || regname == '+')) - # endif -*** ../vim-7.3.410/src/version.c 2012-01-23 20:48:34.000000000 +0100 ---- src/version.c 2012-01-26 11:42:33.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 411, - /**/ - --- -Engineers understand that their appearance only bothers other people and -therefore it is not worth optimizing. - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.412 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.412 -Problem: Storing a float in a session file has an additional '&'. -Solution: Remove the '&'. (Yasuhiro Matsumoto) -Files: src/eval.c - - -*** ../vim-7.3.411/src/eval.c 2012-01-20 20:44:38.000000000 +0100 ---- src/eval.c 2012-01-26 11:39:39.000000000 +0100 -*************** -*** 22929,22935 **** - f = -f; - sign = '-'; - } -! if ((fprintf(fd, "let %s = %c&%f", - this_var->di_key, sign, f) < 0) - || put_eol(fd) == FAIL) - return FAIL; ---- 22929,22935 ---- - f = -f; - sign = '-'; - } -! if ((fprintf(fd, "let %s = %c%f", - this_var->di_key, sign, f) < 0) - || put_eol(fd) == FAIL) - return FAIL; -*** ../vim-7.3.411/src/version.c 2012-01-26 11:43:04.000000000 +0100 ---- src/version.c 2012-01-26 11:44:56.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 412, - /**/ - --- -Imagine a world without hypothetical situations. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.413 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.413 -Problem: Build warnings on MS-Windows. -Solution: Add type casts. (Mike Williams) -Files: src/ex_getln.c, src/message.c, src/term.c - - -*** ../vim-7.3.412/src/ex_getln.c 2012-01-20 20:44:38.000000000 +0100 ---- src/ex_getln.c 2012-01-26 12:58:54.000000000 +0100 -*************** -*** 5923,5929 **** - hist[i].hisnum); - if (vim_strsize(hist[i].hisstr) > (int)Columns - 10) - trunc_string(hist[i].hisstr, IObuff + STRLEN(IObuff), -! (int)Columns - 10, IOSIZE - STRLEN(IObuff)); - else - STRCAT(IObuff, hist[i].hisstr); - msg_outtrans(IObuff); ---- 5923,5929 ---- - hist[i].hisnum); - if (vim_strsize(hist[i].hisstr) > (int)Columns - 10) - trunc_string(hist[i].hisstr, IObuff + STRLEN(IObuff), -! (int)Columns - 10, IOSIZE - (int)STRLEN(IObuff)); - else - STRCAT(IObuff, hist[i].hisstr); - msg_outtrans(IObuff); -*** ../vim-7.3.412/src/message.c 2012-01-23 20:48:34.000000000 +0100 ---- src/message.c 2012-01-26 12:58:54.000000000 +0100 -*************** -*** 325,331 **** - if (e + 3 < buflen) - { - mch_memmove(buf + e, "...", (size_t)3); -! len = STRLEN(s + i) + 1; - if (len >= buflen - e - 3) - len = buflen - e - 3 - 1; - mch_memmove(buf + e + 3, s + i, len); ---- 325,331 ---- - if (e + 3 < buflen) - { - mch_memmove(buf + e, "...", (size_t)3); -! len = (int)STRLEN(s + i) + 1; - if (len >= buflen - e - 3) - len = buflen - e - 3 - 1; - mch_memmove(buf + e + 3, s + i, len); -*** ../vim-7.3.412/src/term.c 2012-01-20 17:15:47.000000000 +0100 ---- src/term.c 2012-01-26 12:58:54.000000000 +0100 -*************** -*** 5252,5258 **** - char_u *src; - { - int i; -! int slen = STRLEN(src); - - for (i = 0; i < tc_len; ++i) - { ---- 5252,5258 ---- - char_u *src; - { - int i; -! int slen = (int)STRLEN(src); - - for (i = 0; i < tc_len; ++i) - { -*** ../vim-7.3.412/src/version.c 2012-01-26 11:45:25.000000000 +0100 ---- src/version.c 2012-01-26 12:59:14.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 413, - /**/ - --- -It doesn't really matter what you are able to do if you don't do it. - (Bram Moolenaar) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.414 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.414 -Problem: Using CTRL-A on "000" drops the leading zero, while on "001" it - doesn't. -Solution: Detect "000" as an octal number. (James McCoy) -Files: src/charset.c - - -*** ../vim-7.3.413/src/charset.c 2012-01-10 22:26:12.000000000 +0100 ---- src/charset.c 2012-01-26 13:33:45.000000000 +0100 -*************** -*** 764,770 **** - } - - /* -! * Return the number of characters string "s" will take on the screen, - * counting TABs as two characters: "^I". - */ - int ---- 764,770 ---- - } - - /* -! * Return the number of character cells string "s" will take on the screen, - * counting TABs as two characters: "^I". - */ - int -*************** -*** 775,782 **** - } - - /* -! * Return the number of characters string "s[len]" will take on the screen, -! * counting TABs as two characters: "^I". - */ - int - vim_strnsize(s, len) ---- 775,782 ---- - } - - /* -! * Return the number of character cells string "s[len]" will take on the -! * screen, counting TABs as two characters: "^I". - */ - int - vim_strnsize(s, len) -*************** -*** 1830,1836 **** - hex = 0; /* can't be octal */ - break; - } -! if (ptr[n] > '0') - hex = '0'; /* assume octal */ - } - } ---- 1830,1836 ---- - hex = 0; /* can't be octal */ - break; - } -! if (ptr[n] >= '0') - hex = '0'; /* assume octal */ - } - } -*** ../vim-7.3.413/src/version.c 2012-01-26 13:01:54.000000000 +0100 ---- src/version.c 2012-01-26 13:38:04.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 414, - /**/ - --- -No engineer can take a shower without wondering if some sort of Teflon coating -would make showering unnecessary. - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.415 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.415 (after 7.3.359) -Problem: Completion of functions stops once a dictionary is encountered. - (James McCoy) -Solution: Return an empty string instead of NULL. -Files: src/eval.c - - -*** ../vim-7.3.414/src/eval.c 2012-01-26 11:45:25.000000000 +0100 ---- src/eval.c 2012-01-26 13:45:52.000000000 +0100 -*************** -*** 21802,21808 **** - fp = HI2UF(hi); - - if (fp->uf_flags & FC_DICT) -! return NULL; /* don't show dict functions */ - - if (STRLEN(fp->uf_name) + 4 >= IOSIZE) - return fp->uf_name; /* prevents overflow */ ---- 21802,21808 ---- - fp = HI2UF(hi); - - if (fp->uf_flags & FC_DICT) -! return ""; /* don't show dict functions */ - - if (STRLEN(fp->uf_name) + 4 >= IOSIZE) - return fp->uf_name; /* prevents overflow */ -*** ../vim-7.3.414/src/version.c 2012-01-26 13:40:04.000000000 +0100 ---- src/version.c 2012-01-26 14:32:16.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 415, - /**/ - --- -Normal people believe that if it ain't broke, don't fix it. Engineers believe -that if it ain't broke, it doesn't have enough features yet. - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.416 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.416 (after 7.3.415) -Problem: Compiler warning for wrong pointer. -Solution: Add type cast. -Files: src/eval.c - - -*** ../vim-7.3.415/src/eval.c 2012-01-26 14:32:26.000000000 +0100 ---- src/eval.c 2012-01-26 15:42:56.000000000 +0100 -*************** -*** 21802,21808 **** - fp = HI2UF(hi); - - if (fp->uf_flags & FC_DICT) -! return ""; /* don't show dict functions */ - - if (STRLEN(fp->uf_name) + 4 >= IOSIZE) - return fp->uf_name; /* prevents overflow */ ---- 21802,21808 ---- - fp = HI2UF(hi); - - if (fp->uf_flags & FC_DICT) -! return (char_u *)""; /* don't show dict functions */ - - if (STRLEN(fp->uf_name) + 4 >= IOSIZE) - return fp->uf_name; /* prevents overflow */ -*** ../vim-7.3.415/src/version.c 2012-01-26 14:32:26.000000000 +0100 ---- src/version.c 2012-01-26 15:43:31.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 416, - /**/ - --- -It's totally unfair to suggest - as many have - that engineers are socially -inept. Engineers simply have different objectives when it comes to social -interaction. - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.417 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.417 (after 7.3.395) -Problem: Test 43 fails with a tiny build. -Solution: Only run test 43 with at least a small build. -Files: src/testdir/test43.in - - -*** ../vim-7.3.415/src/testdir/test43.in 2012-01-10 13:44:23.000000000 +0100 ---- src/testdir/test43.in 2012-01-26 18:00:06.000000000 +0100 -*************** -*** 1,6 **** ---- 1,7 ---- - Tests for regexp with various magic settings. - - STARTTEST -+ :so small.vim - :set nocompatible viminfo+=nviminfo - /^1 - /a*b\{2}c\+/e -*** ../vim-7.3.415/src/version.c 2012-01-26 14:32:26.000000000 +0100 ---- src/version.c 2012-01-26 18:02:30.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 417, - /**/ - --- -I learned the customs and mannerisms of engineers by observing them, much the -way Jane Goodall learned about the great apes, but without the hassle of -grooming. - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.418 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.418 -Problem: When a user complete function returns -1 an error message is - given. -Solution: When -2 is returned stop completion silently. (Yasuhiro Matsumoto) -Files: src/edit.c - - -*** ../vim-7.3.417/src/edit.c 2012-01-20 14:32:22.000000000 +0100 ---- src/edit.c 2012-01-26 18:32:23.000000000 +0100 -*************** -*** 5189,5194 **** ---- 5189,5199 ---- - return FAIL; - } - -+ /* Return value -2 means the user complete function wants to -+ * cancel the complete without an error. */ -+ if (col == -2) -+ return FAIL; -+ - /* - * Reset extended parameters of completion, when start new - * completion. -*** ../vim-7.3.417/src/version.c 2012-01-26 18:58:13.000000000 +0100 ---- src/version.c 2012-01-26 18:42:14.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 418, - /**/ - --- -If someone questions your market projections, simply point out that your -target market is "People who are nuts" and "People who will buy any damn -thing". Nobody is going to tell you there aren't enough of those people -to go around. - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.419 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.419 -Problem: DBCS encoding in a user command does not always work. -Solution: Skip over DBCS characters. (Yasuhiro Matsumoto) -Files: src/ex_docmd.c - - -*** ../vim-7.3.418/src/ex_docmd.c 2011-12-14 14:49:41.000000000 +0100 ---- src/ex_docmd.c 2012-01-26 20:04:01.000000000 +0100 -*************** -*** 5967,5973 **** - result = STRLEN(eap->arg) + 2; - for (p = eap->arg; *p; ++p) - { -! if (*p == '\\' || *p == '"') - ++result; - } - ---- 5967,5980 ---- - result = STRLEN(eap->arg) + 2; - for (p = eap->arg; *p; ++p) - { -! #ifdef FEAT_MBYTE -! if (enc_dbcs != 0 && (*mb_ptr2len)(p) == 2) -! /* DBCS can contain \ in a trail byte, skip the -! * double-byte character. */ -! ++p; -! else -! #endif -! if (*p == '\\' || *p == '"') - ++result; - } - -*************** -*** 5976,5982 **** - *buf++ = '"'; - for (p = eap->arg; *p; ++p) - { -! if (*p == '\\' || *p == '"') - *buf++ = '\\'; - *buf++ = *p; - } ---- 5983,5996 ---- - *buf++ = '"'; - for (p = eap->arg; *p; ++p) - { -! #ifdef FEAT_MBYTE -! if (enc_dbcs != 0 && (*mb_ptr2len)(p) == 2) -! /* DBCS can contain \ in a trail byte, copy the -! * double-byte character to avoid escaping. */ -! *buf++ = *p++; -! else -! #endif -! if (*p == '\\' || *p == '"') - *buf++ = '\\'; - *buf++ = *p; - } -*** ../vim-7.3.418/src/version.c 2012-01-26 18:58:25.000000000 +0100 ---- src/version.c 2012-01-26 20:40:34.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 419, - /**/ - --- -You have heard the saying that if you put a thousand monkeys in a room with a -thousand typewriters and waited long enough, eventually you would have a room -full of dead monkeys. - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.420 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.420 -Problem: "it" and "at" don't work properly with a dash in the tag name. -Solution: Require a space to match the tag name. (Christian Brabandt) -Files: src/search.c - - -*** ../vim-7.3.419/src/search.c 2012-01-10 22:26:12.000000000 +0100 ---- src/search.c 2012-01-26 20:51:43.000000000 +0100 -*************** -*** 3918,3924 **** - curwin->w_cursor = old_pos; - goto theend; - } -! spat = alloc(len + 29); - epat = alloc(len + 9); - if (spat == NULL || epat == NULL) - { ---- 3918,3924 ---- - curwin->w_cursor = old_pos; - goto theend; - } -! spat = alloc(len + 31); - epat = alloc(len + 9); - if (spat == NULL || epat == NULL) - { -*************** -*** 3927,3933 **** - curwin->w_cursor = old_pos; - goto theend; - } -! sprintf((char *)spat, "<%.*s\\>\\%%(\\_[^>]\\{-}[^/]>\\|>\\)\\c", len, p); - sprintf((char *)epat, "</%.*s>\\c", len, p); - - r = do_searchpair(spat, (char_u *)"", epat, FORWARD, (char_u *)"", ---- 3927,3933 ---- - curwin->w_cursor = old_pos; - goto theend; - } -! sprintf((char *)spat, "<%.*s\\>\\%%(\\s\\_[^>]\\{-}[^/]>\\|>\\)\\c", len, p); - sprintf((char *)epat, "</%.*s>\\c", len, p); - - r = do_searchpair(spat, (char_u *)"", epat, FORWARD, (char_u *)"", -*** ../vim-7.3.419/src/version.c 2012-01-26 20:41:22.000000000 +0100 ---- src/version.c 2012-01-26 20:51:16.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 420, - /**/ - --- -All good vision statements are created by groups of people with bloated -bladders who would rather be doing anything else. - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.421 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.421 -Problem: Get E832 when setting 'undofile' in vimrc and there is a file to - be edited on the command line. (Toothpik) -Solution: Do not try reading the undo file for a file that wasn't loaded. -Files: src/option.c - - -*** ../vim-7.3.420/src/option.c 2012-01-10 22:26:12.000000000 +0100 ---- src/option.c 2012-01-28 17:55:24.000000000 +0100 -*************** -*** 7527,7536 **** - { - /* When 'undofile' is set globally: for every buffer, otherwise - * only for the current buffer: Try to read in the undofile, if -! * one exists and the buffer wasn't changed. */ - if ((curbuf == save_curbuf - || (opt_flags & OPT_GLOBAL) || opt_flags == 0) -! && !curbufIsChanged()) - { - u_compute_hash(hash); - u_read_undo(NULL, hash, curbuf->b_fname); ---- 7527,7537 ---- - { - /* When 'undofile' is set globally: for every buffer, otherwise - * only for the current buffer: Try to read in the undofile, if -! * one exists and the buffer wasn't changed and the buffer was -! * loaded. */ - if ((curbuf == save_curbuf - || (opt_flags & OPT_GLOBAL) || opt_flags == 0) -! && !curbufIsChanged() && curbuf->b_ml.ml_mfp != NULL) - { - u_compute_hash(hash); - u_read_undo(NULL, hash, curbuf->b_fname); -*** ../vim-7.3.420/src/version.c 2012-01-26 20:58:21.000000000 +0100 ---- src/version.c 2012-01-28 18:03:09.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 421, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -4. Your eyeglasses have a web site burned in on them. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.422 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.422 -Problem: Python 3 does not have __members__. -Solution: Add "name" and "number" in another way. (lilydjwg) -Files: src/if_py_both.h, src/if_python3.c - - -*** ../vim-7.3.421/src/if_py_both.h 2011-09-07 19:30:17.000000000 +0200 ---- src/if_py_both.h 2012-02-04 19:59:43.000000000 +0100 -*************** -*** 1479,1484 **** ---- 1479,1487 ---- - {"append", BufferAppend, 1, "Append data to Vim buffer" }, - {"mark", BufferMark, 1, "Return (row,col) representing position of named mark" }, - {"range", BufferRange, 1, "Return a range object which represents the part of the given buffer between line numbers s and e" }, -+ #if PY_VERSION_HEX >= 0x03000000 -+ {"__dir__", BufferDir, 4, "List its attributes" }, -+ #endif - { NULL, NULL, 0, NULL } - }; - -*** ../vim-7.3.421/src/if_python3.c 2011-09-14 18:59:35.000000000 +0200 ---- src/if_python3.c 2012-02-04 20:13:00.000000000 +0100 -*************** -*** 468,473 **** ---- 468,474 ---- - static PyObject *BufferNew (buf_T *); - static PyObject *WindowNew(win_T *); - static PyObject *LineToString(const char *); -+ static PyObject *BufferDir(PyObject *, PyObject *); - - static PyTypeObject RangeType; - -*************** -*** 961,973 **** - return Py_BuildValue("s", this->buf->b_ffname); - else if (strcmp(name, "number") == 0) - return Py_BuildValue("n", this->buf->b_fnum); -- else if (strcmp(name,"__members__") == 0) -- return Py_BuildValue("[ss]", "name", "number"); - else - return PyObject_GenericGetAttr(self, nameobj); - } - - static PyObject * - BufferRepr(PyObject *self) - { - static char repr[100]; ---- 962,979 ---- - return Py_BuildValue("s", this->buf->b_ffname); - else if (strcmp(name, "number") == 0) - return Py_BuildValue("n", this->buf->b_fnum); - else - return PyObject_GenericGetAttr(self, nameobj); - } - - static PyObject * -+ BufferDir(PyObject *self UNUSED, PyObject *args UNUSED) -+ { -+ return Py_BuildValue("[sssss]", "name", "number", -+ "append", "mark", "range"); -+ } -+ -+ static PyObject * - BufferRepr(PyObject *self) - { - static char repr[100]; -*** ../vim-7.3.421/src/version.c 2012-01-28 18:03:30.000000000 +0100 ---- src/version.c 2012-02-04 20:14:58.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 422, - /**/ - --- -How To Keep A Healthy Level Of Insanity: -15. Five days in advance, tell your friends you can't attend their - party because you're not in the mood. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.423 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.423 -Problem: Small mistakes in comments, proto and indent. -Solution: Fix the mistakes. -Files: src/ex_cmds2.c, src/structs.h, src/ui.c, src/proto/ex_docmd.pro - - -*** ../vim-7.3.422/src/ex_cmds2.c 2011-10-20 21:38:37.000000000 +0200 ---- src/ex_cmds2.c 2011-11-30 11:02:20.000000000 +0100 -*************** -*** 1939,1945 **** - } - - /* -! * Return TRUE if window "win" is editing then file at the current argument - * index. - */ - static int ---- 1939,1945 ---- - } - - /* -! * Return TRUE if window "win" is editing the file at the current argument - * index. - */ - static int -*** ../vim-7.3.422/src/structs.h 2011-05-19 13:40:47.000000000 +0200 ---- src/structs.h 2011-09-10 13:48:53.000000000 +0200 -*************** -*** 1846,1852 **** - often, keep it the first item!) */ - - #if defined(FEAT_SYN_HL) || defined(FEAT_SPELL) -! synblock_T *w_s; - #endif - - #ifdef FEAT_WINDOWS ---- 1846,1852 ---- - often, keep it the first item!) */ - - #if defined(FEAT_SYN_HL) || defined(FEAT_SPELL) -! synblock_T *w_s; /* for :ownsyntax */ - #endif - - #ifdef FEAT_WINDOWS -*** ../vim-7.3.422/src/ui.c 2011-07-07 16:20:45.000000000 +0200 ---- src/ui.c 2012-01-21 14:03:42.000000000 +0100 -*************** -*** 2363,2376 **** - XtLastTimestampProcessed(XtDisplay(myShell)), - clip_x11_convert_selection_cb, clip_x11_lose_ownership_cb, - NULL) == False) -! return FAIL; - } - else - #endif - { - if (!XChangeProperty(XtDisplay(myShell), XtWindow(myShell), - cbd->sel_atom, timestamp_atom, 32, PropModeAppend, NULL, 0)) -! return FAIL; - } - /* Flush is required in a terminal as nothing else is doing it. */ - XFlush(XtDisplay(myShell)); ---- 2363,2376 ---- - XtLastTimestampProcessed(XtDisplay(myShell)), - clip_x11_convert_selection_cb, clip_x11_lose_ownership_cb, - NULL) == False) -! return FAIL; - } - else - #endif - { - if (!XChangeProperty(XtDisplay(myShell), XtWindow(myShell), - cbd->sel_atom, timestamp_atom, 32, PropModeAppend, NULL, 0)) -! return FAIL; - } - /* Flush is required in a terminal as nothing else is doing it. */ - XFlush(XtDisplay(myShell)); -*** ../vim-7.3.422/src/proto/ex_docmd.pro 2010-08-15 21:57:28.000000000 +0200 ---- src/proto/ex_docmd.pro 2011-01-16 00:22:21.000000000 +0100 -*************** -*** 1,7 **** - /* ex_docmd.c */ - void do_exmode __ARGS((int improved)); - int do_cmdline_cmd __ARGS((char_u *cmd)); -! int do_cmdline __ARGS((char_u *cmdline, char_u *(*getline)(int, void *, int), void *cookie, int flags)); - int getline_equal __ARGS((char_u *(*fgetline)(int, void *, int), void *cookie, char_u *(*func)(int, void *, int))); - void *getline_cookie __ARGS((char_u *(*fgetline)(int, void *, int), void *cookie)); - int checkforcmd __ARGS((char_u **pp, char *cmd, int len)); ---- 1,7 ---- - /* ex_docmd.c */ - void do_exmode __ARGS((int improved)); - int do_cmdline_cmd __ARGS((char_u *cmd)); -! int do_cmdline __ARGS((char_u *cmdline, char_u *(*fgetline)(int, void *, int), void *cookie, int flags)); - int getline_equal __ARGS((char_u *(*fgetline)(int, void *, int), void *cookie, char_u *(*func)(int, void *, int))); - void *getline_cookie __ARGS((char_u *(*fgetline)(int, void *, int), void *cookie)); - int checkforcmd __ARGS((char_u **pp, char *cmd, int len)); -*** ../vim-7.3.422/src/version.c 2012-02-04 20:17:21.000000000 +0100 ---- src/version.c 2012-02-04 21:56:43.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 423, - /**/ - --- -In many of the more relaxed civilizations on the Outer Eastern Rim of the -Galaxy, "The Hitchhiker's Guide to the Galaxy" has already supplanted the -great "Encyclopedia Galactica" as the standard repository of all knowledge -and wisdom, for though it has many omissions and contains much that is -apocryphal, or at least wildly inaccurate, it scores over the older, more -pedestrian work in two important respects. -First, it is slightly cheaper; and second, it has the words "DON'T PANIC" -inscribed in large friendly letters on its cover. - -- 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/ \\\ -\\\ an exciting new programming language -- http://www.Zimbu.org /// - \\\ help me help AIDS victims -- http://ICCF-Holland.org /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.424 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.424 -Problem: Win16 version missing some functions. -Solution: Add #defines for the functions. -Files: src/gui_w16.c - - -*** ../vim-7.3.423/src/gui_w16.c 2011-01-17 20:08:03.000000000 +0100 ---- src/gui_w16.c 2011-08-10 16:50:21.000000000 +0200 -*************** -*** 21,26 **** ---- 21,32 ---- - * - */ - -+ /* Win16 doesn't use the "W" methods. */ -+ #define pDispatchMessage DispatchMessage -+ #define pGetMessage GetMessage -+ #define pIsDialogMessage IsDialogMessage -+ #define pPeekMessage PeekMessage -+ - /* - * Include the common stuff for MS-Windows GUI. - */ -*** ../vim-7.3.423/src/version.c 2012-02-04 21:57:44.000000000 +0100 ---- src/version.c 2012-02-04 22:01:13.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 424, - /**/ - --- -Now it is such a bizarrely improbable coincidence that anything as -mind-bogglingly useful as the Babel fish could have evolved purely by chance -that some thinkers have chosen to see it as a final and clinching proof of the -NON-existence of God. -The argument goes something like this: 'I refuse to prove that I exist,' says -God, 'for proof denies faith, and without faith I am nothing.' -'But,' says Man, 'the Babel fish is a dead giveaway, isn't it? It could not -have evolved by chance. It proves you exist, and so therefore, by your own -arguments, you don't. QED.' -'Oh dear,' says God, 'I hadn't thought of that,' and promptly vanishes in a -puff of logic. -'Oh, that was easy,' says Man, and for an encore goes on to prove that black -is white and gets himself killed on the next pedestrian crossing. - -- 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/ \\\ -\\\ an exciting new programming language -- http://www.Zimbu.org /// - \\\ help me help AIDS victims -- http://ICCF-Holland.org /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.425 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.425 (after 7.3.265) -Problem: Search history lines are duplicated. (Edwin Steiner) -Solution: Convert separator character from space to NUL. -Files: src/ex_getln.c - - -*** ../vim-7.3.424/src/ex_getln.c 2012-01-26 13:01:54.000000000 +0100 ---- src/ex_getln.c 2012-02-04 22:27:43.000000000 +0100 -*************** -*** 6027,6034 **** - val = viminfo_readstring(virp, 1, TRUE); - if (val != NULL && *val != NUL) - { - if (!in_history(type, val + (type == HIST_SEARCH), -! viminfo_add_at_front, *val)) - { - /* Need to re-allocate to append the separator byte. */ - len = STRLEN(val); ---- 6027,6036 ---- - val = viminfo_readstring(virp, 1, TRUE); - if (val != NULL && *val != NUL) - { -+ int sep = (*val == ' ' ? NUL : *val); -+ - if (!in_history(type, val + (type == HIST_SEARCH), -! viminfo_add_at_front, sep)) - { - /* Need to re-allocate to append the separator byte. */ - len = STRLEN(val); -*************** -*** 6040,6046 **** - /* Search entry: Move the separator from the first - * column to after the NUL. */ - mch_memmove(p, val + 1, (size_t)len); -! p[len] = (*val == ' ' ? NUL : *val); - } - else - { ---- 6042,6048 ---- - /* Search entry: Move the separator from the first - * column to after the NUL. */ - mch_memmove(p, val + 1, (size_t)len); -! p[len] = sep; - } - else - { -*** ../vim-7.3.424/src/version.c 2012-02-04 22:01:44.000000000 +0100 ---- src/version.c 2012-02-04 22:30:36.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 425, - /**/ - --- -"So this is it," said Arthur, "we are going to die." -"Yes," said Ford, "except...no! Wait a minute!" He suddenly lunged across -the chamber at something behind Arthur's line of vision. "What's this -switch?" he cried. -"What? Where?" cried Arthur, twisting around. -"No, I was only fooling," said Ford, "we are going to die after all." - -- 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/ \\\ -\\\ an exciting new programming language -- http://www.Zimbu.org /// - \\\ help me help AIDS victims -- http://ICCF-Holland.org /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.426 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.426 -Problem: With '$' in 'cpoptions' the $ is not displayed in the first - column. -Solution: Use -1 instead of 0 as a special value. (Hideki Eiraku and - Hirohito Higashi) -Files: src/edit.c, src/globals.h, src/move.c, src/screen.c, src/search.c - - -*** ../vim-7.3.425/src/edit.c 2012-01-26 18:58:25.000000000 +0100 ---- src/edit.c 2012-02-04 23:23:45.000000000 +0100 -*************** -*** 1763,1771 **** - static void - undisplay_dollar() - { -! if (dollar_vcol) - { -! dollar_vcol = 0; - redrawWinline(curwin->w_cursor.lnum, FALSE); - } - } ---- 1763,1771 ---- - static void - undisplay_dollar() - { -! if (dollar_vcol >= 0) - { -! dollar_vcol = -1; - redrawWinline(curwin->w_cursor.lnum, FALSE); - } - } -*************** -*** 5441,5447 **** - compl_curr_match->cp_number); - edit_submode_extra = match_ref; - edit_submode_highl = HLF_R; -! if (dollar_vcol) - curs_columns(FALSE); - } - } ---- 5441,5447 ---- - compl_curr_match->cp_number); - edit_submode_extra = match_ref; - edit_submode_highl = HLF_R; -! if (dollar_vcol >= 0) - curs_columns(FALSE); - } - } -*************** -*** 8961,8967 **** - * We can emulate the vi behaviour by pretending there is a dollar - * displayed even when there isn't. - * --pkv Sun Jan 19 01:56:40 EST 2003 */ -! if (vim_strchr(p_cpo, CPO_BACKSPACE) != NULL && dollar_vcol == 0) - dollar_vcol = curwin->w_virtcol; - - #ifdef FEAT_FOLDING ---- 8961,8967 ---- - * We can emulate the vi behaviour by pretending there is a dollar - * displayed even when there isn't. - * --pkv Sun Jan 19 01:56:40 EST 2003 */ -! if (vim_strchr(p_cpo, CPO_BACKSPACE) != NULL && dollar_vcol == -1) - dollar_vcol = curwin->w_virtcol; - - #ifdef FEAT_FOLDING -*** ../vim-7.3.425/src/globals.h 2011-05-10 16:41:13.000000000 +0200 ---- src/globals.h 2012-02-04 23:24:07.000000000 +0100 -*************** -*** 113,121 **** - * When '$' is included in 'cpoptions' option set: - * When a change command is given that deletes only part of a line, a dollar - * is put at the end of the changed text. dollar_vcol is set to the virtual -! * column of this '$'. - */ -! EXTERN colnr_T dollar_vcol INIT(= 0); - - #ifdef FEAT_INS_EXPAND - /* ---- 113,121 ---- - * When '$' is included in 'cpoptions' option set: - * When a change command is given that deletes only part of a line, a dollar - * is put at the end of the changed text. dollar_vcol is set to the virtual -! * column of this '$'. -1 is used to indicate no $ is being displayed. - */ -! EXTERN colnr_T dollar_vcol INIT(= -1); - - #ifdef FEAT_INS_EXPAND - /* -*** ../vim-7.3.425/src/move.c 2012-01-10 22:26:12.000000000 +0100 ---- src/move.c 2012-02-04 23:21:08.000000000 +0100 -*************** -*** 362,368 **** - #endif - ) - { -! dollar_vcol = 0; - if (curwin->w_skipcol != 0) - { - curwin->w_skipcol = 0; ---- 362,368 ---- - #endif - ) - { -! dollar_vcol = -1; - if (curwin->w_skipcol != 0) - { - curwin->w_skipcol = 0; -*************** -*** 966,972 **** - - /* remove '$' from change command when cursor moves onto it */ - if (startcol > dollar_vcol) -! dollar_vcol = 0; - - extra = curwin_col_off(); - curwin->w_wcol = curwin->w_virtcol + extra; ---- 966,972 ---- - - /* remove '$' from change command when cursor moves onto it */ - if (startcol > dollar_vcol) -! dollar_vcol = -1; - - extra = curwin_col_off(); - curwin->w_wcol = curwin->w_virtcol + extra; -*** ../vim-7.3.425/src/screen.c 2012-01-10 22:26:12.000000000 +0100 ---- src/screen.c 2012-02-04 23:22:44.000000000 +0100 -*************** -*** 1637,1647 **** - * When at start of changed lines: May scroll following lines - * up or down to minimize redrawing. - * Don't do this when the change continues until the end. -! * Don't scroll when dollar_vcol is non-zero, keep the "$". - */ - if (lnum == mod_top - && mod_bot != MAXLNUM -! && !(dollar_vcol != 0 && mod_bot == mod_top + 1)) - { - int old_rows = 0; - int new_rows = 0; ---- 1637,1647 ---- - * When at start of changed lines: May scroll following lines - * up or down to minimize redrawing. - * Don't do this when the change continues until the end. -! * Don't scroll when dollar_vcol >= 0, keep the "$". - */ - if (lnum == mod_top - && mod_bot != MAXLNUM -! && !(dollar_vcol >= 0 && mod_bot == mod_top + 1)) - { - int old_rows = 0; - int new_rows = 0; -*************** -*** 1868,1879 **** - if (row > wp->w_height) /* past end of screen */ - { - /* we may need the size of that too long line later on */ -! if (dollar_vcol == 0) - wp->w_lines[idx].wl_size = plines_win(wp, lnum, TRUE); - ++idx; - break; - } -! if (dollar_vcol == 0) - wp->w_lines[idx].wl_size = row - srow; - ++idx; - #ifdef FEAT_FOLDING ---- 1868,1879 ---- - if (row > wp->w_height) /* past end of screen */ - { - /* we may need the size of that too long line later on */ -! if (dollar_vcol == -1) - wp->w_lines[idx].wl_size = plines_win(wp, lnum, TRUE); - ++idx; - break; - } -! if (dollar_vcol == -1) - wp->w_lines[idx].wl_size = row - srow; - ++idx; - #ifdef FEAT_FOLDING -*************** -*** 1990,1996 **** - } - #endif - } -! else if (dollar_vcol == 0) - wp->w_botline = lnum; - - /* make sure the rest of the screen is blank */ ---- 1990,1996 ---- - } - #endif - } -! else if (dollar_vcol == -1) - wp->w_botline = lnum; - - /* make sure the rest of the screen is blank */ -*************** -*** 2005,2011 **** - wp->w_old_botfill = wp->w_botfill; - #endif - -! if (dollar_vcol == 0) - { - /* - * There is a trick with w_botline. If we invalidate it on each ---- 2005,2011 ---- - wp->w_old_botfill = wp->w_botfill; - #endif - -! if (dollar_vcol == -1) - { - /* - * There is a trick with w_botline. If we invalidate it on each -*************** -*** 3564,3570 **** - } - - /* When still displaying '$' of change command, stop at cursor */ -! if (dollar_vcol != 0 && wp == curwin - && lnum == wp->w_cursor.lnum && vcol >= (long)wp->w_virtcol - #ifdef FEAT_DIFF - && filler_todo <= 0 ---- 3564,3570 ---- - } - - /* When still displaying '$' of change command, stop at cursor */ -! if (dollar_vcol >= 0 && wp == curwin - && lnum == wp->w_cursor.lnum && vcol >= (long)wp->w_virtcol - #ifdef FEAT_DIFF - && filler_todo <= 0 -*** ../vim-7.3.425/src/search.c 2012-01-26 20:58:21.000000000 +0100 ---- src/search.c 2012-02-04 23:23:10.000000000 +0100 -*************** -*** 2501,2508 **** - save_siso = p_siso; - /* Handle "$" in 'cpo': If the ')' is typed on top of the "$", - * stop displaying the "$". */ -! if (dollar_vcol > 0 && dollar_vcol == curwin->w_virtcol) -! dollar_vcol = 0; - ++curwin->w_virtcol; /* do display ')' just before "$" */ - update_screen(VALID); /* show the new char first */ - ---- 2501,2508 ---- - save_siso = p_siso; - /* Handle "$" in 'cpo': If the ')' is typed on top of the "$", - * stop displaying the "$". */ -! if (dollar_vcol >= 0 && dollar_vcol == curwin->w_virtcol) -! dollar_vcol = -1; - ++curwin->w_virtcol; /* do display ')' just before "$" */ - update_screen(VALID); /* show the new char first */ - -*** ../vim-7.3.425/src/version.c 2012-02-04 22:44:27.000000000 +0100 ---- src/version.c 2012-02-04 23:32:55.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 426, - /**/ - - --- -I am also told that there is a logical proof out there somewhere -that demonstrates that there is no task which duct tape cannot handle. - -- Paul Brannan - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.427 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.427 -Problem: readfile() can be slow with long lines. -Solution: Use realloc() instead of alloc(). (John Little) -Files: src/eval.c - - -*** ../vim-7.3.426/src/eval.c 2012-01-26 14:32:26.000000000 +0100 ---- src/eval.c 2012-02-05 00:25:39.000000000 +0100 -*************** -*** 14325,14346 **** - typval_T *rettv; - { - int binary = FALSE; - char_u *fname; - FILE *fd; -! listitem_T *li; -! #define FREAD_SIZE 200 /* optimized for text lines */ -! char_u buf[FREAD_SIZE]; -! int readlen; /* size of last fread() */ -! int buflen; /* nr of valid chars in buf[] */ -! int filtd; /* how much in buf[] was NUL -> '\n' filtered */ -! int tolist; /* first byte in buf[] still to be put in list */ -! int chop; /* how many CR to chop off */ -! char_u *prev = NULL; /* previously read bytes, if any */ -! int prevlen = 0; /* length of "prev" if not NULL */ -! char_u *s; -! int len; -! long maxline = MAXLNUM; -! long cnt = 0; - - if (argvars[1].v_type != VAR_UNKNOWN) - { ---- 14325,14343 ---- - typval_T *rettv; - { - int binary = FALSE; -+ int failed = FALSE; - char_u *fname; - FILE *fd; -! char_u buf[(IOSIZE/256)*256]; /* rounded to avoid odd + 1 */ -! int io_size = sizeof(buf); -! int readlen; /* size of last fread() */ -! char_u *prev = NULL; /* previously read bytes, if any */ -! long prevlen = 0; /* length of data in prev */ -! long prevsize = 0; /* size of prev buffer */ -! long maxline = MAXLNUM; -! long cnt = 0; -! char_u *p; /* position in buf */ -! char_u *start; /* start of current line */ - - if (argvars[1].v_type != VAR_UNKNOWN) - { -*************** -*** 14362,14410 **** - return; - } - -- filtd = 0; - while (cnt < maxline || maxline < 0) - { -! readlen = (int)fread(buf + filtd, 1, FREAD_SIZE - filtd, fd); -! buflen = filtd + readlen; -! tolist = 0; -! for ( ; filtd < buflen || readlen <= 0; ++filtd) -! { -! if (readlen <= 0 || buf[filtd] == '\n') -! { -! /* In binary mode add an empty list item when the last -! * non-empty line ends in a '\n'. */ -! if (!binary && readlen == 0 && filtd == 0 && prev == NULL) -! break; - -! /* Found end-of-line or end-of-file: add a text line to the -! * list. */ -! chop = 0; -! if (!binary) -! while (filtd - chop - 1 >= tolist -! && buf[filtd - chop - 1] == '\r') -! ++chop; -! len = filtd - tolist - chop; -! if (prev == NULL) -! s = vim_strnsave(buf + tolist, len); - else - { -! s = alloc((unsigned)(prevlen + len + 1)); -! if (s != NULL) - { -! mch_memmove(s, prev, prevlen); -! vim_free(prev); -! prev = NULL; -! mch_memmove(s + prevlen, buf + tolist, len); - s[prevlen + len] = NUL; - } - } -! tolist = filtd + 1; - -! li = listitem_alloc(); -! if (li == NULL) - { - vim_free(s); - break; - } - li->li_tv.v_type = VAR_STRING; ---- 14359,14419 ---- - return; - } - - while (cnt < maxline || maxline < 0) - { -! readlen = (int)fread(buf, 1, io_size, fd); -! -! /* This for loop processes what was read, but is also entered at end -! * of file so that either: -! * - an incomplete line gets written -! * - a "binary" file gets an empty line at the end if it ends in a -! * newline. */ -! for (p = buf, start = buf; -! p < buf + readlen || (readlen <= 0 && (prevlen > 0 || binary)); -! ++p) -! { -! if (*p == '\n' || readlen <= 0) -! { -! listitem_T *li; -! char_u *s = NULL; -! long_u len = p - start; - -! /* Finished a line. Remove CRs before NL. */ -! if (readlen > 0 && !binary) -! { -! while (len > 0 && start[len - 1] == '\r') -! --len; -! /* removal may cross back to the "prev" string */ -! if (len == 0) -! while (prevlen > 0 && prev[prevlen - 1] == '\r') -! --prevlen; -! } -! if (prevlen == 0) -! s = vim_strnsave(start, len); - else - { -! /* Change "prev" buffer to be the right size. This way -! * the bytes are only copied once, and very long lines are -! * allocated only once. */ -! if ((s = vim_realloc(prev, prevlen + len + 1)) != NULL) - { -! mch_memmove(s + prevlen, start, len); - s[prevlen + len] = NUL; -+ prev = NULL; /* the list will own the string */ -+ prevlen = prevsize = 0; - } - } -! if (s == NULL) -! { -! do_outofmem_msg((long_u) prevlen + len + 1); -! failed = TRUE; -! break; -! } - -! if ((li = listitem_alloc()) == NULL) - { - vim_free(s); -+ failed = TRUE; - break; - } - li->li_tv.v_type = VAR_STRING; -*************** -*** 14412,14485 **** - li->li_tv.vval.v_string = s; - list_append(rettv->vval.v_list, li); - -! if (++cnt >= maxline && maxline >= 0) -! break; -! if (readlen <= 0) - break; - } -! else if (buf[filtd] == NUL) -! buf[filtd] = '\n'; - #ifdef FEAT_MBYTE -! else if (buf[filtd] == 0xef -! && enc_utf8 -! && filtd + 2 < buflen -! && !binary -! && buf[filtd + 1] == 0xbb -! && buf[filtd + 2] == 0xbf) -! { -! /* remove utf-8 byte order mark */ -! mch_memmove(buf + filtd, buf + filtd + 3, buflen - filtd - 3); -! --filtd; -! buflen -= 3; - } - #endif -! } -! if (readlen <= 0) -! break; - -! if (tolist == 0) - { -! if (buflen >= FREAD_SIZE / 2) - { -! /* "buf" is full, need to move text to an allocated buffer */ -! if (prev == NULL) - { -! prev = vim_strnsave(buf, buflen); -! prevlen = buflen; - } -! else - { -! s = alloc((unsigned)(prevlen + buflen)); -! if (s != NULL) -! { -! mch_memmove(s, prev, prevlen); -! mch_memmove(s + prevlen, buf, buflen); -! vim_free(prev); -! prev = s; -! prevlen += buflen; -! } - } -! filtd = 0; - } - } -! else -! { -! mch_memmove(buf, buf + tolist, buflen - tolist); -! filtd -= tolist; -! } -! } - - /* - * For a negative line count use only the lines at the end of the file, - * free the rest. - */ -! if (maxline < 0) - while (cnt > -maxline) - { - listitem_remove(rettv->vval.v_list, rettv->vval.v_list->lv_first); - --cnt; - } - - vim_free(prev); - fclose(fd); - } ---- 14421,14529 ---- - li->li_tv.vval.v_string = s; - list_append(rettv->vval.v_list, li); - -! start = p + 1; /* step over newline */ -! if ((++cnt >= maxline && maxline >= 0) || readlen <= 0) - break; - } -! else if (*p == NUL) -! *p = '\n'; - #ifdef FEAT_MBYTE -! /* Check for utf8 "bom"; U+FEFF is encoded as EF BB BF. Do this -! * when finding the BF and check the previous two bytes. */ -! else if (*p == 0xbf && enc_utf8 && !binary) -! { -! /* Find the two bytes before the 0xbf. If p is at buf, or buf -! * + 1, these may be in the "prev" string. */ -! char_u back1 = p >= buf + 1 ? p[-1] -! : prevlen >= 1 ? prev[prevlen - 1] : NUL; -! char_u back2 = p >= buf + 2 ? p[-2] -! : p == buf + 1 && prevlen >= 1 ? prev[prevlen - 1] -! : prevlen >= 2 ? prev[prevlen - 2] : NUL; -! -! if (back2 == 0xef && back1 == 0xbb) -! { -! char_u *dest = p - 2; -! -! /* Usually a BOM is at the beginning of a file, and so at -! * the beginning of a line; then we can just step over it. -! */ -! if (start == dest) -! start = p + 1; -! else -! { -! /* have to shuffle buf to close gap */ -! int adjust_prevlen = 0; -! -! if (dest < buf) -! { -! adjust_prevlen = buf - dest; /* must be 1 or 2 */ -! dest = buf; -! } -! if (readlen > p - buf + 1) -! mch_memmove(dest, p + 1, readlen - (p - buf) - 1); -! readlen -= 3 - adjust_prevlen; -! prevlen -= adjust_prevlen; -! p = dest - 1; -! } -! } - } - #endif -! } /* for */ - -! if (failed || (cnt >= maxline && maxline >= 0) || readlen <= 0) -! break; -! if (start < p) - { -! /* There's part of a line in buf, store it in "prev". */ -! if (p - start + prevlen >= prevsize) - { -! /* need bigger "prev" buffer */ -! char_u *newprev; -! -! /* A common use case is ordinary text files and "prev" gets a -! * fragment of a line, so the first allocation is made -! * small, to avoid repeatedly 'allocing' large and -! * 'reallocing' small. */ -! if (prevsize == 0) -! prevsize = p - start; -! else - { -! long grow50pc = (prevsize * 3) / 2; -! long growmin = (p - start) * 2 + prevlen; -! prevsize = grow50pc > growmin ? grow50pc : growmin; - } -! if ((newprev = vim_realloc(prev, prevsize)) == NULL) - { -! do_outofmem_msg((long_u)prevsize); -! failed = TRUE; -! break; - } -! prev = newprev; - } -+ /* Add the line part to end of "prev". */ -+ mch_memmove(prev + prevlen, start, p - start); -+ prevlen += p - start; - } -! } /* while */ - - /* - * For a negative line count use only the lines at the end of the file, - * free the rest. - */ -! if (!failed && maxline < 0) - while (cnt > -maxline) - { - listitem_remove(rettv->vval.v_list, rettv->vval.v_list->lv_first); - --cnt; - } - -+ if (failed) -+ { -+ list_free(rettv->vval.v_list, TRUE); -+ /* readfile doc says an empty list is returned on error */ -+ rettv->vval.v_list = list_alloc(); -+ } -+ - vim_free(prev); - fclose(fd); - } -*** ../vim-7.3.426/src/version.c 2012-02-04 23:34:57.000000000 +0100 ---- src/version.c 2012-02-05 00:38:34.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 427, - /**/ - --- -One difference between a man and a machine is that a machine is quiet -when well oiled. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.428 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.428 -Problem: Win32: an xpm file without a mask crashes Vim. -Solution: Fail when the mask is missing. (Dave Bodenstab) -Files: src/xpm_w32.c - - -*** ../vim-7.3.427/src/xpm_w32.c 2010-08-15 21:57:25.000000000 +0200 ---- src/xpm_w32.c 2012-02-05 00:46:13.000000000 +0100 -*************** -*** 1,4 **** -! /* - * Load XPM image. - * - * This function is placed in separate file because Xpm headers conflict with ---- 1,5 ---- -! /* vi:set ts=8 sts=4 sw=4: -! * - * Load XPM image. - * - * This function is placed in separate file because Xpm headers conflict with -*************** -*** 30,38 **** - #include "xpm.h" - - /* -! * Tries to load Xpm image from file 'filename'. -! * If fails return -1. -! * success - 0 and image and mask BITMAPS - */ - int - LoadXpmImage(filename, hImage, hShape) ---- 31,40 ---- - #include "xpm.h" - - /* -! * Tries to load an Xpm image from the file "filename". -! * Returns -1 on failure. -! * Returns 0 on success and stores image and mask BITMAPS in "hImage" and -! * "hShape". - */ - int - LoadXpmImage(filename, hImage, hShape) -*************** -*** 40,46 **** - HBITMAP *hImage; - HBITMAP *hShape; - { -! XImage *img; /* loaded image */ - XImage *shp; /* shapeimage */ - XpmAttributes attr; - int res; ---- 42,48 ---- - HBITMAP *hImage; - HBITMAP *hShape; - { -! XImage *img; /* loaded image */ - XImage *shp; /* shapeimage */ - XpmAttributes attr; - int res; -*************** -*** 51,60 **** - DeleteDC(hdc); - if (res < 0) - return -1; -! else - { -! *hImage = img->bitmap; -! *hShape = shp->bitmap; -! return 0; - } - } ---- 53,65 ---- - DeleteDC(hdc); - if (res < 0) - return -1; -! if (shp == NULL) - { -! if (img) -! XDestroyImage(img); -! return -1; - } -+ *hImage = img->bitmap; -+ *hShape = shp->bitmap; -+ return 0; - } -*** ../vim-7.3.427/src/version.c 2012-02-05 00:39:14.000000000 +0100 ---- src/version.c 2012-02-05 00:47:08.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 428, - /**/ - --- -I'm not familiar with this proof, but I'm aware of a significant -following of toddlers who believe that peanut butter is the solution -to all of life's problems... -- Tim Hammerquist - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.429 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.429 -Problem: When 'cpoptions' includes "E" "c0" in the first column is an - error. The redo register is then set to the errornous command. -Solution: Do not set the redo register if the command fails because of an - empty region. (Hideki Eiraku) -Files: src/getchar.c, src/normal.c, src/proto/getchar.pro - - -*** ../vim-7.3.428/src/getchar.c 2012-01-10 22:26:12.000000000 +0100 ---- src/getchar.c 2012-02-05 01:05:09.000000000 +0100 -*************** -*** 470,475 **** ---- 470,493 ---- - } - } - -+ /* -+ * Discard the contents of the redo buffer and restore the previous redo -+ * buffer. -+ */ -+ void -+ CancelRedo() -+ { -+ if (!block_redo) -+ { -+ free_buff(&redobuff); -+ redobuff = old_redobuff; -+ old_redobuff.bh_first.b_next = NULL; -+ start_stuff(); -+ while (read_stuff(TRUE) != NUL) -+ ; -+ } -+ } -+ - #if defined(FEAT_AUTOCMD) || defined(FEAT_EVAL) || defined(PROTO) - /* - * Save redobuff and old_redobuff to save_redobuff and save_old_redobuff. -*************** -*** 691,699 **** - * Read a character from the redo buffer. Translates K_SPECIAL, CSI and - * multibyte characters. - * The redo buffer is left as it is. -! * if init is TRUE, prepare for redo, return FAIL if nothing to redo, OK -! * otherwise -! * if old is TRUE, use old_redobuff instead of redobuff - */ - static int - read_redo(init, old_redo) ---- 709,717 ---- - * Read a character from the redo buffer. Translates K_SPECIAL, CSI and - * multibyte characters. - * The redo buffer is left as it is. -! * If init is TRUE, prepare for redo, return FAIL if nothing to redo, OK -! * otherwise. -! * If old is TRUE, use old_redobuff instead of redobuff. - */ - static int - read_redo(init, old_redo) -*** ../vim-7.3.428/src/normal.c 2012-01-26 11:43:04.000000000 +0100 ---- src/normal.c 2012-02-05 01:06:01.000000000 +0100 -*************** -*** 1978,1984 **** ---- 1978,1987 ---- - VIsual_reselect = FALSE; /* don't reselect now */ - #endif - if (empty_region_error) -+ { - vim_beep(); -+ CancelRedo(); -+ } - else - { - (void)op_delete(oap); -*************** -*** 1992,1998 **** ---- 1995,2004 ---- - if (empty_region_error) - { - if (!gui_yank) -+ { - vim_beep(); -+ CancelRedo(); -+ } - } - else - (void)op_yank(oap, FALSE, !gui_yank); -*************** -*** 2004,2010 **** ---- 2010,2019 ---- - VIsual_reselect = FALSE; /* don't reselect now */ - #endif - if (empty_region_error) -+ { - vim_beep(); -+ CancelRedo(); -+ } - else - { - /* This is a new edit command, not a restart. Need to -*************** -*** 2066,2072 **** ---- 2075,2084 ---- - case OP_LOWER: - case OP_ROT13: - if (empty_region_error) -+ { - vim_beep(); -+ CancelRedo(); -+ } - else - op_tilde(oap); - check_cursor_col(); -*************** -*** 2099,2105 **** ---- 2111,2120 ---- - #endif - #ifdef FEAT_VISUALEXTRA - if (empty_region_error) -+ { - vim_beep(); -+ CancelRedo(); -+ } - else - { - /* This is a new edit command, not a restart. Need to -*************** -*** 2129,2135 **** ---- 2144,2153 ---- - #ifdef FEAT_VISUALEXTRA - if (empty_region_error) - #endif -+ { - vim_beep(); -+ CancelRedo(); -+ } - #ifdef FEAT_VISUALEXTRA - else - op_replace(oap, cap->nchar); -*** ../vim-7.3.428/src/proto/getchar.pro 2010-10-20 21:22:17.000000000 +0200 ---- src/proto/getchar.pro 2012-02-05 01:05:20.000000000 +0100 -*************** -*** 4,11 **** - char_u *get_inserted __ARGS((void)); - int stuff_empty __ARGS((void)); - void typeahead_noflush __ARGS((int c)); -! void flush_buffers __ARGS((int typeahead)); - void ResetRedobuff __ARGS((void)); - void saveRedobuff __ARGS((void)); - void restoreRedobuff __ARGS((void)); - void AppendToRedobuff __ARGS((char_u *s)); ---- 4,12 ---- - char_u *get_inserted __ARGS((void)); - int stuff_empty __ARGS((void)); - void typeahead_noflush __ARGS((int c)); -! void flush_buffers __ARGS((int flush_typeahead)); - void ResetRedobuff __ARGS((void)); -+ void CancelRedo __ARGS((void)); - void saveRedobuff __ARGS((void)); - void restoreRedobuff __ARGS((void)); - void AppendToRedobuff __ARGS((char_u *s)); -*** ../vim-7.3.428/src/version.c 2012-02-05 00:47:56.000000000 +0100 ---- src/version.c 2012-02-05 01:09:23.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 429, - /**/ - --- -The History of every major Galactic Civilization tends to pass through -three distinct and recognizable phases, those of Survival, Inquiry and -Sophistication, otherwise known as the How, Why and Where phases. -For instance, the first phase is characterized by the question 'How can -we eat?' the second by the question 'Why do we eat?' and the third by -the question 'Where shall we have lunch?' - -- 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/ \\\ -\\\ an exciting new programming language -- http://www.Zimbu.org /// - \\\ help me help AIDS victims -- http://ICCF-Holland.org /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.430 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.430 -Problem: When a custom filetype detection uses "augroup END" the conf - fileytpe detection does not have the filetypedetect group. -Solution: Always end the group and include filetypedetect in the conf - autocommand. (Lech Lorens) -Files: runtime/filetype.vim - - -*** ../vim-7.3.429/runtime/filetype.vim 2012-02-05 20:08:08.000000000 +0100 ---- runtime/filetype.vim 2012-02-05 19:59:40.000000000 +0100 -*************** -*** 2545,2561 **** - " detected filetypes. - runtime! ftdetect/*.vim - - - " Generic configuration file (check this last, it's just guessing!) -! au BufNewFile,BufRead,StdinReadPost * - \ if !did_filetype() && expand("<amatch>") !~ g:ft_ignore_pat - \ && (getline(1) =~ '^#' || getline(2) =~ '^#' || getline(3) =~ '^#' - \ || getline(4) =~ '^#' || getline(5) =~ '^#') | - \ setf conf | - \ endif - -- augroup END -- - - " If the GUI is already running, may still need to install the Syntax menu. - " Don't do it when the 'M' flag is included in 'guioptions'. ---- 2545,2563 ---- - " detected filetypes. - runtime! ftdetect/*.vim - -+ " NOTE: The above command could have ended the filetypedetect autocmd group -+ " and started another one. Let's make sure it has ended to get to a consistant -+ " state. -+ augroup END - - " Generic configuration file (check this last, it's just guessing!) -! au filetypedetect BufNewFile,BufRead,StdinReadPost * - \ if !did_filetype() && expand("<amatch>") !~ g:ft_ignore_pat - \ && (getline(1) =~ '^#' || getline(2) =~ '^#' || getline(3) =~ '^#' - \ || getline(4) =~ '^#' || getline(5) =~ '^#') | - \ setf conf | - \ endif - - - " If the GUI is already running, may still need to install the Syntax menu. - " Don't do it when the 'M' flag is included in 'guioptions'. -*** ../vim-7.3.429/src/version.c 2012-02-05 01:18:41.000000000 +0100 ---- src/version.c 2012-02-05 20:02:18.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 430, - /**/ - --- -The technology involved in making anything invisible is so infinitely -complex that nine hundred and ninety-nine billion, nine hundred and -ninety-nine million, nine hundred and ninety-nine thousand, nine hundred -and ninety-nine times out of a trillion it is much simpler and more -effective just to take the thing away and do without it. - -- 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/ \\\ -\\\ an exciting new programming language -- http://www.Zimbu.org /// - \\\ help me help AIDS victims -- http://ICCF-Holland.org /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.431 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.431 -Problem: Fetching a key at a prompt may be confused by escape sequences. - Especially when getting a prompt at a VimEnter autocommand. - (Alex Efros) -Solution: Properly handle escape sequences deleted by check_termcode(). -Files: src/getchar.c, src/misc1.c, src/term.c, src/proto/term.pro - - -*** ../vim-7.3.430/src/getchar.c 2012-02-05 01:18:41.000000000 +0100 ---- src/getchar.c 2012-02-05 22:04:33.000000000 +0100 -*************** -*** 2282,2288 **** - typebuf.tb_off] == RM_YES)) - && !timedout) - { -! keylen = check_termcode(max_mlen + 1, NULL, 0); - - /* If no termcode matched but 'pastetoggle' - * matched partially it's like an incomplete key ---- 2282,2289 ---- - typebuf.tb_off] == RM_YES)) - && !timedout) - { -! keylen = check_termcode(max_mlen + 1, -! NULL, 0, NULL); - - /* If no termcode matched but 'pastetoggle' - * matched partially it's like an incomplete key -*** ../vim-7.3.430/src/misc1.c 2012-01-10 18:37:53.000000000 +0100 ---- src/misc1.c 2012-02-05 21:59:53.000000000 +0100 -*************** -*** 3105,3112 **** - int - get_keystroke() - { -! #define CBUFLEN 151 -! char_u buf[CBUFLEN]; - int len = 0; - int n; - int save_mapped_ctrl_c = mapped_ctrl_c; ---- 3105,3113 ---- - int - get_keystroke() - { -! char_u *buf = NULL; -! int buflen = 150; -! int maxlen; - int len = 0; - int n; - int save_mapped_ctrl_c = mapped_ctrl_c; -*************** -*** 3118,3129 **** - cursor_on(); - out_flush(); - - /* First time: blocking wait. Second time: wait up to 100ms for a -! * terminal code to complete. Leave some room for check_termcode() to -! * insert a key code into (max 5 chars plus NUL). And -! * fix_input_buffer() can triple the number of bytes. */ -! n = ui_inchar(buf + len, (CBUFLEN - 6 - len) / 3, -! len == 0 ? -1L : 100L, 0); - if (n > 0) - { - /* Replace zero and CSI by a special key code. */ ---- 3119,3147 ---- - cursor_on(); - out_flush(); - -+ /* Leave some room for check_termcode() to insert a key code into (max -+ * 5 chars plus NUL). And fix_input_buffer() can triple the number of -+ * bytes. */ -+ maxlen = (buflen - 6 - len) / 3; -+ if (buf == NULL) -+ buf = alloc(buflen); -+ else if (maxlen < 10) -+ { -+ /* Need some more space. This migth happen when receiving a long -+ * escape sequence. */ -+ buflen += 100; -+ buf = vim_realloc(buf, buflen); -+ maxlen = (buflen - 6 - len) / 3; -+ } -+ if (buf == NULL) -+ { -+ do_outofmem_msg((long_u)buflen); -+ return ESC; /* panic! */ -+ } -+ - /* First time: blocking wait. Second time: wait up to 100ms for a -! * terminal code to complete. */ -! n = ui_inchar(buf + len, maxlen, len == 0 ? -1L : 100L, 0); - if (n > 0) - { - /* Replace zero and CSI by a special key code. */ -*************** -*** 3135,3141 **** - ++waited; /* keep track of the waiting time */ - - /* Incomplete termcode and not timed out yet: get more characters */ -! if ((n = check_termcode(1, buf, len)) < 0 - && (!p_ttimeout || waited * 100L < (p_ttm < 0 ? p_tm : p_ttm))) - continue; - ---- 3153,3159 ---- - ++waited; /* keep track of the waiting time */ - - /* Incomplete termcode and not timed out yet: get more characters */ -! if ((n = check_termcode(1, buf, buflen, &len)) < 0 - && (!p_ttimeout || waited * 100L < (p_ttm < 0 ? p_tm : p_ttm))) - continue; - -*************** -*** 3203,3209 **** - { - if (MB_BYTE2LEN(n) > len) - continue; /* more bytes to get */ -! buf[len >= CBUFLEN ? CBUFLEN - 1 : len] = NUL; - n = (*mb_ptr2char)(buf); - } - #endif ---- 3221,3227 ---- - { - if (MB_BYTE2LEN(n) > len) - continue; /* more bytes to get */ -! buf[len >= buflen ? buflen - 1 : len] = NUL; - n = (*mb_ptr2char)(buf); - } - #endif -*************** -*** 3213,3218 **** ---- 3231,3237 ---- - #endif - break; - } -+ vim_free(buf); - - mapped_ctrl_c = save_mapped_ctrl_c; - return n; -*** ../vim-7.3.430/src/term.c 2012-01-26 13:01:54.000000000 +0100 ---- src/term.c 2012-02-05 21:45:09.000000000 +0100 -*************** -*** 3785,3798 **** - * With a match, the match is removed, the replacement code is inserted in - * typebuf.tb_buf[] and the number of characters in typebuf.tb_buf[] is - * returned. -! * When "buf" is not NULL, it is used instead of typebuf.tb_buf[]. "buflen" is -! * then the length of the string in buf[]. - */ - int -! check_termcode(max_offset, buf, buflen) - int max_offset; - char_u *buf; -! int buflen; - { - char_u *tp; - char_u *p; ---- 3785,3800 ---- - * With a match, the match is removed, the replacement code is inserted in - * typebuf.tb_buf[] and the number of characters in typebuf.tb_buf[] is - * returned. -! * When "buf" is not NULL, buf[bufsize] is used instead of typebuf.tb_buf[]. -! * "buflen" is then the length of the string in buf[] and is updated for -! * inserts and deletes. - */ - int -! check_termcode(max_offset, buf, bufsize, buflen) - int max_offset; - char_u *buf; -! int bufsize; -! int *buflen; - { - char_u *tp; - char_u *p; -*************** -*** 3864,3873 **** - } - else - { -! if (offset >= buflen) - break; - tp = buf + offset; -! len = buflen - offset; - } - - /* ---- 3866,3875 ---- - } - else - { -! if (offset >= *buflen) - break; - tp = buf + offset; -! len = *buflen - offset; - } - - /* -*************** -*** 5002,5013 **** - if (extra < 0) - /* remove matched characters */ - mch_memmove(buf + offset, buf + offset - extra, -! (size_t)(buflen + offset + extra)); - else if (extra > 0) -! /* insert the extra space we need */ - mch_memmove(buf + offset + extra, buf + offset, -! (size_t)(buflen - offset)); - mch_memmove(buf + offset, string, (size_t)new_slen); - } - return retval == 0 ? (len + extra + offset) : retval; - } ---- 5004,5021 ---- - if (extra < 0) - /* remove matched characters */ - mch_memmove(buf + offset, buf + offset - extra, -! (size_t)(*buflen + offset + extra)); - else if (extra > 0) -! { -! /* Insert the extra space we need. If there is insufficient -! * space return -1. */ -! if (*buflen + extra + new_slen >= bufsize) -! return -1; - mch_memmove(buf + offset + extra, buf + offset, -! (size_t)(*buflen - offset)); -! } - mch_memmove(buf + offset, string, (size_t)new_slen); -+ *buflen = *buflen + extra + new_slen; - } - return retval == 0 ? (len + extra + offset) : retval; - } -*** ../vim-7.3.430/src/proto/term.pro 2010-08-15 21:57:28.000000000 +0200 ---- src/proto/term.pro 2012-02-05 21:45:16.000000000 +0100 -*************** -*** 50,56 **** - char_u *get_termcode __ARGS((int i)); - void del_termcode __ARGS((char_u *name)); - void set_mouse_topline __ARGS((win_T *wp)); -! int check_termcode __ARGS((int max_offset, char_u *buf, int buflen)); - char_u *replace_termcodes __ARGS((char_u *from, char_u **bufp, int from_part, int do_lt, int special)); - int find_term_bykeys __ARGS((char_u *src)); - void show_termcodes __ARGS((void)); ---- 50,56 ---- - char_u *get_termcode __ARGS((int i)); - void del_termcode __ARGS((char_u *name)); - void set_mouse_topline __ARGS((win_T *wp)); -! int check_termcode __ARGS((int max_offset, char_u *buf, int bufsize, int *buflen)); - char_u *replace_termcodes __ARGS((char_u *from, char_u **bufp, int from_part, int do_lt, int special)); - int find_term_bykeys __ARGS((char_u *src)); - void show_termcodes __ARGS((void)); -*** ../vim-7.3.430/src/version.c 2012-02-05 20:08:30.000000000 +0100 ---- src/version.c 2012-02-05 22:03:43.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 431, - /**/ - --- -"You know, it's at times like this when I'm trapped in a Vogon airlock with -a man from Betelgeuse and about to die of asphyxiation in deep space that I -really wish I'd listened to what my mother told me when I was young!" -"Why, what did she tell you?" -"I don't know, I didn't listen!" - -- Arthur Dent and Ford Prefect 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/ \\\ -\\\ an exciting new programming language -- http://www.Zimbu.org /// - \\\ help me help AIDS victims -- http://ICCF-Holland.org /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.432 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.432 -Problem: ACLs are not supported for ZFS or NFSv4 on Solaris. -Solution: Add configure check and code. (Danek Duvall) -Files: src/configure.in, src/auto/configure, src/config.h.in, - src/os_unix.c - - -*** ../vim-7.3.431/src/configure.in 2011-12-14 20:51:19.000000000 +0100 ---- src/configure.in 2012-02-05 22:40:22.000000000 +0100 -*************** -*** 3106,3111 **** ---- 3106,3112 ---- - - dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI - dnl when -lacl works, also try to use -lattr (required for Debian). -+ dnl On Solaris, use the acl_get/set functions in libsec, if present. - AC_MSG_CHECKING(--disable-acl argument) - AC_ARG_ENABLE(acl, - [ --disable-acl Don't check for ACL support.], -*************** -*** 3128,3133 **** ---- 3129,3135 ---- - AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL), - AC_MSG_RESULT(no)) - -+ AC_CHECK_LIB(sec, acl_get, [LIBS="$LIBS -lsec"; AC_DEFINE(HAVE_SOLARIS_ZFS_ACL)], - AC_MSG_CHECKING(for Solaris ACL support) - AC_TRY_LINK([ - #ifdef HAVE_SYS_ACL_H -*************** -*** 3135,3141 **** - #endif], [acl("foo", GETACLCNT, 0, NULL); - ], - AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL), -! AC_MSG_RESULT(no)) - - AC_MSG_CHECKING(for AIX ACL support) - AC_TRY_LINK([ ---- 3137,3143 ---- - #endif], [acl("foo", GETACLCNT, 0, NULL); - ], - AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL), -! AC_MSG_RESULT(no))) - - AC_MSG_CHECKING(for AIX ACL support) - AC_TRY_LINK([ -*** ../vim-7.3.431/src/auto/configure 2011-12-14 20:51:19.000000000 +0100 ---- src/auto/configure 2012-02-05 22:41:01.000000000 +0100 -*************** -*** 11328,11334 **** - rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - -! { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Solaris ACL support" >&5 - $as_echo_n "checking for Solaris ACL support... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ ---- 11328,11374 ---- - rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - -! { $as_echo "$as_me:${as_lineno-$LINENO}: checking for acl_get in -lsec" >&5 -! $as_echo_n "checking for acl_get in -lsec... " >&6; } -! if test "${ac_cv_lib_sec_acl_get+set}" = set; then : -! $as_echo_n "(cached) " >&6 -! else -! ac_check_lib_save_LIBS=$LIBS -! LIBS="-lsec $LIBS" -! cat confdefs.h - <<_ACEOF >conftest.$ac_ext -! /* end confdefs.h. */ -! -! /* Override any GCC internal prototype to avoid an error. -! Use char because int might match the return type of a GCC -! builtin and then its argument prototype would still apply. */ -! #ifdef __cplusplus -! extern "C" -! #endif -! char acl_get (); -! int -! main () -! { -! return acl_get (); -! ; -! return 0; -! } -! _ACEOF -! if ac_fn_c_try_link "$LINENO"; then : -! ac_cv_lib_sec_acl_get=yes -! else -! ac_cv_lib_sec_acl_get=no -! fi -! rm -f core conftest.err conftest.$ac_objext \ -! conftest$ac_exeext conftest.$ac_ext -! LIBS=$ac_check_lib_save_LIBS -! fi -! { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sec_acl_get" >&5 -! $as_echo "$ac_cv_lib_sec_acl_get" >&6; } -! if test "x$ac_cv_lib_sec_acl_get" = x""yes; then : -! LIBS="$LIBS -lsec"; $as_echo "#define HAVE_SOLARIS_ZFS_ACL 1" >>confdefs.h -! -! else -! { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Solaris ACL support" >&5 - $as_echo_n "checking for Solaris ACL support... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ -*************** -*** 11355,11360 **** ---- 11395,11402 ---- - fi - rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -+ fi -+ - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for AIX ACL support" >&5 - $as_echo_n "checking for AIX ACL support... " >&6; } -*** ../vim-7.3.431/src/config.h.in 2011-09-02 12:27:20.000000000 +0200 ---- src/config.h.in 2012-02-05 22:40:22.000000000 +0100 -*************** -*** 363,368 **** ---- 363,369 ---- - - /* Define if you want to add support for ACL */ - #undef HAVE_POSIX_ACL -+ #undef HAVE_SOLARIS_ZFS_ACL - #undef HAVE_SOLARIS_ACL - #undef HAVE_AIX_ACL - -*** ../vim-7.3.431/src/os_unix.c 2012-01-10 22:26:12.000000000 +0100 ---- src/os_unix.c 2012-02-05 22:40:22.000000000 +0100 -*************** -*** 2746,2751 **** ---- 2746,2758 ---- - #ifdef HAVE_POSIX_ACL - ret = (vim_acl_T)acl_get_file((char *)fname, ACL_TYPE_ACCESS); - #else -+ #ifdef HAVE_SOLARIS_ZFS_ACL -+ acl_t *aclent; -+ -+ if (acl_get((char *)fname, 0, &aclent) < 0) -+ return NULL; -+ ret = (vim_acl_T)aclent; -+ #else - #ifdef HAVE_SOLARIS_ACL - vim_acl_solaris_T *aclent; - -*************** -*** 2791,2796 **** ---- 2798,2804 ---- - ret = (vim_acl_T)aclent; - #endif /* HAVE_AIX_ACL */ - #endif /* HAVE_SOLARIS_ACL */ -+ #endif /* HAVE_SOLARIS_ZFS_ACL */ - #endif /* HAVE_POSIX_ACL */ - return ret; - } -*************** -*** 2808,2813 **** ---- 2816,2824 ---- - #ifdef HAVE_POSIX_ACL - acl_set_file((char *)fname, ACL_TYPE_ACCESS, (acl_t)aclent); - #else -+ #ifdef HAVE_SOLARIS_ZFS_ACL -+ acl_set((char *)fname, (acl_t *)aclent); -+ #else - #ifdef HAVE_SOLARIS_ACL - acl((char *)fname, SETACL, ((vim_acl_solaris_T *)aclent)->acl_cnt, - ((vim_acl_solaris_T *)aclent)->acl_entry); -*************** -*** 2816,2821 **** ---- 2827,2833 ---- - chacl((char *)fname, aclent, ((struct acl *)aclent)->acl_len); - #endif /* HAVE_AIX_ACL */ - #endif /* HAVE_SOLARIS_ACL */ -+ #endif /* HAVE_SOLARIS_ZFS_ACL */ - #endif /* HAVE_POSIX_ACL */ - } - -*************** -*** 2828,2833 **** ---- 2840,2848 ---- - #ifdef HAVE_POSIX_ACL - acl_free((acl_t)aclent); - #else -+ #ifdef HAVE_SOLARIS_ZFS_ACL -+ acl_free((acl_t *)aclent); -+ #else - #ifdef HAVE_SOLARIS_ACL - free(((vim_acl_solaris_T *)aclent)->acl_entry); - free(aclent); -*************** -*** 2836,2841 **** ---- 2851,2857 ---- - free(aclent); - #endif /* HAVE_AIX_ACL */ - #endif /* HAVE_SOLARIS_ACL */ -+ #endif /* HAVE_SOLARIS_ZFS_ACL */ - #endif /* HAVE_POSIX_ACL */ - } - #endif -*** ../vim-7.3.431/src/version.c 2012-02-05 22:05:44.000000000 +0100 ---- src/version.c 2012-02-05 22:44:10.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 432, - /**/ - --- -If you put 7 of the most talented OSS developers in a room for a week -and asked them to fix a bug in a spreadsheet program, in 1 week -you'd have 2 new mail readers and a text-based web browser. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.433 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.433 -Problem: Using continued lines in a Vim script can be slow. -Solution: Instead of reallocating for every line use a growarray. (Yasuhiro - Matsumoto) -Files: src/ex_cmds2.c - - -*** ../vim-7.3.432/src/ex_cmds2.c 2012-02-04 21:57:44.000000000 +0100 ---- src/ex_cmds2.c 2012-02-05 23:06:31.000000000 +0100 -*************** -*** 3439,3460 **** - { - /* compensate for the one line read-ahead */ - --sourcing_lnum; -! for (;;) - { -! sp->nextline = get_one_sourceline(sp); -! if (sp->nextline == NULL) -! break; -! p = skipwhite(sp->nextline); -! if (*p != '\\') -! break; -! s = alloc((unsigned)(STRLEN(line) + STRLEN(p))); -! if (s == NULL) /* out of memory */ -! break; -! STRCPY(s, line); -! STRCAT(s, p + 1); - vim_free(line); -! line = s; -! vim_free(sp->nextline); - } - } - ---- 3439,3470 ---- - { - /* compensate for the one line read-ahead */ - --sourcing_lnum; -! -! /* Get the next line and concatenate it when it starts with a -! * backslash. We always need to read the next line, keep it in -! * sp->nextline. */ -! sp->nextline = get_one_sourceline(sp); -! if (sp->nextline != NULL && *(p = skipwhite(sp->nextline)) == '\\') - { -! garray_T ga; -! -! ga_init2(&ga, (int)sizeof(char_u), 200); -! ga_concat(&ga, line); -! ga_concat(&ga, p + 1); -! for (;;) -! { -! vim_free(sp->nextline); -! sp->nextline = get_one_sourceline(sp); -! if (sp->nextline == NULL) -! break; -! p = skipwhite(sp->nextline); -! if (*p != '\\') -! break; -! ga_concat(&ga, p + 1); -! } -! ga_append(&ga, NUL); - vim_free(line); -! line = ga.ga_data; - } - } - -*** ../vim-7.3.432/src/version.c 2012-02-05 22:51:27.000000000 +0100 ---- src/version.c 2012-02-05 23:09:21.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 433, - /**/ - --- -Due knot trussed yore spell chequer two fined awl miss steaks. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.434 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.434 -Problem: Using join() can be slow. -Solution: Compute the size of the result before allocation to avoid a lot of - allocations and copies. (Taro Muraoka) -Files: src/eval.c - - -*** ../vim-7.3.433/src/eval.c 2012-02-05 00:39:14.000000000 +0100 ---- src/eval.c 2012-02-06 00:05:31.000000000 +0100 -*************** -*** 442,447 **** ---- 442,448 ---- - static list_T *list_copy __ARGS((list_T *orig, int deep, int copyID)); - static void list_remove __ARGS((list_T *l, listitem_T *item, listitem_T *item2)); - static char_u *list2string __ARGS((typval_T *tv, int copyID)); -+ static int list_join_inner __ARGS((garray_T *gap, list_T *l, char_u *sep, int echo_style, int copyID, garray_T *join_gap)); - static int list_join __ARGS((garray_T *gap, list_T *l, char_u *sep, int echo, int copyID)); - static int free_unref_items __ARGS((int copyID)); - static void set_ref_in_ht __ARGS((hashtab_T *ht, int copyID)); -*************** -*** 6571,6617 **** - return (char_u *)ga.ga_data; - } - -! /* -! * Join list "l" into a string in "*gap", using separator "sep". -! * When "echo_style" is TRUE use String as echoed, otherwise as inside a List. -! * Return FAIL or OK. -! */ - static int -! list_join(gap, l, sep, echo_style, copyID) -! garray_T *gap; - list_T *l; - char_u *sep; - int echo_style; - int copyID; - { - int first = TRUE; - char_u *tofree; - char_u numbuf[NUMBUFLEN]; - listitem_T *item; - char_u *s; - - for (item = l->lv_first; item != NULL && !got_int; item = item->li_next) - { -- if (first) -- first = FALSE; -- else -- ga_concat(gap, sep); -- - if (echo_style) - s = echo_string(&item->li_tv, &tofree, numbuf, copyID); - else - s = tv2string(&item->li_tv, &tofree, numbuf, copyID); -- if (s != NULL) -- ga_concat(gap, s); -- vim_free(tofree); - if (s == NULL) - return FAIL; - line_breakcheck(); - } - return OK; - } - - /* - * Garbage collection for lists and dictionaries. - * - * We use reference counts to be able to free most items right away when they ---- 6572,6690 ---- - return (char_u *)ga.ga_data; - } - -! typedef struct join_S { -! char_u *s; -! char_u *tofree; -! } join_T; -! - static int -! list_join_inner(gap, l, sep, echo_style, copyID, join_gap) -! garray_T *gap; /* to store the result in */ - list_T *l; - char_u *sep; - int echo_style; - int copyID; -+ garray_T *join_gap; /* to keep each list item string */ - { -+ int i; -+ join_T *p; -+ int len; -+ int sumlen = 0; - int first = TRUE; - char_u *tofree; - char_u numbuf[NUMBUFLEN]; - listitem_T *item; - char_u *s; - -+ /* Stringify each item in the list. */ - for (item = l->lv_first; item != NULL && !got_int; item = item->li_next) - { - if (echo_style) - s = echo_string(&item->li_tv, &tofree, numbuf, copyID); - else - s = tv2string(&item->li_tv, &tofree, numbuf, copyID); - if (s == NULL) - return FAIL; -+ -+ len = (int)STRLEN(s); -+ sumlen += len; -+ -+ ga_grow(join_gap, 1); -+ p = ((join_T *)join_gap->ga_data) + (join_gap->ga_len++); -+ if (tofree != NULL || s != numbuf) -+ { -+ p->s = s; -+ p->tofree = tofree; -+ } -+ else -+ { -+ p->s = vim_strnsave(s, len); -+ p->tofree = p->s; -+ } -+ -+ line_breakcheck(); -+ } -+ -+ /* Allocate result buffer with its total size, avoid re-allocation and -+ * multiple copy operations. Add 2 for a tailing ']' and NUL. */ -+ if (join_gap->ga_len >= 2) -+ sumlen += (int)STRLEN(sep) * (join_gap->ga_len - 1); -+ if (ga_grow(gap, sumlen + 2) == FAIL) -+ return FAIL; -+ -+ for (i = 0; i < join_gap->ga_len && !got_int; ++i) -+ { -+ if (first) -+ first = FALSE; -+ else -+ ga_concat(gap, sep); -+ p = ((join_T *)join_gap->ga_data) + i; -+ -+ if (p->s != NULL) -+ ga_concat(gap, p->s); - line_breakcheck(); - } -+ - return OK; - } - - /* -+ * Join list "l" into a string in "*gap", using separator "sep". -+ * When "echo_style" is TRUE use String as echoed, otherwise as inside a List. -+ * Return FAIL or OK. -+ */ -+ static int -+ list_join(gap, l, sep, echo_style, copyID) -+ garray_T *gap; -+ list_T *l; -+ char_u *sep; -+ int echo_style; -+ int copyID; -+ { -+ garray_T join_ga; -+ int retval; -+ join_T *p; -+ int i; -+ -+ ga_init2(&join_ga, (int)sizeof(join_T), l->lv_len); -+ retval = list_join_inner(gap, l, sep, echo_style, copyID, &join_ga); -+ -+ /* Dispose each item in join_ga. */ -+ if (join_ga.ga_data != NULL) -+ { -+ p = (join_T *)join_ga.ga_data; -+ for (i = 0; i < join_ga.ga_len; ++i) -+ { -+ vim_free(p->tofree); -+ ++p; -+ } -+ ga_clear(&join_ga); -+ } -+ -+ return retval; -+ } -+ -+ /* - * Garbage collection for lists and dictionaries. - * - * We use reference counts to be able to free most items right away when they -*************** -*** 13406,13412 **** - char_u *rhs; - int mode; - int abbr = FALSE; -! int get_dict = FALSE; - mapblock_T *mp; - int buffer_local; - ---- 13479,13485 ---- - char_u *rhs; - int mode; - int abbr = FALSE; -! int get_dict = FALSE; - mapblock_T *mp; - int buffer_local; - -*** ../vim-7.3.433/src/version.c 2012-02-05 23:10:25.000000000 +0100 ---- src/version.c 2012-02-06 00:10:23.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 434, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -30. Even though you died last week, you've managed to retain OPS on your - favorite IRC channel. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.435 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.435 -Problem: Compiler warning for unused variable. -Solution: Move the variable inside #ifdef. -Files: src/ex_cmds2.c - - -*** ../vim-7.3.434/src/ex_cmds2.c 2012-02-05 23:10:25.000000000 +0100 ---- src/ex_cmds2.c 2012-02-06 06:16:28.000000000 +0100 -*************** -*** 3400,3406 **** - { - struct source_cookie *sp = (struct source_cookie *)cookie; - char_u *line; -! char_u *p, *s; - - #ifdef FEAT_EVAL - /* If breakpoints have been added/deleted need to check for it. */ ---- 3400,3406 ---- - { - struct source_cookie *sp = (struct source_cookie *)cookie; - char_u *line; -! char_u *p; - - #ifdef FEAT_EVAL - /* If breakpoints have been added/deleted need to check for it. */ -*************** -*** 3471,3476 **** ---- 3471,3478 ---- - #ifdef FEAT_MBYTE - if (line != NULL && sp->conv.vc_type != CONV_NONE) - { -+ char_u *s; -+ - /* Convert the encoding of the script line. */ - s = string_convert(&sp->conv, line, NULL); - if (s != NULL) -*** ../vim-7.3.434/src/version.c 2012-02-06 00:13:16.000000000 +0100 ---- src/version.c 2012-02-11 20:38:49.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 435, - /**/ - --- -Light travels faster than sound. This is why some people -appear bright until you hear them speak - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.436 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.436 -Problem: Compiler warnings for types on Windows. -Solution: Add type casts. (Mike Williams) -Files: src/eval.c - - -*** ../vim-7.3.435/src/eval.c 2012-02-06 00:13:16.000000000 +0100 ---- src/eval.c 2012-02-11 20:38:16.000000000 +0100 -*************** -*** 14462,14468 **** - --prevlen; - } - if (prevlen == 0) -! s = vim_strnsave(start, len); - else - { - /* Change "prev" buffer to be the right size. This way ---- 14462,14468 ---- - --prevlen; - } - if (prevlen == 0) -! s = vim_strnsave(start, (int)len); - else - { - /* Change "prev" buffer to be the right size. This way -*************** -*** 14529,14535 **** - - if (dest < buf) - { -! adjust_prevlen = buf - dest; /* must be 1 or 2 */ - dest = buf; - } - if (readlen > p - buf + 1) ---- 14529,14535 ---- - - if (dest < buf) - { -! adjust_prevlen = (int)(buf - dest); /* must be 1 or 2 */ - dest = buf; - } - if (readlen > p - buf + 1) -*************** -*** 14558,14568 **** - * small, to avoid repeatedly 'allocing' large and - * 'reallocing' small. */ - if (prevsize == 0) -! prevsize = p - start; - else - { - long grow50pc = (prevsize * 3) / 2; -! long growmin = (p - start) * 2 + prevlen; - prevsize = grow50pc > growmin ? grow50pc : growmin; - } - if ((newprev = vim_realloc(prev, prevsize)) == NULL) ---- 14558,14568 ---- - * small, to avoid repeatedly 'allocing' large and - * 'reallocing' small. */ - if (prevsize == 0) -! prevsize = (long)(p - start); - else - { - long grow50pc = (prevsize * 3) / 2; -! long growmin = (long)((p - start) * 2 + prevlen); - prevsize = grow50pc > growmin ? grow50pc : growmin; - } - if ((newprev = vim_realloc(prev, prevsize)) == NULL) -*************** -*** 14575,14581 **** - } - /* Add the line part to end of "prev". */ - mch_memmove(prev + prevlen, start, p - start); -! prevlen += p - start; - } - } /* while */ - ---- 14575,14581 ---- - } - /* Add the line part to end of "prev". */ - mch_memmove(prev + prevlen, start, p - start); -! prevlen += (long)(p - start); - } - } /* while */ - -*** ../vim-7.3.435/src/version.c 2012-02-11 20:40:49.000000000 +0100 ---- src/version.c 2012-02-11 20:43:18.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 436, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -39. You move into a new house and decide to Netscape before you landscape. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.437 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.437 -Problem: Continue looping inside FOR_ALL_TAB_WINDOWS even when already done. -Solution: Use goto instead of break. (Hirohito Higashi) -Files: src/fileio.c, src/globals.h - - -*** ../vim-7.3.436/src/fileio.c 2011-09-02 11:56:15.000000000 +0200 ---- src/fileio.c 2012-02-11 23:40:23.000000000 +0100 -*************** -*** 8898,8907 **** - if (tp != curtab) - goto_tabpage_tp(tp); - win_goto(aucmd_win); -! break; - } - } - } - - /* Remove the window and frame from the tree of frames. */ - (void)winframe_remove(curwin, &dummy, NULL); ---- 8898,8908 ---- - if (tp != curtab) - goto_tabpage_tp(tp); - win_goto(aucmd_win); -! goto win_found; - } - } - } -+ win_found: - - /* Remove the window and frame from the tree of frames. */ - (void)winframe_remove(curwin, &dummy, NULL); -*** ../vim-7.3.436/src/globals.h 2012-02-04 23:34:57.000000000 +0100 ---- src/globals.h 2012-02-11 23:43:45.000000000 +0100 -*************** -*** 535,540 **** ---- 535,544 ---- - EXTERN win_T *prevwin INIT(= NULL); /* previous window */ - # define W_NEXT(wp) ((wp)->w_next) - # define FOR_ALL_WINDOWS(wp) for (wp = firstwin; wp != NULL; wp = wp->w_next) -+ /* -+ * When using this macro "break" only breaks out of the inner loop. Use "goto" -+ * to break out of the tabpage loop. -+ */ - # define FOR_ALL_TAB_WINDOWS(tp, wp) \ - for ((tp) = first_tabpage; (tp) != NULL; (tp) = (tp)->tp_next) \ - for ((wp) = ((tp) == curtab) \ -*** ../vim-7.3.436/src/version.c 2012-02-11 20:44:01.000000000 +0100 ---- src/version.c 2012-02-11 23:40:47.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 437, - /**/ - --- -The future isn't what it used to be. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.438 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.438 -Problem: There is no way to avoid ":doautoall" reading modelines. -Solution: Add the <nomodeline> argument. Adjust documentation. -Files: src/fileio.c, runtime/doc/autocmd.txt - - -*** ../vim-7.3.437/src/fileio.c 2012-02-11 23:45:30.000000000 +0100 ---- src/fileio.c 2012-02-12 00:08:17.000000000 +0100 -*************** -*** 8739,8744 **** ---- 8739,8752 ---- - int retval; - aco_save_T aco; - buf_T *buf; -+ char_u *arg = eap->arg; -+ int call_do_modelines = TRUE; -+ -+ if (STRNCMP(arg, "<nomodeline>", 12) == 0) -+ { -+ call_do_modelines = FALSE; -+ arg = skipwhite(arg + 12); -+ } - - /* - * This is a bit tricky: For some commands curwin->w_buffer needs to be -*************** -*** 8755,8765 **** - aucmd_prepbuf(&aco, buf); - - /* execute the autocommands for this buffer */ -! retval = do_doautocmd(eap->arg, FALSE); - -! /* Execute the modeline settings, but don't set window-local -! * options if we are using the current window for another buffer. */ -! do_modelines(curwin == aucmd_win ? OPT_NOWIN : 0); - - /* restore the current window */ - aucmd_restbuf(&aco); ---- 8763,8777 ---- - aucmd_prepbuf(&aco, buf); - - /* execute the autocommands for this buffer */ -! retval = do_doautocmd(arg, FALSE); - -! if (call_do_modelines) -! { -! /* Execute the modeline settings, but don't set window-local -! * options if we are using the current window for another -! * buffer. */ -! do_modelines(curwin == aucmd_win ? OPT_NOWIN : 0); -! } - - /* restore the current window */ - aucmd_restbuf(&aco); -*** ../vim-7.3.437/runtime/doc/autocmd.txt 2011-05-19 17:25:36.000000000 +0200 ---- runtime/doc/autocmd.txt 2012-02-12 00:03:45.000000000 +0100 -*************** -*** 1065,1077 **** - autocommands for that group. Note: if you use an - undefined group name, Vim gives you an error message. - -- After applying the autocommands the modelines are -- processed, so that their settings overrule the -- settings from autocommands, like what happens when -- editing a file. -- - *:doautoa* *:doautoall* -! :doautoa[ll] [group] {event} [fname] - Like ":doautocmd", but apply the autocommands to each - loaded buffer. Note that [fname] is used to select - the autocommands, not the buffers to which they are ---- 1073,1080 ---- - autocommands for that group. Note: if you use an - undefined group name, Vim gives you an error message. - - *:doautoa* *:doautoall* -! :doautoa[ll] [<nomodeline>] [group] {event} [fname] - Like ":doautocmd", but apply the autocommands to each - loaded buffer. Note that [fname] is used to select - the autocommands, not the buffers to which they are -*************** -*** 1082,1087 **** ---- 1085,1096 ---- - This command is intended for autocommands that set - options, change highlighting, and things like that. - -+ After applying the autocommands the modelines are -+ processed, so that their settings overrule the -+ settings from autocommands, like what happens when -+ editing a file. This is skipped when the <nomodeline> -+ argument is present. -+ - ============================================================================== - 10. Using autocommands *autocmd-use* - -*** ../vim-7.3.437/src/version.c 2012-02-11 23:45:30.000000000 +0100 ---- src/version.c 2012-02-12 00:16:04.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 438, - /**/ - --- -"Oh, no! NOT the Spanish Inquisition!" -"NOBODY expects the Spanish Inquisition!!!" - -- Monty Python sketch -- -"Oh, no! NOT another option!" -"EVERYBODY expects another option!!!" - -- Discussion in vim-dev mailing list -- - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.439 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.439 -Problem: Compiler warnings to size casts in Perl interface. -Solution: Use XS macros. (James McCoy) -Files: src/if_perl.xs, src/typemap - - -*** ../vim-7.3.438/src/if_perl.xs 2011-09-07 18:47:19.000000000 +0200 ---- src/if_perl.xs 2012-02-12 00:28:52.000000000 +0100 -*************** -*** 611,617 **** - if (ptr->w_perl_private == NULL) - { - ptr->w_perl_private = newSV(0); -! sv_setiv(ptr->w_perl_private, (IV)ptr); - } - else - SvREFCNT_inc(ptr->w_perl_private); ---- 611,617 ---- - if (ptr->w_perl_private == NULL) - { - ptr->w_perl_private = newSV(0); -! sv_setiv(ptr->w_perl_private, PTR2IV(ptr)); - } - else - SvREFCNT_inc(ptr->w_perl_private); -*************** -*** 629,635 **** - if (ptr->b_perl_private == NULL) - { - ptr->b_perl_private = newSV(0); -! sv_setiv(ptr->b_perl_private, (IV)ptr); - } - else - SvREFCNT_inc(ptr->b_perl_private); ---- 629,635 ---- - if (ptr->b_perl_private == NULL) - { - ptr->b_perl_private = newSV(0); -! sv_setiv(ptr->b_perl_private, PTR2IV(ptr)); - } - else - SvREFCNT_inc(ptr->b_perl_private); -*** ../vim-7.3.438/src/typemap 2010-08-15 21:57:29.000000000 +0200 ---- src/typemap 2012-02-12 00:28:52.000000000 +0100 -*************** -*** 6,12 **** - T_VIOBJNOMUNGE - if (sv_isa($arg, \"${ntype}\")) { - IV tmp = SvIV((SV*)SvRV($arg)); -! $var = ($type) tmp; - if (!tmp) - croak(\"$ntype no longer exists\"); - } ---- 6,12 ---- - T_VIOBJNOMUNGE - if (sv_isa($arg, \"${ntype}\")) { - IV tmp = SvIV((SV*)SvRV($arg)); -! $var = INT2PTR($type, tmp); - if (!tmp) - croak(\"$ntype no longer exists\"); - } -*** ../vim-7.3.438/src/version.c 2012-02-12 00:18:54.000000000 +0100 ---- src/version.c 2012-02-12 00:31:18.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 439, - /**/ - --- -Microsoft is to software what McDonalds is to gourmet cooking - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.440 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.440 -Problem: Vim does not support UTF8_STRING for the X selection. -Solution: Add UTF8_STRING atom support. (Alex Efros) Use it only when - 'encoding' is set to Unicode. -Files: src/ui.c - - -*** ../vim-7.3.439/src/ui.c 2012-02-04 21:57:44.000000000 +0100 ---- src/ui.c 2012-02-12 01:28:30.000000000 +0100 -*************** -*** 1917,1922 **** ---- 1917,1923 ---- - static Atom vim_atom; /* Vim's own special selection format */ - #ifdef FEAT_MBYTE - static Atom vimenc_atom; /* Vim's extended selection format */ -+ static Atom utf8_atom; - #endif - static Atom compound_text_atom; - static Atom text_atom; -*************** -*** 1930,1935 **** ---- 1931,1937 ---- - vim_atom = XInternAtom(dpy, VIM_ATOM_NAME, False); - #ifdef FEAT_MBYTE - vimenc_atom = XInternAtom(dpy, VIMENC_ATOM_NAME,False); -+ utf8_atom = XInternAtom(dpy, "UTF8_STRING", False); - #endif - compound_text_atom = XInternAtom(dpy, "COMPOUND_TEXT", False); - text_atom = XInternAtom(dpy, "TEXT", False); -*************** -*** 2074,2080 **** - } - #endif - -! else if (*type == compound_text_atom || ( - #ifdef FEAT_MBYTE - enc_dbcs != 0 && - #endif ---- 2076,2086 ---- - } - #endif - -! else if (*type == compound_text_atom -! #ifdef FEAT_MBYTE -! || *type == utf8_atom -! #endif -! || ( - #ifdef FEAT_MBYTE - enc_dbcs != 0 && - #endif -*************** -*** 2128,2134 **** - #else - 1 - #endif -! ; i < 5; i++) - { - switch (i) - { ---- 2134,2140 ---- - #else - 1 - #endif -! ; i < 6; i++) - { - switch (i) - { -*************** -*** 2136,2145 **** - case 0: type = vimenc_atom; break; - #endif - case 1: type = vim_atom; break; -! case 2: type = compound_text_atom; break; -! case 3: type = text_atom; break; - default: type = XA_STRING; - } - success = MAYBE; - XtGetSelectionValue(myShell, cbd->sel_atom, type, - clip_x11_request_selection_cb, (XtPointer)&success, CurrentTime); ---- 2142,2159 ---- - case 0: type = vimenc_atom; break; - #endif - case 1: type = vim_atom; break; -! #ifdef FEAT_MBYTE -! case 2: type = utf8_atom; break; -! #endif -! case 3: type = compound_text_atom; break; -! case 4: type = text_atom; break; - default: type = XA_STRING; - } -+ #ifdef FEAT_MBYTE -+ if (type == utf8_atom && !enc_utf8) -+ /* Only request utf-8 when 'encoding' is utf8. */ -+ continue; -+ #endif - success = MAYBE; - XtGetSelectionValue(myShell, cbd->sel_atom, type, - clip_x11_request_selection_cb, (XtPointer)&success, CurrentTime); -*************** -*** 2230,2247 **** - { - Atom *array; - -! if ((array = (Atom *)XtMalloc((unsigned)(sizeof(Atom) * 6))) == NULL) - return False; - *value = (XtPointer)array; - i = 0; -- array[i++] = XA_STRING; - array[i++] = targets_atom; - #ifdef FEAT_MBYTE - array[i++] = vimenc_atom; - #endif - array[i++] = vim_atom; - array[i++] = text_atom; - array[i++] = compound_text_atom; - *type = XA_ATOM; - /* This used to be: *format = sizeof(Atom) * 8; but that caused - * crashes on 64 bit machines. (Peter Derr) */ ---- 2244,2266 ---- - { - Atom *array; - -! if ((array = (Atom *)XtMalloc((unsigned)(sizeof(Atom) * 7))) == NULL) - return False; - *value = (XtPointer)array; - i = 0; - array[i++] = targets_atom; - #ifdef FEAT_MBYTE - array[i++] = vimenc_atom; - #endif - array[i++] = vim_atom; -+ #ifdef FEAT_MBYTE -+ if (enc_utf8) -+ array[i++] = utf8_atom; -+ #endif -+ array[i++] = XA_STRING; - array[i++] = text_atom; - array[i++] = compound_text_atom; -+ - *type = XA_ATOM; - /* This used to be: *format = sizeof(Atom) * 8; but that caused - * crashes on 64 bit machines. (Peter Derr) */ -*************** -*** 2253,2258 **** ---- 2272,2278 ---- - if ( *target != XA_STRING - #ifdef FEAT_MBYTE - && *target != vimenc_atom -+ && *target != utf8_atom - #endif - && *target != vim_atom - && *target != text_atom -*************** -*** 2282,2294 **** - return False; - } - -! if (*target == XA_STRING) - { - mch_memmove(result, string, (size_t)(*length)); -! *type = XA_STRING; - } -! else if (*target == compound_text_atom -! || *target == text_atom) - { - XTextProperty text_prop; - char *string_nt = (char *)alloc((unsigned)*length + 1); ---- 2302,2317 ---- - return False; - } - -! if (*target == XA_STRING -! #ifdef FEAT_MBYTE -! || (*target == utf8_atom && enc_utf8) -! #endif -! ) - { - mch_memmove(result, string, (size_t)(*length)); -! *type = *target; - } -! else if (*target == compound_text_atom || *target == text_atom) - { - XTextProperty text_prop; - char *string_nt = (char *)alloc((unsigned)*length + 1); -*** ../vim-7.3.439/src/version.c 2012-02-12 00:31:47.000000000 +0100 ---- src/version.c 2012-02-12 01:34:22.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 440, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -42. Your virtual girlfriend finds a new net sweetheart with a larger bandwidth. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.441 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.441 -Problem: Newer versions of MzScheme (Racket) require earlier (trampolined) - initialisation. -Solution: Call mzscheme_main() early in main(). (Sergey Khorev) -Files: src/Make_mvc.mak, src/if_mzsch.c, src/main.c, - src/proto/if_mzsch.pro - - -*** ../vim-7.3.440/src/Make_mvc.mak 2011-09-14 19:01:38.000000000 +0200 ---- src/Make_mvc.mak 2012-02-12 01:46:05.000000000 +0100 -*************** -*** 740,745 **** ---- 740,747 ---- - !endif - !endif - MZSCHEME_OBJ = $(OUTDIR)\if_mzsch.obj -+ # increase stack size -+ MZSCHEME_LIB = $(MZSCHEME_LIB) /STACK:8388608 - !endif - - # Perl interface -*** ../vim-7.3.440/src/if_mzsch.c 2010-11-03 21:59:23.000000000 +0100 ---- src/if_mzsch.c 2012-02-12 01:47:31.000000000 +0100 -*************** -*** 31,38 **** - * depend". */ - #if defined(FEAT_MZSCHEME) || defined(PROTO) - -- #include <assert.h> -- - /* Base data structures */ - #define SCHEME_VIMBUFFERP(obj) SAME_TYPE(SCHEME_TYPE(obj), mz_buffer_type) - #define SCHEME_VIMWINDOWP(obj) SAME_TYPE(SCHEME_TYPE(obj), mz_window_type) ---- 31,36 ---- -*************** -*** 559,575 **** - hMzSch = vimLoadLib(sch_dll); - hMzGC = vimLoadLib(gc_dll); - -! if (!hMzSch) - { - if (verbose) -! EMSG2(_(e_loadlib), sch_dll); - return FAIL; - } - -! if (!hMzGC) - { - if (verbose) -! EMSG2(_(e_loadlib), gc_dll); - return FAIL; - } - ---- 557,573 ---- - hMzSch = vimLoadLib(sch_dll); - hMzGC = vimLoadLib(gc_dll); - -! if (!hMzGC) - { - if (verbose) -! EMSG2(_(e_loadlib), gc_dll); - return FAIL; - } - -! if (!hMzSch) - { - if (verbose) -! EMSG2(_(e_loadlib), sch_dll); - return FAIL; - } - -*************** -*** 798,862 **** - static __declspec(thread) void *tls_space; - #endif - -! void -! mzscheme_main(void) - { - #if MZSCHEME_VERSION_MAJOR >= 500 && defined(WIN32) && defined(USE_THREAD_LOCAL) - scheme_register_tls_space(&tls_space, 0); - #endif -! #if defined(MZ_PRECISE_GC) && MZSCHEME_VERSION_MAJOR >= 400 -! /* use trampoline for precise GC in MzScheme >= 4.x */ -! scheme_main_setup(TRUE, mzscheme_env_main, 0, NULL); - #else -! mzscheme_env_main(NULL, 0, NULL); - #endif - } - - static int -! mzscheme_env_main(Scheme_Env *env, int argc UNUSED, char **argv UNUSED) - { -! /* neither argument nor return values are used */ -! #ifdef MZ_PRECISE_GC -! # if MZSCHEME_VERSION_MAJOR < 400 -! /* -! * Starting from version 4.x, embedding applications must use -! * scheme_main_setup/scheme_main_stack_setup trampolines -! * rather than setting stack base directly with scheme_set_stack_base -! */ - Scheme_Object *dummy = NULL; - MZ_GC_DECL_REG(1); - MZ_GC_VAR_IN_REG(0, dummy); - - stack_base = &__gc_var_stack__; - # else -- /* environment has been created by us by Scheme */ -- environment = env; -- # endif -- /* -- * In 4.x, all activities must be performed inside trampoline -- * so we are forced to initialise GC immediately -- * This can be postponed in 3.x but I see no point in implementing -- * a feature which will work in older versions only. -- * One would better use conservative GC if he needs dynamic MzScheme -- */ -- mzscheme_init(); -- #else - int dummy = 0; - stack_base = (void *)&dummy; - #endif -! main_loop(FALSE, FALSE); -! #if defined(MZ_PRECISE_GC) && MZSCHEME_VERSION_MAJOR < 400 - /* releasing dummy */ - MZ_GC_REG(); - MZ_GC_UNREG(); - #endif -! return 0; - } - - static void - startup_mzscheme(void) - { -! #if !defined(MZ_PRECISE_GC) || MZSCHEME_VERSION_MAJOR < 400 - scheme_set_stack_base(stack_base, 1); - #endif - ---- 796,863 ---- - static __declspec(thread) void *tls_space; - #endif - -! /* -! * Since version 4.x precise GC requires trampolined startup. -! * Futures and places in version 5.x need it too. -! */ -! #if defined(MZ_PRECISE_GC) && MZSCHEME_VERSION_MAJOR >= 400 \ -! || MZSCHEME_VERSION_MAJOR >= 500 && (defined(MZ_USE_FUTURES) || defined(MZ_USE_PLACES)) -! # ifdef DYNAMIC_MZSCHEME -! # error Precise GC v.4+ or Racket with futures/places do not support dynamic MzScheme -! # endif -! # define TRAMPOLINED_MZVIM_STARTUP -! #endif -! -! int -! mzscheme_main(int argc, char** argv) - { - #if MZSCHEME_VERSION_MAJOR >= 500 && defined(WIN32) && defined(USE_THREAD_LOCAL) - scheme_register_tls_space(&tls_space, 0); - #endif -! #ifdef TRAMPOLINED_MZVIM_STARTUP -! return scheme_main_setup(TRUE, mzscheme_env_main, argc, argv); - #else -! return mzscheme_env_main(NULL, argc, argv); - #endif - } - - static int -! mzscheme_env_main(Scheme_Env *env, int argc, char **argv) - { -! int vim_main_result; -! #ifdef TRAMPOLINED_MZVIM_STARTUP -! /* Scheme has created the environment for us */ -! environment = env; -! #else -! # ifdef MZ_PRECISE_GC - Scheme_Object *dummy = NULL; - MZ_GC_DECL_REG(1); - MZ_GC_VAR_IN_REG(0, dummy); - - stack_base = &__gc_var_stack__; - # else - int dummy = 0; - stack_base = (void *)&dummy; -+ # endif - #endif -! -! /* mzscheme_main is called as a trampoline from main. -! * We trampoline into vim_main2 -! * Passing argc, argv through from mzscheme_main -! */ -! vim_main_result = vim_main2(argc, argv); -! #if !defined(TRAMPOLINED_MZVIM_STARTUP) && defined(MZ_PRECISE_GC) - /* releasing dummy */ - MZ_GC_REG(); - MZ_GC_UNREG(); - #endif -! return vim_main_result; - } - - static void - startup_mzscheme(void) - { -! #ifndef TRAMPOLINED_MZVIM_STARTUP - scheme_set_stack_base(stack_base, 1); - #endif - -*************** -*** 868,874 **** - MZ_REGISTER_STATIC(exn_message); - MZ_REGISTER_STATIC(vim_exn); - -! #if !defined(MZ_PRECISE_GC) || MZSCHEME_VERSION_MAJOR < 400 - /* in newer versions of precise GC the initial env has been created */ - environment = scheme_basic_env(); - #endif ---- 869,875 ---- - MZ_REGISTER_STATIC(exn_message); - MZ_REGISTER_STATIC(vim_exn); - -! #ifndef TRAMPOLINED_MZVIM_STARTUP - /* in newer versions of precise GC the initial env has been created */ - environment = scheme_basic_env(); - #endif -*************** -*** 3013,3019 **** - MZ_GC_REG(); - - tmp = scheme_make_struct_names(exn_name, scheme_null, 0, &nc); -- assert(nc <= 5); - mch_memmove(exn_names, tmp, nc * sizeof(Scheme_Object *)); - MZ_GC_CHECK(); - ---- 3014,3019 ---- -*** ../vim-7.3.440/src/main.c 2011-12-08 15:57:54.000000000 +0100 ---- src/main.c 2012-02-12 01:49:50.000000000 +0100 -*************** -*** 554,559 **** ---- 554,584 ---- - debug_break_level = params.use_debug_break_level; - #endif - -+ #ifdef FEAT_MZSCHEME -+ /* -+ * Newer version of MzScheme (Racket) require earlier (trampolined) -+ * initialisation via scheme_main_setup. -+ * Implement this by initialising it as early as possible -+ * and splitting off remaining Vim main into vim_main2 -+ */ -+ { -+ /* Pack up preprocessed command line arguments. -+ * It is safe because Scheme does not access argc/argv. */ -+ char *args[2]; -+ args[0] = (char *)fname; -+ args[1] = (char *)¶ms; -+ return mzscheme_main(2, args); -+ } -+ } -+ -+ int vim_main2(int argc, char **argv) -+ { -+ char_u *fname = (char_u *)argv[0]; -+ mparm_T params; -+ -+ memcpy(¶ms, argv[1], sizeof(params)); -+ #endif -+ - /* Execute --cmd arguments. */ - exe_pre_commands(¶ms); - -*************** -*** 957,970 **** - - /* - * Call the main command loop. This never returns. -! * For embedded MzScheme the main_loop will be called by Scheme -! * for proper stack tracking -! */ -! #ifndef FEAT_MZSCHEME - main_loop(FALSE, FALSE); -- #else -- mzscheme_main(); -- #endif - - return 0; - } ---- 982,989 ---- - - /* - * Call the main command loop. This never returns. -! */ - main_loop(FALSE, FALSE); - - return 0; - } -*** ../vim-7.3.440/src/proto/if_mzsch.pro 2010-08-15 21:57:28.000000000 +0200 ---- src/proto/if_mzsch.pro 2012-02-12 01:50:57.000000000 +0100 -*************** -*** 14,19 **** - void mzvim_reset_timer __ARGS((void)); - void *mzvim_eval_string __ARGS((char_u *str)); - int mzthreads_allowed __ARGS((void)); -! void mzscheme_main __ARGS((void)); - void do_mzeval __ARGS((char_u *str, typval_T *rettv)); - /* vim: set ft=c : */ ---- 14,20 ---- - void mzvim_reset_timer __ARGS((void)); - void *mzvim_eval_string __ARGS((char_u *str)); - int mzthreads_allowed __ARGS((void)); -! int mzscheme_main __ARGS((int argc, char **argv)); - void do_mzeval __ARGS((char_u *str, typval_T *rettv)); -+ int vim_main2 __ARGS((int argc, char **argv)); - /* vim: set ft=c : */ -*** ../vim-7.3.440/src/version.c 2012-02-12 01:35:06.000000000 +0100 ---- src/version.c 2012-02-12 01:54:14.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 441, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -43. You tell the kids they can't use the computer because "Daddy's got work to - do" and you don't even have a job. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.442 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.442 (after 7.3.438) -Problem: Still read modelines for ":doautocmd". -Solution: Move check for <nomodeline> to separate function. -Files: src/fileio.c, src/ex_docmd.c, src/proto/fileio.pro, - runtime/doc/autocmd.txt - - -*** ../vim-7.3.441/src/fileio.c 2012-02-12 00:18:54.000000000 +0100 ---- src/fileio.c 2012-02-12 20:05:35.000000000 +0100 -*************** -*** 8740,8752 **** - aco_save_T aco; - buf_T *buf; - char_u *arg = eap->arg; -! int call_do_modelines = TRUE; -! -! if (STRNCMP(arg, "<nomodeline>", 12) == 0) -! { -! call_do_modelines = FALSE; -! arg = skipwhite(arg + 12); -! } - - /* - * This is a bit tricky: For some commands curwin->w_buffer needs to be ---- 8740,8746 ---- - aco_save_T aco; - buf_T *buf; - char_u *arg = eap->arg; -! int call_do_modelines = check_nomodeline(&arg); - - /* - * This is a bit tricky: For some commands curwin->w_buffer needs to be -*************** -*** 8786,8791 **** ---- 8780,8802 ---- - } - - /* -+ * Check *argp for <nomodeline>. When it is present return FALSE, otherwise -+ * return TRUE and advance *argp to after it. -+ * Thus return TRUE when do_modelines() should be called. -+ */ -+ int -+ check_nomodeline(argp) -+ char_u **argp; -+ { -+ if (STRNCMP(*argp, "<nomodeline>", 12) == 0) -+ { -+ *argp = skipwhite(*argp + 12); -+ return FALSE; -+ } -+ return TRUE; -+ } -+ -+ /* - * Prepare for executing autocommands for (hidden) buffer "buf". - * Search for a visible window containing the current buffer. If there isn't - * one then use "aucmd_win". -*** ../vim-7.3.441/src/ex_docmd.c 2012-01-26 20:41:22.000000000 +0100 ---- src/ex_docmd.c 2012-02-12 20:05:18.000000000 +0100 -*************** -*** 4955,4961 **** - map_clear(eap->cmd, eap->arg, TRUE, TRUE); - } - -! #ifdef FEAT_AUTOCMD - static void - ex_autocmd(eap) - exarg_T *eap; ---- 4955,4961 ---- - map_clear(eap->cmd, eap->arg, TRUE, TRUE); - } - -! #if defined(FEAT_AUTOCMD) || defined(PROTO) - static void - ex_autocmd(eap) - exarg_T *eap; -*************** -*** 4982,4989 **** - ex_doautocmd(eap) - exarg_T *eap; - { -! (void)do_doautocmd(eap->arg, TRUE); -! do_modelines(0); - } - #endif - ---- 4982,4993 ---- - ex_doautocmd(eap) - exarg_T *eap; - { -! char_u *arg = eap->arg; -! int call_do_modelines = check_nomodeline(&arg); -! -! (void)do_doautocmd(arg, TRUE); -! if (call_do_modelines) /* Only when there is no <nomodeline>. */ -! do_modelines(0); - } - #endif - -*** ../vim-7.3.441/src/proto/fileio.pro 2010-12-17 16:27:10.000000000 +0100 ---- src/proto/fileio.pro 2012-02-12 20:05:26.000000000 +0100 -*************** -*** 35,40 **** ---- 35,41 ---- - void do_autocmd __ARGS((char_u *arg, int forceit)); - int do_doautocmd __ARGS((char_u *arg, int do_msg)); - void ex_doautoall __ARGS((exarg_T *eap)); -+ int check_nomodeline __ARGS((char_u **argp)); - void aucmd_prepbuf __ARGS((aco_save_T *aco, buf_T *buf)); - void aucmd_restbuf __ARGS((aco_save_T *aco)); - int apply_autocmds __ARGS((event_T event, char_u *fname, char_u *fname_io, int force, buf_T *buf)); -*** ../vim-7.3.441/runtime/doc/autocmd.txt 2012-02-12 00:18:54.000000000 +0100 ---- runtime/doc/autocmd.txt 2012-02-12 20:11:05.000000000 +0100 -*************** -*** 1064,1069 **** ---- 1072,1085 ---- - argument is included, Vim executes only the matching - autocommands for that group. Note: if you use an - undefined group name, Vim gives you an error message. -+ *<nomodeline>* -+ After applying the autocommands the modelines are -+ processed, so that their settings overrule the -+ settings from autocommands, like what happens when -+ editing a file. This is skipped when the <nomodeline> -+ argument is present. You probably want to use -+ <nomodeline> for events that are not used when loading -+ a buffer, such as |User|. - - *:doautoa* *:doautoall* - :doautoa[ll] [<nomodeline>] [group] {event} [fname] -*************** -*** 1077,1088 **** - This command is intended for autocommands that set - options, change highlighting, and things like that. - -- After applying the autocommands the modelines are -- processed, so that their settings overrule the -- settings from autocommands, like what happens when -- editing a file. This is skipped when the <nomodeline> -- argument is present. -- - ============================================================================== - 10. Using autocommands *autocmd-use* - ---- 1093,1098 ---- -*** ../vim-7.3.441/src/version.c 2012-02-12 01:55:50.000000000 +0100 ---- src/version.c 2012-02-12 20:11:34.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 442, - /**/ - --- -The real -trick is -this: to -keep the -lines as -short as -possible -and keep -the size -the same -yet free -from the -need for -hyphena- -Dammit!! (Matthew Winn) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.443 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.443 -Problem: MS-Windows: 'shcf' and 'shellxquote' defaults are not very good. -Solution: Make a better guess when 'shell' is set to "cmd.exe". (Ben Fritz) -Files: src/option.c, runtime/doc/options.txt - - -*** ../vim-7.3.442/src/option.c 2012-01-28 18:03:30.000000000 +0100 ---- src/option.c 2012-02-12 23:17:55.000000000 +0100 -*************** -*** 3883,3889 **** - - #if defined(MSDOS) || defined(WIN3264) || defined(OS2) - /* -! * Set 'shellcmdflag and 'shellquote' depending on the 'shell' option. - * This is done after other initializations, where 'shell' might have been - * set, but only if they have not been set before. Default for p_shcf is - * "/c", for p_shq is "". For "sh" like shells it is changed here to ---- 3883,3890 ---- - - #if defined(MSDOS) || defined(WIN3264) || defined(OS2) - /* -! * Set 'shellcmdflag', 'shellxquote', and 'shellquote' depending on the -! * 'shell' option. - * This is done after other initializations, where 'shell' might have been - * set, but only if they have not been set before. Default for p_shcf is - * "/c", for p_shq is "". For "sh" like shells it is changed here to -*************** -*** 3920,3925 **** ---- 3921,3962 ---- - # endif - # endif - } -+ else if (strstr((char *)gettail(p_sh), "cmd.exe") != NULL) -+ { -+ int idx3; -+ -+ /* -+ * cmd.exe on Windows will strip the first and last double quote given -+ * on the command line, e.g. most of the time things like: -+ * cmd /c "my path/to/echo" "my args to echo" -+ * become: -+ * my path/to/echo" "my args to echo -+ * when executed. -+ * -+ * To avoid this, use the /s argument in addition to /c to force the -+ * stripping behavior, and also set shellxquote to automatically -+ * surround the entire command in quotes (which get stripped as -+ * noted). -+ */ -+ -+ /* Set shellxquote default to add the quotes to be stripped. */ -+ idx3 = findoption((char_u *)"sxq"); -+ if (idx3 >= 0 && !(options[idx3].flags & P_WAS_SET)) -+ { -+ p_sxq = (char_u *)"\""; -+ options[idx3].def_val[VI_DEFAULT] = p_sxq; -+ } -+ -+ /* Set shellcmdflag default to always strip the quotes, note the order -+ * between /s and /c is important or cmd.exe will treat the /s as part -+ * of the command to be executed. */ -+ idx3 = findoption((char_u *)"shcf"); -+ if (idx3 >= 0 && !(options[idx3].flags & P_WAS_SET)) -+ { -+ p_shcf = (char_u *)"/s /c"; -+ options[idx3].def_val[VI_DEFAULT] = p_shcf; -+ } -+ } - #endif - - #ifdef FEAT_TITLE -*** ../vim-7.3.442/runtime/doc/options.txt 2011-06-26 05:36:07.000000000 +0200 ---- runtime/doc/options.txt 2012-02-12 23:21:59.000000000 +0100 -*************** -*** 5880,5895 **** - security reasons. - - *'shellcmdflag'* *'shcf'* -! 'shellcmdflag' 'shcf' string (default: "-c", MS-DOS and Win32, when 'shell' -! does not contain "sh" somewhere: "/c") - global - {not in Vi} - Flag passed to the shell to execute "!" and ":!" commands; e.g., - "bash.exe -c ls" or "command.com /c dir". For the MS-DOS-like - systems, the default is set according to the value of 'shell', to - reduce the need to set this option by the user. It's not used for -! OS/2 (EMX figures this out itself). See |option-backslash| about -! including spaces and backslashes. See |dos-shell|. - This option cannot be set from a |modeline| or in the |sandbox|, for - security reasons. - ---- 5899,5919 ---- - security reasons. - - *'shellcmdflag'* *'shcf'* -! 'shellcmdflag' 'shcf' string (default: "-c"; -! Win32, when 'shell' is cmd.exe: "/s /c"; -! MS-DOS and Win32, when 'shell' neither is -! cmd.exe nor contains "sh" somewhere: "/c") - global - {not in Vi} - Flag passed to the shell to execute "!" and ":!" commands; e.g., - "bash.exe -c ls" or "command.com /c dir". For the MS-DOS-like - systems, the default is set according to the value of 'shell', to - reduce the need to set this option by the user. It's not used for -! OS/2 (EMX figures this out itself). -! On Unix it can have more than one flag. Each white space separated -! part is passed as an argument to the shell command. -! See |option-backslash| about including spaces and backslashes. -! Also see |dos-shell| for MS-DOS and MS-Windows. - This option cannot be set from a |modeline| or in the |sandbox|, for - security reasons. - -*************** -*** 5910,5918 **** - For Unix the default it "| tee". The stdout of the compiler is saved - in a file and echoed to the screen. If the 'shell' option is "csh" or - "tcsh" after initializations, the default becomes "|& tee". If the -! 'shell' option is "sh", "ksh", "zsh" or "bash" the default becomes -! "2>&1| tee". This means that stderr is also included. Before using -! the 'shell' option a path is removed, thus "/bin/sh" uses "sh". - The initialization of this option is done after reading the ".vimrc" - and the other initializations, so that when the 'shell' option is set - there, the 'shellpipe' option changes automatically, unless it was ---- 5934,5943 ---- - For Unix the default it "| tee". The stdout of the compiler is saved - in a file and echoed to the screen. If the 'shell' option is "csh" or - "tcsh" after initializations, the default becomes "|& tee". If the -! 'shell' option is "sh", "ksh", "mksh", "pdksh", "zsh" or "bash" the -! default becomes "2>&1| tee". This means that stderr is also included. -! Before using the 'shell' option a path is removed, thus "/bin/sh" uses -! "sh". - The initialization of this option is done after reading the ".vimrc" - and the other initializations, so that when the 'shell' option is set - there, the 'shellpipe' option changes automatically, unless it was -*************** -*** 6017,6024 **** - - *'shellxquote'* *'sxq'* - 'shellxquote' 'sxq' string (default: ""; -! for Win32, when 'shell' contains "sh" -! somewhere: "\"" - for Unix, when using system(): "\"") - global - {not in Vi} ---- 6043,6050 ---- - - *'shellxquote'* *'sxq'* - 'shellxquote' 'sxq' string (default: ""; -! for Win32, when 'shell' is cmd.exe or -! contains "sh" somewhere: "\"" - for Unix, when using system(): "\"") - global - {not in Vi} -*************** -*** 6026,6036 **** - the "!" and ":!" commands. Includes the redirection. See - 'shellquote' to exclude the redirection. It's probably not useful - to set both options. -! This is an empty string by default. Known to be useful for -! third-party shells when using the Win32 version, such as the MKS Korn -! Shell or bash, where it should be "\"". The default is adjusted -! according the value of 'shell', to reduce the need to set this option -! by the user. See |dos-shell|. - This option cannot be set from a |modeline| or in the |sandbox|, for - security reasons. - ---- 6052,6063 ---- - the "!" and ":!" commands. Includes the redirection. See - 'shellquote' to exclude the redirection. It's probably not useful - to set both options. -! This is an empty string by default on most systems, but is known to be -! useful for on Win32 version, either for cmd.exe which automatically -! strips off the first and last quote on a command, or 3rd-party shells -! such as the MKS Korn Shell or bash, where it should be "\"". The -! default is adjusted according the value of 'shell', to reduce the need -! to set this option by the user. See |dos-shell|. - This option cannot be set from a |modeline| or in the |sandbox|, for - security reasons. - -*** ../vim-7.3.442/src/version.c 2012-02-12 20:13:55.000000000 +0100 ---- src/version.c 2012-02-12 23:18:40.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 443, - /**/ - --- -CVS sux, men don't like commitment - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.444 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.444 -Problem: ":all!" and ":sall!" give error E477, even though the - documentation says these are valid commands. -Solution: Support the exclamation mark. (Hirohito Higashi) -Files: src/ex_cmds.h, src/testdir/test31.in, src/testdir/test31.ok - - -*** ../vim-7.3.443/src/ex_cmds.h 2011-06-20 05:02:53.000000000 +0200 ---- src/ex_cmds.h 2012-02-12 23:53:31.000000000 +0100 -*************** -*** 102,108 **** - EX(CMD_aboveleft, "aboveleft", ex_wrongmodifier, - NEEDARG|EXTRA|NOTRLCOM), - EX(CMD_all, "all", ex_all, -! RANGE|NOTADR|COUNT|TRLBAR), - EX(CMD_amenu, "amenu", ex_menu, - RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), - EX(CMD_anoremenu, "anoremenu", ex_menu, ---- 102,108 ---- - EX(CMD_aboveleft, "aboveleft", ex_wrongmodifier, - NEEDARG|EXTRA|NOTRLCOM), - EX(CMD_all, "all", ex_all, -! BANG|RANGE|NOTADR|COUNT|TRLBAR), - EX(CMD_amenu, "amenu", ex_menu, - RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), - EX(CMD_anoremenu, "anoremenu", ex_menu, -*************** -*** 798,804 **** - EX(CMD_sargument, "sargument", ex_argument, - BANG|RANGE|NOTADR|COUNT|EXTRA|EDITCMD|ARGOPT|TRLBAR), - EX(CMD_sall, "sall", ex_all, -! RANGE|NOTADR|COUNT|TRLBAR), - EX(CMD_sandbox, "sandbox", ex_wrongmodifier, - NEEDARG|EXTRA|NOTRLCOM), - EX(CMD_saveas, "saveas", ex_write, ---- 798,804 ---- - EX(CMD_sargument, "sargument", ex_argument, - BANG|RANGE|NOTADR|COUNT|EXTRA|EDITCMD|ARGOPT|TRLBAR), - EX(CMD_sall, "sall", ex_all, -! BANG|RANGE|NOTADR|COUNT|TRLBAR), - EX(CMD_sandbox, "sandbox", ex_wrongmodifier, - NEEDARG|EXTRA|NOTRLCOM), - EX(CMD_saveas, "saveas", ex_write, -*** ../vim-7.3.443/src/testdir/test31.in 2010-08-15 21:57:29.000000000 +0200 ---- src/testdir/test31.in 2012-02-12 23:57:42.000000000 +0100 -*************** -*** 63,68 **** ---- 63,74 ---- - :" write "testtext 1" - A 3:close! - :w >>test.out -+ :set nohidden -+ :" test ":all!" hides changed buffer; write "testtext 2 2 2" -+ :sp Xtest4 -+ GA 4:all! -+ :1wincmd w -+ :w >>test.out - :qa! - ENDTEST - -*** ../vim-7.3.443/src/testdir/test31.ok 2010-08-15 21:57:29.000000000 +0200 ---- src/testdir/test31.ok 2012-02-13 00:00:13.000000000 +0100 -*************** -*** 9,11 **** ---- 9,12 ---- - testtext 1 - testtext 3 3 3 - testtext 1 -+ testtext 2 2 2 -*** ../vim-7.3.443/src/version.c 2012-02-12 23:23:25.000000000 +0100 ---- src/version.c 2012-02-12 23:52:47.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 444, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -50. The last girl you picked up was only a jpeg. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.445 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.445 (after 7.3.443) -Problem: Can't properly escape commands for cmd.exe. -Solution: Default 'shellxquote' to '('. Append ')' to make '(command)'. - No need to use "/s" for 'shellcmdflag'. -Files: src/misc2.c, src/option.c, src/os_win32.c - - -*** ../vim-7.3.444/src/misc2.c 2012-01-20 17:15:47.000000000 +0100 ---- src/misc2.c 2012-02-16 05:34:37.000000000 +0100 -*************** -*** 3230,3236 **** - { - STRCPY(ncmd, p_sxq); - STRCAT(ncmd, cmd); -! STRCAT(ncmd, p_sxq); - retval = mch_call_shell(ncmd, opt); - vim_free(ncmd); - } ---- 3230,3240 ---- - { - STRCPY(ncmd, p_sxq); - STRCAT(ncmd, cmd); -! /* When 'shellxquote' is ( append ). -! * When 'shellxquote' is "( append )". */ -! STRCAT(ncmd, STRCMP(p_sxq, "(") == 0 ? (char_u *)")" -! : STRCMP(p_sxq, "\"(") == 0 ? (char_u *)")\"" -! : p_sxq); - retval = mch_call_shell(ncmd, opt); - vim_free(ncmd); - } -*** ../vim-7.3.444/src/option.c 2012-02-12 23:23:25.000000000 +0100 ---- src/option.c 2012-02-19 18:08:48.000000000 +0100 -*************** -*** 3933,3959 **** - * my path/to/echo" "my args to echo - * when executed. - * -! * To avoid this, use the /s argument in addition to /c to force the -! * stripping behavior, and also set shellxquote to automatically -! * surround the entire command in quotes (which get stripped as -! * noted). - */ -- -- /* Set shellxquote default to add the quotes to be stripped. */ - idx3 = findoption((char_u *)"sxq"); - if (idx3 >= 0 && !(options[idx3].flags & P_WAS_SET)) - { -! p_sxq = (char_u *)"\""; - options[idx3].def_val[VI_DEFAULT] = p_sxq; - } - -- /* Set shellcmdflag default to always strip the quotes, note the order -- * between /s and /c is important or cmd.exe will treat the /s as part -- * of the command to be executed. */ - idx3 = findoption((char_u *)"shcf"); - if (idx3 >= 0 && !(options[idx3].flags & P_WAS_SET)) - { -! p_shcf = (char_u *)"/s /c"; - options[idx3].def_val[VI_DEFAULT] = p_shcf; - } - } ---- 3933,3954 ---- - * my path/to/echo" "my args to echo - * when executed. - * -! * To avoid this, set shellxquote to surround the command in -! * parenthesis. This appears to make most commands work, without -! * breaking commands that worked previously, such as -! * '"path with spaces/cmd" "a&b"'. - */ - idx3 = findoption((char_u *)"sxq"); - if (idx3 >= 0 && !(options[idx3].flags & P_WAS_SET)) - { -! p_sxq = (char_u *)"("; - options[idx3].def_val[VI_DEFAULT] = p_sxq; - } - - idx3 = findoption((char_u *)"shcf"); - if (idx3 >= 0 && !(options[idx3].flags & P_WAS_SET)) - { -! p_shcf = (char_u *)"/c"; - options[idx3].def_val[VI_DEFAULT] = p_shcf; - } - } -*** ../vim-7.3.444/src/os_win32.c 2011-08-27 15:10:00.000000000 +0200 ---- src/os_win32.c 2012-02-19 18:11:23.000000000 +0100 -*************** -*** 3908,3915 **** - newcmd = lalloc(cmdlen, TRUE); - if (newcmd != NULL) - { -! char_u *cmdbase = (*cmd == '"' ? cmd + 1 : cmd); - - if ((STRNICMP(cmdbase, "start", 5) == 0) && vim_iswhite(cmdbase[5])) - { - STARTUPINFO si; ---- 3908,3920 ---- - newcmd = lalloc(cmdlen, TRUE); - if (newcmd != NULL) - { -! char_u *cmdbase = cmd; - -+ /* Skip a leading ", ( and "(. */ -+ if (*cmdbase == '"' ) -+ ++cmdbase; -+ if (*cmdbase == '(') -+ ++cmdbase; - if ((STRNICMP(cmdbase, "start", 5) == 0) && vim_iswhite(cmdbase[5])) - { - STARTUPINFO si; -*************** -*** 3953,3968 **** - * empty, keep the double quotes around the command. - * Otherwise remove the double quotes, they aren't needed - * here, because we don't use a shell to run the command. */ -! if (*cmd == '"' && *p_sxq == NUL) - { -! newcmd[0] = '"'; -! STRCPY(newcmd + 1, cmdbase); -! } -! else -! { -! STRCPY(newcmd, cmdbase); -! if (*cmd == '"' && *newcmd != NUL) -! newcmd[STRLEN(newcmd) - 1] = NUL; - } - - /* ---- 3958,3983 ---- - * empty, keep the double quotes around the command. - * Otherwise remove the double quotes, they aren't needed - * here, because we don't use a shell to run the command. */ -! if (cmdbase > cmd) - { -! if (STRNCMP(cmd, p_sxq, cmd - cmdbase) != 0) -! { -! STRCPY(newcmd, cmd); -! } -! else -! { -! char_u *p; -! -! STRCPY(newcmd, cmdbase); -! /* Remove a trailing ", ) and )" if they have a match -! * at the start of the command. */ -! p = newcmd + STRLEN(newcmd); -! if (p > newcmd && p[-1] == '"' && *cmd == '"') -! *--p = NUL; -! if (p > newcmd && p[-1] == ')' -! && (*cmd =='(' || cmd[1] == '(')) -! *--p = NUL; -! } - } - - /* -*************** -*** 3970,3976 **** - * inherit our handles which causes unpleasant dangling swap - * files if we exit before the spawned process - */ -! if (CreateProcess (NULL, // Executable name - newcmd, // Command to execute - NULL, // Process security attributes - NULL, // Thread security attributes ---- 3985,3991 ---- - * inherit our handles which causes unpleasant dangling swap - * files if we exit before the spawned process - */ -! if (CreateProcess(NULL, // Executable name - newcmd, // Command to execute - NULL, // Process security attributes - NULL, // Thread security attributes -*** ../vim-7.3.444/src/version.c 2012-02-13 00:01:38.000000000 +0100 ---- src/version.c 2012-02-19 18:01:46.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 445, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -80. At parties, you introduce your spouse as your "service provider." - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.446 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.446 (after 7.3.445) -Problem: Win32: External commands with special characters don't work. -Solution: Add the 'shellxescape' option. -Files: src/misc2.c, src/option.c, src/option.h, runtime/doc/options.txt - - -*** ../vim-7.3.445/src/misc2.c 2012-02-19 18:19:24.000000000 +0100 ---- src/misc2.c 2012-02-20 22:05:22.000000000 +0100 -*************** -*** 3225,3235 **** - retval = mch_call_shell(cmd, opt); - else - { -! ncmd = alloc((unsigned)(STRLEN(cmd) + STRLEN(p_sxq) * 2 + 1)); - if (ncmd != NULL) - { - STRCPY(ncmd, p_sxq); -! STRCAT(ncmd, cmd); - /* When 'shellxquote' is ( append ). - * When 'shellxquote' is "( append )". */ - STRCAT(ncmd, STRCMP(p_sxq, "(") == 0 ? (char_u *)")" ---- 3225,3243 ---- - retval = mch_call_shell(cmd, opt); - else - { -! char_u *ecmd = cmd; -! -! if (*p_sxe != NUL && STRCMP(p_sxq, "(") == 0) -! { -! ecmd = vim_strsave_escaped_ext(cmd, p_sxe, '^', FALSE); -! if (ecmd == NULL) -! ecmd = cmd; -! } -! ncmd = alloc((unsigned)(STRLEN(ecmd) + STRLEN(p_sxq) * 2 + 1)); - if (ncmd != NULL) - { - STRCPY(ncmd, p_sxq); -! STRCAT(ncmd, ecmd); - /* When 'shellxquote' is ( append ). - * When 'shellxquote' is "( append )". */ - STRCAT(ncmd, STRCMP(p_sxq, "(") == 0 ? (char_u *)")" -*************** -*** 3240,3245 **** ---- 3248,3255 ---- - } - else - retval = -1; -+ if (ecmd != cmd) -+ vim_free(ecmd); - } - #ifdef FEAT_GUI - --hold_gui_events; -*** ../vim-7.3.445/src/option.c 2012-02-19 18:19:24.000000000 +0100 ---- src/option.c 2012-02-20 22:01:07.000000000 +0100 -*************** -*** 2273,2278 **** ---- 2273,2287 ---- - (char_u *)"", - #endif - (char_u *)0L} SCRIPTID_INIT}, -+ {"shellxescape", "sxe", P_STRING|P_VI_DEF|P_SECURE, -+ (char_u *)&p_sxe, PV_NONE, -+ { -+ #if defined(MSDOS) || defined(WIN16) || defined(WIN3264) -+ (char_u *)"\"&|<>()@^", -+ #else -+ (char_u *)"", -+ #endif -+ (char_u *)0L} SCRIPTID_INIT}, - {"shiftround", "sr", P_BOOL|P_VI_DEF|P_VIM, - (char_u *)&p_sr, PV_NONE, - {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT}, -*** ../vim-7.3.445/src/option.h 2011-10-20 21:09:25.000000000 +0200 ---- src/option.h 2012-02-20 21:45:31.000000000 +0100 -*************** -*** 712,717 **** ---- 712,718 ---- - #endif - EXTERN char_u *p_shq; /* 'shellquote' */ - EXTERN char_u *p_sxq; /* 'shellxquote' */ -+ EXTERN char_u *p_sxe; /* 'shellxescape' */ - EXTERN char_u *p_srr; /* 'shellredir' */ - #ifdef AMIGA - EXTERN long p_st; /* 'shelltype' */ -*** ../vim-7.3.445/runtime/doc/options.txt 2012-02-12 23:23:25.000000000 +0100 ---- runtime/doc/options.txt 2012-02-20 22:09:19.000000000 +0100 -*************** -*** 6023,6030 **** - - *'shellxquote'* *'sxq'* - 'shellxquote' 'sxq' string (default: ""; -! for Win32, when 'shell' is cmd.exe or -! contains "sh" somewhere: "\"" - for Unix, when using system(): "\"") - global - {not in Vi} ---- 6042,6050 ---- - - *'shellxquote'* *'sxq'* - 'shellxquote' 'sxq' string (default: ""; -! for Win32, when 'shell' is cmd.exe: "(" -! for Win32, when 'shell' contains "sh" -! somewhere: "\"" - for Unix, when using system(): "\"") - global - {not in Vi} -*************** -*** 6032,6037 **** ---- 6052,6060 ---- - the "!" and ":!" commands. Includes the redirection. See - 'shellquote' to exclude the redirection. It's probably not useful - to set both options. -+ When the value is '(' then ')' is appended. When the value is '"(' -+ then ')"' is appended. -+ When the value is '(' then also see 'shellxescape'. - This is an empty string by default on most systems, but is known to be - useful for on Win32 version, either for cmd.exe which automatically - strips off the first and last quote on a command, or 3rd-party shells -*************** -*** 6041,6046 **** ---- 6064,6079 ---- - This option cannot be set from a |modeline| or in the |sandbox|, for - security reasons. - -+ *'shellxescape'* *'sxe'* -+ 'shellxescape' 'sxe' string (default: ""; -+ for MS-DOS and MS-Windows: "\"&|<>()@^") -+ global -+ {not in Vi} -+ When 'shellxquote' is set to "(" then the characters listed in this -+ option will be escaped with a '^' character. This makes it possible -+ to execute most external commands with cmd.exe. -+ -+ - *'shiftround'* *'sr'* *'noshiftround'* *'nosr'* - 'shiftround' 'sr' boolean (default off) - global -*** ../vim-7.3.445/src/version.c 2012-02-19 18:19:24.000000000 +0100 ---- src/version.c 2012-02-20 22:12:32.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 446, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -86. E-mail Deficiency Depression (EDD) forces you to e-mail yourself. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.447 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.447 (after 7.3.446) -Problem: Win32: External commands with "start" do not work. -Solution: Unescape part of the command. (Yasuhiro Matsumoto) -Files: src/os_win32.c - - -*** ../vim-7.3.446/src/os_win32.c 2012-02-19 18:19:24.000000000 +0100 ---- src/os_win32.c 2012-02-21 20:56:51.000000000 +0100 -*************** -*** 259,264 **** ---- 259,287 ---- - } - - /* -+ * Unescape characters in "p" that appear in "escaped". -+ */ -+ static void -+ unescape_shellxquote(char_u *p, char_u *escaped) -+ { -+ int l = STRLEN(p); -+ int n; -+ -+ while (*p != NUL) -+ { -+ if (*p == '^' && vim_strchr(escaped, p[1]) != NULL) -+ mch_memmove(p, p + 1, l--); -+ #ifdef FEAT_MBYTE -+ n = (*mb_ptr2len)(p); -+ #else -+ n = 1; -+ #endif -+ p += n; -+ l -= n; -+ } -+ } -+ -+ /* - * Load library "name". - */ - HINSTANCE -*************** -*** 3559,3564 **** ---- 3582,3588 ---- - garray_T ga; - int delay = 1; - DWORD buffer_off = 0; /* valid bytes in buffer[] */ -+ char *p = NULL; - - SECURITY_ATTRIBUTES saAttr; - -*************** -*** 3599,3607 **** - if (options & SHELL_READ) - ga_init2(&ga, 1, BUFLEN); - - /* Now, run the command */ - CreateProcess(NULL, /* Executable name */ -! cmd, /* Command to execute */ - NULL, /* Process security attributes */ - NULL, /* Thread security attributes */ - ---- 3623,3640 ---- - if (options & SHELL_READ) - ga_init2(&ga, 1, BUFLEN); - -+ if (cmd != NULL) -+ { -+ p = (char *)vim_strsave((char_u *)cmd); -+ if (p != NULL) -+ unescape_shellxquote((char_u *)p, p_sxe); -+ else -+ p = cmd; -+ } -+ - /* Now, run the command */ - CreateProcess(NULL, /* Executable name */ -! p, /* Command to execute */ - NULL, /* Process security attributes */ - NULL, /* Thread security attributes */ - -*************** -*** 3616,3621 **** ---- 3649,3656 ---- - &si, /* Startup information */ - &pi); /* Process information */ - -+ if (p != cmd) -+ vim_free(p); - - /* Close our unused side of the pipes */ - CloseHandle(g_hChildStd_IN_Rd); -*************** -*** 3898,4018 **** - else - { - /* we use "command" or "cmd" to start the shell; slow but easy */ -! char_u *newcmd; -! long_u cmdlen = ( -! #ifdef FEAT_GUI_W32 -! (allowPiping && !p_stmp ? 0 : STRLEN(vimrun_path)) + -! #endif -! STRLEN(p_sh) + STRLEN(p_shcf) + STRLEN(cmd) + 10); -! -! newcmd = lalloc(cmdlen, TRUE); -! if (newcmd != NULL) -! { -! char_u *cmdbase = cmd; -! -! /* Skip a leading ", ( and "(. */ -! if (*cmdbase == '"' ) -! ++cmdbase; -! if (*cmdbase == '(') -! ++cmdbase; -! if ((STRNICMP(cmdbase, "start", 5) == 0) && vim_iswhite(cmdbase[5])) -! { -! STARTUPINFO si; -! PROCESS_INFORMATION pi; -! DWORD flags = CREATE_NEW_CONSOLE; -! -! si.cb = sizeof(si); -! si.lpReserved = NULL; -! si.lpDesktop = NULL; -! si.lpTitle = NULL; -! si.dwFlags = 0; -! si.cbReserved2 = 0; -! si.lpReserved2 = NULL; -! -! cmdbase = skipwhite(cmdbase + 5); -! if ((STRNICMP(cmdbase, "/min", 4) == 0) -! && vim_iswhite(cmdbase[4])) -! { -! cmdbase = skipwhite(cmdbase + 4); -! si.dwFlags = STARTF_USESHOWWINDOW; -! si.wShowWindow = SW_SHOWMINNOACTIVE; -! } -! else if ((STRNICMP(cmdbase, "/b", 2) == 0) -! && vim_iswhite(cmdbase[2])) -! { -! cmdbase = skipwhite(cmdbase + 2); -! flags = CREATE_NO_WINDOW; -! si.dwFlags = STARTF_USESTDHANDLES; -! si.hStdInput = CreateFile("\\\\.\\NUL", // File name -! GENERIC_READ, // Access flags -! 0, // Share flags -! NULL, // Security att. -! OPEN_EXISTING, // Open flags -! FILE_ATTRIBUTE_NORMAL, // File att. -! NULL); // Temp file -! si.hStdOutput = si.hStdInput; -! si.hStdError = si.hStdInput; -! } - -! /* When the command is in double quotes, but 'shellxquote' is -! * empty, keep the double quotes around the command. -! * Otherwise remove the double quotes, they aren't needed -! * here, because we don't use a shell to run the command. */ -! if (cmdbase > cmd) -! { -! if (STRNCMP(cmd, p_sxq, cmd - cmdbase) != 0) -! { -! STRCPY(newcmd, cmd); -! } -! else -! { -! char_u *p; - -! STRCPY(newcmd, cmdbase); -! /* Remove a trailing ", ) and )" if they have a match -! * at the start of the command. */ -! p = newcmd + STRLEN(newcmd); -! if (p > newcmd && p[-1] == '"' && *cmd == '"') -! *--p = NUL; -! if (p > newcmd && p[-1] == ')' -! && (*cmd =='(' || cmd[1] == '(')) -! *--p = NUL; -! } -! } - -! /* -! * Now, start the command as a process, so that it doesn't -! * inherit our handles which causes unpleasant dangling swap -! * files if we exit before the spawned process -! */ -! if (CreateProcess(NULL, // Executable name -! newcmd, // Command to execute -! NULL, // Process security attributes -! NULL, // Thread security attributes -! FALSE, // Inherit handles -! flags, // Creation flags -! NULL, // Environment -! NULL, // Current directory -! &si, // Startup information -! &pi)) // Process information -! x = 0; -! else -! { -! x = -1; - #ifdef FEAT_GUI_W32 -! EMSG(_("E371: Command not found")); - #endif -- } -- if (si.hStdInput != NULL) -- { -- /* Close the handle to \\.\NUL */ -- CloseHandle(si.hStdInput); -- } -- /* Close the handles to the subprocess, so that it goes away */ -- CloseHandle(pi.hThread); -- CloseHandle(pi.hProcess); - } -! else - { - #if defined(FEAT_GUI_W32) - if (need_vimrun_warning) ---- 3933,4048 ---- - else - { - /* we use "command" or "cmd" to start the shell; slow but easy */ -! char_u *cmdbase = cmd; - -! /* Skip a leading ", ( and "(. */ -! if (*cmdbase == '"' ) -! ++cmdbase; -! if (*cmdbase == '(') -! ++cmdbase; -! -! if ((STRNICMP(cmdbase, "start", 5) == 0) && vim_iswhite(cmdbase[5])) -! { -! STARTUPINFO si; -! PROCESS_INFORMATION pi; -! DWORD flags = CREATE_NEW_CONSOLE; -! char_u *p; -! -! si.cb = sizeof(si); -! si.lpReserved = NULL; -! si.lpDesktop = NULL; -! si.lpTitle = NULL; -! si.dwFlags = 0; -! si.cbReserved2 = 0; -! si.lpReserved2 = NULL; -! -! cmdbase = skipwhite(cmdbase + 5); -! if ((STRNICMP(cmdbase, "/min", 4) == 0) -! && vim_iswhite(cmdbase[4])) -! { -! cmdbase = skipwhite(cmdbase + 4); -! si.dwFlags = STARTF_USESHOWWINDOW; -! si.wShowWindow = SW_SHOWMINNOACTIVE; -! } -! else if ((STRNICMP(cmdbase, "/b", 2) == 0) -! && vim_iswhite(cmdbase[2])) -! { -! cmdbase = skipwhite(cmdbase + 2); -! flags = CREATE_NO_WINDOW; -! si.dwFlags = STARTF_USESTDHANDLES; -! si.hStdInput = CreateFile("\\\\.\\NUL", // File name -! GENERIC_READ, // Access flags -! 0, // Share flags -! NULL, // Security att. -! OPEN_EXISTING, // Open flags -! FILE_ATTRIBUTE_NORMAL, // File att. -! NULL); // Temp file -! si.hStdOutput = si.hStdInput; -! si.hStdError = si.hStdInput; -! } -! -! /* Remove a trailing ", ) and )" if they have a match -! * at the start of the command. */ -! if (cmdbase > cmd) -! { -! p = cmdbase + STRLEN(cmdbase); -! if (p > cmdbase && p[-1] == '"' && *cmd == '"') -! *--p = NUL; -! if (p > cmdbase && p[-1] == ')' -! && (*cmd =='(' || cmd[1] == '(')) -! *--p = NUL; -! } - -! /* -! * Unescape characters in shellxescape. This is workaround for -! * /b option. Only redirect character should be unescaped. -! */ -! unescape_shellxquote(cmdbase, -! (flags & CREATE_NEW_CONSOLE) ? p_sxe : "<>"); - -! /* -! * Now, start the command as a process, so that it doesn't -! * inherit our handles which causes unpleasant dangling swap -! * files if we exit before the spawned process -! */ -! if (CreateProcess(NULL, // Executable name -! cmdbase, // Command to execute -! NULL, // Process security attributes -! NULL, // Thread security attributes -! FALSE, // Inherit handles -! flags, // Creation flags -! NULL, // Environment -! NULL, // Current directory -! &si, // Startup information -! &pi)) // Process information -! x = 0; -! else -! { -! x = -1; - #ifdef FEAT_GUI_W32 -! EMSG(_("E371: Command not found")); - #endif - } -! if (si.hStdInput != NULL) -! { -! /* Close the handle to \\.\NUL */ -! CloseHandle(si.hStdInput); -! } -! /* Close the handles to the subprocess, so that it goes away */ -! CloseHandle(pi.hThread); -! CloseHandle(pi.hProcess); -! } -! else -! { -! char_u *newcmd; -! long_u cmdlen = ( -! #ifdef FEAT_GUI_W32 -! (allowPiping && !p_stmp ? 0 : STRLEN(vimrun_path)) + -! #endif -! STRLEN(p_sh) + STRLEN(p_shcf) + STRLEN(cmd) + 10); -! -! newcmd = lalloc(cmdlen, TRUE); -! if (newcmd != NULL) - { - #if defined(FEAT_GUI_W32) - if (need_vimrun_warning) -*************** -*** 4038,4045 **** - vim_snprintf((char *)newcmd, cmdlen, "%s %s %s", - p_sh, p_shcf, cmd); - x = mch_system((char *)newcmd, options); - } -- vim_free(newcmd); - } - } - ---- 4068,4075 ---- - vim_snprintf((char *)newcmd, cmdlen, "%s %s %s", - p_sh, p_shcf, cmd); - x = mch_system((char *)newcmd, options); -+ vim_free(newcmd); - } - } - } - -*** ../vim-7.3.446/src/version.c 2012-02-20 22:18:23.000000000 +0100 ---- src/version.c 2012-02-21 21:20:05.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 447, - /**/ - --- -From "know your smileys": - :----} You lie like Pinocchio - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.448 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.448 (after 7.3.447) -Problem: Win32: Still a problem with "!start /b". -Solution: Escape only '|'. (Yasuhiro Matsumoto) -Files: src/os_win32.c - - -*** ../vim-7.3.447/src/os_win32.c 2012-02-21 21:22:40.000000000 +0100 ---- src/os_win32.c 2012-02-22 13:06:55.000000000 +0100 -*************** -*** 3933,3939 **** - else - { - /* we use "command" or "cmd" to start the shell; slow but easy */ -! char_u *cmdbase = cmd; - - /* Skip a leading ", ( and "(. */ - if (*cmdbase == '"' ) ---- 3933,3941 ---- - else - { - /* we use "command" or "cmd" to start the shell; slow but easy */ -! char_u *newcmd = NULL; -! char_u *cmdbase = cmd; -! long_u cmdlen; - - /* Skip a leading ", ( and "(. */ - if (*cmdbase == '"' ) -*************** -*** 3971,3982 **** - flags = CREATE_NO_WINDOW; - si.dwFlags = STARTF_USESTDHANDLES; - si.hStdInput = CreateFile("\\\\.\\NUL", // File name -! GENERIC_READ, // Access flags - 0, // Share flags -! NULL, // Security att. -! OPEN_EXISTING, // Open flags -! FILE_ATTRIBUTE_NORMAL, // File att. -! NULL); // Temp file - si.hStdOutput = si.hStdInput; - si.hStdError = si.hStdInput; - } ---- 3973,3984 ---- - flags = CREATE_NO_WINDOW; - si.dwFlags = STARTF_USESTDHANDLES; - si.hStdInput = CreateFile("\\\\.\\NUL", // File name -! GENERIC_READ, // Access flags - 0, // Share flags -! NULL, // Security att. -! OPEN_EXISTING, // Open flags -! FILE_ATTRIBUTE_NORMAL, // File att. -! NULL); // Temp file - si.hStdOutput = si.hStdInput; - si.hStdError = si.hStdInput; - } -*************** -*** 3993,4004 **** - *--p = NUL; - } - - /* -! * Unescape characters in shellxescape. This is workaround for -! * /b option. Only redirect character should be unescaped. - */ -! unescape_shellxquote(cmdbase, -! (flags & CREATE_NEW_CONSOLE) ? p_sxe : "<>"); - - /* - * Now, start the command as a process, so that it doesn't ---- 3995,4030 ---- - *--p = NUL; - } - -+ newcmd = cmdbase; -+ unescape_shellxquote(cmdbase, p_sxe); -+ - /* -! * If creating new console, arguments are passed to the -! * 'cmd.exe' as-is. If it's not, arguments are not treated -! * correctly for current 'cmd.exe'. So unescape characters in -! * shellxescape except '|' for avoiding to be treated as -! * argument to them. Pass the arguments to sub-shell. - */ -! if (flags != CREATE_NEW_CONSOLE) -! { -! char_u *subcmd; -! char_u *cmd_shell = default_shell(); -! -! subcmd = vim_strsave_escaped_ext(cmdbase, "|", '^', FALSE); -! if (subcmd != NULL) -! { -! /* make "cmd.exe /c arguments" */ -! cmdlen = STRLEN(cmd_shell) + STRLEN(subcmd) + 5; -! vim_free(subcmd); -! -! newcmd = lalloc(cmdlen, TRUE); -! if (newcmd != NULL) -! vim_snprintf((char *)newcmd, cmdlen, "%s /c %s", -! default_shell, subcmd); -! else -! newcmd = cmdbase; -! } -! } - - /* - * Now, start the command as a process, so that it doesn't -*************** -*** 4006,4012 **** - * files if we exit before the spawned process - */ - if (CreateProcess(NULL, // Executable name -! cmdbase, // Command to execute - NULL, // Process security attributes - NULL, // Thread security attributes - FALSE, // Inherit handles ---- 4032,4038 ---- - * files if we exit before the spawned process - */ - if (CreateProcess(NULL, // Executable name -! newcmd, // Command to execute - NULL, // Process security attributes - NULL, // Thread security attributes - FALSE, // Inherit handles -*************** -*** 4023,4028 **** ---- 4049,4058 ---- - EMSG(_("E371: Command not found")); - #endif - } -+ -+ if (newcmd != cmdbase) -+ vim_free(newcmd); -+ - if (si.hStdInput != NULL) - { - /* Close the handle to \\.\NUL */ -*************** -*** 4034,4041 **** - } - else - { -! char_u *newcmd; -! long_u cmdlen = ( - #ifdef FEAT_GUI_W32 - (allowPiping && !p_stmp ? 0 : STRLEN(vimrun_path)) + - #endif ---- 4064,4070 ---- - } - else - { -! cmdlen = ( - #ifdef FEAT_GUI_W32 - (allowPiping && !p_stmp ? 0 : STRLEN(vimrun_path)) + - #endif -*** ../vim-7.3.447/src/version.c 2012-02-21 21:22:40.000000000 +0100 ---- src/version.c 2012-02-22 13:02:15.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 448, - /**/ - --- -From "know your smileys": - ~#:-( I just washed my hair, and I can't do nuthin' with it. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.449 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.449 -Problem: Crash when a BufWinLeave autocommand closes the only other window. - (Daniel Hunt) -Solution: Abort closing a buffer when it becomes the only one. -Files: src/buffer.c, src/proto/buffer.pro, src/ex_cmds.c, src/ex_getln.c, - src/misc2.c, src/quickfix.c, src/window.c, src/proto/window.pro - - -*** ../vim-7.3.448/src/buffer.c 2012-01-20 20:44:38.000000000 +0100 ---- src/buffer.c 2012-02-22 14:50:42.000000000 +0100 -*************** -*** 64,69 **** ---- 64,72 ---- - static char *msg_loclist = N_("[Location List]"); - static char *msg_qflist = N_("[Quickfix List]"); - #endif -+ #ifdef FEAT_AUTOCMD -+ static char *e_auabort = N_("E855: Autocommands caused command to abort"); -+ #endif - - /* - * Open current buffer, that is: open the memfile and read the file into -*************** -*** 96,102 **** - * There MUST be a memfile, otherwise we can't do anything - * If we can't create one for the current buffer, take another buffer - */ -! close_buffer(NULL, curbuf, 0); - for (curbuf = firstbuf; curbuf != NULL; curbuf = curbuf->b_next) - if (curbuf->b_ml.ml_mfp != NULL) - break; ---- 99,105 ---- - * There MUST be a memfile, otherwise we can't do anything - * If we can't create one for the current buffer, take another buffer - */ -! close_buffer(NULL, curbuf, 0, FALSE); - for (curbuf = firstbuf; curbuf != NULL; curbuf = curbuf->b_next) - if (curbuf->b_ml.ml_mfp != NULL) - break; -*************** -*** 316,327 **** - * get a new buffer very soon! - * - * The 'bufhidden' option can force freeing and deleting. - */ - void -! close_buffer(win, buf, action) - win_T *win; /* if not NULL, set b_last_cursor */ - buf_T *buf; - int action; - { - #ifdef FEAT_AUTOCMD - int is_curbuf; ---- 319,335 ---- - * get a new buffer very soon! - * - * The 'bufhidden' option can force freeing and deleting. -+ * -+ * When "abort_if_last" is TRUE then do not close the buffer if autocommands -+ * cause there to be only one window with this buffer. e.g. when ":quit" is -+ * supposed to close the window but autocommands close all other windows. - */ - void -! close_buffer(win, buf, action, abort_if_last) - win_T *win; /* if not NULL, set b_last_cursor */ - buf_T *buf; - int action; -+ int abort_if_last; - { - #ifdef FEAT_AUTOCMD - int is_curbuf; -*************** -*** 371,378 **** - { - apply_autocmds(EVENT_BUFWINLEAVE, buf->b_fname, buf->b_fname, - FALSE, buf); -! if (!buf_valid(buf)) /* autocommands may delete the buffer */ - return; - - /* When the buffer becomes hidden, but is not unloaded, trigger - * BufHidden */ ---- 379,390 ---- - { - apply_autocmds(EVENT_BUFWINLEAVE, buf->b_fname, buf->b_fname, - FALSE, buf); -! /* Return if autocommands deleted the buffer or made it the only one. */ -! if (!buf_valid(buf) || (abort_if_last && one_window())) -! { -! EMSG(_(e_auabort)); - return; -+ } - - /* When the buffer becomes hidden, but is not unloaded, trigger - * BufHidden */ -*************** -*** 380,387 **** - { - apply_autocmds(EVENT_BUFHIDDEN, buf->b_fname, buf->b_fname, - FALSE, buf); -! if (!buf_valid(buf)) /* autocmds may delete the buffer */ - return; - } - # ifdef FEAT_EVAL - if (aborting()) /* autocmds may abort script processing */ ---- 392,404 ---- - { - apply_autocmds(EVENT_BUFHIDDEN, buf->b_fname, buf->b_fname, - FALSE, buf); -! /* Return if autocommands deleted the buffer or made it the only -! * one. */ -! if (!buf_valid(buf) || (abort_if_last && one_window())) -! { -! EMSG(_(e_auabort)); - return; -+ } - } - # ifdef FEAT_EVAL - if (aborting()) /* autocmds may abort script processing */ -*************** -*** 775,781 **** - * open a new, empty buffer. */ - swap_exists_action = SEA_NONE; /* don't want it again */ - swap_exists_did_quit = TRUE; -! close_buffer(curwin, curbuf, DOBUF_UNLOAD); - if (!buf_valid(old_curbuf) || old_curbuf == curbuf) - old_curbuf = buflist_new(NULL, NULL, 1L, BLN_CURBUF | BLN_LISTED); - if (old_curbuf != NULL) ---- 792,798 ---- - * open a new, empty buffer. */ - swap_exists_action = SEA_NONE; /* don't want it again */ - swap_exists_did_quit = TRUE; -! close_buffer(curwin, curbuf, DOBUF_UNLOAD, FALSE); - if (!buf_valid(old_curbuf) || old_curbuf == curbuf) - old_curbuf = buflist_new(NULL, NULL, 1L, BLN_CURBUF | BLN_LISTED); - if (old_curbuf != NULL) -*************** -*** 1122,1128 **** - * if the buffer still exists. - */ - if (buf != curbuf && buf_valid(buf) && buf->b_nwindows == 0) -! close_buffer(NULL, buf, action); - return retval; - } - ---- 1139,1145 ---- - * if the buffer still exists. - */ - if (buf != curbuf && buf_valid(buf) && buf->b_nwindows == 0) -! close_buffer(NULL, buf, action, FALSE); - return retval; - } - -*************** -*** 1146,1152 **** - close_windows(buf, FALSE); - #endif - if (buf != curbuf && buf_valid(buf) && buf->b_nwindows <= 0) -! close_buffer(NULL, buf, action); - return OK; - } - ---- 1163,1169 ---- - close_windows(buf, FALSE); - #endif - if (buf != curbuf && buf_valid(buf) && buf->b_nwindows <= 0) -! close_buffer(NULL, buf, action, FALSE); - return OK; - } - -*************** -*** 1378,1384 **** - close_buffer(prevbuf == curwin->w_buffer ? curwin : NULL, prevbuf, - unload ? action : (action == DOBUF_GOTO - && !P_HID(prevbuf) -! && !bufIsChanged(prevbuf)) ? DOBUF_UNLOAD : 0); - } - } - #ifdef FEAT_AUTOCMD ---- 1395,1401 ---- - close_buffer(prevbuf == curwin->w_buffer ? curwin : NULL, prevbuf, - unload ? action : (action == DOBUF_GOTO - && !P_HID(prevbuf) -! && !bufIsChanged(prevbuf)) ? DOBUF_UNLOAD : 0, FALSE); - } - } - #ifdef FEAT_AUTOCMD -*************** -*** 2708,2714 **** - vim_free(ffname); - return FAIL; - } -! close_buffer(NULL, obuf, DOBUF_WIPE); /* delete from the list */ - } - sfname = vim_strsave(sfname); - if (ffname == NULL || sfname == NULL) ---- 2725,2732 ---- - vim_free(ffname); - return FAIL; - } -! /* delete from the list */ -! close_buffer(NULL, obuf, DOBUF_WIPE, FALSE); - } - sfname = vim_strsave(sfname); - if (ffname == NULL || sfname == NULL) -*************** -*** 5638,5644 **** - if (!aucmd) /* Don't trigger BufDelete autocommands here. */ - block_autocmds(); - #endif -! close_buffer(NULL, buf, DOBUF_WIPE); - #ifdef FEAT_AUTOCMD - if (!aucmd) - unblock_autocmds(); ---- 5656,5662 ---- - if (!aucmd) /* Don't trigger BufDelete autocommands here. */ - block_autocmds(); - #endif -! close_buffer(NULL, buf, DOBUF_WIPE, FALSE); - #ifdef FEAT_AUTOCMD - if (!aucmd) - unblock_autocmds(); -*** ../vim-7.3.448/src/proto/buffer.pro 2010-08-15 21:57:28.000000000 +0200 ---- src/proto/buffer.pro 2012-02-22 14:04:26.000000000 +0100 -*************** -*** 1,7 **** - /* buffer.c */ - int open_buffer __ARGS((int read_stdin, exarg_T *eap, int flags)); - int buf_valid __ARGS((buf_T *buf)); -! void close_buffer __ARGS((win_T *win, buf_T *buf, int action)); - void buf_clear_file __ARGS((buf_T *buf)); - void buf_freeall __ARGS((buf_T *buf, int flags)); - void goto_buffer __ARGS((exarg_T *eap, int start, int dir, int count)); ---- 1,7 ---- - /* buffer.c */ - int open_buffer __ARGS((int read_stdin, exarg_T *eap, int flags)); - int buf_valid __ARGS((buf_T *buf)); -! void close_buffer __ARGS((win_T *win, buf_T *buf, int action, int abort_if_last)); - void buf_clear_file __ARGS((buf_T *buf)); - void buf_freeall __ARGS((buf_T *buf, int flags)); - void goto_buffer __ARGS((exarg_T *eap, int start, int dir, int count)); -*** ../vim-7.3.448/src/ex_cmds.c 2011-12-30 15:01:55.000000000 +0100 ---- src/ex_cmds.c 2012-02-22 14:00:32.000000000 +0100 -*************** -*** 3387,3393 **** - /* close the link to the current buffer */ - u_sync(FALSE); - close_buffer(oldwin, curbuf, -! (flags & ECMD_HIDE) ? 0 : DOBUF_UNLOAD); - - #ifdef FEAT_AUTOCMD - /* Autocommands may open a new window and leave oldwin open ---- 3387,3393 ---- - /* close the link to the current buffer */ - u_sync(FALSE); - close_buffer(oldwin, curbuf, -! (flags & ECMD_HIDE) ? 0 : DOBUF_UNLOAD, FALSE); - - #ifdef FEAT_AUTOCMD - /* Autocommands may open a new window and leave oldwin open -*** ../vim-7.3.448/src/ex_getln.c 2012-02-04 22:44:27.000000000 +0100 ---- src/ex_getln.c 2012-02-22 14:01:56.000000000 +0100 -*************** -*** 6443,6449 **** - /* win_close() may have already wiped the buffer when 'bh' is - * set to 'wipe' */ - if (buf_valid(bp)) -! close_buffer(NULL, bp, DOBUF_WIPE); - - /* Restore window sizes. */ - win_size_restore(&winsizes); ---- 6443,6449 ---- - /* win_close() may have already wiped the buffer when 'bh' is - * set to 'wipe' */ - if (buf_valid(bp)) -! close_buffer(NULL, bp, DOBUF_WIPE, FALSE); - - /* Restore window sizes. */ - win_size_restore(&winsizes); -*** ../vim-7.3.448/src/misc2.c 2012-02-20 22:18:22.000000000 +0100 ---- src/misc2.c 2012-02-22 14:02:12.000000000 +0100 -*************** -*** 1173,1179 **** - for (buf = firstbuf; buf != NULL; ) - { - nextbuf = buf->b_next; -! close_buffer(NULL, buf, DOBUF_WIPE); - if (buf_valid(buf)) - buf = nextbuf; /* didn't work, try next one */ - else ---- 1173,1179 ---- - for (buf = firstbuf; buf != NULL; ) - { - nextbuf = buf->b_next; -! close_buffer(NULL, buf, DOBUF_WIPE, FALSE); - if (buf_valid(buf)) - buf = nextbuf; /* didn't work, try next one */ - else -*** ../vim-7.3.448/src/quickfix.c 2012-01-20 13:39:03.000000000 +0100 ---- src/quickfix.c 2012-02-22 14:02:20.000000000 +0100 -*************** -*** 3565,3571 **** - buf_T *buf; - { - if (curbuf != buf) /* safety check */ -! close_buffer(NULL, buf, DOBUF_UNLOAD); - } - - #if defined(FEAT_EVAL) || defined(PROTO) ---- 3565,3571 ---- - buf_T *buf; - { - if (curbuf != buf) /* safety check */ -! close_buffer(NULL, buf, DOBUF_UNLOAD, FALSE); - } - - #if defined(FEAT_EVAL) || defined(PROTO) -*** ../vim-7.3.448/src/window.c 2012-01-10 22:26:12.000000000 +0100 ---- src/window.c 2012-02-22 14:08:13.000000000 +0100 -*************** -*** 23,29 **** - static void win_totop __ARGS((int size, int flags)); - static void win_equal_rec __ARGS((win_T *next_curwin, int current, frame_T *topfr, int dir, int col, int row, int width, int height)); - static int last_window __ARGS((void)); -- static int one_window __ARGS((void)); - static win_T *win_free_mem __ARGS((win_T *win, int *dirp, tabpage_T *tp)); - static frame_T *win_altframe __ARGS((win_T *win, tabpage_T *tp)); - static tabpage_T *alt_tabpage __ARGS((void)); ---- 23,28 ---- -*************** -*** 2083,2089 **** - * Return TRUE if there is only one window other than "aucmd_win" in the - * current tab page. - */ -! static int - one_window() - { - #ifdef FEAT_AUTOCMD ---- 2082,2088 ---- - * Return TRUE if there is only one window other than "aucmd_win" in the - * current tab page. - */ -! int - one_window() - { - #ifdef FEAT_AUTOCMD -*************** -*** 2109,2115 **** - * Close window "win". Only works for the current tab page. - * If "free_buf" is TRUE related buffer may be unloaded. - * -! * called by :quit, :close, :xit, :wq and findtag() - */ - void - win_close(win, free_buf) ---- 2108,2114 ---- - * Close window "win". Only works for the current tab page. - * If "free_buf" is TRUE related buffer may be unloaded. - * -! * Called by :quit, :close, :xit, :wq and findtag(). - */ - void - win_close(win, free_buf) -*************** -*** 2222,2228 **** - * Close the link to the buffer. - */ - if (win->w_buffer != NULL) -! close_buffer(win, win->w_buffer, free_buf ? DOBUF_UNLOAD : 0); - - /* Autocommands may have closed the window already, or closed the only - * other window or moved to another tab page. */ ---- 2221,2227 ---- - * Close the link to the buffer. - */ - if (win->w_buffer != NULL) -! close_buffer(win, win->w_buffer, free_buf ? DOBUF_UNLOAD : 0, TRUE); - - /* Autocommands may have closed the window already, or closed the only - * other window or moved to another tab page. */ -*************** -*** 2328,2334 **** - int free_tp = FALSE; - - /* Close the link to the buffer. */ -! close_buffer(win, win->w_buffer, free_buf ? DOBUF_UNLOAD : 0); - - /* Careful: Autocommands may have closed the tab page or made it the - * current tab page. */ ---- 2327,2333 ---- - int free_tp = FALSE; - - /* Close the link to the buffer. */ -! close_buffer(win, win->w_buffer, free_buf ? DOBUF_UNLOAD : 0, FALSE); - - /* Careful: Autocommands may have closed the tab page or made it the - * current tab page. */ -*** ../vim-7.3.448/src/proto/window.pro 2010-08-15 21:57:28.000000000 +0200 ---- src/proto/window.pro 2012-02-22 14:08:28.000000000 +0100 -*************** -*** 1,13 **** - /* window.c */ - void do_window __ARGS((int nchar, long Prenum, int xchar)); - int win_split __ARGS((int size, int flags)); -! int win_split_ins __ARGS((int size, int flags, win_T *newwin, int dir)); - int win_valid __ARGS((win_T *win)); - int win_count __ARGS((void)); - int make_windows __ARGS((int count, int vertical)); - void win_move_after __ARGS((win_T *win1, win_T *win2)); - void win_equal __ARGS((win_T *next_curwin, int current, int dir)); - void close_windows __ARGS((buf_T *buf, int keep_curwin)); - void win_close __ARGS((win_T *win, int free_buf)); - void win_close_othertab __ARGS((win_T *win, int free_buf, tabpage_T *tp)); - void win_free_all __ARGS((void)); ---- 1,14 ---- - /* window.c */ - void do_window __ARGS((int nchar, long Prenum, int xchar)); - int win_split __ARGS((int size, int flags)); -! int win_split_ins __ARGS((int size, int flags, win_T *new_wp, int dir)); - int win_valid __ARGS((win_T *win)); - int win_count __ARGS((void)); - int make_windows __ARGS((int count, int vertical)); - void win_move_after __ARGS((win_T *win1, win_T *win2)); - void win_equal __ARGS((win_T *next_curwin, int current, int dir)); - void close_windows __ARGS((buf_T *buf, int keep_curwin)); -+ int one_window __ARGS((void)); - void win_close __ARGS((win_T *win, int free_buf)); - void win_close_othertab __ARGS((win_T *win, int free_buf, tabpage_T *tp)); - void win_free_all __ARGS((void)); -*** ../vim-7.3.448/src/version.c 2012-02-22 13:07:02.000000000 +0100 ---- src/version.c 2012-02-22 14:55:21.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 449, - /**/ - --- -From "know your smileys": - :-)-O Smiling doctor with stethoscope - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.450 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.450 (after 7.3.448) -Problem: Win32: Still a problem with "!start /b". -Solution: Fix pointer use. (Yasuhiro Matsumoto) -Files: src/os_win32.c - - -*** ../vim-7.3.449/src/os_win32.c 2012-02-22 13:07:02.000000000 +0100 ---- src/os_win32.c 2012-02-22 15:29:56.000000000 +0100 -*************** -*** 4008,4028 **** - if (flags != CREATE_NEW_CONSOLE) - { - char_u *subcmd; -! char_u *cmd_shell = default_shell(); - - subcmd = vim_strsave_escaped_ext(cmdbase, "|", '^', FALSE); - if (subcmd != NULL) - { - /* make "cmd.exe /c arguments" */ - cmdlen = STRLEN(cmd_shell) + STRLEN(subcmd) + 5; -- vim_free(subcmd); -- - newcmd = lalloc(cmdlen, TRUE); - if (newcmd != NULL) - vim_snprintf((char *)newcmd, cmdlen, "%s /c %s", -! default_shell, subcmd); - else - newcmd = cmdbase; - } - } - ---- 4008,4030 ---- - if (flags != CREATE_NEW_CONSOLE) - { - char_u *subcmd; -! char_u *cmd_shell = mch_getenv("COMSPEC"); -! -! if (cmd_shell == NULL || *cmd_shell == NUL) -! cmd_shell = default_shell(); - - subcmd = vim_strsave_escaped_ext(cmdbase, "|", '^', FALSE); - if (subcmd != NULL) - { - /* make "cmd.exe /c arguments" */ - cmdlen = STRLEN(cmd_shell) + STRLEN(subcmd) + 5; - newcmd = lalloc(cmdlen, TRUE); - if (newcmd != NULL) - vim_snprintf((char *)newcmd, cmdlen, "%s /c %s", -! cmd_shell, subcmd); - else - newcmd = cmdbase; -+ vim_free(subcmd); - } - } - -*** ../vim-7.3.449/src/version.c 2012-02-22 14:58:24.000000000 +0100 ---- src/version.c 2012-02-22 15:33:53.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 450, - /**/ - --- -You are only young once, but you can stay immature indefinitely. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.451 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.451 -Problem: Tcl doesn't work on 64 bit MS-Windows. -Solution: Make it work. (Dave Bodenstab) -Files: src/Make_mvc.mak, src/if_tcl.c - - -*** ../vim-7.3.450/src/Make_mvc.mak 2012-02-12 01:55:50.000000000 +0100 ---- src/Make_mvc.mak 2012-02-22 15:43:01.000000000 +0100 -*************** -*** 616,622 **** - -DDYNAMIC_TCL_VER=\"$(TCL_VER_LONG)\" - TCL_OBJ = $(OUTDIR)\if_tcl.obj - TCL_INC = /I "$(TCL)\Include" /I "$(TCL)" -! TCL_LIB = $(TCL)\lib\tclstub$(TCL_VER).lib - !else - CFLAGS = $(CFLAGS) -DFEAT_TCL - TCL_OBJ = $(OUTDIR)\if_tcl.obj ---- 616,622 ---- - -DDYNAMIC_TCL_VER=\"$(TCL_VER_LONG)\" - TCL_OBJ = $(OUTDIR)\if_tcl.obj - TCL_INC = /I "$(TCL)\Include" /I "$(TCL)" -! TCL_LIB = "$(TCL)\lib\tclstub$(TCL_VER).lib" - !else - CFLAGS = $(CFLAGS) -DFEAT_TCL - TCL_OBJ = $(OUTDIR)\if_tcl.obj -*** ../vim-7.3.450/src/if_tcl.c 2011-07-27 14:15:41.000000000 +0200 ---- src/if_tcl.c 2012-02-22 15:47:00.000000000 +0100 -*************** -*** 79,90 **** - typedef struct - { - Tcl_Interp *interp; - int range_start, range_end; - int lbase; - char *curbuf, *curwin; - } tcl_info; - -! static tcl_info tclinfo = { NULL, 0, 0, 0, NULL, NULL }; - - #define VAR_RANGE1 "::vim::range(start)" - #define VAR_RANGE2 "::vim::range(begin)" ---- 79,91 ---- - typedef struct - { - Tcl_Interp *interp; -+ int exitvalue; - int range_start, range_end; - int lbase; - char *curbuf, *curwin; - } tcl_info; - -! static tcl_info tclinfo = { NULL, 0, 0, 0, 0, NULL, NULL }; - - #define VAR_RANGE1 "::vim::range(start)" - #define VAR_RANGE2 "::vim::range(begin)" -*************** -*** 279,294 **** - ****************************************************************************/ - - /* -! * Replace standard "exit" and "catch" commands. - * -! * This is a design flaw in Tcl - the standard "exit" command just calls -! * exit() and kills the application. It should return TCL_EXIT to the -! * app, which then decides if it wants to terminate or not. In our case, -! * we just delete the Tcl interpreter (and create a new one with the next -! * :tcl command). - */ -- #define TCL_EXIT 5 -- - static int - exitcmd(dummy, interp, objc, objv) - ClientData dummy UNUSED; ---- 280,298 ---- - ****************************************************************************/ - - /* -! * Replace standard "exit" command. - * -! * Delete the Tcl interpreter; a new one will be created with the next -! * :tcl command). The exit code is saved (and retrieved in tclexit()). -! * Since Tcl's exit is never expected to return and this replacement -! * does, then (except for a trivial case) additional Tcl commands will -! * be run. Since the interpreter is now marked as deleted, an error -! * will be returned -- typically "attempt to call eval in deleted -! * interpreter". Hopefully, at this point, checks for TCL_ERROR take -! * place and control percolates back up to Vim -- but with this new error -! * string in the interpreter's result value. Therefore it would be -! * useless for this routine to return the exit code via Tcl_SetResult(). - */ - static int - exitcmd(dummy, interp, objc, objv) - ClientData dummy UNUSED; -*************** -*** 305,351 **** - break; - /* FALLTHROUGH */ - case 1: -! Tcl_SetObjResult(interp, Tcl_NewIntObj(value)); -! return TCL_EXIT; -! default: -! Tcl_WrongNumArgs(interp, 1, objv, "?returnCode?"); -! } -! return TCL_ERROR; -! } - -! static int -! catchcmd(dummy, interp, objc, objv) -! ClientData dummy UNUSED; -! Tcl_Interp *interp; -! int objc; -! Tcl_Obj *CONST objv[]; -! { -! char *varname = NULL; -! int result; -! -! switch (objc) -! { -! case 3: -! varname = Tcl_GetStringFromObj(objv[2], NULL); -! /* fallthrough */ -! case 2: -! Tcl_ResetResult(interp); -! Tcl_AllowExceptions(interp); -! result = Tcl_EvalObj(interp, objv[1]); -! if (result == TCL_EXIT) -! return result; -! if (varname) -! { -! if (Tcl_SetVar(interp, varname, Tcl_GetStringResult(interp), 0) == NULL) -! { -! Tcl_SetResult(interp, "couldn't save command result in variable", TCL_STATIC); -! return TCL_ERROR; -! } -! } -! Tcl_SetObjResult(interp, Tcl_NewIntObj(result)); -! return TCL_OK; - default: -! Tcl_WrongNumArgs(interp, 1, objv, "command ?varName?"); - } - return TCL_ERROR; - } ---- 309,320 ---- - break; - /* FALLTHROUGH */ - case 1: -! tclinfo.exitvalue = value; - -! Tcl_DeleteInterp(interp); -! break; - default: -! Tcl_WrongNumArgs(interp, 1, objv, "?returnCode?"); - } - return TCL_ERROR; - } -*************** -*** 372,377 **** ---- 341,347 ---- - /* - * "::vim::buffer list" - create a list of buffer commands. - * "::vim::buffer {N}" - create buffer command for buffer N. -+ * "::vim::buffer exists {N}" - test if buffer N exists. - * "::vim::buffer new" - create a new buffer (not implemented) - */ - static int -*************** -*** 1663,1669 **** - static Tcl_ChannelType channel_type = - { - "vimmessage", /* typeName */ -! NULL, /* version */ - channel_close, /* closeProc */ - channel_input, /* inputProc */ - channel_output, /* outputProc */ ---- 1633,1639 ---- - static Tcl_ChannelType channel_type = - { - "vimmessage", /* typeName */ -! TCL_CHANNEL_VERSION_2, /* version */ - channel_close, /* closeProc */ - channel_input, /* inputProc */ - channel_output, /* outputProc */ -*************** -*** 1678,1683 **** ---- 1648,1655 ---- - NULL, /* flushProc */ - NULL, /* handlerProc */ - #endif -+ /* The following should not be necessary since TCL_CHANNEL_VERSION_2 was -+ * set above */ - #ifdef TCL_CHANNEL_VERSION_3 - NULL, /* wideSeekProc */ - #endif -*************** -*** 1741,1747 **** - Tcl_Interp *interp; - static Tcl_Channel ch1, ch2; - -! /* replace stdout and stderr */ - ch1 = Tcl_CreateChannel(&channel_type, "vimout", VIMOUT, TCL_WRITABLE); - ch2 = Tcl_CreateChannel(&channel_type, "vimerr", VIMERR, TCL_WRITABLE); - Tcl_SetStdChannel(ch1, TCL_STDOUT); ---- 1713,1721 ---- - Tcl_Interp *interp; - static Tcl_Channel ch1, ch2; - -! /* Create replacement channels for stdout and stderr; this has to be -! * done each time an interpreter is created since the channels are closed -! * when the interpreter is deleted */ - ch1 = Tcl_CreateChannel(&channel_type, "vimout", VIMOUT, TCL_WRITABLE); - ch2 = Tcl_CreateChannel(&channel_type, "vimerr", VIMERR, TCL_WRITABLE); - Tcl_SetStdChannel(ch1, TCL_STDOUT); -*************** -*** 1761,1775 **** - #endif - - Tcl_SetChannelOption(interp, ch1, "-buffering", "line"); - Tcl_SetChannelOption(interp, ch2, "-buffering", "line"); - -! /* replace some standard Tcl commands */ - Tcl_DeleteCommand(interp, "exit"); - Tcl_CreateObjCommand(interp, "exit", exitcmd, - (ClientData)NULL, (Tcl_CmdDeleteProc *)NULL); -- Tcl_DeleteCommand(interp, "catch"); -- Tcl_CreateObjCommand(interp, "catch", catchcmd, -- (ClientData)NULL, (Tcl_CmdDeleteProc *)NULL); - - /* new commands, in ::vim namespace */ - Tcl_CreateObjCommand(interp, "::vim::buffer", buffercmd, ---- 1735,1752 ---- - #endif - - Tcl_SetChannelOption(interp, ch1, "-buffering", "line"); -+ #ifdef WIN3264 -+ Tcl_SetChannelOption(interp, ch1, "-translation", "lf"); -+ #endif - Tcl_SetChannelOption(interp, ch2, "-buffering", "line"); -+ #ifdef WIN3264 -+ Tcl_SetChannelOption(interp, ch2, "-translation", "lf"); -+ #endif - -! /* replace standard Tcl exit command */ - Tcl_DeleteCommand(interp, "exit"); - Tcl_CreateObjCommand(interp, "exit", exitcmd, - (ClientData)NULL, (Tcl_CmdDeleteProc *)NULL); - - /* new commands, in ::vim namespace */ - Tcl_CreateObjCommand(interp, "::vim::buffer", buffercmd, -*************** -*** 1821,1826 **** ---- 1798,1805 ---- - tclinfo.range_end = row2tcl(eap->line2); - tclupdatevars(); - } -+ -+ tclinfo.exitvalue = 0; - return OK; - } - -*************** -*** 1884,1913 **** - { - int newerr = OK; - -! if (error == TCL_EXIT) - { -- int retval; - char buf[50]; -- Tcl_Obj *robj; - -! robj = Tcl_GetObjResult(tclinfo.interp); -! if (Tcl_GetIntFromObj(tclinfo.interp, robj, &retval) != TCL_OK) - { -! EMSG(_("E281: TCL ERROR: exit code is not int!? Please report this to vim-dev@vim.org")); -! newerr = FAIL; - } - else -! { -! sprintf(buf, _("E572: exit code %d"), retval); -! tclerrmsg(buf); -! if (retval == 0) -! { -! did_emsg = 0; -! newerr = OK; -! } -! else -! newerr = FAIL; -! } - - tcldelthisinterp(); - } ---- 1863,1885 ---- - { - int newerr = OK; - -! if (Tcl_InterpDeleted(tclinfo.interp) /* True if we intercepted Tcl's exit command */ -! #if (TCL_MAJOR_VERSION == 8 && TCL_MINOR_VERSION >= 5) || TCL_MAJOR_VERSION > 8 -! || Tcl_LimitExceeded(tclinfo.interp) /* True if the interpreter cannot continue */ -! #endif -! ) - { - char buf[50]; - -! sprintf(buf, _("E572: exit code %d"), tclinfo.exitvalue); -! tclerrmsg(buf); -! if (tclinfo.exitvalue == 0) - { -! did_emsg = 0; -! newerr = OK; - } - else -! newerr = FAIL; - - tcldelthisinterp(); - } -*************** -*** 2021,2027 **** - Tcl_SetVar(tclinfo.interp, var_line, line, 0); - Tcl_AllowExceptions(tclinfo.interp); - err = Tcl_Eval(tclinfo.interp, script); -! if (err != TCL_OK) - break; - line = (char *)Tcl_GetVar(tclinfo.interp, var_line, 0); - if (line) ---- 1993,2004 ---- - Tcl_SetVar(tclinfo.interp, var_line, line, 0); - Tcl_AllowExceptions(tclinfo.interp); - err = Tcl_Eval(tclinfo.interp, script); -! if (err != TCL_OK -! || Tcl_InterpDeleted(tclinfo.interp) -! #if (TCL_MAJOR_VERSION == 8 && TCL_MINOR_VERSION >= 5) || TCL_MAJOR_VERSION > 8 -! || Tcl_LimitExceeded(tclinfo.interp) -! #endif -! ) - break; - line = (char *)Tcl_GetVar(tclinfo.interp, var_line, 0); - if (line) -*** ../vim-7.3.450/src/version.c 2012-02-22 15:34:05.000000000 +0100 ---- src/version.c 2012-02-22 16:00:49.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 451, - /**/ - --- -Where do you want to crash today? - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.452 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.452 -Problem: Undo broken when pasting close to the last line. (Andrey Radev) -Solution: Use a flag to remember if the deleted included the last line. - (Christian Brabandt) -Files: src/ops.c - - -*** ../vim-7.3.451/src/ops.c 2012-01-10 13:46:18.000000000 +0100 ---- src/ops.c 2012-02-22 17:32:40.000000000 +0100 -*************** -*** 1943,1954 **** ---- 1943,1956 ---- - else /* delete characters between lines */ - { - pos_T curpos; -+ int delete_last_line; - - /* save deleted and changed lines for undo */ - if (u_save((linenr_T)(curwin->w_cursor.lnum - 1), - (linenr_T)(curwin->w_cursor.lnum + oap->line_count)) == FAIL) - return FAIL; - -+ delete_last_line = (oap->end.lnum == curbuf->b_ml.ml_line_count); - truncate_line(TRUE); /* delete from cursor to end of line */ - - curpos = curwin->w_cursor; /* remember curwin->w_cursor */ -*************** -*** 1956,1962 **** - del_lines((long)(oap->line_count - 2), FALSE); - - n = (oap->end.col + 1 - !oap->inclusive); -! if (oap->inclusive && oap->end.lnum == curbuf->b_ml.ml_line_count - && n > (int)STRLEN(ml_get(oap->end.lnum))) - { - /* Special case: gH<Del> deletes the last line. */ ---- 1958,1964 ---- - del_lines((long)(oap->line_count - 2), FALSE); - - n = (oap->end.col + 1 - !oap->inclusive); -! if (oap->inclusive && delete_last_line - && n > (int)STRLEN(ml_get(oap->end.lnum))) - { - /* Special case: gH<Del> deletes the last line. */ -*** ../vim-7.3.451/src/version.c 2012-02-22 16:01:53.000000000 +0100 ---- src/version.c 2012-02-22 17:37:18.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 452, - /**/ - --- -From "know your smileys": - =):-) Uncle Sam - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.453 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.453 -Problem: Pasting in the command line is slow. -Solution: Don't redraw if there is another character to read. (Dominique - Pelle) -Files: src/ex_getln.c - - -*** ../vim-7.3.452/src/ex_getln.c 2012-02-22 14:58:24.000000000 +0100 ---- src/ex_getln.c 2012-02-22 17:53:32.000000000 +0100 -*************** -*** 1852,1859 **** - # endif - ) - /* Always redraw the whole command line to fix shaping and -! * right-left typing. Not efficient, but it works. */ -! redrawcmd(); - #endif - } - ---- 1852,1862 ---- - # endif - ) - /* Always redraw the whole command line to fix shaping and -! * right-left typing. Not efficient, but it works. -! * Do it only when there are no characters left to read -! * to avoid useless intermediate redraws. */ -! if (vpeekc() == NUL) -! redrawcmd(); - #endif - } - -*** ../vim-7.3.452/src/version.c 2012-02-22 17:37:55.000000000 +0100 ---- src/version.c 2012-02-22 17:56:59.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 453, - /**/ - --- -From "know your smileys": - <<<:-{ Worf (Never smiles anyways, so he's a bad smiley) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.454 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.454 -Problem: Re-allocating memory slows Vim down. -Solution: Use realloc() in ga_grow(). (Dominique Pelle) -Files: src/misc2.c - - -*** ../vim-7.3.453/src/misc2.c 2012-02-22 14:58:24.000000000 +0100 ---- src/misc2.c 2012-02-22 18:07:45.000000000 +0100 -*************** -*** 2064,2087 **** - garray_T *gap; - int n; - { -! size_t len; - char_u *pp; - - if (gap->ga_maxlen - gap->ga_len < n) - { - if (n < gap->ga_growsize) - n = gap->ga_growsize; -! len = gap->ga_itemsize * (gap->ga_len + n); -! pp = alloc_clear((unsigned)len); - if (pp == NULL) - return FAIL; - gap->ga_maxlen = gap->ga_len + n; -- if (gap->ga_data != NULL) -- { -- mch_memmove(pp, gap->ga_data, -- (size_t)(gap->ga_itemsize * gap->ga_len)); -- vim_free(gap->ga_data); -- } - gap->ga_data = pp; - } - return OK; ---- 2064,2085 ---- - garray_T *gap; - int n; - { -! size_t old_len; -! size_t new_len; - char_u *pp; - - if (gap->ga_maxlen - gap->ga_len < n) - { - if (n < gap->ga_growsize) - n = gap->ga_growsize; -! new_len = gap->ga_itemsize * (gap->ga_len + n); -! pp = (gap->ga_data == NULL) -! ? alloc(new_len) : vim_realloc(gap->ga_data, new_len); - if (pp == NULL) - return FAIL; -+ old_len = gap->ga_itemsize * gap->ga_maxlen; -+ vim_memset(pp + old_len, 0, new_len - old_len); - gap->ga_maxlen = gap->ga_len + n; - gap->ga_data = pp; - } - return OK; -*** ../vim-7.3.453/src/version.c 2012-02-22 17:58:00.000000000 +0100 ---- src/version.c 2012-02-22 18:09:42.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 454, - /**/ - --- -From "know your smileys": - (X0||) Double hamburger with lettuce and tomato - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.455 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.455 -Problem: Using many continuation lines can be slow. -Solution: Adjust the reallocation size to the current length. -Files: src/ex_cmds2.c - - -*** ../vim-7.3.454/src/ex_cmds2.c 2012-02-11 20:40:49.000000000 +0100 ---- src/ex_cmds2.c 2012-02-22 18:24:11.000000000 +0100 -*************** -*** 3448,3454 **** - { - garray_T ga; - -! ga_init2(&ga, (int)sizeof(char_u), 200); - ga_concat(&ga, line); - ga_concat(&ga, p + 1); - for (;;) ---- 3448,3454 ---- - { - garray_T ga; - -! ga_init2(&ga, (int)sizeof(char_u), 400); - ga_concat(&ga, line); - ga_concat(&ga, p + 1); - for (;;) -*************** -*** 3460,3465 **** ---- 3460,3474 ---- - p = skipwhite(sp->nextline); - if (*p != '\\') - break; -+ /* Adjust the growsize to the current length to speed up -+ * concatenating many lines. */ -+ if (ga.ga_len > 400) -+ { -+ if (ga.ga_len > 8000) -+ ga.ga_growsize = 8000; -+ else -+ ga.ga_growsize = ga.ga_len; -+ } - ga_concat(&ga, p + 1); - } - ga_append(&ga, NUL); -*** ../vim-7.3.454/src/version.c 2012-02-22 18:12:29.000000000 +0100 ---- src/version.c 2012-02-22 18:24:58.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 455, - /**/ - --- -From "know your smileys": - :-X My lips are sealed - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.456 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.456 -Problem: ":tab drop file" has several problems, including moving the - current window and opening a new tab for a file that already has a - window. -Solution: Refactor ":tab drop" handling. (Hirohito Higashi) -Files: src/buffer.c, src/testdir/test62.in, src/testdir/test62.ok - - -*** ../vim-7.3.455/src/buffer.c 2012-02-22 14:58:24.000000000 +0100 ---- src/buffer.c 2012-02-22 19:08:34.000000000 +0100 -*************** -*** 4405,4411 **** - { - int i; - win_T *wp, *wpnext; -! char_u *opened; /* array of flags for which args are open */ - int opened_len; /* length of opened[] */ - int use_firstwin = FALSE; /* use first window for arglist */ - int split_ret = OK; ---- 4405,4416 ---- - { - int i; - win_T *wp, *wpnext; -! char_u *opened; /* Array of weight for which args are open: -! * 0: not opened -! * 1: opened in other tab -! * 2: opened in curtab -! * 3: opened in curtab and curwin -! */ - int opened_len; /* length of opened[] */ - int use_firstwin = FALSE; /* use first window for arglist */ - int split_ret = OK; -*************** -*** 4414,4419 **** ---- 4419,4426 ---- - buf_T *buf; - tabpage_T *tpnext; - int had_tab = cmdmod.tab; -+ win_T *old_curwin, *last_curwin; -+ tabpage_T *old_curtab, *last_curtab; - win_T *new_curwin = NULL; - tabpage_T *new_curtab = NULL; - -*************** -*** 4430,4435 **** ---- 4437,4451 ---- - if (opened == NULL) - return; - -+ /* Autocommands may do anything to the argument list. Make sure it's not -+ * freed while we are working here by "locking" it. We still have to -+ * watch out for its size to be changed. */ -+ alist = curwin->w_alist; -+ ++alist->al_refcount; -+ -+ old_curwin = curwin; -+ old_curtab = curtab; -+ - #ifdef FEAT_GUI - need_mouse_correct = TRUE; - #endif -*************** -*** 4451,4486 **** - wpnext = wp->w_next; - buf = wp->w_buffer; - if (buf->b_ffname == NULL -! || buf->b_nwindows > 1 - #ifdef FEAT_VERTSPLIT - || wp->w_width != Columns - #endif - ) -! i = ARGCOUNT; - else - { - /* check if the buffer in this window is in the arglist */ -! for (i = 0; i < ARGCOUNT; ++i) - { -! if (ARGLIST[i].ae_fnum == buf->b_fnum -! || fullpathcmp(alist_name(&ARGLIST[i]), -! buf->b_ffname, TRUE) & FPC_SAME) - { -! if (i < opened_len) - { -! opened[i] = TRUE; - if (i == 0) - { - new_curwin = wp; - new_curtab = curtab; - } - } -! if (wp->w_alist != curwin->w_alist) - { - /* Use the current argument list for all windows - * containing a file from it. */ - alist_unlink(wp->w_alist); -! wp->w_alist = curwin->w_alist; - ++wp->w_alist->al_refcount; - } - break; ---- 4467,4517 ---- - wpnext = wp->w_next; - buf = wp->w_buffer; - if (buf->b_ffname == NULL -! || (!keep_tabs && buf->b_nwindows > 1) - #ifdef FEAT_VERTSPLIT - || wp->w_width != Columns - #endif - ) -! i = opened_len; - else - { - /* check if the buffer in this window is in the arglist */ -! for (i = 0; i < opened_len; ++i) - { -! if (i < alist->al_ga.ga_len -! && (AARGLIST(alist)[i].ae_fnum == buf->b_fnum -! || fullpathcmp(alist_name(&AARGLIST(alist)[i]), -! buf->b_ffname, TRUE) & FPC_SAME)) - { -! int weight = 1; -! -! if (old_curtab == curtab) -! { -! ++weight; -! if (old_curwin == wp) -! ++weight; -! } -! -! if (weight > (int)opened[i]) - { -! opened[i] = (char_u)weight; - if (i == 0) - { -+ if (new_curwin != NULL) -+ new_curwin->w_arg_idx = opened_len; - new_curwin = wp; - new_curtab = curtab; - } - } -! else if (keep_tabs) -! i = opened_len; -! -! if (wp->w_alist != alist) - { - /* Use the current argument list for all windows - * containing a file from it. */ - alist_unlink(wp->w_alist); -! wp->w_alist = alist; - ++wp->w_alist->al_refcount; - } - break; -*************** -*** 4489,4495 **** - } - wp->w_arg_idx = i; - -! if (i == ARGCOUNT && !keep_tabs) /* close this window */ - { - if (P_HID(buf) || forceit || buf->b_nwindows > 1 - || !bufIsChanged(buf)) ---- 4520,4526 ---- - } - wp->w_arg_idx = i; - -! if (i == opened_len && !keep_tabs)/* close this window */ - { - if (P_HID(buf) || forceit || buf->b_nwindows > 1 - || !bufIsChanged(buf)) -*************** -*** 4511,4517 **** - } - #ifdef FEAT_WINDOWS - /* don't close last window */ -! if (firstwin == lastwin && first_tabpage->tp_next == NULL) - #endif - use_firstwin = TRUE; - #ifdef FEAT_WINDOWS ---- 4542,4549 ---- - } - #ifdef FEAT_WINDOWS - /* don't close last window */ -! if (firstwin == lastwin -! && (first_tabpage->tp_next == NULL || !had_tab)) - #endif - use_firstwin = TRUE; - #ifdef FEAT_WINDOWS -*************** -*** 4545,4564 **** - * Open a window for files in the argument list that don't have one. - * ARGCOUNT may change while doing this, because of autocommands. - */ -! if (count > ARGCOUNT || count <= 0) -! count = ARGCOUNT; -! -! /* Autocommands may do anything to the argument list. Make sure it's not -! * freed while we are working here by "locking" it. We still have to -! * watch out for its size to be changed. */ -! alist = curwin->w_alist; -! ++alist->al_refcount; - - #ifdef FEAT_AUTOCMD - /* Don't execute Win/Buf Enter/Leave autocommands here. */ - ++autocmd_no_enter; - ++autocmd_no_leave; - #endif - win_enter(lastwin, FALSE); - #ifdef FEAT_WINDOWS - /* ":drop all" should re-use an empty window to avoid "--remote-tab" ---- 4577,4592 ---- - * Open a window for files in the argument list that don't have one. - * ARGCOUNT may change while doing this, because of autocommands. - */ -! if (count > opened_len || count <= 0) -! count = opened_len; - - #ifdef FEAT_AUTOCMD - /* Don't execute Win/Buf Enter/Leave autocommands here. */ - ++autocmd_no_enter; - ++autocmd_no_leave; - #endif -+ last_curwin = curwin; -+ last_curtab = curtab; - win_enter(lastwin, FALSE); - #ifdef FEAT_WINDOWS - /* ":drop all" should re-use an empty window to avoid "--remote-tab" -*************** -*** 4568,4578 **** - use_firstwin = TRUE; - #endif - -! for (i = 0; i < count && i < alist->al_ga.ga_len && !got_int; ++i) - { - if (alist == &global_alist && i == global_alist.al_ga.ga_len - 1) - arg_had_last = TRUE; -! if (i < opened_len && opened[i]) - { - /* Move the already present window to below the current window */ - if (curwin->w_arg_idx != i) ---- 4596,4606 ---- - use_firstwin = TRUE; - #endif - -! for (i = 0; i < count && i < opened_len && !got_int; ++i) - { - if (alist == &global_alist && i == global_alist.al_ga.ga_len - 1) - arg_had_last = TRUE; -! if (opened[i] > 0) - { - /* Move the already present window to below the current window */ - if (curwin->w_arg_idx != i) -*************** -*** 4581,4587 **** - { - if (wpnext->w_arg_idx == i) - { -! win_move_after(wpnext, curwin); - break; - } - } ---- 4609,4621 ---- - { - if (wpnext->w_arg_idx == i) - { -! if (keep_tabs) -! { -! new_curwin = wpnext; -! new_curtab = curtab; -! } -! else -! win_move_after(wpnext, curwin); - break; - } - } -*************** -*** 4636,4641 **** ---- 4670,4683 ---- - #ifdef FEAT_AUTOCMD - --autocmd_no_enter; - #endif -+ /* restore last referenced tabpage's curwin */ -+ if (last_curtab != new_curtab) -+ { -+ if (valid_tabpage(last_curtab)) -+ goto_tabpage_tp(last_curtab); -+ if (win_valid(last_curwin)) -+ win_enter(last_curwin, FALSE); -+ } - /* to window with first arg */ - if (valid_tabpage(new_curtab)) - goto_tabpage_tp(new_curtab); -*** ../vim-7.3.455/src/testdir/test62.in 2010-08-15 21:57:29.000000000 +0200 ---- src/testdir/test62.in 2012-02-22 18:45:10.000000000 +0100 -*************** -*** 50,55 **** ---- 50,92 ---- - :call append(line('$'), test_status) - :" - :" -+ :" Test for ":tab drop exist-file" to keep current window. -+ :sp test1 -+ :tab drop test1 -+ :let test_status = 'tab drop 1: fail' -+ :if tabpagenr('$') == 1 && winnr('$') == 2 && winnr() == 1 -+ : let test_status = 'tab drop 1: pass' -+ :endif -+ :close -+ :call append(line('$'), test_status) -+ :" -+ :" -+ :" Test for ":tab drop new-file" to keep current window of tabpage 1. -+ :split -+ :tab drop newfile -+ :let test_status = 'tab drop 2: fail' -+ :if tabpagenr('$') == 2 && tabpagewinnr(1, '$') == 2 && tabpagewinnr(1) == 1 -+ : let test_status = 'tab drop 2: pass' -+ :endif -+ :tabclose -+ :q -+ :call append(line('$'), test_status) -+ :" -+ :" -+ :" Test for ":tab drop multi-opend-file" to keep current tabpage and window. -+ :new test1 -+ :tabnew -+ :new test1 -+ :tab drop test1 -+ :let test_status = 'tab drop 3: fail' -+ :if tabpagenr() == 2 && tabpagewinnr(2, '$') == 2 && tabpagewinnr(2) == 1 -+ : let test_status = 'tab drop 3: pass' -+ :endif -+ :tabclose -+ :q -+ :call append(line('$'), test_status) -+ :" -+ :" - :/^Results/,$w! test.out - :qa! - ENDTEST -*** ../vim-7.3.455/src/testdir/test62.ok 2010-08-15 21:57:29.000000000 +0200 ---- src/testdir/test62.ok 2012-02-22 18:45:10.000000000 +0100 -*************** -*** 5,7 **** ---- 5,10 ---- - this is tab page 4 - gettabvar: pass - settabvar: pass -+ tab drop 1: pass -+ tab drop 2: pass -+ tab drop 3: pass -*** ../vim-7.3.455/src/version.c 2012-02-22 18:29:29.000000000 +0100 ---- src/version.c 2012-02-22 19:11:52.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 456, - /**/ - --- -% cat /usr/include/life.h -void life(void); - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.457 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.457 -Problem: When setting $VIMRUNTIME later the directory for fetching - translated messages is not adjusted. -Solution: Put bindtextdomain() in vim_setenv(). -Files: src/misc1.c - - -*** ../vim-7.3.456/src/misc1.c 2012-02-05 22:05:44.000000000 +0100 ---- src/misc1.c 2012-02-26 13:27:28.000000000 +0100 -*************** -*** 4133,4149 **** - { - vim_setenv((char_u *)"VIMRUNTIME", p); - didset_vimruntime = TRUE; -- #ifdef FEAT_GETTEXT -- { -- char_u *buf = concat_str(p, (char_u *)"/lang"); -- -- if (buf != NULL) -- { -- bindtextdomain(VIMPACKAGE, (char *)buf); -- vim_free(buf); -- } -- } -- #endif - } - else - { ---- 4133,4138 ---- -*************** -*** 4221,4226 **** ---- 4210,4231 ---- - putenv((char *)envbuf); - } - #endif -+ #ifdef FEAT_GETTEXT -+ /* -+ * When setting $VIMRUNTIME adjust the directory to find message -+ * translations to $VIMRUNTIME/lang. -+ */ -+ if (*val != NUL && STRICMP(name, "VIMRUNTIME") == 0) -+ { -+ char_u *buf = concat_str(val, (char_u *)"/lang"); -+ -+ if (buf != NULL) -+ { -+ bindtextdomain(VIMPACKAGE, (char *)buf); -+ vim_free(buf); -+ } -+ } -+ #endif - } - - #if defined(FEAT_CMDL_COMPL) || defined(PROTO) -*** ../vim-7.3.456/src/version.c 2012-02-22 19:13:00.000000000 +0100 ---- src/version.c 2012-02-29 13:47:09.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 457, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -118. You are on a first-name basis with your ISP's staff. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.458 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.458 -Problem: Crash when calling smsg() during startup. -Solution: Don't use 'shortmess' when it is not set yet. -Files: src/option.c - - -*** ../vim-7.3.457/src/option.c 2012-02-20 22:18:22.000000000 +0100 ---- src/option.c 2012-02-26 13:14:48.000000000 +0100 -*************** -*** 10984,10990 **** - shortmess(x) - int x; - { -! return ( vim_strchr(p_shm, x) != NULL - || (vim_strchr(p_shm, 'a') != NULL - && vim_strchr((char_u *)SHM_A, x) != NULL)); - } ---- 10984,10991 ---- - shortmess(x) - int x; - { -! return p_shm != NULL && -! ( vim_strchr(p_shm, x) != NULL - || (vim_strchr(p_shm, 'a') != NULL - && vim_strchr((char_u *)SHM_A, x) != NULL)); - } -*** ../vim-7.3.457/src/version.c 2012-02-29 13:49:03.000000000 +0100 ---- src/version.c 2012-02-29 13:50:52.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 458, - /**/ - --- -Support your right to bare arms! Wear short sleeves! - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.459 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.459 -Problem: Win32: Warnings for type conversion. -Solution: Add type casts. (Mike Williams) -Files: src/misc2.c, src/os_win32.c - - -*** ../vim-7.3.458/src/misc2.c 2012-02-22 18:12:29.000000000 +0100 ---- src/misc2.c 2012-02-29 13:44:17.000000000 +0100 -*************** -*** 2074,2080 **** - n = gap->ga_growsize; - new_len = gap->ga_itemsize * (gap->ga_len + n); - pp = (gap->ga_data == NULL) -! ? alloc(new_len) : vim_realloc(gap->ga_data, new_len); - if (pp == NULL) - return FAIL; - old_len = gap->ga_itemsize * gap->ga_maxlen; ---- 2074,2080 ---- - n = gap->ga_growsize; - new_len = gap->ga_itemsize * (gap->ga_len + n); - pp = (gap->ga_data == NULL) -! ? alloc((unsigned)new_len) : vim_realloc(gap->ga_data, new_len); - if (pp == NULL) - return FAIL; - old_len = gap->ga_itemsize * gap->ga_maxlen; -*** ../vim-7.3.458/src/os_win32.c 2012-02-22 15:34:05.000000000 +0100 ---- src/os_win32.c 2012-02-29 13:43:39.000000000 +0100 -*************** -*** 264,270 **** - static void - unescape_shellxquote(char_u *p, char_u *escaped) - { -! int l = STRLEN(p); - int n; - - while (*p != NUL) ---- 264,270 ---- - static void - unescape_shellxquote(char_u *p, char_u *escaped) - { -! int l = (int)STRLEN(p); - int n; - - while (*p != NUL) -*** ../vim-7.3.458/src/version.c 2012-02-29 13:51:32.000000000 +0100 ---- src/version.c 2012-02-29 13:58:08.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 459, - /**/ - --- -"A clear conscience is usually the sign of a bad memory." - -- Steven Wright - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.460 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.460 -Problem: Win32: UPX does not compress 64 bit binaries. -Solution: Mention and add the alternative: mpress. (Dave Bodenstab) -Files: src/INSTALLpc.txt, src/Make_ming.mak - - -*** ../vim-7.3.459/src/INSTALLpc.txt 2011-07-15 13:51:57.000000000 +0200 ---- src/INSTALLpc.txt 2012-02-29 14:01:34.000000000 +0100 -*************** -*** 239,244 **** ---- 239,250 ---- - found at - http://www.upx.org/ - -+ As of 2011, UPX still does not support compressing 64-bit EXE's; if you have -+ built a 64-bit vim then an alternative to UPX is 'MPRESS'. MPRESS can be found -+ at: -+ http://www.matcode.com/mpress.htm -+ -+ - ADDITION: NLS support with MinGW - - (by Eduardo F. Amatria <eferna1@platea.pntic.mec.es>) -*** ../vim-7.3.459/src/Make_ming.mak 2011-10-12 14:11:43.000000000 +0200 ---- src/Make_ming.mak 2012-02-29 16:54:09.000000000 +0100 -*************** -*** 14,22 **** - # it's just run out of memory or something. Run again, and it will continue - # with 'xxd'. - # -! # "make upx" makes *compressed* versions of the GUI and console EXEs, using the -! # excellent UPX compressor: - # http://upx.sourceforge.net/ - # - # Maintained by Ron Aaron <ronaharon@yahoo.com> - # updated 2003 Jan 20 ---- 14,24 ---- - # it's just run out of memory or something. Run again, and it will continue - # with 'xxd'. - # -! # "make upx" makes *compressed* versions of the 32 bit GUI and console EXEs, -! # using the excellent UPX compressor: - # http://upx.sourceforge.net/ -+ # "make mpress" uses the MPRESS compressor for 32- and 64-bit EXEs: -+ # http://www.matcode.com/mpress.htm - # - # Maintained by Ron Aaron <ronaharon@yahoo.com> - # updated 2003 Jan 20 -*************** -*** 640,645 **** ---- 642,651 ---- - upx gvim.exe - upx vim.exe - -+ mpress: exes -+ mpress gvim.exe -+ mpress vim.exe -+ - xxd/xxd.exe: xxd/xxd.c - $(MAKE) -C xxd -f Make_ming.mak CC=$(CC) - -*** ../vim-7.3.459/src/version.c 2012-02-29 13:58:43.000000000 +0100 ---- src/version.c 2012-02-29 16:54:40.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 460, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -119. You are reading a book and look for the scroll bar to get to - the next page. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.461 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.461 -Problem: The InsertCharPre autocommand event is not triggered during - completion and when typing several characters quickly. -Solution: Also trigger InsertCharPre during completion. Do not read ahead - when an InsertCharPre autocommand is defined. (Yasuhiro Matsumoto) -Files: src/edit.c, src/fileio.c, src/proto/fileio.pro - - -*** ../vim-7.3.460/src/edit.c 2012-02-04 23:34:57.000000000 +0100 ---- src/edit.c 2012-02-29 18:17:31.000000000 +0100 -*************** -*** 259,264 **** ---- 259,267 ---- - static void ins_try_si __ARGS((int c)); - #endif - static colnr_T get_nolist_virtcol __ARGS((void)); -+ #ifdef FEAT_AUTOCMD -+ static char_u *do_insert_char_pre __ARGS((int c)); -+ #endif - - static colnr_T Insstart_textlen; /* length of line when insert started */ - static colnr_T Insstart_blank_vcol; /* vcol for first inserted blank */ -*************** -*** 784,790 **** - * completion: Add to "compl_leader". */ - if (ins_compl_accept_char(c)) - { -! ins_compl_addleader(c); - continue; - } - ---- 787,806 ---- - * completion: Add to "compl_leader". */ - if (ins_compl_accept_char(c)) - { -! #ifdef FEAT_AUTOCMD -! /* Trigger InsertCharPre. */ -! char_u *str = do_insert_char_pre(c); -! char_u *p; -! -! if (str != NULL) -! { -! for (p = str; *p != NUL; mb_ptr_adv(p)) -! ins_compl_addleader(PTR2CHAR(p)); -! vim_free(str); -! } -! else -! #endif -! ins_compl_addleader(c); - continue; - } - -*************** -*** 1393,1426 **** - #ifdef FEAT_AUTOCMD - if (!p_paste) - { -! /* Trigger the InsertCharPre event. Lock the text to avoid -! * weird things from happening. */ -! set_vim_var_char(c); -! ++textlock; -! if (apply_autocmds(EVENT_INSERTCHARPRE, NULL, NULL, -! FALSE, curbuf)) -! { -! /* Get the new value of v:char. If it is more than one -! * character insert it literally. */ -! char_u *s = get_vim_var_str(VV_CHAR); -! if (MB_CHARLEN(s) > 1) - { -! if (stop_arrow() != FAIL) - { -! ins_str(s); -! AppendToRedobuffLit(s, -1); - } -! c = NUL; - } -! else -! c = PTR2CHAR(s); - } - -! set_vim_var_string(VV_CHAR, NULL, -1); -! --textlock; -! -! /* If the new value is an empty string then don't insert a -! * char. */ - if (c == NUL) - break; - } ---- 1409,1439 ---- - #ifdef FEAT_AUTOCMD - if (!p_paste) - { -! /* Trigger InsertCharPre. */ -! char_u *str = do_insert_char_pre(c); -! char_u *p; -! -! if (str != NULL) -! { -! if (*str != NUL && stop_arrow() != FAIL) - { -! /* Insert the new value of v:char literally. */ -! for (p = str; *p != NUL; mb_ptr_adv(p)) - { -! c = PTR2CHAR(p); -! if (c == CAR || c == K_KENTER || c == NL) -! ins_eol(c); -! else -! ins_char(c); - } -! AppendToRedobuffLit(str, -1); - } -! vim_free(str); -! c = NUL; - } - -! /* If the new value is already inserted or an empty string -! * then don't insert any character. */ - if (c == NUL) - break; - } -*************** -*** 5883,5888 **** ---- 5896,5903 ---- - * Don't do this when 'cindent' or 'indentexpr' is set, because we might - * need to re-indent at a ':', or any other character (but not what - * 'paste' is set).. -+ * Don't do this when there an InsertCharPre autocommand is defined, -+ * because we need to fire the event for every character. - */ - #ifdef USE_ON_FLY_SCROLL - dont_scroll = FALSE; /* allow scrolling here */ -*************** -*** 5900,5905 **** ---- 5915,5923 ---- - #ifdef FEAT_RIGHTLEFT - && !p_ri - #endif -+ #ifdef FEAT_AUTOCMD -+ && !has_insertcharpre() -+ #endif - ) - { - #define INPUT_BUFLEN 100 -*************** -*** 10068,10070 **** ---- 10086,10123 ---- - validate_virtcol(); - return curwin->w_virtcol; - } -+ -+ #ifdef FEAT_AUTOCMD -+ /* -+ * Handle the InsertCharPre autocommand. -+ * "c" is the character that was typed. -+ * Return a pointer to allocated memory with the replacement string. -+ * Return NULL to continue inserting "c". -+ */ -+ static char_u * -+ do_insert_char_pre(c) -+ int c; -+ { -+ char_u *res; -+ -+ /* Return quickly when there is nothing to do. */ -+ if (!has_insertcharpre()) -+ return NULL; -+ -+ /* Lock the text to avoid weird things from happening. */ -+ ++textlock; -+ set_vim_var_char(c); /* set v:char */ -+ -+ if (apply_autocmds(EVENT_INSERTCHARPRE, NULL, NULL, FALSE, curbuf)) -+ /* Get the new value of v:char. It may be empty or more than one -+ * character. */ -+ res = vim_strsave(get_vim_var_str(VV_CHAR)); -+ else -+ res = NULL; -+ -+ set_vim_var_string(VV_CHAR, NULL, -1); /* clear v:char */ -+ --textlock; -+ -+ return res; -+ } -+ #endif -*** ../vim-7.3.460/src/fileio.c 2012-02-12 20:13:55.000000000 +0100 ---- src/fileio.c 2012-02-29 17:50:32.000000000 +0100 -*************** -*** 9116,9121 **** ---- 9116,9130 ---- - return (first_autopat[(int)EVENT_CURSORMOVEDI] != NULL); - } - -+ /* -+ * Return TRUE when there is an InsertCharPre autocommand defined. -+ */ -+ int -+ has_insertcharpre() -+ { -+ return (first_autopat[(int)EVENT_INSERTCHARPRE] != NULL); -+ } -+ - static int - apply_autocmds_group(event, fname, fname_io, force, group, buf, eap) - event_T event; -*** ../vim-7.3.460/src/proto/fileio.pro 2012-02-12 20:13:55.000000000 +0100 ---- src/proto/fileio.pro 2012-02-29 17:50:38.000000000 +0100 -*************** -*** 44,49 **** ---- 44,50 ---- - int trigger_cursorhold __ARGS((void)); - int has_cursormoved __ARGS((void)); - int has_cursormovedI __ARGS((void)); -+ int has_insertcharpre __ARGS((void)); - void block_autocmds __ARGS((void)); - void unblock_autocmds __ARGS((void)); - int has_autocmd __ARGS((event_T event, char_u *sfname, buf_T *buf)); -*** ../vim-7.3.460/src/version.c 2012-02-29 16:56:35.000000000 +0100 ---- src/version.c 2012-02-29 18:15:34.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 461, - /**/ - --- -"Computers in the future may weigh no more than 1.5 tons." - Popular Mechanics, 1949 - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.462 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.462 -Problem: When using ":loadview" folds may be closed unexpectedly. -Solution: Take into account foldlevel. (Xavier de Gaye) -Files: src/fold.c - - -*** ../vim-7.3.461/src/fold.c 2012-01-10 22:26:12.000000000 +0100 ---- src/fold.c 2012-02-29 19:18:07.000000000 +0100 -*************** -*** 3292,3298 **** - /* put_folds() {{{2 */ - #if defined(FEAT_SESSION) || defined(PROTO) - static int put_folds_recurse __ARGS((FILE *fd, garray_T *gap, linenr_T off)); -! static int put_foldopen_recurse __ARGS((FILE *fd, garray_T *gap, linenr_T off)); - - /* - * Write commands to "fd" to restore the manual folds in window "wp". ---- 3292,3299 ---- - /* put_folds() {{{2 */ - #if defined(FEAT_SESSION) || defined(PROTO) - static int put_folds_recurse __ARGS((FILE *fd, garray_T *gap, linenr_T off)); -! static int put_foldopen_recurse __ARGS((FILE *fd, win_T *wp, garray_T *gap, linenr_T off)); -! static int put_fold_open_close __ARGS((FILE *fd, fold_T *fp, linenr_T off)); - - /* - * Write commands to "fd" to restore the manual folds in window "wp". -*************** -*** 3312,3318 **** - - /* If some folds are manually opened/closed, need to restore that. */ - if (wp->w_fold_manual) -! return put_foldopen_recurse(fd, &wp->w_folds, (linenr_T)0); - - return OK; - } ---- 3313,3319 ---- - - /* If some folds are manually opened/closed, need to restore that. */ - if (wp->w_fold_manual) -! return put_foldopen_recurse(fd, wp, &wp->w_folds, (linenr_T)0); - - return OK; - } -*************** -*** 3352,3363 **** - * Returns FAIL when writing failed. - */ - static int -! put_foldopen_recurse(fd, gap, off) - FILE *fd; - garray_T *gap; - linenr_T off; - { - int i; - fold_T *fp; - - fp = (fold_T *)gap->ga_data; ---- 3353,3366 ---- - * Returns FAIL when writing failed. - */ - static int -! put_foldopen_recurse(fd, wp, gap, off) - FILE *fd; -+ win_T *wp; - garray_T *gap; - linenr_T off; - { - int i; -+ int level; - fold_T *fp; - - fp = (fold_T *)gap->ga_data; -*************** -*** 3367,3393 **** - { - if (fp->fd_nested.ga_len > 0) - { -! /* open/close nested folds while this fold is open */ - if (fprintf(fd, "%ld", fp->fd_top + off) < 0 - || put_eol(fd) == FAIL - || put_line(fd, "normal zo") == FAIL) - return FAIL; -! if (put_foldopen_recurse(fd, &fp->fd_nested, off + fp->fd_top) - == FAIL) - return FAIL; - } -- if (fprintf(fd, "%ld", fp->fd_top + off) < 0 -- || put_eol(fd) == FAIL -- || fprintf(fd, "normal z%c", -- fp->fd_flags == FD_CLOSED ? 'c' : 'o') < 0 -- || put_eol(fd) == FAIL) -- return FAIL; - } - ++fp; - } - - return OK; - } - #endif /* FEAT_SESSION */ - - /* }}}1 */ ---- 3370,3429 ---- - { - if (fp->fd_nested.ga_len > 0) - { -! /* open nested folds while this fold is open */ - if (fprintf(fd, "%ld", fp->fd_top + off) < 0 - || put_eol(fd) == FAIL - || put_line(fd, "normal zo") == FAIL) - return FAIL; -! if (put_foldopen_recurse(fd, wp, &fp->fd_nested, -! off + fp->fd_top) - == FAIL) - return FAIL; -+ /* close the parent when needed */ -+ if (fp->fd_flags == FD_CLOSED) -+ { -+ if (put_fold_open_close(fd, fp, off) == FAIL) -+ return FAIL; -+ } -+ } -+ else -+ { -+ /* Open or close the leaf according to the window foldlevel. -+ * Do not close a leaf that is already closed, as it will close -+ * the parent. */ -+ level = foldLevelWin(wp, off + fp->fd_top); -+ if ((fp->fd_flags == FD_CLOSED && wp->w_p_fdl >= level) -+ || (fp->fd_flags != FD_CLOSED && wp->w_p_fdl < level)) -+ if (put_fold_open_close(fd, fp, off) == FAIL) -+ return FAIL; - } - } - ++fp; - } - - return OK; - } -+ -+ /* put_fold_open_close() {{{2 */ -+ /* -+ * Write the open or close command to "fd". -+ * Returns FAIL when writing failed. -+ */ -+ static int -+ put_fold_open_close(fd, fp, off) -+ FILE *fd; -+ fold_T *fp; -+ linenr_T off; -+ { -+ if (fprintf(fd, "%ld", fp->fd_top + off) < 0 -+ || put_eol(fd) == FAIL -+ || fprintf(fd, "normal z%c", -+ fp->fd_flags == FD_CLOSED ? 'c' : 'o') < 0 -+ || put_eol(fd) == FAIL) -+ return FAIL; -+ -+ return OK; -+ } - #endif /* FEAT_SESSION */ - - /* }}}1 */ -*** ../vim-7.3.461/src/version.c 2012-02-29 18:22:03.000000000 +0100 ---- src/version.c 2012-02-29 18:40:43.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 462, - /**/ - --- -~ -~ -~ -".signature" 4 lines, 50 characters written - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.463 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.463 -Problem: When using ":s///c" the cursor is moved away from the match. - (Lawman) -Solution: Don't move the cursor when do_ask is set. (Christian Brabandt) -Files: src/ex_cmds.c - - -*** ../vim-7.3.462/src/ex_cmds.c 2012-02-22 14:58:24.000000000 +0100 ---- src/ex_cmds.c 2012-03-07 14:54:21.000000000 +0100 -*************** -*** 5151,5160 **** - - if (!global_busy) - { -! if (endcolumn) -! coladvance((colnr_T)MAXCOL); -! else -! beginline(BL_WHITE | BL_FIX); - if (!do_sub_msg(do_count) && do_ask) - MSG(""); - } ---- 5151,5163 ---- - - if (!global_busy) - { -! if (!do_ask) /* when interactive leave cursor on the match */ -! { -! if (endcolumn) -! coladvance((colnr_T)MAXCOL); -! else -! beginline(BL_WHITE | BL_FIX); -! } - if (!do_sub_msg(do_count) && do_ask) - MSG(""); - } -*** ../vim-7.3.462/src/version.c 2012-02-29 19:19:57.000000000 +0100 ---- src/version.c 2012-03-07 14:55:39.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 463, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -151. You find yourself engaged to someone you've never actually met, - except through e-mail. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.464 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.464 -Problem: Compiler warning for sprintf. -Solution: Put the length in a variable. (Dominique Pelle) -Files: src/version.c - - -*** ../vim-7.3.463/src/version.c 2012-03-07 14:57:50.000000000 +0100 ---- src/version.c 2012-03-07 17:58:41.000000000 +0100 -*************** -*** 2187,2198 **** - /* Check for 9.9x or 9.9xx, alpha/beta version */ - if (isalpha((int)vers[3])) - { -! if (isalpha((int)vers[4])) -! sprintf((char *)vers + 5, ".%d%s", highest_patch(), -! mediumVersion + 5); -! else -! sprintf((char *)vers + 4, ".%d%s", highest_patch(), -! mediumVersion + 4); - } - else - sprintf((char *)vers + 3, ".%d", highest_patch()); ---- 2189,2197 ---- - /* Check for 9.9x or 9.9xx, alpha/beta version */ - if (isalpha((int)vers[3])) - { -! int len = (isalpha((int)vers[4])) ? 5 : 4; -! sprintf((char *)vers + len, ".%d%s", highest_patch(), -! mediumVersion + len); - } - else - sprintf((char *)vers + 3, ".%d", highest_patch()); -*** ../vim-7.3.463/src/version.c 2012-03-07 14:57:50.000000000 +0100 ---- src/version.c 2012-03-07 17:58:41.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 464, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -152. You find yourself falling for someone you've never seen or hardly - know, but, boy can he/she TYPE!!!!!! - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.465 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.465 -Problem: Cannot get file name with newline from glob(). -Solution: Add argument to glob() and expand() to indicate they must return a - list. (Christian Brabandt) -Files: runtime/doc/eval.txt, src/eval.c, src/ex_getln.c, src/vim.h - - -*** ../vim-7.3.464/runtime/doc/eval.txt 2011-12-14 15:32:44.000000000 +0100 ---- runtime/doc/eval.txt 2012-03-07 18:49:26.000000000 +0100 -*************** -*** 1738,1744 **** - extend( {expr1}, {expr2} [, {expr3}]) - List/Dict insert items of {expr2} into {expr1} - exp( {expr}) Float exponential of {expr} -! expand( {expr} [, {flag}]) String expand special keywords in {expr} - feedkeys( {string} [, {mode}]) Number add key sequence to typeahead buffer - filereadable( {file}) Number TRUE if {file} is a readable file - filewritable( {file}) Number TRUE if {file} is a writable file ---- 1746,1753 ---- - extend( {expr1}, {expr2} [, {expr3}]) - List/Dict insert items of {expr2} into {expr1} - exp( {expr}) Float exponential of {expr} -! expand( {expr} [, {nosuf} [, {list}]]) -! any expand special keywords in {expr} - feedkeys( {string} [, {mode}]) Number add key sequence to typeahead buffer - filereadable( {file}) Number TRUE if {file} is a readable file - filewritable( {file}) Number TRUE if {file} is a writable file -*************** -*** 1792,1798 **** - getwinposx() Number X coord in pixels of GUI Vim window - getwinposy() Number Y coord in pixels of GUI Vim window - getwinvar( {nr}, {varname}) any variable {varname} in window {nr} -! glob( {expr} [, {flag}]) String expand file wildcards in {expr} - globpath( {path}, {expr} [, {flag}]) - String do glob({expr}) for all dirs in {path} - has( {feature}) Number TRUE if feature {feature} supported ---- 1801,1808 ---- - getwinposx() Number X coord in pixels of GUI Vim window - getwinposy() Number Y coord in pixels of GUI Vim window - getwinvar( {nr}, {varname}) any variable {varname} in window {nr} -! glob( {expr} [, {nosuf} [, {list}]]) -! any expand file wildcards in {expr} - globpath( {path}, {expr} [, {flag}]) - String do glob({expr}) for all dirs in {path} - has( {feature}) Number TRUE if feature {feature} supported -*************** -*** 2731,2743 **** - {only available when compiled with the |+float| feature} - - -! expand({expr} [, {flag}]) *expand()* - Expand wildcards and the following special keywords in {expr}. -! The result is a String. - -! When there are several matches, they are separated by <NL> -! characters. [Note: in version 5.0 a space was used, which -! caused problems when a file name contains a space] - - If the expansion fails, the result is an empty string. A name - for a non-existing file is not included. ---- 2744,2758 ---- - {only available when compiled with the |+float| feature} - - -! expand({expr} [, {nosuf} [, {list}]]) *expand()* - Expand wildcards and the following special keywords in {expr}. -! 'wildignorecase' applies. - -! If {list} is given and it is non-zero, a List will be returned. -! Otherwise the result is a String and when there are several -! matches, they are separated by <NL> characters. [Note: in -! version 5.0 a space was used, which caused problems when a -! file name contains a space] - - If the expansion fails, the result is an empty string. A name - for a non-existing file is not included. -*************** -*** 2754,2759 **** ---- 2769,2775 ---- - <abuf> autocmd buffer number (as a String!) - <amatch> autocmd matched name - <sfile> sourced script file name -+ <slnum> sourced script file line number - <cword> word under the cursor - <cWORD> WORD under the cursor - <client> the {clientid} of the last received -*************** -*** 2790,2799 **** - When {expr} does not start with '%', '#' or '<', it is - expanded like a file name is expanded on the command line. - 'suffixes' and 'wildignore' are used, unless the optional -! {flag} argument is given and it is non-zero. Names for -! non-existing files are included. The "**" item can be used to -! search in a directory tree. For example, to find all "README" -! files in the current directory and below: > - :echo expand("**/README") - < - Expand() can also be used to expand variables and environment ---- 2806,2815 ---- - When {expr} does not start with '%', '#' or '<', it is - expanded like a file name is expanded on the command line. - 'suffixes' and 'wildignore' are used, unless the optional -! {nosuf} argument is given and it is non-zero. -! Names for non-existing files are included. The "**" item can -! be used to search in a directory tree. For example, to find -! all "README" files in the current directory and below: > - :echo expand("**/README") - < - Expand() can also be used to expand variables and environment -*************** -*** 3437,3453 **** - :let list_is_on = getwinvar(2, '&list') - :echo "myvar = " . getwinvar(1, 'myvar') - < -! glob({expr} [, {flag}]) *glob()* - Expand the file wildcards in {expr}. See |wildcards| for the - use of special characters. -! The result is a String. -! When there are several matches, they are separated by <NL> -! characters. -! Unless the optional {flag} argument is given and is non-zero, - the 'suffixes' and 'wildignore' options apply: Names matching - one of the patterns in 'wildignore' will be skipped and - 'suffixes' affect the ordering of matches. -! If the expansion fails, the result is an empty string. - A name for a non-existing file is not included. - - For most systems backticks can be used to get files names from ---- 3456,3478 ---- - :let list_is_on = getwinvar(2, '&list') - :echo "myvar = " . getwinvar(1, 'myvar') - < -! glob({expr} [, {nosuf} [, {list}]]) *glob()* - Expand the file wildcards in {expr}. See |wildcards| for the - use of special characters. -! -! Unless the optional {nosuf} argument is given and is non-zero, - the 'suffixes' and 'wildignore' options apply: Names matching - one of the patterns in 'wildignore' will be skipped and - 'suffixes' affect the ordering of matches. -! 'wildignorecase' always applies. -! -! When {list} is present and it is non-zero the result is a List -! with all matching files. The advantage of using a List is, -! you also get filenames containing newlines correctly. -! Otherwise the result is a String and when there are several -! matches, they are separated by <NL> characters. -! -! If the expansion fails, the result is an empty String or List. - A name for a non-existing file is not included. - - For most systems backticks can be used to get files names from -*** ../vim-7.3.464/src/eval.c 2012-02-11 20:44:01.000000000 +0100 ---- src/eval.c 2012-03-07 19:08:36.000000000 +0100 -*************** -*** 7852,7858 **** - #ifdef FEAT_FLOAT - {"exp", 1, 1, f_exp}, - #endif -! {"expand", 1, 2, f_expand}, - {"extend", 2, 3, f_extend}, - {"feedkeys", 1, 2, f_feedkeys}, - {"file_readable", 1, 1, f_filereadable}, /* obsolete */ ---- 7852,7858 ---- - #ifdef FEAT_FLOAT - {"exp", 1, 1, f_exp}, - #endif -! {"expand", 1, 3, f_expand}, - {"extend", 2, 3, f_extend}, - {"feedkeys", 1, 2, f_feedkeys}, - {"file_readable", 1, 1, f_filereadable}, /* obsolete */ -*************** -*** 7903,7909 **** - {"getwinposx", 0, 0, f_getwinposx}, - {"getwinposy", 0, 0, f_getwinposy}, - {"getwinvar", 2, 2, f_getwinvar}, -! {"glob", 1, 2, f_glob}, - {"globpath", 2, 3, f_globpath}, - {"has", 1, 1, f_has}, - {"has_key", 2, 2, f_has_key}, ---- 7903,7909 ---- - {"getwinposx", 0, 0, f_getwinposx}, - {"getwinposy", 0, 0, f_getwinposy}, - {"getwinvar", 2, 2, f_getwinvar}, -! {"glob", 1, 3, f_glob}, - {"globpath", 2, 3, f_globpath}, - {"has", 1, 1, f_has}, - {"has_key", 2, 2, f_has_key}, -*************** -*** 10019,10032 **** - int options = WILD_SILENT|WILD_USE_NL|WILD_LIST_NOTFOUND; - expand_T xpc; - int error = FALSE; - - rettv->v_type = VAR_STRING; - s = get_tv_string(&argvars[0]); - if (*s == '%' || *s == '#' || *s == '<') - { - ++emsg_off; -! rettv->vval.v_string = eval_vars(s, s, &len, NULL, &errormsg, NULL); - --emsg_off; - } - else - { ---- 10019,10051 ---- - int options = WILD_SILENT|WILD_USE_NL|WILD_LIST_NOTFOUND; - expand_T xpc; - int error = FALSE; -+ char_u *result; - - rettv->v_type = VAR_STRING; -+ if (argvars[1].v_type != VAR_UNKNOWN -+ && argvars[2].v_type != VAR_UNKNOWN -+ && get_tv_number_chk(&argvars[2], &error) -+ && !error) -+ { -+ rettv->v_type = VAR_LIST; -+ rettv->vval.v_list = NULL; -+ } -+ - s = get_tv_string(&argvars[0]); - if (*s == '%' || *s == '#' || *s == '<') - { - ++emsg_off; -! result = eval_vars(s, s, &len, NULL, &errormsg, NULL); - --emsg_off; -+ if (rettv->v_type == VAR_LIST) -+ { -+ if (rettv_list_alloc(rettv) != FAIL && result != NULL) -+ list_append_string(rettv->vval.v_list, result, -1); -+ else -+ vim_free(result); -+ } -+ else -+ rettv->vval.v_string = result; - } - else - { -*************** -*** 10041,10047 **** - xpc.xp_context = EXPAND_FILES; - if (p_wic) - options += WILD_ICASE; -! rettv->vval.v_string = ExpandOne(&xpc, s, NULL, options, WILD_ALL); - } - else - rettv->vval.v_string = NULL; ---- 10060,10077 ---- - xpc.xp_context = EXPAND_FILES; - if (p_wic) - options += WILD_ICASE; -! if (rettv->v_type == VAR_STRING) -! rettv->vval.v_string = ExpandOne(&xpc, s, NULL, -! options, WILD_ALL); -! else if (rettv_list_alloc(rettv) != FAIL) -! { -! int i; -! -! ExpandOne(&xpc, s, NULL, options, WILD_ALL_KEEP); -! for (i = 0; i < xpc.xp_numfiles; i++) -! list_append_string(rettv->vval.v_list, xpc.xp_files[i], -1); -! ExpandCleanup(&xpc); -! } - } - else - rettv->vval.v_string = NULL; -*************** -*** 11833,11851 **** - int error = FALSE; - - /* When the optional second argument is non-zero, don't remove matches -! * for 'wildignore' and don't put matches for 'suffixes' at the end. */ -! if (argvars[1].v_type != VAR_UNKNOWN -! && get_tv_number_chk(&argvars[1], &error)) -! options |= WILD_KEEP_ALL; - rettv->v_type = VAR_STRING; - if (!error) - { - ExpandInit(&xpc); - xpc.xp_context = EXPAND_FILES; - if (p_wic) - options += WILD_ICASE; -! rettv->vval.v_string = ExpandOne(&xpc, get_tv_string(&argvars[0]), - NULL, options, WILD_ALL); - } - else - rettv->vval.v_string = NULL; ---- 11863,11901 ---- - int error = FALSE; - - /* When the optional second argument is non-zero, don't remove matches -! * for 'wildignore' and don't put matches for 'suffixes' at the end. */ - rettv->v_type = VAR_STRING; -+ if (argvars[1].v_type != VAR_UNKNOWN) -+ { -+ if (get_tv_number_chk(&argvars[1], &error)) -+ options |= WILD_KEEP_ALL; -+ if (argvars[2].v_type != VAR_UNKNOWN -+ && get_tv_number_chk(&argvars[2], &error)) -+ { -+ rettv->v_type = VAR_LIST; -+ rettv->vval.v_list = NULL; -+ } -+ } - if (!error) - { - ExpandInit(&xpc); - xpc.xp_context = EXPAND_FILES; - if (p_wic) - options += WILD_ICASE; -! if (rettv->v_type == VAR_STRING) -! rettv->vval.v_string = ExpandOne(&xpc, get_tv_string(&argvars[0]), - NULL, options, WILD_ALL); -+ else if (rettv_list_alloc(rettv) != FAIL) -+ { -+ int i; -+ -+ ExpandOne(&xpc, get_tv_string(&argvars[0]), -+ NULL, options, WILD_ALL_KEEP); -+ for (i = 0; i < xpc.xp_numfiles; i++) -+ list_append_string(rettv->vval.v_list, xpc.xp_files[i], -1); -+ -+ ExpandCleanup(&xpc); -+ } - } - else - rettv->vval.v_string = NULL; -*** ../vim-7.3.464/src/ex_getln.c 2012-02-22 17:58:00.000000000 +0100 ---- src/ex_getln.c 2012-03-07 19:07:01.000000000 +0100 -*************** -*** 3461,3466 **** ---- 3461,3467 ---- - * mode = WILD_PREV: use previous match in multiple match, wrap to first - * mode = WILD_ALL: return all matches concatenated - * mode = WILD_LONGEST: return longest matched part -+ * mode = WILD_ALL_KEEP: get all matches, keep matches - * - * options = WILD_LIST_NOTFOUND: list entries without a match - * options = WILD_HOME_REPLACE: do home_replace() for buffer names -*************** -*** 3584,3590 **** - /* - * Check for matching suffixes in file names. - */ -! if (mode != WILD_ALL && mode != WILD_LONGEST) - { - if (xp->xp_numfiles) - non_suf_match = xp->xp_numfiles; ---- 3585,3592 ---- - /* - * Check for matching suffixes in file names. - */ -! if (mode != WILD_ALL && mode != WILD_ALL_KEEP -! && mode != WILD_LONGEST) - { - if (xp->xp_numfiles) - non_suf_match = xp->xp_numfiles; -*** ../vim-7.3.464/src/vim.h 2011-07-27 17:31:42.000000000 +0200 ---- src/vim.h 2012-03-07 19:03:43.000000000 +0100 -*************** -*** 794,799 **** ---- 794,800 ---- - #define WILD_PREV 5 - #define WILD_ALL 6 - #define WILD_LONGEST 7 -+ #define WILD_ALL_KEEP 8 - - #define WILD_LIST_NOTFOUND 1 - #define WILD_HOME_REPLACE 2 -*** ../vim-7.3.464/src/version.c 2012-03-07 18:04:00.000000000 +0100 ---- src/version.c 2012-03-07 19:14:39.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 465, - /**/ - --- -Although the scythe isn't pre-eminent among the weapons of war, anyone who -has been on the wrong end of, say, a peasants' revolt will know that in -skilled hands it is fearsome. - -- (Terry Pratchett, Mort) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.466 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.466 -Problem: Get ml_get error when ":behave mswin" was used and selecting - several lines. (A. Sinan Unur) -Solution: Adjust the end of the operation. (Christian Brabandt) -Files: src/ops.c - - -*** ../vim-7.3.465/src/ops.c 2012-02-22 17:37:55.000000000 +0100 ---- src/ops.c 2012-03-07 19:27:08.000000000 +0100 -*************** -*** 1957,1962 **** ---- 1957,1965 ---- - ++curwin->w_cursor.lnum; - del_lines((long)(oap->line_count - 2), FALSE); - -+ if (delete_last_line) -+ oap->end.lnum = curbuf->b_ml.ml_line_count; -+ - n = (oap->end.col + 1 - !oap->inclusive); - if (oap->inclusive && delete_last_line - && n > (int)STRLEN(ml_get(oap->end.lnum))) -*** ../vim-7.3.465/src/version.c 2012-03-07 19:16:49.000000000 +0100 ---- src/version.c 2012-03-07 19:29:52.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 466, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -153. You find yourself staring at your "inbox" waiting for new e-mail - to arrive. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.467 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.467 -Problem: Cursor positioned wrong at the command line when regaining focus - and using some input method. -Solution: Do not position the cursor in command line mode. -Files: src/mbyte.c - - -*** ../vim-7.3.466/src/mbyte.c 2011-12-08 15:09:46.000000000 +0100 ---- src/mbyte.c 2012-03-07 19:36:44.000000000 +0100 -*************** -*** 4504,4510 **** - vgetc_busy = TRUE; - showmode(); - vgetc_busy = old_vgetc_busy; -! setcursor(); - out_flush(); - } - ---- 4504,4511 ---- - vgetc_busy = TRUE; - showmode(); - vgetc_busy = old_vgetc_busy; -! if ((State & NORMAL) || (State & INSERT)) -! setcursor(); - out_flush(); - } - -*** ../vim-7.3.466/src/version.c 2012-03-07 19:30:32.000000000 +0100 ---- src/version.c 2012-03-07 19:38:22.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 467, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -154. You fondle your mouse. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.468 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.468 -Problem: For some compilers the error file is not easily readable. -Solution: Use QuickFixCmdPre for more commands. (Marcin Szamotulski) -Files: runtime/doc/autocmd.txt, src/quickfix.c - - -*** ../vim-7.3.467/runtime/doc/autocmd.txt 2012-02-12 20:13:55.000000000 +0100 ---- runtime/doc/autocmd.txt 2012-03-07 20:07:23.000000000 +0100 -*************** -*** 695,701 **** - QuickFixCmdPre Before a quickfix command is run (|:make|, - |:lmake|, |:grep|, |:lgrep|, |:grepadd|, - |:lgrepadd|, |:vimgrep|, |:lvimgrep|, -! |:vimgrepadd|, |:lvimgrepadd|, |:cscope|). - The pattern is matched against the command - being run. When |:grep| is used but 'grepprg' - is set to "internal" it still matches "grep". ---- 699,708 ---- - QuickFixCmdPre Before a quickfix command is run (|:make|, - |:lmake|, |:grep|, |:lgrep|, |:grepadd|, - |:lgrepadd|, |:vimgrep|, |:lvimgrep|, -! |:vimgrepadd|, |:lvimgrepadd|, |:cscope|, -! |:cfile|, |:cgetfile|, |:caddfile|, |:lfile|, -! |:lgetfile|, |:laddfile|, |:helpgrep|, -! |:lhelpgrep|). - The pattern is matched against the command - being run. When |:grep| is used but 'grepprg' - is set to "internal" it still matches "grep". -*************** -*** 706,712 **** - *QuickFixCmdPost* - QuickFixCmdPost Like QuickFixCmdPre, but after a quickfix - command is run, before jumping to the first -! location. See |QuickFixCmdPost-example|. - *RemoteReply* - RemoteReply When a reply from a Vim that functions as - server was received |server2client()|. The ---- 713,722 ---- - *QuickFixCmdPost* - QuickFixCmdPost Like QuickFixCmdPre, but after a quickfix - command is run, before jumping to the first -! location. For |:cfile| and |:lfile| commands -! it is run after error file is read and before -! moving to the first error. -! See |QuickFixCmdPost-example|. - *RemoteReply* - RemoteReply When a reply from a Vim that functions as - server was received |server2client()|. The -*** ../vim-7.3.467/src/quickfix.c 2012-02-22 14:58:24.000000000 +0100 ---- src/quickfix.c 2012-03-07 20:10:07.000000000 +0100 -*************** -*** 2995,3005 **** - { - win_T *wp = NULL; - qf_info_T *qi = &ql_info; - - if (eap->cmdidx == CMD_lfile || eap->cmdidx == CMD_lgetfile -! || eap->cmdidx == CMD_laddfile) - wp = curwin; - - #ifdef FEAT_BROWSE - if (cmdmod.browse) - { ---- 2995,3022 ---- - { - win_T *wp = NULL; - qf_info_T *qi = &ql_info; -+ #ifdef FEAT_AUTOCMD -+ char_u *au_name = NULL; -+ #endif - - if (eap->cmdidx == CMD_lfile || eap->cmdidx == CMD_lgetfile -! || eap->cmdidx == CMD_laddfile) - wp = curwin; - -+ #ifdef FEAT_AUTOCMD -+ switch (eap->cmdidx) -+ { -+ case CMD_cfile: au_name = (char_u *)"cfile"; break; -+ case CMD_cgetfile: au_name = (char_u *)"cgetfile"; break; -+ case CMD_caddfile: au_name = (char_u *)"caddfile"; break; -+ case CMD_lfile: au_name = (char_u *)"lfile"; break; -+ case CMD_lgetfile: au_name = (char_u *)"lgetfile"; break; -+ case CMD_laddfile: au_name = (char_u *)"laddfile"; break; -+ default: break; -+ } -+ if (au_name != NULL) -+ apply_autocmds(EVENT_QUICKFIXCMDPRE, au_name, NULL, FALSE, curbuf); -+ #endif - #ifdef FEAT_BROWSE - if (cmdmod.browse) - { -*************** -*** 3031,3040 **** ---- 3048,3069 ---- - && (eap->cmdidx == CMD_cfile - || eap->cmdidx == CMD_lfile)) - { -+ #ifdef FEAT_AUTOCMD -+ if (au_name != NULL) -+ apply_autocmds(EVENT_QUICKFIXCMDPOST, au_name, NULL, FALSE, curbuf); -+ #endif - if (wp != NULL) - qi = GET_LOC_LIST(wp); - qf_jump(qi, 0, 0, eap->forceit); /* display first error */ - } -+ -+ else -+ { -+ #ifdef FEAT_AUTOCMD -+ if (au_name != NULL) -+ apply_autocmds(EVENT_QUICKFIXCMDPOST, au_name, NULL, FALSE, curbuf); -+ #endif -+ } - } - - /* -*** ../vim-7.3.467/src/version.c 2012-03-07 19:38:52.000000000 +0100 ---- src/version.c 2012-03-07 20:11:54.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 468, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -155. You forget to eat because you're too busy surfing the net. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.469 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.469 -Problem: Compiler warning for unused argument without some features. -Solution: Add UNUSED. -Files: src/buffer.c - - -*** ../vim-7.3.468/src/buffer.c 2012-02-22 19:13:00.000000000 +0100 ---- src/buffer.c 2012-03-07 22:30:56.000000000 +0100 -*************** -*** 329,335 **** - win_T *win; /* if not NULL, set b_last_cursor */ - buf_T *buf; - int action; -! int abort_if_last; - { - #ifdef FEAT_AUTOCMD - int is_curbuf; ---- 329,335 ---- - win_T *win; /* if not NULL, set b_last_cursor */ - buf_T *buf; - int action; -! int abort_if_last UNUSED; - { - #ifdef FEAT_AUTOCMD - int is_curbuf; -*** ../vim-7.3.468/src/version.c 2012-03-07 20:13:44.000000000 +0100 ---- src/version.c 2012-03-07 22:51:54.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 469, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -157. You fum through a magazine, you first check to see if it has a web - address. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.470 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.470 -Problem: Test 62 fails when compiled without GUI and X11. -Solution: Don't test :drop when it is not supported. -Files: src/testdir/test62.in - - -*** ../vim-7.3.469/src/testdir/test62.in 2012-02-22 19:13:00.000000000 +0100 ---- src/testdir/test62.in 2012-03-07 22:46:17.000000000 +0100 -*************** -*** 49,55 **** - :tabclose - :call append(line('$'), test_status) - :" -! :" - :" Test for ":tab drop exist-file" to keep current window. - :sp test1 - :tab drop test1 ---- 49,55 ---- - :tabclose - :call append(line('$'), test_status) - :" -! :if has('gui') || has('clientserver') - :" Test for ":tab drop exist-file" to keep current window. - :sp test1 - :tab drop test1 -*************** -*** 85,90 **** ---- 85,96 ---- - :tabclose - :q - :call append(line('$'), test_status) -+ :else -+ :" :drop not supported -+ :call append(line('$'), 'tab drop 1: pass') -+ :call append(line('$'), 'tab drop 2: pass') -+ :call append(line('$'), 'tab drop 3: pass') -+ :endif - :" - :" - :/^Results/,$w! test.out -*** ../vim-7.3.469/src/version.c 2012-03-07 22:52:30.000000000 +0100 ---- src/version.c 2012-03-07 22:53:40.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 470, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -158. You get a tuner card so you can watch TV while surfing. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.471 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.471 -Problem: Can't abort listing placed signs. -Solution: Check "got_int". (Christian Brabandt) -Files: src/buffer.c, src/ex_cmds.c - - -*** ../vim-7.3.470/src/buffer.c 2012-03-07 22:52:30.000000000 +0100 ---- src/buffer.c 2012-03-16 13:54:48.000000000 +0100 -*************** -*** 5557,5563 **** - buf = firstbuf; - else - buf = rbuf; -! while (buf != NULL) - { - if (buf->b_signlist != NULL) - { ---- 5557,5563 ---- - buf = firstbuf; - else - buf = rbuf; -! while (buf != NULL && !got_int) - { - if (buf->b_signlist != NULL) - { -*************** -*** 5565,5571 **** - MSG_PUTS_ATTR(lbuf, hl_attr(HLF_D)); - msg_putchar('\n'); - } -! for (p = buf->b_signlist; p != NULL; p = p->next) - { - vim_snprintf(lbuf, BUFSIZ, _(" line=%ld id=%d name=%s"), - (long)p->lnum, p->id, sign_typenr2name(p->typenr)); ---- 5565,5571 ---- - MSG_PUTS_ATTR(lbuf, hl_attr(HLF_D)); - msg_putchar('\n'); - } -! for (p = buf->b_signlist; p != NULL && !got_int; p = p->next) - { - vim_snprintf(lbuf, BUFSIZ, _(" line=%ld id=%d name=%s"), - (long)p->lnum, p->id, sign_typenr2name(p->typenr)); -*** ../vim-7.3.470/src/ex_cmds.c 2012-03-07 14:57:50.000000000 +0100 ---- src/ex_cmds.c 2012-03-16 13:58:50.000000000 +0100 -*************** -*** 6729,6735 **** - if (idx == SIGNCMD_LIST && *arg == NUL) - { - /* ":sign list": list all defined signs */ -! for (sp = first_sign; sp != NULL; sp = sp->sn_next) - sign_list_defined(sp); - } - else if (*arg == NUL) ---- 6729,6735 ---- - if (idx == SIGNCMD_LIST && *arg == NUL) - { - /* ":sign list": list all defined signs */ -! for (sp = first_sign; sp != NULL && !got_int; sp = sp->sn_next) - sign_list_defined(sp); - } - else if (*arg == NUL) -*** ../vim-7.3.470/src/version.c 2012-03-07 22:55:17.000000000 +0100 ---- src/version.c 2012-03-16 13:55:28.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 471, - /**/ - --- -Some of the well know MS-Windows errors: - EMEMORY Memory error caused by..., eh... - ELICENSE Your license has expired, give us more money! - EMOUSE Mouse moved, reinstall Windows - EILLEGAL Illegal error, you are not allowed to see this - EVIRUS Undetectable virus found - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.472 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.472 -Problem: Crash when using ":redraw" in a BufEnter autocommand and - switching to another tab. (驼峰) -Solution: Move triggering the the autocommands to after correcting the - option values. Also check the row value to be out of bounds. - (Christian Brabandt, Sergey Khorev) -Files: src/screen.c, src/window.c - - -*** ../vim-7.3.471/src/screen.c 2012-02-04 23:34:57.000000000 +0100 ---- src/screen.c 2012-03-16 18:59:20.000000000 +0100 -*************** -*** 5371,5376 **** ---- 5371,5382 ---- - # define CHAR_CELLS 1 - #endif - -+ /* Check for illegal row and col, just in case. */ -+ if (row >= Rows) -+ row = Rows - 1; -+ if (endcol > Columns) -+ endcol = Columns; -+ - # ifdef FEAT_CLIPBOARD - clip_may_clear_selection(row, row); - # endif -*** ../vim-7.3.471/src/window.c 2012-02-22 14:58:24.000000000 +0100 ---- src/window.c 2012-03-16 18:43:01.000000000 +0100 -*************** -*** 3676,3688 **** - win_enter_ext(tp->tp_curwin, FALSE, TRUE); - prevwin = next_prevwin; - -- #ifdef FEAT_AUTOCMD -- apply_autocmds(EVENT_TABENTER, NULL, NULL, FALSE, curbuf); -- -- if (old_curbuf != curbuf) -- apply_autocmds(EVENT_BUFENTER, NULL, NULL, FALSE, curbuf); -- #endif -- - last_status(FALSE); /* status line may appear or disappear */ - (void)win_comp_pos(); /* recompute w_winrow for all windows */ - must_redraw = CLEAR; /* need to redraw everything */ ---- 3676,3681 ---- -*************** -*** 3712,3717 **** ---- 3705,3718 ---- - gui_may_update_scrollbars(); - #endif - -+ #ifdef FEAT_AUTOCMD -+ /* Apply autocommands after updating the display, when 'rows' and -+ * 'columns' have been set correctly. */ -+ apply_autocmds(EVENT_TABENTER, NULL, NULL, FALSE, curbuf); -+ if (old_curbuf != curbuf) -+ apply_autocmds(EVENT_BUFENTER, NULL, NULL, FALSE, curbuf); -+ #endif -+ - redraw_all_later(CLEAR); - } - -*** ../vim-7.3.471/src/version.c 2012-03-16 14:32:10.000000000 +0100 ---- src/version.c 2012-03-16 19:02:53.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 472, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -200. You really believe in the concept of a "paperless" office. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.473 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.473 -Problem: 'cursorbind' does not work correctly in combination with - 'virtualedit' set to "all". -Solution: Copy coladd. (Gary Johnson) -Files: src/move.c - - -*** ../vim-7.3.472/src/move.c 2012-02-04 23:34:57.000000000 +0100 ---- src/move.c 2012-03-16 19:20:57.000000000 +0100 -*************** -*** 2843,2849 **** - do_check_cursorbind() - { - linenr_T line = curwin->w_cursor.lnum; -! colnr_T col = curwin->w_cursor.col; - win_T *old_curwin = curwin; - buf_T *old_curbuf = curbuf; - int restart_edit_save; ---- 2843,2852 ---- - do_check_cursorbind() - { - linenr_T line = curwin->w_cursor.lnum; -! colnr_T col = curwin->w_cursor.col; -! # ifdef FEAT_VIRTUALEDIT -! colnr_T coladd = curwin->w_cursor.coladd; -! # endif - win_T *old_curwin = curwin; - buf_T *old_curbuf = curbuf; - int restart_edit_save; -*************** -*** 2875,2880 **** ---- 2878,2886 ---- - # endif - curwin->w_cursor.lnum = line; - curwin->w_cursor.col = col; -+ # ifdef FEAT_VIRTUALEDIT -+ curwin->w_cursor.coladd = coladd; -+ # endif - - /* Make sure the cursor is in a valid position. Temporarily set - * "restart_edit" to allow the cursor to be beyond the EOL. */ -*** ../vim-7.3.472/src/version.c 2012-03-16 19:07:54.000000000 +0100 ---- src/version.c 2012-03-16 19:24:06.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 473, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -201. When somebody asks you where you are, you tell them in which chat room. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.474 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.474 -Problem: Perl build with gcc 4 fails. -Solution: Remove XS() statements. (Yasuhiro Matsumoto) -Files: src/if_perl.xs - - -*** ../vim-7.3.473/src/if_perl.xs 2012-02-12 00:31:47.000000000 +0100 ---- src/if_perl.xs 2012-03-16 19:33:23.000000000 +0100 -*************** -*** 913,936 **** - win_T *win_find_nr(int n) { return curwin; } - #endif - -- XS(XS_VIM_Msg); -- XS(XS_VIM_SetOption); -- XS(XS_VIM_DoCommand); -- XS(XS_VIM_Eval); -- XS(XS_VIM_Buffers); -- XS(XS_VIM_Windows); -- XS(XS_VIWIN_DESTROY); -- XS(XS_VIWIN_Buffer); -- XS(XS_VIWIN_SetHeight); -- XS(XS_VIWIN_Cursor); -- XS(XS_VIBUF_DESTROY); -- XS(XS_VIBUF_Name); -- XS(XS_VIBUF_Number); -- XS(XS_VIBUF_Count); -- XS(XS_VIBUF_Get); -- XS(XS_VIBUF_Set); -- XS(XS_VIBUF_Delete); -- XS(XS_VIBUF_Append); - XS(boot_VIM); - - static void ---- 913,918 ---- -*** ../vim-7.3.473/src/version.c 2012-03-16 19:24:21.000000000 +0100 ---- src/version.c 2012-03-16 19:28:03.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 474, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -202. You're amazed to find out Spam is a food. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.475 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.475 -Problem: In a terminal with few colors the omnicomplete menu may be hard to - see when using the default colors. -Solution: Use more explicit colors. (suggested by Alex Henrie) -Files: src/syntax.c - - -*** ../vim-7.3.474/src/syntax.c 2012-01-10 22:26:12.000000000 +0100 ---- src/syntax.c 2012-03-16 20:14:22.000000000 +0100 -*************** -*** 6516,6523 **** - "DiffText term=reverse cterm=bold ctermbg=Red gui=bold guibg=Red"), - #endif - #ifdef FEAT_INS_EXPAND -- CENT("PmenuThumb cterm=reverse", -- "PmenuThumb cterm=reverse gui=reverse"), - CENT("PmenuSbar ctermbg=Grey", - "PmenuSbar ctermbg=Grey guibg=Grey"), - #endif ---- 6516,6521 ---- -*************** -*** 6557,6566 **** - "SpellLocal term=underline ctermbg=Cyan guisp=DarkCyan gui=undercurl"), - #endif - #ifdef FEAT_INS_EXPAND -! CENT("Pmenu ctermbg=LightMagenta", -! "Pmenu ctermbg=LightMagenta guibg=LightMagenta"), -! CENT("PmenuSel ctermbg=LightGrey", -! "PmenuSel ctermbg=LightGrey guibg=Grey"), - #endif - CENT("SpecialKey term=bold ctermfg=DarkBlue", - "SpecialKey term=bold ctermfg=DarkBlue guifg=Blue"), ---- 6555,6566 ---- - "SpellLocal term=underline ctermbg=Cyan guisp=DarkCyan gui=undercurl"), - #endif - #ifdef FEAT_INS_EXPAND -! CENT("PmenuThumb ctermbg=Black", -! "PmenuThumb ctermbg=Black guibg=Black"), -! CENT("Pmenu ctermbg=LightMagenta ctermfg=Black", -! "Pmenu ctermbg=LightMagenta ctermfg=Black guibg=LightMagenta"), -! CENT("PmenuSel ctermbg=LightGrey ctermfg=Black", -! "PmenuSel ctermbg=LightGrey ctermfg=Black guibg=Grey"), - #endif - CENT("SpecialKey term=bold ctermfg=DarkBlue", - "SpecialKey term=bold ctermfg=DarkBlue guifg=Blue"), -*************** -*** 6645,6654 **** - "SpellLocal term=underline ctermbg=Cyan guisp=Cyan gui=undercurl"), - #endif - #ifdef FEAT_INS_EXPAND -! CENT("Pmenu ctermbg=Magenta", -! "Pmenu ctermbg=Magenta guibg=Magenta"), -! CENT("PmenuSel ctermbg=DarkGrey", -! "PmenuSel ctermbg=DarkGrey guibg=DarkGrey"), - #endif - CENT("Title term=bold ctermfg=LightMagenta", - "Title term=bold ctermfg=LightMagenta gui=bold guifg=Magenta"), ---- 6645,6656 ---- - "SpellLocal term=underline ctermbg=Cyan guisp=Cyan gui=undercurl"), - #endif - #ifdef FEAT_INS_EXPAND -! CENT("PmenuThumb ctermbg=White", -! "PmenuThumb ctermbg=White guibg=White"), -! CENT("Pmenu ctermbg=Magenta ctermfg=Black", -! "Pmenu ctermbg=Magenta ctermfg=Black guibg=Magenta"), -! CENT("PmenuSel ctermbg=DarkGrey ctermfg=Black", -! "PmenuSel ctermbg=DarkGrey ctermfg=Black guibg=DarkGrey"), - #endif - CENT("Title term=bold ctermfg=LightMagenta", - "Title term=bold ctermfg=LightMagenta gui=bold guifg=Magenta"), -*** ../vim-7.3.474/src/version.c 2012-03-16 19:34:43.000000000 +0100 ---- src/version.c 2012-03-16 20:05:35.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 475, - /**/ - --- -Spam seems to be something useful to novices. Later you realize that -it's a bunch of indigestable junk that only clogs your system. -Applies to both the food and the e-mail! - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.476 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.476 -Problem: When selecting a block, using "$" to include the end of each line - and using "A" and typing a backspace strange things happen. - (Yuangchen Xie) -Solution: Avoid using a negative length. (Christian Brabandt) -Files: src/ops.c - - -*** ../vim-7.3.475/src/ops.c 2012-03-07 19:30:32.000000000 +0100 ---- src/ops.c 2012-03-23 12:22:36.000000000 +0100 -*************** -*** 2602,2608 **** - firstline = ml_get(oap->start.lnum) + bd.textcol; - if (oap->op_type == OP_APPEND) - firstline += bd.textlen; -! if ((ins_len = (long)STRLEN(firstline) - pre_textlen) > 0) - { - ins_text = vim_strnsave(firstline, (int)ins_len); - if (ins_text != NULL) ---- 2602,2609 ---- - firstline = ml_get(oap->start.lnum) + bd.textcol; - if (oap->op_type == OP_APPEND) - firstline += bd.textlen; -! if (pre_textlen >= 0 -! && (ins_len = (long)STRLEN(firstline) - pre_textlen) > 0) - { - ins_text = vim_strnsave(firstline, (int)ins_len); - if (ins_text != NULL) -*** ../vim-7.3.475/src/version.c 2012-03-16 20:16:42.000000000 +0100 ---- src/version.c 2012-03-23 14:14:49.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 476, - /**/ - --- -"Marriage is a wonderful institution... -but who wants to live in an institution?" - - Groucho Marx - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.477 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.477 -Problem: Using ":echo" to output enough lines to scroll, then using "j" and - "k" at the more prompt, displays the command on top of the output. - (Marcin Szamotulski) -Solution: Put the output below the command. (Christian Brabandt) -Files: src/eval.c - - -*** ../vim-7.3.476/src/eval.c 2012-03-07 19:16:49.000000000 +0100 ---- src/eval.c 2012-03-23 15:11:30.000000000 +0100 -*************** -*** 20492,20498 **** ---- 20492,20503 ---- - /* Call msg_start() after eval1(), evaluating the expression - * may cause a message to appear. */ - if (eap->cmdidx == CMD_echo) -+ { -+ /* Put the output below the command, makes scrolling back -+ * at more prompt work. */ -+ msg_didout = TRUE; - msg_start(); -+ } - } - else if (eap->cmdidx == CMD_echo) - msg_puts_attr((char_u *)" ", echo_attr); -*** ../vim-7.3.476/src/version.c 2012-03-23 14:16:19.000000000 +0100 ---- src/version.c 2012-03-23 15:13:58.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 477, - /**/ - --- -"Marriage is when a man and woman become as one; the trouble starts -when they try to decide which one" - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.478 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.478 -Problem: Memory leak using the ':rv!' command when reading dictionary or - list global variables i.e. with 'viminfo' containing !. -Solution: Free the typeval. (Dominique Pelle) -Files: src/eval.c - - -*** ../vim-7.3.477/src/eval.c 2012-03-23 15:18:20.000000000 +0100 ---- src/eval.c 2012-03-23 15:28:42.000000000 +0100 -*************** -*** 22976,22981 **** ---- 22976,22982 ---- - { - vim_free(tv.vval.v_string); - tv = *etv; -+ vim_free(etv); - } - } - -*** ../vim-7.3.477/src/version.c 2012-03-23 15:18:20.000000000 +0100 ---- src/version.c 2012-03-23 15:29:22.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 478, - /**/ - --- -"Marriage is the process of finding out what kind of man your wife -would have preferred" - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.479 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.479 -Problem: When 'cursorline' is set the line number highlighting can't be set - separately. -Solution: Add "CursorLineNr". (Howard Buchholz) -Files: src/option.c, src/screen.c, src/syntax.c, src/vim.h - - -*** ../vim-7.3.478/src/option.c 2012-02-29 13:51:32.000000000 +0100 ---- src/option.c 2012-03-23 15:44:57.000000000 +0100 -*************** -*** 460,468 **** - #if defined(FEAT_DIFF) || defined(FEAT_FOLDING) || defined(FEAT_SPELL) \ - || defined(FEAT_VERTSPLIT) || defined(FEAT_CLIPBOARD) \ - || defined(FEAT_INS_EXPAND) || defined(FEAT_SYN_HL) || defined(FEAT_CONCEAL) -! # define HIGHLIGHT_INIT "8:SpecialKey,@:NonText,d:Directory,e:ErrorMsg,i:IncSearch,l:Search,m:MoreMsg,M:ModeMsg,n:LineNr,r:Question,s:StatusLine,S:StatusLineNC,c:VertSplit,t:Title,v:Visual,V:VisualNOS,w:WarningMsg,W:WildMenu,f:Folded,F:FoldColumn,A:DiffAdd,C:DiffChange,D:DiffDelete,T:DiffText,>:SignColumn,-:Conceal,B:SpellBad,P:SpellCap,R:SpellRare,L:SpellLocal,+:Pmenu,=:PmenuSel,x:PmenuSbar,X:PmenuThumb,*:TabLine,#:TabLineSel,_:TabLineFill,!:CursorColumn,.:CursorLine,o:ColorColumn" - #else -! # define HIGHLIGHT_INIT "8:SpecialKey,@:NonText,d:Directory,e:ErrorMsg,i:IncSearch,l:Search,m:MoreMsg,M:ModeMsg,n:LineNr,r:Question,s:StatusLine,S:StatusLineNC,t:Title,v:Visual,w:WarningMsg,W:WildMenu,>:SignColumn,*:TabLine,#:TabLineSel,_:TabLineFill" - #endif - - /* ---- 460,468 ---- - #if defined(FEAT_DIFF) || defined(FEAT_FOLDING) || defined(FEAT_SPELL) \ - || defined(FEAT_VERTSPLIT) || defined(FEAT_CLIPBOARD) \ - || defined(FEAT_INS_EXPAND) || defined(FEAT_SYN_HL) || defined(FEAT_CONCEAL) -! # define HIGHLIGHT_INIT "8:SpecialKey,@:NonText,d:Directory,e:ErrorMsg,i:IncSearch,l:Search,m:MoreMsg,M:ModeMsg,n:LineNr,N:CursorLineNr,r:Question,s:StatusLine,S:StatusLineNC,c:VertSplit,t:Title,v:Visual,V:VisualNOS,w:WarningMsg,W:WildMenu,f:Folded,F:FoldColumn,A:DiffAdd,C:DiffChange,D:DiffDelete,T:DiffText,>:SignColumn,-:Conceal,B:SpellBad,P:SpellCap,R:SpellRare,L:SpellLocal,+:Pmenu,=:PmenuSel,x:PmenuSbar,X:PmenuThumb,*:TabLine,#:TabLineSel,_:TabLineFill,!:CursorColumn,.:CursorLine,o:ColorColumn" - #else -! # define HIGHLIGHT_INIT "8:SpecialKey,@:NonText,d:Directory,e:ErrorMsg,i:IncSearch,l:Search,m:MoreMsg,M:ModeMsg,n:LineNr,N:CursorLineNr,r:Question,s:StatusLine,S:StatusLineNC,t:Title,v:Visual,w:WarningMsg,W:WildMenu,>:SignColumn,*:TabLine,#:TabLineSel,_:TabLineFill" - #endif - - /* -*** ../vim-7.3.478/src/screen.c 2012-03-16 19:07:54.000000000 +0100 ---- src/screen.c 2012-03-23 16:09:15.000000000 +0100 -*************** -*** 3501,3509 **** - char_attr = hl_attr(HLF_N); - #ifdef FEAT_SYN_HL - /* When 'cursorline' is set highlight the line number of -! * the current line differently. */ - if (wp->w_p_cul && lnum == wp->w_cursor.lnum) -! char_attr = hl_combine_attr(hl_attr(HLF_CUL), char_attr); - #endif - } - } ---- 3501,3511 ---- - char_attr = hl_attr(HLF_N); - #ifdef FEAT_SYN_HL - /* When 'cursorline' is set highlight the line number of -! * the current line differently. -! * TODO: Can we use CursorLine instead of CursorLineNr -! * when CursorLineNr isn't set? */ - if (wp->w_p_cul && lnum == wp->w_cursor.lnum) -! char_attr = hl_attr(HLF_CLN); - #endif - } - } -*** ../vim-7.3.478/src/syntax.c 2012-03-16 20:16:42.000000000 +0100 ---- src/syntax.c 2012-03-23 16:23:57.000000000 +0100 -*************** -*** 6538,6543 **** ---- 6538,6545 ---- - "Directory term=bold ctermfg=DarkBlue guifg=Blue"), - CENT("LineNr term=underline ctermfg=Brown", - "LineNr term=underline ctermfg=Brown guifg=Brown"), -+ CENT("CursorLineNr term=bold ctermfg=Brown", -+ "CursorLineNr term=bold ctermfg=Brown gui=bold guifg=Brown"), - CENT("MoreMsg term=bold ctermfg=DarkGreen", - "MoreMsg term=bold ctermfg=DarkGreen gui=bold guifg=SeaGreen"), - CENT("Question term=standout ctermfg=DarkGreen", -*************** -*** 6626,6631 **** ---- 6628,6635 ---- - "Directory term=bold ctermfg=LightCyan guifg=Cyan"), - CENT("LineNr term=underline ctermfg=Yellow", - "LineNr term=underline ctermfg=Yellow guifg=Yellow"), -+ CENT("CursorLineNr term=bold ctermfg=Yellow", -+ "CursorLineNr term=bold ctermfg=Yellow gui=bold guifg=Yellow"), - CENT("MoreMsg term=bold ctermfg=LightGreen", - "MoreMsg term=bold ctermfg=LightGreen gui=bold guifg=SeaGreen"), - CENT("Question term=standout ctermfg=LightGreen", -*** ../vim-7.3.478/src/vim.h 2012-03-07 19:16:49.000000000 +0100 ---- src/vim.h 2012-03-23 15:44:57.000000000 +0100 -*************** -*** 1318,1323 **** ---- 1318,1324 ---- - , HLF_M /* "--More--" message */ - , HLF_CM /* Mode (e.g., "-- INSERT --") */ - , HLF_N /* line number for ":number" and ":#" commands */ -+ , HLF_CLN /* current line number */ - , HLF_R /* return to continue message and yes/no questions */ - , HLF_S /* status lines */ - , HLF_SNC /* status lines of not-current windows */ -*************** -*** 1355,1361 **** - /* The HL_FLAGS must be in the same order as the HLF_ enums! - * When changing this also adjust the default for 'highlight'. */ - #define HL_FLAGS {'8', '@', 'd', 'e', 'h', 'i', 'l', 'm', 'M', \ -! 'n', 'r', 's', 'S', 'c', 't', 'v', 'V', 'w', 'W', \ - 'f', 'F', 'A', 'C', 'D', 'T', '-', '>', \ - 'B', 'P', 'R', 'L', \ - '+', '=', 'x', 'X', '*', '#', '_', '!', '.', 'o'} ---- 1356,1362 ---- - /* The HL_FLAGS must be in the same order as the HLF_ enums! - * When changing this also adjust the default for 'highlight'. */ - #define HL_FLAGS {'8', '@', 'd', 'e', 'h', 'i', 'l', 'm', 'M', \ -! 'n', 'N', 'r', 's', 'S', 'c', 't', 'v', 'V', 'w', 'W', \ - 'f', 'F', 'A', 'C', 'D', 'T', '-', '>', \ - 'B', 'P', 'R', 'L', \ - '+', '=', 'x', 'X', '*', '#', '_', '!', '.', 'o'} -*** ../vim-7.3.478/src/version.c 2012-03-23 15:36:57.000000000 +0100 ---- src/version.c 2012-03-23 16:16:41.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 479, - /**/ - --- -If you're sending someone Styrofoam, what do you pack it in? - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.480 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.480 -Problem: When using ":qa" and there is a changed buffer picking the buffer - to jump to is not very good. -Solution: Consider current and other tab pages. (Hirohito Higashi) -Files: src/ex_cmds2.c - - -*** ../vim-7.3.479/src/ex_cmds2.c 2012-02-22 18:29:29.000000000 +0100 ---- src/ex_cmds2.c 2012-03-23 17:01:31.000000000 +0100 -*************** -*** 1569,1574 **** ---- 1569,1594 ---- - || forceit); - } - -+ static void add_bufnum __ARGS((int *bufnrs, int *bufnump, int nr)); -+ -+ /* -+ * Add a buffer number to "bufnrs", unless it's already there. -+ */ -+ static void -+ add_bufnum(bufnrs, bufnump, nr) -+ int *bufnrs; -+ int *bufnump; -+ int nr; -+ { -+ int i; -+ -+ for (i = 0; i < *bufnump; ++i) -+ if (bufnrs[i] == nr) -+ return; -+ bufnrs[*bufnump] = nr; -+ *bufnump = *bufnump + 1; -+ } -+ - /* - * Return TRUE if any buffer was changed and cannot be abandoned. - * That changed buffer becomes the current buffer. -*************** -*** 1577,1608 **** - check_changed_any(hidden) - int hidden; /* Only check hidden buffers */ - { - buf_T *buf; - int save; - #ifdef FEAT_WINDOWS - win_T *wp; - #endif - -! for (;;) - { -! /* check curbuf first: if it was changed we can't abandon it */ -! if (!hidden && curbufIsChanged()) -! buf = curbuf; -! else - { -! for (buf = firstbuf; buf != NULL; buf = buf->b_next) -! if ((!hidden || buf->b_nwindows == 0) && bufIsChanged(buf)) -! break; - } -- if (buf == NULL) /* No buffers changed */ -- return FALSE; -- -- /* Try auto-writing the buffer. If this fails but the buffer no -- * longer exists it's not changed, that's OK. */ -- if (check_changed(buf, p_awa, TRUE, FALSE, TRUE) && buf_valid(buf)) -- break; /* didn't save - still changes */ - } - - exiting = FALSE; - #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG) - /* ---- 1597,1660 ---- - check_changed_any(hidden) - int hidden; /* Only check hidden buffers */ - { -+ int ret = FALSE; - buf_T *buf; - int save; -+ int i; -+ int bufnum = 0; -+ int bufcount = 0; -+ int *bufnrs; - #ifdef FEAT_WINDOWS -+ tabpage_T *tp; - win_T *wp; - #endif - -! for (buf = firstbuf; buf != NULL; buf = buf->b_next) -! ++bufcount; -! -! if (bufcount == 0) -! return FALSE; -! -! bufnrs = (int *)alloc(sizeof(int) * bufcount); -! if (bufnrs == NULL) -! return FALSE; -! -! /* curbuf */ -! bufnrs[bufnum++] = curbuf->b_fnum; -! #ifdef FEAT_WINDOWS -! /* buf in curtab */ -! FOR_ALL_WINDOWS(wp) -! if (wp->w_buffer != curbuf) -! add_bufnum(bufnrs, &bufnum, wp->w_buffer->b_fnum); -! -! /* buf in other tab */ -! for (tp = first_tabpage; tp != NULL; tp = tp->tp_next) -! if (tp != curtab) -! for (wp = tp->tp_firstwin; wp != NULL; wp = wp->w_next) -! add_bufnum(bufnrs, &bufnum, wp->w_buffer->b_fnum); -! #endif -! /* any other buf */ -! for (buf = firstbuf; buf != NULL; buf = buf->b_next) -! add_bufnum(bufnrs, &bufnum, buf->b_fnum); -! -! for (i = 0; i < bufnum; ++i) - { -! buf = buflist_findnr(bufnrs[i]); -! if (buf == NULL) -! continue; -! if ((!hidden || buf->b_nwindows == 0) && bufIsChanged(buf)) - { -! /* Try auto-writing the buffer. If this fails but the buffer no -! * longer exists it's not changed, that's OK. */ -! if (check_changed(buf, p_awa, TRUE, FALSE, TRUE) && buf_valid(buf)) -! break; /* didn't save - still changes */ - } - } - -+ if (i >= bufnum) -+ goto theend; -+ -+ ret = TRUE; - exiting = FALSE; - #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG) - /* -*************** -*** 1635,1658 **** - #ifdef FEAT_WINDOWS - /* Try to find a window that contains the buffer. */ - if (buf != curbuf) -! for (wp = firstwin; wp != NULL; wp = wp->w_next) - if (wp->w_buffer == buf) - { -! win_goto(wp); - # ifdef FEAT_AUTOCMD - /* Paranoia: did autocms wipe out the buffer with changes? */ - if (!buf_valid(buf)) -! return TRUE; - # endif -! break; - } - #endif - - /* Open the changed buffer in the current window. */ - if (buf != curbuf) - set_curbuf(buf, DOBUF_GOTO); - -! return TRUE; - } - - /* ---- 1687,1715 ---- - #ifdef FEAT_WINDOWS - /* Try to find a window that contains the buffer. */ - if (buf != curbuf) -! FOR_ALL_TAB_WINDOWS(tp, wp) - if (wp->w_buffer == buf) - { -! goto_tabpage_win(tp, wp); - # ifdef FEAT_AUTOCMD - /* Paranoia: did autocms wipe out the buffer with changes? */ - if (!buf_valid(buf)) -! { -! goto theend; -! } - # endif -! goto buf_found; - } -+ buf_found: - #endif - - /* Open the changed buffer in the current window. */ - if (buf != curbuf) - set_curbuf(buf, DOBUF_GOTO); - -! theend: -! vim_free(bufnrs); -! return ret; - } - - /* -*************** -*** 3274,3280 **** - home_replace(NULL, SCRIPT_ITEM(i).sn_name, - NameBuff, MAXPATHL, TRUE); - smsg((char_u *)"%3d: %s", i, NameBuff); -! } - } - - # if defined(BACKSLASH_IN_FILENAME) || defined(PROTO) ---- 3331,3337 ---- - home_replace(NULL, SCRIPT_ITEM(i).sn_name, - NameBuff, MAXPATHL, TRUE); - smsg((char_u *)"%3d: %s", i, NameBuff); -! } - } - - # if defined(BACKSLASH_IN_FILENAME) || defined(PROTO) -*** ../vim-7.3.479/src/version.c 2012-03-23 16:25:13.000000000 +0100 ---- src/version.c 2012-03-23 16:48:06.000000000 +0100 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 480, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -243. You unsuccessfully try to download a pizza from www.dominos.com. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.481 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.481 -Problem: Changing 'virtualedit' in an operator function to "all" does not - have the desired effect. (Aaron Bohannon) -Solution: Save, reset and restore virtual_op when executing an operator - function. -Files: src/normal.c - - -*** ../vim-7.3.480/src/normal.c 2012-02-05 01:18:41.000000000 +0100 ---- src/normal.c 2012-03-28 12:59:46.000000000 +0200 -*************** -*** 2279,2284 **** ---- 2279,2285 ---- - { - #ifdef FEAT_EVAL - char_u *(argv[1]); -+ int save_virtual_op = virtual_op; - - if (*p_opfunc == NUL) - EMSG(_("E774: 'operatorfunc' is empty")); -*************** -*** 2297,2303 **** ---- 2298,2311 ---- - argv[0] = (char_u *)"line"; - else - argv[0] = (char_u *)"char"; -+ -+ /* Reset virtual_op so that 'virtualedit' can be changed in the -+ * function. */ -+ virtual_op = MAYBE; -+ - (void)call_func_retnr(p_opfunc, 1, argv, FALSE); -+ -+ virtual_op = save_virtual_op; - } - #else - EMSG(_("E775: Eval feature not available")); -*** ../vim-7.3.480/src/version.c 2012-03-23 18:39:10.000000000 +0100 ---- src/version.c 2012-03-28 12:50:20.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 481, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -269. You wonder how you can make your dustbin produce Sesame Street's - Oscar's the Garbage Monster song when you empty it. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.482 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.482 -Problem: With 'cursorbind' set moving up/down does not always keep the same - column. -Solution: Set curswant appropriately. (Gary Johnson) -Files: src/move.c - - -*** ../vim-7.3.481/src/move.c 2012-03-16 19:24:21.000000000 +0100 ---- src/move.c 2012-03-28 14:16:02.000000000 +0200 -*************** -*** 2847,2852 **** ---- 2847,2854 ---- - # ifdef FEAT_VIRTUALEDIT - colnr_T coladd = curwin->w_cursor.coladd; - # endif -+ colnr_T curswant = curwin->w_curswant; -+ int set_curswant = curwin->w_set_curswant; - win_T *old_curwin = curwin; - buf_T *old_curbuf = curbuf; - int restart_edit_save; -*************** -*** 2881,2886 **** ---- 2883,2890 ---- - # ifdef FEAT_VIRTUALEDIT - curwin->w_cursor.coladd = coladd; - # endif -+ curwin->w_curswant = curswant; -+ curwin->w_set_curswant = set_curswant; - - /* Make sure the cursor is in a valid position. Temporarily set - * "restart_edit" to allow the cursor to be beyond the EOL. */ -*** ../vim-7.3.481/src/version.c 2012-03-28 12:59:53.000000000 +0200 ---- src/version.c 2012-03-28 14:15:56.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 482, - /**/ - --- -Women are probably the main cause of free software starvation. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.483 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.483 (after 7.3.477) -Problem: More prompt shows up too often. -Solution: Instead of adding a line break, only start a new line in the - message history. (Christian Brabandt) -Files: src/eval.c, src/message.c, src/proto/message.pro - - -*** ../vim-7.3.482/src/eval.c 2012-03-23 15:36:57.000000000 +0100 ---- src/eval.c 2012-03-28 16:41:03.000000000 +0200 -*************** -*** 20493,20501 **** - * may cause a message to appear. */ - if (eap->cmdidx == CMD_echo) - { -! /* Put the output below the command, makes scrolling back -! * at more prompt work. */ -! msg_didout = TRUE; - msg_start(); - } - } ---- 20493,20502 ---- - * may cause a message to appear. */ - if (eap->cmdidx == CMD_echo) - { -! /* Mark the saved text as finishing the line, so that what -! * follows is displayed on a new line when scrolling back -! * at the more prompt. */ -! msg_sb_eol(); - msg_start(); - } - } -*** ../vim-7.3.482/src/message.c 2012-01-26 13:01:54.000000000 +0100 ---- src/message.c 2012-03-28 16:35:26.000000000 +0200 -*************** -*** 2348,2353 **** ---- 2348,2363 ---- - } - - /* -+ * Mark the last message chunk as finishing the line. -+ */ -+ void -+ msg_sb_eol() -+ { -+ if (last_msgchunk != NULL) -+ last_msgchunk->sb_eol = TRUE; -+ } -+ -+ /* - * Display a screen line from previously displayed text at row "row". - * Returns a pointer to the text for the next line (can be NULL). - */ -*** ../vim-7.3.482/src/proto/message.pro 2012-01-20 20:44:38.000000000 +0100 ---- src/proto/message.pro 2012-03-28 16:35:33.000000000 +0200 -*************** -*** 45,50 **** ---- 45,51 ---- - void may_clear_sb_text __ARGS((void)); - void clear_sb_text __ARGS((void)); - void show_sb_text __ARGS((void)); -+ void msg_sb_eol __ARGS((void)); - int msg_use_printf __ARGS((void)); - void mch_errmsg __ARGS((char *str)); - void mch_msg __ARGS((char *str)); -*** ../vim-7.3.482/src/version.c 2012-03-28 14:19:46.000000000 +0200 ---- src/version.c 2012-03-28 16:48:53.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 483, - /**/ - --- - We're knights of the Round Table - Our shows are formidable - But many times - We're given rhymes - That are quite unsingable - We're opera mad in Camelot - We sing from the diaphragm a lot. - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.484 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.484 -Problem: The -E and --echo-wid command line arguments are not mentioned in - "vim --help". -Solution: Add the help lines. (Dominique Pelle) -Files: src/main.c - - -*** ../vim-7.3.483/src/main.c 2012-02-12 01:55:50.000000000 +0100 ---- src/main.c 2012-03-28 16:55:03.000000000 +0200 -*************** -*** 3181,3186 **** ---- 3181,3187 ---- - #endif - main_msg(_("-v\t\t\tVi mode (like \"vi\")")); - main_msg(_("-e\t\t\tEx mode (like \"ex\")")); -+ main_msg(_("-E\t\t\tImproved Ex mode")); - main_msg(_("-s\t\t\tSilent (batch) mode (only for \"ex\")")); - #ifdef FEAT_DIFF - main_msg(_("-d\t\t\tDiff mode (like \"vimdiff\")")); -*************** -*** 3304,3309 **** ---- 3305,3311 ---- - main_msg(_("-display <display>\tRun vim on <display> (also: --display)")); - main_msg(_("--role <role>\tSet a unique role to identify the main window")); - main_msg(_("--socketid <xid>\tOpen Vim inside another GTK widget")); -+ main_msg(_("--echo-wid\t\tMake gvim echo the Window ID on stdout")); - #endif - #ifdef FEAT_GUI_W32 - main_msg(_("-P <parent title>\tOpen Vim inside parent application")); -*** ../vim-7.3.483/src/version.c 2012-03-28 16:49:25.000000000 +0200 ---- src/version.c 2012-03-28 17:10:08.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 484, - /**/ - --- - In war we're tough and able. - Quite indefatigable - Between our quests - We sequin vests - And impersonate Clark Gable - It's a busy life in Camelot. - I have to push the pram a lot. - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.485 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.485 -Problem: When building Vim LDFLAGS isn't passed on to building xxd. -Solution: Pass the LDFLAGS value. (James McCoy) -Files: src/Makefile - - -*** ../vim-7.3.484/src/Makefile 2011-12-14 20:51:19.000000000 +0100 ---- src/Makefile 2012-03-28 17:16:06.000000000 +0200 -*************** -*** 1720,1726 **** - sh $(srcdir)/link.sh - - xxd/xxd$(EXEEXT): xxd/xxd.c -! cd xxd; CC="$(CC)" CFLAGS="$(CPPFLAGS) $(CFLAGS)" \ - $(MAKE) -f Makefile - - # Build the language specific files if they were unpacked. ---- 1720,1726 ---- - sh $(srcdir)/link.sh - - xxd/xxd$(EXEEXT): xxd/xxd.c -! cd xxd; CC="$(CC)" CFLAGS="$(CPPFLAGS) $(CFLAGS)" LDFLAGS="$(LDFLAGS)" \ - $(MAKE) -f Makefile - - # Build the language specific files if they were unpacked. -*** ../vim-7.3.484/src/version.c 2012-03-28 17:10:26.000000000 +0200 ---- src/version.c 2012-03-28 17:16:15.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 485, - /**/ - --- -GOD: That is your purpose Arthur ... the Quest for the Holy Grail ... - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.486 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.486 -Problem: Build error with mingw64 on Windows 7. -Solution: Avoid the step of going through vimres.res. (Guopeng Wen) -Files: src/Make_ming.mak - - -*** ../vim-7.3.485/src/Make_ming.mak 2012-02-29 16:56:35.000000000 +0100 ---- src/Make_ming.mak 2012-03-28 17:41:55.000000000 +0200 -*************** -*** 681,691 **** - $(OUTDIR)/%.o : %.c $(INCL) - $(CC) -c $(CFLAGS) $< -o $@ - -! $(OUTDIR)/vimres.res: vim.rc version.h gui_w32_rc.h -! $(WINDRES) $(WINDRES_FLAGS) $(DEFINES) vim.rc $(OUTDIR)/vimres.res -! -! $(OUTDIR)/vimrc.o: $(OUTDIR)/vimres.res -! $(WINDRES) $(WINDRES_FLAGS) $(OUTDIR)/vimres.res $(OUTDIR)/vimrc.o - - $(OUTDIR): - $(MKDIR) $(OUTDIR) ---- 681,689 ---- - $(OUTDIR)/%.o : %.c $(INCL) - $(CC) -c $(CFLAGS) $< -o $@ - -! $(OUTDIR)/vimrc.o: vim.rc version.h gui_w32_rc.h -! $(WINDRES) $(WINDRES_FLAGS) $(DEFINES) \ -! --input-format=rc --output-format=coff -i vim.rc -o $@ - - $(OUTDIR): - $(MKDIR) $(OUTDIR) -*** ../vim-7.3.485/src/version.c 2012-03-28 17:17:45.000000000 +0200 ---- src/version.c 2012-03-28 17:42:25.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 486, - /**/ - --- -There is a fine line between courage and foolishness. -Unfortunately, it's not a fence. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.487 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.487 -Problem: When setting 'timeoutlen' or 'ttimeoutlen' the column for vertical - movement is reset unnecessarily. -Solution: Do not set w_set_curswant for every option. Add a test for this. - (Kana Natsuno) Add the P_CURSWANT flag for options. -Files: src/option.c, src/testdir/test84.in, src/testdir/test84.ok, - src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, - src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, - src/testdir/Make_vms.mms, src/testdir/Makefile - - -*** ../vim-7.3.486/src/option.c 2012-03-23 16:25:13.000000000 +0100 ---- src/option.c 2012-03-28 19:57:46.000000000 +0200 -*************** -*** 433,449 **** - #define P_RCLR 0x7000 /* clear and redraw all */ - - #define P_COMMA 0x8000 /* comma separated list */ -! #define P_NODUP 0x10000L/* don't allow duplicate strings */ -! #define P_FLAGLIST 0x20000L/* list of single-char flags */ - -! #define P_SECURE 0x40000L/* cannot change in modeline or secure mode */ -! #define P_GETTEXT 0x80000L/* expand default value with _() */ -! #define P_NOGLOB 0x100000L/* do not use local value for global vimrc */ -! #define P_NFNAME 0x200000L/* only normal file name chars allowed */ -! #define P_INSECURE 0x400000L/* option was set from a modeline */ -! #define P_PRI_MKRC 0x800000L/* priority for :mkvimrc (setting option has - side effects) */ -! #define P_NO_ML 0x1000000L/* not allowed in modeline */ - - #define ISK_LATIN1 (char_u *)"@,48-57,_,192-255" - ---- 433,451 ---- - #define P_RCLR 0x7000 /* clear and redraw all */ - - #define P_COMMA 0x8000 /* comma separated list */ -! #define P_NODUP 0x10000L /* don't allow duplicate strings */ -! #define P_FLAGLIST 0x20000L /* list of single-char flags */ - -! #define P_SECURE 0x40000L /* cannot change in modeline or secure mode */ -! #define P_GETTEXT 0x80000L /* expand default value with _() */ -! #define P_NOGLOB 0x100000L /* do not use local value for global vimrc */ -! #define P_NFNAME 0x200000L /* only normal file name chars allowed */ -! #define P_INSECURE 0x400000L /* option was set from a modeline */ -! #define P_PRI_MKRC 0x800000L /* priority for :mkvimrc (setting option has - side effects) */ -! #define P_NO_ML 0x1000000L /* not allowed in modeline */ -! #define P_CURSWANT 0x2000000L /* update curswant required; not needed when -! * there is a redraw flag */ - - #define ISK_LATIN1 (char_u *)"@,48-57,_,192-255" - -*************** -*** 479,485 **** - #endif - options[] = - { -! {"aleph", "al", P_NUM|P_VI_DEF, - #ifdef FEAT_RIGHTLEFT - (char_u *)&p_aleph, PV_NONE, - #else ---- 481,487 ---- - #endif - options[] = - { -! {"aleph", "al", P_NUM|P_VI_DEF|P_CURSWANT, - #ifdef FEAT_RIGHTLEFT - (char_u *)&p_aleph, PV_NONE, - #else -*************** -*** 501,507 **** - {(char_u *)FALSE, (char_u *)FALSE} - #endif - SCRIPTID_INIT}, -! {"arabic", "arab", P_BOOL|P_VI_DEF|P_VIM, - #ifdef FEAT_ARABIC - (char_u *)VAR_WIN, PV_ARAB, - #else ---- 503,509 ---- - {(char_u *)FALSE, (char_u *)FALSE} - #endif - SCRIPTID_INIT}, -! {"arabic", "arab", P_BOOL|P_VI_DEF|P_VIM|P_CURSWANT, - #ifdef FEAT_ARABIC - (char_u *)VAR_WIN, PV_ARAB, - #else -*************** -*** 778,784 **** - {"columns", "co", P_NUM|P_NODEFAULT|P_NO_MKRC|P_VI_DEF|P_RCLR, - (char_u *)&Columns, PV_NONE, - {(char_u *)80L, (char_u *)0L} SCRIPTID_INIT}, -! {"comments", "com", P_STRING|P_ALLOCED|P_VI_DEF|P_COMMA|P_NODUP, - #ifdef FEAT_COMMENTS - (char_u *)&p_com, PV_COM, - {(char_u *)"s1:/*,mb:*,ex:*/,://,b:#,:%,:XCOMM,n:>,fb:-", ---- 780,786 ---- - {"columns", "co", P_NUM|P_NODEFAULT|P_NO_MKRC|P_VI_DEF|P_RCLR, - (char_u *)&Columns, PV_NONE, - {(char_u *)80L, (char_u *)0L} SCRIPTID_INIT}, -! {"comments", "com", P_STRING|P_ALLOCED|P_VI_DEF|P_COMMA|P_NODUP|P_CURSWANT, - #ifdef FEAT_COMMENTS - (char_u *)&p_com, PV_COM, - {(char_u *)"s1:/*,mb:*,ex:*/,://,b:#,:%,:XCOMM,n:>,fb:-", -*************** -*** 788,794 **** - {(char_u *)0L, (char_u *)0L} - #endif - SCRIPTID_INIT}, -! {"commentstring", "cms", P_STRING|P_ALLOCED|P_VI_DEF, - #ifdef FEAT_FOLDING - (char_u *)&p_cms, PV_CMS, - {(char_u *)"/*%s*/", (char_u *)0L} ---- 790,796 ---- - {(char_u *)0L, (char_u *)0L} - #endif - SCRIPTID_INIT}, -! {"commentstring", "cms", P_STRING|P_ALLOCED|P_VI_DEF|P_CURSWANT, - #ifdef FEAT_FOLDING - (char_u *)&p_cms, PV_CMS, - {(char_u *)"/*%s*/", (char_u *)0L} -*************** -*** 953,959 **** - {"debug", NULL, P_STRING|P_VI_DEF, - (char_u *)&p_debug, PV_NONE, - {(char_u *)"", (char_u *)0L} SCRIPTID_INIT}, -! {"define", "def", P_STRING|P_ALLOCED|P_VI_DEF, - #ifdef FEAT_FIND_ID - (char_u *)&p_def, PV_DEF, - {(char_u *)"^\\s*#\\s*define", (char_u *)0L} ---- 955,961 ---- - {"debug", NULL, P_STRING|P_VI_DEF, - (char_u *)&p_debug, PV_NONE, - {(char_u *)"", (char_u *)0L} SCRIPTID_INIT}, -! {"define", "def", P_STRING|P_ALLOCED|P_VI_DEF|P_CURSWANT, - #ifdef FEAT_FIND_ID - (char_u *)&p_def, PV_DEF, - {(char_u *)"^\\s*#\\s*define", (char_u *)0L} -*************** -*** 983,989 **** - (char_u *)NULL, PV_NONE, - #endif - {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT}, -! {"diffexpr", "dex", P_STRING|P_VI_DEF|P_SECURE, - #if defined(FEAT_DIFF) && defined(FEAT_EVAL) - (char_u *)&p_dex, PV_NONE, - {(char_u *)"", (char_u *)0L} ---- 985,991 ---- - (char_u *)NULL, PV_NONE, - #endif - {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT}, -! {"diffexpr", "dex", P_STRING|P_VI_DEF|P_SECURE|P_CURSWANT, - #if defined(FEAT_DIFF) && defined(FEAT_EVAL) - (char_u *)&p_dex, PV_NONE, - {(char_u *)"", (char_u *)0L} -*************** -*** 1099,1105 **** - {(char_u *)0L, (char_u *)0L} - #endif - SCRIPTID_INIT}, -! {"fileformat", "ff", P_STRING|P_ALLOCED|P_VI_DEF|P_RSTAT|P_NO_MKRC, - (char_u *)&p_ff, PV_FF, - {(char_u *)DFLT_FF, (char_u *)0L} SCRIPTID_INIT}, - {"fileformats", "ffs", P_STRING|P_VIM|P_COMMA|P_NODUP, ---- 1101,1107 ---- - {(char_u *)0L, (char_u *)0L} - #endif - SCRIPTID_INIT}, -! {"fileformat", "ff", P_STRING|P_ALLOCED|P_VI_DEF|P_RSTAT|P_NO_MKRC|P_CURSWANT, - (char_u *)&p_ff, PV_FF, - {(char_u *)DFLT_FF, (char_u *)0L} SCRIPTID_INIT}, - {"fileformats", "ffs", P_STRING|P_VIM|P_COMMA|P_NODUP, -*************** -*** 1159,1165 **** - {"foldlevel", "fdl", P_NUM|P_VI_DEF|P_RWIN, - (char_u *)VAR_WIN, PV_FDL, - {(char_u *)0L, (char_u *)0L} SCRIPTID_INIT}, -! {"foldlevelstart","fdls", P_NUM|P_VI_DEF, - (char_u *)&p_fdls, PV_NONE, - {(char_u *)-1L, (char_u *)0L} SCRIPTID_INIT}, - {"foldmarker", "fmr", P_STRING|P_ALLOCED|P_VIM|P_VI_DEF| ---- 1161,1167 ---- - {"foldlevel", "fdl", P_NUM|P_VI_DEF|P_RWIN, - (char_u *)VAR_WIN, PV_FDL, - {(char_u *)0L, (char_u *)0L} SCRIPTID_INIT}, -! {"foldlevelstart","fdls", P_NUM|P_VI_DEF|P_CURSWANT, - (char_u *)&p_fdls, PV_NONE, - {(char_u *)-1L, (char_u *)0L} SCRIPTID_INIT}, - {"foldmarker", "fmr", P_STRING|P_ALLOCED|P_VIM|P_VI_DEF| -*************** -*** 1176,1182 **** - {"foldnestmax", "fdn", P_NUM|P_VI_DEF|P_RWIN, - (char_u *)VAR_WIN, PV_FDN, - {(char_u *)20L, (char_u *)0L} SCRIPTID_INIT}, -! {"foldopen", "fdo", P_STRING|P_VI_DEF|P_COMMA|P_NODUP, - (char_u *)&p_fdo, PV_NONE, - {(char_u *)"block,hor,mark,percent,quickfix,search,tag,undo", - (char_u *)0L} SCRIPTID_INIT}, ---- 1178,1184 ---- - {"foldnestmax", "fdn", P_NUM|P_VI_DEF|P_RWIN, - (char_u *)VAR_WIN, PV_FDN, - {(char_u *)20L, (char_u *)0L} SCRIPTID_INIT}, -! {"foldopen", "fdo", P_STRING|P_VI_DEF|P_COMMA|P_NODUP|P_CURSWANT, - (char_u *)&p_fdo, PV_NONE, - {(char_u *)"block,hor,mark,percent,quickfix,search,tag,undo", - (char_u *)0L} SCRIPTID_INIT}, -*************** -*** 1741,1747 **** - {"matchtime", "mat", P_NUM|P_VI_DEF, - (char_u *)&p_mat, PV_NONE, - {(char_u *)5L, (char_u *)0L} SCRIPTID_INIT}, -! {"maxcombine", "mco", P_NUM|P_VI_DEF, - #ifdef FEAT_MBYTE - (char_u *)&p_mco, PV_NONE, - #else ---- 1743,1749 ---- - {"matchtime", "mat", P_NUM|P_VI_DEF, - (char_u *)&p_mat, PV_NONE, - {(char_u *)5L, (char_u *)0L} SCRIPTID_INIT}, -! {"maxcombine", "mco", P_NUM|P_VI_DEF|P_CURSWANT, - #ifdef FEAT_MBYTE - (char_u *)&p_mco, PV_NONE, - #else -*************** -*** 2710,2716 **** - {(char_u *)0L, (char_u *)0L} - #endif - SCRIPTID_INIT}, -! {"virtualedit", "ve", P_STRING|P_COMMA|P_NODUP|P_VI_DEF|P_VIM, - #ifdef FEAT_VIRTUALEDIT - (char_u *)&p_ve, PV_NONE, - {(char_u *)"", (char_u *)""} ---- 2712,2718 ---- - {(char_u *)0L, (char_u *)0L} - #endif - SCRIPTID_INIT}, -! {"virtualedit", "ve", P_STRING|P_COMMA|P_NODUP|P_VI_DEF|P_VIM|P_CURSWANT, - #ifdef FEAT_VIRTUALEDIT - (char_u *)&p_ve, PV_NONE, - {(char_u *)"", (char_u *)""} -*************** -*** 7064,7071 **** - } - #endif - -! if (curwin->w_curswant != MAXCOL) -! curwin->w_set_curswant = TRUE; /* in case 'showbreak' changed */ - #ifdef FEAT_GUI - /* check redraw when it's not a GUI option or the GUI is active. */ - if (!redraw_gui_only || gui.in_use) ---- 7066,7075 ---- - } - #endif - -! if (curwin->w_curswant != MAXCOL -! && (options[opt_idx].flags & (P_CURSWANT | P_RCLR)) != 0) -! curwin->w_set_curswant = TRUE; -! - #ifdef FEAT_GUI - /* check redraw when it's not a GUI option or the GUI is active. */ - if (!redraw_gui_only || gui.in_use) -*************** -*** 7587,7595 **** - || (int *)varp == &curwin->w_p_nu - || (int *)varp == &curwin->w_p_rnu) - { -- if (curwin->w_curswant != MAXCOL) -- curwin->w_set_curswant = TRUE; -- - /* If 'number' is set, reset 'relativenumber'. */ - /* If 'relativenumber' is set, reset 'number'. */ - if ((int *)varp == &curwin->w_p_nu && curwin->w_p_nu) ---- 7591,7596 ---- -*************** -*** 7834,7841 **** - { - if (curwin->w_p_wrap) - curwin->w_leftcol = 0; -- if (curwin->w_curswant != MAXCOL) -- curwin->w_set_curswant = TRUE; - } - - #ifdef FEAT_WINDOWS ---- 7835,7840 ---- -*************** -*** 8062,8092 **** - curbuf->b_p_imsearch = B_IMODE_USE_INSERT; - # endif - } -- if (curwin->w_curswant != MAXCOL) -- curwin->w_set_curswant = TRUE; - } - -- else if ((int *)varp == &p_arshape) -- { -- if (curwin->w_curswant != MAXCOL) -- curwin->w_set_curswant = TRUE; -- } -- #endif -- -- #ifdef FEAT_LINEBREAK -- if ((int *)varp == &curwin->w_p_lbr) -- { -- if (curwin->w_curswant != MAXCOL) -- curwin->w_set_curswant = TRUE; -- } -- #endif -- -- #ifdef FEAT_RIGHTLEFT -- if ((int *)varp == &curwin->w_p_rl) -- { -- if (curwin->w_curswant != MAXCOL) -- curwin->w_set_curswant = TRUE; -- } - #endif - - /* ---- 8061,8068 ---- -*************** -*** 8096,8102 **** - options[opt_idx].flags |= P_WAS_SET; - - comp_col(); /* in case 'ruler' or 'showcmd' changed */ -! - check_redraw(options[opt_idx].flags); - - return NULL; ---- 8072,8080 ---- - options[opt_idx].flags |= P_WAS_SET; - - comp_col(); /* in case 'ruler' or 'showcmd' changed */ -! if (curwin->w_curswant != MAXCOL -! && (options[opt_idx].flags & (P_CURSWANT | P_RCLR)) != 0) -! curwin->w_set_curswant = TRUE; - check_redraw(options[opt_idx].flags); - - return NULL; -*************** -*** 8611,8618 **** - options[opt_idx].flags |= P_WAS_SET; - - comp_col(); /* in case 'columns' or 'ls' changed */ -! if (curwin->w_curswant != MAXCOL) -! curwin->w_set_curswant = TRUE; /* in case 'tabstop' changed */ - check_redraw(options[opt_idx].flags); - - return errmsg; ---- 8589,8597 ---- - options[opt_idx].flags |= P_WAS_SET; - - comp_col(); /* in case 'columns' or 'ls' changed */ -! if (curwin->w_curswant != MAXCOL -! && (options[opt_idx].flags & (P_CURSWANT | P_RCLR)) != 0) -! curwin->w_set_curswant = TRUE; - check_redraw(options[opt_idx].flags); - - return errmsg; -*** ../vim-7.3.486/src/testdir/test84.in 2012-03-28 19:55:12.000000000 +0200 ---- src/testdir/test84.in 2012-03-28 19:46:53.000000000 +0200 -*************** -*** 0 **** ---- 1,35 ---- -+ Tests for curswant not changing when setting an option -+ -+ STARTTEST -+ :so small.vim -+ :/^start target options$/+1,/^end target options$/-1 yank -+ :let target_option_names = split(@0) -+ :function TestCurswant(option_name) -+ : normal! ggf8j -+ : let curswant_before = winsaveview().curswant -+ : execute 'let' '&'.a:option_name '=' '&'.a:option_name -+ : let curswant_after = winsaveview().curswant -+ : return [a:option_name, curswant_before, curswant_after] -+ :endfunction -+ : -+ :new -+ :put =['1234567890', '12345'] -+ :1 delete _ -+ :let result = [] -+ :for option_name in target_option_names -+ : call add(result, TestCurswant(option_name)) -+ :endfor -+ : -+ :new -+ :put =map(copy(result), 'join(v:val, '' '')') -+ :1 delete _ -+ :write test.out -+ : -+ :qall! -+ ENDTEST -+ -+ start target options -+ tabstop -+ timeoutlen -+ ttimeoutlen -+ end target options -*** ../vim-7.3.486/src/testdir/test84.ok 2012-03-28 19:55:12.000000000 +0200 ---- src/testdir/test84.ok 2012-03-28 19:48:36.000000000 +0200 -*************** -*** 0 **** ---- 1,3 ---- -+ tabstop 7 4 -+ timeoutlen 7 7 -+ ttimeoutlen 7 7 -*** ../vim-7.3.486/src/testdir/Make_amiga.mak 2011-10-12 19:53:31.000000000 +0200 ---- src/testdir/Make_amiga.mak 2012-03-28 18:14:08.000000000 +0200 -*************** -*** 29,35 **** - test66.out test67.out test68.out test69.out test70.out \ - test71.out test72.out test73.out test74.out test75.out \ - test76.out test77.out test78.out test79.out test80.out \ -! test81.out test82.out test83.out - - .SUFFIXES: .in .out - ---- 29,35 ---- - test66.out test67.out test68.out test69.out test70.out \ - test71.out test72.out test73.out test74.out test75.out \ - test76.out test77.out test78.out test79.out test80.out \ -! test81.out test82.out test83.out test84.out - - .SUFFIXES: .in .out - -*************** -*** 132,134 **** ---- 132,135 ---- - test81.out: test81.in - test82.out: test82.in - test83.out: test83.in -+ test84.out: test84.in -*** ../vim-7.3.486/src/testdir/Make_dos.mak 2011-10-12 19:53:31.000000000 +0200 ---- src/testdir/Make_dos.mak 2012-03-28 18:14:41.000000000 +0200 -*************** -*** 29,35 **** - test42.out test52.out test65.out test66.out test67.out \ - test68.out test69.out test71.out test72.out test73.out \ - test74.out test75.out test76.out test77.out test78.out \ -! test79.out test80.out test81.out test82.out test83.out - - SCRIPTS32 = test50.out test70.out - ---- 29,36 ---- - test42.out test52.out test65.out test66.out test67.out \ - test68.out test69.out test71.out test72.out test73.out \ - test74.out test75.out test76.out test77.out test78.out \ -! test79.out test80.out test81.out test82.out test83.out \ -! test84.out - - SCRIPTS32 = test50.out test70.out - -*** ../vim-7.3.486/src/testdir/Make_ming.mak 2011-10-12 19:53:31.000000000 +0200 ---- src/testdir/Make_ming.mak 2012-03-28 18:14:46.000000000 +0200 -*************** -*** 49,55 **** - test42.out test52.out test65.out test66.out test67.out \ - test68.out test69.out test71.out test72.out test73.out \ - test74.out test75.out test76.out test77.out test78.out \ -! test79.out test80.out test81.out test82.out test83.out - - SCRIPTS32 = test50.out test70.out - ---- 49,56 ---- - test42.out test52.out test65.out test66.out test67.out \ - test68.out test69.out test71.out test72.out test73.out \ - test74.out test75.out test76.out test77.out test78.out \ -! test79.out test80.out test81.out test82.out test83.out \ -! test84.out - - SCRIPTS32 = test50.out test70.out - -*** ../vim-7.3.486/src/testdir/Make_os2.mak 2011-10-12 19:53:31.000000000 +0200 ---- src/testdir/Make_os2.mak 2012-03-28 18:15:00.000000000 +0200 -*************** -*** 29,35 **** - test66.out test67.out test68.out test69.out test70.out \ - test71.out test72.out test73.out test74.out test75.out \ - test76.out test77.out test78.out test79.out test80.out \ -! test81.out test82.out test83.out - - .SUFFIXES: .in .out - ---- 29,35 ---- - test66.out test67.out test68.out test69.out test70.out \ - test71.out test72.out test73.out test74.out test75.out \ - test76.out test77.out test78.out test79.out test80.out \ -! test81.out test82.out test83.out test84.out - - .SUFFIXES: .in .out - -*** ../vim-7.3.486/src/testdir/Make_vms.mms 2011-10-12 19:53:31.000000000 +0200 ---- src/testdir/Make_vms.mms 2012-03-28 18:15:15.000000000 +0200 -*************** -*** 4,10 **** - # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> - # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> - # -! # Last change: 2011 Jul 15 - # - # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. - # Edit the lines in the Configuration section below to select. ---- 4,10 ---- - # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> - # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> - # -! # Last change: 2012 Mar 28 - # - # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. - # Edit the lines in the Configuration section below to select. -*************** -*** 76,82 **** - test66.out test67.out test68.out test69.out \ - test71.out test72.out test74.out test75.out test76.out \ - test77.out test78.out test79.out test80.out test81.out \ -! test82.out test83.out - - # Known problems: - # Test 30: a problem around mac format - unknown reason ---- 76,82 ---- - test66.out test67.out test68.out test69.out \ - test71.out test72.out test74.out test75.out test76.out \ - test77.out test78.out test79.out test80.out test81.out \ -! test82.out test83.out test84.out - - # Known problems: - # Test 30: a problem around mac format - unknown reason -*** ../vim-7.3.486/src/testdir/Makefile 2011-10-12 19:53:31.000000000 +0200 ---- src/testdir/Makefile 2012-03-28 18:15:29.000000000 +0200 -*************** -*** 26,32 **** - test64.out test65.out test66.out test67.out test68.out \ - test69.out test70.out test71.out test72.out test73.out \ - test74.out test75.out test76.out test77.out test78.out \ -! test79.out test80.out test81.out test82.out test83.out - - SCRIPTS_GUI = test16.out - ---- 26,33 ---- - test64.out test65.out test66.out test67.out test68.out \ - test69.out test70.out test71.out test72.out test73.out \ - test74.out test75.out test76.out test77.out test78.out \ -! test79.out test80.out test81.out test82.out test83.out \ -! test84.out - - SCRIPTS_GUI = test16.out - -*** ../vim-7.3.486/src/version.c 2012-03-28 17:43:06.000000000 +0200 ---- src/version.c 2012-03-28 19:49:41.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 487, - /**/ - --- -"Time flies like an arrow". So I put an arrow on my desk, now -awaiting one of these time flies showing up. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.488 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.488 -Problem: ":help!" in a help file does not work as document. -Solution: When in a help file don't give an error message. (thinca) -Files: src/ex_cmds.c - - -*** ../vim-7.3.487/src/ex_cmds.c 2012-03-16 14:32:10.000000000 +0100 ---- src/ex_cmds.c 2012-04-01 14:25:35.000000000 +0200 -*************** -*** 5546,5552 **** - } - arg = eap->arg; - -! if (eap->forceit && *arg == NUL) - { - EMSG(_("E478: Don't panic!")); - return; ---- 5546,5552 ---- - } - arg = eap->arg; - -! if (eap->forceit && *arg == NUL && !curbuf->b_help) - { - EMSG(_("E478: Don't panic!")); - return; -*** ../vim-7.3.487/src/version.c 2012-03-28 19:58:34.000000000 +0200 ---- src/version.c 2012-04-05 16:04:13.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 488, - /**/ - - --- -I'd like to meet the man who invented sex and see what he's working on now. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.489 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.489 -Problem: CTRL-] in Insert mode does not expand abbreviation when used in a - mapping. (Yichao Zhou) -Solution: Special case using CTRL-]. (Christian Brabandt) -Files: src/getchar.c, src/edit.c - - -*** ../vim-7.3.488/src/getchar.c 2012-02-05 22:05:44.000000000 +0100 ---- src/getchar.c 2012-04-05 15:54:00.000000000 +0200 -*************** -*** 4352,4359 **** - - if (typebuf.tb_no_abbr_cnt) /* abbrev. are not recursive */ - return FALSE; -! if ((KeyNoremap & (RM_NONE|RM_SCRIPT)) != 0) -! /* no remapping implies no abbreviation */ - return FALSE; - - /* ---- 4352,4360 ---- - - if (typebuf.tb_no_abbr_cnt) /* abbrev. are not recursive */ - return FALSE; -! -! /* no remapping implies no abbreviation, except for CTRL-] */ -! if ((KeyNoremap & (RM_NONE|RM_SCRIPT)) != 0 && c != Ctrl_RSB) - return FALSE; - - /* -*** ../vim-7.3.488/src/edit.c 2012-02-29 18:22:03.000000000 +0100 ---- src/edit.c 2012-04-05 15:57:46.000000000 +0200 -*************** -*** 1455,1467 **** - Insstart_blank_vcol = get_nolist_virtcol(); - } - -! if (vim_iswordc(c) || !echeck_abbr( - #ifdef FEAT_MBYTE - /* Add ABBR_OFF for characters above 0x100, this is - * what check_abbr() expects. */ - (has_mbyte && c >= 0x100) ? (c + ABBR_OFF) : - #endif -! c)) - { - insert_special(c, FALSE, FALSE); - #ifdef FEAT_RIGHTLEFT ---- 1455,1470 ---- - Insstart_blank_vcol = get_nolist_virtcol(); - } - -! /* Insert a normal character and check for abbreviations on a -! * special character. Let CTRL-] expand abbreviations without -! * inserting it. */ -! if (vim_iswordc(c) || (!echeck_abbr( - #ifdef FEAT_MBYTE - /* Add ABBR_OFF for characters above 0x100, this is - * what check_abbr() expects. */ - (has_mbyte && c >= 0x100) ? (c + ABBR_OFF) : - #endif -! c) && c != Ctrl_RSB)) - { - insert_special(c, FALSE, FALSE); - #ifdef FEAT_RIGHTLEFT -*** ../vim-7.3.488/src/version.c 2012-04-05 16:04:58.000000000 +0200 ---- src/version.c 2012-04-05 16:06:12.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 489, - /**/ - --- -Just think of all the things we haven't thought of yet. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.490 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.490 -Problem: Member confusion in Lua interface. -Solution: Fix it. Add luaeval(). (Taro Muraoka, Luis Carvalho) -Files: runtime/doc/if_lua.txt, src/eval.c, src/if_lua.c, - src/proto/if_lua.pro - - -*** ../vim-7.3.489/runtime/doc/if_lua.txt 2010-08-15 21:57:14.000000000 +0200 ---- runtime/doc/if_lua.txt 2012-04-05 16:41:35.000000000 +0200 -*************** -*** 1,4 **** -! *if_lua.txt* For Vim version 7.3. Last change: 2010 Jul 22 - - - VIM REFERENCE MANUAL by Luis Carvalho ---- 1,4 ---- -! *if_lua.txt* For Vim version 7.3. Last change: 2012 Jan 16 - - - VIM REFERENCE MANUAL by Luis Carvalho -*************** -*** 8,15 **** - - 1. Commands |lua-commands| - 2. The vim module |lua-vim| -! 3. Buffer userdata |lua-buffer| -! 4. Window userdata |lua-window| - - {Vi does not have any of these commands} - ---- 8,18 ---- - - 1. Commands |lua-commands| - 2. The vim module |lua-vim| -! 3. List userdata |lua-list| -! 4. Dict userdata |lua-dict| -! 5. Buffer userdata |lua-buffer| -! 6. Window userdata |lua-window| -! 7. The luaeval function |lua-luaeval| - - {Vi does not have any of these commands} - -*************** -*** 88,98 **** - All these commands execute a Lua chunk from either the command line (:lua and - :luado) or a file (:luafile) with the given line [range]. Similarly to the Lua - interpreter, each chunk has its own scope and so only global variables are -! shared between command calls. Lua default libraries "table", "string", "math", -! and "package" are available, "io" and "debug" are not, and "os" is restricted -! to functions "date", "clock", "time", "difftime", and "getenv". In addition, -! Lua "print" function has its output redirected to the Vim message area, with -! arguments separated by a white space instead of a tab. - - Lua uses the "vim" module (see |lua-vim|) to issue commands to Vim - and manage buffers (|lua-buffer|) and windows (|lua-window|). However, ---- 91,99 ---- - All these commands execute a Lua chunk from either the command line (:lua and - :luado) or a file (:luafile) with the given line [range]. Similarly to the Lua - interpreter, each chunk has its own scope and so only global variables are -! shared between command calls. All Lua default libraries are available. In -! addition, Lua "print" function has its output redirected to the Vim message -! area, with arguments separated by a white space instead of a tab. - - Lua uses the "vim" module (see |lua-vim|) to issue commands to Vim - and manage buffers (|lua-buffer|) and windows (|lua-window|). However, -*************** -*** 108,116 **** - module also includes routines for buffer, window, and current line queries, - Vim evaluation and command execution, and others. - -! vim.isbuffer(value) Returns 'true' (boolean, not string) if -! "value" is a buffer userdata and 'false' -! otherwise (see |lua-buffer|). - - vim.buffer([arg]) If "arg" is a number, returns buffer with - number "arg" in the buffer list or, if "arg" ---- 109,117 ---- - module also includes routines for buffer, window, and current line queries, - Vim evaluation and command execution, and others. - -! vim.list() Returns an empty list (see |List|). -! -! vim.dict() Returns an empty dictionary (see |Dictionary|). - - vim.buffer([arg]) If "arg" is a number, returns buffer with - number "arg" in the buffer list or, if "arg" -*************** -*** 121,136 **** - 'true' returns the first buffer in the buffer - list or else the current buffer. - -- vim.iswindow(value) Returns 'true' (boolean, not string) if -- "value" is a window userdata and -- 'false' otherwise (see |lua-window|). -- - vim.window([arg]) If "arg" is a number, returns window with - number "arg" or 'nil' (nil value, not string) - if not found. Otherwise, if "toboolean(arg)" - is 'true' returns the first window or else the - current window. - - vim.command({cmd}) Executes the vim (ex-mode) command {cmd}. - Examples: > - :lua vim.command"set tw=60" ---- 122,142 ---- - 'true' returns the first buffer in the buffer - list or else the current buffer. - - vim.window([arg]) If "arg" is a number, returns window with - number "arg" or 'nil' (nil value, not string) - if not found. Otherwise, if "toboolean(arg)" - is 'true' returns the first window or else the - current window. - -+ vim.type({arg}) Returns the type of {arg}. It is equivalent to -+ Lua's "type" function, but returns "list", -+ "dict", "buffer", or "window" if {arg} is a -+ list, dictionary, buffer, or window, -+ respectively. Examples: > -+ :lua l = vim.list() -+ :lua print(type(l), vim.type(l)) -+ :" userdata list -+ < - vim.command({cmd}) Executes the vim (ex-mode) command {cmd}. - Examples: > - :lua vim.command"set tw=60" -*************** -*** 141,147 **** - Vim strings and numbers are directly converted - to Lua strings and numbers respectively. Vim - lists and dictionaries are converted to Lua -! tables (lists become integer-keyed tables). - Examples: > - :lua tw = vim.eval"&tw" - :lua print(vim.eval"{'a': 'one'}".a) ---- 147,153 ---- - Vim strings and numbers are directly converted - to Lua strings and numbers respectively. Vim - lists and dictionaries are converted to Lua -! userdata (see |lua-list| and |lua-dict|). - Examples: > - :lua tw = vim.eval"&tw" - :lua print(vim.eval"{'a': 'one'}".a) -*************** -*** 157,163 **** - - - ============================================================================== -! 3. Buffer userdata *lua-buffer* - - Buffer userdata represent vim buffers. A buffer userdata "b" has the following - properties and methods: ---- 163,234 ---- - - - ============================================================================== -! 3. List userdata *lua-list* -! -! List userdata represent vim lists, and the interface tries to follow closely -! Vim's syntax for lists. Since lists are objects, changes in list references in -! Lua are reflected in Vim and vice-versa. A list "l" has the following -! properties and methods: -! -! Properties -! ---------- -! o "#l" is the number of items in list "l", equivalent to "len(l)" -! in Vim. -! o "l[k]" returns the k-th item in "l"; "l" is zero-indexed, as in Vim. -! To modify the k-th item, simply do "l[k] = newitem"; in -! particular, "l[k] = nil" removes the k-th item from "l". -! o "l()" returns an iterator for "l". -! -! Methods -! ------- -! o "l:add(item)" appends "item" to the end of "l". -! o "l:insert(item[, pos])" inserts "item" at (optional) -! position "pos" in the list. The default value for "pos" is 0. -! -! Examples: -! > -! :let l = [1, 'item'] -! :lua l = vim.eval('l') -- same 'l' -! :lua l:add(vim.list()) -! :lua l[0] = math.pi -! :echo l[0] " 3.141593 -! :lua l[0] = nil -- remove first item -! :lua l:insert(true, 1) -! :lua print(l, #l, l[0], l[1], l[-1]) -! :lua for item in l() do print(item) end -! < -! -! ============================================================================== -! 4. Dict userdata *lua-dict* -! -! Similarly to list userdata, dict userdata represent vim dictionaries; since -! dictionaries are also objects, references are kept between Lua and Vim. A dict -! "d" has the following properties: -! -! Properties -! ---------- -! o "#d" is the number of items in dict "d", equivalent to "len(d)" -! in Vim. -! o "d.key" or "d['key']" returns the value at entry "key" in "d". -! To modify the entry at this key, simply do "d.key = newvalue"; in -! particular, "d.key = nil" removes the entry from "d". -! o "d()" returns an iterator for "d" and is equivalent to "items(d)" in -! Vim. -! -! Examples: -! > -! :let d = {'n':10} -! :lua d = vim.eval('d') -- same 'd' -! :lua print(d, d.n, #d) -! :let d.self = d -! :lua for k, v in d() do print(d, k, v) end -! :lua d.x = math.pi -! :lua d.self = nil -- remove entry -! :echo d -! < -! -! ============================================================================== -! 5. Buffer userdata *lua-buffer* - - Buffer userdata represent vim buffers. A buffer userdata "b" has the following - properties and methods: -*************** -*** 209,215 **** - < - - ============================================================================== -! 4. Window userdata *lua-window* - - Window objects represent vim windows. A window userdata "w" has the following - properties and methods: ---- 280,286 ---- - < - - ============================================================================== -! 6. Window userdata *lua-window* - - Window objects represent vim windows. A window userdata "w" has the following - properties and methods: -*************** -*** 241,244 **** - < - - ============================================================================== -! vim:tw=78:ts=8:ft=help:norl: ---- 312,340 ---- - < - - ============================================================================== -! 7. The luaeval function *lua-luaeval* -! -! The (dual) equivalent of "vim.eval" for passing Lua values to Vim is -! "luaeval". "luaeval" takes an expression string and an optional argument and -! returns the result of the expression. It is semantically equivalent in Lua to: -! > -! local chunkheader = "local _A = select(1, ...) return " -! function luaeval (expstr, arg) -! local chunk = assert(loadstring(chunkheader .. expstr, "luaeval")) -! return chunk(arg) -- return typval -! end -! < -! Note that "_A" receives the argument to "luaeval". Examples: > -! -! :echo luaeval('math.pi') -! :lua a = vim.list():add('newlist') -! :let a = luaeval('a') -! :echo a[0] " 'newlist' -! :function Rand(x,y) " random uniform between x and y -! : return luaeval('(_A.y-_A.x)*math.random()+_A.x', {'x':a:x,'y':a:y}) -! : endfunction -! :echo Rand(1,10) -! -! -! ============================================================================== -! vim:tw=78:ts=8:noet:ft=help:norl: -*** ../vim-7.3.489/src/eval.c 2012-03-28 16:49:25.000000000 +0200 ---- src/eval.c 2012-04-05 16:41:35.000000000 +0200 -*************** -*** 622,627 **** ---- 622,630 ---- - static void f_log __ARGS((typval_T *argvars, typval_T *rettv)); - static void f_log10 __ARGS((typval_T *argvars, typval_T *rettv)); - #endif -+ #ifdef FEAT_LUA -+ static void f_luaeval __ARGS((typval_T *argvars, typval_T *rettv)); -+ #endif - static void f_map __ARGS((typval_T *argvars, typval_T *rettv)); - static void f_maparg __ARGS((typval_T *argvars, typval_T *rettv)); - static void f_mapcheck __ARGS((typval_T *argvars, typval_T *rettv)); -*************** -*** 6777,6782 **** ---- 6780,6789 ---- - /* v: vars */ - set_ref_in_ht(&vimvarht, copyID); - -+ #ifdef FEAT_LUA -+ set_ref_in_lua(copyID); -+ #endif -+ - /* - * 2. Free lists and dictionaries that are not referenced. - */ -*************** -*** 7946,7951 **** ---- 7953,7961 ---- - {"log", 1, 1, f_log}, - {"log10", 1, 1, f_log10}, - #endif -+ #ifdef FEAT_LUA -+ {"luaeval", 1, 2, f_luaeval}, -+ #endif - {"map", 2, 2, f_map}, - {"maparg", 1, 4, f_maparg}, - {"mapcheck", 1, 3, f_mapcheck}, -*************** -*** 13626,13631 **** ---- 13636,13658 ---- - } - #endif - -+ #ifdef FEAT_LUA -+ /* -+ * "luaeval()" function -+ */ -+ static void -+ f_luaeval(argvars, rettv) -+ typval_T *argvars; -+ typval_T *rettv; -+ { -+ char_u *str; -+ char_u buf[NUMBUFLEN]; -+ -+ str = get_tv_string_buf(&argvars[0], buf); -+ do_luaeval(str, argvars + 1, rettv); -+ } -+ #endif -+ - /* - * "map()" function - */ -*** ../vim-7.3.489/src/if_lua.c 2011-12-08 16:00:12.000000000 +0100 ---- src/if_lua.c 2012-04-05 16:41:35.000000000 +0200 -*************** -*** 1,4 **** -! /* vi:set ts=8 sts=4 sw=4: - * - * VIM - Vi IMproved by Bram Moolenaar - * ---- 1,4 ---- -! /* vi:set ts=8 sts=4 sw=4 noet: - * - * VIM - Vi IMproved by Bram Moolenaar - * -*************** -*** 21,35 **** ---- 21,53 ---- - - #define LUAVIM_CHUNKNAME "vim chunk" - #define LUAVIM_NAME "vim" -+ #define LUAVIM_EVALNAME "luaeval" -+ #define LUAVIM_EVALHEADER "local _A=select(1,...) return " - - typedef buf_T *luaV_Buffer; - typedef win_T *luaV_Window; -+ typedef dict_T *luaV_Dict; -+ typedef list_T *luaV_List; - typedef void (*msgfunc_T)(char_u *); - -+ static const char LUAVIM_DICT[] = "dict"; -+ static const char LUAVIM_LIST[] = "list"; - static const char LUAVIM_BUFFER[] = "buffer"; - static const char LUAVIM_WINDOW[] = "window"; - static const char LUAVIM_FREE[] = "luaV_free"; -+ static const char LUAVIM_LUAEVAL[] = "luaV_luaeval"; -+ static const char LUAVIM_SETREF[] = "luaV_setref"; - -+ /* most functions are closures with a cache table as first upvalue; -+ * get/setudata manage references to vim userdata in cache table through -+ * object pointers (light userdata) */ -+ #define luaV_getudata(L, v) \ -+ lua_pushlightuserdata((L), (void *) (v)); \ -+ lua_rawget((L), lua_upvalueindex(1)) -+ #define luaV_setudata(L, v) \ -+ lua_pushlightuserdata((L), (void *) (v)); \ -+ lua_pushvalue((L), -2); \ -+ lua_rawset((L), lua_upvalueindex(1)) - #define luaV_getfield(L, s) \ - lua_pushlightuserdata((L), (void *)(s)); \ - lua_rawget((L), LUA_REGISTRYINDEX) -*************** -*** 38,43 **** ---- 56,70 ---- - #define luaV_msg(L) luaV_msgfunc((L), (msgfunc_T) msg) - #define luaV_emsg(L) luaV_msgfunc((L), (msgfunc_T) emsg) - -+ static luaV_List *luaV_pushlist (lua_State *L, list_T *lis); -+ static luaV_Dict *luaV_pushdict (lua_State *L, dict_T *dic); -+ -+ #if LUA_VERSION_NUM <= 501 -+ #define luaV_openlib(L, l, n) luaL_openlib(L, NULL, l, n) -+ #define luaL_typeerror luaL_typerror -+ #else -+ #define luaV_openlib luaL_setfuncs -+ #endif - - #ifdef DYNAMIC_LUA - -*************** -*** 54,85 **** - #endif - - /* lauxlib */ - #define luaL_register dll_luaL_register - #define luaL_typerror dll_luaL_typerror - #define luaL_checklstring dll_luaL_checklstring - #define luaL_checkinteger dll_luaL_checkinteger - #define luaL_optinteger dll_luaL_optinteger - #define luaL_checktype dll_luaL_checktype - #define luaL_error dll_luaL_error -- #define luaL_loadfile dll_luaL_loadfile -- #define luaL_loadbuffer dll_luaL_loadbuffer - #define luaL_newstate dll_luaL_newstate - #define luaL_buffinit dll_luaL_buffinit -- #define luaL_prepbuffer dll_luaL_prepbuffer - #define luaL_addlstring dll_luaL_addlstring - #define luaL_pushresult dll_luaL_pushresult - /* lua */ - #define lua_close dll_lua_close - #define lua_gettop dll_lua_gettop - #define lua_settop dll_lua_settop - #define lua_pushvalue dll_lua_pushvalue - #define lua_replace dll_lua_replace - #define lua_isnumber dll_lua_isnumber - #define lua_isstring dll_lua_isstring - #define lua_type dll_lua_type - #define lua_rawequal dll_lua_rawequal -- #define lua_tonumber dll_lua_tonumber -- #define lua_tointeger dll_lua_tointeger - #define lua_toboolean dll_lua_toboolean - #define lua_tolstring dll_lua_tolstring - #define lua_touserdata dll_lua_touserdata ---- 81,134 ---- - #endif - - /* lauxlib */ -+ #if LUA_VERSION_NUM <= 501 - #define luaL_register dll_luaL_register -+ #define luaL_prepbuffer dll_luaL_prepbuffer -+ #define luaL_openlib dll_luaL_openlib - #define luaL_typerror dll_luaL_typerror -+ #define luaL_loadfile dll_luaL_loadfile -+ #define luaL_loadbuffer dll_luaL_loadbuffer -+ #else -+ #define luaL_prepbuffsize dll_luaL_prepbuffsize -+ #define luaL_setfuncs dll_luaL_setfuncs -+ #define luaL_loadfilex dll_luaL_loadfilex -+ #define luaL_loadbufferx dll_luaL_loadbufferx -+ #define luaL_argerror dll_luaL_argerror -+ #endif - #define luaL_checklstring dll_luaL_checklstring - #define luaL_checkinteger dll_luaL_checkinteger - #define luaL_optinteger dll_luaL_optinteger - #define luaL_checktype dll_luaL_checktype - #define luaL_error dll_luaL_error - #define luaL_newstate dll_luaL_newstate - #define luaL_buffinit dll_luaL_buffinit - #define luaL_addlstring dll_luaL_addlstring - #define luaL_pushresult dll_luaL_pushresult - /* lua */ -+ #if LUA_VERSION_NUM <= 501 -+ #define lua_tonumber dll_lua_tonumber -+ #define lua_tointeger dll_lua_tointeger -+ #define lua_call dll_lua_call -+ #define lua_pcall dll_lua_pcall -+ #else -+ #define lua_tonumberx dll_lua_tonumberx -+ #define lua_tointegerx dll_lua_tointegerx -+ #define lua_callk dll_lua_callk -+ #define lua_pcallk dll_lua_pcallk -+ #define lua_getglobal dll_lua_getglobal -+ #define lua_setglobal dll_lua_setglobal -+ #define lua_typename dll_lua_typename -+ #endif - #define lua_close dll_lua_close - #define lua_gettop dll_lua_gettop - #define lua_settop dll_lua_settop - #define lua_pushvalue dll_lua_pushvalue - #define lua_replace dll_lua_replace -+ #define lua_remove dll_lua_remove - #define lua_isnumber dll_lua_isnumber - #define lua_isstring dll_lua_isstring - #define lua_type dll_lua_type - #define lua_rawequal dll_lua_rawequal - #define lua_toboolean dll_lua_toboolean - #define lua_tolstring dll_lua_tolstring - #define lua_touserdata dll_lua_touserdata -*************** -*** 94,109 **** - #define lua_pushlightuserdata dll_lua_pushlightuserdata - #define lua_getfield dll_lua_getfield - #define lua_rawget dll_lua_rawget - #define lua_createtable dll_lua_createtable - #define lua_newuserdata dll_lua_newuserdata - #define lua_getmetatable dll_lua_getmetatable - #define lua_setfield dll_lua_setfield - #define lua_rawset dll_lua_rawset - #define lua_rawseti dll_lua_rawseti -- #define lua_remove dll_lua_remove - #define lua_setmetatable dll_lua_setmetatable -- #define lua_call dll_lua_call -- #define lua_pcall dll_lua_pcall - /* libs */ - #define luaopen_base dll_luaopen_base - #define luaopen_table dll_luaopen_table ---- 143,156 ---- - #define lua_pushlightuserdata dll_lua_pushlightuserdata - #define lua_getfield dll_lua_getfield - #define lua_rawget dll_lua_rawget -+ #define lua_rawgeti dll_lua_rawgeti - #define lua_createtable dll_lua_createtable - #define lua_newuserdata dll_lua_newuserdata - #define lua_getmetatable dll_lua_getmetatable - #define lua_setfield dll_lua_setfield - #define lua_rawset dll_lua_rawset - #define lua_rawseti dll_lua_rawseti - #define lua_setmetatable dll_lua_setmetatable - /* libs */ - #define luaopen_base dll_luaopen_base - #define luaopen_table dll_luaopen_table -*************** -*** 116,147 **** - #define luaL_openlibs dll_luaL_openlibs - - /* lauxlib */ - void (*dll_luaL_register) (lua_State *L, const char *libname, const luaL_Reg *l); - int (*dll_luaL_typerror) (lua_State *L, int narg, const char *tname); - const char *(*dll_luaL_checklstring) (lua_State *L, int numArg, size_t *l); - lua_Integer (*dll_luaL_checkinteger) (lua_State *L, int numArg); - lua_Integer (*dll_luaL_optinteger) (lua_State *L, int nArg, lua_Integer def); - void (*dll_luaL_checktype) (lua_State *L, int narg, int t); - int (*dll_luaL_error) (lua_State *L, const char *fmt, ...); -- int (*dll_luaL_loadfile) (lua_State *L, const char *filename); -- int (*dll_luaL_loadbuffer) (lua_State *L, const char *buff, size_t sz, const char *name); - lua_State *(*dll_luaL_newstate) (void); - void (*dll_luaL_buffinit) (lua_State *L, luaL_Buffer *B); -- char *(*dll_luaL_prepbuffer) (luaL_Buffer *B); - void (*dll_luaL_addlstring) (luaL_Buffer *B, const char *s, size_t l); - void (*dll_luaL_pushresult) (luaL_Buffer *B); - /* lua */ - void (*dll_lua_close) (lua_State *L); - int (*dll_lua_gettop) (lua_State *L); - void (*dll_lua_settop) (lua_State *L, int idx); - void (*dll_lua_pushvalue) (lua_State *L, int idx); - void (*dll_lua_replace) (lua_State *L, int idx); - int (*dll_lua_isnumber) (lua_State *L, int idx); - int (*dll_lua_isstring) (lua_State *L, int idx); - int (*dll_lua_type) (lua_State *L, int idx); - int (*dll_lua_rawequal) (lua_State *L, int idx1, int idx2); -- lua_Number (*dll_lua_tonumber) (lua_State *L, int idx); -- lua_Integer (*dll_lua_tointeger) (lua_State *L, int idx); - int (*dll_lua_toboolean) (lua_State *L, int idx); - const char *(*dll_lua_tolstring) (lua_State *L, int idx, size_t *len); - void *(*dll_lua_touserdata) (lua_State *L, int idx); ---- 163,218 ---- - #define luaL_openlibs dll_luaL_openlibs - - /* lauxlib */ -+ #if LUA_VERSION_NUM <= 501 - void (*dll_luaL_register) (lua_State *L, const char *libname, const luaL_Reg *l); -+ char *(*dll_luaL_prepbuffer) (luaL_Buffer *B); -+ void (*dll_luaL_openlib) (lua_State *L, const char *libname, const luaL_Reg *l, int nup); - int (*dll_luaL_typerror) (lua_State *L, int narg, const char *tname); -+ int (*dll_luaL_loadfile) (lua_State *L, const char *filename); -+ int (*dll_luaL_loadbuffer) (lua_State *L, const char *buff, size_t sz, const char *name); -+ #else -+ char *(*dll_luaL_prepbuffsize) (luaL_Buffer *B, size_t sz); -+ void (*dll_luaL_setfuncs) (lua_State *L, const luaL_Reg *l, int nup); -+ int (*dll_luaL_loadfilex) (lua_State *L, const char *filename, const char *mode); -+ int (*dll_luaL_loadbufferx) (lua_State *L, const char *buff, size_t sz, const char *name, const char *mode); -+ int (*dll_luaL_argerror) (lua_State *L, int numarg, const char *extramsg); -+ #endif - const char *(*dll_luaL_checklstring) (lua_State *L, int numArg, size_t *l); - lua_Integer (*dll_luaL_checkinteger) (lua_State *L, int numArg); - lua_Integer (*dll_luaL_optinteger) (lua_State *L, int nArg, lua_Integer def); - void (*dll_luaL_checktype) (lua_State *L, int narg, int t); - int (*dll_luaL_error) (lua_State *L, const char *fmt, ...); - lua_State *(*dll_luaL_newstate) (void); - void (*dll_luaL_buffinit) (lua_State *L, luaL_Buffer *B); - void (*dll_luaL_addlstring) (luaL_Buffer *B, const char *s, size_t l); - void (*dll_luaL_pushresult) (luaL_Buffer *B); - /* lua */ -+ #if LUA_VERSION_NUM <= 501 -+ lua_Number (*dll_lua_tonumber) (lua_State *L, int idx); -+ lua_Integer (*dll_lua_tointeger) (lua_State *L, int idx); -+ void (*dll_lua_call) (lua_State *L, int nargs, int nresults); -+ int (*dll_lua_pcall) (lua_State *L, int nargs, int nresults, int errfunc); -+ #else -+ lua_Number (*dll_lua_tonumberx) (lua_State *L, int idx, int *isnum); -+ lua_Integer (*dll_lua_tointegerx) (lua_State *L, int idx, int *isnum); -+ void (*dll_lua_callk) (lua_State *L, int nargs, int nresults, int ctx, -+ lua_CFunction k); -+ int (*dll_lua_pcallk) (lua_State *L, int nargs, int nresults, int errfunc, -+ int ctx, lua_CFunction k); -+ void (*dll_lua_getglobal) (lua_State *L, const char *var); -+ void (*dll_lua_setglobal) (lua_State *L, const char *var); -+ const char *(*dll_lua_typename) (lua_State *L, int tp); -+ #endif - void (*dll_lua_close) (lua_State *L); - int (*dll_lua_gettop) (lua_State *L); - void (*dll_lua_settop) (lua_State *L, int idx); - void (*dll_lua_pushvalue) (lua_State *L, int idx); - void (*dll_lua_replace) (lua_State *L, int idx); -+ void (*dll_lua_remove) (lua_State *L, int idx); - int (*dll_lua_isnumber) (lua_State *L, int idx); - int (*dll_lua_isstring) (lua_State *L, int idx); - int (*dll_lua_type) (lua_State *L, int idx); - int (*dll_lua_rawequal) (lua_State *L, int idx1, int idx2); - int (*dll_lua_toboolean) (lua_State *L, int idx); - const char *(*dll_lua_tolstring) (lua_State *L, int idx, size_t *len); - void *(*dll_lua_touserdata) (lua_State *L, int idx); -*************** -*** 156,171 **** - void (*dll_lua_pushlightuserdata) (lua_State *L, void *p); - void (*dll_lua_getfield) (lua_State *L, int idx, const char *k); - void (*dll_lua_rawget) (lua_State *L, int idx); - void (*dll_lua_createtable) (lua_State *L, int narr, int nrec); - void *(*dll_lua_newuserdata) (lua_State *L, size_t sz); - int (*dll_lua_getmetatable) (lua_State *L, int objindex); - void (*dll_lua_setfield) (lua_State *L, int idx, const char *k); - void (*dll_lua_rawset) (lua_State *L, int idx); - void (*dll_lua_rawseti) (lua_State *L, int idx, int n); -- void (*dll_lua_remove) (lua_State *L, int idx); - int (*dll_lua_setmetatable) (lua_State *L, int objindex); -- void (*dll_lua_call) (lua_State *L, int nargs, int nresults); -- int (*dll_lua_pcall) (lua_State *L, int nargs, int nresults, int errfunc); - /* libs */ - int (*dll_luaopen_base) (lua_State *L); - int (*dll_luaopen_table) (lua_State *L); ---- 227,240 ---- - void (*dll_lua_pushlightuserdata) (lua_State *L, void *p); - void (*dll_lua_getfield) (lua_State *L, int idx, const char *k); - void (*dll_lua_rawget) (lua_State *L, int idx); -+ void (*dll_lua_rawgeti) (lua_State *L, int idx, int n); - void (*dll_lua_createtable) (lua_State *L, int narr, int nrec); - void *(*dll_lua_newuserdata) (lua_State *L, size_t sz); - int (*dll_lua_getmetatable) (lua_State *L, int objindex); - void (*dll_lua_setfield) (lua_State *L, int idx, const char *k); - void (*dll_lua_rawset) (lua_State *L, int idx); - void (*dll_lua_rawseti) (lua_State *L, int idx, int n); - int (*dll_lua_setmetatable) (lua_State *L, int objindex); - /* libs */ - int (*dll_luaopen_base) (lua_State *L); - int (*dll_luaopen_table) (lua_State *L); -*************** -*** 185,216 **** - - static const luaV_Reg luaV_dll[] = { - /* lauxlib */ - {"luaL_register", (luaV_function) &dll_luaL_register}, - {"luaL_typerror", (luaV_function) &dll_luaL_typerror}, - {"luaL_checklstring", (luaV_function) &dll_luaL_checklstring}, - {"luaL_checkinteger", (luaV_function) &dll_luaL_checkinteger}, - {"luaL_optinteger", (luaV_function) &dll_luaL_optinteger}, - {"luaL_checktype", (luaV_function) &dll_luaL_checktype}, - {"luaL_error", (luaV_function) &dll_luaL_error}, -- {"luaL_loadfile", (luaV_function) &dll_luaL_loadfile}, -- {"luaL_loadbuffer", (luaV_function) &dll_luaL_loadbuffer}, - {"luaL_newstate", (luaV_function) &dll_luaL_newstate}, - {"luaL_buffinit", (luaV_function) &dll_luaL_buffinit}, -- {"luaL_prepbuffer", (luaV_function) &dll_luaL_prepbuffer}, - {"luaL_addlstring", (luaV_function) &dll_luaL_addlstring}, - {"luaL_pushresult", (luaV_function) &dll_luaL_pushresult}, - /* lua */ - {"lua_close", (luaV_function) &dll_lua_close}, - {"lua_gettop", (luaV_function) &dll_lua_gettop}, - {"lua_settop", (luaV_function) &dll_lua_settop}, - {"lua_pushvalue", (luaV_function) &dll_lua_pushvalue}, - {"lua_replace", (luaV_function) &dll_lua_replace}, - {"lua_isnumber", (luaV_function) &dll_lua_isnumber}, - {"lua_isstring", (luaV_function) &dll_lua_isstring}, - {"lua_type", (luaV_function) &dll_lua_type}, - {"lua_rawequal", (luaV_function) &dll_lua_rawequal}, -- {"lua_tonumber", (luaV_function) &dll_lua_tonumber}, -- {"lua_tointeger", (luaV_function) &dll_lua_tointeger}, - {"lua_toboolean", (luaV_function) &dll_lua_toboolean}, - {"lua_tolstring", (luaV_function) &dll_lua_tolstring}, - {"lua_touserdata", (luaV_function) &dll_lua_touserdata}, ---- 254,307 ---- - - static const luaV_Reg luaV_dll[] = { - /* lauxlib */ -+ #if LUA_VERSION_NUM <= 501 - {"luaL_register", (luaV_function) &dll_luaL_register}, -+ {"luaL_prepbuffer", (luaV_function) &dll_luaL_prepbuffer}, -+ {"luaL_openlib", (luaV_function) &dll_luaL_openlib}, - {"luaL_typerror", (luaV_function) &dll_luaL_typerror}, -+ {"luaL_loadfile", (luaV_function) &dll_luaL_loadfile}, -+ {"luaL_loadbuffer", (luaV_function) &dll_luaL_loadbuffer}, -+ #else -+ {"luaL_prepbuffsize", (luaV_function) &dll_luaL_prepbuffsize}, -+ {"luaL_setfuncs", (luaV_function) &dll_luaL_setfuncs}, -+ {"luaL_loadfilex", (luaV_function) &dll_luaL_loadfilex}, -+ {"luaL_loadbufferx", (luaV_function) &dll_luaL_loadbufferx}, -+ {"luaL_argerror", (luaV_function) &dll_luaL_argerror}, -+ #endif - {"luaL_checklstring", (luaV_function) &dll_luaL_checklstring}, - {"luaL_checkinteger", (luaV_function) &dll_luaL_checkinteger}, - {"luaL_optinteger", (luaV_function) &dll_luaL_optinteger}, - {"luaL_checktype", (luaV_function) &dll_luaL_checktype}, - {"luaL_error", (luaV_function) &dll_luaL_error}, - {"luaL_newstate", (luaV_function) &dll_luaL_newstate}, - {"luaL_buffinit", (luaV_function) &dll_luaL_buffinit}, - {"luaL_addlstring", (luaV_function) &dll_luaL_addlstring}, - {"luaL_pushresult", (luaV_function) &dll_luaL_pushresult}, - /* lua */ -+ #if LUA_VERSION_NUM <= 501 -+ {"lua_tonumber", (luaV_function) &dll_lua_tonumber}, -+ {"lua_tointeger", (luaV_function) &dll_lua_tointeger}, -+ {"lua_call", (luaV_function) &dll_lua_call}, -+ {"lua_pcall", (luaV_function) &dll_lua_pcall}, -+ #else -+ {"lua_tonumberx", (luaV_function) &dll_lua_tonumberx}, -+ {"lua_tointegerx", (luaV_function) &dll_lua_tointegerx}, -+ {"lua_callk", (luaV_function) &dll_lua_callk}, -+ {"lua_pcallk", (luaV_function) &dll_lua_pcallk}, -+ {"lua_getglobal", (luaV_function) &dll_lua_getglobal}, -+ {"lua_setglobal", (luaV_function) &dll_lua_setglobal}, -+ {"lua_typename", (luaV_function) &dll_lua_typename}, -+ #endif - {"lua_close", (luaV_function) &dll_lua_close}, - {"lua_gettop", (luaV_function) &dll_lua_gettop}, - {"lua_settop", (luaV_function) &dll_lua_settop}, - {"lua_pushvalue", (luaV_function) &dll_lua_pushvalue}, - {"lua_replace", (luaV_function) &dll_lua_replace}, -+ {"lua_remove", (luaV_function) &dll_lua_remove}, - {"lua_isnumber", (luaV_function) &dll_lua_isnumber}, - {"lua_isstring", (luaV_function) &dll_lua_isstring}, - {"lua_type", (luaV_function) &dll_lua_type}, - {"lua_rawequal", (luaV_function) &dll_lua_rawequal}, - {"lua_toboolean", (luaV_function) &dll_lua_toboolean}, - {"lua_tolstring", (luaV_function) &dll_lua_tolstring}, - {"lua_touserdata", (luaV_function) &dll_lua_touserdata}, -*************** -*** 225,240 **** - {"lua_pushlightuserdata", (luaV_function) &dll_lua_pushlightuserdata}, - {"lua_getfield", (luaV_function) &dll_lua_getfield}, - {"lua_rawget", (luaV_function) &dll_lua_rawget}, - {"lua_createtable", (luaV_function) &dll_lua_createtable}, - {"lua_newuserdata", (luaV_function) &dll_lua_newuserdata}, - {"lua_getmetatable", (luaV_function) &dll_lua_getmetatable}, - {"lua_setfield", (luaV_function) &dll_lua_setfield}, - {"lua_rawset", (luaV_function) &dll_lua_rawset}, - {"lua_rawseti", (luaV_function) &dll_lua_rawseti}, -- {"lua_remove", (luaV_function) &dll_lua_remove}, - {"lua_setmetatable", (luaV_function) &dll_lua_setmetatable}, -- {"lua_call", (luaV_function) &dll_lua_call}, -- {"lua_pcall", (luaV_function) &dll_lua_pcall}, - /* libs */ - {"luaopen_base", (luaV_function) &dll_luaopen_base}, - {"luaopen_table", (luaV_function) &dll_luaopen_table}, ---- 316,329 ---- - {"lua_pushlightuserdata", (luaV_function) &dll_lua_pushlightuserdata}, - {"lua_getfield", (luaV_function) &dll_lua_getfield}, - {"lua_rawget", (luaV_function) &dll_lua_rawget}, -+ {"lua_rawgeti", (luaV_function) &dll_lua_rawgeti}, - {"lua_createtable", (luaV_function) &dll_lua_createtable}, - {"lua_newuserdata", (luaV_function) &dll_lua_newuserdata}, - {"lua_getmetatable", (luaV_function) &dll_lua_getmetatable}, - {"lua_setfield", (luaV_function) &dll_lua_setfield}, - {"lua_rawset", (luaV_function) &dll_lua_rawset}, - {"lua_rawseti", (luaV_function) &dll_lua_rawseti}, - {"lua_setmetatable", (luaV_function) &dll_lua_setmetatable}, - /* libs */ - {"luaopen_base", (luaV_function) &dll_luaopen_base}, - {"luaopen_table", (luaV_function) &dll_luaopen_table}, -*************** -*** 294,299 **** ---- 383,398 ---- - - #endif /* DYNAMIC_LUA */ - -+ #if LUA_VERSION_NUM > 501 -+ static int -+ luaL_typeerror (lua_State *L, int narg, const char *tname) -+ { -+ const char *msg = lua_pushfstring(L, "%s expected, got %s", -+ tname, luaL_typename(L, narg)); -+ return luaL_argerror(L, narg, msg); -+ } -+ #endif -+ - - /* ======= Internal ======= */ - -*************** -*** 327,343 **** - } - - static void * - luaV_checkudata(lua_State *L, int ud, const char *tname) - { - void *p = luaV_toudata(L, ud, tname); -! if (p == NULL) luaL_typerror(L, ud, tname); - return p; - } - - static void - luaV_pushtypval(lua_State *L, typval_T *tv) - { -! if (tv == NULL) luaL_error(L, "null type"); - switch (tv->v_type) - { - case VAR_STRING: ---- 426,460 ---- - } - - static void * -+ luaV_checkcache(lua_State *L, void *p) -+ { -+ luaV_getudata(L, p); -+ if (lua_isnil(L, -1)) luaL_error(L, "invalid object"); -+ lua_pop(L, 1); -+ return p; -+ } -+ -+ #define luaV_unbox(L,luatyp,ud) (*((luatyp *) lua_touserdata((L),(ud)))) -+ -+ #define luaV_checkvalid(L,luatyp,ud) \ -+ luaV_checkcache((L), (void *) luaV_unbox((L),luatyp,(ud))) -+ -+ static void * - luaV_checkudata(lua_State *L, int ud, const char *tname) - { - void *p = luaV_toudata(L, ud, tname); -! if (p == NULL) luaL_typeerror(L, ud, tname); - return p; - } - - static void - luaV_pushtypval(lua_State *L, typval_T *tv) - { -! if (tv == NULL) -! { -! lua_pushnil(L); -! return; -! } - switch (tv->v_type) - { - case VAR_STRING: -*************** -*** 351,418 **** - lua_pushnumber(L, (lua_Number) tv->vval.v_float); - break; - #endif -! case VAR_LIST: { -! list_T *l = tv->vval.v_list; - -! if (l != NULL) - { -! /* check cache */ -! lua_pushlightuserdata(L, (void *) l); -! lua_rawget(L, LUA_ENVIRONINDEX); -! if (lua_isnil(L, -1)) /* not interned? */ - { -! listitem_T *li; -! int n = 0; -! lua_pop(L, 1); /* nil */ -! lua_newtable(L); -! lua_pushlightuserdata(L, (void *) l); -! lua_pushvalue(L, -2); -! lua_rawset(L, LUA_ENVIRONINDEX); -! for (li = l->lv_first; li != NULL; li = li->li_next) -! { -! luaV_pushtypval(L, &li->li_tv); -! lua_rawseti(L, -2, ++n); -! } - } -! } -! else lua_pushnil(L); -! break; -! } -! case VAR_DICT: { -! dict_T *d = tv->vval.v_dict; -! -! if (d != NULL) -! { -! /* check cache */ -! lua_pushlightuserdata(L, (void *) d); -! lua_rawget(L, LUA_ENVIRONINDEX); -! if (lua_isnil(L, -1)) /* not interned? */ - { -! hashtab_T *ht = &d->dv_hashtab; -! hashitem_T *hi; -! int n = ht->ht_used; /* remaining items */ -! lua_pop(L, 1); /* nil */ -! lua_newtable(L); -! lua_pushlightuserdata(L, (void *) d); -! lua_pushvalue(L, -2); -! lua_rawset(L, LUA_ENVIRONINDEX); -! for (hi = ht->ht_array; n > 0; hi++) -! { -! if (!HASHITEM_EMPTY(hi)) -! { -! dictitem_T *di = dict_lookup(hi); -! luaV_pushtypval(L, &di->di_tv); -! lua_setfield(L, -2, (char *) hi->hi_key); -! n--; -! } -! } - } - } -- else lua_pushnil(L); - break; - } - default: -! luaL_error(L, "invalid type"); - } - } - ---- 468,537 ---- - lua_pushnumber(L, (lua_Number) tv->vval.v_float); - break; - #endif -! case VAR_LIST: -! luaV_pushlist(L, tv->vval.v_list); -! break; -! case VAR_DICT: -! luaV_pushdict(L, tv->vval.v_dict); -! break; -! default: -! lua_pushnil(L); -! } -! } - -! /* converts lua value at 'pos' to typval 'tv' */ -! static void -! luaV_totypval (lua_State *L, int pos, typval_T *tv) -! { -! switch(lua_type(L, pos)) { -! case LUA_TBOOLEAN: -! tv->v_type = VAR_NUMBER; -! tv->vval.v_number = (varnumber_T) lua_toboolean(L, pos); -! break; -! case LUA_TSTRING: -! tv->v_type = VAR_STRING; -! tv->vval.v_string = vim_strsave((char_u *) lua_tostring(L, pos)); -! break; -! case LUA_TNUMBER: -! #ifdef FEAT_FLOAT -! tv->v_type = VAR_FLOAT; -! tv->vval.v_float = (float_T) lua_tonumber(L, pos); -! #else -! tv->v_type = VAR_NUMBER; -! tv->vval.v_number = (varnumber_T) lua_tointeger(L, pos); -! #endif -! break; -! case LUA_TUSERDATA: { -! void *p = lua_touserdata(L, pos); -! if (lua_getmetatable(L, pos)) /* has metatable? */ - { -! /* check list */ -! luaV_getfield(L, LUAVIM_LIST); -! if (lua_rawequal(L, -1, -2)) - { -! tv->v_type = VAR_LIST; -! tv->vval.v_list = *((luaV_List *) p); -! ++tv->vval.v_list->lv_refcount; -! lua_pop(L, 2); /* MTs */ -! return; - } -! /* check dict */ -! luaV_getfield(L, LUAVIM_DICT); -! if (lua_rawequal(L, -1, -3)) - { -! tv->v_type = VAR_DICT; -! tv->vval.v_dict = *((luaV_Dict *) p); -! ++tv->vval.v_dict->dv_refcount; -! lua_pop(L, 3); /* MTs */ -! return; - } -+ lua_pop(L, 3); /* MTs */ - } - break; - } - default: -! tv->v_type = VAR_NUMBER; -! tv->vval.v_number = 0; - } - } - -*************** -*** 481,569 **** - lua_pop(L, 2); /* original and modified strings */ - } - - -! /* ======= Buffer type ======= */ - -! static luaV_Buffer * -! luaV_newbuffer(lua_State *L, buf_T *buf) - { -! luaV_Buffer *b = (luaV_Buffer *) lua_newuserdata(L, sizeof(luaV_Buffer)); -! *b = buf; -! lua_pushlightuserdata(L, (void *) buf); -! lua_pushvalue(L, -2); -! lua_rawset(L, LUA_ENVIRONINDEX); /* env[buf] = udata */ -! /* to avoid GC, store as key in env */ -! lua_pushvalue(L, -1); -! lua_pushboolean(L, 1); -! lua_rawset(L, LUA_ENVIRONINDEX); /* env[udata] = true */ -! /* set metatable */ -! luaV_getfield(L, LUAVIM_BUFFER); - lua_setmetatable(L, -2); -! return b; - } - -! static luaV_Buffer * -! luaV_pushbuffer (lua_State *L, buf_T *buf) - { -! luaV_Buffer *b = NULL; -! if (buf == NULL) -! lua_pushnil(L); -! else { -! lua_pushlightuserdata(L, (void *) buf); -! lua_rawget(L, LUA_ENVIRONINDEX); -! if (lua_isnil(L, -1)) /* not interned? */ - { -! lua_pop(L, 1); -! b = luaV_newbuffer(L, buf); - } - else -! b = (luaV_Buffer *) lua_touserdata(L, -1); - } -! return b; - } - -! /* Buffer metamethods */ - - static int -! luaV_buffer_tostring(lua_State *L) - { -! lua_pushfstring(L, "%s: %p", LUAVIM_BUFFER, lua_touserdata(L, 1)); - return 1; - } - - static int - luaV_buffer_len(lua_State *L) - { -! luaV_Buffer *b = lua_touserdata(L, 1); -! lua_pushinteger(L, (*b)->b_ml.ml_line_count); - return 1; - } - - static int - luaV_buffer_call(lua_State *L) - { -! luaV_Buffer *b = (luaV_Buffer *) lua_touserdata(L, 1); - lua_settop(L, 1); -! set_curbuf(*b, DOBUF_SPLIT); - return 1; - } - - static int - luaV_buffer_index(lua_State *L) - { -! luaV_Buffer *b = (luaV_Buffer *) lua_touserdata(L, 1); - linenr_T n = (linenr_T) lua_tointeger(L, 2); -! if (n > 0 && n <= (*b)->b_ml.ml_line_count) -! luaV_pushline(L, *b, n); - else if (lua_isstring(L, 2)) - { - const char *s = lua_tostring(L, 2); - if (strncmp(s, "name", 4) == 0) -! lua_pushstring(L, (char *) (*b)->b_sfname); - else if (strncmp(s, "fname", 5) == 0) -! lua_pushstring(L, (char *) (*b)->b_ffname); - else if (strncmp(s, "number", 6) == 0) -! lua_pushinteger(L, (*b)->b_fnum); - /* methods */ - else if (strncmp(s, "insert", 6) == 0 - || strncmp(s, "next", 4) == 0 ---- 600,1107 ---- - lua_pop(L, 2); /* original and modified strings */ - } - -+ #define luaV_newtype(typ,tname,luatyp,luatname) \ -+ static luatyp * \ -+ luaV_new##tname (lua_State *L, typ *obj) \ -+ { \ -+ luatyp *o = (luatyp *) lua_newuserdata(L, sizeof(luatyp)); \ -+ *o = obj; \ -+ luaV_setudata(L, obj); /* cache[obj] = udata */ \ -+ luaV_getfield(L, luatname); \ -+ lua_setmetatable(L, -2); \ -+ return o; \ -+ } -+ -+ #define luaV_pushtype(typ,tname,luatyp) \ -+ static luatyp * \ -+ luaV_push##tname (lua_State *L, typ *obj) \ -+ { \ -+ luatyp *o = NULL; \ -+ if (obj == NULL) \ -+ lua_pushnil(L); \ -+ else { \ -+ luaV_getudata(L, obj); \ -+ if (lua_isnil(L, -1)) /* not interned? */ \ -+ { \ -+ lua_pop(L, 1); \ -+ o = luaV_new##tname(L, obj); \ -+ } \ -+ else \ -+ o = (luatyp *) lua_touserdata(L, -1); \ -+ } \ -+ return o; \ -+ } -+ -+ #define luaV_type_tostring(tname,luatname) \ -+ static int \ -+ luaV_##tname##_tostring (lua_State *L) \ -+ { \ -+ lua_pushfstring(L, "%s: %p", luatname, lua_touserdata(L, 1)); \ -+ return 1; \ -+ } -+ - -! /* adapted from eval.c */ -! -! #define listitem_alloc() (listitem_T *)alloc(sizeof(listitem_T)) -! -! static listitem_T * -! list_find (list_T *l, long n) -! { -! listitem_T *li; -! if (l == NULL || n < -l->lv_len || n >= l->lv_len) -! return NULL; -! if (n < 0) /* search backward? */ -! for (li = l->lv_last; n < -1; li = li->li_prev) -! n++; -! else /* search forward */ -! for (li = l->lv_first; n > 0; li = li->li_next) -! n--; -! return li; -! } - -! static void -! list_remove (list_T *l, listitem_T *li) - { -! listwatch_T *lw; -! --l->lv_len; -! /* fix watchers */ -! for (lw = l->lv_watch; lw != NULL; lw = lw->lw_next) -! if (lw->lw_item == li) -! lw->lw_item = li->li_next; -! /* fix list pointers */ -! if (li->li_next == NULL) /* last? */ -! l->lv_last = li->li_prev; -! else -! li->li_next->li_prev = li->li_prev; -! if (li->li_prev == NULL) /* first? */ -! l->lv_first = li->li_next; -! else -! li->li_prev->li_next = li->li_next; -! l->lv_idx_item = NULL; -! } -! -! static void -! list_append(list_T *l, listitem_T *item) -! { -! if (l->lv_last == NULL) /* empty list? */ -! l->lv_first = item; -! else -! l->lv_last->li_next = item; -! item->li_prev = l->lv_last; -! item->li_next = NULL; -! l->lv_last = item; -! ++l->lv_len; -! } -! -! static int -! list_insert_tv(list_T *l, typval_T *tv, listitem_T *item) -! { -! listitem_T *ni = listitem_alloc(); -! -! if (ni == NULL) -! return FAIL; -! copy_tv(tv, &ni->li_tv); -! if (item == NULL) -! list_append(l, ni); -! else -! { -! ni->li_prev = item->li_prev; -! ni->li_next = item; -! if (item->li_prev == NULL) -! { -! l->lv_first = ni; -! ++l->lv_idx; -! } -! else -! { -! item->li_prev->li_next = ni; -! l->lv_idx_item = NULL; -! } -! item->li_prev = ni; -! ++l->lv_len; -! } -! return OK; -! } -! -! /* set references */ -! -! static void set_ref_in_tv (typval_T *tv, int copyID); -! -! static void -! set_ref_in_dict(dict_T *d, int copyID) -! { -! hashtab_T *ht = &d->dv_hashtab; -! int n = ht->ht_used; -! hashitem_T *hi; -! for (hi = ht->ht_array; n > 0; ++hi) -! if (!HASHITEM_EMPTY(hi)) -! { -! dictitem_T *di = dict_lookup(hi); -! set_ref_in_tv(&di->di_tv, copyID); -! --n; -! } -! } -! -! static void -! set_ref_in_list(list_T *l, int copyID) -! { -! listitem_T *li; -! for (li = l->lv_first; li != NULL; li = li->li_next) -! set_ref_in_tv(&li->li_tv, copyID); -! } -! -! static void -! set_ref_in_tv(typval_T *tv, int copyID) -! { -! if (tv->v_type == VAR_LIST) -! { -! list_T *l = tv->vval.v_list; -! if (l != NULL && l->lv_copyID != copyID) -! { -! l->lv_copyID = copyID; -! set_ref_in_list(l, copyID); -! } -! } -! else if (tv->v_type == VAR_DICT) -! { -! dict_T *d = tv->vval.v_dict; -! if (d != NULL && d->dv_copyID != copyID) -! { -! d->dv_copyID = copyID; -! set_ref_in_dict(d, copyID); -! } -! } -! } -! -! -! /* ======= List type ======= */ -! -! static luaV_List * -! luaV_newlist (lua_State *L, list_T *lis) -! { -! luaV_List *l = (luaV_List *) lua_newuserdata(L, sizeof(luaV_List)); -! *l = lis; -! lis->lv_refcount++; /* reference in Lua */ -! luaV_setudata(L, lis); /* cache[lis] = udata */ -! luaV_getfield(L, LUAVIM_LIST); - lua_setmetatable(L, -2); -! return l; - } - -! luaV_pushtype(list_T, list, luaV_List) -! luaV_type_tostring(list, LUAVIM_LIST) -! -! static int -! luaV_list_gc (lua_State *L) - { -! list_unref(luaV_unbox(L, luaV_List, 1)); -! return 0; -! } -! -! static int -! luaV_list_len (lua_State *L) -! { -! list_T *l = luaV_unbox(L, luaV_List, 1); -! lua_pushinteger(L, (l == NULL) ? 0 : (int) l->lv_len); -! return 1; -! } -! -! static int -! luaV_list_iter (lua_State *L) -! { -! listitem_T *li = (listitem_T *) lua_touserdata(L, lua_upvalueindex(2)); -! if (li == NULL) return 0; -! luaV_pushtypval(L, &li->li_tv); -! lua_pushlightuserdata(L, (void *) li->li_next); -! lua_replace(L, lua_upvalueindex(2)); -! return 1; -! } -! -! static int -! luaV_list_call (lua_State *L) -! { -! list_T *l = luaV_unbox(L, luaV_List, 1); -! lua_pushvalue(L, lua_upvalueindex(1)); /* pass cache table along */ -! lua_pushlightuserdata(L, (void *) l->lv_first); -! lua_pushcclosure(L, luaV_list_iter, 2); -! return 1; -! } -! -! static int -! luaV_list_index (lua_State *L) -! { -! list_T *l = luaV_unbox(L, luaV_List, 1); -! if (lua_isnumber(L, 2)) /* list item? */ -! { -! listitem_T *li = list_find(l, (long) luaL_checkinteger(L, 2)); -! if (li == NULL) -! lua_pushnil(L); -! else -! luaV_pushtypval(L, &li->li_tv); -! } -! else if (lua_isstring(L, 2)) /* method? */ -! { -! const char *s = lua_tostring(L, 2); -! if (strncmp(s, "add", 3) == 0 -! || strncmp(s, "insert", 6) == 0 -! || strncmp(s, "extend", 6) == 0) - { -! lua_getmetatable(L, 1); -! lua_getfield(L, -1, s); - } - else -! lua_pushnil(L); - } -! else -! lua_pushnil(L); -! return 1; - } - -! static int -! luaV_list_newindex (lua_State *L) -! { -! list_T *l = luaV_unbox(L, luaV_List, 1); -! long n = (long) luaL_checkinteger(L, 2); -! listitem_T *li; -! if (l->lv_lock) -! luaL_error(L, "list is locked"); -! li = list_find(l, n); -! if (li == NULL) return 0; -! if (lua_isnil(L, 3)) /* remove? */ -! { -! list_remove(l, li); -! clear_tv(&li->li_tv); -! vim_free(li); -! } -! else -! { -! typval_T v; -! luaV_totypval(L, 3, &v); -! clear_tv(&li->li_tv); -! copy_tv(&v, &li->li_tv); -! } -! return 0; -! } - - static int -! luaV_list_add (lua_State *L) - { -! luaV_List *lis = luaV_checkudata(L, 1, LUAVIM_LIST); -! list_T *l = (list_T *) luaV_checkcache(L, (void *) *lis); -! listitem_T *li; -! if (l->lv_lock) -! luaL_error(L, "list is locked"); -! li = listitem_alloc(); -! if (li != NULL) -! { -! typval_T v; -! lua_settop(L, 2); -! luaV_totypval(L, 2, &v); -! copy_tv(&v, &li->li_tv); -! list_append(l, li); -! } -! lua_settop(L, 1); - return 1; - } - - static int -+ luaV_list_insert (lua_State *L) -+ { -+ luaV_List *lis = luaV_checkudata(L, 1, LUAVIM_LIST); -+ list_T *l = (list_T *) luaV_checkcache(L, (void *) *lis); -+ long pos = luaL_optlong(L, 3, 0); -+ listitem_T *li = NULL; -+ typval_T v; -+ if (l->lv_lock) -+ luaL_error(L, "list is locked"); -+ if (pos < l->lv_len) -+ { -+ li = list_find(l, pos); -+ if (li == NULL) -+ luaL_error(L, "invalid position"); -+ } -+ lua_settop(L, 2); -+ luaV_totypval(L, 2, &v); -+ list_insert_tv(l, &v, li); -+ lua_settop(L, 1); -+ return 1; -+ } -+ -+ static const luaL_Reg luaV_List_mt[] = { -+ {"__tostring", luaV_list_tostring}, -+ {"__gc", luaV_list_gc}, -+ {"__len", luaV_list_len}, -+ {"__call", luaV_list_call}, -+ {"__index", luaV_list_index}, -+ {"__newindex", luaV_list_newindex}, -+ {"add", luaV_list_add}, -+ {"insert", luaV_list_insert}, -+ {NULL, NULL} -+ }; -+ -+ -+ /* ======= Dict type ======= */ -+ -+ static luaV_Dict * -+ luaV_newdict (lua_State *L, dict_T *dic) -+ { -+ luaV_Dict *d = (luaV_Dict *) lua_newuserdata(L, sizeof(luaV_Dict)); -+ *d = dic; -+ dic->dv_refcount++; /* reference in Lua */ -+ luaV_setudata(L, dic); /* cache[dic] = udata */ -+ luaV_getfield(L, LUAVIM_DICT); -+ lua_setmetatable(L, -2); -+ return d; -+ } -+ -+ luaV_pushtype(dict_T, dict, luaV_Dict) -+ luaV_type_tostring(dict, LUAVIM_DICT) -+ -+ static int -+ luaV_dict_gc (lua_State *L) -+ { -+ dict_unref(luaV_unbox(L, luaV_Dict, 1)); -+ return 0; -+ } -+ -+ static int -+ luaV_dict_len (lua_State *L) -+ { -+ dict_T *d = luaV_unbox(L, luaV_Dict, 1); -+ lua_pushinteger(L, (d == NULL) ? 0 : (int) d->dv_hashtab.ht_used); -+ return 1; -+ } -+ -+ static int -+ luaV_dict_iter (lua_State *L) -+ { -+ hashitem_T *hi = (hashitem_T *) lua_touserdata(L, lua_upvalueindex(2)); -+ int n = lua_tointeger(L, lua_upvalueindex(3)); -+ dictitem_T *di; -+ if (n <= 0) return 0; -+ while (HASHITEM_EMPTY(hi)) hi++; -+ di = dict_lookup(hi); -+ lua_pushstring(L, (char *) hi->hi_key); -+ luaV_pushtypval(L, &di->di_tv); -+ lua_pushlightuserdata(L, (void *) (hi + 1)); -+ lua_replace(L, lua_upvalueindex(2)); -+ lua_pushinteger(L, n - 1); -+ lua_replace(L, lua_upvalueindex(3)); -+ return 2; -+ } -+ -+ static int -+ luaV_dict_call (lua_State *L) -+ { -+ dict_T *d = luaV_unbox(L, luaV_Dict, 1); -+ hashtab_T *ht = &d->dv_hashtab; -+ lua_pushvalue(L, lua_upvalueindex(1)); /* pass cache table along */ -+ lua_pushlightuserdata(L, (void *) ht->ht_array); -+ lua_pushinteger(L, ht->ht_used); /* # remaining items */ -+ lua_pushcclosure(L, luaV_dict_iter, 3); -+ return 1; -+ } -+ -+ static int -+ luaV_dict_index (lua_State *L) -+ { -+ dict_T *d = luaV_unbox(L, luaV_Dict, 1); -+ char_u *key = (char_u *) luaL_checkstring(L, 2); -+ dictitem_T *di = dict_find(d, key, -1); -+ if (di == NULL) -+ lua_pushnil(L); -+ else -+ luaV_pushtypval(L, &di->di_tv); -+ return 1; -+ } -+ -+ static int -+ luaV_dict_newindex (lua_State *L) -+ { -+ dict_T *d = luaV_unbox(L, luaV_Dict, 1); -+ char_u *key = (char_u *) luaL_checkstring(L, 2); -+ dictitem_T *di; -+ if (d->dv_lock) -+ luaL_error(L, "dict is locked"); -+ di = dict_find(d, key, -1); -+ if (di == NULL) /* non-existing key? */ -+ { -+ if (lua_isnil(L, 3)) return 0; -+ di = dictitem_alloc(key); -+ if (di == NULL) return 0; -+ if (dict_add(d, di) == FAIL) -+ { -+ vim_free(di); -+ return 0; -+ } -+ } -+ else -+ clear_tv(&di->di_tv); -+ if (lua_isnil(L, 3)) /* remove? */ -+ { -+ hashitem_T *hi = hash_find(&d->dv_hashtab, di->di_key); -+ hash_remove(&d->dv_hashtab, hi); -+ dictitem_free(di); -+ } -+ else { -+ typval_T v; -+ luaV_totypval(L, 3, &v); -+ copy_tv(&v, &di->di_tv); -+ } -+ return 0; -+ } -+ -+ static const luaL_Reg luaV_Dict_mt[] = { -+ {"__tostring", luaV_dict_tostring}, -+ {"__gc", luaV_dict_gc}, -+ {"__len", luaV_dict_len}, -+ {"__call", luaV_dict_call}, -+ {"__index", luaV_dict_index}, -+ {"__newindex", luaV_dict_newindex}, -+ {NULL, NULL} -+ }; -+ -+ -+ /* ======= Buffer type ======= */ -+ -+ luaV_newtype(buf_T, buffer, luaV_Buffer, LUAVIM_BUFFER) -+ luaV_pushtype(buf_T, buffer, luaV_Buffer) -+ luaV_type_tostring(buffer, LUAVIM_BUFFER) -+ -+ static int - luaV_buffer_len(lua_State *L) - { -! buf_T *b = (buf_T *) luaV_checkvalid(L, luaV_Buffer, 1); -! lua_pushinteger(L, b->b_ml.ml_line_count); - return 1; - } - - static int - luaV_buffer_call(lua_State *L) - { -! buf_T *b = (buf_T *) luaV_checkvalid(L, luaV_Buffer, 1); - lua_settop(L, 1); -! set_curbuf(b, DOBUF_SPLIT); - return 1; - } - - static int - luaV_buffer_index(lua_State *L) - { -! buf_T *b = (buf_T *) luaV_checkvalid(L, luaV_Buffer, 1); - linenr_T n = (linenr_T) lua_tointeger(L, 2); -! if (n > 0 && n <= b->b_ml.ml_line_count) -! luaV_pushline(L, b, n); - else if (lua_isstring(L, 2)) - { - const char *s = lua_tostring(L, 2); - if (strncmp(s, "name", 4) == 0) -! lua_pushstring(L, (char *) b->b_sfname); - else if (strncmp(s, "fname", 5) == 0) -! lua_pushstring(L, (char *) b->b_ffname); - else if (strncmp(s, "number", 6) == 0) -! lua_pushinteger(L, b->b_fnum); - /* methods */ - else if (strncmp(s, "insert", 6) == 0 - || strncmp(s, "next", 4) == 0 -*************** -*** 584,600 **** - static int - luaV_buffer_newindex(lua_State *L) - { -! luaV_Buffer *b = (luaV_Buffer *) lua_touserdata(L, 1); - linenr_T n = (linenr_T) luaL_checkinteger(L, 2); - #ifdef HAVE_SANDBOX - luaV_checksandbox(L); - #endif -! if (n < 1 || n > (*b)->b_ml.ml_line_count) - luaL_error(L, "invalid line number"); - if (lua_isnil(L, 3)) /* delete line */ - { - buf_T *buf = curbuf; -! curbuf = *b; - if (u_savedel(n, 1L) == FAIL) - { - curbuf = buf; ---- 1122,1138 ---- - static int - luaV_buffer_newindex(lua_State *L) - { -! buf_T *b = (buf_T *) luaV_checkvalid(L, luaV_Buffer, 1); - linenr_T n = (linenr_T) luaL_checkinteger(L, 2); - #ifdef HAVE_SANDBOX - luaV_checksandbox(L); - #endif -! if (n < 1 || n > b->b_ml.ml_line_count) - luaL_error(L, "invalid line number"); - if (lua_isnil(L, 3)) /* delete line */ - { - buf_T *buf = curbuf; -! curbuf = b; - if (u_savedel(n, 1L) == FAIL) - { - curbuf = buf; -*************** -*** 607,613 **** - } - else { - deleted_lines_mark(n, 1L); -! if (*b == curwin->w_buffer) /* fix cursor in current window? */ - { - if (curwin->w_cursor.lnum >= n) - { ---- 1145,1151 ---- - } - else { - deleted_lines_mark(n, 1L); -! if (b == curwin->w_buffer) /* fix cursor in current window? */ - { - if (curwin->w_cursor.lnum >= n) - { -*************** -*** 627,633 **** - else if (lua_isstring(L, 3)) /* update line */ - { - buf_T *buf = curbuf; -! curbuf = *b; - if (u_savesub(n) == FAIL) - { - curbuf = buf; ---- 1165,1171 ---- - else if (lua_isstring(L, 3)) /* update line */ - { - buf_T *buf = curbuf; -! curbuf = b; - if (u_savesub(n) == FAIL) - { - curbuf = buf; -*************** -*** 640,646 **** - } - else changed_bytes(n, 0); - curbuf = buf; -! if (*b == curwin->w_buffer) - check_cursor_col(); - } - else ---- 1178,1184 ---- - } - else changed_bytes(n, 0); - curbuf = buf; -! if (b == curwin->w_buffer) - check_cursor_col(); - } - else -*************** -*** 651,658 **** - static int - luaV_buffer_insert(lua_State *L) - { -! luaV_Buffer *b = luaV_checkudata(L, 1, LUAVIM_BUFFER); -! linenr_T last = (*b)->b_ml.ml_line_count; - linenr_T n = (linenr_T) luaL_optinteger(L, 3, last); - buf_T *buf; - luaL_checktype(L, 2, LUA_TSTRING); ---- 1189,1197 ---- - static int - luaV_buffer_insert(lua_State *L) - { -! luaV_Buffer *lb = luaV_checkudata(L, 1, LUAVIM_BUFFER); -! buf_T *b = (buf_T *) luaV_checkcache(L, (void *) *lb); -! linenr_T last = b->b_ml.ml_line_count; - linenr_T n = (linenr_T) luaL_optinteger(L, 3, last); - buf_T *buf; - luaL_checktype(L, 2, LUA_TSTRING); -*************** -*** 664,670 **** - if (n > last) n = last; - /* insert */ - buf = curbuf; -! curbuf = *b; - if (u_save(n, n + 1) == FAIL) - { - curbuf = buf; ---- 1203,1209 ---- - if (n > last) n = last; - /* insert */ - buf = curbuf; -! curbuf = b; - if (u_save(n, n + 1) == FAIL) - { - curbuf = buf; -*************** -*** 686,692 **** - luaV_buffer_next(lua_State *L) - { - luaV_Buffer *b = luaV_checkudata(L, 1, LUAVIM_BUFFER); -! luaV_pushbuffer(L, (*b)->b_next); - return 1; - } - ---- 1225,1232 ---- - luaV_buffer_next(lua_State *L) - { - luaV_Buffer *b = luaV_checkudata(L, 1, LUAVIM_BUFFER); -! buf_T *buf = (buf_T *) luaV_checkcache(L, (void *) *b); -! luaV_pushbuffer(L, buf->b_next); - return 1; - } - -*************** -*** 694,700 **** - luaV_buffer_previous(lua_State *L) - { - luaV_Buffer *b = luaV_checkudata(L, 1, LUAVIM_BUFFER); -! luaV_pushbuffer(L, (*b)->b_prev); - return 1; - } - ---- 1234,1241 ---- - luaV_buffer_previous(lua_State *L) - { - luaV_Buffer *b = luaV_checkudata(L, 1, LUAVIM_BUFFER); -! buf_T *buf = (buf_T *) luaV_checkcache(L, (void *) *b); -! luaV_pushbuffer(L, buf->b_prev); - return 1; - } - -*************** -*** 702,709 **** - luaV_buffer_isvalid(lua_State *L) - { - luaV_Buffer *b = luaV_checkudata(L, 1, LUAVIM_BUFFER); -! lua_pushlightuserdata(L, (void *) (*b)); -! lua_rawget(L, LUA_ENVIRONINDEX); - lua_pushboolean(L, !lua_isnil(L, -1)); - return 1; - } ---- 1243,1249 ---- - luaV_buffer_isvalid(lua_State *L) - { - luaV_Buffer *b = luaV_checkudata(L, 1, LUAVIM_BUFFER); -! luaV_getudata(L, *b); - lua_pushboolean(L, !lua_isnil(L, -1)); - return 1; - } -*************** -*** 724,801 **** - - /* ======= Window type ======= */ - -! static luaV_Window * -! luaV_newwindow(lua_State *L, win_T *win) -! { -! luaV_Window *w = (luaV_Window *) lua_newuserdata(L, sizeof(luaV_Window)); -! *w = win; -! lua_pushlightuserdata(L, (void *) win); -! lua_pushvalue(L, -2); -! lua_rawset(L, LUA_ENVIRONINDEX); /* env[win] = udata */ -! /* to avoid GC, store as key in env */ -! lua_pushvalue(L, -1); -! lua_pushboolean(L, 1); -! lua_rawset(L, LUA_ENVIRONINDEX); /* env[udata] = true */ -! /* set metatable */ -! luaV_getfield(L, LUAVIM_WINDOW); -! lua_setmetatable(L, -2); -! return w; -! } -! -! static luaV_Window * -! luaV_pushwindow(lua_State *L, win_T *win) -! { -! luaV_Window *w = NULL; -! if (win == NULL) -! lua_pushnil(L); -! else { -! lua_pushlightuserdata(L, (void *) win); -! lua_rawget(L, LUA_ENVIRONINDEX); -! if (lua_isnil(L, -1)) /* not interned? */ -! { -! lua_pop(L, 1); -! w = luaV_newwindow(L, win); -! } -! else w = (luaV_Window *) lua_touserdata(L, -1); -! } -! return w; -! } -! -! /* Window metamethods */ -! -! static int -! luaV_window_tostring(lua_State *L) -! { -! lua_pushfstring(L, "%s: %p", LUAVIM_WINDOW, lua_touserdata(L, 1)); -! return 1; -! } - - static int - luaV_window_call(lua_State *L) - { -! luaV_Window *w = (luaV_Window *) lua_touserdata(L, 1); - lua_settop(L, 1); -! win_goto(*w); - return 1; - } - - static int - luaV_window_index(lua_State *L) - { -! luaV_Window *w = (luaV_Window *) lua_touserdata(L, 1); - const char *s = luaL_checkstring(L, 2); - if (strncmp(s, "buffer", 6) == 0) -! luaV_pushbuffer(L, (*w)->w_buffer); - else if (strncmp(s, "line", 4) == 0) -! lua_pushinteger(L, (*w)->w_cursor.lnum); - else if (strncmp(s, "col", 3) == 0) -! lua_pushinteger(L, (*w)->w_cursor.col + 1); - #ifdef FEAT_VERTSPLIT - else if (strncmp(s, "width", 5) == 0) -! lua_pushinteger(L, W_WIDTH((*w))); - #endif - else if (strncmp(s, "height", 6) == 0) -! lua_pushinteger(L, (*w)->w_height); - /* methods */ - else if (strncmp(s, "next", 4) == 0 - || strncmp(s, "previous", 8) == 0 ---- 1264,1299 ---- - - /* ======= Window type ======= */ - -! luaV_newtype(win_T, window, luaV_Window, LUAVIM_WINDOW) -! luaV_pushtype(win_T, window, luaV_Window) -! luaV_type_tostring(window, LUAVIM_WINDOW) - - static int - luaV_window_call(lua_State *L) - { -! win_T *w = (win_T *) luaV_checkvalid(L, luaV_Window, 1); - lua_settop(L, 1); -! win_goto(w); - return 1; - } - - static int - luaV_window_index(lua_State *L) - { -! win_T *w = (win_T *) luaV_checkvalid(L, luaV_Window, 1); - const char *s = luaL_checkstring(L, 2); - if (strncmp(s, "buffer", 6) == 0) -! luaV_pushbuffer(L, w->w_buffer); - else if (strncmp(s, "line", 4) == 0) -! lua_pushinteger(L, w->w_cursor.lnum); - else if (strncmp(s, "col", 3) == 0) -! lua_pushinteger(L, w->w_cursor.col + 1); - #ifdef FEAT_VERTSPLIT - else if (strncmp(s, "width", 5) == 0) -! lua_pushinteger(L, W_WIDTH(w)); - #endif - else if (strncmp(s, "height", 6) == 0) -! lua_pushinteger(L, w->w_height); - /* methods */ - else if (strncmp(s, "next", 4) == 0 - || strncmp(s, "previous", 8) == 0 -*************** -*** 812,818 **** - static int - luaV_window_newindex (lua_State *L) - { -! luaV_Window *w = (luaV_Window *) lua_touserdata(L, 1); - const char *s = luaL_checkstring(L, 2); - int v = luaL_checkinteger(L, 3); - if (strncmp(s, "line", 4) == 0) ---- 1310,1316 ---- - static int - luaV_window_newindex (lua_State *L) - { -! win_T *w = (win_T *) luaV_checkvalid(L, luaV_Window, 1); - const char *s = luaL_checkstring(L, 2); - int v = luaL_checkinteger(L, 3); - if (strncmp(s, "line", 4) == 0) -*************** -*** 820,828 **** - #ifdef HAVE_SANDBOX - luaV_checksandbox(L); - #endif -! if (v < 1 || v > (*w)->w_buffer->b_ml.ml_line_count) - luaL_error(L, "line out of range"); -! (*w)->w_cursor.lnum = v; - update_screen(VALID); - } - else if (strncmp(s, "col", 3) == 0) ---- 1318,1326 ---- - #ifdef HAVE_SANDBOX - luaV_checksandbox(L); - #endif -! if (v < 1 || v > w->w_buffer->b_ml.ml_line_count) - luaL_error(L, "line out of range"); -! w->w_cursor.lnum = v; - update_screen(VALID); - } - else if (strncmp(s, "col", 3) == 0) -*************** -*** 830,836 **** - #ifdef HAVE_SANDBOX - luaV_checksandbox(L); - #endif -! (*w)->w_cursor.col = v - 1; - update_screen(VALID); - } - #ifdef FEAT_VERTSPLIT ---- 1328,1334 ---- - #ifdef HAVE_SANDBOX - luaV_checksandbox(L); - #endif -! w->w_cursor.col = v - 1; - update_screen(VALID); - } - #ifdef FEAT_VERTSPLIT -*************** -*** 840,846 **** - #ifdef FEAT_GUI - need_mouse_correct = TRUE; - #endif -! curwin = *w; - win_setwidth(v); - curwin = win; - } ---- 1338,1344 ---- - #ifdef FEAT_GUI - need_mouse_correct = TRUE; - #endif -! curwin = w; - win_setwidth(v); - curwin = win; - } -*************** -*** 851,857 **** - #ifdef FEAT_GUI - need_mouse_correct = TRUE; - #endif -! curwin = *w; - win_setheight(v); - curwin = win; - } ---- 1349,1355 ---- - #ifdef FEAT_GUI - need_mouse_correct = TRUE; - #endif -! curwin = w; - win_setheight(v); - curwin = win; - } -*************** -*** 864,870 **** - luaV_window_next(lua_State *L) - { - luaV_Window *w = luaV_checkudata(L, 1, LUAVIM_WINDOW); -! luaV_pushwindow(L, (*w)->w_next); - return 1; - } - ---- 1362,1369 ---- - luaV_window_next(lua_State *L) - { - luaV_Window *w = luaV_checkudata(L, 1, LUAVIM_WINDOW); -! win_T *win = (win_T *) luaV_checkcache(L, (void *) *w); -! luaV_pushwindow(L, win->w_next); - return 1; - } - -*************** -*** 872,878 **** - luaV_window_previous(lua_State *L) - { - luaV_Window *w = luaV_checkudata(L, 1, LUAVIM_WINDOW); -! luaV_pushwindow(L, (*w)->w_prev); - return 1; - } - ---- 1371,1378 ---- - luaV_window_previous(lua_State *L) - { - luaV_Window *w = luaV_checkudata(L, 1, LUAVIM_WINDOW); -! win_T *win = (win_T *) luaV_checkcache(L, (void *) *w); -! luaV_pushwindow(L, win->w_prev); - return 1; - } - -*************** -*** 880,887 **** - luaV_window_isvalid(lua_State *L) - { - luaV_Window *w = luaV_checkudata(L, 1, LUAVIM_WINDOW); -! lua_pushlightuserdata(L, (void *) (*w)); -! lua_rawget(L, LUA_ENVIRONINDEX); - lua_pushboolean(L, !lua_isnil(L, -1)); - return 1; - } ---- 1380,1386 ---- - luaV_window_isvalid(lua_State *L) - { - luaV_Window *w = luaV_checkudata(L, 1, LUAVIM_WINDOW); -! luaV_getudata(L, *w); - lua_pushboolean(L, !lua_isnil(L, -1)); - return 1; - } -*************** -*** 983,988 **** ---- 1482,1509 ---- - } - - static int -+ luaV_list(lua_State *L) -+ { -+ list_T *l = list_alloc(); -+ if (l == NULL) -+ lua_pushnil(L); -+ else -+ luaV_newlist(L, l); -+ return 1; -+ } -+ -+ static int -+ luaV_dict(lua_State *L) -+ { -+ dict_T *d = dict_alloc(); -+ if (d == NULL) -+ lua_pushnil(L); -+ else -+ luaV_newdict(L, d); -+ return 1; -+ } -+ -+ static int - luaV_buffer(lua_State *L) - { - buf_T *buf; -*************** -*** 1008,1022 **** - break; - } - } -- if (buf == NULL) /* not found? */ -- lua_pushnil(L); -- else -- luaV_pushbuffer(L, buf); - } -! else { - buf = (lua_toboolean(L, 1)) ? firstbuf : curbuf; /* first buffer? */ -! luaV_pushbuffer(L, buf); -! } - return 1; - } - ---- 1529,1538 ---- - break; - } - } - } -! else - buf = (lua_toboolean(L, 1)) ? firstbuf : curbuf; /* first buffer? */ -! luaV_pushbuffer(L, buf); - return 1; - } - -*************** -*** 1029,1043 **** - int n = lua_tointeger(L, 1); - for (win = firstwin; win != NULL; win = win->w_next, n--) - if (n == 1) break; -- if (win == NULL) /* not found? */ -- lua_pushnil(L); -- else -- luaV_pushwindow(L, win); - } -! else { - win = (lua_toboolean(L, 1)) ? firstwin : curwin; /* first window? */ -! luaV_pushwindow(L, win); -! } - return 1; - } - ---- 1545,1554 ---- - int n = lua_tointeger(L, 1); - for (win = firstwin; win != NULL; win = win->w_next, n--) - if (n == 1) break; - } -! else - win = (lua_toboolean(L, 1)) ? firstwin : curwin; /* first window? */ -! luaV_pushwindow(L, win); - return 1; - } - -*************** -*** 1054,1086 **** - } - - static int -! luaV_isbuffer(lua_State *L) -! { -! lua_pushboolean(L, luaV_toudata(L, 1, LUAVIM_BUFFER) != NULL); -! return 1; -! } -! -! static int -! luaV_iswindow(lua_State *L) - { -! lua_pushboolean(L, luaV_toudata(L, 1, LUAVIM_WINDOW) != NULL); -! return 1; -! } -! -! /* for freeing buffer and window objects; lightuserdata as arg */ -! static int -! luaV_free(lua_State *L) -! { -! lua_pushvalue(L, 1); /* lightudata */ -! lua_rawget(L, LUA_ENVIRONINDEX); -! if (!lua_isnil(L, -1)) - { -! lua_pushnil(L); -! lua_rawset(L, LUA_ENVIRONINDEX); /* env[udata] = nil */ -! lua_pushnil(L); -! lua_rawset(L, LUA_ENVIRONINDEX); /* env[lightudata] = nil */ - } -! return 0; - } - - static const luaL_Reg luaV_module[] = { ---- 1565,1606 ---- - } - - static int -! luaV_type(lua_State *L) - { -! luaL_checkany(L, 1); -! if (lua_type(L, 1) == LUA_TUSERDATA) /* check vim udata? */ - { -! lua_settop(L, 1); -! if (lua_getmetatable(L, 1)) -! { -! luaV_getfield(L, LUAVIM_LIST); -! if (lua_rawequal(L, -1, 2)) -! { -! lua_pushstring(L, "list"); -! return 1; -! } -! luaV_getfield(L, LUAVIM_DICT); -! if (lua_rawequal(L, -1, 2)) -! { -! lua_pushstring(L, "dict"); -! return 1; -! } -! luaV_getfield(L, LUAVIM_BUFFER); -! if (lua_rawequal(L, -1, 2)) -! { -! lua_pushstring(L, "buffer"); -! return 1; -! } -! luaV_getfield(L, LUAVIM_WINDOW); -! if (lua_rawequal(L, -1, 2)) -! { -! lua_pushstring(L, "window"); -! return 1; -! } -! } - } -! lua_pushstring(L, luaL_typename(L, 1)); /* fallback */ -! return 1; - } - - static const luaL_Reg luaV_module[] = { -*************** -*** 1088,1111 **** - {"eval", luaV_eval}, - {"beep", luaV_beep}, - {"line", luaV_line}, - {"buffer", luaV_buffer}, - {"window", luaV_window}, - {"open", luaV_open}, -! {"isbuffer", luaV_isbuffer}, -! {"iswindow", luaV_iswindow}, - {NULL, NULL} - }; - - static int - luaopen_vim(lua_State *L) - { -! /* set environment */ - lua_newtable(L); - lua_newtable(L); -! lua_pushliteral(L, "v"); - lua_setfield(L, -2, "__mode"); -! lua_setmetatable(L, -2); -! lua_replace(L, LUA_ENVIRONINDEX); - /* print */ - lua_pushcfunction(L, luaV_print); - lua_setglobal(L, "print"); ---- 1608,1695 ---- - {"eval", luaV_eval}, - {"beep", luaV_beep}, - {"line", luaV_line}, -+ {"list", luaV_list}, -+ {"dict", luaV_dict}, - {"buffer", luaV_buffer}, - {"window", luaV_window}, - {"open", luaV_open}, -! {"type", luaV_type}, - {NULL, NULL} - }; - -+ /* for freeing list, dict, buffer and window objects; lightuserdata as arg */ -+ static int -+ luaV_free(lua_State *L) -+ { -+ lua_pushnil(L); -+ luaV_setudata(L, lua_touserdata(L, 1)); -+ return 0; -+ } -+ -+ static int -+ luaV_luaeval (lua_State *L) -+ { -+ luaL_Buffer b; -+ size_t l; -+ const char *str = lua_tolstring(L, 1, &l); -+ typval_T *arg = (typval_T *) lua_touserdata(L, 2); -+ typval_T *rettv = (typval_T *) lua_touserdata(L, 3); -+ luaL_buffinit(L, &b); -+ luaL_addlstring(&b, LUAVIM_EVALHEADER, sizeof(LUAVIM_EVALHEADER) - 1); -+ luaL_addlstring(&b, str, l); -+ luaL_pushresult(&b); -+ str = lua_tolstring(L, -1, &l); -+ if (luaL_loadbuffer(L, str, l, LUAVIM_EVALNAME)) /* compile error? */ -+ { -+ luaV_emsg(L); -+ return 0; -+ } -+ luaV_pushtypval(L, arg); -+ if (lua_pcall(L, 1, 1, 0)) /* running error? */ -+ { -+ luaV_emsg(L); -+ return 0; -+ } -+ luaV_totypval(L, -1, rettv); -+ return 0; -+ } -+ -+ static int -+ luaV_setref (lua_State *L) -+ { -+ int copyID = lua_tointeger(L, 1); -+ typval_T tv; -+ luaV_getfield(L, LUAVIM_LIST); -+ luaV_getfield(L, LUAVIM_DICT); -+ lua_pushnil(L); -+ while (lua_next(L, lua_upvalueindex(1)) != 0) /* traverse cache table */ -+ { -+ lua_getmetatable(L, -1); -+ if (lua_rawequal(L, -1, 2)) /* list? */ -+ { -+ tv.v_type = VAR_LIST; -+ tv.vval.v_list = (list_T *) lua_touserdata(L, 4); /* key */ -+ } -+ else if (lua_rawequal(L, -1, 3)) /* dict? */ -+ { -+ tv.v_type = VAR_DICT; -+ tv.vval.v_dict = (dict_T *) lua_touserdata(L, 4); /* key */ -+ } -+ lua_pop(L, 2); /* metatable and value */ -+ set_ref_in_tv(&tv, copyID); -+ } -+ return 0; -+ } -+ - static int - luaopen_vim(lua_State *L) - { -! /* set cache table */ - lua_newtable(L); - lua_newtable(L); -! lua_pushstring(L, "v"); - lua_setfield(L, -2, "__mode"); -! lua_setmetatable(L, -2); /* cache is weak-valued */ - /* print */ - lua_pushcfunction(L, luaV_print); - lua_setglobal(L, "print"); -*************** -*** 1116,1129 **** - lua_pop(L, 1); - /* free */ - lua_pushlightuserdata(L, (void *) LUAVIM_FREE); -! lua_pushcfunction(L, luaV_free); - lua_rawset(L, LUA_REGISTRYINDEX); - /* register */ - luaV_newmetatable(L, LUAVIM_BUFFER); -! luaL_register(L, NULL, luaV_Buffer_mt); - luaV_newmetatable(L, LUAVIM_WINDOW); -! luaL_register(L, NULL, luaV_Window_mt); -! luaL_register(L, LUAVIM_NAME, luaV_module); - return 0; - } - ---- 1700,1735 ---- - lua_pop(L, 1); - /* free */ - lua_pushlightuserdata(L, (void *) LUAVIM_FREE); -! lua_pushvalue(L, 1); /* cache table */ -! lua_pushcclosure(L, luaV_free, 1); -! lua_rawset(L, LUA_REGISTRYINDEX); -! /* luaeval */ -! lua_pushlightuserdata(L, (void *) LUAVIM_LUAEVAL); -! lua_pushvalue(L, 1); /* cache table */ -! lua_pushcclosure(L, luaV_luaeval, 1); -! lua_rawset(L, LUA_REGISTRYINDEX); -! /* setref */ -! lua_pushlightuserdata(L, (void *) LUAVIM_SETREF); -! lua_pushvalue(L, 1); /* cache table */ -! lua_pushcclosure(L, luaV_setref, 1); - lua_rawset(L, LUA_REGISTRYINDEX); - /* register */ -+ luaV_newmetatable(L, LUAVIM_LIST); -+ lua_pushvalue(L, 1); -+ luaV_openlib(L, luaV_List_mt, 1); -+ luaV_newmetatable(L, LUAVIM_DICT); -+ lua_pushvalue(L, 1); -+ luaV_openlib(L, luaV_Dict_mt, 1); - luaV_newmetatable(L, LUAVIM_BUFFER); -! lua_pushvalue(L, 1); /* cache table */ -! luaV_openlib(L, luaV_Buffer_mt, 1); - luaV_newmetatable(L, LUAVIM_WINDOW); -! lua_pushvalue(L, 1); /* cache table */ -! luaV_openlib(L, luaV_Window_mt, 1); -! lua_newtable(L); /* vim table */ -! lua_pushvalue(L, 1); /* cache table */ -! luaV_openlib(L, luaV_module, 1); -! lua_setglobal(L, LUAVIM_NAME); - return 0; - } - -*************** -*** 1154,1160 **** - static lua_State *L = NULL; - - static int -! lua_is_open(void) - { - return L != NULL; - } ---- 1760,1766 ---- - static lua_State *L = NULL; - - static int -! lua_isopen(void) - { - return L != NULL; - } -*************** -*** 1162,1168 **** - static int - lua_init(void) - { -! if (L == NULL) - { - #ifdef DYNAMIC_LUA - if (!lua_enabled(TRUE)) ---- 1768,1774 ---- - static int - lua_init(void) - { -! if (!lua_isopen()) - { - #ifdef DYNAMIC_LUA - if (!lua_enabled(TRUE)) -*************** -*** 1179,1185 **** - void - lua_end(void) - { -! if (L != NULL) - { - lua_close(L); - L = NULL; ---- 1785,1791 ---- - void - lua_end(void) - { -! if (lua_isopen()) - { - lua_close(L); - L = NULL; -*************** -*** 1273,1295 **** - } - } - -! /* buffer */ - void -! lua_buffer_free(buf_T *buf) - { -! if (!lua_is_open()) return; -! luaV_getfield(L, LUAVIM_FREE); -! lua_pushlightuserdata(L, (void *) buf); -! lua_call(L, 1, 0); - } - -- /* window */ - void -! lua_window_free(win_T *win) - { -! if (!lua_is_open()) return; -! luaV_getfield(L, LUAVIM_FREE); -! lua_pushlightuserdata(L, (void *) win); - lua_call(L, 1, 0); - } - ---- 1879,1914 ---- - } - } - -! #define luaV_freetype(typ,tname) \ -! void \ -! lua_##tname##_free(typ *o) \ -! { \ -! if (!lua_isopen()) return; \ -! luaV_getfield(L, LUAVIM_FREE); \ -! lua_pushlightuserdata(L, (void *) o); \ -! lua_call(L, 1, 0); \ -! } -! -! luaV_freetype(buf_T, buffer) -! luaV_freetype(win_T, window) -! - void -! do_luaeval (char_u *str, typval_T *arg, typval_T *rettv) - { -! lua_init(); -! luaV_getfield(L, LUAVIM_LUAEVAL); -! lua_pushstring(L, (char *) str); -! lua_pushlightuserdata(L, (void *) arg); -! lua_pushlightuserdata(L, (void *) rettv); -! lua_call(L, 3, 0); - } - - void -! set_ref_in_lua (int copyID) - { -! if (!lua_isopen()) return; -! luaV_getfield(L, LUAVIM_SETREF); -! lua_pushinteger(L, copyID); - lua_call(L, 1, 0); - } - -*** ../vim-7.3.489/src/proto/if_lua.pro 2010-08-15 21:57:28.000000000 +0200 ---- src/proto/if_lua.pro 2012-04-05 16:41:35.000000000 +0200 -*************** -*** 6,9 **** ---- 6,11 ---- - void ex_luafile __ARGS((exarg_T *eap)); - void lua_buffer_free __ARGS((buf_T *buf)); - void lua_window_free __ARGS((win_T *win)); -+ void do_luaeval __ARGS((char_u *str, typval_T *arg, typval_T *rettv)); -+ void set_ref_in_lua __ARGS((int copyID)); - /* vim: set ft=c : */ -*** ../vim-7.3.489/src/version.c 2012-04-05 16:07:01.000000000 +0200 ---- src/version.c 2012-04-05 16:52:08.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 490, - /**/ - --- -Even got a Datapoint 3600(?) with a DD50 connector instead of the -usual DB25... what a nightmare trying to figure out the pinout -for *that* with no spex... - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.491 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.491 -Problem: No tests for Lua. -Solution: Add some simple tests for Lua. (Luis Carvalho) -Files: src/testdir/test1.in, src/testdir/test85.in, src/testdir/test85.ok - src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, - src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, - src/testdir/Make_vms.mms, src/testdir/Makefile - - -*** ../vim-7.3.490/src/testdir/test1.in 2010-08-15 21:57:29.000000000 +0200 ---- src/testdir/test1.in 2012-04-05 16:37:37.000000000 +0200 -*************** -*** 15,20 **** ---- 15,21 ---- - be set like small.vim above. mbyte.vim is sourced by tests that require the - +multi_byte feature. - Similar logic is applied to the +mzscheme feature, using mzscheme.vim. -+ Similar logic is applied to the +lua feature, using lua.vim. - - STARTTEST - :" Write a single line to test.out to check if testing works at all. -*************** -*** 28,37 **** ---- 29,45 ---- - qa! - :w! mbyte.vim - :w! mzscheme.vim -+ :w! lua.vim -+ :" - :" If +multi_byte feature supported, make mbyte.vim empty. - :if has("multi_byte") | sp another | w! mbyte.vim | q | endif -+ :" - :" If +mzscheme feature supported, make mzscheme.vim empty. - :if has("mzscheme") | sp another | w! mzscheme.vim | q | endif -+ :" -+ :" If +lua feature supported, make lua.vim empty. -+ :if has("lua") | sp another | w! lua.vim | q | endif -+ :" - :" If +eval feature supported quit here, leaving tiny.vim and small.vim empty. - :" Otherwise write small.vim to skip the test. - :if 1 | q! | endif -*** ../vim-7.3.490/src/testdir/test85.in 2012-04-05 16:56:12.000000000 +0200 ---- src/testdir/test85.in 2012-04-05 16:44:00.000000000 +0200 -*************** -*** 0 **** ---- 1,42 ---- -+ Test for Lua interface and luaeval() function -+ -+ STARTTEST -+ :so small.vim -+ :so lua.vim -+ :set nocompatible viminfo+=nviminfo -+ :lua l = vim.list():add"item0":add"dictionary with list OK":add"item2" -+ :lua h = vim.dict(); h.list = l -+ :call garbagecollect() -+ /^1 -+ :" change buffer contents -+ :lua curbuf = vim.buffer() -+ :lua curline = vim.eval"line('.')" -+ :lua curbuf[curline] = "1 changed line 1" -+ :" scalar test -+ :let tmp_string = luaeval('"string"') -+ :let tmp_1000 = luaeval('1000') -+ :if printf("%s%.0f", tmp_string, tmp_1000) == "string1000" -+ :let scalar_res = "OK" -+ :else -+ :let scalar_res = "FAILED" -+ :endif -+ :call append(search("^1"), "scalar test " . scalar_res) -+ :" dictionary containing a list -+ :let tmp = luaeval("h").list[1] -+ :/^2/put =tmp -+ :" circular list (at the same time test lists containing lists) -+ :lua l[2] = l -+ :let l2 = luaeval("h").list -+ :if l2[2] == l2 -+ :let res = "OK" -+ :else -+ :let res = "FAILED" -+ :endif -+ :call setline(search("^3"), "circular test " . res) -+ :?^1?,$w! test.out -+ :qa! -+ ENDTEST -+ -+ 1 line 1 -+ 2 line 2 -+ 3 line 3 -*** ../vim-7.3.490/src/testdir/test85.ok 2012-04-05 16:56:12.000000000 +0200 ---- src/testdir/test85.ok 2012-04-05 16:18:56.000000000 +0200 -*************** -*** 0 **** ---- 1,5 ---- -+ 1 changed line 1 -+ scalar test OK -+ 2 line 2 -+ dictionary with list OK -+ circular test OK -*** ../vim-7.3.490/src/testdir/Make_amiga.mak 2012-03-28 19:58:34.000000000 +0200 ---- src/testdir/Make_amiga.mak 2012-04-05 16:21:55.000000000 +0200 -*************** -*** 13,18 **** ---- 13,19 ---- - # test25 uses symbolic link - # test27 can't edit file with "*" - # test52 only for Win32 -+ # test85 no Lua interface - - SCRIPTS = test1.out test3.out test4.out test5.out test6.out \ - test7.out test8.out test9.out \ -*** ../vim-7.3.490/src/testdir/Make_dos.mak 2012-03-28 19:58:34.000000000 +0200 ---- src/testdir/Make_dos.mak 2012-04-05 16:22:16.000000000 +0200 -*************** -*** 30,36 **** - test68.out test69.out test71.out test72.out test73.out \ - test74.out test75.out test76.out test77.out test78.out \ - test79.out test80.out test81.out test82.out test83.out \ -! test84.out - - SCRIPTS32 = test50.out test70.out - ---- 30,36 ---- - test68.out test69.out test71.out test72.out test73.out \ - test74.out test75.out test76.out test77.out test78.out \ - test79.out test80.out test81.out test82.out test83.out \ -! test84.out test85.out - - SCRIPTS32 = test50.out test70.out - -*** ../vim-7.3.490/src/testdir/Make_ming.mak 2012-03-28 19:58:34.000000000 +0200 ---- src/testdir/Make_ming.mak 2012-04-05 16:22:25.000000000 +0200 -*************** -*** 50,56 **** - test68.out test69.out test71.out test72.out test73.out \ - test74.out test75.out test76.out test77.out test78.out \ - test79.out test80.out test81.out test82.out test83.out \ -! test84.out - - SCRIPTS32 = test50.out test70.out - ---- 50,56 ---- - test68.out test69.out test71.out test72.out test73.out \ - test74.out test75.out test76.out test77.out test78.out \ - test79.out test80.out test81.out test82.out test83.out \ -! test84.out test85.out - - SCRIPTS32 = test50.out test70.out - -*** ../vim-7.3.490/src/testdir/Make_os2.mak 2012-03-28 19:58:34.000000000 +0200 ---- src/testdir/Make_os2.mak 2012-04-05 16:22:38.000000000 +0200 -*************** -*** 13,18 **** ---- 13,19 ---- - # test25 uses symbolic link - # test27 can't edit file with "*" in file name - # test52 only for Win32 -+ # test85 no Lua interface - - SCRIPTS = test1.out test3.out test4.out test5.out test6.out \ - test7.out test8.out test9.out \ -*** ../vim-7.3.490/src/testdir/Make_vms.mms 2012-03-28 19:58:34.000000000 +0200 ---- src/testdir/Make_vms.mms 2012-04-05 16:23:08.000000000 +0200 -*************** -*** 4,10 **** - # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> - # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> - # -! # Last change: 2012 Mar 28 - # - # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. - # Edit the lines in the Configuration section below to select. ---- 4,10 ---- - # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> - # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> - # -! # Last change: 2012 Apr 05 - # - # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. - # Edit the lines in the Configuration section below to select. -*************** -*** 89,94 **** ---- 89,95 ---- - # with too many dots). - # - # Test 72: unknown reason -+ # Test 85: no Lua interface - - .IFDEF WANT_GUI - SCRIPT_GUI = test16.out -*** ../vim-7.3.490/src/testdir/Makefile 2012-03-28 19:58:34.000000000 +0200 ---- src/testdir/Makefile 2012-04-05 16:21:13.000000000 +0200 -*************** -*** 27,33 **** - test69.out test70.out test71.out test72.out test73.out \ - test74.out test75.out test76.out test77.out test78.out \ - test79.out test80.out test81.out test82.out test83.out \ -! test84.out - - SCRIPTS_GUI = test16.out - ---- 27,33 ---- - test69.out test70.out test71.out test72.out test73.out \ - test74.out test75.out test76.out test77.out test78.out \ - test79.out test80.out test81.out test82.out test83.out \ -! test84.out test85.out - - SCRIPTS_GUI = test16.out - -*** ../vim-7.3.490/src/version.c 2012-04-05 16:53:56.000000000 +0200 ---- src/version.c 2012-04-05 16:55:27.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 491, - /**/ - --- -You had connectors? Eeee, when I were a lad we 'ad to carry the -bits between the computer and the terminal with a spoon... - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.492 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.492 -Problem: Can't indent conditions separately from function arguments. -Solution: Add the 'k' flag in 'cino. (Lech Lorens) -Files: runtime/doc/indent.txt, src/misc1.c, src/testdir/test3.in, - src/testdir/test3.ok - - -*** ../vim-7.3.491/runtime/doc/indent.txt 2011-06-26 03:16:58.000000000 +0200 ---- runtime/doc/indent.txt 2012-04-05 17:12:14.000000000 +0200 -*************** -*** 459,464 **** ---- 460,481 ---- - a_short_line(argument, a_short_line(argument, - argument); argument); - < -+ *cino-k* -+ kN When in unclosed parentheses which follow "if", "for" or -+ "while" and N is non-zero, overrides the behaviour defined by -+ "(N": causes the indent to be N characters relative to the outer -+ context (i.e. the line where "if", "for" or "while" is). Has -+ no effect on deeper levels of nesting. Affects flags like "wN" -+ only for the "if", "for" and "while" conditions. If 0, defaults -+ to behaviour defined by the "(N" flag. (default: 0). -+ -+ cino=(0 cino=(0,ks > -+ if (condition1 if (condition1 -+ && condition2) && condition2) -+ action(); action(); -+ function(argument1 function(argument1 -+ && argument2); && argument2); -+ < - *cino-m* - mN When N is non-zero, line up a line starting with a closing - parentheses with the first character of the line with the -*************** -*** 527,540 **** - - *cino-#* - #N When N is non-zero recognize shell/Perl comments, starting with -! '#'. Default N is zero: don't recognizes '#' comments. Note - that lines starting with # will still be seen as preprocessor - lines. - - - The defaults, spelled out in full, are: - cinoptions=>s,e0,n0,f0,{0,}0,^0,L-1,:s,=s,l0,b0,gs,hs,N0,ps,ts,is,+s, -! c3,C0,/0,(2s,us,U0,w0,W0,m0,j0,J0,)20,*70,#0 - - Vim puts a line in column 1 if: - - It starts with '#' (preprocessor directives), if 'cinkeys' contains '#'. ---- 546,559 ---- - - *cino-#* - #N When N is non-zero recognize shell/Perl comments, starting with -! '#'. Default N is zero: don't recognize '#' comments. Note - that lines starting with # will still be seen as preprocessor - lines. - - - The defaults, spelled out in full, are: - cinoptions=>s,e0,n0,f0,{0,}0,^0,L-1,:s,=s,l0,b0,gs,hs,N0,ps,ts,is,+s, -! c3,C0,/0,(2s,us,U0,w0,W0,k0,m0,j0,J0,)20,*70,#0 - - Vim puts a line in column 1 if: - - It starts with '#' (preprocessor directives), if 'cinkeys' contains '#'. -*** ../vim-7.3.491/src/misc1.c 2012-02-29 13:49:03.000000000 +0100 ---- src/misc1.c 2012-04-05 17:12:14.000000000 +0200 -*************** -*** 5771,5776 **** ---- 5771,5822 ---- - } - - /* -+ * Check whether in "p" there is an "if", "for" or "while" before offset. -+ * Return 0 if there is none. -+ * Otherwise return !0 and update "*poffset" to point to the place where the -+ * string was found. -+ */ -+ static int -+ cin_is_if_for_while_before_offset(line, offset, poffset) -+ char_u *line; -+ size_t offset; -+ int *poffset; -+ { -+ -+ if (offset-- < 2) -+ return 0; -+ while (offset > 2 && vim_iswhite(line[offset])) -+ --offset; -+ -+ offset -= 1; -+ if (!STRNCMP(line + offset, "if", 2)) -+ goto probablyFound; -+ -+ if (offset >= 1) -+ { -+ offset -= 1; -+ if (!STRNCMP(line + offset, "for", 3)) -+ goto probablyFound; -+ -+ if (offset >= 2) -+ { -+ offset -= 2; -+ if (!STRNCMP(line + offset, "while", 5)) -+ goto probablyFound; -+ } -+ } -+ -+ return 0; -+ probablyFound: -+ if (!offset || !vim_isIDc(line[offset - 1])) -+ { -+ *poffset = offset; -+ return 1; -+ } -+ return 0; -+ } -+ -+ /* - * Return TRUE if we are at the end of a do-while. - * do - * nothing; -*************** -*** 6124,6130 **** - - /* - * Find the matching '(', failing if it is in a comment. -! * Return NULL of no match found. - */ - static pos_T * - find_match_paren(ind_maxparen, ind_maxcomment) /* XXX */ ---- 6170,6176 ---- - - /* - * Find the matching '(', failing if it is in a comment. -! * Return NULL if no match found. - */ - static pos_T * - find_match_paren(ind_maxparen, ind_maxcomment) /* XXX */ -*************** -*** 6393,6398 **** ---- 6439,6450 ---- - */ - int ind_cpp_namespace = 0; - -+ /* -+ * handle continuation lines containing conditions of if(), for() and -+ * while() -+ */ -+ int ind_if_for_while = 0; -+ - pos_T cur_curpos; - int amount; - int scope_amount; -*************** -*** 6437,6442 **** ---- 6489,6495 ---- - int cont_amount = 0; /* amount for continuation line */ - int original_line_islabel; - int added_to_amount = 0; -+ int is_if_for_while = 0; - - for (options = curbuf->b_p_cino; *options; ) - { -*************** -*** 6509,6514 **** ---- 6562,6568 ---- - case 'l': ind_keep_case_label = n; break; - case '#': ind_hash_comment = n; break; - case 'N': ind_cpp_namespace = n; break; -+ case 'k': ind_if_for_while = n; break; - } - if (*options == ',') - ++options; -*************** -*** 6812,6817 **** ---- 6866,6900 ---- - if (amount == -1) - { - int ignore_paren_col = 0; -+ int is_if_for_while = 0; -+ -+ if (ind_if_for_while) -+ { -+ /* Look for the outermost opening parenthesis on this line -+ * and check whether it belongs to an "if", "for" or "while". */ -+ -+ pos_T cursor_save = curwin->w_cursor; -+ pos_T outermost; -+ char_u *line; -+ int look_col; -+ -+ trypos = &our_paren_pos; -+ do { -+ outermost = *trypos; -+ curwin->w_cursor.lnum = outermost.lnum; -+ curwin->w_cursor.col = outermost.col; -+ -+ trypos = find_match_paren(ind_maxparen, ind_maxcomment); -+ } while (trypos && trypos->lnum == outermost.lnum); -+ -+ curwin->w_cursor = cursor_save; -+ -+ line = ml_get(outermost.lnum); -+ -+ is_if_for_while = -+ cin_is_if_for_while_before_offset(line, outermost.col, -+ &outermost.col); -+ } - - amount = skip_label(our_paren_pos.lnum, &look, ind_maxcomment); - look = skipwhite(look); -*************** -*** 6836,6842 **** - curwin->w_cursor.lnum = save_lnum; - look = ml_get(our_paren_pos.lnum) + look_col; - } -! if (theline[0] == ')' || ind_unclosed == 0 - || (!ind_unclosed_noignore && *look == '(' - && ignore_paren_col == 0)) - { ---- 6919,6925 ---- - curwin->w_cursor.lnum = save_lnum; - look = ml_get(our_paren_pos.lnum) + look_col; - } -! if (theline[0] == ')' || (ind_unclosed == 0 && is_if_for_while == 0) - || (!ind_unclosed_noignore && *look == '(' - && ignore_paren_col == 0)) - { -*************** -*** 6907,6913 **** - { - /* Line up with the start of the matching paren line. */ - } -! else if (ind_unclosed == 0 || (!ind_unclosed_noignore - && *look == '(' && ignore_paren_col == 0)) - { - if (cur_amount != MAXCOL) ---- 6990,6997 ---- - { - /* Line up with the start of the matching paren line. */ - } -! else if ((ind_unclosed == 0 && is_if_for_while == 0) -! || (!ind_unclosed_noignore - && *look == '(' && ignore_paren_col == 0)) - { - if (cur_amount != MAXCOL) -*************** -*** 6943,6949 **** - if (find_match_paren(ind_maxparen, ind_maxcomment) != NULL) - amount += ind_unclosed2; - else -! amount += ind_unclosed; - } - /* - * For a line starting with ')' use the minimum of the two ---- 7027,7038 ---- - if (find_match_paren(ind_maxparen, ind_maxcomment) != NULL) - amount += ind_unclosed2; - else -! { -! if (is_if_for_while) -! amount += ind_if_for_while; -! else -! amount += ind_unclosed; -! } - } - /* - * For a line starting with ')' use the minimum of the two -*** ../vim-7.3.491/src/testdir/test3.in 2011-12-14 20:21:29.000000000 +0100 ---- src/testdir/test3.in 2012-04-05 17:12:14.000000000 +0200 -*************** -*** 1574,1579 **** ---- 1574,1793 ---- - } - - STARTTEST -+ :set cino=k2s,(0 -+ 2kdd3j=][ -+ ENDTEST -+ -+ void func(void) -+ { -+ if (condition1 -+ && condition2) -+ action(); -+ function(argument1 -+ && argument2); -+ -+ if (c1 && (c2 || -+ c3)) -+ foo; -+ if (c1 && -+ (c2 || c3)) -+ { -+ } -+ -+ if ( c1 -+ && ( c2 -+ || c3)) -+ foo; -+ func( c1 -+ && ( c2 -+ || c3)) -+ foo; -+ } -+ -+ STARTTEST -+ :set cino=k2s,(s -+ 2kdd3j=][ -+ ENDTEST -+ -+ void func(void) -+ { -+ if (condition1 -+ && condition2) -+ action(); -+ function(argument1 -+ && argument2); -+ -+ if (c1 && (c2 || -+ c3)) -+ foo; -+ if (c1 && -+ (c2 || c3)) -+ { -+ } -+ -+ if ( c1 -+ && ( c2 -+ || c3)) -+ foo; -+ func( c1 -+ && ( c2 -+ || c3)) -+ foo; -+ } -+ -+ STARTTEST -+ :set cino=k2s,(s,U1 -+ 2kdd3j=][ -+ ENDTEST -+ -+ void func(void) -+ { -+ if (condition1 -+ && condition2) -+ action(); -+ function(argument1 -+ && argument2); -+ -+ if (c1 && (c2 || -+ c3)) -+ foo; -+ if (c1 && -+ (c2 || c3)) -+ { -+ } -+ if (c123456789 -+ && (c22345 -+ || c3)) -+ printf("foo\n"); -+ -+ c = c1 && -+ ( -+ c2 || -+ c3 -+ ) && c4; -+ } -+ -+ STARTTEST -+ :set cino=k2s,(0,W4 -+ 2kdd3j=][ -+ ENDTEST -+ -+ void func(void) -+ { -+ if (condition1 -+ && condition2) -+ action(); -+ function(argument1 -+ && argument2); -+ -+ if (c1 && (c2 || -+ c3)) -+ foo; -+ if (c1 && -+ (c2 || c3)) -+ { -+ } -+ if (c123456789 -+ && (c22345 -+ || c3)) -+ printf("foo\n"); -+ -+ if ( c1 -+ && ( c2 -+ || c3)) -+ foo; -+ -+ a_long_line( -+ argument, -+ argument); -+ a_short_line(argument, -+ argument); -+ } -+ -+ STARTTEST -+ :set cino=k2s,u2 -+ 2kdd3j=][ -+ ENDTEST -+ -+ void func(void) -+ { -+ if (condition1 -+ && condition2) -+ action(); -+ function(argument1 -+ && argument2); -+ -+ if (c1 && (c2 || -+ c3)) -+ foo; -+ if (c1 && -+ (c2 || c3)) -+ { -+ } -+ if (c123456789 -+ && (c22345 -+ || c3)) -+ printf("foo\n"); -+ } -+ -+ STARTTEST -+ :set cino=k2s,(0,w1 -+ 2kdd3j=][ -+ ENDTEST -+ -+ void func(void) -+ { -+ if (condition1 -+ && condition2) -+ action(); -+ function(argument1 -+ && argument2); -+ -+ if (c1 && (c2 || -+ c3)) -+ foo; -+ if (c1 && -+ (c2 || c3)) -+ { -+ } -+ if (c123456789 -+ && (c22345 -+ || c3)) -+ printf("foo\n"); -+ -+ if ( c1 -+ && ( c2 -+ || c3)) -+ foo; -+ func( c1 -+ && ( c2 -+ || c3)) -+ foo; -+ } -+ -+ STARTTEST -+ :set cino=k2,(s -+ 2kdd3j=][ -+ ENDTEST -+ -+ void func(void) -+ { -+ if (condition1 -+ && condition2) -+ action(); -+ function(argument1 -+ && argument2); -+ -+ if (c1 && (c2 || -+ c3)) -+ foo; -+ if (c1 && -+ (c2 || c3)) -+ { -+ } -+ } -+ -+ STARTTEST - :set cino=N-s - /^NAMESPACESTART - =/^NAMESPACEEND -*** ../vim-7.3.491/src/testdir/test3.ok 2011-12-14 20:21:29.000000000 +0100 ---- src/testdir/test3.ok 2012-04-05 17:12:14.000000000 +0200 -*************** -*** 1411,1416 **** ---- 1411,1602 ---- - } - - -+ void func(void) -+ { -+ if (condition1 -+ && condition2) -+ action(); -+ function(argument1 -+ && argument2); -+ -+ if (c1 && (c2 || -+ c3)) -+ foo; -+ if (c1 && -+ (c2 || c3)) -+ { -+ } -+ -+ if ( c1 -+ && ( c2 -+ || c3)) -+ foo; -+ func( c1 -+ && ( c2 -+ || c3)) -+ foo; -+ } -+ -+ -+ void func(void) -+ { -+ if (condition1 -+ && condition2) -+ action(); -+ function(argument1 -+ && argument2); -+ -+ if (c1 && (c2 || -+ c3)) -+ foo; -+ if (c1 && -+ (c2 || c3)) -+ { -+ } -+ -+ if ( c1 -+ && ( c2 -+ || c3)) -+ foo; -+ func( c1 -+ && ( c2 -+ || c3)) -+ foo; -+ } -+ -+ -+ void func(void) -+ { -+ if (condition1 -+ && condition2) -+ action(); -+ function(argument1 -+ && argument2); -+ -+ if (c1 && (c2 || -+ c3)) -+ foo; -+ if (c1 && -+ (c2 || c3)) -+ { -+ } -+ if (c123456789 -+ && (c22345 -+ || c3)) -+ printf("foo\n"); -+ -+ c = c1 && -+ ( -+ c2 || -+ c3 -+ ) && c4; -+ } -+ -+ -+ void func(void) -+ { -+ if (condition1 -+ && condition2) -+ action(); -+ function(argument1 -+ && argument2); -+ -+ if (c1 && (c2 || -+ c3)) -+ foo; -+ if (c1 && -+ (c2 || c3)) -+ { -+ } -+ if (c123456789 -+ && (c22345 -+ || c3)) -+ printf("foo\n"); -+ -+ if ( c1 -+ && ( c2 -+ || c3)) -+ foo; -+ -+ a_long_line( -+ argument, -+ argument); -+ a_short_line(argument, -+ argument); -+ } -+ -+ -+ void func(void) -+ { -+ if (condition1 -+ && condition2) -+ action(); -+ function(argument1 -+ && argument2); -+ -+ if (c1 && (c2 || -+ c3)) -+ foo; -+ if (c1 && -+ (c2 || c3)) -+ { -+ } -+ if (c123456789 -+ && (c22345 -+ || c3)) -+ printf("foo\n"); -+ } -+ -+ -+ void func(void) -+ { -+ if (condition1 -+ && condition2) -+ action(); -+ function(argument1 -+ && argument2); -+ -+ if (c1 && (c2 || -+ c3)) -+ foo; -+ if (c1 && -+ (c2 || c3)) -+ { -+ } -+ if (c123456789 -+ && (c22345 -+ || c3)) -+ printf("foo\n"); -+ -+ if ( c1 -+ && ( c2 -+ || c3)) -+ foo; -+ func( c1 -+ && ( c2 -+ || c3)) -+ foo; -+ } -+ -+ -+ void func(void) -+ { -+ if (condition1 -+ && condition2) -+ action(); -+ function(argument1 -+ && argument2); -+ -+ if (c1 && (c2 || -+ c3)) -+ foo; -+ if (c1 && -+ (c2 || c3)) -+ { -+ } -+ } -+ -+ - NAMESPACESTART - /* valid namespaces with normal indent */ - namespace -*** ../vim-7.3.491/src/version.c 2012-04-05 16:56:38.000000000 +0200 ---- src/version.c 2012-04-05 17:14:18.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 492, - /**/ - --- -You were lucky to have a LAKE! There were a hundred and sixty of -us living in a small shoebox in the middle of the road. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.493 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.493 (after 7.3.492) -Problem: Two unused variables. -Solution: Remove them. (Hong Xu) -Files: src/misc1.c - - -*** ../vim-7.3.492/src/misc1.c 2012-04-05 17:17:38.000000000 +0200 ---- src/misc1.c 2012-04-06 13:49:39.000000000 +0200 -*************** -*** 6489,6495 **** - int cont_amount = 0; /* amount for continuation line */ - int original_line_islabel; - int added_to_amount = 0; -- int is_if_for_while = 0; - - for (options = curbuf->b_p_cino; *options; ) - { ---- 6489,6494 ---- -*************** -*** 6876,6882 **** - pos_T cursor_save = curwin->w_cursor; - pos_T outermost; - char_u *line; -- int look_col; - - trypos = &our_paren_pos; - do { ---- 6875,6880 ---- -*** ../vim-7.3.492/src/version.c 2012-04-05 17:17:38.000000000 +0200 ---- src/version.c 2012-04-06 13:50:21.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 493, - /**/ - --- -Not too long ago, compress was something you did to garbage... - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.494 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.494 (after 7.3.491) -Problem: Can't compile with Lua 9.1 or dynamic Lua. -Solution: Fix dll_ methods. Fix luado(). (Muraoka Taro, Luis Carvalho) -Files: src/if_lua.c - - -*** ../vim-7.3.493/src/if_lua.c 2012-04-05 16:53:56.000000000 +0200 ---- src/if_lua.c 2012-04-06 14:24:06.000000000 +0200 -*************** -*** 95,100 **** ---- 95,101 ---- - #define luaL_loadbufferx dll_luaL_loadbufferx - #define luaL_argerror dll_luaL_argerror - #endif -+ #define luaL_checkany dll_luaL_checkany - #define luaL_checklstring dll_luaL_checklstring - #define luaL_checkinteger dll_luaL_checkinteger - #define luaL_optinteger dll_luaL_optinteger -*************** -*** 117,124 **** - #define lua_pcallk dll_lua_pcallk - #define lua_getglobal dll_lua_getglobal - #define lua_setglobal dll_lua_setglobal -- #define lua_typename dll_lua_typename - #endif - #define lua_close dll_lua_close - #define lua_gettop dll_lua_gettop - #define lua_settop dll_lua_settop ---- 118,125 ---- - #define lua_pcallk dll_lua_pcallk - #define lua_getglobal dll_lua_getglobal - #define lua_setglobal dll_lua_setglobal - #endif -+ #define lua_typename dll_lua_typename - #define lua_close dll_lua_close - #define lua_gettop dll_lua_gettop - #define lua_settop dll_lua_settop -*************** -*** 151,156 **** ---- 152,158 ---- - #define lua_rawset dll_lua_rawset - #define lua_rawseti dll_lua_rawseti - #define lua_setmetatable dll_lua_setmetatable -+ #define lua_next dll_lua_next - /* libs */ - #define luaopen_base dll_luaopen_base - #define luaopen_table dll_luaopen_table -*************** -*** 177,182 **** ---- 179,185 ---- - int (*dll_luaL_loadbufferx) (lua_State *L, const char *buff, size_t sz, const char *name, const char *mode); - int (*dll_luaL_argerror) (lua_State *L, int numarg, const char *extramsg); - #endif -+ void (*dll_luaL_checkany) (lua_State *L, int narg); - const char *(*dll_luaL_checklstring) (lua_State *L, int numArg, size_t *l); - lua_Integer (*dll_luaL_checkinteger) (lua_State *L, int numArg); - lua_Integer (*dll_luaL_optinteger) (lua_State *L, int nArg, lua_Integer def); -*************** -*** 201,208 **** - int ctx, lua_CFunction k); - void (*dll_lua_getglobal) (lua_State *L, const char *var); - void (*dll_lua_setglobal) (lua_State *L, const char *var); -- const char *(*dll_lua_typename) (lua_State *L, int tp); - #endif - void (*dll_lua_close) (lua_State *L); - int (*dll_lua_gettop) (lua_State *L); - void (*dll_lua_settop) (lua_State *L, int idx); ---- 204,211 ---- - int ctx, lua_CFunction k); - void (*dll_lua_getglobal) (lua_State *L, const char *var); - void (*dll_lua_setglobal) (lua_State *L, const char *var); - #endif -+ const char *(*dll_lua_typename) (lua_State *L, int tp); - void (*dll_lua_close) (lua_State *L); - int (*dll_lua_gettop) (lua_State *L); - void (*dll_lua_settop) (lua_State *L, int idx); -*************** -*** 235,240 **** ---- 238,244 ---- - void (*dll_lua_rawset) (lua_State *L, int idx); - void (*dll_lua_rawseti) (lua_State *L, int idx, int n); - int (*dll_lua_setmetatable) (lua_State *L, int objindex); -+ int (*dll_lua_next) (lua_State *L, int idx); - /* libs */ - int (*dll_luaopen_base) (lua_State *L); - int (*dll_luaopen_table) (lua_State *L); -*************** -*** 268,273 **** ---- 272,278 ---- - {"luaL_loadbufferx", (luaV_function) &dll_luaL_loadbufferx}, - {"luaL_argerror", (luaV_function) &dll_luaL_argerror}, - #endif -+ {"luaL_checkany", (luaV_function) &dll_luaL_checkany}, - {"luaL_checklstring", (luaV_function) &dll_luaL_checklstring}, - {"luaL_checkinteger", (luaV_function) &dll_luaL_checkinteger}, - {"luaL_optinteger", (luaV_function) &dll_luaL_optinteger}, -*************** -*** 290,297 **** - {"lua_pcallk", (luaV_function) &dll_lua_pcallk}, - {"lua_getglobal", (luaV_function) &dll_lua_getglobal}, - {"lua_setglobal", (luaV_function) &dll_lua_setglobal}, -- {"lua_typename", (luaV_function) &dll_lua_typename}, - #endif - {"lua_close", (luaV_function) &dll_lua_close}, - {"lua_gettop", (luaV_function) &dll_lua_gettop}, - {"lua_settop", (luaV_function) &dll_lua_settop}, ---- 295,302 ---- - {"lua_pcallk", (luaV_function) &dll_lua_pcallk}, - {"lua_getglobal", (luaV_function) &dll_lua_getglobal}, - {"lua_setglobal", (luaV_function) &dll_lua_setglobal}, - #endif -+ {"lua_typename", (luaV_function) &dll_lua_typename}, - {"lua_close", (luaV_function) &dll_lua_close}, - {"lua_gettop", (luaV_function) &dll_lua_gettop}, - {"lua_settop", (luaV_function) &dll_lua_settop}, -*************** -*** 324,329 **** ---- 329,335 ---- - {"lua_rawset", (luaV_function) &dll_lua_rawset}, - {"lua_rawseti", (luaV_function) &dll_lua_rawseti}, - {"lua_setmetatable", (luaV_function) &dll_lua_setmetatable}, -+ {"lua_next", (luaV_function) &dll_lua_next}, - /* libs */ - {"luaopen_base", (luaV_function) &dll_luaopen_base}, - {"luaopen_table", (luaV_function) &dll_luaopen_table}, -*************** -*** 1828,1834 **** - } - luaV_setrange(L, eap->line1, eap->line2); - luaL_buffinit(L, &b); -! luaL_addlstring(&b, "return function(line) ", 22); /* header */ - luaL_addlstring(&b, s, strlen(s)); - luaL_addlstring(&b, " end", 4); /* footer */ - luaL_pushresult(&b); ---- 1834,1840 ---- - } - luaV_setrange(L, eap->line1, eap->line2); - luaL_buffinit(L, &b); -! luaL_addlstring(&b, "return function(line, linenr) ", 30); /* header */ - luaL_addlstring(&b, s, strlen(s)); - luaL_addlstring(&b, " end", 4); /* footer */ - luaL_pushresult(&b); -*************** -*** 1845,1851 **** - { - lua_pushvalue(L, -1); /* function */ - luaV_pushline(L, curbuf, l); /* current line as arg */ -! if (lua_pcall(L, 1, 1, 0)) - { - luaV_emsg(L); - break; ---- 1851,1858 ---- - { - lua_pushvalue(L, -1); /* function */ - luaV_pushline(L, curbuf, l); /* current line as arg */ -! lua_pushinteger(L, l); /* current line number as arg */ -! if (lua_pcall(L, 2, 1, 0)) - { - luaV_emsg(L); - break; -*** ../vim-7.3.493/src/version.c 2012-04-06 13:56:00.000000000 +0200 ---- src/version.c 2012-04-06 14:25:11.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 494, - /**/ - --- -Why doesn't Tarzan have a beard? - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.4 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.495 (after 7.3.492) -Problem: Compiler warnings. -Solution: Add function declaration. Remove "offset" argument. -Files: src/misc1.c - - -*** ../vim-7.3.494/src/misc1.c 2012-04-06 13:56:00.000000000 +0200 ---- src/misc1.c 2012-04-09 20:25:58.000000000 +0200 -*************** -*** 4972,4977 **** ---- 4972,4978 ---- - static int cin_iselse __ARGS((char_u *)); - static int cin_isdo __ARGS((char_u *)); - static int cin_iswhileofdo __ARGS((char_u *, linenr_T, int)); -+ static int cin_is_if_for_while_before_offset __ARGS((char_u *line, int *poffset)); - static int cin_iswhileofdo_end __ARGS((int terminated, int ind_maxparen, int ind_maxcomment)); - static int cin_isbreak __ARGS((char_u *)); - static int cin_is_cpp_baseclass __ARGS((colnr_T *col)); -*************** -*** 5771,5787 **** - } - - /* -! * Check whether in "p" there is an "if", "for" or "while" before offset. - * Return 0 if there is none. - * Otherwise return !0 and update "*poffset" to point to the place where the - * string was found. - */ - static int -! cin_is_if_for_while_before_offset(line, offset, poffset) - char_u *line; -- size_t offset; - int *poffset; - { - - if (offset-- < 2) - return 0; ---- 5772,5788 ---- - } - - /* -! * Check whether in "p" there is an "if", "for" or "while" before "*poffset". - * Return 0 if there is none. - * Otherwise return !0 and update "*poffset" to point to the place where the - * string was found. - */ - static int -! cin_is_if_for_while_before_offset(line, poffset) - char_u *line; - int *poffset; - { -+ int offset = *poffset; - - if (offset-- < 2) - return 0; -*************** -*** 5805,5812 **** - goto probablyFound; - } - } -- - return 0; - probablyFound: - if (!offset || !vim_isIDc(line[offset - 1])) - { ---- 5806,5813 ---- - goto probablyFound; - } - } - return 0; -+ - probablyFound: - if (!offset || !vim_isIDc(line[offset - 1])) - { -*************** -*** 6890,6897 **** - line = ml_get(outermost.lnum); - - is_if_for_while = -! cin_is_if_for_while_before_offset(line, outermost.col, -! &outermost.col); - } - - amount = skip_label(our_paren_pos.lnum, &look, ind_maxcomment); ---- 6891,6897 ---- - line = ml_get(outermost.lnum); - - is_if_for_while = -! cin_is_if_for_while_before_offset(line, &outermost.col); - } - - amount = skip_label(our_paren_pos.lnum, &look, ind_maxcomment); -*** ../vim-7.3.494/src/version.c 2012-04-06 14:30:55.000000000 +0200 ---- src/version.c 2012-04-09 20:41:44.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 495, - /**/ - --- - [clop clop] -GUARD #1: Halt! Who goes there? -ARTHUR: It is I, Arthur, son of Uther Pendragon, from the castle of - Camelot. King of the Britons, defeator of the Saxons, sovereign of - all England! -GUARD #1: Pull the other one! - The Quest for the Holy Grail (Monty Python) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.496 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.496 -Problem: MS-DOS: When "diff" trips over difference in line separators some - tests fail. -Solution: Make some .ok files use unix line separators. (David Pope) -Files: src/testdir/Make_dos.mak, src/testdir/Make_ming.mak - - -*** ../vim-7.3.495/src/testdir/Make_dos.mak 2012-04-05 16:56:38.000000000 +0200 ---- src/testdir/Make_dos.mak 2012-04-09 21:23:43.000000000 +0200 -*************** -*** 52,58 **** - - fixff: - -$(VIMPROG) -u dos.vim --noplugin "+argdo set ff=dos|upd" +q *.in *.ok -! -$(VIMPROG) -u dos.vim --noplugin "+argdo set ff=unix|upd" +q dotest.in - - clean: - -del *.out ---- 52,59 ---- - - fixff: - -$(VIMPROG) -u dos.vim --noplugin "+argdo set ff=dos|upd" +q *.in *.ok -! -$(VIMPROG) -u dos.vim --noplugin "+argdo set ff=unix|upd" +q \ -! dotest.in test60.ok test71.ok test74.ok - - clean: - -del *.out -*** ../vim-7.3.495/src/testdir/Make_ming.mak 2012-04-05 16:56:38.000000000 +0200 ---- src/testdir/Make_ming.mak 2012-04-09 21:25:55.000000000 +0200 -*************** -*** 75,80 **** ---- 75,82 ---- - - fixff: - -$(VIMPROG) -u dos.vim --noplugin "+argdo set ff=dos|upd" +q *.in *.ok -+ -$(VIMPROG) -u dos.vim --noplugin "+argdo set ff=unix|upd" +q \ -+ dotest.in test60.ok test71.ok test74.ok - - clean: - -$(DEL) *.out -*** ../vim-7.3.495/src/version.c 2012-04-09 20:42:20.000000000 +0200 ---- src/version.c 2012-04-13 19:10:04.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 496, - /**/ - --- -There are 2 kinds of people in my world: those who know Unix, Perl, Vim, GNU, -Linux, etc, and those who know COBOL. It gets very difficult for me at -parties, not knowing which group to socialise with :-) - Sitaram Chamarty - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.497 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.497 -Problem: Crash when doing ":python print" and compiled with gcc and - the optimizer enabled. -Solution: Avoid the crash, doesn't really fix the problem. (Christian - Brabandt) -Files: src/if_py_both.h - - -*** ../vim-7.3.496/src/if_py_both.h 2012-02-04 20:17:21.000000000 +0100 ---- src/if_py_both.h 2012-04-20 13:24:31.000000000 +0200 -*************** -*** 77,82 **** ---- 77,87 ---- - if (!PyArg_ParseTuple(args, "et#", ENC_OPT, &str, &len)) - return NULL; - -+ /* TODO: This works around a gcc optimizer problem and avoids Vim -+ * from crashing. Should find a real solution. */ -+ if (str == NULL) -+ return NULL; -+ - Py_BEGIN_ALLOW_THREADS - Python_Lock_Vim(); - writer((writefn)(error ? emsg : msg), (char_u *)str, len); -*** ../vim-7.3.496/src/version.c 2012-04-13 19:11:16.000000000 +0200 ---- src/version.c 2012-04-20 13:26:22.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 497, - /**/ - --- -There can't be a crisis today, my schedule is already full. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.498 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.498 -Problem: The behavior of the "- register changes depending on value of - the 'clipboard' option. (Szamotulski) -Solution: Also set the "- register when the register is "*" or "+". - (Christian Brabandt) -Files: src/ops.c - - -*** ../vim-7.3.497/src/ops.c 2012-03-23 14:16:19.000000000 +0100 ---- src/ops.c 2012-04-20 13:36:32.000000000 +0200 -*************** -*** 1720,1728 **** - did_yank = TRUE; - } - -! /* Yank into small delete register when no register specified and the -! * delete is within one line. */ -! if (oap->regname == 0 && oap->motion_type != MLINE - && oap->line_count == 1) - { - oap->regname = '-'; ---- 1720,1733 ---- - did_yank = TRUE; - } - -! /* Yank into small delete register when no named register specified -! * and the delete is within one line. */ -! if (( -! #ifdef FEAT_CLIPBOARD -! ((clip_unnamed & CLIP_UNNAMED) && oap->regname == '*') || -! ((clip_unnamed & CLIP_UNNAMED_PLUS) && oap->regname == '+') || -! #endif -! oap->regname == 0) && oap->motion_type != MLINE - && oap->line_count == 1) - { - oap->regname = '-'; -*** ../vim-7.3.497/src/version.c 2012-04-20 13:31:16.000000000 +0200 ---- src/version.c 2012-04-20 13:45:26.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 498, - /**/ - --- -Did you ever stop to think... and forget to start again? - -- Steven Wright - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.499 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.499 -Problem: When using any interface language when Vim is waiting for a child - process it gets confused by a child process started through the - interface. -Solution: Always used waitpid() instead of wait(). (Yasuhiro Matsumoto) -Files: src/os_unix.c - - -*** ../vim-7.3.498/src/os_unix.c 2012-02-05 22:51:27.000000000 +0100 ---- src/os_unix.c 2012-04-20 15:47:17.000000000 +0200 -*************** -*** 3734,3757 **** - - while (wait_pid != child) - { -! # ifdef _THREAD_SAFE -! /* Ugly hack: when compiled with Python threads are probably -! * used, in which case wait() sometimes hangs for no obvious -! * reason. Use waitpid() instead and loop (like the GUI). */ -! # ifdef __NeXT__ - wait_pid = wait4(child, status, WNOHANG, (struct rusage *)0); -! # else - wait_pid = waitpid(child, status, WNOHANG); -! # endif - if (wait_pid == 0) - { - /* Wait for 1/100 sec before trying again. */ - mch_delay(10L, TRUE); - continue; - } -- # else -- wait_pid = wait(status); -- # endif - if (wait_pid <= 0 - # ifdef ECHILD - && errno == ECHILD ---- 3734,3754 ---- - - while (wait_pid != child) - { -! /* When compiled with Python threads are probably used, in which case -! * wait() sometimes hangs for no obvious reason. Use waitpid() -! * instead and loop (like the GUI). Also needed for other interfaces, -! * they might call system(). */ -! # ifdef __NeXT__ - wait_pid = wait4(child, status, WNOHANG, (struct rusage *)0); -! # else - wait_pid = waitpid(child, status, WNOHANG); -! # endif - if (wait_pid == 0) - { - /* Wait for 1/100 sec before trying again. */ - mch_delay(10L, TRUE); - continue; - } - if (wait_pid <= 0 - # ifdef ECHILD - && errno == ECHILD -*** ../vim-7.3.498/src/version.c 2012-04-20 13:46:02.000000000 +0200 ---- src/version.c 2012-04-20 15:54:05.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 499, - /**/ - --- -It's not hard to meet expenses, they're everywhere. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.500 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.500 -Problem: Ming makefile unconditionally sets WINVER. -Solution: Only defined when not already defined. (Yasuhiro Matsumoto) -Files: src/Make_ming.mak - - -*** ../vim-7.3.499/src/Make_ming.mak 2012-03-28 17:43:06.000000000 +0200 ---- src/Make_ming.mak 2012-04-20 16:03:50.000000000 +0200 -*************** -*** 51,57 **** ---- 51,59 ---- - # set to yes to enable OLE support - OLE=no - # Set the default $(WINVER) to make it work with pre-Win2k -+ ifndef WINVER - WINVER = 0x0400 -+ endif - # Set to yes to enable Cscope support - CSCOPE=yes - # Set to yes to enable Netbeans support -*** ../vim-7.3.499/src/version.c 2012-04-20 15:55:10.000000000 +0200 ---- src/version.c 2012-04-20 16:12:34.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 500, - /**/ - --- -Life is a gift, living is an art. (Bram Moolenaar) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.501 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.501 -Problem: Error for "flush" not being defined when using Ruby command. -Solution: Defined "flush" as a no-op method. (Kent Sibilev) -Files: src/if_ruby.c - - -*** ../vim-7.3.500/src/if_ruby.c 2011-08-04 19:34:55.000000000 +0200 ---- src/if_ruby.c 2012-04-20 16:18:56.000000000 +0200 -*************** -*** 1238,1243 **** ---- 1238,1248 ---- - return Qnil; - } - -+ static VALUE f_nop(VALUE self) -+ { -+ return Qnil; -+ } -+ - static VALUE f_p(int argc, VALUE *argv, VALUE self UNUSED) - { - int i; -*************** -*** 1259,1264 **** ---- 1264,1270 ---- - - rb_stdout = rb_obj_alloc(rb_cObject); - rb_define_singleton_method(rb_stdout, "write", vim_message, 1); -+ rb_define_singleton_method(rb_stdout, "flush", f_nop, 0); - rb_define_global_function("p", f_p, -1); - } - -*** ../vim-7.3.500/src/version.c 2012-04-20 16:13:21.000000000 +0200 ---- src/version.c 2012-04-20 16:19:03.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 501, - /**/ - --- -Q: What do you call a fish without an eye? -A: fsh! -Q: What do you call a deer with no eyes? -A: no eye deer. -Q: What do you call a deer with no eyes and no legs? -A: still no eye deer. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.502 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.502 -Problem: Netbeans insert halfway a line actually appends to the line. -Solution: Insert halfway the line. (Brian Victor) -Files: src/netbeans.c - - -*** ../vim-7.3.501/src/netbeans.c 2012-01-10 22:31:26.000000000 +0100 ---- src/netbeans.c 2012-04-20 19:44:31.000000000 +0200 -*************** -*** 1812,1825 **** - char_u *oldline = ml_get(lnum); - char_u *newline; - -! /* Insert halfway a line. For simplicity we assume we -! * need to append to the line. */ - newline = alloc_check( - (unsigned)(STRLEN(oldline) + len + 1)); - if (newline != NULL) - { -! STRCPY(newline, oldline); - STRCAT(newline, args); - ml_replace(lnum, newline, FALSE); - } - } ---- 1812,1826 ---- - char_u *oldline = ml_get(lnum); - char_u *newline; - -! /* Insert halfway a line. */ - newline = alloc_check( - (unsigned)(STRLEN(oldline) + len + 1)); - if (newline != NULL) - { -! mch_memmove(newline, oldline, (size_t)pos->col); -! newline[pos->col] = NUL; - STRCAT(newline, args); -+ STRCAT(newline, oldline + pos->col); - ml_replace(lnum, newline, FALSE); - } - } -*** ../vim-7.3.501/src/version.c 2012-04-20 18:05:42.000000000 +0200 ---- src/version.c 2012-04-20 19:46:48.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 502, - /**/ - --- -Time flies like an arrow. -Fruit flies like a banana. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.503 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.503 (after 7.3.501) -Problem: Warning for unused argument. -Solution: Add UNUSED. -Files: src/if_ruby.c - - -*** ../vim-7.3.502/src/if_ruby.c 2012-04-20 18:05:42.000000000 +0200 ---- src/if_ruby.c 2012-04-25 12:26:38.000000000 +0200 -*************** -*** 1238,1244 **** - return Qnil; - } - -! static VALUE f_nop(VALUE self) - { - return Qnil; - } ---- 1238,1244 ---- - return Qnil; - } - -! static VALUE f_nop(VALUE self UNUSED) - { - return Qnil; - } -*** ../vim-7.3.502/src/version.c 2012-04-20 19:47:00.000000000 +0200 ---- src/version.c 2012-04-25 12:27:30.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 503, - /**/ - --- -Why isn't there mouse-flavored cat food? - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.504 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.504 -Problem: Commands in help files are not highlighted. -Solution: Allow for commands in backticks. Adjust CTRL-] to remove the - backticks. -Files: src/ex_cmds.c - - -*** ../vim-7.3.503/src/ex_cmds.c 2012-04-05 16:04:58.000000000 +0200 ---- src/ex_cmds.c 2012-04-25 12:51:41.000000000 +0200 -*************** -*** 3421,3427 **** - * and re-attach to buffer, perhaps. - */ - if (curwin->w_s == &(curwin->w_buffer->b_s)) -! curwin->w_s = &(buf->b_s); - #endif - curwin->w_buffer = buf; - curbuf = buf; ---- 3421,3427 ---- - * and re-attach to buffer, perhaps. - */ - if (curwin->w_s == &(curwin->w_buffer->b_s)) -! curwin->w_s = &(buf->b_s); - #endif - curwin->w_buffer = buf; - curbuf = buf; -*************** -*** 5965,5970 **** ---- 5965,5993 ---- - break; - } - *d = NUL; -+ -+ if (*IObuff == '`') -+ { -+ if (d > IObuff + 2 && d[-1] == '`') -+ { -+ /* remove the backticks from `command` */ -+ mch_memmove(IObuff, IObuff + 1, STRLEN(IObuff)); -+ d[-2] = NUL; -+ } -+ else if (d > IObuff + 3 && d[-2] == '`' && d[-1] == ',') -+ { -+ /* remove the backticks and comma from `command`, */ -+ mch_memmove(IObuff, IObuff + 1, STRLEN(IObuff)); -+ d[-3] = NUL; -+ } -+ else if (d > IObuff + 4 && d[-3] == '`' -+ && d[-2] == '\\' && d[-1] == '.') -+ { -+ /* remove the backticks and dot from `command`\. */ -+ mch_memmove(IObuff, IObuff + 1, STRLEN(IObuff)); -+ d[-4] = NUL; -+ } -+ } - } - } - -*** ../vim-7.3.503/src/version.c 2012-04-25 12:28:05.000000000 +0200 ---- src/version.c 2012-04-25 12:46:43.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 504, - /**/ - --- -TIM: That is not an ordinary rabbit ... 'tis the most foul cruel and - bad-tempered thing you ever set eyes on. -ROBIN: You tit. I soiled my armour I was so scared! - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.505 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.505 -Problem: Test 11 fails on MS-Windows in some versions. -Solution: Fix #ifdefs for whether filtering through a pipe is possible. Move - setting b_no_eol_lnum back to where it was before patch 7.3.124. - (David Pope) -Files: src/feature.h, src/eval.c, src/ex_cmds.c, src/fileio.c - - -*** ../vim-7.3.504/src/feature.h 2011-10-20 21:09:25.000000000 +0200 ---- src/feature.h 2012-04-25 16:44:26.000000000 +0200 -*************** -*** 1316,1318 **** ---- 1316,1326 ---- - #ifdef FEAT_NORMAL - # define FEAT_PERSISTENT_UNDO - #endif -+ -+ /* -+ * +filterpipe -+ */ -+ #if (defined(UNIX) && !defined(USE_SYSTEM)) \ -+ || (defined(WIN3264) && defined(FEAT_GUI_W32)) -+ # define FEAT_FILTERPIPE -+ #endif -*** ../vim-7.3.504/src/eval.c 2012-04-05 16:53:55.000000000 +0200 ---- src/eval.c 2012-04-25 16:43:53.000000000 +0200 -*************** -*** 12090,12096 **** - #ifdef FEAT_SEARCHPATH - "file_in_path", - #endif -! #if (defined(UNIX) && !defined(USE_SYSTEM)) || defined(WIN3264) - "filterpipe", - #endif - #ifdef FEAT_FIND_ID ---- 12090,12096 ---- - #ifdef FEAT_SEARCHPATH - "file_in_path", - #endif -! #ifdef FEAT_FILTERPIPE - "filterpipe", - #endif - #ifdef FEAT_FIND_ID -*** ../vim-7.3.504/src/ex_cmds.c 2012-04-25 12:57:23.000000000 +0200 ---- src/ex_cmds.c 2012-04-25 16:46:02.000000000 +0200 -*************** -*** 1113,1119 **** - if (do_out) - shell_flags |= SHELL_DOOUT; - -! #if (!defined(USE_SYSTEM) && defined(UNIX)) || defined(WIN3264) - if (!do_in && do_out && !p_stmp) - { - /* Use a pipe to fetch stdout of the command, do not use a temp file. */ ---- 1113,1119 ---- - if (do_out) - shell_flags |= SHELL_DOOUT; - -! #ifdef FEAT_FILTERPIPE - if (!do_in && do_out && !p_stmp) - { - /* Use a pipe to fetch stdout of the command, do not use a temp file. */ -*** ../vim-7.3.504/src/fileio.c 2012-02-29 18:22:03.000000000 +0100 ---- src/fileio.c 2012-04-25 16:40:37.000000000 +0200 -*************** -*** 2655,2664 **** - } - #endif - -- /* Reset now, following writes should not omit the EOL. Also, the line -- * number will become invalid because of edits. */ -- curbuf->b_no_eol_lnum = 0; -- - if (recoverymode && error) - return FAIL; - return OK; ---- 2655,2660 ---- -*************** -*** 5098,5103 **** ---- 5094,5101 ---- - { - aco_save_T aco; - -+ curbuf->b_no_eol_lnum = 0; /* in case it was set by the previous read */ -+ - /* - * Apply POST autocommands. - * Careful: The autocommands may call buf_write() recursively! -*** ../vim-7.3.504/src/version.c 2012-04-25 12:57:23.000000000 +0200 ---- src/version.c 2012-04-25 16:49:50.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 505, - /**/ - --- -Lose weight, NEVER Diet again with - The "Invisible Weight Loss Patch" - (spam e-mail) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.506 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.506 -Problem: GTK gives an error when selecting a non-existent file. -Solution: Add a handler to avoid the error. (Christian Brabandt) -Files: src/gui_gtk.c - - -*** ../vim-7.3.505/src/gui_gtk.c 2011-06-26 04:48:56.000000000 +0200 ---- src/gui_gtk.c 2012-04-25 17:08:58.000000000 +0200 -*************** -*** 90,95 **** ---- 90,100 ---- - static void entry_activate_cb(GtkWidget *widget, gpointer data); - static void entry_changed_cb(GtkWidget *entry, GtkWidget *dialog); - static void find_replace_cb(GtkWidget *widget, gpointer data); -+ static void recent_func_log_func( -+ const gchar *log_domain, -+ GLogLevelFlags log_level, -+ const gchar *message, -+ gpointer user_data); - - #if defined(FEAT_TOOLBAR) - /* -*************** -*** 839,844 **** ---- 844,851 ---- - GtkWidget *fc; - #endif - char_u dirbuf[MAXPATHL]; -+ guint log_handler; -+ const gchar *domain = "Gtk"; - - title = CONVERT_TO_UTF8(title); - -*************** -*** 853,858 **** ---- 860,870 ---- - /* If our pointer is currently hidden, then we should show it. */ - gui_mch_mousehide(FALSE); - -+ /* Hack: The GTK file dialog warns when it can't access a new file, this -+ * makes it shut up. http://bugzilla.gnome.org/show_bug.cgi?id=664587 */ -+ log_handler = g_log_set_handler(domain, G_LOG_LEVEL_WARNING, -+ recent_func_log_func, NULL); -+ - #ifdef USE_FILE_CHOOSER - /* We create the dialog each time, so that the button text can be "Open" - * or "Save" according to the action. */ -*************** -*** 916,921 **** ---- 928,934 ---- - gtk_widget_show(gui.filedlg); - gtk_main(); - #endif -+ g_log_remove_handler(domain, log_handler); - - CONVERT_TO_UTF8_FREE(title); - if (gui.browse_fname == NULL) -*************** -*** 1882,1884 **** ---- 1895,1908 ---- - * backwards compatibility anyway. */ - do_cmdline_cmd((char_u *)"emenu ToolBar.FindHelp"); - } -+ -+ static void -+ recent_func_log_func(const gchar *log_domain UNUSED, -+ GLogLevelFlags log_level UNUSED, -+ const gchar *message UNUSED, -+ gpointer user_data UNUSED) -+ { -+ /* We just want to suppress the warnings. */ -+ /* http://bugzilla.gnome.org/show_bug.cgi?id=664587 */ -+ } -+ -*** ../vim-7.3.505/src/version.c 2012-04-25 16:50:44.000000000 +0200 ---- src/version.c 2012-04-25 17:08:28.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 506, - /**/ - --- -Compilation process failed successfully. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.507 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.507 -Problem: When exiting with unsaved changes, selecting an existing file in - the file dialog, there is no dialog to ask whether the existing - file should be overwritten. (Felipe G. Nievinski) -Solution: Call check_overwrite() before writing. (Christian Brabandt) -Files: src/ex_cmds.c, src/ex_cmds2.c, src/proto/ex_cmds.pro - - -*** ../vim-7.3.506/src/ex_cmds.c 2012-04-25 16:50:44.000000000 +0200 ---- src/ex_cmds.c 2012-04-25 17:19:53.000000000 +0200 -*************** -*** 25,31 **** - static int read_viminfo_up_to_marks __ARGS((vir_T *virp, int forceit, int writing)); - #endif - -- static int check_overwrite __ARGS((exarg_T *eap, buf_T *buf, char_u *fname, char_u *ffname, int other)); - static int check_readonly __ARGS((int *forceit, buf_T *buf)); - #ifdef FEAT_AUTOCMD - static void delbuf_msg __ARGS((char_u *name)); ---- 25,30 ---- -*************** -*** 2722,2728 **** - * May set eap->forceit if a dialog says it's OK to overwrite. - * Return OK if it's OK, FAIL if it is not. - */ -! static int - check_overwrite(eap, buf, fname, ffname, other) - exarg_T *eap; - buf_T *buf; ---- 2721,2727 ---- - * May set eap->forceit if a dialog says it's OK to overwrite. - * Return OK if it's OK, FAIL if it is not. - */ -! int - check_overwrite(eap, buf, fname, ffname, other) - exarg_T *eap; - buf_T *buf; -*** ../vim-7.3.506/src/ex_cmds2.c 2012-03-23 18:39:10.000000000 +0100 ---- src/ex_cmds2.c 2012-04-25 17:24:37.000000000 +0200 -*************** -*** 1489,1494 **** ---- 1489,1495 ---- - char_u buff[DIALOG_MSG_SIZE]; - int ret; - buf_T *buf2; -+ exarg_T ea; - - dialog_msg(buff, _("Save changes to \"%s\"?"), - (buf->b_fname != NULL) ? -*************** -*** 1498,1510 **** - else - ret = vim_dialog_yesnocancel(VIM_QUESTION, NULL, buff, 1); - - if (ret == VIM_YES) - { - #ifdef FEAT_BROWSE - /* May get file name, when there is none */ - browse_save_fname(buf); - #endif -! if (buf->b_fname != NULL) /* didn't hit Cancel */ - (void)buf_write_all(buf, FALSE); - } - else if (ret == VIM_NO) ---- 1499,1517 ---- - else - ret = vim_dialog_yesnocancel(VIM_QUESTION, NULL, buff, 1); - -+ /* Init ea pseudo-structure, this is needed for the check_overwrite() -+ * function. */ -+ ea.append = ea.forceit = FALSE; -+ - if (ret == VIM_YES) - { - #ifdef FEAT_BROWSE - /* May get file name, when there is none */ - browse_save_fname(buf); - #endif -! if (buf->b_fname != NULL && check_overwrite(&ea, buf, -! buf->b_fname, buf->b_ffname, FALSE) == OK) -! /* didn't hit Cancel */ - (void)buf_write_all(buf, FALSE); - } - else if (ret == VIM_NO) -*************** -*** 1532,1538 **** - /* May get file name, when there is none */ - browse_save_fname(buf2); - #endif -! if (buf2->b_fname != NULL) /* didn't hit Cancel */ - (void)buf_write_all(buf2, FALSE); - #ifdef FEAT_AUTOCMD - /* an autocommand may have deleted the buffer */ ---- 1539,1547 ---- - /* May get file name, when there is none */ - browse_save_fname(buf2); - #endif -! if (buf2->b_fname != NULL && check_overwrite(&ea, buf2, -! buf2->b_fname, buf2->b_ffname, FALSE) == OK) -! /* didn't hit Cancel */ - (void)buf_write_all(buf2, FALSE); - #ifdef FEAT_AUTOCMD - /* an autocommand may have deleted the buffer */ -*** ../vim-7.3.506/src/proto/ex_cmds.pro 2010-08-15 21:57:28.000000000 +0200 ---- src/proto/ex_cmds.pro 2012-04-25 17:25:47.000000000 +0200 -*************** -*** 23,28 **** ---- 23,29 ---- - void ex_update __ARGS((exarg_T *eap)); - void ex_write __ARGS((exarg_T *eap)); - int do_write __ARGS((exarg_T *eap)); -+ int check_overwrite __ARGS((exarg_T *eap, buf_T *buf, char_u *fname, char_u *ffname, int other)); - void ex_wnext __ARGS((exarg_T *eap)); - void do_wqall __ARGS((exarg_T *eap)); - int not_writing __ARGS((void)); -*** ../vim-7.3.506/src/version.c 2012-04-25 17:10:12.000000000 +0200 ---- src/version.c 2012-04-25 17:17:30.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 507, - /**/ - --- -BROTHER MAYNARD: Armaments Chapter Two Verses Nine to Twenty One. -ANOTHER MONK: And St. Attila raised his hand grenade up on high saying "O - Lord bless this thy hand grenade that with it thou mayest - blow thine enemies to tiny bits, in thy mercy. "and the Lord - did grin and people did feast upon the lambs and sloths and - carp and anchovies and orang-utans and breakfast cereals and - fruit bats and... -BROTHER MAYNARD: Skip a bit brother ... - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.508 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.508 -Problem: Default for v:register is not set. -Solution: Init v:register in eval_init(). Correct for 'clipboard' before the - main loop. (Ingo Karkat) -Files: src/eval.c, src/main.c - - -*** ../vim-7.3.507/src/eval.c 2012-04-25 16:50:44.000000000 +0200 ---- src/eval.c 2012-04-25 17:56:41.000000000 +0200 -*************** -*** 880,885 **** ---- 880,886 ---- - hash_add(&compat_hashtab, p->vv_di.di_key); - } - set_vim_var_nr(VV_SEARCHFORWARD, 1L); -+ set_reg_var(0); /* default for v:register is not 0 but '"' */ - - #ifdef EBCDIC - /* -*** ../vim-7.3.507/src/main.c 2012-03-28 17:10:26.000000000 +0200 ---- src/main.c 2012-04-25 18:01:28.000000000 +0200 -*************** -*** 928,933 **** ---- 928,945 ---- - TIME_MSG("VimEnter autocommands"); - #endif - -+ #if defined(FEAT_EVAL) && defined(FEAT_CLIPBOARD) -+ /* Adjust default register name for "unnamed" in 'clipboard'. Can only be -+ * done after the clipboard is available and all initial commands that may -+ * modify the 'clipboard' setting have run; i.e. just before entering the -+ * main loop. */ -+ { -+ int default_regname = 0; -+ adjust_clip_reg(&default_regname); -+ set_reg_var(default_regname); -+ } -+ #endif -+ - #if defined(FEAT_DIFF) && defined(FEAT_SCROLLBIND) - /* When a startup script or session file setup for diff'ing and - * scrollbind, sync the scrollbind now. */ -*************** -*** 1357,1363 **** - { - apply_autocmds(EVENT_BUFWINLEAVE, buf->b_fname, - buf->b_fname, FALSE, buf); -! buf->b_changedtick = -1; /* note that we did it already */ - /* start all over, autocommands may mess up the lists */ - next_tp = first_tabpage; - break; ---- 1369,1375 ---- - { - apply_autocmds(EVENT_BUFWINLEAVE, buf->b_fname, - buf->b_fname, FALSE, buf); -! buf->b_changedtick = -1; /* note that we did it already */ - /* start all over, autocommands may mess up the lists */ - next_tp = first_tabpage; - break; -*** ../vim-7.3.507/src/version.c 2012-04-25 17:32:14.000000000 +0200 ---- src/version.c 2012-04-25 18:00:28.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 508, - /**/ - --- -I wonder, do vegetarians eat fruit bats? - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.509 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.509 -Problem: ":vimgrep" fails when 'autochdir' is set. -Solution: A more generic solution for changing directory. (Ben Fritz) -Files: src/quickfix.c - - -*** ../vim-7.3.508/src/quickfix.c 2012-03-07 20:13:44.000000000 +0100 ---- src/quickfix.c 2012-04-25 18:52:24.000000000 +0200 -*************** -*** 130,138 **** - static void qf_fill_buffer __ARGS((qf_info_T *qi)); - #endif - static char_u *get_mef_name __ARGS((void)); -! static buf_T *load_dummy_buffer __ARGS((char_u *fname)); -! static void wipe_dummy_buffer __ARGS((buf_T *buf)); -! static void unload_dummy_buffer __ARGS((buf_T *buf)); - static qf_info_T *ll_get_or_alloc_list __ARGS((win_T *)); - - /* Quickfix window check helper macro */ ---- 130,139 ---- - static void qf_fill_buffer __ARGS((qf_info_T *qi)); - #endif - static char_u *get_mef_name __ARGS((void)); -! static void restore_start_dir __ARGS((char_u *dirname_start)); -! static buf_T *load_dummy_buffer __ARGS((char_u *fname, char_u *dirname_start, char_u *resulting_dir)); -! static void wipe_dummy_buffer __ARGS((buf_T *buf, char_u *dirname_start)); -! static void unload_dummy_buffer __ARGS((buf_T *buf, char_u *dirname_start)); - static qf_info_T *ll_get_or_alloc_list __ARGS((win_T *)); - - /* Quickfix window check helper macro */ -*************** -*** 3237,3255 **** - - /* Load file into a buffer, so that 'fileencoding' is detected, - * autocommands applied, etc. */ -! buf = load_dummy_buffer(fname); -! -! /* When autocommands changed directory: go back. We assume it was -! * ":lcd %:p:h". */ -! mch_dirname(dirname_now, MAXPATHL); -! if (STRCMP(dirname_start, dirname_now) != 0) -! { -! exarg_T ea; -! -! ea.arg = dirname_start; -! ea.cmdidx = CMD_lcd; -! ex_cd(&ea); -! } - - p_mls = save_mls; - #if defined(FEAT_AUTOCMD) && defined(FEAT_SYN_HL) ---- 3238,3244 ---- - - /* Load file into a buffer, so that 'fileencoding' is detected, - * autocommands applied, etc. */ -! buf = load_dummy_buffer(fname, dirname_start, dirname_now); - - p_mls = save_mls; - #if defined(FEAT_AUTOCMD) && defined(FEAT_SYN_HL) -*************** -*** 3320,3326 **** - { - /* Never keep a dummy buffer if there is another buffer - * with the same name. */ -! wipe_dummy_buffer(buf); - buf = NULL; - } - else if (!cmdmod.hide ---- 3309,3315 ---- - { - /* Never keep a dummy buffer if there is another buffer - * with the same name. */ -! wipe_dummy_buffer(buf, dirname_start); - buf = NULL; - } - else if (!cmdmod.hide -*************** -*** 3336,3347 **** - * many swap files. */ - if (!found_match) - { -! wipe_dummy_buffer(buf); - buf = NULL; - } - else if (buf != first_match_buf || (flags & VGR_NOJUMP)) - { -! unload_dummy_buffer(buf); - buf = NULL; - } - } ---- 3325,3336 ---- - * many swap files. */ - if (!found_match) - { -! wipe_dummy_buffer(buf, dirname_start); - buf = NULL; - } - else if (buf != first_match_buf || (flags & VGR_NOJUMP)) - { -! unload_dummy_buffer(buf, dirname_start); - buf = NULL; - } - } -*************** -*** 3487,3499 **** - } - - /* -! * Load file "fname" into a dummy buffer and return the buffer pointer. - * Returns NULL if it fails. -- * Must call unload_dummy_buffer() or wipe_dummy_buffer() later! - */ - static buf_T * -! load_dummy_buffer(fname) - char_u *fname; - { - buf_T *newbuf; - buf_T *newbuf_to_wipe = NULL; ---- 3476,3523 ---- - } - - /* -! * Restore current working directory to "dirname_start" if they differ, taking -! * into account whether it is set locally or globally. -! */ -! static void -! restore_start_dir(dirname_start) -! char_u *dirname_start; -! { -! char_u *dirname_now = alloc(MAXPATHL); -! -! if (NULL != dirname_now) -! { -! mch_dirname(dirname_now, MAXPATHL); -! if (STRCMP(dirname_start, dirname_now) != 0) -! { -! /* If the directory has changed, change it back by building up an -! * appropriate ex command and executing it. */ -! exarg_T ea; -! -! ea.arg = dirname_start; -! ea.cmdidx = (curwin->w_localdir == NULL) ? CMD_cd : CMD_lcd; -! ex_cd(&ea); -! } -! } -! } -! -! /* -! * Load file "fname" into a dummy buffer and return the buffer pointer, -! * placing the directory resulting from the buffer load into the -! * "resulting_dir" pointer. "resulting_dir" must be allocated by the caller -! * prior to calling this function. Restores directory to "dirname_start" prior -! * to returning, if autocmds or the 'autochdir' option have changed it. -! * -! * If creating the dummy buffer does not fail, must call unload_dummy_buffer() -! * or wipe_dummy_buffer() later! -! * - * Returns NULL if it fails. - */ - static buf_T * -! load_dummy_buffer(fname, dirname_start, resulting_dir) - char_u *fname; -+ char_u *dirname_start; /* in: old directory */ -+ char_u *resulting_dir; /* out: new directory */ - { - buf_T *newbuf; - buf_T *newbuf_to_wipe = NULL; -*************** -*** 3548,3569 **** - wipe_buffer(newbuf_to_wipe, FALSE); - } - - if (!buf_valid(newbuf)) - return NULL; - if (failed) - { -! wipe_dummy_buffer(newbuf); - return NULL; - } - return newbuf; - } - - /* -! * Wipe out the dummy buffer that load_dummy_buffer() created. - */ - static void -! wipe_dummy_buffer(buf) - buf_T *buf; - { - if (curbuf != buf) /* safety check */ - { ---- 3572,3604 ---- - wipe_buffer(newbuf_to_wipe, FALSE); - } - -+ /* -+ * When autocommands/'autochdir' option changed directory: go back. -+ * Let the caller know what the resulting dir was first, in case it is -+ * important. -+ */ -+ mch_dirname(resulting_dir, MAXPATHL); -+ restore_start_dir(dirname_start); -+ - if (!buf_valid(newbuf)) - return NULL; - if (failed) - { -! wipe_dummy_buffer(newbuf, dirname_start); - return NULL; - } - return newbuf; - } - - /* -! * Wipe out the dummy buffer that load_dummy_buffer() created. Restores -! * directory to "dirname_start" prior to returning, if autocmds or the -! * 'autochdir' option have changed it. - */ - static void -! wipe_dummy_buffer(buf, dirname_start) - buf_T *buf; -+ char_u *dirname_start; - { - if (curbuf != buf) /* safety check */ - { -*************** -*** 3583,3600 **** - * new aborting error, interrupt, or uncaught exception. */ - leave_cleanup(&cs); - #endif - } - } - - /* -! * Unload the dummy buffer that load_dummy_buffer() created. - */ - static void -! unload_dummy_buffer(buf) - buf_T *buf; - { - if (curbuf != buf) /* safety check */ - close_buffer(NULL, buf, DOBUF_UNLOAD, FALSE); - } - - #if defined(FEAT_EVAL) || defined(PROTO) ---- 3618,3645 ---- - * new aborting error, interrupt, or uncaught exception. */ - leave_cleanup(&cs); - #endif -+ /* When autocommands/'autochdir' option changed directory: go back. */ -+ restore_start_dir(dirname_start); - } - } - - /* -! * Unload the dummy buffer that load_dummy_buffer() created. Restores -! * directory to "dirname_start" prior to returning, if autocmds or the -! * 'autochdir' option have changed it. - */ - static void -! unload_dummy_buffer(buf, dirname_start) - buf_T *buf; -+ char_u *dirname_start; - { - if (curbuf != buf) /* safety check */ -+ { - close_buffer(NULL, buf, DOBUF_UNLOAD, FALSE); -+ -+ /* When autocommands/'autochdir' option changed directory: go back. */ -+ restore_start_dir(dirname_start); -+ } - } - - #if defined(FEAT_EVAL) || defined(PROTO) -*** ../vim-7.3.508/src/version.c 2012-04-25 18:24:24.000000000 +0200 ---- src/version.c 2012-04-25 18:43:10.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 509, - /**/ - --- - Arthur pulls Pin out. The MONK blesses the grenade as ... -ARTHUR: (quietly) One, two, five ... -GALAHAD: Three, sir! -ARTHUR: Three. - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.510 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.510 -Problem: Test 77 fails on Solaris 7. (Michael Soyka) -Solution: Replace any tabs with spaces. -Files: src/testdir/test77.in - - -*** ../vim-7.3.509/src/testdir/test77.in 2011-03-22 18:10:34.000000000 +0100 ---- src/testdir/test77.in 2012-04-30 11:30:31.000000000 +0200 -*************** -*** 21,27 **** - :while i <= 2000000 | call append(i, range(i, i + 99)) | let i += 100 | endwhile - ggdd - :w! Xtest -! :!cksum Xtest > test.out - :qa! - ENDTEST - ---- 21,29 ---- - :while i <= 2000000 | call append(i, range(i, i + 99)) | let i += 100 | endwhile - ggdd - :w! Xtest -! :r !cksum Xtest -! :s/\s/ /g -! :.w! test.out - :qa! - ENDTEST - -*** ../vim-7.3.509/src/version.c 2012-04-25 18:57:17.000000000 +0200 ---- src/version.c 2012-04-30 11:33:35.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 510, - /**/ - --- -SIGFUN -- signature too funny (core dumped) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.511 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.511 -Problem: Using a FileReadCmd autocommand that does ":e! {file}" may cause a - crash. (Christian Brabandt) -Solution: Properly restore curwin->w_s. -Files: src/fileio.c - - -*** ../vim-7.3.510/src/fileio.c 2012-04-25 16:50:44.000000000 +0200 ---- src/fileio.c 2012-04-30 17:04:22.000000000 +0200 -*************** -*** 8982,8987 **** ---- 8982,8991 ---- - && buf_valid(aco->new_curbuf) - && aco->new_curbuf->b_ml.ml_mfp != NULL) - { -+ # if defined(FEAT_SYN_HL) || defined(FEAT_SPELL) -+ if (curwin->w_s == &curbuf->b_s) -+ curwin->w_s = &aco->new_curbuf->b_s; -+ # endif - --curbuf->b_nwindows; - curbuf = aco->new_curbuf; - curwin->w_buffer = curbuf; -*** ../vim-7.3.510/src/version.c 2012-04-30 11:34:20.000000000 +0200 ---- src/version.c 2012-04-30 17:01:05.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 511, - /**/ - --- -There is no right or wrong, there is only your personal opinion. - (Bram Moolenaar) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.512 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.512 -Problem: undofile() returns a useless name when passed an empty string. -Solution: Return an empty string. (Christian Brabandt) -Files: src/eval.c - - -*** ../vim-7.3.511/src/eval.c 2012-04-25 18:24:24.000000000 +0200 ---- src/eval.c 2012-04-30 17:23:26.000000000 +0200 -*************** -*** 18259,18269 **** - rettv->v_type = VAR_STRING; - #ifdef FEAT_PERSISTENT_UNDO - { -! char_u *ffname = FullName_save(get_tv_string(&argvars[0]), FALSE); - -! if (ffname != NULL) -! rettv->vval.v_string = u_get_undo_file_name(ffname, FALSE); -! vim_free(ffname); - } - #else - rettv->vval.v_string = NULL; ---- 18259,18279 ---- - rettv->v_type = VAR_STRING; - #ifdef FEAT_PERSISTENT_UNDO - { -! char_u *fname = get_tv_string(&argvars[0]); - -! if (*fname == NUL) -! { -! /* If there is no file name there will be no undo file. */ -! rettv->vval.v_string = NULL; -! } -! else -! { -! char_u *ffname = FullName_save(fname, FALSE); -! -! if (ffname != NULL) -! rettv->vval.v_string = u_get_undo_file_name(ffname, FALSE); -! vim_free(ffname); -! } - } - #else - rettv->vval.v_string = NULL; -*** ../vim-7.3.511/src/version.c 2012-04-30 17:04:47.000000000 +0200 ---- src/version.c 2012-04-30 17:24:42.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 512, - /**/ - --- -It is illegal for a driver to be blindfolded while operating a vehicle. - [real standing law in Alabama, United States of America] - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.513 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.513 -Problem: Cannot use CTRL-E and CTRL-Y with "r". -Solution: Make CTRL-E and CTRL-Y work like in Insert mode. (Christian - Brabandt) -Files: src/edit.c, src/normal.c, src/proto/edit.pro - - -*** ../vim-7.3.512/src/edit.c 2012-04-05 16:07:01.000000000 +0200 ---- src/edit.c 2012-04-30 17:53:47.000000000 +0200 -*************** -*** 253,259 **** - #ifdef FEAT_DIGRAPHS - static int ins_digraph __ARGS((void)); - #endif -- static int ins_copychar __ARGS((linenr_T lnum)); - static int ins_ctrl_ey __ARGS((int tc)); - #ifdef FEAT_SMARTINDENT - static void ins_try_si __ARGS((int c)); ---- 253,258 ---- -*************** -*** 9899,9905 **** - * Handle CTRL-E and CTRL-Y in Insert mode: copy char from other line. - * Returns the char to be inserted, or NUL if none found. - */ -! static int - ins_copychar(lnum) - linenr_T lnum; - { ---- 9898,9904 ---- - * Handle CTRL-E and CTRL-Y in Insert mode: copy char from other line. - * Returns the char to be inserted, or NUL if none found. - */ -! int - ins_copychar(lnum) - linenr_T lnum; - { -*** ../vim-7.3.512/src/normal.c 2012-03-28 12:59:53.000000000 +0200 ---- src/normal.c 2012-04-30 18:06:13.000000000 +0200 -*************** -*** 7070,7076 **** - for (n = cap->count1; n > 0; --n) - { - State = REPLACE; -! ins_char(cap->nchar); - State = old_State; - if (cap->ncharC1 != 0) - ins_char(cap->ncharC1); ---- 7070,7087 ---- - for (n = cap->count1; n > 0; --n) - { - State = REPLACE; -! if (cap->nchar == Ctrl_E || cap->nchar == Ctrl_Y) -! { -! int c = ins_copychar(curwin->w_cursor.lnum -! + (cap->nchar == Ctrl_Y ? -1 : 1)); -! if (c != NUL) -! ins_char(c); -! else -! /* will be decremented further down */ -! ++curwin->w_cursor.col; -! } -! else -! ins_char(cap->nchar); - State = old_State; - if (cap->ncharC1 != 0) - ins_char(cap->ncharC1); -*************** -*** 7092,7098 **** - * line will be changed. - */ - ptr = ml_get_buf(curbuf, curwin->w_cursor.lnum, TRUE); -! ptr[curwin->w_cursor.col] = cap->nchar; - if (p_sm && msg_silent == 0) - showmatch(cap->nchar); - ++curwin->w_cursor.col; ---- 7103,7117 ---- - * line will be changed. - */ - ptr = ml_get_buf(curbuf, curwin->w_cursor.lnum, TRUE); -! if (cap->nchar == Ctrl_E || cap->nchar == Ctrl_Y) -! { -! int c = ins_copychar(curwin->w_cursor.lnum -! + (cap->nchar == Ctrl_Y ? -1 : 1)); -! if (c != NUL) -! ptr[curwin->w_cursor.col] = c; -! } -! else -! ptr[curwin->w_cursor.col] = cap->nchar; - if (p_sm && msg_silent == 0) - showmatch(cap->nchar); - ++curwin->w_cursor.col; -*** ../vim-7.3.512/src/proto/edit.pro 2010-08-15 21:57:28.000000000 +0200 ---- src/proto/edit.pro 2012-04-30 17:54:41.000000000 +0200 -*************** -*** 39,42 **** ---- 39,43 ---- - int hkmap __ARGS((int c)); - void ins_scroll __ARGS((void)); - void ins_horscroll __ARGS((void)); -+ int ins_copychar __ARGS((linenr_T lnum)); - /* vim: set ft=c : */ -*** ../vim-7.3.512/src/version.c 2012-04-30 17:35:44.000000000 +0200 ---- src/version.c 2012-04-30 18:17:52.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 513, - /**/ - --- -It is illegal for anyone to try and stop a child from playfully jumping over -puddles of water. - [real standing law in California, United States of America] - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.514 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.514 -Problem: No completion for :history command. -Solution: Add the completion and update the docs. Also fix ":behave" - completion. (Dominique Pelle) -Files: runtime/doc/cmdline.txt, runtime/doc/map.txt, src/ex_docmd.c, - src/ex_getln.c, src/vim.h - - -*** ../vim-7.3.513/runtime/doc/cmdline.txt 2010-08-15 21:57:17.000000000 +0200 ---- runtime/doc/cmdline.txt 2012-04-30 18:30:00.000000000 +0200 -*************** -*** 330,341 **** - - :his[tory] [{name}] [{first}][, [{last}]] - List the contents of history {name} which can be: -! c[md] or : command-line history -! s[earch] or / search string history -! e[xpr] or = expression register history -! i[nput] or @ input line history -! d[ebug] or > debug command history -! a[ll] all of the above - {not in Vi} - - If the numbers {first} and/or {last} are given, the respective ---- 330,341 ---- - - :his[tory] [{name}] [{first}][, [{last}]] - List the contents of history {name} which can be: -! c[md] or : command-line history -! s[earch] or / or ? search string history -! e[xpr] or = expression register history -! i[nput] or @ input line history -! d[ebug] or > debug command history -! a[ll] all of the above - {not in Vi} - - If the numbers {first} and/or {last} are given, the respective -*** ../vim-7.3.513/runtime/doc/map.txt 2011-07-20 16:36:35.000000000 +0200 ---- runtime/doc/map.txt 2012-04-30 18:30:00.000000000 +0200 -*************** -*** 1202,1207 **** ---- 1219,1225 ---- - - -complete=augroup autocmd groups - -complete=buffer buffer names -+ -complete=behave :behave suboptions - -complete=color color schemes - -complete=command Ex command (and arguments) - -complete=compiler compilers -*************** -*** 1216,1221 **** ---- 1234,1240 ---- - -complete=function function name - -complete=help help subjects - -complete=highlight highlight groups -+ -complete=history :history suboptions - -complete=locale locale names (as output of locale -a) - -complete=mapping mapping name - -complete=menu menus -*** ../vim-7.3.513/src/ex_docmd.c 2012-02-12 20:13:55.000000000 +0100 ---- src/ex_docmd.c 2012-04-30 18:33:27.000000000 +0200 -*************** -*** 3920,3927 **** ---- 3920,3935 ---- - #endif - case CMD_behave: - xp->xp_context = EXPAND_BEHAVE; -+ xp->xp_pattern = arg; - break; - -+ #if defined(FEAT_CMDHIST) -+ case CMD_history: -+ xp->xp_context = EXPAND_HISTORY; -+ xp->xp_pattern = arg; -+ break; -+ #endif -+ - #endif /* FEAT_CMDL_COMPL */ - - default: -*************** -*** 5329,5334 **** ---- 5337,5343 ---- - } command_complete[] = - { - {EXPAND_AUGROUP, "augroup"}, -+ {EXPAND_BEHAVE, "behave"}, - {EXPAND_BUFFERS, "buffer"}, - {EXPAND_COLORS, "color"}, - {EXPAND_COMMANDS, "command"}, -*************** -*** 5350,5357 **** - {EXPAND_FUNCTIONS, "function"}, - {EXPAND_HELP, "help"}, - {EXPAND_HIGHLIGHT, "highlight"}, - #if (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \ -! && (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE)) - {EXPAND_LOCALES, "locale"}, - #endif - {EXPAND_MAPPINGS, "mapping"}, ---- 5359,5369 ---- - {EXPAND_FUNCTIONS, "function"}, - {EXPAND_HELP, "help"}, - {EXPAND_HIGHLIGHT, "highlight"}, -+ #if defined(FEAT_CMDHIST) -+ {EXPAND_HISTORY, "history"}, -+ #endif - #if (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \ -! && (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE)) - {EXPAND_LOCALES, "locale"}, - #endif - {EXPAND_MAPPINGS, "mapping"}, -*** ../vim-7.3.513/src/ex_getln.c 2012-03-07 19:16:49.000000000 +0100 ---- src/ex_getln.c 2012-04-30 18:36:04.000000000 +0200 -*************** -*** 25,31 **** - int cmdlen; /* number of chars in command line */ - int cmdpos; /* current cursor position */ - int cmdspos; /* cursor column on screen */ -! int cmdfirstc; /* ':', '/', '?', '=' or NUL */ - int cmdindent; /* number of spaces before cmdline */ - char_u *cmdprompt; /* message in front of cmdline */ - int cmdattr; /* attributes for prompt */ ---- 25,31 ---- - int cmdlen; /* number of chars in command line */ - int cmdpos; /* current cursor position */ - int cmdspos; /* cursor column on screen */ -! int cmdfirstc; /* ':', '/', '?', '=', '>' or NUL */ - int cmdindent; /* number of spaces before cmdline */ - char_u *cmdprompt; /* message in front of cmdline */ - int cmdattr; /* attributes for prompt */ -*************** -*** 111,116 **** ---- 111,119 ---- - #ifdef FEAT_CMDL_COMPL - static int expand_shellcmd __ARGS((char_u *filepat, int *num_file, char_u ***file, int flagsarg)); - static int ExpandRTDir __ARGS((char_u *pat, int *num_file, char_u ***file, char *dirname[])); -+ # ifdef FEAT_CMDHIST -+ static char_u *get_history_arg __ARGS((expand_T *xp, int idx)); -+ # endif - # if defined(FEAT_USR_CMDS) && defined(FEAT_EVAL) - static int ExpandUserDefined __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file)); - static int ExpandUserList __ARGS((expand_T *xp, int *num_file, char_u ***file)); -*************** -*** 4628,4633 **** ---- 4631,4639 ---- - { - {EXPAND_COMMANDS, get_command_name, FALSE, TRUE}, - {EXPAND_BEHAVE, get_behave_arg, TRUE, TRUE}, -+ #ifdef FEAT_CMDHIST -+ {EXPAND_HISTORY, get_history_arg, TRUE, TRUE}, -+ #endif - #ifdef FEAT_USR_CMDS - {EXPAND_USER_COMMANDS, get_user_commands, FALSE, TRUE}, - {EXPAND_USER_CMD_FLAGS, get_user_cmd_flags, FALSE, TRUE}, -*************** -*** 5245,5250 **** ---- 5251,5284 ---- - NULL - }; - -+ #if defined(FEAT_CMDL_COMPL) || defined(PROTO) -+ /* -+ * Function given to ExpandGeneric() to obtain the possible first -+ * arguments of the ":history command. -+ */ -+ static char_u * -+ get_history_arg(xp, idx) -+ expand_T *xp UNUSED; -+ int idx; -+ { -+ static char_u compl[2] = { NUL, NUL }; -+ char *short_names = ":=@>?/"; -+ int short_names_count = STRLEN(short_names); -+ int history_name_count = sizeof(history_names) / sizeof(char *) - 1; -+ -+ if (idx < short_names_count) -+ { -+ compl[0] = (char_u)short_names[idx]; -+ return compl; -+ } -+ if (idx < short_names_count + history_name_count) -+ return (char_u *)history_names[idx - short_names_count]; -+ if (idx == short_names_count + history_name_count) -+ return (char_u *)"all"; -+ return NULL; -+ } -+ #endif -+ - /* - * init_history() - Initialize the command line history. - * Also used to re-allocate the history when the size changes. -*** ../vim-7.3.513/src/vim.h 2012-03-23 16:25:13.000000000 +0100 ---- src/vim.h 2012-04-30 18:30:00.000000000 +0200 -*************** -*** 781,786 **** ---- 781,787 ---- - #define EXPAND_FILES_IN_PATH 38 - #define EXPAND_OWNSYNTAX 39 - #define EXPAND_LOCALES 40 -+ #define EXPAND_HISTORY 41 - - /* Values for exmode_active (0 is no exmode) */ - #define EXMODE_NORMAL 1 -*** ../vim-7.3.513/src/version.c 2012-04-30 18:18:43.000000000 +0200 ---- src/version.c 2012-04-30 18:36:19.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 514, - /**/ - --- -You can be stopped by the police for biking over 65 miles per hour. -You are not allowed to walk across a street on your hands. - [real standing laws in Connecticut, United States of America] - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.515 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.515 -Problem: 'wildignorecase' only applies to the last part of the path. -Solution: Also ignore case for letters earlier in the path. -Files: src/misc1.c - - -*** ../vim-7.3.514/src/misc1.c 2012-04-09 20:42:20.000000000 +0200 ---- src/misc1.c 2012-04-30 21:00:18.000000000 +0200 -*************** -*** 9461,9466 **** ---- 9461,9467 ---- - - /* - * Find the first part in the path name that contains a wildcard. -+ * When EW_ICASE is set every letter is considered to be a wildcard. - * Copy it into "buf", including the preceding characters. - */ - p = buf; -*************** -*** 9480,9486 **** - s = p + 1; - } - else if (path_end >= path + wildoff -! && vim_strchr((char_u *)"*?[{~$", *path_end) != NULL) - e = p; - #ifdef FEAT_MBYTE - if (has_mbyte) ---- 9481,9492 ---- - s = p + 1; - } - else if (path_end >= path + wildoff -! && (vim_strchr((char_u *)"*?[{~$", *path_end) != NULL -! #ifndef CASE_INSENSITIVE_FILENAME -! || ((flags & EW_ICASE) -! && isalpha(PTR2CHAR(path_end))) -! #endif -! )) - e = p; - #ifdef FEAT_MBYTE - if (has_mbyte) -*** ../vim-7.3.514/src/version.c 2012-04-30 18:48:38.000000000 +0200 ---- src/version.c 2012-04-30 21:05:10.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 515, - /**/ - --- -If an elephant is left tied to a parking meter, the parking fee has to be paid -just as it would for a vehicle. - [real standing law in Florida, United States of America] - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.516 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.516 -Problem: extend(o, o) may crash Vim. -Solution: Fix crash and add test. (Thinca and Hirohito Higashi) -Files: src/eval.c, src/testdir/test55.in, src/testdir/test55.ok - - -*** ../vim-7.3.515/src/eval.c 2012-04-30 17:35:44.000000000 +0200 ---- src/eval.c 2012-05-18 12:02:44.000000000 +0200 -*************** -*** 10191,10197 **** - EMSG2(_("E737: Key already exists: %s"), hi2->hi_key); - break; - } -! else if (*action == 'f') - { - clear_tv(&di1->di_tv); - copy_tv(&HI2DI(hi2)->di_tv, &di1->di_tv); ---- 10191,10197 ---- - EMSG2(_("E737: Key already exists: %s"), hi2->hi_key); - break; - } -! else if (*action == 'f' && HI2DI(hi2) != di1) - { - clear_tv(&di1->di_tv); - copy_tv(&HI2DI(hi2)->di_tv, &di1->di_tv); -*** ../vim-7.3.515/src/testdir/test55.in 2010-11-10 20:31:24.000000000 +0100 ---- src/testdir/test55.in 2012-05-18 11:57:23.000000000 +0200 -*************** -*** 352,357 **** ---- 352,375 ---- - :let dict4copy = deepcopy(dict4) - :$put =(l == lcopy) - :$put =(dict4 == dict4copy) -+ :" -+ :" Pass the same List to extend() -+ :let l = [1, 2, 3, 4, 5] -+ :call extend(l, l) -+ :$put =string(l) -+ :" -+ :" Pass the same Dict to extend() -+ :let d = { 'a': {'b': 'B'}} -+ :call extend(d, d) -+ :$put =string(d) -+ :" -+ :" Pass the same Dict to extend() with "error" -+ :try -+ : call extend(d, d, "error") -+ :catch -+ : $put =v:exception[:15] . v:exception[-1:-1] -+ :endtry -+ :$put =string(d) - :endfun - :" - :call Test(1, 2, [3, 4], {5: 6}) " This may take a while -*** ../vim-7.3.515/src/testdir/test55.ok 2010-11-10 20:31:24.000000000 +0100 ---- src/testdir/test55.ok 2012-05-18 11:57:01.000000000 +0200 -*************** -*** 111,113 **** ---- 111,117 ---- - 0 - 1 - 1 -+ [1, 2, 3, 4, 5, 1, 2, 3, 4, 5] -+ {'a': {'b': 'B'}} -+ Vim(call):E737: a -+ {'a': {'b': 'B'}} -*** ../vim-7.3.515/src/version.c 2012-04-30 21:09:38.000000000 +0200 ---- src/version.c 2012-05-18 12:04:54.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 516, - /**/ - --- -I used to wonder about the meaning of life. But I looked it -up in the dictionary under "L" and there it was - the meaning -of life. It was less than I expected. - Dogbert - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.517 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.517 -Problem: Crash when using "vipvv". (Alexandre Provencio) -Solution: Don't let the text length become negative. -Files: src/ops.c - - -*** ../vim-7.3.516/src/ops.c 2012-04-20 13:46:02.000000000 +0200 ---- src/ops.c 2012-05-18 12:28:09.000000000 +0200 -*************** -*** 3042,3047 **** ---- 3042,3049 ---- - } - #endif - } -+ if (endcol == MAXCOL) -+ endcol = (colnr_T)STRLEN(p); - if (startcol > endcol - #ifdef FEAT_VIRTUALEDIT - || is_oneChar -*************** -*** 3050,3057 **** - bd.textlen = 0; - else - { -- if (endcol == MAXCOL) -- endcol = (colnr_T)STRLEN(p); - bd.textlen = endcol - startcol + oap->inclusive; - } - bd.textstart = p + startcol; ---- 3052,3057 ---- -*** ../vim-7.3.516/src/version.c 2012-05-18 12:06:58.000000000 +0200 ---- src/version.c 2012-05-18 12:48:51.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 517, - /**/ - --- -BODY: I'm not dead! -CART DRIVER: 'Ere. He says he's not dead. -LARGE MAN: Yes he is. -BODY: I'm not! - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.518 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.518 -Problem: When 'encoding' is a double-byte encoding ":helptags" may not find - tags correctly. -Solution: Use vim_strbyte() instead of vim_strchr(). (Yasuhiro Matsumoto) -Files: src/ex_cmds.c - - -*** ../vim-7.3.517/src/ex_cmds.c 2012-04-25 17:32:14.000000000 +0200 ---- src/ex_cmds.c 2012-05-18 16:20:20.000000000 +0200 -*************** -*** 6535,6541 **** - p1 = vim_strchr(IObuff, '*'); /* find first '*' */ - while (p1 != NULL) - { -! p2 = vim_strchr(p1 + 1, '*'); /* find second '*' */ - if (p2 != NULL && p2 > p1 + 1) /* skip "*" and "**" */ - { - for (s = p1 + 1; s < p2; ++s) ---- 6535,6544 ---- - p1 = vim_strchr(IObuff, '*'); /* find first '*' */ - while (p1 != NULL) - { -! /* Use vim_strbyte() instead of vim_strchr() so that when -! * 'encoding' is dbcs it still works, don't find '*' in the -! * second byte. */ -! p2 = vim_strbyte(p1 + 1, '*'); /* find second '*' */ - if (p2 != NULL && p2 > p1 + 1) /* skip "*" and "**" */ - { - for (s = p1 + 1; s < p2; ++s) -*** ../vim-7.3.517/src/version.c 2012-05-18 12:49:33.000000000 +0200 ---- src/version.c 2012-05-18 16:23:50.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 518, - /**/ - --- -If all you have is a hammer, everything looks like a nail. -When your hammer is C++, everything begins to look like a thumb. - -- Steve Hoflich, comp.lang.c++ - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.519 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.519 -Problem: When completefunction returns it cannot indicate end of completion - mode. -Solution: Recognize completefunction returning -3. (Mtsushita Shougo) -Files: src/edit.c - - -*** ../vim-7.3.518/src/edit.c 2012-04-30 18:18:43.000000000 +0200 ---- src/edit.c 2012-05-18 16:35:06.000000000 +0200 -*************** -*** 5205,5213 **** - } - - /* Return value -2 means the user complete function wants to -! * cancel the complete without an error. */ - if (col == -2) - return FAIL; - - /* - * Reset extended parameters of completion, when start new ---- 5205,5221 ---- - } - - /* Return value -2 means the user complete function wants to -! * cancel the complete without an error. -! * Return value -3 does the same as -2 and leaves CTRL-X mode.*/ - if (col == -2) - return FAIL; -+ if (col == -3) -+ { -+ ctrl_x_mode = 0; -+ edit_submode = NULL; -+ msg_clr_cmdline(); -+ return FAIL; -+ } - - /* - * Reset extended parameters of completion, when start new -*** ../vim-7.3.518/src/version.c 2012-05-18 16:24:06.000000000 +0200 ---- src/version.c 2012-05-18 16:34:27.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 519, - /**/ - --- -Looking at Perl through Lisp glasses, Perl looks atrocious. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.520 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.520 -Problem: Gvim starts up slow on Unbuntu 12.04. -Solution: Move the call to gui_mch_init_check() to after fork(). (Yasuhiro - Matsumoto) Do check $DISPLAY being set. -Files: src/gui.c, src/gui_gtk_x11.c, src/proto/gui_gtk_x11.pro - - -*** ../vim-7.3.519/src/gui.c 2011-10-20 21:27:57.000000000 +0200 ---- src/gui.c 2012-05-18 16:53:14.000000000 +0200 -*************** -*** 270,275 **** ---- 270,281 ---- - } - /* Child */ - -+ #ifdef FEAT_GUI_GTK -+ /* Call gtk_init_check() here after fork(). See gui_init_check(). */ -+ if (gui_mch_init_check() != OK) -+ exit(1); -+ #endif -+ - # if defined(HAVE_SETSID) || defined(HAVE_SETPGID) - /* - * Change our process group. On some systems/shells a CTRL-C in the -*************** -*** 430,436 **** ---- 436,452 ---- - #ifdef ALWAYS_USE_GUI - result = OK; - #else -+ # ifdef FEAT_GUI_GTK -+ /* -+ * Note: Don't call gtk_init_check() before fork, it will be called after -+ * the fork. When calling it before fork, it make vim hang for a while. -+ * See gui_do_fork(). -+ * Use a simpler check if the GUI window can probably be opened. -+ */ -+ result = gui.dofork ? gui_mch_early_init_check() : gui_mch_init_check(); -+ # else - result = gui_mch_init_check(); -+ # endif - #endif - return result; - } -*** ../vim-7.3.519/src/gui_gtk_x11.c 2011-10-26 11:36:21.000000000 +0200 ---- src/gui_gtk_x11.c 2012-05-18 17:00:45.000000000 +0200 -*************** -*** 1414,1420 **** - } - - /* -! * Check if the GUI can be started. Called before gvimrc is sourced. - * Return OK or FAIL. - */ - int ---- 1414,1442 ---- - } - - /* -! * Check if the GUI can be started. Called before gvimrc is sourced and -! * before fork(). -! * Return OK or FAIL. -! */ -! int -! gui_mch_early_init_check(void) -! { -! char_u *p; -! -! /* Guess that when $DISPLAY isn't set the GUI can't start. */ -! p = mch_getenv((char_u *)"DISPLAY"); -! if (p == NULL || *p == NUL) -! { -! gui.dying = TRUE; -! EMSG(_((char *)e_opendisp)); -! return FAIL; -! } -! return OK; -! } -! -! /* -! * Check if the GUI can be started. Called before gvimrc is sourced but after -! * fork(). - * Return OK or FAIL. - */ - int -*************** -*** 3050,3056 **** - - for (i = 0; i < (int)N_SELECTION_TARGETS; ++i) - { -! /* OpenOffice tries to use TARGET_HTML and fails when it doesn't - * return something, instead of trying another target. Therefore only - * offer TARGET_HTML when it works. */ - if (!clip_html && selection_targets[i].info == TARGET_HTML) ---- 3072,3078 ---- - - for (i = 0; i < (int)N_SELECTION_TARGETS; ++i) - { -! /* OpenOffice tries to use TARGET_HTML and fails when we don't - * return something, instead of trying another target. Therefore only - * offer TARGET_HTML when it works. */ - if (!clip_html && selection_targets[i].info == TARGET_HTML) -*** ../vim-7.3.519/src/proto/gui_gtk_x11.pro 2011-08-10 17:44:41.000000000 +0200 ---- src/proto/gui_gtk_x11.pro 2012-05-18 16:54:28.000000000 +0200 -*************** -*** 4,9 **** ---- 4,10 ---- - void gui_mch_set_blinking __ARGS((long waittime, long on, long off)); - void gui_mch_stop_blink __ARGS((void)); - void gui_mch_start_blink __ARGS((void)); -+ int gui_mch_early_init_check __ARGS((void)); - int gui_mch_init_check __ARGS((void)); - void gui_mch_show_tabline __ARGS((int showit)); - int gui_mch_showing_tabline __ARGS((void)); -*** ../vim-7.3.519/src/version.c 2012-05-18 16:35:17.000000000 +0200 ---- src/version.c 2012-05-18 16:45:30.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 520, - /**/ - --- -Bad programs can be written in any language. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.521 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.521 -Problem: Using "z=" on a multi-byte character may cause a crash. -Solution: Don't use strlen() on an int pointer. -Files: src/spell.c - - -*** ../vim-7.3.520/src/spell.c 2012-01-10 22:26:12.000000000 +0100 ---- src/spell.c 2012-05-18 18:01:58.000000000 +0200 -*************** -*** 14494,14506 **** - int p0 = -333; - int c0; - int did_white = FALSE; - - /* - * Convert the multi-byte string to a wide-character string. - * Remove accents, if wanted. We actually remove all non-word characters. - * But keep white space. - */ -! n = 0; - for (s = inword; *s != NUL; ) - { - t = s; ---- 14494,14508 ---- - int p0 = -333; - int c0; - int did_white = FALSE; -+ int wordlen; -+ - - /* - * Convert the multi-byte string to a wide-character string. - * Remove accents, if wanted. We actually remove all non-word characters. - * But keep white space. - */ -! wordlen = 0; - for (s = inword; *s != NUL; ) - { - t = s; -*************** -*** 14521,14532 **** - continue; - } - } -! word[n++] = c; - } -! word[n] = NUL; - - /* -! * This comes from Aspell phonet.cpp. - * Converted from C++ to C. Added support for multi-byte chars. - * Changed to keep spaces. - */ ---- 14523,14534 ---- - continue; - } - } -! word[wordlen++] = c; - } -! word[wordlen] = NUL; - - /* -! * This algorithm comes from Aspell phonet.cpp. - * Converted from C++ to C. Added support for multi-byte chars. - * Changed to keep spaces. - */ -*************** -*** 14711,14717 **** - } - if (k > k0) - mch_memmove(word + i + k0, word + i + k, -! sizeof(int) * (STRLEN(word + i + k) + 1)); - - /* new "actual letter" */ - c = word[i]; ---- 14713,14719 ---- - } - if (k > k0) - mch_memmove(word + i + k0, word + i + k, -! sizeof(int) * (wordlen - (i + k) + 1)); - - /* new "actual letter" */ - c = word[i]; -*************** -*** 14739,14745 **** - if (c != NUL) - wres[reslen++] = c; - mch_memmove(word, word + i + 1, -! sizeof(int) * (STRLEN(word + i + 1) + 1)); - i = 0; - z0 = 1; - } ---- 14741,14747 ---- - if (c != NUL) - wres[reslen++] = c; - mch_memmove(word, word + i + 1, -! sizeof(int) * (wordlen - (i + 1) + 1)); - i = 0; - z0 = 1; - } -*** ../vim-7.3.520/src/version.c 2012-05-18 17:03:14.000000000 +0200 ---- src/version.c 2012-05-18 18:06:29.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 521, - /**/ - --- -OLD WOMAN: King of the WHO? -ARTHUR: The Britons. -OLD WOMAN: Who are the Britons? - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.522 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.522 -Problem: Crash in vim_realloc() when using MEM_PROFILE. -Solution: Avoid using a NULL argument. (Dominique Pelle) -Files: src/eval.c - - -*** ../vim-7.3.521/src/eval.c 2012-05-18 12:06:58.000000000 +0200 ---- src/eval.c 2012-05-18 18:19:25.000000000 +0200 -*************** -*** 14643,14649 **** - long growmin = (long)((p - start) * 2 + prevlen); - prevsize = grow50pc > growmin ? grow50pc : growmin; - } -! if ((newprev = vim_realloc(prev, prevsize)) == NULL) - { - do_outofmem_msg((long_u)prevsize); - failed = TRUE; ---- 14643,14651 ---- - long growmin = (long)((p - start) * 2 + prevlen); - prevsize = grow50pc > growmin ? grow50pc : growmin; - } -! newprev = prev == NULL ? alloc(prevsize) -! : vim_realloc(prev, prevsize); -! if (newprev == NULL) - { - do_outofmem_msg((long_u)prevsize); - failed = TRUE; -*** ../vim-7.3.521/src/version.c 2012-05-18 18:07:57.000000000 +0200 ---- src/version.c 2012-05-18 18:33:36.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 522, - /**/ - --- -ARTHUR: ... and I am your king .... -OLD WOMAN: Ooooh! I didn't know we had a king. I thought we were an - autonomous collective ... - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.523 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.523 -Problem: ":diffupdate" doesn't check for files changed elsewhere. -Solution: Add the ! flag. (Christian Brabandt) -Files: runtime/doc/diff.txt, src/diff.c, src/ex_cmds.h - - -*** ../vim-7.3.522/runtime/doc/diff.txt 2010-08-15 21:57:16.000000000 +0200 ---- runtime/doc/diff.txt 2012-05-18 18:41:49.000000000 +0200 -*************** -*** 178,184 **** - nodiff" before hiding it. - - *:diffu* *:diffupdate* -! :diffu[pdate] Update the diff highlighting and folds. - - Vim attempts to keep the differences updated when you make changes to the - text. This mostly takes care of inserted and deleted lines. Changes within a ---- 178,184 ---- - nodiff" before hiding it. - - *:diffu* *:diffupdate* -! :diffu[pdate][!] Update the diff highlighting and folds. - - Vim attempts to keep the differences updated when you make changes to the - text. This mostly takes care of inserted and deleted lines. Changes within a -*************** -*** 187,192 **** ---- 187,195 ---- - - :diffupdate - -+ If the ! is included Vim will check if the file was changed externally and -+ needs to be reloaded. It will prompt for each changed file, like `:checktime` -+ was used. - - Vim will show filler lines for lines that are missing in one window but are - present in another. These lines were inserted in another file or deleted in -*** ../vim-7.3.522/src/diff.c 2010-09-21 16:56:29.000000000 +0200 ---- src/diff.c 2012-05-18 18:45:09.000000000 +0200 -*************** -*** 783,788 **** ---- 783,797 ---- - goto theend; - } - -+ /* :diffupdate! */ -+ if (eap != NULL && eap->forceit) -+ for (idx_new = idx_orig; idx_new < DB_COUNT; ++idx_new) -+ { -+ buf = curtab->tp_diffbuf[idx_new]; -+ if (buf_valid(buf)) -+ buf_check_timestamp(buf, FALSE); -+ } -+ - /* Write the first buffer to a tempfile. */ - buf = curtab->tp_diffbuf[idx_orig]; - if (diff_write(buf, tmp_orig) == FAIL) -*** ../vim-7.3.522/src/ex_cmds.h 2012-02-13 00:01:38.000000000 +0100 ---- src/ex_cmds.h 2012-05-18 18:37:56.000000000 +0200 -*************** -*** 304,310 **** - EX(CMD_display, "display", ex_display, - EXTRA|NOTRLCOM|TRLBAR|SBOXOK|CMDWIN), - EX(CMD_diffupdate, "diffupdate", ex_diffupdate, -! TRLBAR), - EX(CMD_diffget, "diffget", ex_diffgetput, - RANGE|EXTRA|TRLBAR|MODIFY), - EX(CMD_diffoff, "diffoff", ex_diffoff, ---- 304,310 ---- - EX(CMD_display, "display", ex_display, - EXTRA|NOTRLCOM|TRLBAR|SBOXOK|CMDWIN), - EX(CMD_diffupdate, "diffupdate", ex_diffupdate, -! BANG|TRLBAR), - EX(CMD_diffget, "diffget", ex_diffgetput, - RANGE|EXTRA|TRLBAR|MODIFY), - EX(CMD_diffoff, "diffoff", ex_diffoff, -*** ../vim-7.3.522/src/version.c 2012-05-18 18:34:15.000000000 +0200 ---- src/version.c 2012-05-18 18:39:13.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 523 - /**/ - --- -"The future's already arrived - it's just not evenly distributed yet." - -- William Gibson - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.524 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.524 (after 7.3.523) -Problem: Missing comma. -Solution: Add the comma. -Files: src/version.c - - -*** ../vim-7.3.523/src/version.c 2012-05-18 18:47:11.000000000 +0200 ---- src/version.c 2012-05-18 21:52:26.000000000 +0200 -*************** -*** 715,721 **** - static int included_patches[] = - { /* Add new patch number below this line */ - /**/ -! 523 - /**/ - 522, - /**/ ---- 715,723 ---- - static int included_patches[] = - { /* Add new patch number below this line */ - /**/ -! 524, -! /**/ -! 523, - /**/ - 522, - /**/ - --- -DENNIS: You can't expect to wield supreme executive power just 'cause some - watery tart threw a sword at you! - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.525 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.525 -Problem: Compiler warning on 64 bit MS-Windows. -Solution: Add type cast. (Mike Williams) -Files: src/ex_getln.c - - -*** ../vim-7.3.524/src/ex_getln.c 2012-04-30 18:48:38.000000000 +0200 ---- src/ex_getln.c 2012-05-23 20:33:16.000000000 +0200 -*************** -*** 5263,5269 **** - { - static char_u compl[2] = { NUL, NUL }; - char *short_names = ":=@>?/"; -! int short_names_count = STRLEN(short_names); - int history_name_count = sizeof(history_names) / sizeof(char *) - 1; - - if (idx < short_names_count) ---- 5263,5269 ---- - { - static char_u compl[2] = { NUL, NUL }; - char *short_names = ":=@>?/"; -! int short_names_count = (int)STRLEN(short_names); - int history_name_count = sizeof(history_names) / sizeof(char *) - 1; - - if (idx < short_names_count) -*** ../vim-7.3.524/src/version.c 2012-05-18 21:53:29.000000000 +0200 ---- src/version.c 2012-05-25 11:01:51.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 525, - /**/ - --- -For humans, honesty is a matter of degree. Engineers are always honest in -matters of technology and human relationships. That's why it's a good idea -to keep engineers away from customers, romantic interests, and other people -who can't handle the truth. - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.526 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.526 -Problem: Confusing indenting for #ifdef. -Solution: Remove and add indent. (Elias Diem) -Files: src/normal.c - - -*** ../vim-7.3.525/src/normal.c 2012-04-30 18:18:43.000000000 +0200 ---- src/normal.c 2012-05-23 20:35:13.000000000 +0200 -*************** -*** 29,37 **** - static void set_vcount_ca __ARGS((cmdarg_T *cap, int *set_prevcount)); - #endif - static int -! # ifdef __BORLANDC__ -! _RTLENTRYF -! # endif - nv_compare __ARGS((const void *s1, const void *s2)); - static int find_command __ARGS((int cmdchar)); - static void op_colon __ARGS((oparg_T *oap)); ---- 29,37 ---- - static void set_vcount_ca __ARGS((cmdarg_T *cap, int *set_prevcount)); - #endif - static int -! #ifdef __BORLANDC__ -! _RTLENTRYF -! #endif - nv_compare __ARGS((const void *s1, const void *s2)); - static int find_command __ARGS((int cmdchar)); - static void op_colon __ARGS((oparg_T *oap)); -*** ../vim-7.3.525/src/version.c 2012-05-25 11:02:34.000000000 +0200 ---- src/version.c 2012-05-25 11:03:37.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 526, - /**/ - --- -While it's true that many normal people whould prefer not to _date_ an -engineer, most normal people harbor an intense desire to _mate_ with them, -thus producing engineerlike children who will have high-paying jobs long -before losing their virginity. - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.527 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=latin1 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.527 -Problem: Clang complains about non-ASCII characters in a string. -Solution: Change to \x88 form. (Dominique Pelle) -Files: src/charset.c - - -*** ../vim-7.3.526/src/charset.c 2012-01-26 13:40:04.000000000 +0100 ---- src/charset.c 2012-05-25 11:49:58.000000000 +0200 -*************** -*** 1602,1611 **** - #define LATIN1LOWER 'l' - #define LATIN1UPPER 'U' - -- /* !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]%_'abcdefghijklmnopqrstuvwxyz{|}~ ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ */ - static char_u latin1flags[257] = " UUUUUUUUUUUUUUUUUUUUUUUUUU llllllllllllllllllllllllll UUUUUUUUUUUUUUUUUUUUUUU UUUUUUUllllllllllllllllllllllll llllllll"; -! static char_u latin1upper[257] = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ÷ØÙÚÛÜÝÞÿ"; -! static char_u latin1lower[257] = " !\"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿àáâãäåæçèéêëìíîïðñòóôõö×øùúûüýþßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"; - - int - vim_islower(c) ---- 1602,1610 ---- - #define LATIN1LOWER 'l' - #define LATIN1UPPER 'U' - - static char_u latin1flags[257] = " UUUUUUUUUUUUUUUUUUUUUUUUUU llllllllllllllllllllllllll UUUUUUUUUUUUUUUUUUUUUUU UUUUUUUllllllllllllllllllllllll llllllll"; -! static char_u latin1upper[257] = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xf7\xd8\xd9\xda\xdb\xdc\xdd\xde\xff"; -! static char_u latin1lower[257] = " !\"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xd7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"; - - int - vim_islower(c) -*** ../vim-7.3.526/src/version.c 2012-05-25 11:04:34.000000000 +0200 ---- src/version.c 2012-05-25 11:52:06.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 527, - /**/ - --- -An alien life briefly visits earth. Just before departing it leaves a -message in the dust on the back of a white van. The world is shocked -and wants to know what it means. After months of studies the worlds -best linguistic scientists are able to decipher the message: "Wash me!". - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.528 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.528 -Problem: Crash when closing last window in a tab. (Alex Efros) -Solution: Use common code in close_last_window_tabpage(). (Christian - Brabandt) -Files: src/window.c - - -*** ../vim-7.3.527/src/window.c 2012-03-16 19:07:54.000000000 +0100 ---- src/window.c 2012-05-25 12:25:16.000000000 +0200 -*************** -*** 23,28 **** ---- 23,29 ---- - static void win_totop __ARGS((int size, int flags)); - static void win_equal_rec __ARGS((win_T *next_curwin, int current, frame_T *topfr, int dir, int col, int row, int width, int height)); - static int last_window __ARGS((void)); -+ static int close_last_window_tabpage __ARGS((win_T *win, int free_buf, tabpage_T *prev_curtab)); - static win_T *win_free_mem __ARGS((win_T *win, int *dirp, tabpage_T *tp)); - static frame_T *win_altframe __ARGS((win_T *win, tabpage_T *tp)); - static tabpage_T *alt_tabpage __ARGS((void)); -*************** -*** 2105,2110 **** ---- 2106,2147 ---- - } - - /* -+ * Close the possibly last window in a tab page. -+ * Returns TRUE when the window was closed already. -+ */ -+ static int -+ close_last_window_tabpage(win, free_buf, prev_curtab) -+ win_T *win; -+ int free_buf; -+ tabpage_T *prev_curtab; -+ { -+ if (firstwin == lastwin) -+ { -+ /* -+ * Closing the last window in a tab page. First go to another tab -+ * page and then close the window and the tab page. This avoids that -+ * curwin and curtab are invalid while we are freeing memory, they may -+ * be used in GUI events. -+ */ -+ goto_tabpage_tp(alt_tabpage()); -+ redraw_tabline = TRUE; -+ -+ /* Safety check: Autocommands may have closed the window when jumping -+ * to the other tab page. */ -+ if (valid_tabpage(prev_curtab) && prev_curtab->tp_firstwin == win) -+ { -+ int h = tabline_height(); -+ -+ win_close_othertab(win, free_buf, prev_curtab); -+ if (h != tabline_height()) -+ shell_new_rows(); -+ } -+ return TRUE; -+ } -+ return FALSE; -+ } -+ -+ /* - * Close window "win". Only works for the current tab page. - * If "free_buf" is TRUE related buffer may be unloaded. - * -*************** -*** 2143,2171 **** - } - #endif - -! /* -! * When closing the last window in a tab page first go to another tab -! * page and then close the window and the tab page. This avoids that -! * curwin and curtab are not invalid while we are freeing memory, they may -! * be used in GUI events. -! */ -! if (firstwin == lastwin) -! { -! goto_tabpage_tp(alt_tabpage()); -! redraw_tabline = TRUE; -! -! /* Safety check: Autocommands may have closed the window when jumping -! * to the other tab page. */ -! if (valid_tabpage(prev_curtab) && prev_curtab->tp_firstwin == win) -! { -! int h = tabline_height(); -! -! win_close_othertab(win, free_buf, prev_curtab); -! if (h != tabline_height()) -! shell_new_rows(); -! } -! return; -! } - - /* When closing the help window, try restoring a snapshot after closing - * the window. Otherwise clear the snapshot, it's now invalid. */ ---- 2180,2190 ---- - } - #endif - -! /* When closing the last window in a tab page first go to another tab page -! * and then close the window and the tab page to avoid that curwin and -! * curtab are invalid while we are freeing memory. */ -! if (close_last_window_tabpage(win, free_buf, prev_curtab)) -! return; - - /* When closing the help window, try restoring a snapshot after closing - * the window. Otherwise clear the snapshot, it's now invalid. */ -*************** -*** 2225,2231 **** - - /* Autocommands may have closed the window already, or closed the only - * other window or moved to another tab page. */ -! if (!win_valid(win) || last_window() || curtab != prev_curtab) - return; - - /* Free the memory used for the window and get the window that received ---- 2244,2251 ---- - - /* Autocommands may have closed the window already, or closed the only - * other window or moved to another tab page. */ -! if (!win_valid(win) || last_window() || curtab != prev_curtab -! || close_last_window_tabpage(win, free_buf, prev_curtab)) - return; - - /* Free the memory used for the window and get the window that received -*************** -*** 2310,2316 **** - - /* - * Close window "win" in tab page "tp", which is not the current tab page. -! * This may be the last window ih that tab page and result in closing the tab, - * thus "tp" may become invalid! - * Caller must check if buffer is hidden and whether the tabline needs to be - * updated. ---- 2330,2336 ---- - - /* - * Close window "win" in tab page "tp", which is not the current tab page. -! * This may be the last window in that tab page and result in closing the tab, - * thus "tp" may become invalid! - * Caller must check if buffer is hidden and whether the tabline needs to be - * updated. -*** ../vim-7.3.527/src/version.c 2012-05-25 11:56:06.000000000 +0200 ---- src/version.c 2012-05-25 12:38:25.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 528, - /**/ - --- -For society, it's probably a good thing that engineers value function over -appearance. For example, you wouldn't want engineers to build nuclear power -plants that only _look_ like they would keep all the radiation inside. - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.529 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.529 -Problem: Using a count before "v" and "V" does not work (Kikyous) -Solution: Make the count select that many characters or lines. (Christian - Brabandt) -Files: src/normal.c - - -*** ../vim-7.3.528/src/normal.c 2012-05-25 11:04:34.000000000 +0200 ---- src/normal.c 2012-05-25 13:12:06.000000000 +0200 -*************** -*** 7660,7672 **** - else /* start Visual mode */ - { - check_visual_highlight(); -! if (cap->count0) /* use previously selected part */ - { -! if (resel_VIsual_mode == NUL) /* there is none */ -! { -! beep_flush(); -! return; -! } - VIsual = curwin->w_cursor; - - VIsual_active = TRUE; ---- 7660,7668 ---- - else /* start Visual mode */ - { - check_visual_highlight(); -! if (cap->count0 > 0 && resel_VIsual_mode != NUL) - { -! /* use previously selected part */ - VIsual = curwin->w_cursor; - - VIsual_active = TRUE; -*************** -*** 7725,7730 **** ---- 7721,7736 ---- - /* start Select mode when 'selectmode' contains "cmd" */ - may_start_select('c'); - n_start_visual_mode(cap->cmdchar); -+ if (VIsual_mode != 'V' && *p_sel == 'e') -+ ++cap->count1; /* include one more char */ -+ if (cap->count0 > 0 && --cap->count1 > 0) -+ { -+ /* With a count select that many characters or lines. */ -+ if (VIsual_mode == 'v' || VIsual_mode == Ctrl_V) -+ nv_right(cap); -+ else if (VIsual_mode == 'V') -+ nv_down(cap); -+ } - } - } - } -*** ../vim-7.3.528/src/version.c 2012-05-25 12:38:57.000000000 +0200 ---- src/version.c 2012-05-25 12:59:58.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 529, - /**/ - --- -Normal people believe that if it ain't broke, don't fix it. Engineers believe -that if it ain't broke, it doesn't have enough features yet. - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.530 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.530 (after 7.3.520) -Problem: Gvim does not work when 'guioptions' includes "f". (Davido) -Solution: Call gui_mch_init_check() when running GUI in the foreground. - (Yasuhiro Matsumoto) -Files: src/gui.c - - -*** ../vim-7.3.529/src/gui.c 2012-05-18 17:03:13.000000000 +0200 ---- src/gui.c 2012-05-25 14:01:26.000000000 +0200 -*************** -*** 102,107 **** ---- 102,111 ---- - else - #endif - { -+ /* If there is 'f' in 'guioptions' and specify -g argument, -+ * gui_mch_init_check() was not called yet. */ -+ if (gui_mch_init_check() != OK) -+ exit(1); - gui_attempt_start(); - } - -*** ../vim-7.3.529/src/version.c 2012-05-25 13:12:33.000000000 +0200 ---- src/version.c 2012-05-25 14:05:46.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 530, - /**/ - --- -I think that you'll agree that engineers are very effective in their social -interactions. It's the "normal" people who are nuts. - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.531 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.531 (after 7.3.530) -Problem: GUI does not work on MS-Windows. -Solution: Add the missing #ifdef. (Patrick Avery) -Files: src/gui.c - - -*** ../vim-7.3.530/src/gui.c 2012-05-25 14:06:18.000000000 +0200 ---- src/gui.c 2012-05-27 00:34:51.000000000 +0200 -*************** -*** 102,111 **** ---- 102,113 ---- - else - #endif - { -+ #ifdef FEAT_GUI_GTK - /* If there is 'f' in 'guioptions' and specify -g argument, - * gui_mch_init_check() was not called yet. */ - if (gui_mch_init_check() != OK) - exit(1); -+ #endif - gui_attempt_start(); - } - -*** ../vim-7.3.530/src/version.c 2012-05-25 14:06:18.000000000 +0200 ---- src/version.c 2012-05-27 00:37:33.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 531, - /**/ - --- -I learned the customs and mannerisms of engineers by observing them, much the -way Jane Goodall learned about the great apes, but without the hassle of -grooming. - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.532 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.532 -Problem: Compiler warning from Clang. -Solution: Use a different way to point inside a string. (Dominique Pelle) -Files: src/syntax.c - - -*** ../vim-7.3.531/src/syntax.c 2012-03-23 16:25:13.000000000 +0100 ---- src/syntax.c 2012-06-01 13:13:58.000000000 +0200 -*************** -*** 9476,9482 **** - int cnt; - int attr; - { -! msg_puts_attr((char_u *)("N \bI \b! \b" + cnt / 11), attr); - msg_clr_eos(); - out_flush(); - ui_delay(cnt == 99 ? 40L : (long)cnt * 50L, FALSE); ---- 9476,9482 ---- - int cnt; - int attr; - { -! msg_puts_attr((char_u *)&("N \bI \b! \b"[cnt / 11]), attr); - msg_clr_eos(); - out_flush(); - ui_delay(cnt == 99 ? 40L : (long)cnt * 50L, FALSE); -*** ../vim-7.3.531/src/version.c 2012-05-27 00:37:45.000000000 +0200 ---- src/version.c 2012-06-01 13:14:51.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 532, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -8. You spend half of the plane trip with your laptop on your lap...and your - child in the overhead compartment. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.533 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.533 -Problem: Memory leak when writing undo file. -Solution: Free the ACL. (Dominique Pelle) -Files: src/undo.c - - -*** ../vim-7.3.532/src/undo.c 2011-12-08 15:14:04.000000000 +0100 ---- src/undo.c 2012-06-01 13:38:42.000000000 +0200 -*************** -*** 1535,1540 **** ---- 1535,1541 ---- - /* For systems that support ACL: get the ACL from the original file. */ - acl = mch_get_acl(buf->b_ffname); - mch_set_acl(file_name, acl); -+ mch_free_acl(acl); - } - #endif - -*** ../vim-7.3.532/src/version.c 2012-06-01 13:18:48.000000000 +0200 ---- src/version.c 2012-06-01 13:39:16.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 533, - /**/ - --- -"How is your new girlfriend?" -"90-60-90 man!" -"What, pale purple?" - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.534 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.534 (after 7.3.461) -Problem: When using an InsertCharPre autocommand autoindent fails. -Solution: Proper handling of v:char. (Alexey Radkov) -Files: src/edit.c - - -*** ../vim-7.3.533/src/edit.c 2012-05-18 16:35:17.000000000 +0200 ---- src/edit.c 2012-06-01 14:41:06.000000000 +0200 -*************** -*** 10108,10129 **** - do_insert_char_pre(c) - int c; - { -! char_u *res; - - /* Return quickly when there is nothing to do. */ - if (!has_insertcharpre()) - return NULL; - - /* Lock the text to avoid weird things from happening. */ - ++textlock; -! set_vim_var_char(c); /* set v:char */ - - if (apply_autocmds(EVENT_INSERTCHARPRE, NULL, NULL, FALSE, curbuf)) -! /* Get the new value of v:char. It may be empty or more than one -! * character. */ -! res = vim_strsave(get_vim_var_str(VV_CHAR)); -! else -! res = NULL; - - set_vim_var_string(VV_CHAR, NULL, -1); /* clear v:char */ - --textlock; ---- 10108,10147 ---- - do_insert_char_pre(c) - int c; - { -! char_u *res; -! #ifdef FEAT_MBYTE -! char_u buf[MB_MAXBYTES + 1]; -! #else -! char_u buf[2]; -! #endif - - /* Return quickly when there is nothing to do. */ - if (!has_insertcharpre()) - return NULL; - -+ #ifdef FEAT_MBYTE -+ if (has_mbyte) -+ buf[(*mb_char2bytes)(c, buf)] = NUL; -+ else -+ #endif -+ { -+ buf[0] = c; -+ buf[1] = NUL; -+ } -+ - /* Lock the text to avoid weird things from happening. */ - ++textlock; -! set_vim_var_string(VV_CHAR, buf, -1); /* set v:char */ - -+ res = NULL; - if (apply_autocmds(EVENT_INSERTCHARPRE, NULL, NULL, FALSE, curbuf)) -! { -! /* Get the value of v:char. It may be empty or more than one -! * character. Only use it when changed, otherwise continue with the -! * original character to avoid breaking autoindent. */ -! if (STRCMP(buf, get_vim_var_str(VV_CHAR)) != 0) -! res = vim_strsave(get_vim_var_str(VV_CHAR)); -! } - - set_vim_var_string(VV_CHAR, NULL, -1); /* clear v:char */ - --textlock; -*** ../vim-7.3.533/src/version.c 2012-06-01 13:46:06.000000000 +0200 ---- src/version.c 2012-06-01 14:42:19.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 534, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -11. You find yourself typing "com" after every period when using a word - processor.com - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.535 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.535 -Problem: Many #ifdefs for MB_MAXBYTES. -Solution: Also define MB_MAXBYTES without the +multi_byte feature. Fix - places where the buffer didn't include space for a NUL byte. -Files: src/arabic.c, src/edit.c, src/eval.c, src/getchar.c, src/mbyte.c, - src/misc1.c, src/screen.c, src/spell.c, src/vim.h - - -*** ../vim-7.3.534/src/arabic.c 2010-08-15 21:57:28.000000000 +0200 ---- src/arabic.c 2012-06-01 14:59:37.000000000 +0200 -*************** -*** 1066,1072 **** - - if (curr_c != c && ccp != NULL) - { -! char_u buf[MB_MAXBYTES]; - - /* Update the first byte of the character. */ - (*mb_char2bytes)(curr_c, buf); ---- 1066,1072 ---- - - if (curr_c != c && ccp != NULL) - { -! char_u buf[MB_MAXBYTES + 1]; - - /* Update the first byte of the character. */ - (*mb_char2bytes)(curr_c, buf); -*** ../vim-7.3.534/src/edit.c 2012-06-01 14:57:47.000000000 +0200 ---- src/edit.c 2012-06-01 15:01:49.000000000 +0200 -*************** -*** 1648,1658 **** - #define PC_STATUS_RIGHT 1 /* right halve of double-wide char */ - #define PC_STATUS_LEFT 2 /* left halve of double-wide char */ - #define PC_STATUS_SET 3 /* pc_bytes was filled */ -- #ifdef FEAT_MBYTE - static char_u pc_bytes[MB_MAXBYTES + 1]; /* saved bytes */ -- #else -- static char_u pc_bytes[2]; /* saved bytes */ -- #endif - static int pc_attr; - static int pc_row; - static int pc_col; ---- 1648,1654 ---- -*************** -*** 6819,6829 **** - char_u *s; - - vim_free(last_insert); -- #ifdef FEAT_MBYTE - last_insert = alloc(MB_MAXBYTES * 3 + 5); -- #else -- last_insert = alloc(6); -- #endif - if (last_insert != NULL) - { - s = last_insert; ---- 6815,6821 ---- -*************** -*** 6861,6867 **** - char_u *s; - { - #ifdef FEAT_MBYTE -! char_u temp[MB_MAXBYTES]; - int i; - int len; - ---- 6853,6859 ---- - char_u *s; - { - #ifdef FEAT_MBYTE -! char_u temp[MB_MAXBYTES + 1]; - int i; - int len; - -*************** -*** 7423,7429 **** - int cc; - { - int n; -! char_u buf[MB_MAXBYTES]; - int i; - int c; - ---- 7415,7421 ---- - int cc; - { - int n; -! char_u buf[MB_MAXBYTES + 1]; - int i; - int c; - -*************** -*** 10109,10119 **** - int c; - { - char_u *res; -- #ifdef FEAT_MBYTE - char_u buf[MB_MAXBYTES + 1]; -- #else -- char_u buf[2]; -- #endif - - /* Return quickly when there is nothing to do. */ - if (!has_insertcharpre()) ---- 10101,10107 ---- -*** ../vim-7.3.534/src/eval.c 2012-05-18 18:34:15.000000000 +0200 ---- src/eval.c 2012-06-01 15:02:08.000000000 +0200 -*************** -*** 19170,19180 **** - set_vim_var_char(c) - int c; - { -! #ifdef FEAT_MBYTE -! char_u buf[MB_MAXBYTES]; -! #else -! char_u buf[2]; -! #endif - - #ifdef FEAT_MBYTE - if (has_mbyte) ---- 19170,19176 ---- - set_vim_var_char(c) - int c; - { -! char_u buf[MB_MAXBYTES + 1]; - - #ifdef FEAT_MBYTE - if (has_mbyte) -*** ../vim-7.3.534/src/getchar.c 2012-04-05 16:07:01.000000000 +0200 ---- src/getchar.c 2012-06-01 15:03:51.000000000 +0200 -*************** -*** 723,729 **** - int c; - #ifdef FEAT_MBYTE - int n; -! char_u buf[MB_MAXBYTES]; - int i; - #endif - ---- 723,729 ---- - int c; - #ifdef FEAT_MBYTE - int n; -! char_u buf[MB_MAXBYTES + 1]; - int i; - #endif - -*************** -*** 1072,1078 **** - int c; - { - #ifdef FEAT_MBYTE -! char_u buf[MB_MAXBYTES]; - #else - char_u buf[4]; - #endif ---- 1072,1078 ---- - int c; - { - #ifdef FEAT_MBYTE -! char_u buf[MB_MAXBYTES + 1]; - #else - char_u buf[4]; - #endif -*************** -*** 1547,1553 **** - int c, c2; - #ifdef FEAT_MBYTE - int n; -! char_u buf[MB_MAXBYTES]; - int i; - #endif - ---- 1547,1553 ---- - int c, c2; - #ifdef FEAT_MBYTE - int n; -! char_u buf[MB_MAXBYTES + 1]; - int i; - #endif - -*************** -*** 4335,4345 **** - int scol; /* starting column of the abbr. */ - int j; - char_u *s; -- #ifdef FEAT_MBYTE - char_u tb[MB_MAXBYTES + 4]; -- #else -- char_u tb[4]; -- #endif - mapblock_T *mp; - #ifdef FEAT_LOCALMAP - mapblock_T *mp2; ---- 4335,4341 ---- -*** ../vim-7.3.534/src/mbyte.c 2012-03-07 19:38:52.000000000 +0100 ---- src/mbyte.c 2012-06-01 15:04:27.000000000 +0200 -*************** -*** 708,714 **** - */ - n = (i & 0x80) ? 2 : 1; - # else -! char buf[MB_MAXBYTES]; - # ifdef X_LOCALE - # ifndef mblen - # define mblen _Xmblen ---- 708,714 ---- - */ - n = (i & 0x80) ? 2 : 1; - # else -! char buf[MB_MAXBYTES + 1]; - # ifdef X_LOCALE - # ifndef mblen - # define mblen _Xmblen -*************** -*** 1953,1959 **** - /* - * Convert the character at screen position "off" to a sequence of bytes. - * Includes the composing characters. -! * "buf" must at least have the length MB_MAXBYTES. - * Only to be used when ScreenLinesUC[off] != 0. - * Returns the produced number of bytes. - */ ---- 1953,1959 ---- - /* - * Convert the character at screen position "off" to a sequence of bytes. - * Includes the composing characters. -! * "buf" must at least have the length MB_MAXBYTES + 1. - * Only to be used when ScreenLinesUC[off] != 0. - * Returns the produced number of bytes. - */ -*** ../vim-7.3.534/src/misc1.c 2012-04-30 21:09:38.000000000 +0200 ---- src/misc1.c 2012-06-01 15:04:56.000000000 +0200 -*************** -*** 1932,1938 **** - int c; - { - #if defined(FEAT_MBYTE) || defined(PROTO) -! char_u buf[MB_MAXBYTES]; - int n; - - n = (*mb_char2bytes)(c, buf); ---- 1932,1938 ---- - int c; - { - #if defined(FEAT_MBYTE) || defined(PROTO) -! char_u buf[MB_MAXBYTES + 1]; - int n; - - n = (*mb_char2bytes)(c, buf); -*** ../vim-7.3.534/src/screen.c 2012-03-23 16:25:13.000000000 +0100 ---- src/screen.c 2012-06-01 15:06:03.000000000 +0200 -*************** -*** 6621,6636 **** - int row, col; - int attr; - { -- #ifdef FEAT_MBYTE - char_u buf[MB_MAXBYTES + 1]; - -! buf[(*mb_char2bytes)(c, buf)] = NUL; -! #else -! char_u buf[2]; -! -! buf[0] = c; -! buf[1] = NUL; - #endif - screen_puts(buf, row, col, attr); - } - ---- 6621,6637 ---- - int row, col; - int attr; - { - char_u buf[MB_MAXBYTES + 1]; - -! #ifdef FEAT_MBYTE -! if (has_mbyte) -! buf[(*mb_char2bytes)(c, buf)] = NUL; -! else - #endif -+ { -+ buf[0] = c; -+ buf[1] = NUL; -+ } - screen_puts(buf, row, col, attr); - } - -*** ../vim-7.3.534/src/spell.c 2012-05-18 18:07:57.000000000 +0200 ---- src/spell.c 2012-06-01 15:06:30.000000000 +0200 -*************** -*** 13694,13700 **** - { - int m1, m2; - #ifdef FEAT_MBYTE -! char_u buf[MB_MAXBYTES]; - hashitem_T *hi; - - if (c1 >= 256) ---- 13694,13700 ---- - { - int m1, m2; - #ifdef FEAT_MBYTE -! char_u buf[MB_MAXBYTES + 1]; - hashitem_T *hi; - - if (c1 >= 256) -*** ../vim-7.3.534/src/vim.h 2012-04-30 18:48:38.000000000 +0200 ---- src/vim.h 2012-06-01 14:59:28.000000000 +0200 -*************** -*** 1703,1708 **** ---- 1703,1710 ---- - * character of up to 6 bytes, or one 16-bit character of up to three bytes - * plus six following composing characters of three bytes each. */ - # define MB_MAXBYTES 21 -+ #else -+ # define MB_MAXBYTES 1 - #endif - - #if (defined(FEAT_PROFILE) || defined(FEAT_RELTIME)) && !defined(PROTO) -*************** -*** 2017,2022 **** ---- 2019,2025 ---- - #pragma warning(disable : 4312) - #endif - -+ /* Note: a NULL argument for vim_realloc() is not portable, don't use it. */ - #if defined(MEM_PROFILE) - # define vim_realloc(ptr, size) mem_realloc((ptr), (size)) - #else -*** ../vim-7.3.534/src/version.c 2012-06-01 14:57:47.000000000 +0200 ---- src/version.c 2012-06-01 15:08:20.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 535, - /**/ - --- -Me? A skeptic? I trust you have proof. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.536 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.536 -Problem: When spell checking the German sharp s is not seen as a word - character. (Aexl Bender) -Solution: In utf_islower() return true for the sharp s. Note: also need - updated spell file for this to take effect. -Files: src/mbyte.c - - -*** ../vim-7.3.535/src/mbyte.c 2012-06-01 15:20:49.000000000 +0200 ---- src/mbyte.c 2012-06-01 16:50:41.000000000 +0200 -*************** -*** 2949,2955 **** - { - {0x61,0x7a,1,-32}, - {0xb5,0xb5,-1,743}, -! {0xe0,0xf6,1,-32}, - {0xf8,0xfe,1,-32}, - {0xff,0xff,-1,121}, - {0x101,0x12f,2,-1}, ---- 2949,2955 ---- - { - {0x61,0x7a,1,-32}, - {0xb5,0xb5,-1,743}, -! {0xe0,0xf6,1,-32}, /* 0xdf (German sharp s) is not upper-cased */ - {0xf8,0xfe,1,-32}, - {0xff,0xff,-1,121}, - {0x101,0x12f,2,-1}, -*************** -*** 3129,3135 **** - utf_islower(a) - int a; - { -! return (utf_toupper(a) != a); - } - - /* ---- 3129,3136 ---- - utf_islower(a) - int a; - { -! /* German sharp s is lower case but has no upper case equivalent. */ -! return (utf_toupper(a) != a) || a == 0xdf; - } - - /* -*** ../vim-7.3.535/src/version.c 2012-06-01 15:20:49.000000000 +0200 ---- src/version.c 2012-06-01 17:45:17.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 536, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -16. You step out of your room and realize that your parents have moved and - you don't have a clue when it happened. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.537 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.537 -Problem: Unecessary call to init_spell_chartab(). -Solution: Delete the call. -Files: src/spell.c - - -*** ../vim-7.3.536/src/spell.c 2012-06-01 15:20:49.000000000 +0200 ---- src/spell.c 2012-06-01 17:49:44.000000000 +0200 -*************** -*** 4721,4728 **** - int_wordlist = NULL; - } - -- init_spell_chartab(); -- - vim_free(repl_to); - repl_to = NULL; - vim_free(repl_from); ---- 4721,4726 ---- -*** ../vim-7.3.536/src/version.c 2012-06-01 17:46:52.000000000 +0200 ---- src/version.c 2012-06-01 17:49:08.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 537, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -17. You turn on your intercom when leaving the room so you can hear if new - e-mail arrives. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.538 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.538 -Problem: 'efm' does not handle Tabs in pointer lines. -Solution: Add Tab support. Improve tests. (Lech Lorens) -Files: src/quickfix.c, src/testdir/test10.in, src/testdir/test10.ok - - -*** ../vim-7.3.537/src/quickfix.c 2012-04-25 18:57:17.000000000 +0200 ---- src/quickfix.c 2012-06-01 18:24:07.000000000 +0200 -*************** -*** 247,253 **** - {'t', "."}, - {'m', ".\\+"}, - {'r', ".*"}, -! {'p', "[- .]*"}, - {'v', "\\d\\+"}, - {'s', ".\\+"} - }; ---- 247,253 ---- - {'t', "."}, - {'m', ".\\+"}, - {'r', ".*"}, -! {'p', "[- .]*"}, - {'v', "\\d\\+"}, - {'s', ".\\+"} - }; -*************** -*** 677,687 **** - } - if ((i = (int)fmt_ptr->addr[7]) > 0) /* %p */ - { - if (regmatch.startp[i] == NULL || regmatch.endp[i] == NULL) - continue; -! col = (int)(regmatch.endp[i] - regmatch.startp[i] + 1); -! if (*((char_u *)regmatch.startp[i]) != TAB) -! use_viscol = TRUE; - } - if ((i = (int)fmt_ptr->addr[8]) > 0) /* %v */ - { ---- 677,699 ---- - } - if ((i = (int)fmt_ptr->addr[7]) > 0) /* %p */ - { -+ char_u *match_ptr; -+ - if (regmatch.startp[i] == NULL || regmatch.endp[i] == NULL) - continue; -! col = 0; -! for (match_ptr = regmatch.startp[i]; -! match_ptr != regmatch.endp[i]; ++match_ptr) -! { -! ++col; -! if (*match_ptr == TAB) -! { -! col += 7; -! col -= col % 8; -! } -! } -! ++col; -! use_viscol = TRUE; - } - if ((i = (int)fmt_ptr->addr[8]) > 0) /* %v */ - { -*** ../vim-7.3.537/src/testdir/test10.in 2011-08-10 18:36:49.000000000 +0200 ---- src/testdir/test10.in 2012-06-01 18:22:40.000000000 +0200 -*************** -*** 8,48 **** - :7/start of errorfile/,/end of errorfile/w! Xerrorfile1 - :7/start of errorfile/,/end of errorfile/-1w! Xerrorfile2 - :/start of testfile/,/end of testfile/w! Xtestfile - :cf Xerrorfile2 - :clast - :copen - :let a=w:quickfix_title - :wincmd p -! gR=a
- :cf Xerrorfile1 -! rA - :cn -! rB - :cn -! rC - :cn -! rD - :cn -! rE - :cn - :wincmd w - :let a=w:quickfix_title - :wincmd p -! gR=a
- :w! test.out " Write contents of this file - :qa! - ENDTEST - - start of errorfile - "Xtestfile", line 4.12: 1506-045 (S) Undeclared identifier fd_set. -! "Xtestfile", line 7 col 19; this is an error - gcc -c -DHAVE_CONFIsing-prototypes -I/usr/X11R6/include version.c -! Xtestfile:13: parse error before `asd' - make: *** [vim] Error 1 -! in file "Xtestfile" linenr 16: there is an error - - 2 returned -! "Xtestfile", linenr 19: yet another problem - - Does anyone know what is the problem and how to correction it? - "Xtestfile", line 21 col 9: What is the title of the quickfix window? ---- 8,88 ---- - :7/start of errorfile/,/end of errorfile/w! Xerrorfile1 - :7/start of errorfile/,/end of errorfile/-1w! Xerrorfile2 - :/start of testfile/,/end of testfile/w! Xtestfile -+ :set efm+==%f=\\,\ line\ %l%*\\D%v%*[^\ ]\ %m -+ :set efm^=%AError\ in\ \"%f\"\ at\ line\ %l:,%Z%p^,%C%m - :cf Xerrorfile2 - :clast - :copen - :let a=w:quickfix_title - :wincmd p -! lgR=a
- :cf Xerrorfile1 -! grA - :cn -! gRLINE 6, COL 19 - :cn -! gRNO COLUMN SPECIFIED - :cn -! gRAGAIN NO COLUMN - :cn -! gRCOL 1 - :cn -+ gRCOL 2 -+ :cn -+ gRCOL 10 -+ :cn -+ gRVCOL 10 -+ :cn -+ grI -+ :cn -+ gR. SPACE POINTER -+ :cn -+ gR. DOT POINTER -+ :cn -+ gR. DASH POINTER -+ :cn -+ gR. TAB-SPACE POINTER -+ :clast -+ :cprev -+ :cprev - :wincmd w - :let a=w:quickfix_title - :wincmd p -! lgR=a
- :w! test.out " Write contents of this file - :qa! - ENDTEST - - start of errorfile - "Xtestfile", line 4.12: 1506-045 (S) Undeclared identifier fd_set. -! "Xtestfile", line 6 col 19; this is an error - gcc -c -DHAVE_CONFIsing-prototypes -I/usr/X11R6/include version.c -! Xtestfile:9: parse error before `asd' - make: *** [vim] Error 1 -! in file "Xtestfile" linenr 10: there is an error - - 2 returned -! "Xtestfile", line 11 col 1; this is an error -! "Xtestfile", line 12 col 2; this is another error -! "Xtestfile", line 14:10; this is an error in column 10 -! =Xtestfile=, line 15:10; this is another error, but in vcol 10 this time -! "Xtestfile", linenr 16: yet another problem -! Error in "Xtestfile" at line 17: -! x should be a dot -! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 17 -! ^ -! Error in "Xtestfile" at line 18: -! x should be a dot -! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 18 -! .............^ -! Error in "Xtestfile" at line 19: -! x should be a dot -! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 19 -! --------------^ -! Error in "Xtestfile" at line 20: -! x should be a dot -! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 20 -! ^ - - Does anyone know what is the problem and how to correction it? - "Xtestfile", line 21 col 9: What is the title of the quickfix window? -*************** -*** 50,74 **** - end of errorfile - - start of testfile -! line 2 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -! line 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -! line 4 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -! line 5 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -! line 6 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -! line 7 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -! line 8 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -! line 9 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -! line 10 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -! line 11 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -! line 12 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -! line 13 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -! line 14 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -! line 15 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -! line 16 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -! line 17 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -! line 18 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -! line 19 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -! line 20 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -! line 21 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -! line 22 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx - end of testfile ---- 90,114 ---- - end of errorfile - - start of testfile -! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 2 -! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 3 -! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 4 -! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 5 -! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 6 -! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 7 -! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 8 -! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 9 -! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 10 -! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 11 -! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 12 -! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 13 -! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 14 -! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 15 -! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 16 -! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 17 -! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 18 -! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 19 -! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 20 -! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 21 -! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 22 - end of testfile -*** ../vim-7.3.537/src/testdir/test10.ok 2011-08-10 18:36:49.000000000 +0200 ---- src/testdir/test10.ok 2012-06-01 18:22:40.000000000 +0200 -*************** -*** 1,23 **** - start of testfile -! line 2 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -! line 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -! line 4 xxxAxxxxxxxxxxxxxxxxxxxxxxxxxx -! line 5 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -! line 6 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -! line 7 xxxxxxxxxxBxxxxxxxxxxxxxxxxxxx -! line 8 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -! line 9 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -! line 10 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -! line 11 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -! line 12 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -! Cine 13 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -! line 14 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -! line 15 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -! Dine 16 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -! line 17 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -! line 18 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -! Eine 19 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -! line 20 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -! line 21 :cf Xerrorfile1xxxxxxxxxxxxxxx -! line 22 :cf Xerrorfile2xxxxxxxxxxxxxxx - end of testfile ---- 1,23 ---- - start of testfile -! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 2 -! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 3 -! xxxxxxxxxxAxxxxxxxxxxxxxxxxxxx line 4 -! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 5 -! xxxxxxxxxxxxxxxxxLINE 6, COL 19 line 6 -! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 7 -! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 8 -! NO COLUMN SPECIFIEDxxxxxxxxxxx line 9 -! AGAIN NO COLUMNxxxxxxxxxxxxxxx line 10 -! COL 1 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 11 -! COL 2xxxxxxxxxxxxxxxxxxxxxxxxx line 12 -! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 13 -! xxxxxxxxCOL 10xxxxxxxxxxxxxxxx line 14 -! xVCOL 10xxxxxxxxxxxxxxxxxxxxxx line 15 -! Ixxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 16 -! xxxx. SPACE POINTERxxxxxxxxxxx line 17 -! xxxxx. DOT POINTERxxxxxxxxxxxx line 18 -! xxxxxx. DASH POINTERxxxxxxxxxx line 19 -! xxxxxxx. TAB-SPACE POINTERxxxx line 20 -! xxxxxxxx:cf Xerrorfile1xxxxxxx line 21 -! xxxxxxxx:cf Xerrorfile2xxxxxxx line 22 - end of testfile -*** ../vim-7.3.537/src/version.c 2012-06-01 17:49:51.000000000 +0200 ---- src/version.c 2012-06-01 18:22:27.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 538, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -18. Your wife drapes a blond wig over your monitor to remind you of what she - looks like. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.539 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.539 -Problem: Redrawing a character on the command line does not work properly - for multi-byte charactes. -Solution: Count the number of bytes in a character. (Yukihiro Nakadaira) -Files: src/ex_getln.c - - -*** ../vim-7.3.538/src/ex_getln.c 2012-05-25 11:02:34.000000000 +0200 ---- src/ex_getln.c 2012-06-06 11:50:37.000000000 +0200 -*************** -*** 2764,2769 **** ---- 2764,2774 ---- - msg_no_more = TRUE; - if (ccline.cmdlen == ccline.cmdpos) - msg_putchar(' '); -+ #ifdef FEAT_MBYTE -+ else if (has_mbyte) -+ draw_cmdline(ccline.cmdpos, -+ (*mb_ptr2len)(ccline.cmdbuff + ccline.cmdpos)); -+ #endif - else - draw_cmdline(ccline.cmdpos, 1); - msg_no_more = FALSE; -*** ../vim-7.3.538/src/version.c 2012-06-01 18:34:37.000000000 +0200 ---- src/version.c 2012-06-06 12:02:45.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 539, - /**/ - --- -If they don't keep on exercising their lips, he thought, their brains -start working. - -- 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/ \\\ -\\\ an exciting new programming language -- http://www.Zimbu.org /// - \\\ help me help AIDS victims -- http://ICCF-Holland.org /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.540 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.540 -Problem: Cursor is left on the text instead of the command line. -Solution: Don't call setcursor() in command line mode. -Files: src/getchar.c - - -*** ../vim-7.3.539/src/getchar.c 2012-06-01 15:20:49.000000000 +0200 ---- src/getchar.c 2012-06-06 11:58:05.000000000 +0200 -*************** -*** 2819,2825 **** - edit_unputchar(); - if (State & CMDLINE) - unputcmdline(); -! setcursor(); /* put cursor back where it belongs */ - } - - if (c < 0) ---- 2819,2826 ---- - edit_unputchar(); - if (State & CMDLINE) - unputcmdline(); -! else -! setcursor(); /* put cursor back where it belongs */ - } - - if (c < 0) -*** ../vim-7.3.539/src/version.c 2012-06-06 12:02:57.000000000 +0200 ---- src/version.c 2012-06-06 12:05:22.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 540, - /**/ - --- -"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/ \\\ -\\\ an exciting new programming language -- http://www.Zimbu.org /// - \\\ help me help AIDS victims -- http://ICCF-Holland.org /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.541 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.541 -Problem: When joining lines comment leaders need to be removed manually. -Solution: Add the 'j' flag to 'formatoptions'. (Lech Lorens) -Files: runtime/doc/change.txt, src/edit.c, src/ex_docmd.c, src/misc1.c, - src/normal.c, src/ops.c, src/option.h, src/proto/misc1.pro, - src/proto/ops.pro, src/search.c, src/testdir/test29.in, - src/testdir/test29.ok - - -*** ../vim-7.3.540/runtime/doc/change.txt 2011-05-05 14:26:37.000000000 +0200 ---- runtime/doc/change.txt 2012-06-06 13:05:04.000000000 +0200 -*************** -*** 1495,1500 **** ---- 1522,1533 ---- - characters. Overruled by the 'M' flag. - 1 Don't break a line after a one-letter word. It's broken before it - instead (if possible). -+ j Where it makes sense, remove a comment leader when joining lines. For -+ example, joining: -+ int i; // the index ~ -+ // in the list ~ -+ Becomes: -+ int i; // the index in the list ~ - - - With 't' and 'c' you can specify when Vim performs auto-wrapping: -*** ../vim-7.3.540/src/edit.c 2012-06-01 15:20:49.000000000 +0200 ---- src/edit.c 2012-06-06 13:00:29.000000000 +0200 -*************** -*** 5847,5853 **** - * Need to remove existing (middle) comment leader and insert end - * comment leader. First, check what comment leader we can find. - */ -! i = get_leader_len(line = ml_get_curline(), &p, FALSE); - if (i > 0 && vim_strchr(p, COM_MIDDLE) != NULL) /* Just checking */ - { - /* Skip middle-comment string */ ---- 5847,5853 ---- - * Need to remove existing (middle) comment leader and insert end - * comment leader. First, check what comment leader we can find. - */ -! i = get_leader_len(line = ml_get_curline(), &p, FALSE, TRUE); - if (i > 0 && vim_strchr(p, COM_MIDDLE) != NULL) /* Just checking */ - { - /* Skip middle-comment string */ -*************** -*** 6085,6091 **** - - /* Don't break until after the comment leader */ - if (do_comments) -! leader_len = get_leader_len(ml_get_curline(), NULL, FALSE); - else - leader_len = 0; - ---- 6085,6091 ---- - - /* Don't break until after the comment leader */ - if (do_comments) -! leader_len = get_leader_len(ml_get_curline(), NULL, FALSE, TRUE); - else - leader_len = 0; - -*************** -*** 6411,6417 **** - /* With the 'c' flag in 'formatoptions' and 't' missing: only format - * comments. */ - if (has_format_option(FO_WRAP_COMS) && !has_format_option(FO_WRAP) -! && get_leader_len(old, NULL, FALSE) == 0) - return; - #endif - ---- 6411,6417 ---- - /* With the 'c' flag in 'formatoptions' and 't' missing: only format - * comments. */ - if (has_format_option(FO_WRAP_COMS) && !has_format_option(FO_WRAP) -! && get_leader_len(old, NULL, FALSE, TRUE) == 0) - return; - #endif - -*************** -*** 8565,8571 **** - { - temp = curwin->w_cursor.col; - if (!can_bs(BS_EOL) /* only if "eol" included */ -! || do_join(2, FALSE, TRUE) == FAIL) - vim_beep(); - else - curwin->w_cursor.col = temp; ---- 8565,8571 ---- - { - temp = curwin->w_cursor.col; - if (!can_bs(BS_EOL) /* only if "eol" included */ -! || do_join(2, FALSE, TRUE, FALSE) == FAIL) - vim_beep(); - else - curwin->w_cursor.col = temp; -*************** -*** 8746,8752 **** - ptr[len - 1] = NUL; - } - -! (void)do_join(2, FALSE, FALSE); - if (temp == NUL && gchar_cursor() != NUL) - inc_cursor(); - } ---- 8746,8752 ---- - ptr[len - 1] = NUL; - } - -! (void)do_join(2, FALSE, FALSE, FALSE); - if (temp == NUL && gchar_cursor() != NUL) - inc_cursor(); - } -*** ../vim-7.3.540/src/ex_docmd.c 2012-04-30 18:48:38.000000000 +0200 ---- src/ex_docmd.c 2012-06-06 13:00:29.000000000 +0200 -*************** -*** 8545,8551 **** - } - ++eap->line2; - } -! (void)do_join(eap->line2 - eap->line1 + 1, !eap->forceit, TRUE); - beginline(BL_WHITE | BL_FIX); - ex_may_print(eap); - } ---- 8545,8551 ---- - } - ++eap->line2; - } -! (void)do_join(eap->line2 - eap->line1 + 1, !eap->forceit, TRUE, TRUE); - beginline(BL_WHITE | BL_FIX); - ex_may_print(eap); - } -*** ../vim-7.3.540/src/misc1.c 2012-06-01 15:20:49.000000000 +0200 ---- src/misc1.c 2012-06-06 13:27:32.000000000 +0200 -*************** -*** 671,677 **** - ptr = saved_line; - # ifdef FEAT_COMMENTS - if (flags & OPENLINE_DO_COM) -! lead_len = get_leader_len(ptr, NULL, FALSE); - else - lead_len = 0; - # endif ---- 671,677 ---- - ptr = saved_line; - # ifdef FEAT_COMMENTS - if (flags & OPENLINE_DO_COM) -! lead_len = get_leader_len(ptr, NULL, FALSE, TRUE); - else - lead_len = 0; - # endif -*************** -*** 693,699 **** - } - # ifdef FEAT_COMMENTS - if (flags & OPENLINE_DO_COM) -! lead_len = get_leader_len(ptr, NULL, FALSE); - else - lead_len = 0; - if (lead_len > 0) ---- 693,699 ---- - } - # ifdef FEAT_COMMENTS - if (flags & OPENLINE_DO_COM) -! lead_len = get_leader_len(ptr, NULL, FALSE, TRUE); - else - lead_len = 0; - if (lead_len > 0) -*************** -*** 836,842 **** - */ - end_comment_pending = NUL; - if (flags & OPENLINE_DO_COM) -! lead_len = get_leader_len(saved_line, &lead_flags, dir == BACKWARD); - else - lead_len = 0; - if (lead_len > 0) ---- 836,842 ---- - */ - end_comment_pending = NUL; - if (flags & OPENLINE_DO_COM) -! lead_len = get_leader_len(saved_line, &lead_flags, dir == BACKWARD, TRUE); - else - lead_len = 0; - if (lead_len > 0) -*************** -*** 1548,1561 **** - * When "flags" is not NULL, it is set to point to the flags of the recognized - * comment leader. - * "backward" must be true for the "O" command. - */ - int -! get_leader_len(line, flags, backward) - char_u *line; - char_u **flags; - int backward; - { - int i, j; - int got_com = FALSE; - int found_one; - char_u part_buf[COM_MAX_LEN]; /* buffer for one option part */ ---- 1548,1565 ---- - * When "flags" is not NULL, it is set to point to the flags of the recognized - * comment leader. - * "backward" must be true for the "O" command. -+ * If "include_space" is set, include trailing whitespace while calculating the -+ * length. - */ - int -! get_leader_len(line, flags, backward, include_space) - char_u *line; - char_u **flags; - int backward; -+ int include_space; - { - int i, j; -+ int result; - int got_com = FALSE; - int found_one; - char_u part_buf[COM_MAX_LEN]; /* buffer for one option part */ -*************** -*** 1565,1571 **** - char_u *prev_list; - char_u *saved_flags = NULL; - -! i = 0; - while (vim_iswhite(line[i])) /* leading white space is ignored */ - ++i; - ---- 1569,1575 ---- - char_u *prev_list; - char_u *saved_flags = NULL; - -! result = i = 0; - while (vim_iswhite(line[i])) /* leading white space is ignored */ - ++i; - -*************** -*** 1668,1684 **** - if (!found_one) - break; - - /* Include any trailing white space. */ - while (vim_iswhite(line[i])) - ++i; - - /* If this comment doesn't nest, stop here. */ - got_com = TRUE; - if (vim_strchr(part_buf, COM_NEST) == NULL) - break; - } - -! return (got_com ? i : 0); - } - #endif - ---- 1672,1838 ---- - if (!found_one) - break; - -+ result = i; -+ - /* Include any trailing white space. */ - while (vim_iswhite(line[i])) - ++i; - -+ if (include_space) -+ result = i; -+ - /* If this comment doesn't nest, stop here. */ - got_com = TRUE; - if (vim_strchr(part_buf, COM_NEST) == NULL) - break; - } -+ return result; -+ } -+ -+ /* -+ * Return the offset at which the last comment in line starts. If there is no -+ * comment in the whole line, -1 is returned. -+ * -+ * When "flags" is not null, it is set to point to the flags describing the -+ * recognized comment leader. -+ */ -+ int -+ get_last_leader_offset(line, flags) -+ char_u *line; -+ char_u **flags; -+ { -+ int result = -1; -+ int i, j; -+ int lower_check_bound = 0; -+ char_u *string; -+ char_u *com_leader; -+ char_u *com_flags; -+ char_u *list; -+ int found_one; -+ char_u part_buf[COM_MAX_LEN]; /* buffer for one option part */ -+ -+ /* -+ * Repeat to match several nested comment strings. -+ */ -+ i = (int)STRLEN(line); -+ while (--i >= lower_check_bound) -+ { -+ /* -+ * scan through the 'comments' option for a match -+ */ -+ found_one = FALSE; -+ for (list = curbuf->b_p_com; *list; ) -+ { -+ char_u *flags_save = list; -+ -+ /* -+ * Get one option part into part_buf[]. Advance list to next one. -+ * put string at start of string. -+ */ -+ (void)copy_option_part(&list, part_buf, COM_MAX_LEN, ","); -+ string = vim_strchr(part_buf, ':'); -+ if (string == NULL) /* If everything is fine, this cannot actually -+ * happen. */ -+ { -+ continue; -+ } -+ *string++ = NUL; /* Isolate flags from string. */ -+ com_leader = string; -+ -+ /* -+ * Line contents and string must match. -+ * When string starts with white space, must have some white space -+ * (but the amount does not need to match, there might be a mix of -+ * TABs and spaces). -+ */ -+ if (vim_iswhite(string[0])) -+ { -+ if (i == 0 || !vim_iswhite(line[i - 1])) -+ continue; -+ while (vim_iswhite(string[0])) -+ ++string; -+ } -+ for (j = 0; string[j] != NUL && string[j] == line[i + j]; ++j) -+ /* do nothing */; -+ if (string[j] != NUL) -+ continue; -+ -+ /* -+ * When 'b' flag used, there must be white space or an -+ * end-of-line after the string in the line. -+ */ -+ if (vim_strchr(part_buf, COM_BLANK) != NULL -+ && !vim_iswhite(line[i + j]) && line[i + j] != NUL) -+ { -+ continue; -+ } -+ -+ /* -+ * We have found a match, stop searching. -+ */ -+ found_one = TRUE; -+ -+ if (flags) -+ *flags = flags_save; -+ com_flags = flags_save; -+ -+ break; -+ } - -! if (found_one) -! { -! char_u part_buf2[COM_MAX_LEN]; /* buffer for one option part */ -! int len1, len2, off; -! -! result = i; -! /* -! * If this comment nests, continue searching. -! */ -! if (vim_strchr(part_buf, COM_NEST) != NULL) -! continue; -! -! lower_check_bound = i; -! -! /* Let's verify whether the comment leader found is a substring -! * of other comment leaders. If it is, let's adjust the -! * lower_check_bound so that we make sure that we have determined -! * the comment leader correctly. -! */ -! -! while (vim_iswhite(*com_leader)) -! ++com_leader; -! len1 = (int)STRLEN(com_leader); -! -! for (list = curbuf->b_p_com; *list; ) -! { -! char_u *flags_save = list; -! -! (void)copy_option_part(&list, part_buf2, COM_MAX_LEN, ","); -! if (flags_save == com_flags) -! continue; -! string = vim_strchr(part_buf2, ':'); -! ++string; -! while (vim_iswhite(*string)) -! ++string; -! len2 = (int)STRLEN(string); -! if (len2 == 0) -! continue; -! -! /* Now we have to verify whether string ends with a substring -! * beginning the com_leader. */ -! for (off = (len2 > i ? i : len2); off > 0 && off + len1 > len2;) -! { -! --off; -! if (!STRNCMP(string + off, com_leader, len2 - off)) -! { -! if (i - off < lower_check_bound) -! lower_check_bound = i - off; -! } -! } -! } -! } -! } -! return result; - } - #endif - -*** ../vim-7.3.540/src/normal.c 2012-05-25 13:12:33.000000000 +0200 ---- src/normal.c 2012-06-06 13:00:29.000000000 +0200 -*************** -*** 1968,1974 **** - beep_flush(); - else - { -! (void)do_join(oap->line_count, oap->op_type == OP_JOIN, TRUE); - auto_format(FALSE, TRUE); - } - break; ---- 1968,1974 ---- - beep_flush(); - else - { -! (void)do_join(oap->line_count, oap->op_type == OP_JOIN, TRUE, TRUE); - auto_format(FALSE, TRUE); - } - break; -*************** -*** 4426,4432 **** - break; - } - #ifdef FEAT_COMMENTS -! if (get_leader_len(ml_get_curline(), NULL, FALSE) > 0) - { - /* Ignore this line, continue at start of next line. */ - ++curwin->w_cursor.lnum; ---- 4426,4432 ---- - break; - } - #ifdef FEAT_COMMENTS -! if (get_leader_len(ml_get_curline(), NULL, FALSE, TRUE) > 0) - { - /* Ignore this line, continue at start of next line. */ - ++curwin->w_cursor.lnum; -*************** -*** 9324,9330 **** - { - prep_redo(cap->oap->regname, cap->count0, - NUL, cap->cmdchar, NUL, NUL, cap->nchar); -! (void)do_join(cap->count0, cap->nchar == NUL, TRUE); - } - } - } ---- 9324,9330 ---- - { - prep_redo(cap->oap->regname, cap->count0, - NUL, cap->cmdchar, NUL, NUL, cap->nchar); -! (void)do_join(cap->count0, cap->nchar == NUL, TRUE, TRUE); - } - } - } -*** ../vim-7.3.540/src/ops.c 2012-05-18 12:49:33.000000000 +0200 ---- src/ops.c 2012-06-06 15:43:31.000000000 +0200 -*************** -*** 112,117 **** ---- 112,120 ---- - # endif - #endif - static void dis_msg __ARGS((char_u *p, int skip_esc)); -+ #if defined(FEAT_COMMENTS) || defined(PROTO) -+ static char_u *skip_comment __ARGS((char_u *line, int process, int include_space, int *is_comment)); -+ #endif - #ifdef FEAT_VISUAL - static void block_prep __ARGS((oparg_T *oap, struct block_def *, linenr_T, int)); - #endif -*************** -*** 1987,1993 **** - curwin->w_cursor = curpos; /* restore curwin->w_cursor */ - } - if (curwin->w_cursor.lnum < curbuf->b_ml.ml_line_count) -! (void)do_join(2, FALSE, FALSE); - } - } - ---- 1990,1996 ---- - curwin->w_cursor = curpos; /* restore curwin->w_cursor */ - } - if (curwin->w_cursor.lnum < curbuf->b_ml.ml_line_count) -! (void)do_join(2, FALSE, FALSE, FALSE); - } - } - -*************** -*** 4197,4213 **** - ui_breakcheck(); - } - - /* - * Join 'count' lines (minimal 2) at cursor position. - * When "save_undo" is TRUE save lines for undo first. - * - * return FAIL for failure, OK otherwise - */ - int -! do_join(count, insert_space, save_undo) - long count; - int insert_space; - int save_undo; - { - char_u *curr = NULL; - char_u *curr_start = NULL; ---- 4200,4297 ---- - ui_breakcheck(); - } - -+ #if defined(FEAT_COMMENTS) || defined(PROTO) -+ /* -+ * If "process" is TRUE and the line begins with a comment leader (possibly -+ * after some white space), return a pointer to the text after it. Put a boolean -+ * value indicating whether the line ends with an unclosed comment in -+ * "is_comment". -+ * line - line to be processed, -+ * process - if FALSE, will only check whether the line ends with an unclosed -+ * comment, -+ * include_space - whether to also skip space following the comment leader, -+ * is_comment - will indicate whether the current line ends with an unclosed -+ * comment. -+ */ -+ static char_u * -+ skip_comment(line, process, include_space, is_comment) -+ char_u *line; -+ int process; -+ int include_space; -+ int *is_comment; -+ { -+ char_u *comment_flags = NULL; -+ int lead_len; -+ int leader_offset = get_last_leader_offset(line, &comment_flags); -+ -+ *is_comment = FALSE; -+ if (leader_offset != -1) -+ { -+ /* Let's check whether the line ends with an unclosed comment. -+ * If the last comment leader has COM_END in flags, there's no comment. -+ */ -+ while (*comment_flags) -+ { -+ if (*comment_flags == COM_END -+ || *comment_flags == ':') -+ break; -+ ++comment_flags; -+ } -+ if (*comment_flags != COM_END) -+ *is_comment = TRUE; -+ } -+ -+ if (process == FALSE) -+ return line; -+ -+ lead_len = get_leader_len(line, &comment_flags, FALSE, include_space); -+ -+ if (lead_len == 0) -+ return line; -+ -+ /* Find: -+ * - COM_START, -+ * - COM_END, -+ * - colon, -+ * whichever comes first. -+ */ -+ while (*comment_flags) -+ { -+ if (*comment_flags == COM_START -+ || *comment_flags == COM_END -+ || *comment_flags == ':') -+ { -+ break; -+ } -+ ++comment_flags; -+ } -+ -+ /* If we found a colon, it means that we are not processing a line -+ * starting with an opening or a closing part of a three-part -+ * comment. That's good, because we don't want to remove those as -+ * this would be annoying. -+ */ -+ if (*comment_flags == ':' || *comment_flags == NUL) -+ line += lead_len; -+ -+ return line; -+ } -+ #endif -+ - /* - * Join 'count' lines (minimal 2) at cursor position. - * When "save_undo" is TRUE save lines for undo first. -+ * Set "use_formatoptions" to FALSE when e.g. processing -+ * backspace and comment leaders should not be removed. - * - * return FAIL for failure, OK otherwise - */ - int -! do_join(count, insert_space, save_undo, use_formatoptions) - long count; - int insert_space; - int save_undo; -+ int use_formatoptions UNUSED; - { - char_u *curr = NULL; - char_u *curr_start = NULL; -*************** -*** 4221,4226 **** ---- 4305,4317 ---- - linenr_T t; - colnr_T col = 0; - int ret = OK; -+ #if defined(FEAT_COMMENTS) || defined(PROTO) -+ int *comments; -+ int remove_comments = (use_formatoptions == TRUE) -+ && has_format_option(FO_REMOVE_COMS); -+ int prev_was_comment; -+ #endif -+ - - if (save_undo && u_save((linenr_T)(curwin->w_cursor.lnum - 1), - (linenr_T)(curwin->w_cursor.lnum + count)) == FAIL) -*************** -*** 4232,4237 **** ---- 4323,4339 ---- - spaces = lalloc_clear((long_u)count, TRUE); - if (spaces == NULL) - return FAIL; -+ #if defined(FEAT_COMMENTS) || defined(PROTO) -+ if (remove_comments) -+ { -+ comments = (int *)lalloc_clear((long_u)count * sizeof(int), TRUE); -+ if (comments == NULL) -+ { -+ vim_free(spaces); -+ return FAIL; -+ } -+ } -+ #endif - - /* - * Don't move anything, just compute the final line length -*************** -*** 4240,4245 **** ---- 4342,4366 ---- - for (t = 0; t < count; ++t) - { - curr = curr_start = ml_get((linenr_T)(curwin->w_cursor.lnum + t)); -+ #if defined(FEAT_COMMENTS) || defined(PROTO) -+ if (remove_comments) -+ { -+ /* We don't want to remove the comment leader if the -+ * previous line is not a comment. */ -+ if (t > 0 && prev_was_comment) -+ { -+ -+ char_u *new_curr = skip_comment(curr, TRUE, insert_space, -+ &prev_was_comment); -+ comments[t] = new_curr - curr; -+ curr = new_curr; -+ } -+ else -+ curr = skip_comment(curr, FALSE, insert_space, -+ &prev_was_comment); -+ } -+ #endif -+ - if (insert_space && t > 0) - { - curr = skipwhite(curr); -*************** -*** 4327,4332 **** ---- 4448,4457 ---- - if (t == 0) - break; - curr = curr_start = ml_get((linenr_T)(curwin->w_cursor.lnum + t - 1)); -+ #if defined(FEAT_COMMENTS) || defined(PROTO) -+ if (remove_comments) -+ curr += comments[t - 1]; -+ #endif - if (insert_space && t > 1) - curr = skipwhite(curr); - currsize = (int)STRLEN(curr); -*************** -*** 4364,4369 **** ---- 4489,4498 ---- - - theend: - vim_free(spaces); -+ #if defined(FEAT_COMMENTS) || defined(PROTO) -+ if (remove_comments) -+ vim_free(comments); -+ #endif - return ret; - } - -*************** -*** 4788,4794 **** - (long)-next_leader_len); - #endif - curwin->w_cursor.lnum--; -! if (do_join(2, TRUE, FALSE) == FAIL) - { - beep_flush(); - break; ---- 4917,4923 ---- - (long)-next_leader_len); - #endif - curwin->w_cursor.lnum--; -! if (do_join(2, TRUE, FALSE, FALSE) == FAIL) - { - beep_flush(); - break; -*************** -*** 4844,4850 **** - - ptr = ml_get(lnum); - if (do_comments) -! *leader_len = get_leader_len(ptr, leader_flags, FALSE); - else - *leader_len = 0; - ---- 4973,4979 ---- - - ptr = ml_get(lnum); - if (do_comments) -! *leader_len = get_leader_len(ptr, leader_flags, FALSE, TRUE); - else - *leader_len = 0; - -*** ../vim-7.3.540/src/option.h 2012-02-20 22:18:22.000000000 +0100 ---- src/option.h 2012-06-06 13:00:29.000000000 +0200 -*************** -*** 104,113 **** - #define FO_ONE_LETTER '1' - #define FO_WHITE_PAR 'w' /* trailing white space continues paragr. */ - #define FO_AUTO 'a' /* automatic formatting */ - - #define DFLT_FO_VI "vt" - #define DFLT_FO_VIM "tcq" -! #define FO_ALL "tcroq2vlb1mMBn,aw" /* for do_set() */ - - /* characters for the p_cpo option: */ - #define CPO_ALTREAD 'a' /* ":read" sets alternate file name */ ---- 104,114 ---- - #define FO_ONE_LETTER '1' - #define FO_WHITE_PAR 'w' /* trailing white space continues paragr. */ - #define FO_AUTO 'a' /* automatic formatting */ -+ #define FO_REMOVE_COMS 'j' /* remove comment leaders when joining lines */ - - #define DFLT_FO_VI "vt" - #define DFLT_FO_VIM "tcq" -! #define FO_ALL "tcroq2vlb1mMBn,awj" /* for do_set() */ - - /* characters for the p_cpo option: */ - #define CPO_ALTREAD 'a' /* ":read" sets alternate file name */ -*** ../vim-7.3.540/src/proto/misc1.pro 2010-08-15 21:57:28.000000000 +0200 ---- src/proto/misc1.pro 2012-06-06 13:00:29.000000000 +0200 -*************** -*** 6,12 **** - int set_indent __ARGS((int size, int flags)); - int get_number_indent __ARGS((linenr_T lnum)); - int open_line __ARGS((int dir, int flags, int old_indent)); -! int get_leader_len __ARGS((char_u *line, char_u **flags, int backward)); - int plines __ARGS((linenr_T lnum)); - int plines_win __ARGS((win_T *wp, linenr_T lnum, int winheight)); - int plines_nofill __ARGS((linenr_T lnum)); ---- 6,13 ---- - int set_indent __ARGS((int size, int flags)); - int get_number_indent __ARGS((linenr_T lnum)); - int open_line __ARGS((int dir, int flags, int old_indent)); -! int get_leader_len __ARGS((char_u *line, char_u **flags, int backward, int do_skip_space)); -! int get_last_leader_offset __ARGS((char_u *line, char_u **flags)); - int plines __ARGS((linenr_T lnum)); - int plines_win __ARGS((win_T *wp, linenr_T lnum, int winheight)); - int plines_nofill __ARGS((linenr_T lnum)); -*** ../vim-7.3.540/src/proto/ops.pro 2010-08-15 21:57:28.000000000 +0200 ---- src/proto/ops.pro 2012-06-06 13:00:29.000000000 +0200 -*************** -*** 36,42 **** - int preprocs_left __ARGS((void)); - int get_register_name __ARGS((int num)); - void ex_display __ARGS((exarg_T *eap)); -! int do_join __ARGS((long count, int insert_space, int save_undo)); - void op_format __ARGS((oparg_T *oap, int keep_cursor)); - void op_formatexpr __ARGS((oparg_T *oap)); - int fex_format __ARGS((linenr_T lnum, long count, int c)); ---- 36,42 ---- - int preprocs_left __ARGS((void)); - int get_register_name __ARGS((int num)); - void ex_display __ARGS((exarg_T *eap)); -! int do_join __ARGS((long count, int insert_space, int save_undo, int use_formatoptions)); - void op_format __ARGS((oparg_T *oap, int keep_cursor)); - void op_formatexpr __ARGS((oparg_T *oap)); - int fex_format __ARGS((linenr_T lnum, long count, int c)); -*** ../vim-7.3.540/src/search.c 2012-02-04 23:34:57.000000000 +0100 ---- src/search.c 2012-06-06 13:00:29.000000000 +0200 -*************** -*** 1548,1554 **** - int len; - int stop = TRUE; - #ifdef FEAT_MBYTE -! static char_u bytes[MB_MAXBYTES]; - static int bytelen = 1; /* >1 for multi-byte char */ - #endif - ---- 1548,1554 ---- - int len; - int stop = TRUE; - #ifdef FEAT_MBYTE -! static char_u bytes[MB_MAXBYTES + 1]; - static int bytelen = 1; /* >1 for multi-byte char */ - #endif - -*************** -*** 4901,4907 **** - #ifdef FEAT_COMMENTS - if ((*line != '#' || - STRNCMP(skipwhite(line + 1), "define", 6) != 0) -! && get_leader_len(line, NULL, FALSE)) - matched = FALSE; - - /* ---- 4901,4907 ---- - #ifdef FEAT_COMMENTS - if ((*line != '#' || - STRNCMP(skipwhite(line + 1), "define", 6) != 0) -! && get_leader_len(line, NULL, FALSE, TRUE)) - matched = FALSE; - - /* -*** ../vim-7.3.540/src/testdir/test29.in 2010-08-15 21:57:29.000000000 +0200 ---- src/testdir/test29.in 2012-06-06 15:44:38.000000000 +0200 -*************** -*** 4,19 **** - and with 'cpoptions' flag 'j' set or not - - STARTTEST - :set nocompatible viminfo+=nviminfo - :set nojoinspaces - :set cpoptions-=j - /firstline/ -! j"tdGpJjJjJjJjJjJjJjJjJjJjJjJjJjJj05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions+=j - j05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions-=j joinspaces - j"tpJjJjJjJjJjJjJjJjJjJjJjJjJjJj05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions+=j - j05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions-=j nojoinspaces compatible -! j"tpJjJjJjJjJjJjJjJjJjJjJjJjJjJj4Jy3l$pjdG:?firstline?+1,$w! test.out -! :qa! - ENDTEST - - firstline ---- 4,20 ---- - and with 'cpoptions' flag 'j' set or not - - STARTTEST -+ :so small.vim - :set nocompatible viminfo+=nviminfo - :set nojoinspaces - :set cpoptions-=j - /firstline/ -! j"td/^STARTTEST/-1 -! PJjJjJjJjJjJjJjJjJjJjJjJjJjJj05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions+=j - j05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions-=j joinspaces - j"tpJjJjJjJjJjJjJjJjJjJjJjJjJjJj05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions+=j - j05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions-=j nojoinspaces compatible -! j"tpJjJjJjJjJjJjJjJjJjJjJjJjJjJj4Jy3l$pjd/STARTTEST/-2 - ENDTEST - - firstline -*************** -*** 54,56 **** ---- 55,181 ---- - hjkl iop! - ert - -+ STARTTEST -+ /^{/+1 -+ :set comments=s1:/*,mb:*,ex:*/,:// -+ :set nojoinspaces fo=j -+ :set backspace=eol,start -+ :.,+3join -+ j4J -+ :.,+2join -+ j3J -+ :.,+2join -+ j3J -+ :.,+2join -+ jj3J -+ ENDTEST -+ -+ { -+ -+ /* -+ * Make sure the previous comment leader is not removed. -+ */ -+ -+ /* -+ * Make sure the previous comment leader is not removed. -+ */ -+ -+ // Should the next comment leader be left alone? -+ // Yes. -+ -+ // Should the next comment leader be left alone? -+ // Yes. -+ -+ /* Here the comment leader should be left intact. */ -+ // And so should this one. -+ -+ /* Here the comment leader should be left intact. */ -+ // And so should this one. -+ -+ if (condition) // Remove the next comment leader! -+ // OK, I will. -+ action(); -+ -+ if (condition) // Remove the next comment leader! -+ // OK, I will. -+ action(); -+ } -+ -+ STARTTEST -+ /^{/+1 -+ :set comments=s1:/*,mb:*,ex:*/,:// -+ :set comments+=s1:>#,mb:#,ex:#<,:< -+ :set cpoptions-=j joinspaces fo=j -+ :set backspace=eol,start -+ :.,+3join -+ j4J -+ :.,+2join -+ j3J -+ :.,+2join -+ j3J -+ :.,+2join -+ jj3J -+ j:.,+2join -+ jj3J -+ j:.,+5join -+ j6J -+ oSome code!
// Make sure backspacing does not remove this comment leader.0i -+ ENDTEST -+ -+ { -+ -+ /* -+ * Make sure the previous comment leader is not removed. -+ */ -+ -+ /* -+ * Make sure the previous comment leader is not removed. -+ */ -+ -+ // Should the next comment leader be left alone? -+ // Yes. -+ -+ // Should the next comment leader be left alone? -+ // Yes. -+ -+ /* Here the comment leader should be left intact. */ -+ // And so should this one. -+ -+ /* Here the comment leader should be left intact. */ -+ // And so should this one. -+ -+ if (condition) // Remove the next comment leader! -+ // OK, I will. -+ action(); -+ -+ if (condition) // Remove the next comment leader! -+ // OK, I will. -+ action(); -+ -+ int i = 7 /* foo *// 3 -+ // comment -+ ; -+ -+ int i = 7 /* foo *// 3 -+ // comment -+ ; -+ -+ ># Note that the last character of the ending comment leader (left angle -+ # bracket) is a comment leader itself. Make sure that this comment leader is -+ # not removed from the next line #< -+ < On this line a new comment is opened which spans 2 lines. This comment should -+ < retain its comment leader. -+ -+ ># Note that the last character of the ending comment leader (left angle -+ # bracket) is a comment leader itself. Make sure that this comment leader is -+ # not removed from the next line #< -+ < On this line a new comment is opened which spans 2 lines. This comment should -+ < retain its comment leader. -+ -+ } -+ -+ STARTTEST -+ :g/^STARTTEST/.,/^ENDTEST/d -+ :?firstline?+1,$w! test.out -+ :qa! -+ ENDTEST -*** ../vim-7.3.540/src/testdir/test29.ok 2010-08-15 21:57:29.000000000 +0200 ---- src/testdir/test29.ok 2012-06-06 13:00:29.000000000 +0200 -*************** -*** 47,49 **** ---- 47,86 ---- - asdfasdf asdf - asdfasdf asdf - zx cvn. as dfg? hjkl iop! ert a -+ -+ -+ { -+ /* Make sure the previous comment leader is not removed. */ -+ /* Make sure the previous comment leader is not removed. */ -+ // Should the next comment leader be left alone? Yes. -+ // Should the next comment leader be left alone? Yes. -+ /* Here the comment leader should be left intact. */ // And so should this one. -+ /* Here the comment leader should be left intact. */ // And so should this one. -+ if (condition) // Remove the next comment leader! OK, I will. -+ action(); -+ if (condition) // Remove the next comment leader! OK, I will. -+ action(); -+ } -+ -+ -+ { -+ /* Make sure the previous comment leader is not removed. */ -+ /* Make sure the previous comment leader is not removed. */ -+ // Should the next comment leader be left alone? Yes. -+ // Should the next comment leader be left alone? Yes. -+ /* Here the comment leader should be left intact. */ // And so should this one. -+ /* Here the comment leader should be left intact. */ // And so should this one. -+ if (condition) // Remove the next comment leader! OK, I will. -+ action(); -+ if (condition) // Remove the next comment leader! OK, I will. -+ action(); -+ int i = 7 /* foo *// 3 // comment -+ ; -+ int i = 7 /* foo *// 3 // comment -+ ; -+ ># Note that the last character of the ending comment leader (left angle bracket) is a comment leader itself. Make sure that this comment leader is not removed from the next line #< < On this line a new comment is opened which spans 2 lines. This comment should retain its comment leader. -+ ># Note that the last character of the ending comment leader (left angle bracket) is a comment leader itself. Make sure that this comment leader is not removed from the next line #< < On this line a new comment is opened which spans 2 lines. This comment should retain its comment leader. -+ -+ Some code!// Make sure backspacing does not remove this comment leader. -+ } -+ -*** ../vim-7.3.540/src/version.c 2012-06-06 12:06:10.000000000 +0200 ---- src/version.c 2012-06-06 16:10:03.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 541, - /**/ - --- -I have a drinking problem -- I don't have a drink! - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.542 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.542 (after 7.3.506) -Problem: Function is sometimes unused. -Solution: Add #ifdef. -Files: src/gui_gtk.c - - -*** ../vim-7.3.541/src/gui_gtk.c 2012-04-25 17:10:12.000000000 +0200 ---- src/gui_gtk.c 2012-06-06 15:25:12.000000000 +0200 -*************** -*** 90,100 **** ---- 90,102 ---- - static void entry_activate_cb(GtkWidget *widget, gpointer data); - static void entry_changed_cb(GtkWidget *entry, GtkWidget *dialog); - static void find_replace_cb(GtkWidget *widget, gpointer data); -+ #if defined(FEAT_BROWSE) || defined(PROTO) - static void recent_func_log_func( - const gchar *log_domain, - GLogLevelFlags log_level, - const gchar *message, - gpointer user_data); -+ #endif - - #if defined(FEAT_TOOLBAR) - /* -*************** -*** 1896,1901 **** ---- 1898,1904 ---- - do_cmdline_cmd((char_u *)"emenu ToolBar.FindHelp"); - } - -+ #if defined(FEAT_BROWSE) || defined(PROTO) - static void - recent_func_log_func(const gchar *log_domain UNUSED, - GLogLevelFlags log_level UNUSED, -*************** -*** 1905,1908 **** - /* We just want to suppress the warnings. */ - /* http://bugzilla.gnome.org/show_bug.cgi?id=664587 */ - } -! ---- 1908,1911 ---- - /* We just want to suppress the warnings. */ - /* http://bugzilla.gnome.org/show_bug.cgi?id=664587 */ - } -! #endif -*** ../vim-7.3.541/src/version.c 2012-06-06 16:12:54.000000000 +0200 ---- src/version.c 2012-06-06 16:14:17.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 542, - /**/ - --- -How To Keep A Healthy Level Of Insanity: -1. At lunch time, sit in your parked car with sunglasses on and point - a hair dryer at passing cars. See if they slow down. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.543 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.543 -Problem: The cursor is in the wrong line after using ":copen". (John - Beckett) -Solution: Invoke more drastic redraw method. -Files: src/eval.c - - -*** ../vim-7.3.542/src/eval.c 2012-06-01 15:20:49.000000000 +0200 ---- src/eval.c 2012-06-06 16:28:11.000000000 +0200 -*************** -*** 18507,18515 **** - curwin->w_skipcol = get_dict_number(dict, (char_u *)"skipcol"); - - check_cursor(); -! changed_cline_bef_curs(); -! invalidate_botline(); -! redraw_later(VALID); - - if (curwin->w_topline == 0) - curwin->w_topline = 1; ---- 18507,18513 ---- - curwin->w_skipcol = get_dict_number(dict, (char_u *)"skipcol"); - - check_cursor(); -! changed_window_setting(); - - if (curwin->w_topline == 0) - curwin->w_topline = 1; -*** ../vim-7.3.542/src/version.c 2012-06-06 16:14:36.000000000 +0200 ---- src/version.c 2012-06-06 16:28:16.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 543, - /**/ - --- -How To Keep A Healthy Level Of Insanity: -2. Page yourself over the intercom. Don't disguise your voice. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.544 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.544 -Problem: There is no good way to close a quickfix window when closing the - last ordinary window. -Solution: Add the QuitPre autocommand. -Files: src/ex_docmd.c, src/fileio.c, src/vim.h - - -*** ../vim-7.3.543/src/ex_docmd.c 2012-06-06 16:12:54.000000000 +0200 ---- src/ex_docmd.c 2012-06-06 17:58:41.000000000 +0200 -*************** -*** 6458,6463 **** ---- 6458,6464 ---- - return; - } - #ifdef FEAT_AUTOCMD -+ apply_autocmds(EVENT_QUITPRE, NULL, NULL, FALSE, curbuf); - if (curbuf_locked()) - return; - #endif -*** ../vim-7.3.543/src/fileio.c 2012-04-30 17:04:47.000000000 +0200 ---- src/fileio.c 2012-06-06 17:32:12.000000000 +0200 -*************** -*** 7678,7683 **** ---- 7678,7684 ---- - {"MenuPopup", EVENT_MENUPOPUP}, - {"QuickFixCmdPost", EVENT_QUICKFIXCMDPOST}, - {"QuickFixCmdPre", EVENT_QUICKFIXCMDPRE}, -+ {"QuitPre", EVENT_QUITPRE}, - {"RemoteReply", EVENT_REMOTEREPLY}, - {"SessionLoadPost", EVENT_SESSIONLOADPOST}, - {"ShellCmdPost", EVENT_SHELLCMDPOST}, -*** ../vim-7.3.543/src/vim.h 2012-06-01 15:20:49.000000000 +0200 ---- src/vim.h 2012-06-06 17:30:01.000000000 +0200 -*************** -*** 1264,1271 **** - EVENT_INSERTENTER, /* when entering Insert mode */ - EVENT_INSERTLEAVE, /* when leaving Insert mode */ - EVENT_MENUPOPUP, /* just before popup menu is displayed */ -! EVENT_QUICKFIXCMDPOST, /* after :make, :grep etc */ -! EVENT_QUICKFIXCMDPRE, /* before :make, :grep etc */ - EVENT_SESSIONLOADPOST, /* after loading a session file */ - EVENT_STDINREADPOST, /* after reading from stdin */ - EVENT_STDINREADPRE, /* before reading from stdin */ ---- 1264,1272 ---- - EVENT_INSERTENTER, /* when entering Insert mode */ - EVENT_INSERTLEAVE, /* when leaving Insert mode */ - EVENT_MENUPOPUP, /* just before popup menu is displayed */ -! EVENT_QUICKFIXCMDPOST, /* after :make, :grep etc. */ -! EVENT_QUICKFIXCMDPRE, /* before :make, :grep etc. */ -! EVENT_QUITPRE, /* before :quit */ - EVENT_SESSIONLOADPOST, /* after loading a session file */ - EVENT_STDINREADPOST, /* after reading from stdin */ - EVENT_STDINREADPRE, /* before reading from stdin */ -*** ../vim-7.3.543/src/version.c 2012-06-06 16:29:06.000000000 +0200 ---- src/version.c 2012-06-06 18:02:09.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 544, - /**/ - --- -How To Keep A Healthy Level Of Insanity: -3. Every time someone asks you to do something, ask if they want fries - with that. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.545 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.545 -Problem: When closing a window or buffer autocommands may close it too, - causing problems for where the autocommand was invoked from. -Solution: Add the w_closing and b_closing flags. When set disallow ":q" and - ":close" to prevent recursive closing. -Files: src/structs.h, src/buffer.c, src/ex_docmd.c, src/window.c - - -*** ../vim-7.3.544/src/structs.h 2012-02-04 21:57:44.000000000 +0100 ---- src/structs.h 2012-06-06 16:43:34.000000000 +0200 -*************** -*** 1201,1206 **** ---- 1201,1210 ---- - typedef struct qf_info_S qf_info_T; - #endif - -+ /* -+ * These are items normally related to a buffer. But when using ":ownsyntax" -+ * a window may have its own instance. -+ */ - typedef struct { - #ifdef FEAT_SYN_HL - hashtab_T b_keywtab; /* syntax keywords hash table */ -*************** -*** 1290,1295 **** ---- 1294,1303 ---- - int b_nwindows; /* nr of windows open on this buffer */ - - int b_flags; /* various BF_ flags */ -+ #ifdef FEAT_AUTOCMD -+ int b_closing; /* buffer is being closed, don't let -+ autocommands close it too. */ -+ #endif - - /* - * b_ffname has the full path of the file (NULL for no name). -*************** -*** 1853,1858 **** ---- 1861,1870 ---- - win_T *w_prev; /* link to previous window */ - win_T *w_next; /* link to next window */ - #endif -+ #ifdef FEAT_AUTOCMD -+ int w_closing; /* window is being closed, don't let -+ autocommands close it too. */ -+ #endif - - frame_T *w_frame; /* frame containing this window */ - -*** ../vim-7.3.544/src/buffer.c 2012-03-16 14:32:10.000000000 +0100 ---- src/buffer.c 2012-06-06 18:57:27.000000000 +0200 -*************** -*** 377,404 **** - /* When the buffer is no longer in a window, trigger BufWinLeave */ - if (buf->b_nwindows == 1) - { - apply_autocmds(EVENT_BUFWINLEAVE, buf->b_fname, buf->b_fname, - FALSE, buf); -! /* Return if autocommands deleted the buffer or made it the only one. */ -! if (!buf_valid(buf) || (abort_if_last && one_window())) - { - EMSG(_(e_auabort)); - return; - } - - /* When the buffer becomes hidden, but is not unloaded, trigger - * BufHidden */ - if (!unload_buf) - { - apply_autocmds(EVENT_BUFHIDDEN, buf->b_fname, buf->b_fname, - FALSE, buf); -! /* Return if autocommands deleted the buffer or made it the only -! * one. */ -! if (!buf_valid(buf) || (abort_if_last && one_window())) -! { -! EMSG(_(e_auabort)); -! return; -! } - } - # ifdef FEAT_EVAL - if (aborting()) /* autocmds may abort script processing */ ---- 377,411 ---- - /* When the buffer is no longer in a window, trigger BufWinLeave */ - if (buf->b_nwindows == 1) - { -+ buf->b_closing = TRUE; - apply_autocmds(EVENT_BUFWINLEAVE, buf->b_fname, buf->b_fname, - FALSE, buf); -! if (!buf_valid(buf)) - { -+ /* Autocommands deleted the buffer. */ -+ aucmd_abort: - EMSG(_(e_auabort)); - return; - } -+ buf->b_closing = FALSE; -+ if (abort_if_last && one_window()) -+ /* Autocommands made this the only window. */ -+ goto aucmd_abort; - - /* When the buffer becomes hidden, but is not unloaded, trigger - * BufHidden */ - if (!unload_buf) - { -+ buf->b_closing = TRUE; - apply_autocmds(EVENT_BUFHIDDEN, buf->b_fname, buf->b_fname, - FALSE, buf); -! if (!buf_valid(buf)) -! /* Autocommands deleted the buffer. */ -! goto aucmd_abort; -! buf->b_closing = FALSE; -! if (abort_if_last && one_window()) -! /* Autocommands made this the only window. */ -! goto aucmd_abort; - } - # ifdef FEAT_EVAL - if (aborting()) /* autocmds may abort script processing */ -*************** -*** 552,557 **** ---- 559,565 ---- - #ifdef FEAT_AUTOCMD - int is_curbuf = (buf == curbuf); - -+ buf->b_closing = TRUE; - apply_autocmds(EVENT_BUFUNLOAD, buf->b_fname, buf->b_fname, FALSE, buf); - if (!buf_valid(buf)) /* autocommands may delete the buffer */ - return; -*************** -*** 568,573 **** ---- 576,582 ---- - if (!buf_valid(buf)) /* autocommands may delete the buffer */ - return; - } -+ buf->b_closing = FALSE; - # ifdef FEAT_EVAL - if (aborting()) /* autocmds may abort script processing */ - return; -*************** -*** 1150,1155 **** ---- 1159,1167 ---- - * a window with this buffer. - */ - while (buf == curbuf -+ # ifdef FEAT_AUTOCMD -+ && !(curwin->w_closing || curwin->w_buffer->b_closing) -+ # endif - && (firstwin != lastwin || first_tabpage->tp_next != NULL)) - win_close(curwin, FALSE); - #endif -*************** -*** 4750,4756 **** - #ifdef FEAT_WINDOWS - || (had_tab > 0 && wp != firstwin) - #endif -! ) && firstwin != lastwin) - { - win_close(wp, FALSE); - #ifdef FEAT_AUTOCMD ---- 4762,4772 ---- - #ifdef FEAT_WINDOWS - || (had_tab > 0 && wp != firstwin) - #endif -! ) && firstwin != lastwin -! #ifdef FEAT_AUTOCMD -! && !(wp->w_closing || wp->w_buffer->b_closing) -! #endif -! ) - { - win_close(wp, FALSE); - #ifdef FEAT_AUTOCMD -*** ../vim-7.3.544/src/ex_docmd.c 2012-06-06 18:03:01.000000000 +0200 ---- src/ex_docmd.c 2012-06-06 18:06:46.000000000 +0200 -*************** -*** 6459,6465 **** - } - #ifdef FEAT_AUTOCMD - apply_autocmds(EVENT_QUITPRE, NULL, NULL, FALSE, curbuf); -! if (curbuf_locked()) - return; - #endif - ---- 6459,6467 ---- - } - #ifdef FEAT_AUTOCMD - apply_autocmds(EVENT_QUITPRE, NULL, NULL, FALSE, curbuf); -! /* Refuse to quick when locked or when the buffer in the last window is -! * being closed (can only happen in autocommands). */ -! if (curbuf_locked() || (curbuf->b_nwindows == 1 && curbuf->b_closing)) - return; - #endif - -*** ../vim-7.3.544/src/window.c 2012-05-25 12:38:57.000000000 +0200 ---- src/window.c 2012-06-06 18:47:19.000000000 +0200 -*************** -*** 2034,2040 **** - - for (wp = firstwin; wp != NULL && lastwin != firstwin; ) - { -! if (wp->w_buffer == buf && (!keep_curwin || wp != curwin)) - { - win_close(wp, FALSE); - ---- 2034,2044 ---- - - for (wp = firstwin; wp != NULL && lastwin != firstwin; ) - { -! if (wp->w_buffer == buf && (!keep_curwin || wp != curwin) -! #ifdef FEAT_AUTOCMD -! && !(wp->w_closing || wp->w_buffer->b_closing) -! #endif -! ) - { - win_close(wp, FALSE); - -*************** -*** 2051,2057 **** - nexttp = tp->tp_next; - if (tp != curtab) - for (wp = tp->tp_firstwin; wp != NULL; wp = wp->w_next) -! if (wp->w_buffer == buf) - { - win_close_othertab(wp, FALSE, tp); - ---- 2055,2065 ---- - nexttp = tp->tp_next; - if (tp != curtab) - for (wp = tp->tp_firstwin; wp != NULL; wp = wp->w_next) -! if (wp->w_buffer == buf -! #ifdef FEAT_AUTOCMD -! && !(wp->w_closing || wp->w_buffer->b_closing) -! #endif -! ) - { - win_close_othertab(wp, FALSE, tp); - -*************** -*** 2168,2173 **** ---- 2176,2183 ---- - } - - #ifdef FEAT_AUTOCMD -+ if (win->w_closing || win->w_buffer->b_closing) -+ return; /* window is already being closed */ - if (win == aucmd_win) - { - EMSG(_("E813: Cannot close autocmd window")); -*************** -*** 2203,2219 **** - wp = frame2win(win_altframe(win, NULL)); - - /* -! * Be careful: If autocommands delete the window, return now. - */ - if (wp->w_buffer != curbuf) - { - other_buffer = TRUE; - apply_autocmds(EVENT_BUFLEAVE, NULL, NULL, FALSE, curbuf); -! if (!win_valid(win) || last_window()) - return; - } - apply_autocmds(EVENT_WINLEAVE, NULL, NULL, FALSE, curbuf); -! if (!win_valid(win) || last_window()) - return; - # ifdef FEAT_EVAL - /* autocmds may abort script processing */ ---- 2213,2238 ---- - wp = frame2win(win_altframe(win, NULL)); - - /* -! * Be careful: If autocommands delete the window or cause this window -! * to be the last one left, return now. - */ - if (wp->w_buffer != curbuf) - { - other_buffer = TRUE; -+ win->w_closing = TRUE; - apply_autocmds(EVENT_BUFLEAVE, NULL, NULL, FALSE, curbuf); -! if (!win_valid(win)) -! return; -! win->w_closing = FALSE; -! if (last_window()) - return; - } -+ win->w_closing = TRUE; - apply_autocmds(EVENT_WINLEAVE, NULL, NULL, FALSE, curbuf); -! if (!win_valid(win)) -! return; -! win->w_closing = FALSE; -! if (last_window()) - return; - # ifdef FEAT_EVAL - /* autocmds may abort script processing */ -*************** -*** 2240,2246 **** - * Close the link to the buffer. - */ - if (win->w_buffer != NULL) -! close_buffer(win, win->w_buffer, free_buf ? DOBUF_UNLOAD : 0, TRUE); - - /* Autocommands may have closed the window already, or closed the only - * other window or moved to another tab page. */ ---- 2259,2274 ---- - * Close the link to the buffer. - */ - if (win->w_buffer != NULL) -! { -! #ifdef FEAT_AUTOCMD -! win->w_closing = TRUE; -! #endif -! close_buffer(win, win->w_buffer, free_buf ? DOBUF_UNLOAD : 0, FALSE); -! #ifdef FEAT_AUTOCMD -! if (win_valid(win)) -! win->w_closing = FALSE; -! #endif -! } - - /* Autocommands may have closed the window already, or closed the only - * other window or moved to another tab page. */ -*************** -*** 2346,2351 **** ---- 2374,2384 ---- - tabpage_T *ptp = NULL; - int free_tp = FALSE; - -+ #ifdef FEAT_AUTOCMD -+ if (win->w_closing || win->w_buffer->b_closing) -+ return; /* window is already being closed */ -+ #endif -+ - /* Close the link to the buffer. */ - close_buffer(win, win->w_buffer, free_buf ? DOBUF_UNLOAD : 0, FALSE); - -*** ../vim-7.3.544/src/version.c 2012-06-06 18:03:01.000000000 +0200 ---- src/version.c 2012-06-06 18:53:06.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 545, - /**/ - --- -How To Keep A Healthy Level Of Insanity: -4. Put your garbage can on your desk and label it "in". - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.546 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.546 -Problem: Bogus line break. -Solution: Remove the line break. -Files: src/screen.c - - -*** ../vim-7.3.545/src/screen.c 2012-06-01 15:20:49.000000000 +0200 ---- src/screen.c 2012-06-01 16:31:30.000000000 +0200 -*************** -*** 3228,3235 **** - /* no bad word found at line start, don't check until end of a - * word */ - spell_hlf = HLF_COUNT; -! word_end = (int)(spell_to_word_end(ptr, wp) -! - line + 1); - } - else - { ---- 3228,3234 ---- - /* no bad word found at line start, don't check until end of a - * word */ - spell_hlf = HLF_COUNT; -! word_end = (int)(spell_to_word_end(ptr, wp) - line + 1); - } - else - { -*** ../vim-7.3.545/src/version.c 2012-06-06 19:02:40.000000000 +0200 ---- src/version.c 2012-06-06 19:05:11.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 546, - /**/ - --- -How To Keep A Healthy Level Of Insanity: -5. Put decaf in the coffee maker for 3 weeks. Once everyone has gotten - over their caffeine addictions, switch to espresso. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.547 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.547 (after 7.3.541) -Problem: Compiler warning for uninitialized variable. -Solution: Initialize it. -Files: src/ops.c - - -*** ../vim-7.3.546/src/ops.c 2012-06-06 16:12:54.000000000 +0200 ---- src/ops.c 2012-06-06 23:06:45.000000000 +0200 -*************** -*** 4306,4312 **** - colnr_T col = 0; - int ret = OK; - #if defined(FEAT_COMMENTS) || defined(PROTO) -! int *comments; - int remove_comments = (use_formatoptions == TRUE) - && has_format_option(FO_REMOVE_COMS); - int prev_was_comment; ---- 4306,4312 ---- - colnr_T col = 0; - int ret = OK; - #if defined(FEAT_COMMENTS) || defined(PROTO) -! int *comments = NULL; - int remove_comments = (use_formatoptions == TRUE) - && has_format_option(FO_REMOVE_COMS); - int prev_was_comment; -*** ../vim-7.3.546/src/version.c 2012-06-06 19:05:45.000000000 +0200 ---- src/version.c 2012-06-06 23:07:26.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 547, - /**/ - --- -How To Keep A Healthy Level Of Insanity: -9. As often as possible, skip rather than walk. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.548 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.548 -Problem: Compiler warning on 64 bit Windows. -Solution: Add type cast. (Mike Williams) -Files: src/ops.c - - -*** ../vim-7.3.547/src/ops.c 2012-06-06 23:08:33.000000000 +0200 ---- src/ops.c 2012-06-07 21:07:57.000000000 +0200 -*************** -*** 4352,4358 **** - - char_u *new_curr = skip_comment(curr, TRUE, insert_space, - &prev_was_comment); -! comments[t] = new_curr - curr; - curr = new_curr; - } - else ---- 4352,4358 ---- - - char_u *new_curr = skip_comment(curr, TRUE, insert_space, - &prev_was_comment); -! comments[t] = (int)(new_curr - curr); - curr = new_curr; - } - else -*** ../vim-7.3.547/src/version.c 2012-06-06 23:08:33.000000000 +0200 ---- src/version.c 2012-06-07 21:08:35.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 548, - /**/ - --- -How To Keep A Healthy Level Of Insanity: -17. When the money comes out the ATM, scream "I won!, I won! 3rd - time this week!!!!!" - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.549 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.549 -Problem: In 'cinoptions' "0s" is interpreted as one shiftwidth. (David - Pineau) -Solution: Use the zero as zero. (Lech Lorens) -Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok - - -*** ../vim-7.3.548/src/misc1.c 2012-06-06 16:12:54.000000000 +0200 ---- src/misc1.c 2012-06-13 13:17:11.000000000 +0200 -*************** -*** 6635,6640 **** ---- 6635,6641 ---- - int whilelevel; - linenr_T lnum; - char_u *options; -+ char_u *digits; - int fraction = 0; /* init for GCC */ - int divider; - int n; -*************** -*** 6650,6655 **** ---- 6651,6657 ---- - l = options++; - if (*options == '-') - ++options; -+ digits = options; /* remember where the digits start */ - n = getdigits(&options); - divider = 0; - if (*options == '.') /* ".5s" means a fraction */ -*************** -*** 6666,6672 **** - } - if (*options == 's') /* "2s" means two times 'shiftwidth' */ - { -! if (n == 0 && fraction == 0) - n = curbuf->b_p_sw; /* just "s" is one 'shiftwidth' */ - else - { ---- 6668,6674 ---- - } - if (*options == 's') /* "2s" means two times 'shiftwidth' */ - { -! if (options == digits) - n = curbuf->b_p_sw; /* just "s" is one 'shiftwidth' */ - else - { -*** ../vim-7.3.548/src/testdir/test3.in 2012-04-05 17:17:38.000000000 +0200 ---- src/testdir/test3.in 2012-06-13 13:17:31.000000000 +0200 -*************** -*** 977,982 **** ---- 977,1000 ---- - - STARTTEST - :set cin -+ :set cino=es,n0s -+ /main -+ =][ -+ ENDTEST -+ -+ main(void) -+ { -+ /* Make sure that cino=X0s is not parsed like cino=Xs. */ -+ if (cond) -+ foo(); -+ else -+ { -+ bar(); -+ } -+ } -+ -+ STARTTEST -+ :set cin - :set cino= - ]]=][ - ENDTEST -*** ../vim-7.3.548/src/testdir/test3.ok 2012-04-05 17:17:38.000000000 +0200 ---- src/testdir/test3.ok 2012-06-13 13:17:31.000000000 +0200 -*************** -*** 940,945 **** ---- 940,957 ---- - } - - -+ main(void) -+ { -+ /* Make sure that cino=X0s is not parsed like cino=Xs. */ -+ if (cond) -+ foo(); -+ else -+ { -+ bar(); -+ } -+ } -+ -+ - { - do - { -*** ../vim-7.3.548/src/version.c 2012-06-07 21:09:35.000000000 +0200 ---- src/version.c 2012-06-13 13:37:18.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 549, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -29. Your phone bill comes to your doorstep in a box. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.550 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.550 (after 7.3.541) -Problem: With "j" in 'formatoptions' a list leader is not removed. (Gary - Johnson) -Solution: Don't ignore the start of a three part comment. (Lech Lorens) -Files: src/ops.c, src/testdir/test29.in, src/testdir/test29.ok - - -*** ../vim-7.3.549/src/ops.c 2012-06-07 21:09:35.000000000 +0200 ---- src/ops.c 2012-06-13 13:48:26.000000000 +0200 -*************** -*** 4250,4264 **** - return line; - - /* Find: -- * - COM_START, - * - COM_END, - * - colon, - * whichever comes first. - */ - while (*comment_flags) - { -! if (*comment_flags == COM_START -! || *comment_flags == COM_END - || *comment_flags == ':') - { - break; ---- 4250,4262 ---- - return line; - - /* Find: - * - COM_END, - * - colon, - * whichever comes first. - */ - while (*comment_flags) - { -! if (*comment_flags == COM_END - || *comment_flags == ':') - { - break; -*************** -*** 4267,4275 **** - } - - /* If we found a colon, it means that we are not processing a line -! * starting with an opening or a closing part of a three-part -! * comment. That's good, because we don't want to remove those as -! * this would be annoying. - */ - if (*comment_flags == ':' || *comment_flags == NUL) - line += lead_len; ---- 4265,4272 ---- - } - - /* If we found a colon, it means that we are not processing a line -! * starting with a closing part of a three-part comment. That's good, -! * because we don't want to remove those as this would be annoying. - */ - if (*comment_flags == ':' || *comment_flags == NUL) - line += lead_len; -*** ../vim-7.3.549/src/testdir/test29.in 2012-06-06 16:12:54.000000000 +0200 ---- src/testdir/test29.in 2012-06-13 13:48:26.000000000 +0200 -*************** -*** 103,114 **** - - STARTTEST - /^{/+1 -! :set comments=s1:/*,mb:*,ex:*/,:// - :set comments+=s1:>#,mb:#,ex:#<,:< - :set cpoptions-=j joinspaces fo=j - :set backspace=eol,start - :.,+3join - j4J - :.,+2join - j3J - :.,+2join ---- 103,117 ---- - - STARTTEST - /^{/+1 -! :set comments=sO:*\ -,mO:*\ \ ,exO:*/ -! :set comments+=s1:/*,mb:*,ex:*/,:// - :set comments+=s1:>#,mb:#,ex:#<,:< - :set cpoptions-=j joinspaces fo=j - :set backspace=eol,start - :.,+3join - j4J -+ :.,+8join -+ j9J - :.,+2join - j3J - :.,+2join -*************** -*** 132,137 **** ---- 135,158 ---- - * Make sure the previous comment leader is not removed. - */ - -+ /* List: -+ * - item1 -+ * foo bar baz -+ * foo bar baz -+ * - item2 -+ * foo bar baz -+ * foo bar baz -+ */ -+ -+ /* List: -+ * - item1 -+ * foo bar baz -+ * foo bar baz -+ * - item2 -+ * foo bar baz -+ * foo bar baz -+ */ -+ - // Should the next comment leader be left alone? - // Yes. - -*** ../vim-7.3.549/src/testdir/test29.ok 2012-06-06 16:12:54.000000000 +0200 ---- src/testdir/test29.ok 2012-06-13 13:48:26.000000000 +0200 -*************** -*** 66,71 **** ---- 66,73 ---- - { - /* Make sure the previous comment leader is not removed. */ - /* Make sure the previous comment leader is not removed. */ -+ /* List: item1 foo bar baz foo bar baz item2 foo bar baz foo bar baz */ -+ /* List: item1 foo bar baz foo bar baz item2 foo bar baz foo bar baz */ - // Should the next comment leader be left alone? Yes. - // Should the next comment leader be left alone? Yes. - /* Here the comment leader should be left intact. */ // And so should this one. -*** ../vim-7.3.549/src/version.c 2012-06-13 13:40:45.000000000 +0200 ---- src/version.c 2012-06-13 13:50:23.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 550, - /**/ - --- -If you put 7 of the most talented OSS developers in a room for a week -and asked them to fix a bug in a spreadsheet program, in 1 week -you'd have 2 new mail readers and a text-based web browser. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.551 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.551 -Problem: When using :tablose a TabEnter autocommand is triggered too early. - (Karthick) -Solution: Don't trigger *Enter autocommands before closing the tab. - (Christian Brabandt) -Files: src/buffer.c, src/eval.c, src/ex_cmds2.c, src/fileio.c, - src/proto/window.pro, src/window.c - - -*** ../vim-7.3.550/src/buffer.c 2012-06-06 19:02:40.000000000 +0200 ---- src/buffer.c 2012-06-13 14:18:58.000000000 +0200 -*************** -*** 4470,4476 **** - * When the ":tab" modifier was used do this for all tab pages. - */ - if (had_tab > 0) -! goto_tabpage_tp(first_tabpage); - for (;;) - { - tpnext = curtab->tp_next; ---- 4470,4476 ---- - * When the ":tab" modifier was used do this for all tab pages. - */ - if (had_tab > 0) -! goto_tabpage_tp(first_tabpage, TRUE); - for (;;) - { - tpnext = curtab->tp_next; -*************** -*** 4582,4588 **** - if (!valid_tabpage(tpnext)) - tpnext = first_tabpage; /* start all over...*/ - # endif -! goto_tabpage_tp(tpnext); - } - - /* ---- 4582,4588 ---- - if (!valid_tabpage(tpnext)) - tpnext = first_tabpage; /* start all over...*/ - # endif -! goto_tabpage_tp(tpnext, TRUE); - } - - /* -*************** -*** 4686,4698 **** - if (last_curtab != new_curtab) - { - if (valid_tabpage(last_curtab)) -! goto_tabpage_tp(last_curtab); - if (win_valid(last_curwin)) - win_enter(last_curwin, FALSE); - } - /* to window with first arg */ - if (valid_tabpage(new_curtab)) -! goto_tabpage_tp(new_curtab); - if (win_valid(new_curwin)) - win_enter(new_curwin, FALSE); - ---- 4686,4698 ---- - if (last_curtab != new_curtab) - { - if (valid_tabpage(last_curtab)) -! goto_tabpage_tp(last_curtab, TRUE); - if (win_valid(last_curwin)) - win_enter(last_curwin, FALSE); - } - /* to window with first arg */ - if (valid_tabpage(new_curtab)) -! goto_tabpage_tp(new_curtab, TRUE); - if (win_valid(new_curwin)) - win_enter(new_curwin, FALSE); - -*************** -*** 4744,4750 **** - */ - #ifdef FEAT_WINDOWS - if (had_tab > 0) -! goto_tabpage_tp(first_tabpage); - for (;;) - { - #endif ---- 4744,4750 ---- - */ - #ifdef FEAT_WINDOWS - if (had_tab > 0) -! goto_tabpage_tp(first_tabpage, TRUE); - for (;;) - { - #endif -*************** -*** 4784,4790 **** - /* Without the ":tab" modifier only do the current tab page. */ - if (had_tab == 0 || tpnext == NULL) - break; -! goto_tabpage_tp(tpnext); - } - #endif - ---- 4784,4790 ---- - /* Without the ":tab" modifier only do the current tab page. */ - if (had_tab == 0 || tpnext == NULL) - break; -! goto_tabpage_tp(tpnext, TRUE); - } - #endif - -*** ../vim-7.3.550/src/eval.c 2012-06-06 16:29:06.000000000 +0200 ---- src/eval.c 2012-06-13 14:18:58.000000000 +0200 -*************** -*** 16415,16421 **** - if (tp != NULL && varname != NULL && varp != NULL) - { - save_curtab = curtab; -! goto_tabpage_tp(tp); - - tabvarname = alloc((unsigned)STRLEN(varname) + 3); - if (tabvarname != NULL) ---- 16415,16421 ---- - if (tp != NULL && varname != NULL && varp != NULL) - { - save_curtab = curtab; -! goto_tabpage_tp(tp, TRUE); - - tabvarname = alloc((unsigned)STRLEN(varname) + 3); - if (tabvarname != NULL) -*************** -*** 16428,16434 **** - - /* Restore current tabpage */ - if (valid_tabpage(save_curtab)) -! goto_tabpage_tp(save_curtab); - } - } - ---- 16428,16434 ---- - - /* Restore current tabpage */ - if (valid_tabpage(save_curtab)) -! goto_tabpage_tp(save_curtab, TRUE); - } - } - -*************** -*** 16492,16498 **** - /* set curwin to be our win, temporarily */ - save_curwin = curwin; - save_curtab = curtab; -! goto_tabpage_tp(tp); - if (!win_valid(win)) - return; - curwin = win; ---- 16492,16498 ---- - /* set curwin to be our win, temporarily */ - save_curwin = curwin; - save_curtab = curtab; -! goto_tabpage_tp(tp, TRUE); - if (!win_valid(win)) - return; - curwin = win; -*************** -*** 16527,16533 **** - /* Restore current tabpage and window, if still valid (autocomands can - * make them invalid). */ - if (valid_tabpage(save_curtab)) -! goto_tabpage_tp(save_curtab); - if (win_valid(save_curwin)) - { - curwin = save_curwin; ---- 16527,16533 ---- - /* Restore current tabpage and window, if still valid (autocomands can - * make them invalid). */ - if (valid_tabpage(save_curtab)) -! goto_tabpage_tp(save_curtab, TRUE); - if (win_valid(save_curwin)) - { - curwin = save_curwin; -*** ../vim-7.3.550/src/ex_cmds2.c 2012-04-25 17:32:14.000000000 +0200 ---- src/ex_cmds2.c 2012-06-13 14:18:58.000000000 +0200 -*************** -*** 2476,2482 **** - /* go to window "tp" */ - if (!valid_tabpage(tp)) - break; -! goto_tabpage_tp(tp); - tp = tp->tp_next; - } - #endif ---- 2476,2482 ---- - /* go to window "tp" */ - if (!valid_tabpage(tp)) - break; -! goto_tabpage_tp(tp, TRUE); - tp = tp->tp_next; - } - #endif -*** ../vim-7.3.550/src/fileio.c 2012-06-06 18:03:01.000000000 +0200 ---- src/fileio.c 2012-06-13 14:18:58.000000000 +0200 -*************** -*** 8918,8924 **** - if (wp == aucmd_win) - { - if (tp != curtab) -! goto_tabpage_tp(tp); - win_goto(aucmd_win); - goto win_found; - } ---- 8918,8924 ---- - if (wp == aucmd_win) - { - if (tp != curtab) -! goto_tabpage_tp(tp, TRUE); - win_goto(aucmd_win); - goto win_found; - } -*** ../vim-7.3.550/src/proto/window.pro 2012-02-22 14:58:24.000000000 +0100 ---- src/proto/window.pro 2012-06-13 14:23:06.000000000 +0200 -*************** -*** 27,33 **** - tabpage_T *find_tabpage __ARGS((int n)); - int tabpage_index __ARGS((tabpage_T *ftp)); - void goto_tabpage __ARGS((int n)); -! void goto_tabpage_tp __ARGS((tabpage_T *tp)); - void goto_tabpage_win __ARGS((tabpage_T *tp, win_T *wp)); - void tabpage_move __ARGS((int nr)); - void win_goto __ARGS((win_T *wp)); ---- 27,33 ---- - tabpage_T *find_tabpage __ARGS((int n)); - int tabpage_index __ARGS((tabpage_T *ftp)); - void goto_tabpage __ARGS((int n)); -! void goto_tabpage_tp __ARGS((tabpage_T *tp, int trigger_autocmds)); - void goto_tabpage_win __ARGS((tabpage_T *tp, win_T *wp)); - void tabpage_move __ARGS((int nr)); - void win_goto __ARGS((win_T *wp)); -*** ../vim-7.3.550/src/window.c 2012-06-06 19:02:40.000000000 +0200 ---- src/window.c 2012-06-13 14:24:38.000000000 +0200 -*************** -*** 45,51 **** - #if defined(FEAT_WINDOWS) || defined(PROTO) - static tabpage_T *alloc_tabpage __ARGS((void)); - static int leave_tabpage __ARGS((buf_T *new_curbuf)); -! static void enter_tabpage __ARGS((tabpage_T *tp, buf_T *old_curbuf)); - static void frame_fix_height __ARGS((win_T *wp)); - static int frame_minheight __ARGS((frame_T *topfrp, win_T *next_curwin)); - static void win_enter_ext __ARGS((win_T *wp, int undo_sync, int no_curwin)); ---- 45,51 ---- - #if defined(FEAT_WINDOWS) || defined(PROTO) - static tabpage_T *alloc_tabpage __ARGS((void)); - static int leave_tabpage __ARGS((buf_T *new_curbuf)); -! static void enter_tabpage __ARGS((tabpage_T *tp, buf_T *old_curbuf, int trigger_autocmds)); - static void frame_fix_height __ARGS((win_T *wp)); - static int frame_minheight __ARGS((frame_T *topfrp, win_T *next_curwin)); - static void win_enter_ext __ARGS((win_T *wp, int undo_sync, int no_curwin)); -*************** -*** 355,365 **** - && valid_tabpage(oldtab)) - { - newtab = curtab; -! goto_tabpage_tp(oldtab); - if (curwin == wp) - win_close(curwin, FALSE); - if (valid_tabpage(newtab)) -! goto_tabpage_tp(newtab); - } - } - break; ---- 355,365 ---- - && valid_tabpage(oldtab)) - { - newtab = curtab; -! goto_tabpage_tp(oldtab, TRUE); - if (curwin == wp) - win_close(curwin, FALSE); - if (valid_tabpage(newtab)) -! goto_tabpage_tp(newtab, TRUE); - } - } - break; -*************** -*** 2130,2137 **** - * page and then close the window and the tab page. This avoids that - * curwin and curtab are invalid while we are freeing memory, they may - * be used in GUI events. - */ -! goto_tabpage_tp(alt_tabpage()); - redraw_tabline = TRUE; - - /* Safety check: Autocommands may have closed the window when jumping ---- 2130,2139 ---- - * page and then close the window and the tab page. This avoids that - * curwin and curtab are invalid while we are freeing memory, they may - * be used in GUI events. -+ * Don't trigger autocommands yet, they may use wrong values, so do -+ * that below. - */ -! goto_tabpage_tp(alt_tabpage(), FALSE); - redraw_tabline = TRUE; - - /* Safety check: Autocommands may have closed the window when jumping -*************** -*** 2144,2149 **** ---- 2146,2157 ---- - if (h != tabline_height()) - shell_new_rows(); - } -+ /* Since goto_tabpage_tp above did not trigger *Enter autocommands, do -+ * that now. */ -+ #ifdef FEAT_AUTOCMD -+ apply_autocmds(EVENT_TABENTER, NULL, NULL, FALSE, curbuf); -+ apply_autocmds(EVENT_WINENTER, NULL, NULL, FALSE, curbuf); -+ #endif - return TRUE; - } - return FALSE; -*************** -*** 3556,3562 **** - } - - /* Failed, get back the previous Tab page */ -! enter_tabpage(curtab, curbuf); - return FAIL; - } - ---- 3564,3570 ---- - } - - /* Failed, get back the previous Tab page */ -! enter_tabpage(curtab, curbuf, TRUE); - return FAIL; - } - -*************** -*** 3709,3719 **** - /* - * Start using tab page "tp". - * Only to be used after leave_tabpage() or freeing the current tab page. - */ - static void -! enter_tabpage(tp, old_curbuf) - tabpage_T *tp; - buf_T *old_curbuf UNUSED; - { - int old_off = tp->tp_firstwin->w_winrow; - win_T *next_prevwin = tp->tp_prevwin; ---- 3717,3729 ---- - /* - * Start using tab page "tp". - * Only to be used after leave_tabpage() or freeing the current tab page. -+ * Only trigger *Enter autocommands when trigger_autocmds is TRUE. - */ - static void -! enter_tabpage(tp, old_curbuf, trigger_autocmds) - tabpage_T *tp; - buf_T *old_curbuf UNUSED; -+ int trigger_autocmds; - { - int old_off = tp->tp_firstwin->w_winrow; - win_T *next_prevwin = tp->tp_prevwin; -*************** -*** 3761,3769 **** - #ifdef FEAT_AUTOCMD - /* Apply autocommands after updating the display, when 'rows' and - * 'columns' have been set correctly. */ -! apply_autocmds(EVENT_TABENTER, NULL, NULL, FALSE, curbuf); -! if (old_curbuf != curbuf) -! apply_autocmds(EVENT_BUFENTER, NULL, NULL, FALSE, curbuf); - #endif - - redraw_all_later(CLEAR); ---- 3771,3782 ---- - #ifdef FEAT_AUTOCMD - /* Apply autocommands after updating the display, when 'rows' and - * 'columns' have been set correctly. */ -! if (trigger_autocmds) -! { -! apply_autocmds(EVENT_TABENTER, NULL, NULL, FALSE, curbuf); -! if (old_curbuf != curbuf) -! apply_autocmds(EVENT_BUFENTER, NULL, NULL, FALSE, curbuf); -! } - #endif - - redraw_all_later(CLEAR); -*************** -*** 3839,3845 **** - } - } - -! goto_tabpage_tp(tp); - - #ifdef FEAT_GUI_TABLINE - if (gui_use_tabline()) ---- 3852,3858 ---- - } - } - -! goto_tabpage_tp(tp, TRUE); - - #ifdef FEAT_GUI_TABLINE - if (gui_use_tabline()) -*************** -*** 3849,3859 **** - - /* - * Go to tabpage "tp". - * Note: doesn't update the GUI tab. - */ - void -! goto_tabpage_tp(tp) - tabpage_T *tp; - { - /* Don't repeat a message in another tab page. */ - set_keep_msg(NULL, 0); ---- 3862,3874 ---- - - /* - * Go to tabpage "tp". -+ * Only trigger *Enter autocommands when trigger_autocmds is TRUE. - * Note: doesn't update the GUI tab. - */ - void -! goto_tabpage_tp(tp, trigger_autocmds) - tabpage_T *tp; -+ int trigger_autocmds; - { - /* Don't repeat a message in another tab page. */ - set_keep_msg(NULL, 0); -*************** -*** 3861,3869 **** - if (tp != curtab && leave_tabpage(tp->tp_curwin->w_buffer) == OK) - { - if (valid_tabpage(tp)) -! enter_tabpage(tp, curbuf); - else -! enter_tabpage(curtab, curbuf); - } - } - ---- 3876,3884 ---- - if (tp != curtab && leave_tabpage(tp->tp_curwin->w_buffer) == OK) - { - if (valid_tabpage(tp)) -! enter_tabpage(tp, curbuf, trigger_autocmds); - else -! enter_tabpage(curtab, curbuf, trigger_autocmds); - } - } - -*************** -*** 3876,3882 **** - tabpage_T *tp; - win_T *wp; - { -! goto_tabpage_tp(tp); - if (curtab == tp && win_valid(wp)) - { - win_enter(wp, TRUE); ---- 3891,3897 ---- - tabpage_T *tp; - win_T *wp; - { -! goto_tabpage_tp(tp, TRUE); - if (curtab == tp && win_valid(wp)) - { - win_enter(wp, TRUE); -*** ../vim-7.3.550/src/version.c 2012-06-13 14:01:36.000000000 +0200 ---- src/version.c 2012-06-13 14:28:00.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 551, - /**/ - --- -Give a man a computer program and you give him a headache, -but teach him to program computers and you give him the power -to create headaches for others for the rest of his life... - R. B. Forest - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.552 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.552 -Problem: Formatting inside comments does not use the "2" flag in - 'formatoptions'. -Solution: Support the "2" flag. (Tor Perkins) -Files: src/vim.h, src/ops.c, src/edit.c, src/misc1.c, - src/testdir/test68.in, src/testdir/test68.ok - - -*** ../vim-7.3.551/src/vim.h 2012-06-06 18:03:01.000000000 +0200 ---- src/vim.h 2012-06-13 16:07:27.000000000 +0200 -*************** -*** 1072,1083 **** ---- 1072,1085 ---- - #define INSCHAR_DO_COM 2 /* format comments */ - #define INSCHAR_CTRLV 4 /* char typed just after CTRL-V */ - #define INSCHAR_NO_FEX 8 /* don't use 'formatexpr' */ -+ #define INSCHAR_COM_LIST 16 /* format comments with list/2nd line indent */ - - /* flags for open_line() */ - #define OPENLINE_DELSPACES 1 /* delete spaces after cursor */ - #define OPENLINE_DO_COM 2 /* format comments */ - #define OPENLINE_KEEPTRAIL 4 /* keep trailing spaces */ - #define OPENLINE_MARKFIX 8 /* fix mark positions */ -+ #define OPENLINE_COM_LIST 16 /* format comments with list/2nd line indent */ - - /* - * There are four history tables: -*** ../vim-7.3.551/src/ops.c 2012-06-13 14:01:36.000000000 +0200 ---- src/ops.c 2012-06-13 16:53:44.000000000 +0200 -*************** -*** 1727,1734 **** - * and the delete is within one line. */ - if (( - #ifdef FEAT_CLIPBOARD -! ((clip_unnamed & CLIP_UNNAMED) && oap->regname == '*') || -! ((clip_unnamed & CLIP_UNNAMED_PLUS) && oap->regname == '+') || - #endif - oap->regname == 0) && oap->motion_type != MLINE - && oap->line_count == 1) ---- 1727,1734 ---- - * and the delete is within one line. */ - if (( - #ifdef FEAT_CLIPBOARD -! ((clip_unnamed & CLIP_UNNAMED) && oap->regname == '*') || -! ((clip_unnamed & CLIP_UNNAMED_PLUS) && oap->regname == '+') || - #endif - oap->regname == 0) && oap->motion_type != MLINE - && oap->line_count == 1) -*************** -*** 4208,4217 **** - * "is_comment". - * line - line to be processed, - * process - if FALSE, will only check whether the line ends with an unclosed -! * comment, - * include_space - whether to also skip space following the comment leader, - * is_comment - will indicate whether the current line ends with an unclosed -! * comment. - */ - static char_u * - skip_comment(line, process, include_space, is_comment) ---- 4208,4217 ---- - * "is_comment". - * line - line to be processed, - * process - if FALSE, will only check whether the line ends with an unclosed -! * comment, - * include_space - whether to also skip space following the comment leader, - * is_comment - will indicate whether the current line ends with an unclosed -! * comment. - */ - static char_u * - skip_comment(line, process, include_space, is_comment) -*************** -*** 4723,4731 **** - char_u *leader_flags = NULL; /* flags for leader of current line */ - char_u *next_leader_flags; /* flags for leader of next line */ - int do_comments; /* format comments */ - #endif - int advance = TRUE; -! int second_indent = -1; - int do_second_indent; - int do_number_indent; - int do_trail_white; ---- 4723,4733 ---- - char_u *leader_flags = NULL; /* flags for leader of current line */ - char_u *next_leader_flags; /* flags for leader of next line */ - int do_comments; /* format comments */ -+ int do_comments_list = 0; /* format comments with 'n' or '2' */ - #endif - int advance = TRUE; -! int second_indent = -1; /* indent for second line (comment -! * aware) */ - int do_second_indent; - int do_number_indent; - int do_trail_white; -*************** -*** 4828,4845 **** - if (first_par_line - && (do_second_indent || do_number_indent) - && prev_is_end_par -! && curwin->w_cursor.lnum < curbuf->b_ml.ml_line_count - #ifdef FEAT_COMMENTS -! && leader_len == 0 -! && next_leader_len == 0 - #endif -! ) -! { -! if (do_second_indent -! && !lineempty(curwin->w_cursor.lnum + 1)) -! second_indent = get_indent_lnum(curwin->w_cursor.lnum + 1); - else if (do_number_indent) -! second_indent = get_number_indent(curwin->w_cursor.lnum); - } - - /* ---- 4830,4875 ---- - if (first_par_line - && (do_second_indent || do_number_indent) - && prev_is_end_par -! && curwin->w_cursor.lnum < curbuf->b_ml.ml_line_count) -! { -! if (do_second_indent && !lineempty(curwin->w_cursor.lnum + 1)) -! { - #ifdef FEAT_COMMENTS -! if (leader_len == 0 && next_leader_len == 0) -! { -! /* no comment found */ - #endif -! second_indent = -! get_indent_lnum(curwin->w_cursor.lnum + 1); -! #ifdef FEAT_COMMENTS -! } -! else -! { -! second_indent = next_leader_len; -! do_comments_list = 1; -! } -! #endif -! } - else if (do_number_indent) -! { -! #ifdef FEAT_COMMENTS -! if (leader_len == 0 && next_leader_len == 0) -! { -! /* no comment found */ -! #endif -! second_indent = -! get_number_indent(curwin->w_cursor.lnum); -! #ifdef FEAT_COMMENTS -! } -! else -! { -! /* get_number_indent() is now "comment aware"... */ -! second_indent = -! get_number_indent(curwin->w_cursor.lnum); -! do_comments_list = 1; -! } -! #endif -! } - } - - /* -*************** -*** 4878,4883 **** ---- 4908,4915 ---- - insertchar(NUL, INSCHAR_FORMAT - #ifdef FEAT_COMMENTS - + (do_comments ? INSCHAR_DO_COM : 0) -+ + (do_comments && do_comments_list -+ ? INSCHAR_COM_LIST : 0) - #endif - + (avoid_fex ? INSCHAR_NO_FEX : 0), second_indent); - State = old_State; -*** ../vim-7.3.551/src/edit.c 2012-06-06 16:12:54.000000000 +0200 ---- src/edit.c 2012-06-13 16:54:10.000000000 +0200 -*************** -*** 1463,1469 **** - * what check_abbr() expects. */ - (has_mbyte && c >= 0x100) ? (c + ABBR_OFF) : - #endif -! c) && c != Ctrl_RSB)) - { - insert_special(c, FALSE, FALSE); - #ifdef FEAT_RIGHTLEFT ---- 1463,1469 ---- - * what check_abbr() expects. */ - (has_mbyte && c >= 0x100) ? (c + ABBR_OFF) : - #endif -! c) && c != Ctrl_RSB)) - { - insert_special(c, FALSE, FALSE); - #ifdef FEAT_RIGHTLEFT -*************** -*** 5769,5774 **** ---- 5769,5784 ---- - # define WHITECHAR(cc) vim_iswhite(cc) - #endif - -+ /* -+ * "flags": INSCHAR_FORMAT - force formatting -+ * INSCHAR_CTRLV - char typed just after CTRL-V -+ * INSCHAR_NO_FEX - don't use 'formatexpr' -+ * -+ * NOTE: passes the flags value straight through to internal_format() which, -+ * beside INSCHAR_FORMAT (above), is also looking for these: -+ * INSCHAR_DO_COM - format comments -+ * INSCHAR_COM_LIST - format comments with num list or 2nd line indent -+ */ - void - insertchar(c, flags, second_indent) - int c; /* character to insert or NUL */ -*************** -*** 6011,6016 **** ---- 6021,6029 ---- - - /* - * Format text at the current insert position. -+ * -+ * If the INSCHAR_COM_LIST flag is present, then the value of second_indent -+ * will be the comment leader length sent to open_line(). - */ - static void - internal_format(textwidth, second_indent, flags, format_only, c) -*************** -*** 6289,6311 **** - + (fo_white_par ? OPENLINE_KEEPTRAIL : 0) - #ifdef FEAT_COMMENTS - + (do_comments ? OPENLINE_DO_COM : 0) - #endif -! , old_indent); -! old_indent = 0; - - replace_offset = 0; - if (first_line) - { -! if (second_indent < 0 && has_format_option(FO_Q_NUMBER)) -! second_indent = get_number_indent(curwin->w_cursor.lnum -1); -! if (second_indent >= 0) - { - #ifdef FEAT_VREPLACE -! if (State & VREPLACE_FLAG) -! change_indent(INDENT_SET, second_indent, FALSE, NUL, TRUE); -! else - #endif -! (void)set_indent(second_indent, SIN_CHANGED); - } - first_line = FALSE; - } ---- 6302,6337 ---- - + (fo_white_par ? OPENLINE_KEEPTRAIL : 0) - #ifdef FEAT_COMMENTS - + (do_comments ? OPENLINE_DO_COM : 0) -+ + ((flags & INSCHAR_COM_LIST) ? OPENLINE_COM_LIST : 0) - #endif -! , ((flags & INSCHAR_COM_LIST) ? second_indent : old_indent)); -! if (!(flags & INSCHAR_COM_LIST)) -! old_indent = 0; - - replace_offset = 0; - if (first_line) - { -! if (!(flags & INSCHAR_COM_LIST)) - { -+ /* -+ * This section is for numeric lists w/o comments. If comment -+ * indents are needed with numeric lists (formatoptions=nq), -+ * then the INSCHAR_COM_LIST flag will cause the corresponding -+ * OPENLINE_COM_LIST flag to be passed through to open_line() -+ * (as seen above)... -+ */ -+ if (second_indent < 0 && has_format_option(FO_Q_NUMBER)) -+ second_indent = get_number_indent(curwin->w_cursor.lnum -1); -+ if (second_indent >= 0) -+ { - #ifdef FEAT_VREPLACE -! if (State & VREPLACE_FLAG) -! change_indent(INDENT_SET, second_indent, -! FALSE, NUL, TRUE); -! else - #endif -! (void)set_indent(second_indent, SIN_CHANGED); -! } - } - first_line = FALSE; - } -*** ../vim-7.3.551/src/misc1.c 2012-06-13 13:40:45.000000000 +0200 ---- src/misc1.c 2012-06-13 16:54:59.000000000 +0200 -*************** -*** 423,449 **** - { - colnr_T col; - pos_T pos; -- regmmatch_T regmatch; - - if (lnum > curbuf->b_ml.ml_line_count) - return -1; - pos.lnum = 0; -! regmatch.regprog = vim_regcomp(curbuf->b_p_flp, RE_MAGIC); -! if (regmatch.regprog != NULL) - { -! regmatch.rmm_ic = FALSE; -! regmatch.rmm_maxcol = 0; -! if (vim_regexec_multi(®match, curwin, curbuf, lnum, -! (colnr_T)0, NULL)) - { -! pos.lnum = regmatch.endpos[0].lnum + lnum; -! pos.col = regmatch.endpos[0].col; - #ifdef FEAT_VIRTUALEDIT -! pos.coladd = 0; - #endif - } - vim_free(regmatch.regprog); - } - - if (pos.lnum == 0 || *ml_get_pos(&pos) == NUL) - return -1; ---- 423,492 ---- - { - colnr_T col; - pos_T pos; - - if (lnum > curbuf->b_ml.ml_line_count) - return -1; - pos.lnum = 0; -! -! #ifdef FEAT_COMMENTS -! if (has_format_option(FO_Q_COMS) && has_format_option(FO_Q_NUMBER)) - { -! regmatch_T regmatch; -! int lead_len; /* length of comment leader */ -! -! lead_len = get_leader_len(ml_get(lnum), NULL, FALSE, TRUE); -! regmatch.regprog = vim_regcomp(curbuf->b_p_flp, RE_MAGIC); -! if (regmatch.regprog != NULL) - { -! regmatch.rm_ic = FALSE; -! -! /* vim_regexec() expects a pointer to a line. This lets us -! * start matching for the flp beyond any comment leader... */ -! if (vim_regexec(®match, ml_get(lnum) + lead_len, (colnr_T)0)) -! { -! pos.lnum = lnum; -! pos.col = *regmatch.endp - (ml_get(lnum) + lead_len); -! pos.col += lead_len; - #ifdef FEAT_VIRTUALEDIT -! pos.coladd = 0; - #endif -+ } - } - vim_free(regmatch.regprog); - } -+ else -+ { -+ /* -+ * What follows is the orig code that is not "comment aware"... -+ * -+ * I'm not sure if regmmatch_T (multi-match) is needed in this case. -+ * It may be true that this section would work properly using the -+ * regmatch_T code above, in which case, these two seperate sections -+ * should be consolidated w/ FEAT_COMMENTS making lead_len > 0... -+ */ -+ #endif -+ regmmatch_T regmatch; -+ -+ regmatch.regprog = vim_regcomp(curbuf->b_p_flp, RE_MAGIC); -+ -+ if (regmatch.regprog != NULL) -+ { -+ regmatch.rmm_ic = FALSE; -+ regmatch.rmm_maxcol = 0; -+ if (vim_regexec_multi(®match, curwin, curbuf, -+ lnum, (colnr_T)0, NULL)) -+ { -+ pos.lnum = regmatch.endpos[0].lnum + lnum; -+ pos.col = regmatch.endpos[0].col; -+ #ifdef FEAT_VIRTUALEDIT -+ pos.coladd = 0; -+ #endif -+ } -+ vim_free(regmatch.regprog); -+ } -+ #ifdef FEAT_COMMENTS -+ } -+ #endif - - if (pos.lnum == 0 || *ml_get_pos(&pos) == NUL) - return -1; -*************** -*** 502,515 **** - * OPENLINE_DO_COM format comments - * OPENLINE_KEEPTRAIL keep trailing spaces - * OPENLINE_MARKFIX adjust mark positions after the line break - * - * Return TRUE for success, FALSE for failure - */ - int -! open_line(dir, flags, old_indent) - int dir; /* FORWARD or BACKWARD */ - int flags; -! int old_indent; /* indent for after ^^D in Insert mode */ - { - char_u *saved_line; /* copy of the original line */ - char_u *next_line = NULL; /* copy of the next line */ ---- 545,562 ---- - * OPENLINE_DO_COM format comments - * OPENLINE_KEEPTRAIL keep trailing spaces - * OPENLINE_MARKFIX adjust mark positions after the line break -+ * OPENLINE_COM_LIST format comments with list or 2nd line indent -+ * -+ * "second_line_indent": indent for after ^^D in Insert mode or if flag -+ * OPENLINE_COM_LIST - * - * Return TRUE for success, FALSE for failure - */ - int -! open_line(dir, flags, second_line_indent) - int dir; /* FORWARD or BACKWARD */ - int flags; -! int second_line_indent; - { - char_u *saved_line; /* copy of the original line */ - char_u *next_line = NULL; /* copy of the next line */ -*************** -*** 650,657 **** - * count white space on current line - */ - newindent = get_indent_str(saved_line, (int)curbuf->b_p_ts); -! if (newindent == 0) -! newindent = old_indent; /* for ^^D command in insert mode */ - - #ifdef FEAT_SMARTINDENT - /* ---- 697,704 ---- - * count white space on current line - */ - newindent = get_indent_str(saved_line, (int)curbuf->b_p_ts); -! if (newindent == 0 && !(flags & OPENLINE_COM_LIST)) -! newindent = second_line_indent; /* for ^^D command in insert mode */ - - #ifdef FEAT_SMARTINDENT - /* -*************** -*** 1008,1015 **** - if (lead_len) - { - /* allocate buffer (may concatenate p_exta later) */ -! leader = alloc(lead_len + lead_repl_len + extra_space + -! extra_len + 1); - allocated = leader; /* remember to free it later */ - - if (leader == NULL) ---- 1055,1062 ---- - if (lead_len) - { - /* allocate buffer (may concatenate p_exta later) */ -! leader = alloc(lead_len + lead_repl_len + extra_space + extra_len -! + (second_line_indent > 0 ? second_line_indent : 0)); - allocated = leader; /* remember to free it later */ - - if (leader == NULL) -*************** -*** 1304,1309 **** ---- 1351,1370 ---- - /* concatenate leader and p_extra, if there is a leader */ - if (lead_len) - { -+ if (flags & OPENLINE_COM_LIST && second_line_indent > 0) -+ { -+ int i; -+ int padding = second_line_indent - (newindent + STRLEN(leader)); -+ -+ /* Here whitespace is inserted after the comment char. -+ * Below, set_indent(newindent, SIN_INSERT) will insert the -+ * whitespace needed before the comment char. */ -+ for (i = 0; i < padding; i++) -+ { -+ STRCAT(leader, " "); -+ newcol++; -+ } -+ } - STRCAT(leader, p_extra); - p_extra = leader; - did_ai = TRUE; /* So truncating blanks works with comments */ -*************** -*** 4966,4973 **** - char_u * - FullName_save(fname, force) - char_u *fname; -! int force; /* force expansion, even when it already looks -! like a full path name */ - { - char_u *buf; - char_u *new_fname = NULL; ---- 5027,5034 ---- - char_u * - FullName_save(fname, force) - char_u *fname; -! int force; /* force expansion, even when it already looks -! * like a full path name */ - { - char_u *buf; - char_u *new_fname = NULL; -*** ../vim-7.3.551/src/testdir/test68.in 2010-10-09 17:21:42.000000000 +0200 ---- src/testdir/test68.in 2012-06-13 15:49:38.000000000 +0200 -*************** -*** 51,56 **** ---- 51,77 ---- - } - - STARTTEST -+ /^{/+1 -+ :set tw=5 fo=qn comments=:# -+ gwap -+ ENDTEST -+ -+ { -+ # 1 a b -+ } -+ -+ STARTTEST -+ /^{/+1 -+ :set tw=5 fo=q2 comments=:# -+ gwap -+ ENDTEST -+ -+ { -+ # x -+ # a b -+ } -+ -+ STARTTEST - /^{/+2 - :set tw& fo=a - I^^ -*** ../vim-7.3.551/src/testdir/test68.ok 2010-10-09 17:21:42.000000000 +0200 ---- src/testdir/test68.ok 2012-06-13 15:49:38.000000000 +0200 -*************** -*** 34,38 **** ---- 34,50 ---- - } - - -+ { -+ # 1 a -+ # b -+ } -+ -+ -+ { -+ # x a -+ # b -+ } -+ -+ - { 1aa ^^2bb } - -*** ../vim-7.3.551/src/version.c 2012-06-13 14:28:16.000000000 +0200 ---- src/version.c 2012-06-13 16:36:14.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 552, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -31. You code your homework in HTML and give your instructor the URL. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.553 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.553 -Problem: With double-width characters and 'listchars' containing "precedes" - the text is displayed one cell off. -Solution: Check for double-width character being overwritten by the - "precedes" character. (Yasuhiro Matsumoto) -Files: src/screen.c - - -*** ../vim-7.3.552/src/screen.c 2012-06-06 19:05:45.000000000 +0200 ---- src/screen.c 2012-06-13 17:55:10.000000000 +0200 -*************** -*** 89,94 **** ---- 89,97 ---- - - #include "vim.h" - -+ #define MB_FILLER_CHAR '<' /* character used when a double-width character -+ * doesn't fit. */ -+ - /* - * The attributes that are actually active for writing to the screen. - */ -*************** -*** 4016,4022 **** - if (n_skip > 0 && mb_l > 1 && n_extra == 0) - { - n_extra = 1; -! c_extra = '<'; - c = ' '; - if (area_attr == 0 && search_attr == 0) - { ---- 4019,4025 ---- - if (n_skip > 0 && mb_l > 1 && n_extra == 0) - { - n_extra = 1; -! c_extra = MB_FILLER_CHAR; - c = ' '; - if (area_attr == 0 && search_attr == 0) - { -*************** -*** 4576,4581 **** ---- 4579,4593 ---- - c = lcs_prec; - lcs_prec_todo = NUL; - #ifdef FEAT_MBYTE -+ if (has_mbyte && (*mb_char2cells)(mb_c) > 1) -+ { -+ /* Double-width character being overwritten by the "precedes" -+ * character, need to fill up half the character. */ -+ c_extra = MB_FILLER_CHAR; -+ n_extra = 1; -+ n_attr = 2; -+ extra_attr = hl_attr(HLF_AT); -+ } - mb_c = c; - if (enc_utf8 && (*mb_char2len)(c) > 1) - { -*** ../vim-7.3.552/src/version.c 2012-06-13 17:28:51.000000000 +0200 ---- src/version.c 2012-06-13 17:48:45.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 553, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -32. You don't know what sex three of your closest friends are, because they - have neutral nicknames and you never bothered to ask. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.554 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.554 (after 7.3.551) -Problem: Compiler warning for unused argument. -Solution: Add UNUSED. -Files: src/window.c - - -*** ../vim-7.3.553/src/window.c 2012-06-13 14:28:16.000000000 +0200 ---- src/window.c 2012-06-13 17:46:49.000000000 +0200 -*************** -*** 3723,3729 **** - enter_tabpage(tp, old_curbuf, trigger_autocmds) - tabpage_T *tp; - buf_T *old_curbuf UNUSED; -! int trigger_autocmds; - { - int old_off = tp->tp_firstwin->w_winrow; - win_T *next_prevwin = tp->tp_prevwin; ---- 3723,3729 ---- - enter_tabpage(tp, old_curbuf, trigger_autocmds) - tabpage_T *tp; - buf_T *old_curbuf UNUSED; -! int trigger_autocmds UNUSED; - { - int old_off = tp->tp_firstwin->w_winrow; - win_T *next_prevwin = tp->tp_prevwin; -*** ../vim-7.3.553/src/version.c 2012-06-13 18:06:32.000000000 +0200 ---- src/version.c 2012-06-13 18:15:08.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 554, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -33. You name your children Eudora, Mozilla and Dotcom. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.555 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.555 -Problem: Building on IBM z/OS fails. -Solution: Adjust configure. Use the QUOTESED value from config.mk instead of - the hard coded one in Makefile. (Stephen Bovy) -Files: src/configure.in, src/auto/configure, src/Makefile - - -*** ../vim-7.3.554/src/configure.in 2012-02-05 22:51:27.000000000 +0100 ---- src/configure.in 2012-06-13 18:52:11.000000000 +0200 -*************** -*** 329,343 **** - echo "" - echo "------------------------------------------" - echo " On z/OS Unix, the environment variable" -! echo " __CC_${ccn}MODE must be set to \"1\"!" - echo " Do:" - echo " export _CC_${ccn}MODE=1" - echo " and then call configure again." - echo "------------------------------------------" - exit 1 - fi -! CFLAGS="$CFLAGS -D_ALL_SOURCE -Wc,float\\(IEEE\\)"; -! LDFLAGS="$LDFLAGS -Wl,EDIT=NO" - AC_MSG_RESULT(yes) - ;; - *) zOSUnix="no"; ---- 329,346 ---- - echo "" - echo "------------------------------------------" - echo " On z/OS Unix, the environment variable" -! echo " _CC_${ccn}MODE must be set to \"1\"!" - echo " Do:" - echo " export _CC_${ccn}MODE=1" - echo " and then call configure again." - echo "------------------------------------------" - exit 1 - fi -! # Set CFLAGS for configure process. -! # This will be reset later for config.mk. -! # Use haltonmsg to force error for missing H files. -! CFLAGS="$CFLAGS -D_ALL_SOURCE -Wc,float(ieee),haltonmsg(3296)"; -! LDFLAGS="$LDFLAGS -Wl,EDIT=NO" - AC_MSG_RESULT(yes) - ;; - *) zOSUnix="no"; -*************** -*** 2378,2387 **** - if test -z "$SKIP_MOTIF"; then - cppflags_save=$CPPFLAGS - CPPFLAGS="$CPPFLAGS $X_CFLAGS" -! AC_CHECK_HEADERS(Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h \ -! Xm/UnhighlightT.h Xm/Notebook.h) - -! if test $ac_cv_header_Xm_XpmP_h = yes; then - dnl Solaris uses XpmAttributes_21, very annoying. - AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h]) - AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;], ---- 2381,2395 ---- - if test -z "$SKIP_MOTIF"; then - cppflags_save=$CPPFLAGS - CPPFLAGS="$CPPFLAGS $X_CFLAGS" -! if test "$zOSUnix" = "yes"; then -! xmheader="Xm/Xm.h" -! else -! xmheader="Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h -! Xm/UnhighlightT.h Xm/Notebook.h" -! fi -! AC_CHECK_HEADERS($xmheader) - -! if test "x$ac_cv_header_Xm_XpmP_h" = "xyes"; then - dnl Solaris uses XpmAttributes_21, very annoying. - AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h]) - AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;], -*************** -*** 3642,3647 **** ---- 3650,3660 ---- - fi - AC_SUBST(LINK_AS_NEEDED) - -+ # IBM z/OS reset CFLAGS for config.mk -+ if test "$zOSUnix" = "yes"; then -+ CFLAGS="-D_ALL_SOURCE -Wc,float\(ieee\),dll" -+ fi -+ - dnl write output files - AC_OUTPUT(auto/config.mk:config.mk.in) - -*** ../vim-7.3.554/src/auto/configure 2012-02-05 22:51:27.000000000 +0100 ---- src/auto/configure 2012-06-13 18:53:04.000000000 +0200 -*************** -*** 4426,4440 **** - echo "" - echo "------------------------------------------" - echo " On z/OS Unix, the environment variable" -! echo " __CC_${ccn}MODE must be set to \"1\"!" - echo " Do:" - echo " export _CC_${ccn}MODE=1" - echo " and then call configure again." - echo "------------------------------------------" - exit 1 - fi -! CFLAGS="$CFLAGS -D_ALL_SOURCE -Wc,float\\(IEEE\\)"; -! LDFLAGS="$LDFLAGS -Wl,EDIT=NO" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 - $as_echo "yes" >&6; } - ;; ---- 4426,4443 ---- - echo "" - echo "------------------------------------------" - echo " On z/OS Unix, the environment variable" -! echo " _CC_${ccn}MODE must be set to \"1\"!" - echo " Do:" - echo " export _CC_${ccn}MODE=1" - echo " and then call configure again." - echo "------------------------------------------" - exit 1 - fi -! # Set CFLAGS for configure process. -! # This will be reset later for config.mk. -! # Use haltonmsg to force error for missing H files. -! CFLAGS="$CFLAGS -D_ALL_SOURCE -Wc,float(ieee),haltonmsg(3296)"; -! LDFLAGS="$LDFLAGS -Wl,EDIT=NO" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 - $as_echo "yes" >&6; } - ;; -*************** -*** 8697,8704 **** - if test -z "$SKIP_MOTIF"; then - cppflags_save=$CPPFLAGS - CPPFLAGS="$CPPFLAGS $X_CFLAGS" -! for ac_header in Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h \ -! Xm/UnhighlightT.h Xm/Notebook.h - do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` - ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" ---- 8700,8712 ---- - if test -z "$SKIP_MOTIF"; then - cppflags_save=$CPPFLAGS - CPPFLAGS="$CPPFLAGS $X_CFLAGS" -! if test "$zOSUnix" = "yes"; then -! xmheader="Xm/Xm.h" -! else -! xmheader="Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h -! Xm/UnhighlightT.h Xm/Notebook.h" -! fi -! for ac_header in $xmheader - do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` - ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -*************** -*** 8713,8719 **** - done - - -! if test $ac_cv_header_Xm_XpmP_h = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XpmAttributes_21 in Xm/XpmP.h" >&5 - $as_echo_n "checking for XpmAttributes_21 in Xm/XpmP.h... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext ---- 8721,8727 ---- - done - - -! if test "x$ac_cv_header_Xm_XpmP_h" = "xyes"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XpmAttributes_21 in Xm/XpmP.h" >&5 - $as_echo_n "checking for XpmAttributes_21 in Xm/XpmP.h... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -*************** -*** 12590,12595 **** ---- 12598,12608 ---- - fi - - -+ # IBM z/OS reset CFLAGS for config.mk -+ if test "$zOSUnix" = "yes"; then -+ CFLAGS="-D_ALL_SOURCE -Wc,float\(ieee\),dll" -+ fi -+ - ac_config_files="$ac_config_files auto/config.mk:config.mk.in" - - cat >confcache <<\_ACEOF -*** ../vim-7.3.554/src/Makefile 2012-03-28 17:17:45.000000000 +0200 ---- src/Makefile 2012-06-13 18:48:13.000000000 +0200 -*************** -*** 875,880 **** ---- 875,884 ---- - #CFLAGS = -O -Qtarget=m88110compat - #EXTRA_LIBS = -lgen - -+ # The value of QUOTESED comes from auto/config.mk. -+ # Uncomment the next line to use the default value. -+ # QUOTESED = sed -e 's/[\\"]/\\&/g' -e 's/\\"/"/' -e 's/\\";$$/";/' -+ - ##################### end of system specific lines ################### }}} - - ### Names of the programs and targets {{{1 -*************** -*** 2411,2417 **** - auto/osdef.h: auto/config.h osdef.sh osdef1.h.in osdef2.h.in - CC="$(CC) $(OSDEF_CFLAGS)" srcdir=$(srcdir) sh $(srcdir)/osdef.sh - -- QUOTESED = sed -e 's/[\\"]/\\&/g' -e 's/\\"/"/' -e 's/\\";$$/";/' - auto/pathdef.c: Makefile auto/config.mk - -@echo creating $@ - -@echo '/* pathdef.c */' > $@ ---- 2415,2420 ---- -*** ../vim-7.3.554/src/version.c 2012-06-13 18:15:13.000000000 +0200 ---- src/version.c 2012-06-13 19:13:54.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 555, - /**/ - --- -My sister Cecilia opened a computer store in Hawaii. -She sells C shells by the seashore. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.556 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.556 -Problem: Compiler warnings on 64 bit Windows. -Solution: Add type casts. (Mike Williams) -Files: src/misc1.c - - -*** ../vim-7.3.555/src/misc1.c 2012-06-13 17:28:51.000000000 +0200 ---- src/misc1.c 2012-06-14 20:55:47.000000000 +0200 -*************** -*** 445,452 **** - if (vim_regexec(®match, ml_get(lnum) + lead_len, (colnr_T)0)) - { - pos.lnum = lnum; -! pos.col = *regmatch.endp - (ml_get(lnum) + lead_len); -! pos.col += lead_len; - #ifdef FEAT_VIRTUALEDIT - pos.coladd = 0; - #endif ---- 445,451 ---- - if (vim_regexec(®match, ml_get(lnum) + lead_len, (colnr_T)0)) - { - pos.lnum = lnum; -! pos.col = (colnr_T)(*regmatch.endp - ml_get(lnum)); - #ifdef FEAT_VIRTUALEDIT - pos.coladd = 0; - #endif -*************** -*** 1354,1360 **** - if (flags & OPENLINE_COM_LIST && second_line_indent > 0) - { - int i; -! int padding = second_line_indent - (newindent + STRLEN(leader)); - - /* Here whitespace is inserted after the comment char. - * Below, set_indent(newindent, SIN_INSERT) will insert the ---- 1353,1360 ---- - if (flags & OPENLINE_COM_LIST && second_line_indent > 0) - { - int i; -! int padding = second_line_indent -! - (newindent + (int)STRLEN(leader)); - - /* Here whitespace is inserted after the comment char. - * Below, set_indent(newindent, SIN_INSERT) will insert the -*** ../vim-7.3.555/src/version.c 2012-06-13 19:19:36.000000000 +0200 ---- src/version.c 2012-06-14 20:54:59.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 556, - /**/ - --- -He who laughs last, thinks slowest. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.557 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.557 -Problem: Crash when an autocommand wipes out a buffer when it is hidden. -Solution: Restore the current window when needed. (Christian Brabandt) -Files: src/buffer.c - - -*** ../vim-7.3.556/src/buffer.c 2012-06-13 14:28:16.000000000 +0200 ---- src/buffer.c 2012-06-20 11:49:54.000000000 +0200 -*************** -*** 1363,1368 **** ---- 1363,1369 ---- - int action; - { - buf_T *prevbuf; -+ win_T *prevwin; - int unload = (action == DOBUF_UNLOAD || action == DOBUF_DEL - || action == DOBUF_WIPE); - -*************** -*** 1402,1423 **** - if (buf_valid(prevbuf)) - #endif - { - if (prevbuf == curbuf) - u_sync(FALSE); - close_buffer(prevbuf == curwin->w_buffer ? curwin : NULL, prevbuf, - unload ? action : (action == DOBUF_GOTO - && !P_HID(prevbuf) - && !bufIsChanged(prevbuf)) ? DOBUF_UNLOAD : 0, FALSE); - } - } - #ifdef FEAT_AUTOCMD - /* An autocommand may have deleted "buf", already entered it (e.g., when -! * it did ":bunload") or aborted the script processing! */ -! # ifdef FEAT_EVAL -! if (buf_valid(buf) && buf != curbuf && !aborting()) -! # else -! if (buf_valid(buf) && buf != curbuf) -! # endif - #endif - enter_buffer(buf); - } ---- 1403,1432 ---- - if (buf_valid(prevbuf)) - #endif - { -+ prevwin = curwin; - if (prevbuf == curbuf) - u_sync(FALSE); - close_buffer(prevbuf == curwin->w_buffer ? curwin : NULL, prevbuf, - unload ? action : (action == DOBUF_GOTO - && !P_HID(prevbuf) - && !bufIsChanged(prevbuf)) ? DOBUF_UNLOAD : 0, FALSE); -+ if (curwin != prevwin && win_valid(prevwin)) -+ /* autocommands changed curwin, Grr! */ -+ curwin = prevwin; - } - } - #ifdef FEAT_AUTOCMD - /* An autocommand may have deleted "buf", already entered it (e.g., when -! * it did ":bunload") or aborted the script processing! -! * If curwin->w_buffer is null, enter_buffer() will make it valid again */ -! if ((buf_valid(buf) && buf != curbuf -! #ifdef FEAT_EVAL -! && !aborting() -! #endif -! #ifdef FEAT_WINDOWS -! ) || curwin->w_buffer == NULL -! #endif -! ) - #endif - enter_buffer(buf); - } -*** ../vim-7.3.556/src/version.c 2012-06-14 20:59:20.000000000 +0200 ---- src/version.c 2012-06-20 11:53:56.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 557, - /**/ - --- -Don't read everything you believe. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.558 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.558 -Problem: Memory access error. (Gary Johnson) -Solution: Allocate one more byte. (Dominique Pelle) -Files: src/misc1.c - - -*** ../vim-7.3.557/src/misc1.c 2012-06-14 20:59:20.000000000 +0200 ---- src/misc1.c 2012-06-20 12:34:57.000000000 +0200 -*************** -*** 460,466 **** - * - * I'm not sure if regmmatch_T (multi-match) is needed in this case. - * It may be true that this section would work properly using the -! * regmatch_T code above, in which case, these two seperate sections - * should be consolidated w/ FEAT_COMMENTS making lead_len > 0... - */ - #endif ---- 460,466 ---- - * - * I'm not sure if regmmatch_T (multi-match) is needed in this case. - * It may be true that this section would work properly using the -! * regmatch_T code above, in which case, these two separate sections - * should be consolidated w/ FEAT_COMMENTS making lead_len > 0... - */ - #endif -*************** -*** 1053,1061 **** - } - if (lead_len) - { -! /* allocate buffer (may concatenate p_exta later) */ - leader = alloc(lead_len + lead_repl_len + extra_space + extra_len -! + (second_line_indent > 0 ? second_line_indent : 0)); - allocated = leader; /* remember to free it later */ - - if (leader == NULL) ---- 1053,1061 ---- - } - if (lead_len) - { -! /* allocate buffer (may concatenate p_extra later) */ - leader = alloc(lead_len + lead_repl_len + extra_space + extra_len -! + (second_line_indent > 0 ? second_line_indent : 0) + 1); - allocated = leader; /* remember to free it later */ - - if (leader == NULL) -*************** -*** 3342,3348 **** - buf = alloc(buflen); - else if (maxlen < 10) - { -! /* Need some more space. This migth happen when receiving a long - * escape sequence. */ - buflen += 100; - buf = vim_realloc(buf, buflen); ---- 3342,3348 ---- - buf = alloc(buflen); - else if (maxlen < 10) - { -! /* Need some more space. This might happen when receiving a long - * escape sequence. */ - buflen += 100; - buf = vim_realloc(buf, buflen); -*** ../vim-7.3.557/src/version.c 2012-06-20 11:54:55.000000000 +0200 ---- src/version.c 2012-06-20 12:36:29.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 558, - /**/ - --- -George: "I just got a new set of golf clubs for my wife!" - John: "Great trade!" - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.559 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.559 -Problem: home_replace() does not work with 8.3 filename. -Solution: Make ":p" expand 8.3 name to full path. (Yasuhiro Matsumoto) -Files: src/eval.c, src/misc1.c - - -*** ../vim-7.3.558/src/eval.c 2012-06-13 14:28:16.000000000 +0200 ---- src/eval.c 2012-06-20 13:52:47.000000000 +0200 -*************** -*** 23554,23559 **** ---- 23554,23580 ---- - return -1; - } - -+ #ifdef WIN3264 -+ # if _WIN32_WINNT >= 0x0500 -+ if (vim_strchr(*fnamep, '~') != NULL) -+ { -+ /* Expand 8.3 filename to full path. Needed to make sure the same -+ * file does not have two different names. -+ * Note: problem does not occur if _WIN32_WINNT < 0x0500. */ -+ p = alloc(_MAX_PATH + 1); -+ if (p != NULL) -+ { -+ if (GetLongPathName(*fnamep, p, MAXPATHL)) -+ { -+ vim_free(*bufp); -+ *bufp = *fnamep = p; -+ } -+ else -+ vim_free(p); -+ } -+ } -+ # endif -+ #endif - /* Append a path separator to a directory. */ - if (mch_isdir(*fnamep)) - { -*** ../vim-7.3.558/src/misc1.c 2012-06-20 12:40:01.000000000 +0200 ---- src/misc1.c 2012-06-20 13:57:22.000000000 +0200 -*************** -*** 4499,4505 **** - { - size_t dirlen = 0, envlen = 0; - size_t len; -! char_u *homedir_env; - char_u *p; - - if (src == NULL) ---- 4499,4505 ---- - { - size_t dirlen = 0, envlen = 0; - size_t len; -! char_u *homedir_env, *homedir_env_orig; - char_u *p; - - if (src == NULL) -*************** -*** 4525,4533 **** - dirlen = STRLEN(homedir); - - #ifdef VMS -! homedir_env = mch_getenv((char_u *)"SYS$LOGIN"); - #else -! homedir_env = mch_getenv((char_u *)"HOME"); - #endif - - if (homedir_env != NULL && *homedir_env == NUL) ---- 4525,4548 ---- - dirlen = STRLEN(homedir); - - #ifdef VMS -! homedir_env_orig = homedir_env = mch_getenv((char_u *)"SYS$LOGIN"); - #else -! homedir_env_orig = homedir_env = mch_getenv((char_u *)"HOME"); -! #endif -! #if defined(FEAT_MODIFY_FNAME) || defined(WIN3264) -! if (vim_strchr(homedir_env, '~') != NULL) -! { -! int usedlen = 0; -! int flen; -! char_u *fbuf = NULL; -! -! flen = (int)STRLEN(homedir_env); -! (void)modify_fname(":p", &usedlen, &homedir_env, &fbuf, &flen); -! flen = (int)STRLEN(homedir_env); -! if (flen > 0 && vim_ispathsep(homedir_env[flen - 1])) -! /* Remove the trailing / that is added to a directory. */ -! homedir_env[flen - 1] = NUL; -! } - #endif - - if (homedir_env != NULL && *homedir_env == NUL) -*************** -*** 4585,4590 **** ---- 4600,4608 ---- - /* if (dstlen == 0) out of space, what to do??? */ - - *dst = NUL; -+ -+ if (homedir_env != homedir_env_orig) -+ vim_free(homedir_env); - } - - /* -*** ../vim-7.3.558/src/version.c 2012-06-20 12:40:01.000000000 +0200 ---- src/version.c 2012-06-20 14:02:11.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 559, - /**/ - --- -The future isn't what it used to be. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.560 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.560 -Problem: Get an error for a locked argument in extend(). -Solution: Initialize the lock flag for a dictionary. (Yukihiro Nakadaira) -Files: src/eval.c - - -*** ../vim-7.3.559/src/eval.c 2012-06-20 14:02:23.000000000 +0200 ---- src/eval.c 2012-06-20 14:08:34.000000000 +0200 -*************** -*** 19981,19986 **** ---- 19981,19987 ---- - dictitem_T *dict_var; - { - hash_init(&dict->dv_hashtab); -+ dict->dv_lock = 0; - dict->dv_refcount = DO_NOT_FREE_CNT; - dict->dv_copyID = 0; - dict_var->di_tv.vval.v_dict = dict; -*** ../vim-7.3.559/src/version.c 2012-06-20 14:02:23.000000000 +0200 ---- src/version.c 2012-06-20 14:09:34.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 560, - /**/ - --- -"Oh, no! NOT the Spanish Inquisition!" -"NOBODY expects the Spanish Inquisition!!!" - -- Monty Python sketch -- -"Oh, no! NOT another option!" -"EVERYBODY expects another option!!!" - -- Discussion in vim-dev mailing list -- - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.561 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.561 -Problem: Using refresh: always in a complete function breaks the "." - command. (Val Markovic) -Solution: Add match leader to the redo buffer. (Yasuhiro Matsumoto) -Files: src/edit.c - - -*** ../vim-7.3.560/src/edit.c 2012-06-13 17:28:51.000000000 +0200 ---- src/edit.c 2012-06-20 14:22:23.000000000 +0200 -*************** -*** 3467,3476 **** ---- 3467,3480 ---- - (*mb_char2bytes)(c, buf); - buf[cc] = NUL; - ins_char_bytes(buf, cc); -+ AppendToRedobuff(buf); - } - else - #endif -+ { - ins_char(c); -+ AppendCharToRedobuff(c); -+ } - - /* If we didn't complete finding matches we must search again. */ - if (ins_compl_need_restart()) -*** ../vim-7.3.560/src/version.c 2012-06-20 14:13:02.000000000 +0200 ---- src/version.c 2012-06-20 14:20:13.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 561, - /**/ - --- -Microsoft is to software what McDonalds is to gourmet cooking - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.562 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.562 -Problem: ":profdel" should not work when the +profile feature is disabled. -Solution: Call ex_ni(). (Yasuhiro Matsumoto) -Files: src/ex_cmds2.c - - -*** ../vim-7.3.561/src/ex_cmds2.c 2012-06-13 14:28:16.000000000 +0200 ---- src/ex_cmds2.c 2012-06-20 15:43:44.000000000 +0200 -*************** -*** 596,605 **** - garray_T *gap; - - gap = &dbg_breakp; -- #ifdef FEAT_PROFILE - if (eap->cmdidx == CMD_profdel) - gap = &prof_ga; - #endif - - if (vim_isdigit(*eap->arg)) - { ---- 596,610 ---- - garray_T *gap; - - gap = &dbg_breakp; - if (eap->cmdidx == CMD_profdel) -+ { -+ #ifdef FEAT_PROFILE - gap = &prof_ga; -+ #else -+ ex_ni(eap); -+ return; - #endif -+ } - - if (vim_isdigit(*eap->arg)) - { -*** ../vim-7.3.561/src/version.c 2012-06-20 14:26:30.000000000 +0200 ---- src/version.c 2012-06-20 15:44:00.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 562, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -42. Your virtual girlfriend finds a new net sweetheart with a larger bandwidth. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.563 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.563 (after 7.3.557) -Problem: Can't build with tiny features. -Solution: Add #ifdef. -Files: src/buffer.c - - -*** ../vim-7.3.562/src/buffer.c 2012-06-20 11:54:55.000000000 +0200 ---- src/buffer.c 2012-06-20 17:40:59.000000000 +0200 -*************** -*** 1363,1369 **** ---- 1363,1371 ---- - int action; - { - buf_T *prevbuf; -+ #ifdef FEAT_WINDOWS - win_T *prevwin; -+ #endif - int unload = (action == DOBUF_UNLOAD || action == DOBUF_DEL - || action == DOBUF_WIPE); - -*************** -*** 1403,1418 **** ---- 1405,1424 ---- - if (buf_valid(prevbuf)) - #endif - { -+ #ifdef FEAT_WINDOWS - prevwin = curwin; -+ #endif - if (prevbuf == curbuf) - u_sync(FALSE); - close_buffer(prevbuf == curwin->w_buffer ? curwin : NULL, prevbuf, - unload ? action : (action == DOBUF_GOTO - && !P_HID(prevbuf) - && !bufIsChanged(prevbuf)) ? DOBUF_UNLOAD : 0, FALSE); -+ #ifdef FEAT_WINDOWS - if (curwin != prevwin && win_valid(prevwin)) - /* autocommands changed curwin, Grr! */ - curwin = prevwin; -+ #endif - } - } - #ifdef FEAT_AUTOCMD -*************** -*** 1420,1431 **** - * it did ":bunload") or aborted the script processing! - * If curwin->w_buffer is null, enter_buffer() will make it valid again */ - if ((buf_valid(buf) && buf != curbuf -! #ifdef FEAT_EVAL - && !aborting() -! #endif -! #ifdef FEAT_WINDOWS - ) || curwin->w_buffer == NULL -! #endif - ) - #endif - enter_buffer(buf); ---- 1426,1437 ---- - * it did ":bunload") or aborted the script processing! - * If curwin->w_buffer is null, enter_buffer() will make it valid again */ - if ((buf_valid(buf) && buf != curbuf -! # ifdef FEAT_EVAL - && !aborting() -! # endif -! # ifdef FEAT_WINDOWS - ) || curwin->w_buffer == NULL -! # endif - ) - #endif - enter_buffer(buf); -*** ../vim-7.3.562/src/version.c 2012-06-20 15:48:53.000000000 +0200 ---- src/version.c 2012-06-20 17:54:01.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 563, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -45. You buy a Captain Kirk chair with a built-in keyboard and mouse. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.564 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.564 (after 7.3.559) -Problem: Warning for pointer conversion. -Solution: Add type cast. -Files: src/misc1.c - - -*** ../vim-7.3.563/src/misc1.c 2012-06-20 14:02:23.000000000 +0200 ---- src/misc1.c 2012-06-20 17:41:22.000000000 +0200 -*************** -*** 4537,4543 **** - char_u *fbuf = NULL; - - flen = (int)STRLEN(homedir_env); -! (void)modify_fname(":p", &usedlen, &homedir_env, &fbuf, &flen); - flen = (int)STRLEN(homedir_env); - if (flen > 0 && vim_ispathsep(homedir_env[flen - 1])) - /* Remove the trailing / that is added to a directory. */ ---- 4537,4544 ---- - char_u *fbuf = NULL; - - flen = (int)STRLEN(homedir_env); -! (void)modify_fname((char_u *)":p", &usedlen, -! &homedir_env, &fbuf, &flen); - flen = (int)STRLEN(homedir_env); - if (flen > 0 && vim_ispathsep(homedir_env[flen - 1])) - /* Remove the trailing / that is added to a directory. */ -*** ../vim-7.3.563/src/version.c 2012-06-20 17:54:34.000000000 +0200 ---- src/version.c 2012-06-20 17:55:26.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 564, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -46. Your wife makes a new rule: "The computer cannot come to bed." - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.566 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.566 -Problem: Can't generate proto file for Python 3. -Solution: Add PYTHON3_CFLAGS to LINT_CFLAGS. -Files: src/Makefile - - -*** ../vim-7.3.564/src/Makefile 2012-06-13 19:19:36.000000000 +0200 ---- src/Makefile 2012-06-20 18:36:14.000000000 +0200 -*************** -*** 1339,1345 **** - # with "-E". - OSDEF_CFLAGS = $(PRE_DEFS) $(POST_DEFS) - -! LINT_CFLAGS = -DLINT -I. $(PRE_DEFS) $(POST_DEFS) $(RUBY_CFLAGS) $(LUA_CFLAGS) $(PERL_CFLAGS) $(PYTHON_CFLAGS) -Dinline= -D__extension__= -Dalloca=alloca - - LINT_EXTRA = -DUSE_SNIFF -DHANGUL_INPUT -D"__attribute__(x)=" - ---- 1339,1345 ---- - # with "-E". - OSDEF_CFLAGS = $(PRE_DEFS) $(POST_DEFS) - -! LINT_CFLAGS = -DLINT -I. $(PRE_DEFS) $(POST_DEFS) $(RUBY_CFLAGS) $(LUA_CFLAGS) $(PERL_CFLAGS) $(PYTHON_CFLAGS) $(PYTHON3_CFLAGS) -Dinline= -D__extension__= -Dalloca=alloca - - LINT_EXTRA = -DUSE_SNIFF -DHANGUL_INPUT -D"__attribute__(x)=" - -*** ../vim-7.3.564/src/version.c 2012-06-20 17:56:06.000000000 +0200 ---- src/version.c 2012-06-20 18:39:04.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 565, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -47. You are so familiar with the WWW that you find the search engines useless. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.566 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.566 (after 7.3.561) -Problem: Redo after completion does not work correctly when refresh: always - is not used. (Raymond Ko) -Solution: Check the compl_opt_refresh_always flag. (Christian Brabandt) -Files: src/edit.c - - -*** ../vim-7.3.565/src/edit.c 2012-06-20 14:26:30.000000000 +0200 ---- src/edit.c 2012-06-20 22:52:03.000000000 +0200 -*************** -*** 3467,3479 **** - (*mb_char2bytes)(c, buf); - buf[cc] = NUL; - ins_char_bytes(buf, cc); -! AppendToRedobuff(buf); - } - else - #endif - { - ins_char(c); -! AppendCharToRedobuff(c); - } - - /* If we didn't complete finding matches we must search again. */ ---- 3467,3481 ---- - (*mb_char2bytes)(c, buf); - buf[cc] = NUL; - ins_char_bytes(buf, cc); -! if (compl_opt_refresh_always) -! AppendToRedobuff(buf); - } - else - #endif - { - ins_char(c); -! if (compl_opt_refresh_always) -! AppendCharToRedobuff(c); - } - - /* If we didn't complete finding matches we must search again. */ -*************** -*** 3481,3487 **** - ins_compl_restart(); - - /* When 'always' is set, don't reset compl_leader. While completing, -! * cursor don't point original position, changing compl_leader would - * break redo. */ - if (!compl_opt_refresh_always) - { ---- 3483,3489 ---- - ins_compl_restart(); - - /* When 'always' is set, don't reset compl_leader. While completing, -! * cursor doesn't point original position, changing compl_leader would - * break redo. */ - if (!compl_opt_refresh_always) - { -*** ../vim-7.3.565/src/version.c 2012-06-20 18:39:12.000000000 +0200 ---- src/version.c 2012-06-20 22:54:27.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 566, - /**/ - --- -CVS sux, men don't like commitment - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.567 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.567 -Problem: Missing copyright notice. -Solution: Add Vim copyright notice. (Taro Muraoka) -Files: src/dehqx.py - - -*** ../vim-7.3.566/src/dehqx.py 2010-08-15 21:57:32.000000000 +0200 ---- src/dehqx.py 2012-06-29 11:27:41.000000000 +0200 -*************** -*** 1,7 **** - # Python script to get both the data and resource fork from a BinHex encoded - # file. -! # Author: Taro Muraoka -! # Last Change: 2003 Oct 25 - - import sys - import binhex ---- 1,10 ---- - # Python script to get both the data and resource fork from a BinHex encoded - # file. -! # Author: MURAOKA Taro <koron.kaoriya@gmail.com> -! # Last Change: 2012 Jun 29 -! # -! # Copyright (C) 2003,12 MURAOKA Taro <koron.kaoriya@gmail.com> -! # THIS FILE IS DISTRIBUTED UNDER THE VIM LICENSE. - - import sys - import binhex -*** ../vim-7.3.566/src/version.c 2012-06-20 22:55:56.000000000 +0200 ---- src/version.c 2012-06-29 11:45:36.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 567, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -66. You create a homepage with the impression to cure the afflicted...but - your hidden agenda is to receive more e-mail. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.568 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.568 -Problem: Bad indents for #ifdefs. -Solution: Add and remove spaces. (Elias Diem) -Files: src/globals.h - - -*** ../vim-7.3.567/src/globals.h 2012-02-11 23:45:30.000000000 +0100 ---- src/globals.h 2012-06-29 12:32:14.000000000 +0200 -*************** -*** 513,520 **** - # define ONE_CLIPBOARD - # endif - -! #define CLIP_UNNAMED 1 -! #define CLIP_UNNAMED_PLUS 2 - EXTERN int clip_unnamed INIT(= 0); /* above two values or'ed */ - - EXTERN int clip_autoselect INIT(= FALSE); ---- 513,520 ---- - # define ONE_CLIPBOARD - # endif - -! # define CLIP_UNNAMED 1 -! # define CLIP_UNNAMED_PLUS 2 - EXTERN int clip_unnamed INIT(= 0); /* above two values or'ed */ - - EXTERN int clip_autoselect INIT(= FALSE); -*************** -*** 737,745 **** - #endif - - EXTERN pos_T saved_cursor /* w_cursor before formatting text. */ -! # ifdef DO_INIT - = INIT_POS_T(0, 0, 0) -! # endif - ; - - /* ---- 737,745 ---- - #endif - - EXTERN pos_T saved_cursor /* w_cursor before formatting text. */ -! #ifdef DO_INIT - = INIT_POS_T(0, 0, 0) -! #endif - ; - - /* -*************** -*** 807,815 **** - # endif - EXTERN int has_mbyte INIT(= 0); /* any multi-byte encoding */ - -! #if defined(WIN3264) && defined(FEAT_MBYTE) - EXTERN int wide_WindowProc INIT(= FALSE); /* use wide WindowProc() */ -! #endif - - /* - * To speed up BYTELEN() we fill a table with the byte lengths whenever ---- 807,815 ---- - # endif - EXTERN int has_mbyte INIT(= 0); /* any multi-byte encoding */ - -! # if defined(WIN3264) && defined(FEAT_MBYTE) - EXTERN int wide_WindowProc INIT(= FALSE); /* use wide WindowProc() */ -! # endif - - /* - * To speed up BYTELEN() we fill a table with the byte lengths whenever -*************** -*** 1099,1106 **** - EXTERN int save_p_ls INIT(= -1); /* Save 'laststatus' setting */ - EXTERN int save_p_wmh INIT(= -1); /* Save 'winminheight' setting */ - EXTERN int wild_menu_showing INIT(= 0); -! #define WM_SHOWN 1 /* wildmenu showing */ -! #define WM_SCROLLED 2 /* wildmenu showing with scroll */ - #endif - - #ifdef MSWIN ---- 1099,1106 ---- - EXTERN int save_p_ls INIT(= -1); /* Save 'laststatus' setting */ - EXTERN int save_p_wmh INIT(= -1); /* Save 'winminheight' setting */ - EXTERN int wild_menu_showing INIT(= 0); -! # define WM_SHOWN 1 /* wildmenu showing */ -! # define WM_SCROLLED 2 /* wildmenu showing with scroll */ - #endif - - #ifdef MSWIN -*************** -*** 1310,1318 **** - EXTERN Atom commProperty INIT(= None); - EXTERN char_u *serverDelayedStartName INIT(= NULL); - # else -! # ifdef PROTO - typedef int HWND; -! # endif - EXTERN HWND clientWindow INIT(= 0); - # endif - #endif ---- 1310,1318 ---- - EXTERN Atom commProperty INIT(= None); - EXTERN char_u *serverDelayedStartName INIT(= NULL); - # else -! # ifdef PROTO - typedef int HWND; -! # endif - EXTERN HWND clientWindow INIT(= 0); - # endif - #endif -*** ../vim-7.3.567/src/version.c 2012-06-29 11:46:28.000000000 +0200 ---- src/version.c 2012-06-29 12:34:21.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 568, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -67. Your hard drive crashes. You haven't logged in for two hours. You start - to twitch. You pick up the phone and manually dial your ISP's access - number. You try to hum to communicate with the modem. You succeed. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.569 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.569 -Problem: Evaluating Vim expression in Python is insufficient. -Solution: Add vim.bindeval(). Also add pyeval() and py3eval(). (ZyX) -Files: runtime/doc/eval.txt, runtime/doc/if_pyth.txt, src/eval.c, - src/if_lua.c, src/if_py_both.h, src/if_python.c, src/if_python3.c, - src/proto/eval.pro, src/proto/if_python.pro, - src/proto/if_python3.pro, src/testdir/Make_amiga.mak, - src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, - src/testdir/Make_os2.mak, src/testdir/Makefile, - src/testdir/test86.in, src/testdir/test86.ok, - src/testdir/test87.in, src/testdir/test87.ok - - -*** ../vim-7.3.568/runtime/doc/eval.txt 2012-03-07 19:16:49.000000000 +0100 ---- runtime/doc/eval.txt 2012-06-20 18:01:02.000000000 +0200 -*************** -*** 1836,1844 **** - localtime() Number current time - log( {expr}) Float natural logarithm (base e) of {expr} - log10( {expr}) Float logarithm of Float {expr} to base 10 - map( {expr}, {string}) List/Dict change each item in {expr} to {expr} - maparg( {name}[, {mode} [, {abbr} [, {dict}]]]) -! String rhs of mapping {name} in mode {mode} - mapcheck( {name}[, {mode} [, {abbr}]]) - String check for mappings matching {name} - match( {expr}, {pat}[, {start}[, {count}]]) ---- 1847,1857 ---- - localtime() Number current time - log( {expr}) Float natural logarithm (base e) of {expr} - log10( {expr}) Float logarithm of Float {expr} to base 10 -+ luaeval( {expr}[, {expr}]) any evaluate |Lua| expression - map( {expr}, {string}) List/Dict change each item in {expr} to {expr} - maparg( {name}[, {mode} [, {abbr} [, {dict}]]]) -! String or Dict -! rhs of mapping {name} in mode {mode} - mapcheck( {name}[, {mode} [, {abbr}]]) - String check for mappings matching {name} - match( {expr}, {pat}[, {start}[, {count}]]) -*************** -*** 1867,1872 **** ---- 1880,1887 ---- - prevnonblank( {lnum}) Number line nr of non-blank line <= {lnum} - printf( {fmt}, {expr1}...) String format text - pumvisible() Number whether popup menu is visible -+ pyeval( {expr}) any evaluate |Python| expression -+ py3eval( {expr}) any evaluate |python3| expression - range( {expr} [, {max} [, {stride}]]) - List items from {expr} to {max} - readfile( {fname} [, {binary} [, {max}]]) -*************** -*** 3980,3985 **** ---- 4003,4022 ---- - < -2.0 - {only available when compiled with the |+float| feature} - -+ luaeval({expr}[, {expr}]) *luaeval()* -+ Evaluate Lua expression {expr} and return its result converted -+ to Vim data structures. Second {expr} may hold additional -+ argument accessible as _A inside first {expr}. -+ Strings are returned as they are. -+ Boolean objects are converted to numbers. -+ Numbers are converted to |Float| values if vim was compiled -+ with |+float| and to numbers otherwise. -+ Dictionaries and lists obtained by vim.eval() are returned -+ as-is. -+ Other objects are returned as zero without any errors. -+ See |lua-luaeval| for more details. -+ {only available when compiled with the |+lua| feature} -+ - map({expr}, {string}) *map()* - {expr} must be a |List| or a |Dictionary|. - Replace each item in {expr} with the result of evaluating -*************** -*** 4574,4579 **** ---- 4612,4640 ---- - This can be used to avoid some things that would remove the - popup menu. - -+ *E860* *E861* -+ py3eval({expr}) *py3eval()* -+ Evaluate Python expression {expr} and return its result -+ converted to Vim data structures. -+ Numbers and strings are returned as they are (strings are -+ copied though, unicode strings are additionally converted to -+ 'encoding'). -+ Lists are represented as Vim |List| type. -+ Dictionaries are represented as Vim |Dictionary| type with -+ keys converted to strings. -+ {only available when compiled with the |+python3| feature} -+ -+ *E858* *E859* -+ pyeval({expr}) *pyeval()* -+ Evaluate Python expression {expr} and return its result -+ converted to Vim data structures. -+ Numbers and strings are returned as they are (strings are -+ copied though). -+ Lists are represented as Vim |List| type. -+ Dictionaries are represented as Vim |Dictionary| type with -+ keys converted to strings. -+ {only available when compiled with the |+python| feature} -+ - *E726* *E727* - range({expr} [, {max} [, {stride}]]) *range()* - Returns a |List| with Numbers: -*************** -*** 4807,4812 **** ---- 4868,4877 ---- - Search for regexp pattern {pattern}. The search starts at the - cursor position (you can use |cursor()| to set it). - -+ If there is no match a 0 is returned and the cursor doesn't -+ move. No error message is given. -+ When a match has been found its line number is returned. -+ - {flags} is a String, which can contain these character flags: - 'b' search backward instead of forward - 'c' accept a match at the cursor position -*** ../vim-7.3.568/runtime/doc/if_pyth.txt 2010-08-15 21:57:12.000000000 +0200 ---- runtime/doc/if_pyth.txt 2012-06-20 18:01:02.000000000 +0200 -*************** -*** 1,4 **** -! *if_pyth.txt* For Vim version 7.3. Last change: 2010 Aug 13 - - - VIM REFERENCE MANUAL by Paul Moore ---- 1,4 ---- -! *if_pyth.txt* For Vim version 7.3. Last change: 2012 Feb 04 - - - VIM REFERENCE MANUAL by Paul Moore -*************** -*** 6,18 **** - - The Python Interface to Vim *python* *Python* - -! 1. Commands |python-commands| -! 2. The vim module |python-vim| -! 3. Buffer objects |python-buffer| -! 4. Range objects |python-range| -! 5. Window objects |python-window| -! 6. Dynamic loading |python-dynamic| -! 7. Python 3 |python3| - - {Vi does not have any of these commands} - ---- 6,19 ---- - - The Python Interface to Vim *python* *Python* - -! 1. Commands |python-commands| -! 2. The vim module |python-vim| -! 3. Buffer objects |python-buffer| -! 4. Range objects |python-range| -! 5. Window objects |python-window| -! 6. pyeval(), py3eval() Vim functions |python-pyeval| -! 7. Dynamic loading |python-dynamic| -! 8. Python 3 |python3| - - {Vi does not have any of these commands} - -*************** -*** 150,155 **** ---- 151,172 ---- - [{'cmd': '/^eval_expr(arg, nextcmd)$/', 'static': 0, 'name': - 'eval_expr', 'kind': 'f', 'filename': './src/eval.c'}] - -+ vim.bindeval(str) *python-bindeval* -+ Like |python-eval|, but -+ 1. if expression evaluates to |List| or |Dictionary| it is returned as -+ vimlist or vimdictionary python type that are connected to original -+ list or dictionary. Thus modifications to these objects imply -+ modifications of the original. -+ 2. if expression evaluates to a function reference, then it returns -+ callable vimfunction object. Use self keyword argument to assign -+ |self| object for dictionary functions. -+ -+ Note: this function has the same behavior as |lua-eval| (except that -+ lua does not support running vim functions), |python-eval| is -+ kept for backwards compatibility in order not to make scripts -+ relying on outputs of vim.eval() being a copy of original or -+ vim.eval("1") returning a string. -+ - - - Error object of the "vim" module -*************** -*** 222,229 **** - - from indexing vim.buffers (|python-buffers|) - - from the "buffer" attribute of a window (|python-window|) - -! Buffer objects have one read-only attribute - name - the full file name for -! the buffer. They also have three methods (append, mark, and range; see below). - - You can also treat buffer objects as sequence objects. In this context, they - act as if they were lists (yes, they are mutable) of strings, with each ---- 239,247 ---- - - from indexing vim.buffers (|python-buffers|) - - from the "buffer" attribute of a window (|python-window|) - -! Buffer objects have two read-only attributes - name - the full file name for -! the buffer, and number - the buffer number. They also have three methods -! (append, mark, and range; see below). - - You can also treat buffer objects as sequence objects. In this context, they - act as if they were lists (yes, they are mutable) of strings, with each -*************** -*** 318,324 **** - The width attribute is writable only if the screen is split vertically. - - ============================================================================== -! 6. Dynamic loading *python-dynamic* - - On MS-Windows the Python library can be loaded dynamically. The |:version| - output then includes |+python/dyn|. ---- 336,348 ---- - The width attribute is writable only if the screen is split vertically. - - ============================================================================== -! 6. pyeval() and py3eval() Vim functions *python-pyeval* -! -! To facilitate bi-directional interface, you can use |pyeval()| and |py3eval()| -! functions to evaluate Python expressions and pass their values to VimL. -! -! ============================================================================== -! 7. Dynamic loading *python-dynamic* - - On MS-Windows the Python library can be loaded dynamically. The |:version| - output then includes |+python/dyn|. -*************** -*** 335,347 **** - sure edit "gvim.exe" and search for "python\d*.dll\c". - - ============================================================================== -! 7. Python 3 *python3* - - *:py3* *:python3* - The |:py3| and |:python3| commands work similar to |:python|. - *:py3file* - The |:py3file| command works similar to |:pyfile|. - - Vim can be built in four ways (:version output): - 1. No Python support (-python, -python3) - 2. Python 2 support only (+python or +python/dyn, -python3) ---- 359,372 ---- - sure edit "gvim.exe" and search for "python\d*.dll\c". - - ============================================================================== -! 8. Python 3 *python3* - - *:py3* *:python3* - The |:py3| and |:python3| commands work similar to |:python|. - *:py3file* - The |:py3file| command works similar to |:pyfile|. - -+ - Vim can be built in four ways (:version output): - 1. No Python support (-python, -python3) - 2. Python 2 support only (+python or +python/dyn, -python3) -*************** -*** 355,361 **** - When doing this on Linux/Unix systems and importing global symbols, this leads - to a crash when the second Python version is used. So either global symbols - are loaded but only one Python version is activated, or no global symbols are -! loaded. The latter makes Python's "import" fail on libaries that expect the - symbols to be provided by Vim. - *E836* *E837* - Vim's configuration script makes a guess for all libraries based on one ---- 380,386 ---- - When doing this on Linux/Unix systems and importing global symbols, this leads - to a crash when the second Python version is used. So either global symbols - are loaded but only one Python version is activated, or no global symbols are -! loaded. The latter makes Python's "import" fail on libraries that expect the - symbols to be provided by Vim. - *E836* *E837* - Vim's configuration script makes a guess for all libraries based on one -*************** -*** 377,382 **** ---- 402,419 ---- - 3. You undefine PY_NO_RTLD_GLOBAL in auto/config.h after configuration. This - may crash Vim though. - -+ *has-python* -+ You can test what Python version is available with: > -+ if has('python') -+ echo 'there is Python 2.x' -+ elseif has('python3') -+ echo 'there is Python 3.x' -+ endif -+ -+ Note however, that when Python 2 and 3 are both available and loaded -+ dynamically, these has() calls will try to load them. If only one can be -+ loaded at a time, just checking if Python 2 or 3 are available will prevent -+ the other one from being available. - - ============================================================================== - vim:tw=78:ts=8:ft=help:norl: -*** ../vim-7.3.568/src/eval.c 2012-06-20 14:13:02.000000000 +0200 ---- src/eval.c 2012-06-20 18:29:15.000000000 +0200 -*************** -*** 424,453 **** - static int get_lit_string_tv __ARGS((char_u **arg, typval_T *rettv, int evaluate)); - static int get_list_tv __ARGS((char_u **arg, typval_T *rettv, int evaluate)); - static int rettv_list_alloc __ARGS((typval_T *rettv)); -- static listitem_T *listitem_alloc __ARGS((void)); - static void listitem_free __ARGS((listitem_T *item)); -- static void listitem_remove __ARGS((list_T *l, listitem_T *item)); - static long list_len __ARGS((list_T *l)); - static int list_equal __ARGS((list_T *l1, list_T *l2, int ic, int recursive)); - static int dict_equal __ARGS((dict_T *d1, dict_T *d2, int ic, int recursive)); - static int tv_equal __ARGS((typval_T *tv1, typval_T *tv2, int ic, int recursive)); -- static listitem_T *list_find __ARGS((list_T *l, long n)); - static long list_find_nr __ARGS((list_T *l, long idx, int *errorp)); - static long list_idx_of_item __ARGS((list_T *l, listitem_T *item)); -- static void list_append __ARGS((list_T *l, listitem_T *item)); - static int list_append_number __ARGS((list_T *l, varnumber_T n)); -- static int list_insert_tv __ARGS((list_T *l, typval_T *tv, listitem_T *item)); - static int list_extend __ARGS((list_T *l1, list_T *l2, listitem_T *bef)); - static int list_concat __ARGS((list_T *l1, list_T *l2, typval_T *tv)); - static list_T *list_copy __ARGS((list_T *orig, int deep, int copyID)); -- static void list_remove __ARGS((list_T *l, listitem_T *item, listitem_T *item2)); - static char_u *list2string __ARGS((typval_T *tv, int copyID)); - static int list_join_inner __ARGS((garray_T *gap, list_T *l, char_u *sep, int echo_style, int copyID, garray_T *join_gap)); - static int list_join __ARGS((garray_T *gap, list_T *l, char_u *sep, int echo, int copyID)); - static int free_unref_items __ARGS((int copyID)); -- static void set_ref_in_ht __ARGS((hashtab_T *ht, int copyID)); -- static void set_ref_in_list __ARGS((list_T *l, int copyID)); -- static void set_ref_in_item __ARGS((typval_T *tv, int copyID)); - static int rettv_dict_alloc __ARGS((typval_T *rettv)); - static void dict_free __ARGS((dict_T *d, int recurse)); - static dictitem_T *dictitem_copy __ARGS((dictitem_T *org)); ---- 424,444 ---- -*************** -*** 654,659 **** ---- 645,656 ---- - static void f_prevnonblank __ARGS((typval_T *argvars, typval_T *rettv)); - static void f_printf __ARGS((typval_T *argvars, typval_T *rettv)); - static void f_pumvisible __ARGS((typval_T *argvars, typval_T *rettv)); -+ #ifdef FEAT_PYTHON3 -+ static void f_py3eval __ARGS((typval_T *argvars, typval_T *rettv)); -+ #endif -+ #ifdef FEAT_PYTHON -+ static void f_pyeval __ARGS((typval_T *argvars, typval_T *rettv)); -+ #endif - static void f_range __ARGS((typval_T *argvars, typval_T *rettv)); - static void f_readfile __ARGS((typval_T *argvars, typval_T *rettv)); - static void f_reltime __ARGS((typval_T *argvars, typval_T *rettv)); -*************** -*** 824,831 **** - static char_u *autoload_name __ARGS((char_u *name)); - static void cat_func_name __ARGS((char_u *buf, ufunc_T *fp)); - static void func_free __ARGS((ufunc_T *fp)); -- static void func_unref __ARGS((char_u *name)); -- static void func_ref __ARGS((char_u *name)); - static void call_user_func __ARGS((ufunc_T *fp, int argcount, typval_T *argvars, typval_T *rettv, linenr_T firstline, linenr_T lastline, dict_T *selfdict)); - static int can_free_funccal __ARGS((funccall_T *fc, int copyID)) ; - static void free_funccal __ARGS((funccall_T *fc, int free_val)); ---- 821,826 ---- -*************** -*** 5927,5933 **** - /* - * Allocate a list item. - */ -! static listitem_T * - listitem_alloc() - { - return (listitem_T *)alloc(sizeof(listitem_T)); ---- 5922,5928 ---- - /* - * Allocate a list item. - */ -! listitem_T * - listitem_alloc() - { - return (listitem_T *)alloc(sizeof(listitem_T)); -*************** -*** 5947,5953 **** - /* - * Remove a list item from a List and free it. Also clears the value. - */ -! static void - listitem_remove(l, item) - list_T *l; - listitem_T *item; ---- 5942,5948 ---- - /* - * Remove a list item from a List and free it. Also clears the value. - */ -! void - listitem_remove(l, item) - list_T *l; - listitem_T *item; -*************** -*** 6123,6129 **** - * A negative index is counted from the end; -1 is the last item. - * Returns NULL when "n" is out of range. - */ -! static listitem_T * - list_find(l, n) - list_T *l; - long n; ---- 6118,6124 ---- - * A negative index is counted from the end; -1 is the last item. - * Returns NULL when "n" is out of range. - */ -! listitem_T * - list_find(l, n) - list_T *l; - long n; -*************** -*** 6265,6271 **** - /* - * Append item "item" to the end of list "l". - */ -! static void - list_append(l, item) - list_T *l; - listitem_T *item; ---- 6260,6266 ---- - /* - * Append item "item" to the end of list "l". - */ -! void - list_append(l, item) - list_T *l; - listitem_T *item; -*************** -*** 6378,6384 **** - * If "item" is NULL append at the end. - * Return FAIL when out of memory. - */ -! static int - list_insert_tv(l, tv, item) - list_T *l; - typval_T *tv; ---- 6373,6379 ---- - * If "item" is NULL append at the end. - * Return FAIL when out of memory. - */ -! int - list_insert_tv(l, tv, item) - list_T *l; - typval_T *tv; -*************** -*** 6523,6529 **** - * Remove items "item" to "item2" from list "l". - * Does not free the listitem or the value! - */ -! static void - list_remove(l, item, item2) - list_T *l; - listitem_T *item; ---- 6518,6524 ---- - * Remove items "item" to "item2" from list "l". - * Does not free the listitem or the value! - */ -! void - list_remove(l, item, item2) - list_T *l; - listitem_T *item; -*************** -*** 6785,6790 **** ---- 6780,6793 ---- - set_ref_in_lua(copyID); - #endif - -+ #ifdef FEAT_PYTHON -+ set_ref_in_python(copyID); -+ #endif -+ -+ #ifdef FEAT_PYTHON3 -+ set_ref_in_python3(copyID); -+ #endif -+ - /* - * 2. Free lists and dictionaries that are not referenced. - */ -*************** -*** 6870,6876 **** - /* - * Mark all lists and dicts referenced through hashtab "ht" with "copyID". - */ -! static void - set_ref_in_ht(ht, copyID) - hashtab_T *ht; - int copyID; ---- 6873,6879 ---- - /* - * Mark all lists and dicts referenced through hashtab "ht" with "copyID". - */ -! void - set_ref_in_ht(ht, copyID) - hashtab_T *ht; - int copyID; -*************** -*** 6890,6896 **** - /* - * Mark all lists and dicts referenced through list "l" with "copyID". - */ -! static void - set_ref_in_list(l, copyID) - list_T *l; - int copyID; ---- 6893,6899 ---- - /* - * Mark all lists and dicts referenced through list "l" with "copyID". - */ -! void - set_ref_in_list(l, copyID) - list_T *l; - int copyID; -*************** -*** 6904,6910 **** - /* - * Mark all lists and dicts referenced through typval "tv" with "copyID". - */ -! static void - set_ref_in_item(tv, copyID) - typval_T *tv; - int copyID; ---- 6907,6913 ---- - /* - * Mark all lists and dicts referenced through typval "tv" with "copyID". - */ -! void - set_ref_in_item(tv, copyID) - typval_T *tv; - int copyID; -*************** -*** 7986,7991 **** ---- 7989,8000 ---- - {"prevnonblank", 1, 1, f_prevnonblank}, - {"printf", 2, 19, f_printf}, - {"pumvisible", 0, 0, f_pumvisible}, -+ #ifdef FEAT_PYTHON3 -+ {"py3eval", 1, 1, f_py3eval}, -+ #endif -+ #ifdef FEAT_PYTHON -+ {"pyeval", 1, 1, f_pyeval}, -+ #endif - {"range", 1, 3, f_range}, - {"readfile", 1, 3, f_readfile}, - {"reltime", 0, 2, f_reltime}, -*************** -*** 9150,9155 **** ---- 9159,9203 ---- - #endif - } - -+ int -+ func_call(name, args, selfdict, rettv) -+ char_u *name; -+ typval_T *args; -+ dict_T *selfdict; -+ typval_T *rettv; -+ { -+ listitem_T *item; -+ typval_T argv[MAX_FUNC_ARGS + 1]; -+ int argc = 0; -+ int dummy; -+ int r = 0; -+ -+ for (item = args->vval.v_list->lv_first; item != NULL; -+ item = item->li_next) -+ { -+ if (argc == MAX_FUNC_ARGS) -+ { -+ EMSG(_("E699: Too many arguments")); -+ break; -+ } -+ /* Make a copy of each argument. This is needed to be able to set -+ * v_lock to VAR_FIXED in the copy without changing the original list. -+ */ -+ copy_tv(&item->li_tv, &argv[argc++]); -+ } -+ -+ if (item == NULL) -+ r = call_func(name, (int)STRLEN(name), rettv, argc, argv, -+ curwin->w_cursor.lnum, curwin->w_cursor.lnum, -+ &dummy, TRUE, selfdict); -+ -+ /* Free the arguments. */ -+ while (argc > 0) -+ clear_tv(&argv[--argc]); -+ -+ return r; -+ } -+ - /* - * "call(func, arglist)" function - */ -*************** -*** 9159,9168 **** - typval_T *rettv; - { - char_u *func; -- typval_T argv[MAX_FUNC_ARGS + 1]; -- int argc = 0; -- listitem_T *item; -- int dummy; - dict_T *selfdict = NULL; - - if (argvars[1].v_type != VAR_LIST) ---- 9207,9212 ---- -*************** -*** 9190,9217 **** - selfdict = argvars[2].vval.v_dict; - } - -! for (item = argvars[1].vval.v_list->lv_first; item != NULL; -! item = item->li_next) -! { -! if (argc == MAX_FUNC_ARGS) -! { -! EMSG(_("E699: Too many arguments")); -! break; -! } -! /* Make a copy of each argument. This is needed to be able to set -! * v_lock to VAR_FIXED in the copy without changing the original list. -! */ -! copy_tv(&item->li_tv, &argv[argc++]); -! } -! -! if (item == NULL) -! (void)call_func(func, (int)STRLEN(func), rettv, argc, argv, -! curwin->w_cursor.lnum, curwin->w_cursor.lnum, -! &dummy, TRUE, selfdict); -! -! /* Free the arguments. */ -! while (argc > 0) -! clear_tv(&argv[--argc]); - } - - #ifdef FEAT_FLOAT ---- 9234,9240 ---- - selfdict = argvars[2].vval.v_dict; - } - -! (void)func_call(func, &argvars[1], selfdict, rettv); - } - - #ifdef FEAT_FLOAT -*************** -*** 14424,14429 **** ---- 14447,14486 ---- - #endif - } - -+ #ifdef FEAT_PYTHON3 -+ /* -+ * "py3eval()" function -+ */ -+ static void -+ f_py3eval(argvars, rettv) -+ typval_T *argvars; -+ typval_T *rettv; -+ { -+ char_u *str; -+ char_u buf[NUMBUFLEN]; -+ -+ str = get_tv_string_buf(&argvars[0], buf); -+ do_py3eval(str, rettv); -+ } -+ #endif -+ -+ #ifdef FEAT_PYTHON -+ /* -+ * "pyeval()" function -+ */ -+ static void -+ f_pyeval(argvars, rettv) -+ typval_T *argvars; -+ typval_T *rettv; -+ { -+ char_u *str; -+ char_u buf[NUMBUFLEN]; -+ -+ str = get_tv_string_buf(&argvars[0], buf); -+ do_pyeval(str, rettv); -+ } -+ #endif -+ - /* - * "range()" function - */ -*************** -*** 22139,22145 **** - * Unreference a Function: decrement the reference count and free it when it - * becomes zero. Only for numbered functions. - */ -! static void - func_unref(name) - char_u *name; - { ---- 22196,22202 ---- - * Unreference a Function: decrement the reference count and free it when it - * becomes zero. Only for numbered functions. - */ -! void - func_unref(name) - char_u *name; - { -*************** -*** 22163,22169 **** - /* - * Count a reference to a Function. - */ -! static void - func_ref(name) - char_u *name; - { ---- 22220,22226 ---- - /* - * Count a reference to a Function. - */ -! void - func_ref(name) - char_u *name; - { -*** ../vim-7.3.568/src/if_lua.c 2012-04-06 14:30:55.000000000 +0200 ---- src/if_lua.c 2012-06-20 18:16:33.000000000 +0200 -*************** -*** 199,207 **** - lua_Number (*dll_lua_tonumberx) (lua_State *L, int idx, int *isnum); - lua_Integer (*dll_lua_tointegerx) (lua_State *L, int idx, int *isnum); - void (*dll_lua_callk) (lua_State *L, int nargs, int nresults, int ctx, -! lua_CFunction k); - int (*dll_lua_pcallk) (lua_State *L, int nargs, int nresults, int errfunc, -! int ctx, lua_CFunction k); - void (*dll_lua_getglobal) (lua_State *L, const char *var); - void (*dll_lua_setglobal) (lua_State *L, const char *var); - #endif ---- 199,207 ---- - lua_Number (*dll_lua_tonumberx) (lua_State *L, int idx, int *isnum); - lua_Integer (*dll_lua_tointegerx) (lua_State *L, int idx, int *isnum); - void (*dll_lua_callk) (lua_State *L, int nargs, int nresults, int ctx, -! lua_CFunction k); - int (*dll_lua_pcallk) (lua_State *L, int nargs, int nresults, int errfunc, -! int ctx, lua_CFunction k); - void (*dll_lua_getglobal) (lua_State *L, const char *var); - void (*dll_lua_setglobal) (lua_State *L, const char *var); - #endif -*************** -*** 394,400 **** - luaL_typeerror (lua_State *L, int narg, const char *tname) - { - const char *msg = lua_pushfstring(L, "%s expected, got %s", -! tname, luaL_typename(L, narg)); - return luaL_argerror(L, narg, msg); - } - #endif ---- 394,400 ---- - luaL_typeerror (lua_State *L, int narg, const char *tname) - { - const char *msg = lua_pushfstring(L, "%s expected, got %s", -! tname, luaL_typename(L, narg)); - return luaL_argerror(L, narg, msg); - } - #endif -*************** -*** 646,786 **** - return 1; \ - } - -- -- /* adapted from eval.c */ -- -- #define listitem_alloc() (listitem_T *)alloc(sizeof(listitem_T)) -- -- static listitem_T * -- list_find (list_T *l, long n) -- { -- listitem_T *li; -- if (l == NULL || n < -l->lv_len || n >= l->lv_len) -- return NULL; -- if (n < 0) /* search backward? */ -- for (li = l->lv_last; n < -1; li = li->li_prev) -- n++; -- else /* search forward */ -- for (li = l->lv_first; n > 0; li = li->li_next) -- n--; -- return li; -- } -- -- static void -- list_remove (list_T *l, listitem_T *li) -- { -- listwatch_T *lw; -- --l->lv_len; -- /* fix watchers */ -- for (lw = l->lv_watch; lw != NULL; lw = lw->lw_next) -- if (lw->lw_item == li) -- lw->lw_item = li->li_next; -- /* fix list pointers */ -- if (li->li_next == NULL) /* last? */ -- l->lv_last = li->li_prev; -- else -- li->li_next->li_prev = li->li_prev; -- if (li->li_prev == NULL) /* first? */ -- l->lv_first = li->li_next; -- else -- li->li_prev->li_next = li->li_next; -- l->lv_idx_item = NULL; -- } -- -- static void -- list_append(list_T *l, listitem_T *item) -- { -- if (l->lv_last == NULL) /* empty list? */ -- l->lv_first = item; -- else -- l->lv_last->li_next = item; -- item->li_prev = l->lv_last; -- item->li_next = NULL; -- l->lv_last = item; -- ++l->lv_len; -- } -- -- static int -- list_insert_tv(list_T *l, typval_T *tv, listitem_T *item) -- { -- listitem_T *ni = listitem_alloc(); -- -- if (ni == NULL) -- return FAIL; -- copy_tv(tv, &ni->li_tv); -- if (item == NULL) -- list_append(l, ni); -- else -- { -- ni->li_prev = item->li_prev; -- ni->li_next = item; -- if (item->li_prev == NULL) -- { -- l->lv_first = ni; -- ++l->lv_idx; -- } -- else -- { -- item->li_prev->li_next = ni; -- l->lv_idx_item = NULL; -- } -- item->li_prev = ni; -- ++l->lv_len; -- } -- return OK; -- } -- -- /* set references */ -- -- static void set_ref_in_tv (typval_T *tv, int copyID); -- -- static void -- set_ref_in_dict(dict_T *d, int copyID) -- { -- hashtab_T *ht = &d->dv_hashtab; -- int n = ht->ht_used; -- hashitem_T *hi; -- for (hi = ht->ht_array; n > 0; ++hi) -- if (!HASHITEM_EMPTY(hi)) -- { -- dictitem_T *di = dict_lookup(hi); -- set_ref_in_tv(&di->di_tv, copyID); -- --n; -- } -- } -- -- static void -- set_ref_in_list(list_T *l, int copyID) -- { -- listitem_T *li; -- for (li = l->lv_first; li != NULL; li = li->li_next) -- set_ref_in_tv(&li->li_tv, copyID); -- } -- -- static void -- set_ref_in_tv(typval_T *tv, int copyID) -- { -- if (tv->v_type == VAR_LIST) -- { -- list_T *l = tv->vval.v_list; -- if (l != NULL && l->lv_copyID != copyID) -- { -- l->lv_copyID = copyID; -- set_ref_in_list(l, copyID); -- } -- } -- else if (tv->v_type == VAR_DICT) -- { -- dict_T *d = tv->vval.v_dict; -- if (d != NULL && d->dv_copyID != copyID) -- { -- d->dv_copyID = copyID; -- set_ref_in_dict(d, copyID); -- } -- } -- } -- -- - /* ======= List type ======= */ - - static luaV_List * ---- 646,651 ---- -*************** -*** 876,882 **** - if (li == NULL) return 0; - if (lua_isnil(L, 3)) /* remove? */ - { -! list_remove(l, li); - clear_tv(&li->li_tv); - vim_free(li); - } ---- 741,747 ---- - if (li == NULL) return 0; - if (lua_isnil(L, 3)) /* remove? */ - { -! list_remove(l, li, li); - clear_tv(&li->li_tv); - vim_free(li); - } -*************** -*** 904,911 **** - typval_T v; - lua_settop(L, 2); - luaV_totypval(L, 2, &v); -! copy_tv(&v, &li->li_tv); -! list_append(l, li); - } - lua_settop(L, 1); - return 1; ---- 769,775 ---- - typval_T v; - lua_settop(L, 2); - luaV_totypval(L, 2, &v); -! list_append_tv(l, &v); - } - lua_settop(L, 1); - return 1; -*************** -*** 1682,1688 **** - tv.vval.v_dict = (dict_T *) lua_touserdata(L, 4); /* key */ - } - lua_pop(L, 2); /* metatable and value */ -! set_ref_in_tv(&tv, copyID); - } - return 0; - } ---- 1546,1552 ---- - tv.vval.v_dict = (dict_T *) lua_touserdata(L, 4); /* key */ - } - lua_pop(L, 2); /* metatable and value */ -! set_ref_in_item(&tv, copyID); - } - return 0; - } -*** ../vim-7.3.568/src/if_py_both.h 2012-04-20 13:31:16.000000000 +0200 ---- src/if_py_both.h 2012-06-29 12:03:52.000000000 +0200 -*************** -*** 1,4 **** -! /* vi:set ts=8 sts=4 sw=4: - * - * VIM - Vi IMproved by Bram Moolenaar - * ---- 1,4 ---- -! /* vi:set ts=8 sts=4 sw=4 noet: - * - * VIM - Vi IMproved by Bram Moolenaar - * -*************** -*** 105,111 **** - return NULL; - Py_INCREF(list); - -! if (!PyList_Check(list)) { - PyErr_SetString(PyExc_TypeError, _("writelines() requires list of strings")); - Py_DECREF(list); - return NULL; ---- 105,112 ---- - return NULL; - Py_INCREF(list); - -! if (!PyList_Check(list)) -! { - PyErr_SetString(PyExc_TypeError, _("writelines() requires list of strings")); - Py_DECREF(list); - return NULL; -*************** -*** 119,125 **** - char *str = NULL; - PyInt len; - -! if (!PyArg_Parse(line, "et#", ENC_OPT, &str, &len)) { - PyErr_SetString(PyExc_TypeError, _("writelines() requires list of strings")); - Py_DECREF(list); - return NULL; ---- 120,127 ---- - char *str = NULL; - PyInt len; - -! if (!PyArg_Parse(line, "et#", ENC_OPT, &str, &len)) -! { - PyErr_SetString(PyExc_TypeError, _("writelines() requires list of strings")); - Py_DECREF(list); - return NULL; -*************** -*** 297,303 **** - { - PyObject *result; - PyObject *newObj; -! char ptrBuf[NUMBUFLEN]; - - /* Avoid infinite recursion */ - if (depth > 100) ---- 299,305 ---- - { - PyObject *result; - PyObject *newObj; -! char ptrBuf[sizeof(void *) * 2 + 3]; - - /* Avoid infinite recursion */ - if (depth > 100) -*************** -*** 312,320 **** - if ((our_tv->v_type == VAR_LIST && our_tv->vval.v_list != NULL) - || (our_tv->v_type == VAR_DICT && our_tv->vval.v_dict != NULL)) - { -! sprintf(ptrBuf, PRINTF_DECIMAL_LONG_U, -! our_tv->v_type == VAR_LIST ? (long_u)our_tv->vval.v_list -! : (long_u)our_tv->vval.v_dict); - result = PyDict_GetItemString(lookupDict, ptrBuf); - if (result != NULL) - { ---- 314,322 ---- - if ((our_tv->v_type == VAR_LIST && our_tv->vval.v_list != NULL) - || (our_tv->v_type == VAR_DICT && our_tv->vval.v_dict != NULL)) - { -! sprintf(ptrBuf, "%p", -! our_tv->v_type == VAR_LIST ? (void *)our_tv->vval.v_list -! : (void *)our_tv->vval.v_dict); - result = PyDict_GetItemString(lookupDict, ptrBuf); - if (result != NULL) - { -*************** -*** 374,509 **** - hashitem_T *hi; - dictitem_T *di; - -! PyDict_SetItemString(lookupDict, ptrBuf, result); - -! for (hi = ht->ht_array; todo > 0; ++hi) - { -! if (!HASHITEM_EMPTY(hi)) -! { -! --todo; -! -! di = dict_lookup(hi); -! newObj = VimToPython(&di->di_tv, depth + 1, lookupDict); -! PyDict_SetItemString(result, (char *)hi->hi_key, newObj); -! Py_DECREF(newObj); -! } - } - } - } -! else - { -! Py_INCREF(Py_None); -! result = Py_None; - } - -! return result; - } -- #endif - - static PyObject * -! VimEval(PyObject *self UNUSED, PyObject *args UNUSED) - { -! #ifdef FEAT_EVAL -! char *expr; -! typval_T *our_tv; -! PyObject *result; -! PyObject *lookup_dict; - -! if (!PyArg_ParseTuple(args, "s", &expr)) - return NULL; - -! Py_BEGIN_ALLOW_THREADS -! Python_Lock_Vim(); -! our_tv = eval_expr((char_u *)expr, NULL); -! -! Python_Release_Vim(); -! Py_END_ALLOW_THREADS -! -! if (our_tv == NULL) - { -! PyErr_SetVim(_("invalid expression")); - return NULL; - } - -- /* Convert the Vim type into a Python type. Create a dictionary that's -- * used to check for recursive loops. */ - lookup_dict = PyDict_New(); -! result = VimToPython(our_tv, 1, lookup_dict); - Py_DECREF(lookup_dict); - -! -! Py_BEGIN_ALLOW_THREADS -! Python_Lock_Vim(); -! free_tv(our_tv); -! Python_Release_Vim(); -! Py_END_ALLOW_THREADS -! -! return result; -! #else -! PyErr_SetVim(_("expressions disabled at compile time")); -! return NULL; -! #endif - } - -! /* -! * Vim module - Definitions -! */ -! -! static struct PyMethodDef VimMethods[] = { -! /* name, function, calling, documentation */ -! {"command", VimCommand, 1, "Execute a Vim ex-mode command" }, -! {"eval", VimEval, 1, "Evaluate an expression using Vim evaluator" }, -! { NULL, NULL, 0, NULL } - }; - - typedef struct - { - PyObject_HEAD -! buf_T *buf; -! } -! BufferObject; - -! #define INVALID_BUFFER_VALUE ((buf_T *)(-1)) -! -! /* -! * Buffer list object - Implementation -! */ - -! static PyInt -! BufListLength(PyObject *self UNUSED) - { -! buf_T *b = firstbuf; -! PyInt n = 0; - -! while (b) - { -! ++n; -! b = b->b_next; - } -! -! return n; - } - - static PyObject * -! BufListItem(PyObject *self UNUSED, PyInt n) - { -! buf_T *b; - -! for (b = firstbuf; b; b = b->b_next, --n) - { -! if (n == 0) -! return BufferNew(b); - } - -! PyErr_SetString(PyExc_IndexError, _("no such buffer")); -! return NULL; - } - -! typedef struct -! { -! PyObject_HEAD -! win_T *win; -! } WindowObject; - - #define INVALID_WINDOW_VALUE ((win_T *)(-1)) - ---- 376,1325 ---- - hashitem_T *hi; - dictitem_T *di; - -! PyDict_SetItemString(lookupDict, ptrBuf, result); -! -! for (hi = ht->ht_array; todo > 0; ++hi) -! { -! if (!HASHITEM_EMPTY(hi)) -! { -! --todo; -! -! di = dict_lookup(hi); -! newObj = VimToPython(&di->di_tv, depth + 1, lookupDict); -! PyDict_SetItemString(result, (char *)hi->hi_key, newObj); -! Py_DECREF(newObj); -! } -! } -! } -! } -! else -! { -! Py_INCREF(Py_None); -! result = Py_None; -! } -! -! return result; -! } -! #endif -! -! static PyObject * -! VimEval(PyObject *self UNUSED, PyObject *args UNUSED) -! { -! #ifdef FEAT_EVAL -! char *expr; -! typval_T *our_tv; -! PyObject *result; -! PyObject *lookup_dict; -! -! if (!PyArg_ParseTuple(args, "s", &expr)) -! return NULL; -! -! Py_BEGIN_ALLOW_THREADS -! Python_Lock_Vim(); -! our_tv = eval_expr((char_u *)expr, NULL); -! -! Python_Release_Vim(); -! Py_END_ALLOW_THREADS -! -! if (our_tv == NULL) -! { -! PyErr_SetVim(_("invalid expression")); -! return NULL; -! } -! -! /* Convert the Vim type into a Python type. Create a dictionary that's -! * used to check for recursive loops. */ -! lookup_dict = PyDict_New(); -! result = VimToPython(our_tv, 1, lookup_dict); -! Py_DECREF(lookup_dict); -! -! -! Py_BEGIN_ALLOW_THREADS -! Python_Lock_Vim(); -! free_tv(our_tv); -! Python_Release_Vim(); -! Py_END_ALLOW_THREADS -! -! return result; -! #else -! PyErr_SetVim(_("expressions disabled at compile time")); -! return NULL; -! #endif -! } -! -! static PyObject *ConvertToPyObject(typval_T *); -! -! static PyObject * -! VimEvalPy(PyObject *self UNUSED, PyObject *args UNUSED) -! { -! #ifdef FEAT_EVAL -! char *expr; -! typval_T *our_tv; -! PyObject *result; -! -! if (!PyArg_ParseTuple(args, "s", &expr)) -! return NULL; -! -! Py_BEGIN_ALLOW_THREADS -! Python_Lock_Vim(); -! our_tv = eval_expr((char_u *)expr, NULL); -! -! Python_Release_Vim(); -! Py_END_ALLOW_THREADS -! -! if (our_tv == NULL) -! { -! PyErr_SetVim(_("invalid expression")); -! return NULL; -! } -! -! result = ConvertToPyObject(our_tv); -! Py_BEGIN_ALLOW_THREADS -! Python_Lock_Vim(); -! free_tv(our_tv); -! Python_Release_Vim(); -! Py_END_ALLOW_THREADS -! -! return result; -! #else -! PyErr_SetVim(_("expressions disabled at compile time")); -! return NULL; -! #endif -! } -! -! static PyObject * -! VimStrwidth(PyObject *self UNUSED, PyObject *args) -! { -! char *expr; -! -! if (!PyArg_ParseTuple(args, "s", &expr)) -! return NULL; -! -! return PyLong_FromLong(mb_string2cells((char_u *)expr, STRLEN(expr))); -! } -! -! /* -! * Vim module - Definitions -! */ -! -! static struct PyMethodDef VimMethods[] = { -! /* name, function, calling, documentation */ -! {"command", VimCommand, 1, "Execute a Vim ex-mode command" }, -! {"eval", VimEval, 1, "Evaluate an expression using Vim evaluator" }, -! {"bindeval", VimEvalPy, 1, "Like eval(), but returns objects attached to vim ones"}, -! {"strwidth", VimStrwidth, 1, "Screen string width, counts <Tab> as having width 1"}, -! { NULL, NULL, 0, NULL } -! }; -! -! typedef struct -! { -! PyObject_HEAD -! buf_T *buf; -! } BufferObject; -! -! #define INVALID_BUFFER_VALUE ((buf_T *)(-1)) -! -! /* -! * Buffer list object - Implementation -! */ -! -! static PyInt -! BufListLength(PyObject *self UNUSED) -! { -! buf_T *b = firstbuf; -! PyInt n = 0; -! -! while (b) -! { -! ++n; -! b = b->b_next; -! } -! -! return n; -! } -! -! static PyObject * -! BufListItem(PyObject *self UNUSED, PyInt n) -! { -! buf_T *b; -! -! for (b = firstbuf; b; b = b->b_next, --n) -! { -! if (n == 0) -! return BufferNew(b); -! } -! -! PyErr_SetString(PyExc_IndexError, _("no such buffer")); -! return NULL; -! } -! -! typedef struct -! { -! PyObject_HEAD -! win_T *win; -! } WindowObject; -! -! static int ConvertFromPyObject(PyObject *, typval_T *); -! static int _ConvertFromPyObject(PyObject *, typval_T *, PyObject *); -! -! typedef struct pylinkedlist_S { -! struct pylinkedlist_S *pll_next; -! struct pylinkedlist_S *pll_prev; -! PyObject *pll_obj; -! } pylinkedlist_T; -! -! static pylinkedlist_T *lastdict = NULL; -! static pylinkedlist_T *lastlist = NULL; -! -! static void -! pyll_remove(pylinkedlist_T *ref, pylinkedlist_T **last) -! { -! if (ref->pll_prev == NULL) -! { -! if (ref->pll_next == NULL) -! { -! *last = NULL; -! return; -! } -! } -! else -! ref->pll_prev->pll_next = ref->pll_next; -! -! if (ref->pll_next == NULL) -! *last = ref->pll_prev; -! else -! ref->pll_next->pll_prev = ref->pll_prev; -! } -! -! static void -! pyll_add(PyObject *self, pylinkedlist_T *ref, pylinkedlist_T **last) -! { -! if (*last == NULL) -! ref->pll_prev = NULL; -! else -! { -! (*last)->pll_next = ref; -! ref->pll_prev = *last; -! } -! ref->pll_next = NULL; -! ref->pll_obj = self; -! *last = ref; -! } -! -! static PyTypeObject DictionaryType; -! -! typedef struct -! { -! PyObject_HEAD -! dict_T *dict; -! pylinkedlist_T ref; -! } DictionaryObject; -! -! static PyObject * -! DictionaryNew(dict_T *dict) -! { -! DictionaryObject *self; -! -! self = PyObject_NEW(DictionaryObject, &DictionaryType); -! if (self == NULL) -! return NULL; -! self->dict = dict; -! ++dict->dv_refcount; -! -! pyll_add((PyObject *)(self), &self->ref, &lastdict); -! -! return (PyObject *)(self); -! } -! -! static int -! pydict_to_tv(PyObject *obj, typval_T *tv, PyObject *lookupDict) -! { -! dict_T *d; -! char_u *key; -! dictitem_T *di; -! PyObject *keyObject; -! PyObject *valObject; -! Py_ssize_t iter = 0; -! -! d = dict_alloc(); -! if (d == NULL) -! { -! PyErr_NoMemory(); -! return -1; -! } -! -! tv->v_type = VAR_DICT; -! tv->vval.v_dict = d; -! -! while (PyDict_Next(obj, &iter, &keyObject, &valObject)) -! { -! DICTKEY_DECL -! -! if (keyObject == NULL) -! return -1; -! if (valObject == NULL) -! return -1; -! -! DICTKEY_GET(-1) -! -! di = dictitem_alloc(key); -! -! DICTKEY_UNREF -! -! if (di == NULL) -! { -! PyErr_NoMemory(); -! return -1; -! } -! di->di_tv.v_lock = 0; -! -! if (_ConvertFromPyObject(valObject, &di->di_tv, lookupDict) == -1) -! { -! vim_free(di); -! return -1; -! } -! if (dict_add(d, di) == FAIL) -! { -! vim_free(di); -! PyErr_SetVim(_("failed to add key to dictionary")); -! return -1; -! } -! } -! return 0; -! } -! -! static int -! pymap_to_tv(PyObject *obj, typval_T *tv, PyObject *lookupDict) -! { -! dict_T *d; -! char_u *key; -! dictitem_T *di; -! PyObject *list; -! PyObject *litem; -! PyObject *keyObject; -! PyObject *valObject; -! Py_ssize_t lsize; -! -! d = dict_alloc(); -! if (d == NULL) -! { -! PyErr_NoMemory(); -! return -1; -! } -! -! tv->v_type = VAR_DICT; -! tv->vval.v_dict = d; -! -! list = PyMapping_Items(obj); -! lsize = PyList_Size(list); -! while (lsize--) -! { -! DICTKEY_DECL -! -! litem = PyList_GetItem(list, lsize); -! if (litem == NULL) -! { -! Py_DECREF(list); -! return -1; -! } -! -! keyObject = PyTuple_GetItem(litem, 0); -! if (keyObject == NULL) -! { -! Py_DECREF(list); -! Py_DECREF(litem); -! return -1; -! } -! -! DICTKEY_GET(-1) -! -! valObject = PyTuple_GetItem(litem, 1); -! if (valObject == NULL) -! { -! Py_DECREF(list); -! Py_DECREF(litem); -! return -1; -! } -! -! di = dictitem_alloc(key); -! -! DICTKEY_UNREF -! -! if (di == NULL) -! { -! Py_DECREF(list); -! Py_DECREF(litem); -! PyErr_NoMemory(); -! return -1; -! } -! di->di_tv.v_lock = 0; -! -! if (_ConvertFromPyObject(valObject, &di->di_tv, lookupDict) == -1) -! { -! vim_free(di); -! Py_DECREF(list); -! Py_DECREF(litem); -! return -1; -! } -! if (dict_add(d, di) == FAIL) -! { -! vim_free(di); -! Py_DECREF(list); -! Py_DECREF(litem); -! PyErr_SetVim(_("failed to add key to dictionary")); -! return -1; -! } -! Py_DECREF(litem); -! } -! Py_DECREF(list); -! return 0; -! } -! -! static PyInt -! DictionaryLength(PyObject *self) -! { -! return ((PyInt) ((((DictionaryObject *)(self))->dict->dv_hashtab.ht_used))); -! } -! -! static PyObject * -! DictionaryItem(PyObject *self, PyObject *keyObject) -! { -! char_u *key; -! dictitem_T *val; -! DICTKEY_DECL -! -! DICTKEY_GET(NULL) -! -! val = dict_find(((DictionaryObject *) (self))->dict, key, -1); -! -! DICTKEY_UNREF -! -! return ConvertToPyObject(&val->di_tv); -! } -! -! static PyInt -! DictionaryAssItem(PyObject *self, PyObject *keyObject, PyObject *valObject) -! { -! char_u *key; -! typval_T tv; -! dict_T *d = ((DictionaryObject *)(self))->dict; -! dictitem_T *di; -! DICTKEY_DECL -! -! if (d->dv_lock) -! { -! PyErr_SetVim(_("dict is locked")); -! return -1; -! } -! -! DICTKEY_GET(-1) -! -! di = dict_find(d, key, -1); -! -! if (valObject == NULL) -! { -! if (di == NULL) -! { -! PyErr_SetString(PyExc_IndexError, _("no such key in dictionary")); -! return -1; -! } -! hashitem_T *hi = hash_find(&d->dv_hashtab, di->di_key); -! hash_remove(&d->dv_hashtab, hi); -! dictitem_free(di); -! return 0; -! } -! -! if (ConvertFromPyObject(valObject, &tv) == -1) -! { -! return -1; -! } -! -! if (di == NULL) -! { -! di = dictitem_alloc(key); -! if (di == NULL) -! { -! PyErr_NoMemory(); -! return -1; -! } -! di->di_tv.v_lock = 0; -! -! if (dict_add(d, di) == FAIL) -! { -! vim_free(di); -! PyErr_SetVim(_("failed to add key to dictionary")); -! return -1; -! } -! } -! else -! clear_tv(&di->di_tv); -! -! DICTKEY_UNREF -! -! copy_tv(&tv, &di->di_tv); -! return 0; -! } -! -! static PyObject * -! DictionaryListKeys(PyObject *self) -! { -! dict_T *dict = ((DictionaryObject *)(self))->dict; -! long_u todo = dict->dv_hashtab.ht_used; -! Py_ssize_t i = 0; -! PyObject *r; -! hashitem_T *hi; -! -! r = PyList_New(todo); -! for (hi = dict->dv_hashtab.ht_array; todo > 0; ++hi) -! { -! if (!HASHITEM_EMPTY(hi)) -! { -! PyList_SetItem(r, i, PyBytes_FromString((char *)(hi->hi_key))); -! --todo; -! ++i; -! } -! } -! return r; -! } -! -! static struct PyMethodDef DictionaryMethods[] = { -! {"keys", (PyCFunction)DictionaryListKeys, METH_NOARGS, ""}, -! { NULL, NULL, 0, NULL } -! }; -! -! static PyTypeObject ListType; -! -! typedef struct -! { -! PyObject_HEAD -! list_T *list; -! pylinkedlist_T ref; -! } ListObject; -! -! static PyObject * -! ListNew(list_T *list) -! { -! ListObject *self; -! -! self = PyObject_NEW(ListObject, &ListType); -! if (self == NULL) -! return NULL; -! self->list = list; -! ++list->lv_refcount; -! -! pyll_add((PyObject *)(self), &self->ref, &lastlist); -! -! return (PyObject *)(self); -! } -! -! static int -! list_py_concat(list_T *l, PyObject *obj, PyObject *lookupDict) -! { -! Py_ssize_t i; -! Py_ssize_t lsize = PySequence_Size(obj); -! PyObject *litem; -! listitem_T *li; -! -! for(i=0; i<lsize; i++) -! { -! li = listitem_alloc(); -! if (li == NULL) -! { -! PyErr_NoMemory(); -! return -1; -! } -! li->li_tv.v_lock = 0; -! -! litem = PySequence_GetItem(obj, i); -! if (litem == NULL) -! return -1; -! if (_ConvertFromPyObject(litem, &li->li_tv, lookupDict) == -1) -! return -1; -! -! list_append(l, li); -! } -! return 0; -! } -! -! static int -! pyseq_to_tv(PyObject *obj, typval_T *tv, PyObject *lookupDict) -! { -! list_T *l; -! -! l = list_alloc(); -! if (l == NULL) -! { -! PyErr_NoMemory(); -! return -1; -! } -! -! tv->v_type = VAR_LIST; -! tv->vval.v_list = l; -! -! if (list_py_concat(l, obj, lookupDict) == -1) -! return -1; -! -! return 0; -! } -! -! static int -! pyiter_to_tv(PyObject *obj, typval_T *tv, PyObject *lookupDict) -! { -! PyObject *iterator = PyObject_GetIter(obj); -! PyObject *item; -! list_T *l; -! listitem_T *li; -! -! l = list_alloc(); -! -! if (l == NULL) -! { -! PyErr_NoMemory(); -! return -1; -! } -! -! tv->vval.v_list = l; -! tv->v_type = VAR_LIST; -! -! -! if (iterator == NULL) -! return -1; -! -! while ((item = PyIter_Next(obj))) -! { -! li = listitem_alloc(); -! if (li == NULL) -! { -! PyErr_NoMemory(); -! return -1; -! } -! li->li_tv.v_lock = 0; -! -! if (_ConvertFromPyObject(item, &li->li_tv, lookupDict) == -1) -! return -1; -! -! list_append(l, li); -! -! Py_DECREF(item); -! } -! -! Py_DECREF(iterator); -! return 0; -! } -! -! static PyInt -! ListLength(PyObject *self) -! { -! return ((PyInt) (((ListObject *) (self))->list->lv_len)); -! } -! -! static PyObject * -! ListItem(PyObject *self, Py_ssize_t index) -! { -! listitem_T *li; -! -! if (index>=ListLength(self)) -! { -! PyErr_SetString(PyExc_IndexError, "list index out of range"); -! return NULL; -! } -! li = list_find(((ListObject *) (self))->list, (long) index); -! if (li == NULL) -! { -! PyErr_SetVim(_("internal error: failed to get vim list item")); -! return NULL; -! } -! return ConvertToPyObject(&li->li_tv); -! } -! -! #define PROC_RANGE \ -! if (last < 0) {\ -! if (last < -size) \ -! last = 0; \ -! else \ -! last += size; \ -! } \ -! if (first < 0) \ -! first = 0; \ -! if (first > size) \ -! first = size; \ -! if (last > size) \ -! last = size; -! -! static PyObject * -! ListSlice(PyObject *self, Py_ssize_t first, Py_ssize_t last) -! { -! PyInt i; -! PyInt size = ListLength(self); -! PyInt n; -! PyObject *list; -! int reversed = 0; -! -! PROC_RANGE -! if (first >= last) -! first = last; -! -! n = last-first; -! list = PyList_New(n); -! if (list == NULL) -! return NULL; -! -! for (i = 0; i < n; ++i) -! { -! PyObject *item = ListItem(self, i); -! if (item == NULL) -! { -! Py_DECREF(list); -! return NULL; -! } -! -! if ((PyList_SetItem(list, ((reversed)?(n-i-1):(i)), item))) -! { -! Py_DECREF(item); -! Py_DECREF(list); -! return NULL; -! } -! } -! -! return list; -! } -! -! static int -! ListAssItem(PyObject *self, Py_ssize_t index, PyObject *obj) -! { -! typval_T tv; -! list_T *l = ((ListObject *) (self))->list; -! listitem_T *li; -! Py_ssize_t length = ListLength(self); -! -! if (l->lv_lock) -! { -! PyErr_SetVim(_("list is locked")); -! return -1; -! } -! if (index>length || (index==length && obj==NULL)) -! { -! PyErr_SetString(PyExc_IndexError, "list index out of range"); -! return -1; -! } -! -! if (obj == NULL) -! { -! li = list_find(l, (long) index); -! list_remove(l, li, li); -! clear_tv(&li->li_tv); -! vim_free(li); -! return 0; -! } -! -! if (ConvertFromPyObject(obj, &tv) == -1) -! return -1; -! -! if (index == length) -! { -! if (list_append_tv(l, &tv) == FAIL) -! { -! PyErr_SetVim(_("Failed to add item to list")); -! return -1; -! } -! } -! else -! { -! li = list_find(l, (long) index); -! clear_tv(&li->li_tv); -! copy_tv(&tv, &li->li_tv); -! } -! return 0; -! } -! -! static int -! ListAssSlice(PyObject *self, Py_ssize_t first, Py_ssize_t last, PyObject *obj) -! { -! PyInt size = ListLength(self); -! Py_ssize_t i; -! Py_ssize_t lsize; -! PyObject *litem; -! listitem_T *li; -! listitem_T *next; -! typval_T v; -! list_T *l = ((ListObject *) (self))->list; -! -! if (l->lv_lock) -! { -! PyErr_SetVim(_("list is locked")); -! return -1; -! } -! -! PROC_RANGE - -! if (first == size) -! li = NULL; -! else -! { -! li = list_find(l, (long) first); -! if (li == NULL) -! { -! PyErr_SetVim(_("internal error: no vim list item")); -! return -1; -! } -! if (last > first) -! { -! i = last - first; -! while (i-- && li != NULL) - { -! next = li->li_next; -! listitem_remove(l, li); -! li = next; - } - } - } -! -! if (obj == NULL) -! return 0; -! -! if (!PyList_Check(obj)) - { -! PyErr_SetString(PyExc_TypeError, _("can only assign lists to slice")); -! return -1; - } - -! lsize = PyList_Size(obj); -! -! for(i=0; i<lsize; i++) -! { -! litem = PyList_GetItem(obj, i); -! if (litem == NULL) -! return -1; -! if (ConvertFromPyObject(litem, &v) == -1) -! return -1; -! if (list_insert_tv(l, &v, li) == FAIL) -! { -! PyErr_SetVim(_("internal error: failed to add item to list")); -! return -1; -! } -! } -! return 0; - } - - static PyObject * -! ListConcatInPlace(PyObject *self, PyObject *obj) - { -! list_T *l = ((ListObject *) (self))->list; -! PyObject *lookup_dict; - -! if (l->lv_lock) -! { -! PyErr_SetVim(_("list is locked")); - return NULL; -+ } - -! if (!PySequence_Check(obj)) - { -! PyErr_SetString(PyExc_TypeError, _("can only concatenate with lists")); - return NULL; - } - - lookup_dict = PyDict_New(); -! if (list_py_concat(l, obj, lookup_dict) == -1) -! { -! Py_DECREF(lookup_dict); -! return NULL; -! } - Py_DECREF(lookup_dict); - -! Py_INCREF(self); -! return self; - } - -! static struct PyMethodDef ListMethods[] = { -! {"extend", (PyCFunction)ListConcatInPlace, METH_O, ""}, -! { NULL, NULL, 0, NULL } - }; - - typedef struct - { - PyObject_HEAD -! char_u *name; -! } FunctionObject; - -! static PyTypeObject FunctionType; - -! static PyObject * -! FunctionNew(char_u *name) - { -! FunctionObject *self; - -! self = PyObject_NEW(FunctionObject, &FunctionType); -! if (self == NULL) -! return NULL; -! self->name = PyMem_New(char_u, STRLEN(name) + 1); -! if (self->name == NULL) - { -! PyErr_NoMemory(); -! return NULL; - } -! STRCPY(self->name, name); -! func_ref(name); -! return (PyObject *)(self); - } - - static PyObject * -! FunctionCall(PyObject *self, PyObject *argsObject, PyObject *kwargs) - { -! FunctionObject *this = (FunctionObject *)(self); -! char_u *name = this->name; -! typval_T args; -! typval_T selfdicttv; -! typval_T rettv; -! dict_T *selfdict = NULL; -! PyObject *selfdictObject; -! PyObject *result; -! int error; - -! if (ConvertFromPyObject(argsObject, &args) == -1) -! return NULL; -! -! if (kwargs != NULL) - { -! selfdictObject = PyDict_GetItemString(kwargs, "self"); -! if (selfdictObject != NULL) -! { -! if (!PyDict_Check(selfdictObject)) -! { -! PyErr_SetString(PyExc_TypeError, _("'self' argument must be a dictionary")); -! clear_tv(&args); -! return NULL; -! } -! if (ConvertFromPyObject(selfdictObject, &selfdicttv) == -1) -! return NULL; -! selfdict = selfdicttv.vval.v_dict; -! } - } - -! error = func_call(name, &args, selfdict, &rettv); -! if (error != OK) -! { -! result = NULL; -! PyErr_SetVim(_("failed to run function")); -! } -! else -! result = ConvertToPyObject(&rettv); -! -! /* FIXME Check what should really be cleared. */ -! clear_tv(&args); -! clear_tv(&rettv); -! /* -! * if (selfdict!=NULL) -! * clear_tv(selfdicttv); -! */ -! -! return result; - } - -! static struct PyMethodDef FunctionMethods[] = { -! {"__call__", (PyCFunction)FunctionCall, METH_VARARGS|METH_KEYWORDS, ""}, -! { NULL, NULL, 0, NULL } -! }; - - #define INVALID_WINDOW_VALUE ((win_T *)(-1)) - -*************** -*** 1567,1569 **** ---- 2383,2638 ---- - { NULL, NULL, 0, NULL } - }; - -+ static void -+ set_ref_in_py(const int copyID) -+ { -+ pylinkedlist_T *cur; -+ dict_T *dd; -+ list_T *ll; -+ -+ if (lastdict != NULL) -+ for(cur = lastdict ; cur != NULL ; cur = cur->pll_prev) -+ { -+ dd = ((DictionaryObject *) (cur->pll_obj))->dict; -+ if (dd->dv_copyID != copyID) -+ { -+ dd->dv_copyID = copyID; -+ set_ref_in_ht(&dd->dv_hashtab, copyID); -+ } -+ } -+ -+ if (lastlist != NULL) -+ for(cur = lastlist ; cur != NULL ; cur = cur->pll_prev) -+ { -+ ll = ((ListObject *) (cur->pll_obj))->list; -+ if (ll->lv_copyID != copyID) -+ { -+ ll->lv_copyID = copyID; -+ set_ref_in_list(ll, copyID); -+ } -+ } -+ } -+ -+ static int -+ set_string_copy(char_u *str, typval_T *tv) -+ { -+ tv->vval.v_string = vim_strsave(str); -+ if (tv->vval.v_string == NULL) -+ { -+ PyErr_NoMemory(); -+ return -1; -+ } -+ return 0; -+ } -+ -+ #ifdef FEAT_EVAL -+ typedef int (*pytotvfunc)(PyObject *, typval_T *, PyObject *); -+ -+ static int -+ convert_dl(PyObject *obj, typval_T *tv, -+ pytotvfunc py_to_tv, PyObject *lookupDict) -+ { -+ PyObject *capsule; -+ char hexBuf[sizeof(void *) * 2 + 3]; -+ -+ sprintf(hexBuf, "%p", obj); -+ -+ capsule = PyDict_GetItemString(lookupDict, hexBuf); -+ if (capsule == NULL) -+ { -+ capsule = PyCapsule_New(tv, NULL, NULL); -+ PyDict_SetItemString(lookupDict, hexBuf, capsule); -+ Py_DECREF(capsule); -+ if (py_to_tv(obj, tv, lookupDict) == -1) -+ { -+ tv->v_type = VAR_UNKNOWN; -+ return -1; -+ } -+ /* As we are not using copy_tv which increments reference count we must -+ * do it ourself. */ -+ switch(tv->v_type) -+ { -+ case VAR_DICT: ++tv->vval.v_dict->dv_refcount; break; -+ case VAR_LIST: ++tv->vval.v_list->lv_refcount; break; -+ } -+ } -+ else -+ { -+ typval_T *v = PyCapsule_GetPointer(capsule, NULL); -+ copy_tv(v, tv); -+ } -+ return 0; -+ } -+ -+ static int -+ ConvertFromPyObject(PyObject *obj, typval_T *tv) -+ { -+ PyObject *lookup_dict; -+ int r; -+ -+ lookup_dict = PyDict_New(); -+ r = _ConvertFromPyObject(obj, tv, lookup_dict); -+ Py_DECREF(lookup_dict); -+ return r; -+ } -+ -+ static int -+ _ConvertFromPyObject(PyObject *obj, typval_T *tv, PyObject *lookupDict) -+ { -+ if (obj->ob_type == &DictionaryType) -+ { -+ tv->v_type = VAR_DICT; -+ tv->vval.v_dict = (((DictionaryObject *)(obj))->dict); -+ ++tv->vval.v_dict->dv_refcount; -+ } -+ else if (obj->ob_type == &ListType) -+ { -+ tv->v_type = VAR_LIST; -+ tv->vval.v_list = (((ListObject *)(obj))->list); -+ ++tv->vval.v_list->lv_refcount; -+ } -+ else if (obj->ob_type == &FunctionType) -+ { -+ if (set_string_copy(((FunctionObject *) (obj))->name, tv) == -1) -+ return -1; -+ -+ tv->v_type = VAR_FUNC; -+ func_ref(tv->vval.v_string); -+ } -+ #if PY_MAJOR_VERSION >= 3 -+ else if (PyBytes_Check(obj)) -+ { -+ char_u *result = (char_u *) PyBytes_AsString(obj); -+ -+ if (result == NULL) -+ return -1; -+ -+ if (set_string_copy(result, tv) == -1) -+ return -1; -+ -+ tv->v_type = VAR_STRING; -+ } -+ else if (PyUnicode_Check(obj)) -+ { -+ PyObject *bytes; -+ char_u *result; -+ -+ bytes = PyString_AsBytes(obj); -+ if (bytes == NULL) -+ return -1; -+ -+ result = (char_u *) PyBytes_AsString(bytes); -+ if (result == NULL) -+ return -1; -+ -+ if (set_string_copy(result, tv) == -1) -+ { -+ Py_XDECREF(bytes); -+ return -1; -+ } -+ Py_XDECREF(bytes); -+ -+ tv->v_type = VAR_STRING; -+ } -+ #else -+ else if (PyUnicode_Check(obj)) -+ { -+ PyObject *bytes; -+ char_u *result; -+ -+ bytes = PyUnicode_AsEncodedString(obj, (char *)ENC_OPT, NULL); -+ if (bytes == NULL) -+ return -1; -+ -+ result=(char_u *) PyString_AsString(bytes); -+ if (result == NULL) -+ return -1; -+ -+ if (set_string_copy(result, tv) == -1) -+ { -+ Py_XDECREF(bytes); -+ return -1; -+ } -+ Py_XDECREF(bytes); -+ -+ tv->v_type = VAR_STRING; -+ } -+ else if (PyString_Check(obj)) -+ { -+ char_u *result = (char_u *) PyString_AsString(obj); -+ -+ if (result == NULL) -+ return -1; -+ -+ if (set_string_copy(result, tv) == -1) -+ return -1; -+ -+ tv->v_type = VAR_STRING; -+ } -+ else if (PyInt_Check(obj)) -+ { -+ tv->v_type = VAR_NUMBER; -+ tv->vval.v_number = (varnumber_T) PyInt_AsLong(obj); -+ } -+ #endif -+ else if (PyLong_Check(obj)) -+ { -+ tv->v_type = VAR_NUMBER; -+ tv->vval.v_number = (varnumber_T) PyLong_AsLong(obj); -+ } -+ else if (PyDict_Check(obj)) -+ return convert_dl(obj, tv, pydict_to_tv, lookupDict); -+ #ifdef FEAT_FLOAT -+ else if (PyFloat_Check(obj)) -+ { -+ tv->v_type = VAR_FLOAT; -+ tv->vval.v_float = (float_T) PyFloat_AsDouble(obj); -+ } -+ #endif -+ else if (PyIter_Check(obj)) -+ return convert_dl(obj, tv, pyiter_to_tv, lookupDict); -+ else if (PySequence_Check(obj)) -+ return convert_dl(obj, tv, pyseq_to_tv, lookupDict); -+ else if (PyMapping_Check(obj)) -+ return convert_dl(obj, tv, pymap_to_tv, lookupDict); -+ else -+ { -+ PyErr_SetString(PyExc_TypeError, _("unable to convert to vim structure")); -+ return -1; -+ } -+ return 0; -+ } -+ -+ static PyObject * -+ ConvertToPyObject(typval_T *tv) -+ { -+ if (tv == NULL) -+ { -+ PyErr_SetVim(_("NULL reference passed")); -+ return NULL; -+ } -+ switch (tv->v_type) -+ { -+ case VAR_STRING: -+ return PyBytes_FromString((char *) tv->vval.v_string); -+ case VAR_NUMBER: -+ return PyLong_FromLong((long) tv->vval.v_number); -+ #ifdef FEAT_FLOAT -+ case VAR_FLOAT: -+ return PyFloat_FromDouble((double) tv->vval.v_float); -+ #endif -+ case VAR_LIST: -+ return ListNew(tv->vval.v_list); -+ case VAR_DICT: -+ return DictionaryNew(tv->vval.v_dict); -+ case VAR_FUNC: -+ return FunctionNew(tv->vval.v_string); -+ case VAR_UNKNOWN: -+ Py_INCREF(Py_None); -+ return Py_None; -+ default: -+ PyErr_SetVim(_("internal error: invalid value type")); -+ return NULL; -+ } -+ } -+ #endif -*** ../vim-7.3.568/src/if_python.c 2011-08-28 16:00:14.000000000 +0200 ---- src/if_python.c 2012-06-29 12:47:48.000000000 +0200 -*************** -*** 1,4 **** -! /* vi:set ts=8 sts=4 sw=4: - * - * VIM - Vi IMproved by Bram Moolenaar - * ---- 1,4 ---- -! /* vi:set ts=8 sts=4 sw=4 noet: - * - * VIM - Vi IMproved by Bram Moolenaar - * -*************** -*** 56,61 **** ---- 56,63 ---- - - static void init_structs(void); - -+ #define PyBytes_FromString PyString_FromString -+ - /* No-op conversion functions, use with care! */ - #define PyString_AsBytes(obj) (obj) - #define PyString_FreeBytes(obj) -*************** -*** 122,132 **** ---- 124,136 ---- - /* This makes if_python.c compile without warnings against Python 2.5 - * on Win32 and Win64. */ - # undef PyRun_SimpleString -+ # undef PyRun_String - # undef PyArg_Parse - # undef PyArg_ParseTuple - # undef Py_BuildValue - # undef Py_InitModule4 - # undef Py_InitModule4_64 -+ # undef PyObject_CallMethod - - /* - * Wrapper defines -*************** -*** 134,139 **** ---- 138,144 ---- - # define PyArg_Parse dll_PyArg_Parse - # define PyArg_ParseTuple dll_PyArg_ParseTuple - # define PyMem_Free dll_PyMem_Free -+ # define PyMem_Malloc dll_PyMem_Malloc - # define PyDict_SetItemString dll_PyDict_SetItemString - # define PyErr_BadArgument dll_PyErr_BadArgument - # define PyErr_Clear dll_PyErr_Clear -*************** -*** 150,172 **** ---- 155,202 ---- - # endif - # define PyInt_AsLong dll_PyInt_AsLong - # define PyInt_FromLong dll_PyInt_FromLong -+ # define PyLong_AsLong dll_PyLong_AsLong -+ # define PyLong_FromLong dll_PyLong_FromLong - # define PyInt_Type (*dll_PyInt_Type) -+ # define PyLong_Type (*dll_PyLong_Type) - # define PyList_GetItem dll_PyList_GetItem - # define PyList_Append dll_PyList_Append - # define PyList_New dll_PyList_New - # define PyList_SetItem dll_PyList_SetItem - # define PyList_Size dll_PyList_Size - # define PyList_Type (*dll_PyList_Type) -+ # define PySequence_Check dll_PySequence_Check -+ # define PySequence_Size dll_PySequence_Size -+ # define PySequence_GetItem dll_PySequence_GetItem -+ # define PyTuple_Size dll_PyTuple_Size -+ # define PyTuple_GetItem dll_PyTuple_GetItem -+ # define PyTuple_Type (*dll_PyTuple_Type) - # define PyImport_ImportModule dll_PyImport_ImportModule - # define PyDict_New dll_PyDict_New - # define PyDict_GetItemString dll_PyDict_GetItemString -+ # define PyDict_Next dll_PyDict_Next -+ # ifdef PyMapping_Items -+ # define PY_NO_MAPPING_ITEMS -+ # else -+ # define PyMapping_Items dll_PyMapping_Items -+ # endif -+ # define PyObject_CallMethod dll_PyObject_CallMethod -+ # define PyMapping_Check dll_PyMapping_Check -+ # define PyIter_Next dll_PyIter_Next - # define PyModule_GetDict dll_PyModule_GetDict - # define PyRun_SimpleString dll_PyRun_SimpleString -+ # define PyRun_String dll_PyRun_String - # define PyString_AsString dll_PyString_AsString - # define PyString_FromString dll_PyString_FromString - # define PyString_FromStringAndSize dll_PyString_FromStringAndSize - # define PyString_Size dll_PyString_Size - # define PyString_Type (*dll_PyString_Type) -+ # define PyUnicode_Type (*dll_PyUnicode_Type) -+ # define PyUnicodeUCS4_AsEncodedString (*dll_PyUnicodeUCS4_AsEncodedString) -+ # define PyFloat_AsDouble dll_PyFloat_AsDouble -+ # define PyFloat_FromDouble dll_PyFloat_FromDouble -+ # define PyFloat_Type (*dll_PyFloat_Type) -+ # define PyImport_AddModule (*dll_PyImport_AddModule) - # define PySys_SetObject dll_PySys_SetObject - # define PySys_SetArgv dll_PySys_SetArgv - # define PyType_Type (*dll_PyType_Type) -*************** -*** 179,186 **** ---- 209,218 ---- - # define Py_Finalize dll_Py_Finalize - # define Py_IsInitialized dll_Py_IsInitialized - # define _PyObject_New dll__PyObject_New -+ # define _PyObject_NextNotImplemented (*dll__PyObject_NextNotImplemented) - # define _Py_NoneStruct (*dll__Py_NoneStruct) - # define PyObject_Init dll__PyObject_Init -+ # define PyObject_GetIter dll_PyObject_GetIter - # if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02020000 - # define PyType_IsSubtype dll_PyType_IsSubtype - # endif -*************** -*** 188,193 **** ---- 220,227 ---- - # define PyObject_Malloc dll_PyObject_Malloc - # define PyObject_Free dll_PyObject_Free - # endif -+ # define PyCapsule_New dll_PyCapsule_New -+ # define PyCapsule_GetPointer dll_PyCapsule_GetPointer - - /* - * Pointers for dynamic link -*************** -*** 195,200 **** ---- 229,235 ---- - static int(*dll_PyArg_Parse)(PyObject *, char *, ...); - static int(*dll_PyArg_ParseTuple)(PyObject *, char *, ...); - static int(*dll_PyMem_Free)(void *); -+ static void* (*dll_PyMem_Malloc)(size_t); - static int(*dll_PyDict_SetItemString)(PyObject *dp, char *key, PyObject *item); - static int(*dll_PyErr_BadArgument)(void); - static void(*dll_PyErr_Clear)(void); -*************** -*** 208,233 **** - # ifdef PY_CAN_RECURSE - static PyGILState_STATE (*dll_PyGILState_Ensure)(void); - static void (*dll_PyGILState_Release)(PyGILState_STATE); -! #endif - static long(*dll_PyInt_AsLong)(PyObject *); - static PyObject*(*dll_PyInt_FromLong)(long); - static PyTypeObject* dll_PyInt_Type; - static PyObject*(*dll_PyList_GetItem)(PyObject *, PyInt); - static PyObject*(*dll_PyList_Append)(PyObject *, PyObject *); - static PyObject*(*dll_PyList_New)(PyInt size); - static int(*dll_PyList_SetItem)(PyObject *, PyInt, PyObject *); - static PyInt(*dll_PyList_Size)(PyObject *); - static PyTypeObject* dll_PyList_Type; - static PyObject*(*dll_PyImport_ImportModule)(const char *); - static PyObject*(*dll_PyDict_New)(void); - static PyObject*(*dll_PyDict_GetItemString)(PyObject *, const char *); - static PyObject*(*dll_PyModule_GetDict)(PyObject *); - static int(*dll_PyRun_SimpleString)(char *); - static char*(*dll_PyString_AsString)(PyObject *); - static PyObject*(*dll_PyString_FromString)(const char *); - static PyObject*(*dll_PyString_FromStringAndSize)(const char *, PyInt); - static PyInt(*dll_PyString_Size)(PyObject *); - static PyTypeObject* dll_PyString_Type; - static int(*dll_PySys_SetObject)(char *, PyObject *); - static int(*dll_PySys_SetArgv)(int, char **); - static PyTypeObject* dll_PyType_Type; ---- 243,290 ---- - # ifdef PY_CAN_RECURSE - static PyGILState_STATE (*dll_PyGILState_Ensure)(void); - static void (*dll_PyGILState_Release)(PyGILState_STATE); -! # endif - static long(*dll_PyInt_AsLong)(PyObject *); - static PyObject*(*dll_PyInt_FromLong)(long); -+ static long(*dll_PyLong_AsLong)(PyObject *); -+ static PyObject*(*dll_PyLong_FromLong)(long); - static PyTypeObject* dll_PyInt_Type; -+ static PyTypeObject* dll_PyLong_Type; - static PyObject*(*dll_PyList_GetItem)(PyObject *, PyInt); - static PyObject*(*dll_PyList_Append)(PyObject *, PyObject *); - static PyObject*(*dll_PyList_New)(PyInt size); - static int(*dll_PyList_SetItem)(PyObject *, PyInt, PyObject *); - static PyInt(*dll_PyList_Size)(PyObject *); - static PyTypeObject* dll_PyList_Type; -+ static int (*dll_PySequence_Check)(PyObject *); -+ static PyInt(*dll_PySequence_Size)(PyObject *); -+ static PyObject*(*dll_PySequence_GetItem)(PyObject *, PyInt); -+ static PyInt(*dll_PyTuple_Size)(PyObject *); -+ static PyObject*(*dll_PyTuple_GetItem)(PyObject *, PyInt); -+ static PyTypeObject* dll_PyTuple_Type; - static PyObject*(*dll_PyImport_ImportModule)(const char *); - static PyObject*(*dll_PyDict_New)(void); - static PyObject*(*dll_PyDict_GetItemString)(PyObject *, const char *); -+ static int (*dll_PyDict_Next)(PyObject *, Py_ssize_t *, PyObject **, PyObject **); -+ # ifndef PY_NO_MAPPING_ITEMS -+ static PyObject* (*dll_PyMapping_Items)(PyObject *); -+ # endif -+ static PyObject* (*dll_PyObject_CallMethod)(PyObject *, char *, PyObject *); -+ static int (*dll_PyMapping_Check)(PyObject *); -+ static PyObject* (*dll_PyIter_Next)(PyObject *); - static PyObject*(*dll_PyModule_GetDict)(PyObject *); - static int(*dll_PyRun_SimpleString)(char *); -+ static PyObject *(*dll_PyRun_String)(char *, int, PyObject *, PyObject *); - static char*(*dll_PyString_AsString)(PyObject *); - static PyObject*(*dll_PyString_FromString)(const char *); - static PyObject*(*dll_PyString_FromStringAndSize)(const char *, PyInt); - static PyInt(*dll_PyString_Size)(PyObject *); - static PyTypeObject* dll_PyString_Type; -+ static PyTypeObject* dll_PyUnicode_Type; -+ static PyObject *(*PyUnicodeUCS4_AsEncodedString)(PyObject *, char *, char *); -+ static double(*dll_PyFloat_AsDouble)(PyObject *); -+ static PyObject*(*dll_PyFloat_FromDouble)(double); -+ static PyTypeObject* dll_PyFloat_Type; - static int(*dll_PySys_SetObject)(char *, PyObject *); - static int(*dll_PySys_SetArgv)(int, char **); - static PyTypeObject* dll_PyType_Type; -*************** -*** 235,246 **** ---- 292,306 ---- - static PyObject*(*dll_Py_BuildValue)(char *, ...); - static PyObject*(*dll_Py_FindMethod)(struct PyMethodDef[], PyObject *, char *); - static PyObject*(*dll_Py_InitModule4)(char *, struct PyMethodDef *, char *, PyObject *, int); -+ static PyObject*(*dll_PyImport_AddModule)(char *); - static void(*dll_Py_SetPythonHome)(char *home); - static void(*dll_Py_Initialize)(void); - static void(*dll_Py_Finalize)(void); - static int(*dll_Py_IsInitialized)(void); - static PyObject*(*dll__PyObject_New)(PyTypeObject *, PyObject *); - static PyObject*(*dll__PyObject_Init)(PyObject *, PyTypeObject *); -+ static PyObject* (*dll_PyObject_GetIter)(PyObject *); -+ static iternextfunc dll__PyObject_NextNotImplemented; - static PyObject* dll__Py_NoneStruct; - # if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02020000 - static int (*dll_PyType_IsSubtype)(PyTypeObject *, PyTypeObject *); -*************** -*** 249,254 **** ---- 309,316 ---- - static void* (*dll_PyObject_Malloc)(size_t); - static void (*dll_PyObject_Free)(void*); - # endif -+ static PyObject* (*dll_PyCapsule_New)(void *, char *, PyCapsule_Destructor); -+ static void* (*dll_PyCapsule_GetPointer)(PyObject *, char *); - - static HINSTANCE hinstPython = 0; /* Instance of python.dll */ - -*************** -*** 278,283 **** ---- 340,346 ---- - {"PyArg_Parse", (PYTHON_PROC*)&dll_PyArg_Parse}, - {"PyArg_ParseTuple", (PYTHON_PROC*)&dll_PyArg_ParseTuple}, - {"PyMem_Free", (PYTHON_PROC*)&dll_PyMem_Free}, -+ {"PyMem_Malloc", (PYTHON_PROC*)&dll_PyMem_Malloc}, - {"PyDict_SetItemString", (PYTHON_PROC*)&dll_PyDict_SetItemString}, - {"PyErr_BadArgument", (PYTHON_PROC*)&dll_PyErr_BadArgument}, - {"PyErr_Clear", (PYTHON_PROC*)&dll_PyErr_Clear}, -*************** -*** 294,316 **** ---- 357,402 ---- - # endif - {"PyInt_AsLong", (PYTHON_PROC*)&dll_PyInt_AsLong}, - {"PyInt_FromLong", (PYTHON_PROC*)&dll_PyInt_FromLong}, -+ {"PyLong_AsLong", (PYTHON_PROC*)&dll_PyLong_AsLong}, -+ {"PyLong_FromLong", (PYTHON_PROC*)&dll_PyLong_FromLong}, - {"PyInt_Type", (PYTHON_PROC*)&dll_PyInt_Type}, -+ {"PyLong_Type", (PYTHON_PROC*)&dll_PyLong_Type}, - {"PyList_GetItem", (PYTHON_PROC*)&dll_PyList_GetItem}, - {"PyList_Append", (PYTHON_PROC*)&dll_PyList_Append}, - {"PyList_New", (PYTHON_PROC*)&dll_PyList_New}, - {"PyList_SetItem", (PYTHON_PROC*)&dll_PyList_SetItem}, - {"PyList_Size", (PYTHON_PROC*)&dll_PyList_Size}, - {"PyList_Type", (PYTHON_PROC*)&dll_PyList_Type}, -+ {"PySequence_GetItem", (PYTHON_PROC*)&dll_PySequence_GetItem}, -+ {"PySequence_Size", (PYTHON_PROC*)&dll_PySequence_Size}, -+ {"PySequence_Check", (PYTHON_PROC*)&dll_PySequence_Check}, -+ {"PyTuple_GetItem", (PYTHON_PROC*)&dll_PyTuple_GetItem}, -+ {"PyTuple_Size", (PYTHON_PROC*)&dll_PyTuple_Size}, -+ {"PyTuple_Type", (PYTHON_PROC*)&dll_PyTuple_Type}, - {"PyImport_ImportModule", (PYTHON_PROC*)&dll_PyImport_ImportModule}, - {"PyDict_GetItemString", (PYTHON_PROC*)&dll_PyDict_GetItemString}, -+ {"PyDict_Next", (PYTHON_PROC*)&dll_PyDict_Next}, - {"PyDict_New", (PYTHON_PROC*)&dll_PyDict_New}, -+ # ifndef PY_NO_MAPPING_ITEMS -+ {"PyMapping_Items", (PYTHON_PROC*)&dll_PyMapping_Items}, -+ # endif -+ {"PyObject_CallMethod", (PYTHON_PROC*)&dll_PyObject_CallMethod}, -+ {"PyMapping_Check", (PYTHON_PROC*)&dll_PyMapping_Check}, -+ {"PyIter_Next", (PYTHON_PROC*)&dll_PyIter_Next}, - {"PyModule_GetDict", (PYTHON_PROC*)&dll_PyModule_GetDict}, - {"PyRun_SimpleString", (PYTHON_PROC*)&dll_PyRun_SimpleString}, -+ {"PyRun_String", (PYTHON_PROC*)&dll_PyRun_String}, - {"PyString_AsString", (PYTHON_PROC*)&dll_PyString_AsString}, - {"PyString_FromString", (PYTHON_PROC*)&dll_PyString_FromString}, - {"PyString_FromStringAndSize", (PYTHON_PROC*)&dll_PyString_FromStringAndSize}, - {"PyString_Size", (PYTHON_PROC*)&dll_PyString_Size}, - {"PyString_Type", (PYTHON_PROC*)&dll_PyString_Type}, -+ {"PyUnicode_Type", (PYTHON_PROC*)&dll_PyUnicode_Type}, -+ {"PyUnicodeUCS4_AsEncodedString", (PYTHON_PROC*)&dll_PyUnicodeUCS4_AsEncodedString}, -+ {"PyFloat_Type", (PYTHON_PROC*)&dll_PyFloat_Type}, -+ {"PyFloat_AsDouble", (PYTHON_PROC*)&dll_PyFloat_AsDouble}, -+ {"PyFloat_FromDouble", (PYTHON_PROC*)&dll_PyFloat_FromDouble}, -+ {"PyImport_AddModule", (PYTHON_PROC*)&dll_PyImport_AddModule}, - {"PySys_SetObject", (PYTHON_PROC*)&dll_PySys_SetObject}, - {"PySys_SetArgv", (PYTHON_PROC*)&dll_PySys_SetArgv}, - {"PyType_Type", (PYTHON_PROC*)&dll_PyType_Type}, -*************** -*** 328,333 **** ---- 414,421 ---- - {"Py_IsInitialized", (PYTHON_PROC*)&dll_Py_IsInitialized}, - {"_PyObject_New", (PYTHON_PROC*)&dll__PyObject_New}, - {"PyObject_Init", (PYTHON_PROC*)&dll__PyObject_Init}, -+ {"PyObject_GetIter", (PYTHON_PROC*)&dll_PyObject_GetIter}, -+ {"_PyObject_NextNotImplemented", (PYTHON_PROC*)&dll__PyObject_NextNotImplemented}, - {"_Py_NoneStruct", (PYTHON_PROC*)&dll__Py_NoneStruct}, - # if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02020000 - {"PyType_IsSubtype", (PYTHON_PROC*)&dll_PyType_IsSubtype}, -*************** -*** 336,341 **** ---- 424,431 ---- - {"PyObject_Malloc", (PYTHON_PROC*)&dll_PyObject_Malloc}, - {"PyObject_Free", (PYTHON_PROC*)&dll_PyObject_Free}, - # endif -+ {"PyCapsule_New", (PYTHON_PROC*)&dll_PyCapsule_New}, -+ {"PyCapsule_GetPointer", (PYTHON_PROC*)&dll_PyCapsule_GetPointer}, - {"", NULL}, - }; - -*************** -*** 434,443 **** ---- 524,548 ---- - - static PyObject *BufferNew (buf_T *); - static PyObject *WindowNew(win_T *); -+ static PyObject *DictionaryNew(dict_T *); - static PyObject *LineToString(const char *); - - static PyTypeObject RangeType; - -+ static int initialised = 0; -+ #define PYINITIALISED initialised -+ -+ /* Add conversion from PyInt? */ -+ #define DICTKEY_GET(err) \ -+ if (!PyString_Check(keyObject)) \ -+ { \ -+ PyErr_SetString(PyExc_TypeError, _("only string keys are allowed")); \ -+ return err; \ -+ } \ -+ key = (char_u *) PyString_AsString(keyObject); -+ #define DICTKEY_UNREF -+ #define DICTKEY_DECL -+ - /* - * Include the code shared with if_python3.c - */ -*************** -*** 451,456 **** ---- 556,563 ---- - static PyInt RangeStart; - static PyInt RangeEnd; - -+ static PyObject *globals; -+ - static void PythonIO_Flush(void); - static int PythonIO_Init(void); - static int PythonMod_Init(void); -*************** -*** 466,473 **** - * 1. Python interpreter main program. - */ - -- static int initialised = 0; -- - #if PYTHON_API_VERSION < 1007 /* Python 1.4 */ - typedef PyObject PyThreadState; - #endif ---- 573,578 ---- -*************** -*** 581,586 **** ---- 686,693 ---- - if (PythonMod_Init()) - goto fail; - -+ globals = PyModule_GetDict(PyImport_AddModule("__main__")); -+ - /* Remove the element from sys.path that was added because of our - * argv[0] value in PythonMod_Init(). Previously we used an empty - * string, but dependinding on the OS we then get an empty entry or -*************** -*** 609,615 **** - * External interface - */ - static void -! DoPythonCommand(exarg_T *eap, const char *cmd) - { - #ifndef PY_CAN_RECURSE - static int recursive = 0; ---- 716,722 ---- - * External interface - */ - static void -! DoPythonCommand(exarg_T *eap, const char *cmd, typval_T *rettv) - { - #ifndef PY_CAN_RECURSE - static int recursive = 0; -*************** -*** 639,646 **** - if (Python_Init()) - goto theend; - -! RangeStart = eap->line1; -! RangeEnd = eap->line2; - Python_Release_Vim(); /* leave vim */ - - #if defined(HAVE_LOCALE_H) || defined(X_LOCALE) ---- 746,761 ---- - if (Python_Init()) - goto theend; - -! if (rettv == NULL) -! { -! RangeStart = eap->line1; -! RangeEnd = eap->line2; -! } -! else -! { -! RangeStart = (PyInt) curwin->w_cursor.lnum; -! RangeEnd = RangeStart; -! } - Python_Release_Vim(); /* leave vim */ - - #if defined(HAVE_LOCALE_H) || defined(X_LOCALE) -*************** -*** 658,664 **** - - Python_RestoreThread(); /* enter python */ - -! PyRun_SimpleString((char *)(cmd)); - - Python_SaveThread(); /* leave python */ - ---- 773,795 ---- - - Python_RestoreThread(); /* enter python */ - -! if (rettv == NULL) -! PyRun_SimpleString((char *)(cmd)); -! else -! { -! PyObject *r; -! -! r = PyRun_String((char *)(cmd), Py_eval_input, globals, globals); -! if (r == NULL) -! EMSG(_("E858: Eval did not return a valid python object")); -! else -! { -! if (ConvertFromPyObject(r, rettv) == -1) -! EMSG(_("E859: Failed to convert returned python object to vim value")); -! Py_DECREF(r); -! } -! PyErr_Clear(); -! } - - Python_SaveThread(); /* leave python */ - -*************** -*** 680,686 **** - #ifndef PY_CAN_RECURSE - --recursive; - #endif -! return; /* keeps lint happy */ - } - - /* ---- 811,817 ---- - #ifndef PY_CAN_RECURSE - --recursive; - #endif -! return; - } - - /* -*************** -*** 695,703 **** - if (!eap->skip) - { - if (script == NULL) -! DoPythonCommand(eap, (char *)eap->arg); - else -! DoPythonCommand(eap, (char *)script); - } - vim_free(script); - } ---- 826,834 ---- - if (!eap->skip) - { - if (script == NULL) -! DoPythonCommand(eap, (char *)eap->arg, NULL); - else -! DoPythonCommand(eap, (char *)script, NULL); - } - vim_free(script); - } -*************** -*** 743,749 **** - *p++ = '\0'; - - /* Execute the file */ -! DoPythonCommand(eap, buffer); - } - - /****************************************************** ---- 874,880 ---- - *p++ = '\0'; - - /* Execute the file */ -! DoPythonCommand(eap, buffer, NULL); - } - - /****************************************************** -*************** -*** 765,778 **** - static int - OutputSetattr(PyObject *self, char *name, PyObject *val) - { -! if (val == NULL) { - PyErr_SetString(PyExc_AttributeError, _("can't delete OutputObject attributes")); - return -1; - } - - if (strcmp(name, "softspace") == 0) - { -! if (!PyInt_Check(val)) { - PyErr_SetString(PyExc_TypeError, _("softspace must be an integer")); - return -1; - } ---- 896,911 ---- - static int - OutputSetattr(PyObject *self, char *name, PyObject *val) - { -! if (val == NULL) -! { - PyErr_SetString(PyExc_AttributeError, _("can't delete OutputObject attributes")); - return -1; - } - - if (strcmp(name, "softspace") == 0) - { -! if (!PyInt_Check(val)) -! { - PyErr_SetString(PyExc_TypeError, _("softspace must be an integer")); - return -1; - } -*************** -*** 800,805 **** ---- 933,941 ---- - * 3. Implementation of the Vim module for Python - */ - -+ static PyObject *ConvertToPyObject(typval_T *); -+ static int ConvertFromPyObject(PyObject *, typval_T *); -+ - /* Window type - Implementation functions - * -------------------------------------- - */ -*************** -*** 1441,1446 **** ---- 1577,1748 ---- - return result; - } - -+ static void DictionaryDestructor(PyObject *); -+ static PyObject *DictionaryGetattr(PyObject *, char*); -+ -+ static PyMappingMethods DictionaryAsMapping = { -+ (PyInquiry) DictionaryLength, -+ (binaryfunc) DictionaryItem, -+ (objobjargproc) DictionaryAssItem, -+ }; -+ -+ static PyTypeObject DictionaryType = { -+ PyObject_HEAD_INIT(0) -+ 0, -+ "vimdictionary", -+ sizeof(DictionaryObject), -+ 0, -+ -+ (destructor) DictionaryDestructor, -+ (printfunc) 0, -+ (getattrfunc) DictionaryGetattr, -+ (setattrfunc) 0, -+ (cmpfunc) 0, -+ (reprfunc) 0, -+ -+ 0, /* as number */ -+ 0, /* as sequence */ -+ &DictionaryAsMapping, /* as mapping */ -+ -+ (hashfunc) 0, -+ (ternaryfunc) 0, -+ (reprfunc) 0, -+ }; -+ -+ static void -+ DictionaryDestructor(PyObject *self) -+ { -+ DictionaryObject *this = ((DictionaryObject *) (self)); -+ -+ pyll_remove(&this->ref, &lastdict); -+ dict_unref(this->dict); -+ -+ Py_DECREF(self); -+ } -+ -+ static PyObject * -+ DictionaryGetattr(PyObject *self, char *name) -+ { -+ return Py_FindMethod(DictionaryMethods, self, name); -+ } -+ -+ static void ListDestructor(PyObject *); -+ static PyObject *ListGetattr(PyObject *, char *); -+ -+ static PySequenceMethods ListAsSeq = { -+ (PyInquiry) ListLength, -+ (binaryfunc) 0, -+ (PyIntArgFunc) 0, -+ (PyIntArgFunc) ListItem, -+ (PyIntIntArgFunc) ListSlice, -+ (PyIntObjArgProc) ListAssItem, -+ (PyIntIntObjArgProc) ListAssSlice, -+ (objobjproc) 0, -+ #if PY_MAJOR_VERSION >= 2 -+ (binaryfunc) ListConcatInPlace, -+ 0, -+ #endif -+ }; -+ -+ static PyTypeObject ListType = { -+ PyObject_HEAD_INIT(0) -+ 0, -+ "vimlist", -+ sizeof(ListObject), -+ 0, -+ -+ (destructor) ListDestructor, -+ (printfunc) 0, -+ (getattrfunc) ListGetattr, -+ (setattrfunc) 0, -+ (cmpfunc) 0, -+ (reprfunc) 0, -+ -+ 0, /* as number */ -+ &ListAsSeq, /* as sequence */ -+ 0, /* as mapping */ -+ -+ (hashfunc) 0, -+ (ternaryfunc) 0, -+ (reprfunc) 0, -+ }; -+ -+ static void -+ ListDestructor(PyObject *self) -+ { -+ ListObject *this = ((ListObject *) (self)); -+ -+ pyll_remove(&this->ref, &lastlist); -+ list_unref(this->list); -+ -+ Py_DECREF(self); -+ } -+ -+ static PyObject * -+ ListGetattr(PyObject *self, char *name) -+ { -+ return Py_FindMethod(ListMethods, self, name); -+ } -+ -+ static void FunctionDestructor(PyObject *); -+ static PyObject *FunctionGetattr(PyObject *, char *); -+ -+ static PyTypeObject FunctionType = { -+ PyObject_HEAD_INIT(0) -+ 0, -+ "vimfunction", -+ sizeof(FunctionObject), -+ 0, -+ -+ (destructor) FunctionDestructor, -+ (printfunc) 0, -+ (getattrfunc) FunctionGetattr, -+ (setattrfunc) 0, -+ (cmpfunc) 0, -+ (reprfunc) 0, -+ -+ 0, /* as number */ -+ 0, /* as sequence */ -+ 0, /* as mapping */ -+ -+ (hashfunc) 0, -+ (ternaryfunc) FunctionCall, -+ (reprfunc) 0, -+ }; -+ -+ static void -+ FunctionDestructor(PyObject *self) -+ { -+ FunctionObject *this = (FunctionObject *) (self); -+ -+ func_unref(this->name); -+ PyMem_Del(this->name); -+ -+ Py_DECREF(self); -+ } -+ -+ static PyObject * -+ FunctionGetattr(PyObject *self, char *name) -+ { -+ FunctionObject *this = (FunctionObject *)(self); -+ -+ if (strcmp(name, "name") == 0) -+ return PyString_FromString((char *)(this->name)); -+ else -+ return Py_FindMethod(FunctionMethods, self, name); -+ } -+ -+ void -+ do_pyeval (char_u *str, typval_T *rettv) -+ { -+ DoPythonCommand(NULL, (char *) str, rettv); -+ switch(rettv->v_type) -+ { -+ case VAR_DICT: ++rettv->vval.v_dict->dv_refcount; break; -+ case VAR_LIST: ++rettv->vval.v_list->lv_refcount; break; -+ case VAR_FUNC: func_ref(rettv->vval.v_string); break; -+ } -+ } - - /* Don't generate a prototype for the next function, it generates an error on - * newer Python versions. */ -*************** -*** 1453,1458 **** ---- 1755,1766 ---- - } - #endif /* Python 1.4 */ - -+ void -+ set_ref_in_python (int copyID) -+ { -+ set_ref_in_py(copyID); -+ } -+ - static void - init_structs(void) - { -*** ../vim-7.3.568/src/if_python3.c 2012-02-04 20:17:21.000000000 +0100 ---- src/if_python3.c 2012-06-29 11:54:10.000000000 +0200 -*************** -*** 77,83 **** - - #define PyInt Py_ssize_t - #define PyString_Check(obj) PyUnicode_Check(obj) -! #define PyString_AsBytes(obj) PyUnicode_AsEncodedString(obj, (char *)ENC_OPT, CODEC_ERROR_HANDLER); - #define PyString_FreeBytes(obj) Py_XDECREF(bytes) - #define PyString_AsString(obj) PyBytes_AsString(obj) - #define PyString_Size(obj) PyBytes_GET_SIZE(bytes) ---- 77,83 ---- - - #define PyInt Py_ssize_t - #define PyString_Check(obj) PyUnicode_Check(obj) -! #define PyString_AsBytes(obj) PyUnicode_AsEncodedString(obj, (char *)ENC_OPT, CODEC_ERROR_HANDLER) - #define PyString_FreeBytes(obj) Py_XDECREF(bytes) - #define PyString_AsString(obj) PyBytes_AsString(obj) - #define PyString_Size(obj) PyBytes_GET_SIZE(bytes) -*************** -*** 109,114 **** ---- 109,115 ---- - # undef PyArg_ParseTuple - # define PyArg_ParseTuple py3_PyArg_ParseTuple - # define PyMem_Free py3_PyMem_Free -+ # define PyMem_Malloc py3_PyMem_Malloc - # define PyDict_SetItemString py3_PyDict_SetItemString - # define PyErr_BadArgument py3_PyErr_BadArgument - # define PyErr_Clear py3_PyErr_Clear -*************** -*** 128,141 **** ---- 129,155 ---- - # define PyList_New py3_PyList_New - # define PyList_SetItem py3_PyList_SetItem - # define PyList_Size py3_PyList_Size -+ # define PySequence_Check py3_PySequence_Check -+ # define PySequence_Size py3_PySequence_Size -+ # define PySequence_GetItem py3_PySequence_GetItem -+ # define PyTuple_Size py3_PyTuple_Size -+ # define PyTuple_GetItem py3_PyTuple_GetItem - # define PySlice_GetIndicesEx py3_PySlice_GetIndicesEx - # define PyImport_ImportModule py3_PyImport_ImportModule -+ # define PyImport_AddModule py3_PyImport_AddModule - # define PyObject_Init py3__PyObject_Init - # define PyDict_New py3_PyDict_New - # define PyDict_GetItemString py3_PyDict_GetItemString -+ # define PyDict_Next py3_PyDict_Next -+ # define PyMapping_Check py3_PyMapping_Check -+ # define PyMapping_Items py3_PyMapping_Items -+ # define PyIter_Next py3_PyIter_Next -+ # define PyObject_GetIter py3_PyObject_GetIter - # define PyModule_GetDict py3_PyModule_GetDict - #undef PyRun_SimpleString - # define PyRun_SimpleString py3_PyRun_SimpleString -+ #undef PyRun_String -+ # define PyRun_String py3_PyRun_String - # define PySys_SetObject py3_PySys_SetObject - # define PySys_SetArgv py3_PySys_SetArgv - # define PyType_Type (*py3_PyType_Type) -*************** -*** 147,152 **** ---- 161,167 ---- - # define Py_Finalize py3_Py_Finalize - # define Py_IsInitialized py3_Py_IsInitialized - # define _Py_NoneStruct (*py3__Py_NoneStruct) -+ # define _PyObject_NextNotImplemented (*py3__PyObject_NextNotImplemented) - # define PyModule_AddObject py3_PyModule_AddObject - # define PyImport_AppendInittab py3_PyImport_AppendInittab - # define _PyUnicode_AsString py3__PyUnicode_AsString -*************** -*** 154,161 **** ---- 169,181 ---- - # define PyUnicode_AsEncodedString py3_PyUnicode_AsEncodedString - # undef PyBytes_AsString - # define PyBytes_AsString py3_PyBytes_AsString -+ # undef PyBytes_FromString -+ # define PyBytes_FromString py3_PyBytes_FromString -+ # define PyFloat_FromDouble py3_PyFloat_FromDouble -+ # define PyFloat_AsDouble py3_PyFloat_AsDouble - # define PyObject_GenericGetAttr py3_PyObject_GenericGetAttr - # define PySlice_Type (*py3_PySlice_Type) -+ # define PyFloat_Type (*py3_PyFloat_Type) - # define PyErr_NewException py3_PyErr_NewException - # ifdef Py_DEBUG - # define _Py_NegativeRefcount py3__Py_NegativeRefcount -*************** -*** 174,179 **** ---- 194,202 ---- - # define PyUnicode_FromString py3_PyUnicode_FromString - # undef PyUnicode_Decode - # define PyUnicode_Decode py3_PyUnicode_Decode -+ # define PyType_IsSubtype py3_PyType_IsSubtype -+ # define PyCapsule_New py3_PyCapsule_New -+ # define PyCapsule_GetPointer py3_PyCapsule_GetPointer - - # ifdef Py_DEBUG - # undef PyObject_NEW -*************** -*** 194,215 **** ---- 217,250 ---- - static int (*py3_PySys_SetObject)(char *, PyObject *); - static PyObject* (*py3_PyList_Append)(PyObject *, PyObject *); - static Py_ssize_t (*py3_PyList_Size)(PyObject *); -+ static int (*py3_PySequence_Check)(PyObject *); -+ static Py_ssize_t (*py3_PySequence_Size)(PyObject *); -+ static PyObject* (*py3_PySequence_GetItem)(PyObject *, Py_ssize_t); -+ static Py_ssize_t (*py3_PyTuple_Size)(PyObject *); -+ static PyObject* (*py3_PyTuple_GetItem)(PyObject *, Py_ssize_t); -+ static int (*py3_PyMapping_Check)(PyObject *); -+ static PyObject* (*py3_PyMapping_Items)(PyObject *); - static int (*py3_PySlice_GetIndicesEx)(PyObject *r, Py_ssize_t length, - Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step, Py_ssize_t *slicelength); - static PyObject* (*py3_PyErr_NoMemory)(void); - static void (*py3_Py_Finalize)(void); - static void (*py3_PyErr_SetString)(PyObject *, const char *); - static int (*py3_PyRun_SimpleString)(char *); -+ static PyObject* (*py3_PyRun_String)(char *, int, PyObject *, PyObject *); - static PyObject* (*py3_PyList_GetItem)(PyObject *, Py_ssize_t); - static PyObject* (*py3_PyImport_ImportModule)(const char *); -+ static PyObject* (*py3_PyImport_AddModule)(const char *); - static int (*py3_PyErr_BadArgument)(void); - static PyTypeObject* py3_PyType_Type; - static PyObject* (*py3_PyErr_Occurred)(void); - static PyObject* (*py3_PyModule_GetDict)(PyObject *); - static int (*py3_PyList_SetItem)(PyObject *, Py_ssize_t, PyObject *); - static PyObject* (*py3_PyDict_GetItemString)(PyObject *, const char *); -+ static int (*py3_PyDict_Next)(PyObject *, Py_ssize_t *, PyObject **, PyObject **); - static PyObject* (*py3_PyLong_FromLong)(long); - static PyObject* (*py3_PyDict_New)(void); -+ static PyObject* (*py3_PyIter_Next)(PyObject *); -+ static PyObject* (*py3_PyObject_GetIter)(PyObject *); - static PyObject* (*py3_Py_BuildValue)(char *, ...); - static int (*py3_PyType_Ready)(PyTypeObject *type); - static int (*py3_PyDict_SetItemString)(PyObject *dp, char *key, PyObject *item); -*************** -*** 224,244 **** ---- 259,287 ---- - static int (*py3_PyArg_Parse)(PyObject *, char *, ...); - static int (*py3_PyArg_ParseTuple)(PyObject *, char *, ...); - static int (*py3_PyMem_Free)(void *); -+ static void* (*py3_PyMem_Malloc)(size_t); - static int (*py3_Py_IsInitialized)(void); - static void (*py3_PyErr_Clear)(void); - static PyObject*(*py3__PyObject_Init)(PyObject *, PyTypeObject *); -+ static iternextfunc py3__PyObject_NextNotImplemented; - static PyObject* py3__Py_NoneStruct; - static int (*py3_PyModule_AddObject)(PyObject *m, const char *name, PyObject *o); - static int (*py3_PyImport_AppendInittab)(const char *name, PyObject* (*initfunc)(void)); - static char* (*py3__PyUnicode_AsString)(PyObject *unicode); - static PyObject* (*py3_PyUnicode_AsEncodedString)(PyObject *unicode, const char* encoding, const char* errors); - static char* (*py3_PyBytes_AsString)(PyObject *bytes); -+ static PyObject* (*py3_PyBytes_FromString)(char *str); -+ static PyObject* (*py3_PyFloat_FromDouble)(double num); -+ static double (*py3_PyFloat_AsDouble)(PyObject *); - static PyObject* (*py3_PyObject_GenericGetAttr)(PyObject *obj, PyObject *name); - static PyObject* (*py3_PyModule_Create2)(struct PyModuleDef* module, int module_api_version); - static PyObject* (*py3_PyType_GenericAlloc)(PyTypeObject *type, Py_ssize_t nitems); - static PyObject* (*py3_PyType_GenericNew)(PyTypeObject *type, PyObject *args, PyObject *kwds); - static PyTypeObject* py3_PySlice_Type; -+ static PyTypeObject* py3_PyFloat_Type; - static PyObject* (*py3_PyErr_NewException)(char *name, PyObject *base, PyObject *dict); -+ static PyObject* (*py3_PyCapsule_New)(void *, char *, PyCapsule_Destructor); -+ static void* (*py3_PyCapsule_GetPointer)(PyObject *, char *); - # ifdef Py_DEBUG - static void (*py3__Py_NegativeRefcount)(const char *fname, int lineno, PyObject *op); - static Py_ssize_t* py3__Py_RefTotal; -*************** -*** 249,254 **** ---- 292,298 ---- - static void (*py3_PyObject_Free)(void*); - static void* (*py3_PyObject_Malloc)(size_t); - # endif -+ static int (*py3_PyType_IsSubtype)(PyTypeObject *, PyTypeObject *); - - static HINSTANCE hinstPy3 = 0; /* Instance of python.dll */ - -*************** -*** 280,304 **** ---- 324,361 ---- - {"Py_Initialize", (PYTHON_PROC*)&py3_Py_Initialize}, - {"PyArg_ParseTuple", (PYTHON_PROC*)&py3_PyArg_ParseTuple}, - {"PyMem_Free", (PYTHON_PROC*)&py3_PyMem_Free}, -+ {"PyMem_Malloc", (PYTHON_PROC*)&py3_PyMem_Malloc}, - {"PyList_New", (PYTHON_PROC*)&py3_PyList_New}, - {"PyGILState_Ensure", (PYTHON_PROC*)&py3_PyGILState_Ensure}, - {"PyGILState_Release", (PYTHON_PROC*)&py3_PyGILState_Release}, - {"PySys_SetObject", (PYTHON_PROC*)&py3_PySys_SetObject}, - {"PyList_Append", (PYTHON_PROC*)&py3_PyList_Append}, - {"PyList_Size", (PYTHON_PROC*)&py3_PyList_Size}, -+ {"PySequence_Check", (PYTHON_PROC*)&py3_PySequence_Check}, -+ {"PySequence_Size", (PYTHON_PROC*)&py3_PySequence_Size}, -+ {"PySequence_GetItem", (PYTHON_PROC*)&py3_PySequence_GetItem}, -+ {"PyTuple_Size", (PYTHON_PROC*)&py3_PyTuple_Size}, -+ {"PyTuple_GetItem", (PYTHON_PROC*)&py3_PyTuple_GetItem}, - {"PySlice_GetIndicesEx", (PYTHON_PROC*)&py3_PySlice_GetIndicesEx}, - {"PyErr_NoMemory", (PYTHON_PROC*)&py3_PyErr_NoMemory}, - {"Py_Finalize", (PYTHON_PROC*)&py3_Py_Finalize}, - {"PyErr_SetString", (PYTHON_PROC*)&py3_PyErr_SetString}, - {"PyRun_SimpleString", (PYTHON_PROC*)&py3_PyRun_SimpleString}, -+ {"PyRun_String", (PYTHON_PROC*)&py3_PyRun_String}, - {"PyList_GetItem", (PYTHON_PROC*)&py3_PyList_GetItem}, - {"PyImport_ImportModule", (PYTHON_PROC*)&py3_PyImport_ImportModule}, -+ {"PyImport_AddModule", (PYTHON_PROC*)&py3_PyImport_AddModule}, - {"PyErr_BadArgument", (PYTHON_PROC*)&py3_PyErr_BadArgument}, - {"PyType_Type", (PYTHON_PROC*)&py3_PyType_Type}, - {"PyErr_Occurred", (PYTHON_PROC*)&py3_PyErr_Occurred}, - {"PyModule_GetDict", (PYTHON_PROC*)&py3_PyModule_GetDict}, - {"PyList_SetItem", (PYTHON_PROC*)&py3_PyList_SetItem}, - {"PyDict_GetItemString", (PYTHON_PROC*)&py3_PyDict_GetItemString}, -+ {"PyDict_Next", (PYTHON_PROC*)&py3_PyDict_Next}, -+ {"PyMapping_Check", (PYTHON_PROC*)&py3_PyMapping_Check}, -+ {"PyMapping_Items", (PYTHON_PROC*)&py3_PyMapping_Items}, -+ {"PyIter_Next", (PYTHON_PROC*)&py3_PyIter_Next}, -+ {"PyObject_GetIter", (PYTHON_PROC*)&py3_PyObject_GetIter}, - {"PyLong_FromLong", (PYTHON_PROC*)&py3_PyLong_FromLong}, - {"PyDict_New", (PYTHON_PROC*)&py3_PyDict_New}, - {"Py_BuildValue", (PYTHON_PROC*)&py3_Py_BuildValue}, -*************** -*** 311,316 **** ---- 368,374 ---- - {"PyEval_SaveThread", (PYTHON_PROC*)&py3_PyEval_SaveThread}, - {"PyArg_Parse", (PYTHON_PROC*)&py3_PyArg_Parse}, - {"Py_IsInitialized", (PYTHON_PROC*)&py3_Py_IsInitialized}, -+ {"_PyObject_NextNotImplemented", (PYTHON_PROC*)&py3__PyObject_NextNotImplemented}, - {"_Py_NoneStruct", (PYTHON_PROC*)&py3__Py_NoneStruct}, - {"PyErr_Clear", (PYTHON_PROC*)&py3_PyErr_Clear}, - {"PyObject_Init", (PYTHON_PROC*)&py3__PyObject_Init}, -*************** -*** 318,328 **** ---- 376,390 ---- - {"PyImport_AppendInittab", (PYTHON_PROC*)&py3_PyImport_AppendInittab}, - {"_PyUnicode_AsString", (PYTHON_PROC*)&py3__PyUnicode_AsString}, - {"PyBytes_AsString", (PYTHON_PROC*)&py3_PyBytes_AsString}, -+ {"PyBytes_FromString", (PYTHON_PROC*)&py3_PyBytes_FromString}, -+ {"PyFloat_FromDouble", (PYTHON_PROC*)&py3_PyFloat_FromDouble}, -+ {"PyFloat_AsDouble", (PYTHON_PROC*)&py3_PyFloat_AsDouble}, - {"PyObject_GenericGetAttr", (PYTHON_PROC*)&py3_PyObject_GenericGetAttr}, - {"PyModule_Create2", (PYTHON_PROC*)&py3_PyModule_Create2}, - {"PyType_GenericAlloc", (PYTHON_PROC*)&py3_PyType_GenericAlloc}, - {"PyType_GenericNew", (PYTHON_PROC*)&py3_PyType_GenericNew}, - {"PySlice_Type", (PYTHON_PROC*)&py3_PySlice_Type}, -+ {"PyFloat_Type", (PYTHON_PROC*)&py3_PyFloat_Type}, - {"PyErr_NewException", (PYTHON_PROC*)&py3_PyErr_NewException}, - # ifdef Py_DEBUG - {"_Py_NegativeRefcount", (PYTHON_PROC*)&py3__Py_NegativeRefcount}, -*************** -*** 334,339 **** ---- 396,404 ---- - {"PyObject_Malloc", (PYTHON_PROC*)&py3_PyObject_Malloc}, - {"PyObject_Free", (PYTHON_PROC*)&py3_PyObject_Free}, - # endif -+ {"PyType_IsSubtype", (PYTHON_PROC*)&py3_PyType_IsSubtype}, -+ {"PyCapsule_New", (PYTHON_PROC*)&py3_PyCapsule_New}, -+ {"PyCapsule_GetPointer", (PYTHON_PROC*)&py3_PyCapsule_GetPointer}, - {"", NULL}, - }; - -*************** -*** 472,482 **** ---- 537,577 ---- - - static PyTypeObject RangeType; - -+ static int py3initialised = 0; -+ -+ #define PYINITIALISED py3initialised -+ -+ /* Add conversion from PyInt? */ -+ #define DICTKEY_GET(err) \ -+ if (PyBytes_Check(keyObject)) \ -+ key = (char_u *) PyBytes_AsString(keyObject); \ -+ else if (PyUnicode_Check(keyObject)) \ -+ { \ -+ bytes = PyString_AsBytes(keyObject); \ -+ if (bytes == NULL) \ -+ return err; \ -+ key = (char_u *) PyBytes_AsString(bytes); \ -+ if (key == NULL) \ -+ return err; \ -+ } \ -+ else \ -+ { \ -+ PyErr_SetString(PyExc_TypeError, _("only string keys are allowed")); \ -+ return err; \ -+ } -+ #define DICTKEY_UNREF \ -+ if (bytes != NULL) \ -+ Py_XDECREF(bytes); -+ -+ #define DICTKEY_DECL PyObject *bytes = NULL; -+ - /* - * Include the code shared with if_python.c - */ - #include "if_py_both.h" - -+ #define PY3OBJ_DELETED(obj) (obj->ob_base.ob_refcnt<=0) -+ - static void - call_PyObject_Free(void *p) - { -*************** -*** 506,511 **** ---- 601,608 ---- - static Py_ssize_t RangeStart; - static Py_ssize_t RangeEnd; - -+ static PyObject *globals; -+ - static int PythonIO_Init(void); - static void PythonIO_Fini(void); - PyMODINIT_FUNC Py3Init_vim(void); -*************** -*** 514,521 **** - * 1. Python interpreter main program. - */ - -- static int py3initialised = 0; -- - static PyGILState_STATE pygilstate = PyGILState_UNLOCKED; - - void ---- 611,616 ---- -*************** -*** 593,598 **** ---- 688,695 ---- - - PyImport_AppendInittab("vim", Py3Init_vim); - -+ globals = PyModule_GetDict(PyImport_AddModule("__main__")); -+ - /* Remove the element from sys.path that was added because of our - * argv[0] value in Py3Init_vim(). Previously we used an empty - * string, but dependinding on the OS we then get an empty entry or -*************** -*** 629,635 **** - * External interface - */ - static void -! DoPy3Command(exarg_T *eap, const char *cmd) - { - #if defined(MACOS) && !defined(MACOS_X_UNIX) - GrafPtr oldPort; ---- 726,732 ---- - * External interface - */ - static void -! DoPy3Command(exarg_T *eap, const char *cmd, typval_T *rettv) - { - #if defined(MACOS) && !defined(MACOS_X_UNIX) - GrafPtr oldPort; -*************** -*** 649,656 **** - if (Python3_Init()) - goto theend; - -! RangeStart = eap->line1; -! RangeEnd = eap->line2; - Python_Release_Vim(); /* leave vim */ - - #if defined(HAVE_LOCALE_H) || defined(X_LOCALE) ---- 746,761 ---- - if (Python3_Init()) - goto theend; - -! if (rettv == NULL) -! { -! RangeStart = eap->line1; -! RangeEnd = eap->line2; -! } -! else -! { -! RangeStart = (PyInt) curwin->w_cursor.lnum; -! RangeEnd = RangeStart; -! } - Python_Release_Vim(); /* leave vim */ - - #if defined(HAVE_LOCALE_H) || defined(X_LOCALE) -*************** -*** 674,680 **** - (char *)ENC_OPT, CODEC_ERROR_HANDLER); - cmdbytes = PyUnicode_AsEncodedString(cmdstr, "utf-8", CODEC_ERROR_HANDLER); - Py_XDECREF(cmdstr); -! PyRun_SimpleString(PyBytes_AsString(cmdbytes)); - Py_XDECREF(cmdbytes); - - PyGILState_Release(pygilstate); ---- 779,802 ---- - (char *)ENC_OPT, CODEC_ERROR_HANDLER); - cmdbytes = PyUnicode_AsEncodedString(cmdstr, "utf-8", CODEC_ERROR_HANDLER); - Py_XDECREF(cmdstr); -! if (rettv == NULL) -! PyRun_SimpleString(PyBytes_AsString(cmdbytes)); -! else -! { -! PyObject *r; -! -! r = PyRun_String(PyBytes_AsString(cmdbytes), Py_eval_input, -! globals, globals); -! if (r == NULL) -! EMSG(_("E860: Eval did not return a valid python 3 object")); -! else -! { -! if (ConvertFromPyObject(r, rettv) == -1) -! EMSG(_("E861: Failed to convert returned python 3 object to vim value")); -! Py_DECREF(r); -! } -! PyErr_Clear(); -! } - Py_XDECREF(cmdbytes); - - PyGILState_Release(pygilstate); -*************** -*** 709,717 **** - if (!eap->skip) - { - if (script == NULL) -! DoPy3Command(eap, (char *)eap->arg); - else -! DoPy3Command(eap, (char *)script); - } - vim_free(script); - } ---- 831,839 ---- - if (!eap->skip) - { - if (script == NULL) -! DoPy3Command(eap, (char *)eap->arg, NULL); - else -! DoPy3Command(eap, (char *)script, NULL); - } - vim_free(script); - } -*************** -*** 772,778 **** - - - /* Execute the file */ -! DoPy3Command(eap, buffer); - } - - /****************************************************** ---- 894,900 ---- - - - /* Execute the file */ -! DoPy3Command(eap, buffer, NULL); - } - - /****************************************************** -*************** -*** 802,815 **** - if (PyUnicode_Check(nameobj)) - name = _PyUnicode_AsString(nameobj); - -! if (val == NULL) { - PyErr_SetString(PyExc_AttributeError, _("can't delete OutputObject attributes")); - return -1; - } - - if (strcmp(name, "softspace") == 0) - { -! if (!PyLong_Check(val)) { - PyErr_SetString(PyExc_TypeError, _("softspace must be an integer")); - return -1; - } ---- 924,939 ---- - if (PyUnicode_Check(nameobj)) - name = _PyUnicode_AsString(nameobj); - -! if (val == NULL) -! { - PyErr_SetString(PyExc_AttributeError, _("can't delete OutputObject attributes")); - return -1; - } - - if (strcmp(name, "softspace") == 0) - { -! if (!PyLong_Check(val)) -! { - PyErr_SetString(PyExc_TypeError, _("softspace must be an integer")); - return -1; - } -*************** -*** 1030,1049 **** - static PyObject * - BufferSubscript(PyObject *self, PyObject* idx) - { -! if (PyLong_Check(idx)) { - long _idx = PyLong_AsLong(idx); - return BufferItem(self,_idx); -! } else if (PySlice_Check(idx)) { - Py_ssize_t start, stop, step, slicelen; - - if (PySlice_GetIndicesEx((PyObject *)idx, - (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count+1, - &start, &stop, -! &step, &slicelen) < 0) { - return NULL; - } - return BufferSlice(self, start, stop); -! } else { - PyErr_SetString(PyExc_IndexError, "Index must be int or slice"); - return NULL; - } ---- 1154,1178 ---- - static PyObject * - BufferSubscript(PyObject *self, PyObject* idx) - { -! if (PyLong_Check(idx)) -! { - long _idx = PyLong_AsLong(idx); - return BufferItem(self,_idx); -! } else if (PySlice_Check(idx)) -! { - Py_ssize_t start, stop, step, slicelen; - - if (PySlice_GetIndicesEx((PyObject *)idx, - (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count+1, - &start, &stop, -! &step, &slicelen) < 0) -! { - return NULL; - } - return BufferSlice(self, start, stop); -! } -! else -! { - PyErr_SetString(PyExc_IndexError, "Index must be int or slice"); - return NULL; - } -*************** -*** 1052,1075 **** - static Py_ssize_t - BufferAsSubscript(PyObject *self, PyObject* idx, PyObject* val) - { -! if (PyLong_Check(idx)) { - long n = PyLong_AsLong(idx); - return RBAsItem((BufferObject *)(self), n, val, 1, - (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count, - NULL); -! } else if (PySlice_Check(idx)) { - Py_ssize_t start, stop, step, slicelen; - - if (PySlice_GetIndicesEx((PyObject *)idx, - (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count+1, - &start, &stop, -! &step, &slicelen) < 0) { - return -1; - } - return RBAsSlice((BufferObject *)(self), start, stop, val, 1, - (PyInt)((BufferObject *)(self))->buf->b_ml.ml_line_count, - NULL); -! } else { - PyErr_SetString(PyExc_IndexError, "Index must be int or slice"); - return -1; - } ---- 1181,1209 ---- - static Py_ssize_t - BufferAsSubscript(PyObject *self, PyObject* idx, PyObject* val) - { -! if (PyLong_Check(idx)) -! { - long n = PyLong_AsLong(idx); - return RBAsItem((BufferObject *)(self), n, val, 1, - (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count, - NULL); -! } else if (PySlice_Check(idx)) -! { - Py_ssize_t start, stop, step, slicelen; - - if (PySlice_GetIndicesEx((PyObject *)idx, - (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count+1, - &start, &stop, -! &step, &slicelen) < 0) -! { - return -1; - } - return RBAsSlice((BufferObject *)(self), start, stop, val, 1, - (PyInt)((BufferObject *)(self))->buf->b_ml.ml_line_count, - NULL); -! } -! else -! { - PyErr_SetString(PyExc_IndexError, "Index must be int or slice"); - return -1; - } -*************** -*** 1142,1161 **** - static PyObject * - RangeSubscript(PyObject *self, PyObject* idx) - { -! if (PyLong_Check(idx)) { - long _idx = PyLong_AsLong(idx); - return RangeItem(self,_idx); -! } else if (PySlice_Check(idx)) { - Py_ssize_t start, stop, step, slicelen; - - if (PySlice_GetIndicesEx((PyObject *)idx, - ((RangeObject *)(self))->end-((RangeObject *)(self))->start+1, - &start, &stop, -! &step, &slicelen) < 0) { - return NULL; - } - return RangeSlice(self, start, stop); -! } else { - PyErr_SetString(PyExc_IndexError, "Index must be int or slice"); - return NULL; - } ---- 1276,1300 ---- - static PyObject * - RangeSubscript(PyObject *self, PyObject* idx) - { -! if (PyLong_Check(idx)) -! { - long _idx = PyLong_AsLong(idx); - return RangeItem(self,_idx); -! } else if (PySlice_Check(idx)) -! { - Py_ssize_t start, stop, step, slicelen; - - if (PySlice_GetIndicesEx((PyObject *)idx, - ((RangeObject *)(self))->end-((RangeObject *)(self))->start+1, - &start, &stop, -! &step, &slicelen) < 0) -! { - return NULL; - } - return RangeSlice(self, start, stop); -! } -! else -! { - PyErr_SetString(PyExc_IndexError, "Index must be int or slice"); - return NULL; - } -*************** -*** 1164,1183 **** - static Py_ssize_t - RangeAsSubscript(PyObject *self, PyObject *idx, PyObject *val) - { -! if (PyLong_Check(idx)) { - long n = PyLong_AsLong(idx); - return RangeAsItem(self, n, val); -! } else if (PySlice_Check(idx)) { - Py_ssize_t start, stop, step, slicelen; - - if (PySlice_GetIndicesEx((PyObject *)idx, - ((RangeObject *)(self))->end-((RangeObject *)(self))->start+1, - &start, &stop, -! &step, &slicelen) < 0) { - return -1; - } - return RangeAsSlice(self, start, stop, val); -! } else { - PyErr_SetString(PyExc_IndexError, "Index must be int or slice"); - return -1; - } ---- 1303,1327 ---- - static Py_ssize_t - RangeAsSubscript(PyObject *self, PyObject *idx, PyObject *val) - { -! if (PyLong_Check(idx)) -! { - long n = PyLong_AsLong(idx); - return RangeAsItem(self, n, val); -! } else if (PySlice_Check(idx)) -! { - Py_ssize_t start, stop, step, slicelen; - - if (PySlice_GetIndicesEx((PyObject *)idx, - ((RangeObject *)(self))->end-((RangeObject *)(self))->start+1, - &start, &stop, -! &step, &slicelen) < 0) -! { - return -1; - } - return RangeAsSlice(self, start, stop, val); -! } -! else -! { - PyErr_SetString(PyExc_IndexError, "Index must be int or slice"); - return -1; - } -*************** -*** 1390,1395 **** ---- 1534,1680 ---- - } - } - -+ /* Dictionary object - Definitions -+ */ -+ -+ static PyInt DictionaryLength(PyObject *); -+ -+ static PyMappingMethods DictionaryAsMapping = { -+ /* mp_length */ (lenfunc) DictionaryLength, -+ /* mp_subscript */ (binaryfunc) DictionaryItem, -+ /* mp_ass_subscript */ (objobjargproc) DictionaryAssItem, -+ }; -+ -+ static PyTypeObject DictionaryType; -+ -+ static void -+ DictionaryDestructor(PyObject *self) -+ { -+ DictionaryObject *this = (DictionaryObject *)(self); -+ -+ pyll_remove(&this->ref, &lastdict); -+ dict_unref(this->dict); -+ -+ Py_TYPE(self)->tp_free((PyObject*)self); -+ } -+ -+ /* List object - Definitions -+ */ -+ -+ static PyInt ListLength(PyObject *); -+ static PyObject *ListItem(PyObject *, Py_ssize_t); -+ -+ static PySequenceMethods ListAsSeq = { -+ (lenfunc) ListLength, /* sq_length, len(x) */ -+ (binaryfunc) 0, /* RangeConcat, sq_concat, x+y */ -+ (ssizeargfunc) 0, /* RangeRepeat, sq_repeat, x*n */ -+ (ssizeargfunc) ListItem, /* sq_item, x[i] */ -+ (void *) 0, /* was_sq_slice, x[i:j] */ -+ (ssizeobjargproc) ListAssItem, /* sq_as_item, x[i]=v */ -+ (void *) 0, /* was_sq_ass_slice, x[i:j]=v */ -+ 0, /* sq_contains */ -+ (binaryfunc) ListConcatInPlace,/* sq_inplace_concat */ -+ 0, /* sq_inplace_repeat */ -+ }; -+ -+ static PyObject *ListSubscript(PyObject *, PyObject *); -+ static Py_ssize_t ListAsSubscript(PyObject *, PyObject *, PyObject *); -+ -+ static PyMappingMethods ListAsMapping = { -+ /* mp_length */ (lenfunc) ListLength, -+ /* mp_subscript */ (binaryfunc) ListSubscript, -+ /* mp_ass_subscript */ (objobjargproc) ListAsSubscript, -+ }; -+ -+ static PyTypeObject ListType; -+ -+ static PyObject * -+ ListSubscript(PyObject *self, PyObject* idxObject) -+ { -+ if (PyLong_Check(idxObject)) -+ { -+ long idx = PyLong_AsLong(idxObject); -+ return ListItem(self, idx); -+ } -+ else if (PySlice_Check(idxObject)) -+ { -+ Py_ssize_t start, stop, step, slicelen; -+ -+ if (PySlice_GetIndicesEx(idxObject, ListLength(self), &start, &stop, -+ &step, &slicelen) < 0) -+ return NULL; -+ return ListSlice(self, start, stop); -+ } -+ else -+ { -+ PyErr_SetString(PyExc_IndexError, "Index must be int or slice"); -+ return NULL; -+ } -+ } -+ -+ static Py_ssize_t -+ ListAsSubscript(PyObject *self, PyObject *idxObject, PyObject *obj) -+ { -+ if (PyLong_Check(idxObject)) -+ { -+ long idx = PyLong_AsLong(idxObject); -+ return ListAssItem(self, idx, obj); -+ } -+ else if (PySlice_Check(idxObject)) -+ { -+ Py_ssize_t start, stop, step, slicelen; -+ -+ if (PySlice_GetIndicesEx(idxObject, ListLength(self), &start, &stop, -+ &step, &slicelen) < 0) -+ return -1; -+ return ListAssSlice(self, start, stop, obj); -+ } -+ else -+ { -+ PyErr_SetString(PyExc_IndexError, "Index must be int or slice"); -+ return -1; -+ } -+ } -+ -+ static void -+ ListDestructor(PyObject *self) -+ { -+ ListObject *this = (ListObject *)(self); -+ -+ pyll_remove(&this->ref, &lastlist); -+ list_unref(this->list); -+ -+ Py_TYPE(self)->tp_free((PyObject*)self); -+ } -+ -+ /* Function object - Definitions -+ */ -+ -+ static void -+ FunctionDestructor(PyObject *self) -+ { -+ FunctionObject *this = (FunctionObject *) (self); -+ -+ func_unref(this->name); -+ PyMem_Del(this->name); -+ -+ Py_TYPE(self)->tp_free((PyObject*)self); -+ } -+ -+ static PyObject * -+ FunctionGetattro(PyObject *self, PyObject *nameobj) -+ { -+ FunctionObject *this = (FunctionObject *)(self); -+ char *name = ""; -+ if (PyUnicode_Check(nameobj)) -+ name = _PyUnicode_AsString(nameobj); -+ -+ if (strcmp(name, "name") == 0) -+ return PyUnicode_FromString((char *)(this->name)); -+ -+ return PyObject_GenericGetAttr(self, nameobj); -+ } -+ - /* External interface - */ - -*************** -*** 1449,1454 **** ---- 1734,1742 ---- - PyType_Ready(&BufListType); - PyType_Ready(&WinListType); - PyType_Ready(&CurrentType); -+ PyType_Ready(&DictionaryType); -+ PyType_Ready(&ListType); -+ PyType_Ready(&FunctionType); - - /* Set sys.argv[] to avoid a crash in warn(). */ - PySys_SetArgv(1, argv); -*************** -*** 1517,1522 **** ---- 1805,1828 ---- - return result; - } - -+ void -+ do_py3eval (char_u *str, typval_T *rettv) -+ { -+ DoPy3Command(NULL, (char *) str, rettv); -+ switch(rettv->v_type) -+ { -+ case VAR_DICT: ++rettv->vval.v_dict->dv_refcount; break; -+ case VAR_LIST: ++rettv->vval.v_list->lv_refcount; break; -+ case VAR_FUNC: func_ref(rettv->vval.v_string); break; -+ } -+ } -+ -+ void -+ set_ref_in_python3 (int copyID) -+ { -+ set_ref_in_py(copyID); -+ } -+ - static void - init_structs(void) - { -*************** -*** 1598,1603 **** ---- 1904,1938 ---- - CurrentType.tp_flags = Py_TPFLAGS_DEFAULT; - CurrentType.tp_doc = "vim current object"; - -+ vim_memset(&DictionaryType, 0, sizeof(DictionaryType)); -+ DictionaryType.tp_name = "vim.dictionary"; -+ DictionaryType.tp_basicsize = sizeof(DictionaryObject); -+ DictionaryType.tp_dealloc = DictionaryDestructor; -+ DictionaryType.tp_as_mapping = &DictionaryAsMapping; -+ DictionaryType.tp_flags = Py_TPFLAGS_DEFAULT; -+ DictionaryType.tp_doc = "dictionary pushing modifications to vim structure"; -+ DictionaryType.tp_methods = DictionaryMethods; -+ -+ vim_memset(&ListType, 0, sizeof(ListType)); -+ ListType.tp_name = "vim.list"; -+ ListType.tp_dealloc = ListDestructor; -+ ListType.tp_basicsize = sizeof(ListObject); -+ ListType.tp_as_sequence = &ListAsSeq; -+ ListType.tp_as_mapping = &ListAsMapping; -+ ListType.tp_flags = Py_TPFLAGS_DEFAULT; -+ ListType.tp_doc = "list pushing modifications to vim structure"; -+ ListType.tp_methods = ListMethods; -+ -+ vim_memset(&FunctionType, 0, sizeof(FunctionType)); -+ FunctionType.tp_name = "vim.list"; -+ FunctionType.tp_basicsize = sizeof(FunctionObject); -+ FunctionType.tp_getattro = FunctionGetattro; -+ FunctionType.tp_dealloc = FunctionDestructor; -+ FunctionType.tp_call = FunctionCall; -+ FunctionType.tp_flags = Py_TPFLAGS_DEFAULT; -+ FunctionType.tp_doc = "object that calls vim function"; -+ FunctionType.tp_methods = FunctionMethods; -+ - vim_memset(&vimmodule, 0, sizeof(vimmodule)); - vimmodule.m_name = "vim"; - vimmodule.m_doc = vim_module_doc; -*** ../vim-7.3.568/src/proto/eval.pro 2011-09-14 16:52:02.000000000 +0200 ---- src/proto/eval.pro 2012-06-20 18:20:28.000000000 +0200 -*************** -*** 46,57 **** ---- 46,66 ---- - list_T *list_alloc __ARGS((void)); - void list_unref __ARGS((list_T *l)); - void list_free __ARGS((list_T *l, int recurse)); -+ listitem_T *listitem_alloc __ARGS((void)); -+ void listitem_remove __ARGS((list_T *l, listitem_T *item)); - dictitem_T *dict_lookup __ARGS((hashitem_T *hi)); -+ listitem_T *list_find __ARGS((list_T *l, long n)); - char_u *list_find_str __ARGS((list_T *l, long idx)); -+ void list_append __ARGS((list_T *l, listitem_T *item)); - int list_append_tv __ARGS((list_T *l, typval_T *tv)); - int list_append_dict __ARGS((list_T *list, dict_T *dict)); - int list_append_string __ARGS((list_T *l, char_u *str, int len)); -+ int list_insert_tv __ARGS((list_T *l, typval_T *tv, listitem_T *item)); -+ void list_remove __ARGS((list_T *l, listitem_T *item, listitem_T *item2)); - int garbage_collect __ARGS((void)); -+ void set_ref_in_ht __ARGS((hashtab_T *ht, int copyID)); -+ void set_ref_in_list __ARGS((list_T *l, int copyID)); -+ void set_ref_in_item __ARGS((typval_T *tv, int copyID)); - dict_T *dict_alloc __ARGS((void)); - void dict_unref __ARGS((dict_T *d)); - dictitem_T *dictitem_alloc __ARGS((char_u *key)); -*************** -*** 64,69 **** ---- 73,79 ---- - long get_dict_number __ARGS((dict_T *d, char_u *key)); - char_u *get_function_name __ARGS((expand_T *xp, int idx)); - char_u *get_expr_name __ARGS((expand_T *xp, int idx)); -+ int func_call __ARGS((char_u *name, typval_T *args, dict_T *selfdict, typval_T *rettv)); - long do_searchpair __ARGS((char_u *spat, char_u *mpat, char_u *epat, int dir, char_u *skip, int flags, pos_T *match_pos, linenr_T lnum_stop, long time_limit)); - void set_vim_var_nr __ARGS((int idx, long val)); - long get_vim_var_nr __ARGS((int idx)); -*************** -*** 94,99 **** ---- 104,111 ---- - void func_dump_profile __ARGS((FILE *fd)); - char_u *get_user_func_name __ARGS((expand_T *xp, int idx)); - void ex_delfunction __ARGS((exarg_T *eap)); -+ void func_unref __ARGS((char_u *name)); -+ void func_ref __ARGS((char_u *name)); - void ex_return __ARGS((exarg_T *eap)); - int do_return __ARGS((exarg_T *eap, int reanimate, int is_cmd, void *rettv)); - void discard_pending_return __ARGS((void *rettv)); -*** ../vim-7.3.568/src/proto/if_python.pro 2010-08-15 21:57:28.000000000 +0200 ---- src/proto/if_python.pro 2012-06-20 18:23:06.000000000 +0200 -*************** -*** 6,9 **** ---- 6,11 ---- - void ex_pyfile __ARGS((exarg_T *eap)); - void python_buffer_free __ARGS((buf_T *buf)); - void python_window_free __ARGS((win_T *win)); -+ void do_pyeval __ARGS((char_u *str, typval_T *rettv)); -+ void set_ref_in_python __ARGS((int copyID)); - /* vim: set ft=c : */ -*** ../vim-7.3.568/src/proto/if_python3.pro 2010-08-15 21:57:28.000000000 +0200 ---- src/proto/if_python3.pro 2012-06-20 18:34:26.000000000 +0200 -*************** -*** 6,9 **** ---- 6,11 ---- - void ex_py3file __ARGS((exarg_T *eap)); - void python3_buffer_free __ARGS((buf_T *buf)); - void python3_window_free __ARGS((win_T *win)); -+ void do_py3eval __ARGS((char_u *str, typval_T *rettv)); -+ void set_ref_in_python3 __ARGS((int copyID)); - /* vim: set ft=c : */ -*** ../vim-7.3.568/src/testdir/Make_amiga.mak 2012-04-05 16:56:38.000000000 +0200 ---- src/testdir/Make_amiga.mak 2012-06-20 18:43:05.000000000 +0200 -*************** -*** 14,19 **** ---- 14,20 ---- - # test27 can't edit file with "*" - # test52 only for Win32 - # test85 no Lua interface -+ # test86, 87 no Python interface - - SCRIPTS = test1.out test3.out test4.out test5.out test6.out \ - test7.out test8.out test9.out \ -*** ../vim-7.3.568/src/testdir/Make_dos.mak 2012-04-13 19:11:16.000000000 +0200 ---- src/testdir/Make_dos.mak 2012-06-20 18:43:45.000000000 +0200 -*************** -*** 30,36 **** - test68.out test69.out test71.out test72.out test73.out \ - test74.out test75.out test76.out test77.out test78.out \ - test79.out test80.out test81.out test82.out test83.out \ -! test84.out test85.out - - SCRIPTS32 = test50.out test70.out - ---- 30,36 ---- - test68.out test69.out test71.out test72.out test73.out \ - test74.out test75.out test76.out test77.out test78.out \ - test79.out test80.out test81.out test82.out test83.out \ -! test84.out test85.out test86.out test87.out - - SCRIPTS32 = test50.out test70.out - -*** ../vim-7.3.568/src/testdir/Make_ming.mak 2012-04-13 19:11:16.000000000 +0200 ---- src/testdir/Make_ming.mak 2012-06-20 18:44:12.000000000 +0200 -*************** -*** 50,56 **** - test68.out test69.out test71.out test72.out test73.out \ - test74.out test75.out test76.out test77.out test78.out \ - test79.out test80.out test81.out test82.out test83.out \ -! test84.out test85.out - - SCRIPTS32 = test50.out test70.out - ---- 50,56 ---- - test68.out test69.out test71.out test72.out test73.out \ - test74.out test75.out test76.out test77.out test78.out \ - test79.out test80.out test81.out test82.out test83.out \ -! test84.out test85.out test86.out test87.out - - SCRIPTS32 = test50.out test70.out - -*** ../vim-7.3.568/src/testdir/Make_os2.mak 2012-04-05 16:56:38.000000000 +0200 ---- src/testdir/Make_os2.mak 2012-06-20 18:44:32.000000000 +0200 -*************** -*** 14,19 **** ---- 14,20 ---- - # test27 can't edit file with "*" in file name - # test52 only for Win32 - # test85 no Lua interface -+ # test86, 87 no Python interface - - SCRIPTS = test1.out test3.out test4.out test5.out test6.out \ - test7.out test8.out test9.out \ -*** ../vim-7.3.568/src/testdir/Makefile 2012-04-05 16:56:38.000000000 +0200 ---- src/testdir/Makefile 2012-06-29 11:56:00.000000000 +0200 -*************** -*** 27,33 **** - test69.out test70.out test71.out test72.out test73.out \ - test74.out test75.out test76.out test77.out test78.out \ - test79.out test80.out test81.out test82.out test83.out \ -! test84.out test85.out - - SCRIPTS_GUI = test16.out - ---- 27,33 ---- - test69.out test70.out test71.out test72.out test73.out \ - test74.out test75.out test76.out test77.out test78.out \ - test79.out test80.out test81.out test82.out test83.out \ -! test84.out test85.out test86.out test87.out - - SCRIPTS_GUI = test16.out - -*** ../vim-7.3.568/src/testdir/test86.in 2012-06-20 20:19:31.000000000 +0200 ---- src/testdir/test86.in 2012-06-20 18:01:02.000000000 +0200 -*************** -*** 0 **** ---- 1,211 ---- -+ Tests for various python features. vim: set ft=vim : -+ -+ STARTTEST -+ :so small.vim -+ :if !has('python') | e! test.ok | wq! test.out | endif -+ :py import vim -+ :fun Test() -+ :let l = [] -+ :py l=vim.bindeval('l') -+ :py f=vim.bindeval('function("strlen")') -+ :" Extending List directly with different types -+ :py l.extend([1, "as'd", [1, 2, f, {'a': 1}]]) -+ :$put =string(l) -+ :$put =string(l[-1]) -+ :try -+ : $put =string(l[-4]) -+ :catch -+ : $put =v:exception[:13] -+ :endtry -+ :" List assignment -+ :py l[0]=0 -+ :$put =string(l) -+ :py l[-2]=f -+ :$put =string(l) -+ :" -+ :" Extending Dictionary directly with different types -+ :let d = {} -+ :py d=vim.bindeval('d') -+ :py d['1']='asd' -+ :py d['b']=[1, 2, f] -+ :py d['-1']={'a': 1} -+ :let dkeys = [] -+ :py dk=vim.bindeval('dkeys') -+ :py dkeys=d.keys() -+ :py dkeys.sort() -+ :py dk.extend(dkeys) -+ :$put =string(dkeys) -+ :for [key, val] in sort(items(d)) -+ : $put =string(key) . ' : ' . string(val) -+ : unlet key val -+ :endfor -+ :" -+ :" removing items with del -+ :py del l[2] -+ :$put =string(l) -+ :let l = range(8) -+ :py l=vim.bindeval('l') -+ :try -+ : py del l[:3] -+ : py del l[1:] -+ :catch -+ : $put =v:exception -+ :endtry -+ :$put =string(l) -+ :" -+ :py del d['-1'] -+ :$put =string(d) -+ :" -+ :" removing items out of range: silently skip items that don't exist -+ :let l = [0, 1, 2, 3] -+ :py l=vim.bindeval('l') -+ :" The following two ranges delete nothing as they match empty list: -+ :py del l[2:1] -+ :$put =string(l) -+ :py del l[2:2] -+ :$put =string(l) -+ :py del l[2:3] -+ :$put =string(l) -+ :let l = [0, 1, 2, 3] -+ :py l=vim.bindeval('l') -+ :py del l[2:4] -+ :$put =string(l) -+ :let l = [0, 1, 2, 3] -+ :py l=vim.bindeval('l') -+ :py del l[2:5] -+ :$put =string(l) -+ :let l = [0, 1, 2, 3] -+ :py l=vim.bindeval('l') -+ :py del l[2:6] -+ :$put =string(l) -+ :let l = [0, 1, 2, 3] -+ :py l=vim.bindeval('l') -+ :" The following two ranges delete nothing as they match empty list: -+ :py del l[-1:2] -+ :$put =string(l) -+ :py del l[-2:2] -+ :$put =string(l) -+ :py del l[-3:2] -+ :$put =string(l) -+ :let l = [0, 1, 2, 3] -+ :py l=vim.bindeval('l') -+ :py del l[-4:2] -+ :$put =string(l) -+ :let l = [0, 1, 2, 3] -+ :py l=vim.bindeval('l') -+ :py del l[-5:2] -+ :$put =string(l) -+ :let l = [0, 1, 2, 3] -+ :py l=vim.bindeval('l') -+ :py del l[-6:2] -+ :$put =string(l) -+ :" -+ :" Slice assignment to a list -+ :let l = [0, 1, 2, 3] -+ :py l=vim.bindeval('l') -+ :py l[0:0]=['a'] -+ :$put =string(l) -+ :let l = [0, 1, 2, 3] -+ :py l=vim.bindeval('l') -+ :py l[1:2]=['b'] -+ :$put =string(l) -+ :let l = [0, 1, 2, 3] -+ :py l=vim.bindeval('l') -+ :py l[2:4]=['c'] -+ :$put =string(l) -+ :let l = [0, 1, 2, 3] -+ :py l=vim.bindeval('l') -+ :py l[4:4]=['d'] -+ :$put =string(l) -+ :let l = [0, 1, 2, 3] -+ :py l=vim.bindeval('l') -+ :py l[-1:2]=['e'] -+ :$put =string(l) -+ :let l = [0, 1, 2, 3] -+ :py l=vim.bindeval('l') -+ :py l[-10:2]=['f'] -+ :$put =string(l) -+ :let l = [0, 1, 2, 3] -+ :py l=vim.bindeval('l') -+ :py l[2:-10]=['g'] -+ :$put =string(l) -+ :let l = [] -+ :py l=vim.bindeval('l') -+ :py l[0:0]=['h'] -+ :$put =string(l) -+ :" -+ :" Locked variables -+ :let l = [0, 1, 2, 3] -+ :py l=vim.bindeval('l') -+ :lockvar! l -+ :py l[2]='i' -+ :$put =string(l) -+ :unlockvar! l -+ :" -+ :" Function calls -+ :function New(...) -+ :return ['NewStart']+a:000+['NewEnd'] -+ :endfunction -+ :function DictNew(...) dict -+ :return ['DictNewStart']+a:000+['DictNewEnd', self] -+ :endfunction -+ :let l=[function('New'), function('DictNew')] -+ :py l=vim.bindeval('l') -+ :py l.extend(list(l[0](1, 2, 3))) -+ :$put =string(l) -+ :py l.extend(list(l[1](1, 2, 3, self={'a': 'b'}))) -+ :$put =string(l) -+ :py l.extend([l[0].name]) -+ :$put =string(l) -+ :try -+ : py l[1](1, 2, 3) -+ :catch -+ : $put =v:exception[:16] -+ :endtry -+ :delfunction New -+ :try -+ : py l[0](1, 2, 3) -+ :catch -+ : $put =v:exception[:16] -+ :endtry -+ :if has('float') -+ : let l=[0.0] -+ : py l=vim.bindeval('l') -+ : py l.extend([0.0]) -+ : $put =string(l) -+ :else -+ : $put ='[0.0, 0.0]' -+ :endif -+ :" -+ :" pyeval() -+ :let l=pyeval('range(3)') -+ :$put =string(l) -+ :let d=pyeval('{"a": "b", "c": 1, "d": ["e"]}') -+ :$put =sort(items(d)) -+ :try -+ : let undef=pyeval('undefined_name') -+ :catch -+ : $put =v:exception[:13] -+ :endtry -+ :try -+ : let vim=pyeval('vim') -+ :catch -+ : $put =v:exception[:13] -+ :endtry -+ :if has('float') -+ : let f=pyeval('0.0') -+ : $put =string(f) -+ :else -+ : $put ='0.0' -+ :endif -+ :endfun -+ :" -+ :call Test() -+ :" -+ :delfunc Test -+ :call garbagecollect(1) -+ :" -+ :/^start:/,$wq! test.out -+ ENDTEST -+ -+ start: -*** ../vim-7.3.568/src/testdir/test86.ok 2012-06-20 20:19:31.000000000 +0200 ---- src/testdir/test86.ok 2012-06-20 18:01:02.000000000 +0200 -*************** -*** 0 **** ---- 1,47 ---- -+ start: -+ [1, 'as''d', [1, 2, function('strlen'), {'a': 1}]] -+ [1, 2, function('strlen'), {'a': 1}] -+ Vim(put):E684: -+ [0, 'as''d', [1, 2, function('strlen'), {'a': 1}]] -+ [0, function('strlen'), [1, 2, function('strlen'), {'a': 1}]] -+ ['-1', '1', 'b'] -+ '-1' : {'a': 1} -+ '1' : 'asd' -+ 'b' : [1, 2, function('strlen')] -+ [0, function('strlen')] -+ [3] -+ {'1': 'asd', 'b': [1, 2, function('strlen')]} -+ [0, 1, 2, 3] -+ [0, 1, 2, 3] -+ [0, 1, 3] -+ [0, 1] -+ [0, 1] -+ [0, 1] -+ [0, 1, 2, 3] -+ [0, 1, 2, 3] -+ [0, 2, 3] -+ [2, 3] -+ [2, 3] -+ [2, 3] -+ ['a', 0, 1, 2, 3] -+ [0, 'b', 2, 3] -+ [0, 1, 'c'] -+ [0, 1, 2, 3, 'd'] -+ [0, 1, 2, 'e', 3] -+ ['f', 2, 3] -+ [0, 1, 'g', 2, 3] -+ ['h'] -+ [0, 1, 2, 3] -+ [function('New'), function('DictNew'), 'NewStart', 1, 2, 3, 'NewEnd'] -+ [function('New'), function('DictNew'), 'NewStart', 1, 2, 3, 'NewEnd', 'DictNewStart', 1, 2, 3, 'DictNewEnd', {'a': 'b'}] -+ [function('New'), function('DictNew'), 'NewStart', 1, 2, 3, 'NewEnd', 'DictNewStart', 1, 2, 3, 'DictNewEnd', {'a': 'b'}, 'New'] -+ Vim(python):E725: -+ Vim(python):E117: -+ [0.0, 0.0] -+ [0, 1, 2] -+ ['a', 'b'] -+ ['c', 1] -+ ['d', ['e']] -+ Vim(let):E858: -+ Vim(let):E859: -+ 0.0 -*** ../vim-7.3.568/src/testdir/test87.in 2012-06-20 20:19:31.000000000 +0200 ---- src/testdir/test87.in 2012-06-20 18:01:02.000000000 +0200 -*************** -*** 0 **** ---- 1,211 ---- -+ Tests for various python features. vim: set ft=vim : -+ -+ STARTTEST -+ :so small.vim -+ :if !has('python3') | e! test.ok | wq! test.out | endif -+ :py3 import vim -+ :fun Test() -+ :let l = [] -+ :py3 l=vim.bindeval('l') -+ :py3 f=vim.bindeval('function("strlen")') -+ :" Extending List directly with different types -+ :py3 l+=[1, "as'd", [1, 2, f, {'a': 1}]] -+ :$put =string(l) -+ :$put =string(l[-1]) -+ :try -+ : $put =string(l[-4]) -+ :catch -+ : $put =v:exception[:13] -+ :endtry -+ :" List assignment -+ :py3 l[0]=0 -+ :$put =string(l) -+ :py3 l[-2]=f -+ :$put =string(l) -+ :" -+ :" Extending Dictionary directly with different types -+ :let d = {} -+ :py3 d=vim.bindeval('d') -+ :py3 d['1']='asd' -+ :py3 d['b']=[1, 2, f] -+ :py3 d['-1']={'a': 1} -+ :let dkeys = [] -+ :py3 dk=vim.bindeval('dkeys') -+ :py3 dkeys=d.keys() -+ :py3 dkeys.sort() -+ :py3 dk+=dkeys -+ :$put =string(dkeys) -+ :for [key, val] in sort(items(d)) -+ : $put =string(key) . ' : ' . string(val) -+ : unlet key val -+ :endfor -+ :" -+ :" removing items with del -+ :py3 del l[2] -+ :$put =string(l) -+ :let l = range(8) -+ :py3 l=vim.bindeval('l') -+ :try -+ : py3 del l[:3] -+ : py3 del l[1:] -+ :catch -+ : $put =v:exception -+ :endtry -+ :$put =string(l) -+ :" -+ :py3 del d['-1'] -+ :$put =string(d) -+ :" -+ :" removing items out of range: silently skip items that don't exist -+ :let l = [0, 1, 2, 3] -+ :py3 l=vim.bindeval('l') -+ :" The following two ranges delete nothing as they match empty list: -+ :py3 del l[2:1] -+ :$put =string(l) -+ :py3 del l[2:2] -+ :$put =string(l) -+ :py3 del l[2:3] -+ :$put =string(l) -+ :let l = [0, 1, 2, 3] -+ :py3 l=vim.bindeval('l') -+ :py3 del l[2:4] -+ :$put =string(l) -+ :let l = [0, 1, 2, 3] -+ :py3 l=vim.bindeval('l') -+ :py3 del l[2:5] -+ :$put =string(l) -+ :let l = [0, 1, 2, 3] -+ :py3 l=vim.bindeval('l') -+ :py3 del l[2:6] -+ :$put =string(l) -+ :let l = [0, 1, 2, 3] -+ :py3 l=vim.bindeval('l') -+ :" The following two ranges delete nothing as they match empty list: -+ :py3 del l[-1:2] -+ :$put =string(l) -+ :py3 del l[-2:2] -+ :$put =string(l) -+ :py3 del l[-3:2] -+ :$put =string(l) -+ :let l = [0, 1, 2, 3] -+ :py3 l=vim.bindeval('l') -+ :py3 del l[-4:2] -+ :$put =string(l) -+ :let l = [0, 1, 2, 3] -+ :py3 l=vim.bindeval('l') -+ :py3 del l[-5:2] -+ :$put =string(l) -+ :let l = [0, 1, 2, 3] -+ :py3 l=vim.bindeval('l') -+ :py3 del l[-6:2] -+ :$put =string(l) -+ :" -+ :" Slice assignment to a list -+ :let l = [0, 1, 2, 3] -+ :py3 l=vim.bindeval('l') -+ :py3 l[0:0]=['a'] -+ :$put =string(l) -+ :let l = [0, 1, 2, 3] -+ :py3 l=vim.bindeval('l') -+ :py3 l[1:2]=['b'] -+ :$put =string(l) -+ :let l = [0, 1, 2, 3] -+ :py3 l=vim.bindeval('l') -+ :py3 l[2:4]=['c'] -+ :$put =string(l) -+ :let l = [0, 1, 2, 3] -+ :py3 l=vim.bindeval('l') -+ :py3 l[4:4]=['d'] -+ :$put =string(l) -+ :let l = [0, 1, 2, 3] -+ :py3 l=vim.bindeval('l') -+ :py3 l[-1:2]=['e'] -+ :$put =string(l) -+ :let l = [0, 1, 2, 3] -+ :py3 l=vim.bindeval('l') -+ :py3 l[-10:2]=['f'] -+ :$put =string(l) -+ :let l = [0, 1, 2, 3] -+ :py3 l=vim.bindeval('l') -+ :py3 l[2:-10]=['g'] -+ :$put =string(l) -+ :let l = [] -+ :py3 l=vim.bindeval('l') -+ :py3 l[0:0]=['h'] -+ :$put =string(l) -+ :" -+ :" Locked variables -+ :let l = [0, 1, 2, 3] -+ :py3 l=vim.bindeval('l') -+ :lockvar! l -+ :py3 l[2]='i' -+ :$put =string(l) -+ :unlockvar! l -+ :" -+ :" Function calls -+ :function New(...) -+ :return ['NewStart']+a:000+['NewEnd'] -+ :endfunction -+ :function DictNew(...) dict -+ :return ['DictNewStart']+a:000+['DictNewEnd', self] -+ :endfunction -+ :let l=[function('New'), function('DictNew')] -+ :py3 l=vim.bindeval('l') -+ :py3 l.extend(list(l[0](1, 2, 3))) -+ :$put =string(l) -+ :py3 l.extend(list(l[1](1, 2, 3, self={'a': 'b'}))) -+ :$put =string(l) -+ :py3 l+=[l[0].name] -+ :$put =string(l) -+ :try -+ : py3 l[1](1, 2, 3) -+ :catch -+ : $put =v:exception[:13] -+ :endtry -+ :delfunction New -+ :try -+ : py3 l[0](1, 2, 3) -+ :catch -+ : $put =v:exception[:13] -+ :endtry -+ :if has('float') -+ : let l=[0.0] -+ : py3 l=vim.bindeval('l') -+ : py3 l.extend([0.0]) -+ : $put =string(l) -+ :else -+ : $put ='[0.0, 0.0]' -+ :endif -+ :" -+ :" py3eval() -+ :let l=py3eval('[0, 1, 2]') -+ :$put =string(l) -+ :let d=py3eval('{"a": "b", "c": 1, "d": ["e"]}') -+ :$put =sort(items(d)) -+ :try -+ : let undef=py3eval('undefined_name') -+ :catch -+ : $put =v:exception[:13] -+ :endtry -+ :try -+ : let vim=py3eval('vim') -+ :catch -+ : $put =v:exception[:13] -+ :endtry -+ :if has('float') -+ : let f=py3eval('0.0') -+ : $put =string(f) -+ :else -+ : $put ='0.0' -+ :endif -+ :endfun -+ :" -+ :call Test() -+ :" -+ :delfunc Test -+ :call garbagecollect(1) -+ :" -+ :/^start:/,$wq! test.out -+ ENDTEST -+ -+ start: -*** ../vim-7.3.568/src/testdir/test87.ok 2012-06-20 20:19:31.000000000 +0200 ---- src/testdir/test87.ok 2012-06-20 18:01:02.000000000 +0200 -*************** -*** 0 **** ---- 1,47 ---- -+ start: -+ [1, 'as''d', [1, 2, function('strlen'), {'a': 1}]] -+ [1, 2, function('strlen'), {'a': 1}] -+ Vim(put):E684: -+ [0, 'as''d', [1, 2, function('strlen'), {'a': 1}]] -+ [0, function('strlen'), [1, 2, function('strlen'), {'a': 1}]] -+ ['-1', '1', 'b'] -+ '-1' : {'a': 1} -+ '1' : 'asd' -+ 'b' : [1, 2, function('strlen')] -+ [0, function('strlen')] -+ [3] -+ {'1': 'asd', 'b': [1, 2, function('strlen')]} -+ [0, 1, 2, 3] -+ [0, 1, 2, 3] -+ [0, 1, 3] -+ [0, 1] -+ [0, 1] -+ [0, 1] -+ [0, 1, 2, 3] -+ [0, 1, 2, 3] -+ [0, 2, 3] -+ [2, 3] -+ [2, 3] -+ [2, 3] -+ ['a', 0, 1, 2, 3] -+ [0, 'b', 2, 3] -+ [0, 1, 'c'] -+ [0, 1, 2, 3, 'd'] -+ [0, 1, 2, 'e', 3] -+ ['f', 2, 3] -+ [0, 1, 'g', 2, 3] -+ ['h'] -+ [0, 1, 2, 3] -+ [function('New'), function('DictNew'), 'NewStart', 1, 2, 3, 'NewEnd'] -+ [function('New'), function('DictNew'), 'NewStart', 1, 2, 3, 'NewEnd', 'DictNewStart', 1, 2, 3, 'DictNewEnd', {'a': 'b'}] -+ [function('New'), function('DictNew'), 'NewStart', 1, 2, 3, 'NewEnd', 'DictNewStart', 1, 2, 3, 'DictNewEnd', {'a': 'b'}, 'New'] -+ Vim(py3):E725: -+ Vim(py3):E117: -+ [0.0, 0.0] -+ [0, 1, 2] -+ ['a', 'b'] -+ ['c', 1] -+ ['d', ['e']] -+ Vim(let):E860: -+ Vim(let):E861: -+ 0.0 -*** ../vim-7.3.568/src/version.c 2012-06-29 12:35:40.000000000 +0200 ---- src/version.c 2012-06-29 12:47:03.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 569, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -69. Yahoo welcomes you with your own start page - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.570 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.570 -Problem: ":vimgrep" does not obey 'wildignore'. -Solution: Apply 'wildignore' and 'suffixes' to ":vimgrep". (Ingo Karkat) -Files: src/ex_cmds2.c, src/proto/ex_cmds2.pro, src/quickfix.c, src/spell.c - - -*** ../vim-7.3.569/src/ex_cmds2.c 2012-06-20 15:48:53.000000000 +0200 ---- src/ex_cmds2.c 2012-06-29 12:43:34.000000000 +0200 -*************** -*** 1850,1871 **** - #if defined(FEAT_QUICKFIX) || defined(FEAT_SYN_HL) || defined(PROTO) - /* - * Parse a list of arguments (file names), expand them and return in -! * "fnames[fcountp]". - * Return FAIL or OK. - */ - int -! get_arglist_exp(str, fcountp, fnamesp) - char_u *str; - int *fcountp; - char_u ***fnamesp; - { - garray_T ga; - int i; - - if (get_arglist(&ga, str) == FAIL) - return FAIL; -! i = gen_expand_wildcards(ga.ga_len, (char_u **)ga.ga_data, -! fcountp, fnamesp, EW_FILE|EW_NOTFOUND); - ga_clear(&ga); - return i; - } ---- 1850,1877 ---- - #if defined(FEAT_QUICKFIX) || defined(FEAT_SYN_HL) || defined(PROTO) - /* - * Parse a list of arguments (file names), expand them and return in -! * "fnames[fcountp]". When "wig" is TRUE, removes files matching 'wildignore'. - * Return FAIL or OK. - */ - int -! get_arglist_exp(str, fcountp, fnamesp, wig) - char_u *str; - int *fcountp; - char_u ***fnamesp; -+ int wig; - { - garray_T ga; - int i; - - if (get_arglist(&ga, str) == FAIL) - return FAIL; -! if (wig == TRUE) -! i = expand_wildcards(ga.ga_len, (char_u **)ga.ga_data, -! fcountp, fnamesp, EW_FILE|EW_NOTFOUND); -! else -! i = gen_expand_wildcards(ga.ga_len, (char_u **)ga.ga_data, -! fcountp, fnamesp, EW_FILE|EW_NOTFOUND); -! - ga_clear(&ga); - return i; - } -*** ../vim-7.3.569/src/proto/ex_cmds2.pro 2011-05-19 18:26:34.000000000 +0200 ---- src/proto/ex_cmds2.pro 2012-06-29 12:43:49.000000000 +0200 -*************** -*** 42,48 **** - int check_fname __ARGS((void)); - int buf_write_all __ARGS((buf_T *buf, int forceit)); - int get_arglist __ARGS((garray_T *gap, char_u *str)); -! int get_arglist_exp __ARGS((char_u *str, int *fcountp, char_u ***fnamesp)); - void set_arglist __ARGS((char_u *str)); - void check_arg_idx __ARGS((win_T *win)); - void ex_args __ARGS((exarg_T *eap)); ---- 42,48 ---- - int check_fname __ARGS((void)); - int buf_write_all __ARGS((buf_T *buf, int forceit)); - int get_arglist __ARGS((garray_T *gap, char_u *str)); -! int get_arglist_exp __ARGS((char_u *str, int *fcountp, char_u ***fnamesp, int wig)); - void set_arglist __ARGS((char_u *str)); - void check_arg_idx __ARGS((win_T *win)); - void ex_args __ARGS((exarg_T *eap)); -*** ../vim-7.3.569/src/quickfix.c 2012-06-01 18:34:37.000000000 +0200 ---- src/quickfix.c 2012-06-29 12:43:49.000000000 +0200 -*************** -*** 3189,3195 **** - ; - - /* parse the list of arguments */ -! if (get_arglist_exp(p, &fcount, &fnames) == FAIL) - goto theend; - if (fcount == 0) - { ---- 3189,3195 ---- - ; - - /* parse the list of arguments */ -! if (get_arglist_exp(p, &fcount, &fnames, TRUE) == FAIL) - goto theend; - if (fcount == 0) - { -*** ../vim-7.3.569/src/spell.c 2012-06-01 17:49:51.000000000 +0200 ---- src/spell.c 2012-06-29 12:43:49.000000000 +0200 -*************** -*** 8553,8559 **** - } - - /* Expand all the remaining arguments (e.g., $VIMRUNTIME). */ -! if (get_arglist_exp(arg, &fcount, &fnames) == OK) - { - mkspell(fcount, fnames, ascii, eap->forceit, FALSE); - FreeWild(fcount, fnames); ---- 8553,8559 ---- - } - - /* Expand all the remaining arguments (e.g., $VIMRUNTIME). */ -! if (get_arglist_exp(arg, &fcount, &fnames, FALSE) == OK) - { - mkspell(fcount, fnames, ascii, eap->forceit, FALSE); - FreeWild(fcount, fnames); -*** ../vim-7.3.569/src/version.c 2012-06-29 12:54:32.000000000 +0200 ---- src/version.c 2012-06-29 12:56:12.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 570, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -70. ISDN lines are added to your house on a hourly basis - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.571 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.571 -Problem: Duplicated condition. -Solution: Remove one. (Dominique Pelle) -Files: src/os_win32.c - - -*** ../vim-7.3.570/src/os_win32.c 2012-02-29 13:58:43.000000000 +0100 ---- src/os_win32.c 2012-06-29 13:10:54.000000000 +0200 -*************** -*** 308,314 **** - # ifndef GETTEXT_DLL - # define GETTEXT_DLL "libintl.dll" - # endif -! /* Dummy funcitons */ - static char *null_libintl_gettext(const char *); - static char *null_libintl_textdomain(const char *); - static char *null_libintl_bindtextdomain(const char *, const char *); ---- 308,314 ---- - # ifndef GETTEXT_DLL - # define GETTEXT_DLL "libintl.dll" - # endif -! /* Dummy functions */ - static char *null_libintl_gettext(const char *); - static char *null_libintl_textdomain(const char *); - static char *null_libintl_bindtextdomain(const char *, const char *); -*************** -*** 1409,1415 **** - - - /* -! * mch_inchar(): low-level input funcion. - * Get one or more characters from the keyboard or the mouse. - * If time == 0, do not wait for characters. - * If time == n, wait a short time for characters. ---- 1409,1415 ---- - - - /* -! * mch_inchar(): low-level input function. - * Get one or more characters from the keyboard or the mouse. - * If time == 0, do not wait for characters. - * If time == n, wait a short time for characters. -*************** -*** 3451,3464 **** - * to avoid to perform a blocking read */ - ret = PeekNamedPipe(g_hChildStd_OUT_Rd, /* pipe to query */ - NULL, /* optional buffer */ -! 0, /* buffe size */ - NULL, /* number of read bytes */ - &availableBytes, /* available bytes total */ - NULL); /* byteLeft */ - - repeatCount = 0; - /* We got real data in the pipe, read it */ -! while (ret != 0 && availableBytes > 0 && availableBytes > 0) - { - repeatCount++; - toRead = ---- 3451,3464 ---- - * to avoid to perform a blocking read */ - ret = PeekNamedPipe(g_hChildStd_OUT_Rd, /* pipe to query */ - NULL, /* optional buffer */ -! 0, /* buffer size */ - NULL, /* number of read bytes */ - &availableBytes, /* available bytes total */ - NULL); /* byteLeft */ - - repeatCount = 0; - /* We got real data in the pipe, read it */ -! while (ret != 0 && availableBytes > 0) - { - repeatCount++; - toRead = -*************** -*** 3638,3644 **** - NULL, /* Process security attributes */ - NULL, /* Thread security attributes */ - -! // this command can be litigeous, handle inheritence was - // deactivated for pending temp file, but, if we deactivate - // it, the pipes don't work for some reason. - TRUE, /* Inherit handles, first deactivated, ---- 3638,3644 ---- - NULL, /* Process security attributes */ - NULL, /* Thread security attributes */ - -! // this command can be litigious, handle inheritance was - // deactivated for pending temp file, but, if we deactivate - // it, the pipes don't work for some reason. - TRUE, /* Inherit handles, first deactivated, -*** ../vim-7.3.570/src/version.c 2012-06-29 12:57:03.000000000 +0200 ---- src/version.c 2012-06-29 13:12:31.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 571, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -71. You wonder how people walk - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.572 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.572 -Problem: Duplicate statement in if and else. (Dominique Pelle) -Solution: Remove the condition and add a TODO. -Files: src/gui_xmebw.c - - -*** ../vim-7.3.571/src/gui_xmebw.c 2010-08-15 21:57:29.000000000 +0200 ---- src/gui_xmebw.c 2012-06-29 13:17:15.000000000 +0200 -*************** -*** 375,385 **** - - XGetGeometry(dpy, pix, &root, &x, &y, &width, &height, &border, &depth); - -! if (eb->enhancedbutton.label_location == (int)XmTOP -! || eb->enhancedbutton.label_location == (int)XmBOTTOM) -! shift = eb->primitive.shadow_thickness / 2; -! else -! shift = eb->primitive.shadow_thickness / 2; - - if (shift < 1) - shift = 1; ---- 375,382 ---- - - XGetGeometry(dpy, pix, &root, &x, &y, &width, &height, &border, &depth); - -! /* TODO: does the shift depend on label_location somehow? */ -! shift = eb->primitive.shadow_thickness / 2; - - if (shift < 1) - shift = 1; -*** ../vim-7.3.571/src/version.c 2012-06-29 13:13:59.000000000 +0200 ---- src/version.c 2012-06-29 13:18:41.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 572, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -72. Somebody at IRC just mentioned a way to obtain full motion video without - a PC using a wireless protocol called NTSC, you wonder how you never - heard about it - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.573 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.573 -Problem: Using array index before bounds checking. -Solution: Swap the parts of the condition. (Dominique Pelle) -Files: src/ops.c - - -*** ../vim-7.3.572/src/ops.c 2012-06-13 17:28:51.000000000 +0200 ---- src/ops.c 2012-06-29 13:27:11.000000000 +0200 -*************** -*** 6458,6464 **** - long chars = 0; - int is_word = 0; - -! for (i = 0; line[i] && i < limit; ) - { - if (is_word) - { ---- 6458,6464 ---- - long chars = 0; - int is_word = 0; - -! for (i = 0; i < limit && line[i] != NUL; ) - { - if (is_word) - { -*** ../vim-7.3.572/src/version.c 2012-06-29 13:19:23.000000000 +0200 ---- src/version.c 2012-06-29 13:27:59.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 573, - /**/ - --- -"Thou shalt not follow the Null Pointer, for at its end Chaos and -Madness lie." - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.574 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.574 -Problem: When pasting a register in the search command line a CTRL-L - character is not pasted. (Dominique Pelle) -Solution: Escape the CTRL-L. (Christian Brabandt) -Files: src/ex_getln.c - - -*** ../vim-7.3.573/src/ex_getln.c 2012-06-06 12:02:57.000000000 +0200 ---- src/ex_getln.c 2012-06-29 13:39:03.000000000 +0200 -*************** -*** 3133,3139 **** - else - #endif - c = *s++; -! if (cv == Ctrl_V || c == ESC || c == Ctrl_C || c == CAR || c == NL - #ifdef UNIX - || c == intr_char - #endif ---- 3133,3140 ---- - else - #endif - c = *s++; -! if (cv == Ctrl_V || c == ESC || c == Ctrl_C -! || c == CAR || c == NL || c == Ctrl_L - #ifdef UNIX - || c == intr_char - #endif -*************** -*** 4692,4698 **** - if (tab[i].ic) - regmatch.rm_ic = TRUE; - ret = ExpandGeneric(xp, ®match, num_file, file, -! tab[i].func, tab[i].escaped); - break; - } - } ---- 4693,4699 ---- - if (tab[i].ic) - regmatch.rm_ic = TRUE; - ret = ExpandGeneric(xp, ®match, num_file, file, -! tab[i].func, tab[i].escaped); - break; - } - } -*************** -*** 5125,5131 **** - vim_free(matches); - } - if (ga.ga_len == 0) -! return FAIL; - - /* Sort and remove duplicates which can happen when specifying multiple - * directories in dirnames. */ ---- 5126,5132 ---- - vim_free(matches); - } - if (ga.ga_len == 0) -! return FAIL; - - /* Sort and remove duplicates which can happen when specifying multiple - * directories in dirnames. */ -*** ../vim-7.3.573/src/version.c 2012-06-29 13:34:15.000000000 +0200 ---- src/version.c 2012-06-29 13:38:22.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 574, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -73. You give your dog used motherboards instead of bones - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.575 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.575 -Problem: "ygt" tries to yank instead of giving an error. (Daniel Mueller) -Solution: Check for a pending operator. -Files: src/normal.c - - -*** ../vim-7.3.574/src/normal.c 2012-06-06 16:12:54.000000000 +0200 ---- src/normal.c 2012-06-29 13:50:26.000000000 +0200 -*************** -*** 8393,8402 **** - - #ifdef FEAT_WINDOWS - case 't': -! goto_tabpage((int)cap->count0); - break; - case 'T': -! goto_tabpage(-(int)cap->count1); - break; - #endif - ---- 8393,8404 ---- - - #ifdef FEAT_WINDOWS - case 't': -! if (!checkclearop(oap)) -! goto_tabpage((int)cap->count0); - break; - case 'T': -! if (!checkclearop(oap)) -! goto_tabpage(-(int)cap->count1); - break; - #endif - -*** ../vim-7.3.574/src/version.c 2012-06-29 13:44:37.000000000 +0200 ---- src/version.c 2012-06-29 13:52:01.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 575, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -74. Your most erotic dreams are about cybersex - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.576 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.576 -Problem: Formatting of lists inside comments is not right yet. -Solution: Use another solution and add a test. (Tor Perkins) -Files: src/edit.c, src/misc1.c, src/testdir/test68.in, - src/testdir/test69.ok - - -*** ../vim-7.3.575/src/edit.c 2012-06-20 22:55:56.000000000 +0200 ---- src/edit.c 2012-06-29 14:10:36.000000000 +0200 -*************** -*** 6320,6333 **** - if (!(flags & INSCHAR_COM_LIST)) - { - /* -! * This section is for numeric lists w/o comments. If comment -! * indents are needed with numeric lists (formatoptions=nq), -! * then the INSCHAR_COM_LIST flag will cause the corresponding -! * OPENLINE_COM_LIST flag to be passed through to open_line() -! * (as seen above)... - */ - if (second_indent < 0 && has_format_option(FO_Q_NUMBER)) -! second_indent = get_number_indent(curwin->w_cursor.lnum -1); - if (second_indent >= 0) - { - #ifdef FEAT_VREPLACE ---- 6320,6334 ---- - if (!(flags & INSCHAR_COM_LIST)) - { - /* -! * This section is for auto-wrap of numeric lists. When not -! * in insert mode (i.e. format_lines()), the INSCHAR_COM_LIST -! * flag will be set and open_line() will handle it (as seen -! * above). The code here (and in get_number_indent()) will -! * recognize comments if needed... - */ - if (second_indent < 0 && has_format_option(FO_Q_NUMBER)) -! second_indent = -! get_number_indent(curwin->w_cursor.lnum - 1); - if (second_indent >= 0) - { - #ifdef FEAT_VREPLACE -*************** -*** 6336,6342 **** ---- 6337,6367 ---- - FALSE, NUL, TRUE); - else - #endif -+ #ifdef FEAT_COMMENTS -+ if (leader_len > 0 && second_indent - leader_len > 0) -+ { -+ int i; -+ int padding = second_indent - leader_len; -+ -+ /* We started at the first_line of a numbered list -+ * that has a comment. the open_line() function has -+ * inserted the proper comment leader and positioned -+ * the cursor at the end of the split line. Now we -+ * add the additional whitespace needed after the -+ * comment leader for the numbered list. */ -+ for (i = 0; i < padding; i++) -+ { -+ ins_str((char_u *)" "); -+ changed_bytes(curwin->w_cursor.lnum, leader_len); -+ } -+ } -+ else -+ { -+ #endif - (void)set_indent(second_indent, SIN_CHANGED); -+ #ifdef FEAT_COMMENTS -+ } -+ #endif - } - } - first_line = FALSE; -*** ../vim-7.3.575/src/misc1.c 2012-06-20 17:56:06.000000000 +0200 ---- src/misc1.c 2012-06-29 14:10:12.000000000 +0200 -*************** -*** 424,491 **** - colnr_T col; - pos_T pos; - - if (lnum > curbuf->b_ml.ml_line_count) - return -1; - pos.lnum = 0; - - #ifdef FEAT_COMMENTS -! if (has_format_option(FO_Q_COMS) && has_format_option(FO_Q_NUMBER)) -! { -! regmatch_T regmatch; -! int lead_len; /* length of comment leader */ -! - lead_len = get_leader_len(ml_get(lnum), NULL, FALSE, TRUE); -- regmatch.regprog = vim_regcomp(curbuf->b_p_flp, RE_MAGIC); -- if (regmatch.regprog != NULL) -- { -- regmatch.rm_ic = FALSE; -- -- /* vim_regexec() expects a pointer to a line. This lets us -- * start matching for the flp beyond any comment leader... */ -- if (vim_regexec(®match, ml_get(lnum) + lead_len, (colnr_T)0)) -- { -- pos.lnum = lnum; -- pos.col = (colnr_T)(*regmatch.endp - ml_get(lnum)); -- #ifdef FEAT_VIRTUALEDIT -- pos.coladd = 0; - #endif -! } -! } -! vim_free(regmatch.regprog); -! } -! else - { -! /* -! * What follows is the orig code that is not "comment aware"... -! * -! * I'm not sure if regmmatch_T (multi-match) is needed in this case. -! * It may be true that this section would work properly using the -! * regmatch_T code above, in which case, these two separate sections -! * should be consolidated w/ FEAT_COMMENTS making lead_len > 0... -! */ -! #endif -! regmmatch_T regmatch; - -! regmatch.regprog = vim_regcomp(curbuf->b_p_flp, RE_MAGIC); -! -! if (regmatch.regprog != NULL) - { -! regmatch.rmm_ic = FALSE; -! regmatch.rmm_maxcol = 0; -! if (vim_regexec_multi(®match, curwin, curbuf, -! lnum, (colnr_T)0, NULL)) -! { -! pos.lnum = regmatch.endpos[0].lnum + lnum; -! pos.col = regmatch.endpos[0].col; - #ifdef FEAT_VIRTUALEDIT -! pos.coladd = 0; - #endif -- } -- vim_free(regmatch.regprog); - } -- #ifdef FEAT_COMMENTS - } -! #endif - - if (pos.lnum == 0 || *ml_get_pos(&pos) == NUL) - return -1; ---- 424,458 ---- - colnr_T col; - pos_T pos; - -+ regmatch_T regmatch; -+ int lead_len = 0; /* length of comment leader */ -+ - if (lnum > curbuf->b_ml.ml_line_count) - return -1; - pos.lnum = 0; - - #ifdef FEAT_COMMENTS -! /* In format_lines() (i.e. not insert mode), fo+=q is needed too... */ -! if ((State & INSERT) || has_format_option(FO_Q_COMS)) - lead_len = get_leader_len(ml_get(lnum), NULL, FALSE, TRUE); - #endif -! regmatch.regprog = vim_regcomp(curbuf->b_p_flp, RE_MAGIC); -! if (regmatch.regprog != NULL) - { -! regmatch.rm_ic = FALSE; - -! /* vim_regexec() expects a pointer to a line. This lets us -! * start matching for the flp beyond any comment leader... */ -! if (vim_regexec(®match, ml_get(lnum) + lead_len, (colnr_T)0)) - { -! pos.lnum = lnum; -! pos.col = (colnr_T)(*regmatch.endp - ml_get(lnum)); - #ifdef FEAT_VIRTUALEDIT -! pos.coladd = 0; - #endif - } - } -! vim_free(regmatch.regprog); - - if (pos.lnum == 0 || *ml_get_pos(&pos) == NUL) - return -1; -*** ../vim-7.3.575/src/testdir/test68.in 2012-06-13 17:28:51.000000000 +0200 ---- src/testdir/test68.in 2012-06-29 14:27:27.000000000 +0200 -*************** -*** 52,57 **** ---- 52,68 ---- - - STARTTEST - /^{/+1 -+ :set tw=5 fo=tcn comments=:# -+ A bjA b -+ ENDTEST -+ -+ { -+ 1 a -+ # 1 a -+ } -+ -+ STARTTEST -+ /^{/+1 - :set tw=5 fo=qn comments=:# - gwap - ENDTEST -*************** -*** 83,88 **** ---- 94,107 ---- - } - - STARTTEST -+ /^#/ -+ :setl tw=12 fo=tqnc comments=:# -+ A foobar -+ ENDTEST -+ -+ # 1 xxxxx -+ -+ STARTTEST - :g/^STARTTEST/.,/^ENDTEST/d - :1;/^Results/,$wq! test.out - ENDTEST -*** ../vim-7.3.575/src/version.c 2012-06-29 13:56:01.000000000 +0200 ---- src/version.c 2012-06-29 15:03:10.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 576, - /**/ - --- -Proof techniques #2: Proof by Oddity. - SAMPLE: To prove that horses have an infinite number of legs. -(1) Horses have an even number of legs. -(2) They have two legs in back and fore legs in front. -(3) This makes a total of six legs, which certainly is an odd number of - legs for a horse. -(4) But the only number that is both odd and even is infinity. -(5) Therefore, horses must have an infinite number of legs. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.577 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.577 -Problem: Size of memory does not fit in 32 bit unsigned. -Solution: Use Kbyte instead of byte. Call GlobalMemoryStatusEx() instead of - GlobalMemoryStatus() when available. -Files: src/misc2.c, src/option.c, src/os_amiga.c, src/os_msdos.c, - src/os_win16.c, src/os_win32.c - - -*** ../vim-7.3.576/src/misc2.c 2012-02-29 13:58:43.000000000 +0100 ---- src/misc2.c 2012-06-29 15:30:54.000000000 +0200 -*************** -*** 815,820 **** ---- 815,821 ---- - #else - # define KEEP_ROOM (2 * 8192L) - #endif -+ #define KEEP_ROOM_KB (KEEP_ROOM / 1024L) - - /* - * Note: if unsigned is 16 bits we can only allocate up to 64K with alloc(). -*************** -*** 940,946 **** - allocated = 0; - # endif - /* 3. check for available memory: call mch_avail_mem() */ -! if (mch_avail_mem(TRUE) < KEEP_ROOM && !releasing) - { - free((char *)p); /* System is low... no go! */ - p = NULL; ---- 941,947 ---- - allocated = 0; - # endif - /* 3. check for available memory: call mch_avail_mem() */ -! if (mch_avail_mem(TRUE) < KEEP_ROOM_KB && !releasing) - { - free((char *)p); /* System is low... no go! */ - p = NULL; -*** ../vim-7.3.576/src/option.c 2012-03-28 19:58:34.000000000 +0200 ---- src/option.c 2012-06-29 15:31:46.000000000 +0200 -*************** -*** 3154,3160 **** - { - #ifdef HAVE_AVAIL_MEM - /* Use amount of memory available at this moment. */ -! n = (mch_avail_mem(FALSE) >> 11); - #else - # ifdef HAVE_TOTAL_MEM - /* Use amount of memory available to Vim. */ ---- 3154,3160 ---- - { - #ifdef HAVE_AVAIL_MEM - /* Use amount of memory available at this moment. */ -! n = (mch_avail_mem(FALSE) >> 1); - #else - # ifdef HAVE_TOTAL_MEM - /* Use amount of memory available to Vim. */ -*************** -*** 6702,6708 **** - { - for (s = *varp; *s;) - { -! while(*s == ',' || *s == ' ') - s++; - if (!*s) - break; ---- 6702,6708 ---- - { - for (s = *varp; *s;) - { -! while (*s == ',' || *s == ' ') - s++; - if (!*s) - break; -*************** -*** 7391,7397 **** - new_unnamed |= CLIP_UNNAMED; - p += 7; - } -! else if (STRNCMP(p, "unnamedplus", 11) == 0 - && (p[11] == ',' || p[11] == NUL)) - { - new_unnamed |= CLIP_UNNAMED_PLUS; ---- 7391,7397 ---- - new_unnamed |= CLIP_UNNAMED; - p += 7; - } -! else if (STRNCMP(p, "unnamedplus", 11) == 0 - && (p[11] == ',' || p[11] == NUL)) - { - new_unnamed |= CLIP_UNNAMED_PLUS; -*** ../vim-7.3.576/src/os_amiga.c 2011-10-20 18:24:16.000000000 +0200 ---- src/os_amiga.c 2012-06-29 15:33:59.000000000 +0200 -*************** -*** 191,206 **** - } - - /* -! * Return amount of memory still available. - */ - long_u - mch_avail_mem(special) - int special; - { - #ifdef __amigaos4__ -! return (long_u)AvailMem(MEMF_ANY); - #else -! return (long_u)AvailMem(special ? (long)MEMF_CHIP : (long)MEMF_ANY); - #endif - } - ---- 191,206 ---- - } - - /* -! * Return amount of memory still available in Kbyte. - */ - long_u - mch_avail_mem(special) - int special; - { - #ifdef __amigaos4__ -! return (long_u)AvailMem(MEMF_ANY) >> 10; - #else -! return (long_u)(AvailMem(special ? (long)MEMF_CHIP : (long)MEMF_ANY)) >> 10; - #endif - } - -*** ../vim-7.3.576/src/os_msdos.c 2011-06-19 01:14:22.000000000 +0200 ---- src/os_msdos.c 2012-06-29 15:33:26.000000000 +0200 -*************** -*** 550,564 **** - #endif - - /* -! * Return amount of memory currently available. - */ - long_u - mch_avail_mem(int special) - { - #ifdef DJGPP -! return _go32_dpmi_remaining_virtual_memory(); - #else -! return coreleft(); - #endif - } - ---- 550,564 ---- - #endif - - /* -! * Return amount of memory currently available in Kbyte. - */ - long_u - mch_avail_mem(int special) - { - #ifdef DJGPP -! return _go32_dpmi_remaining_virtual_memory() >> 10; - #else -! return coreleft() >> 10; - #endif - } - -*** ../vim-7.3.576/src/os_win16.c 2011-10-20 18:24:16.000000000 +0200 ---- src/os_win16.c 2012-06-29 15:34:18.000000000 +0200 -*************** -*** 379,391 **** - - - /* -! * How much memory is available? - */ - long_u - mch_avail_mem( - int special) - { -! return GetFreeSpace(0); - } - - ---- 379,391 ---- - - - /* -! * How much memory is available in Kbyte? - */ - long_u - mch_avail_mem( - int special) - { -! return GetFreeSpace(0) >> 10; - } - - -*** ../vim-7.3.576/src/os_win32.c 2012-06-29 13:13:59.000000000 +0200 ---- src/os_win32.c 2012-06-29 15:39:52.000000000 +0200 -*************** -*** 4992,5009 **** - - - /* -! * How much memory is available? - * Return sum of available physical and page file memory. - */ - /*ARGSUSED*/ - long_u - mch_avail_mem(int special) - { -! MEMORYSTATUS ms; - -! ms.dwLength = sizeof(MEMORYSTATUS); -! GlobalMemoryStatus(&ms); -! return (long_u) (ms.dwAvailPhys + ms.dwAvailPageFile); - } - - #ifdef FEAT_MBYTE ---- 4992,5020 ---- - - - /* -! * How much memory is available in Kbyte? - * Return sum of available physical and page file memory. - */ - /*ARGSUSED*/ - long_u - mch_avail_mem(int special) - { -! if (g_PlatformId != VER_PLATFORM_WIN32_NT) -! { -! MEMORYSTATUS ms; - -! ms.dwLength = sizeof(MEMORYSTATUS); -! GlobalMemoryStatus(&ms); -! return (long_u)((ms.dwAvailPhys + ms.dwAvailPageFile) >> 10); -! } -! else -! { -! MEMORYSTATUSEX ms; -! -! ms.dwLength = sizeof(MEMORYSTATUSEX); -! GlobalMemoryStatusEx(&ms); -! return (long_u)((ms.ullAvailPhys + ms.ullAvailPageFile) >> 10); -! } - } - - #ifdef FEAT_MBYTE -*** ../vim-7.3.576/src/version.c 2012-06-29 15:04:34.000000000 +0200 ---- src/version.c 2012-06-29 15:45:44.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 577, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -75. You start wondering whether you could actually upgrade your brain - with a Pentium Pro microprocessor 80. The upgrade works just fine. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.578 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.578 -Problem: Misplaced declaration. -Solution: Move declaration to start of block. -Files: src/if_py_both.h - - -*** ../vim-7.3.577/src/if_py_both.h 2012-06-29 12:54:32.000000000 +0200 ---- src/if_py_both.h 2012-06-29 16:15:29.000000000 +0200 -*************** -*** 818,838 **** - - if (valObject == NULL) - { - if (di == NULL) - { - PyErr_SetString(PyExc_IndexError, _("no such key in dictionary")); - return -1; - } -! hashitem_T *hi = hash_find(&d->dv_hashtab, di->di_key); - hash_remove(&d->dv_hashtab, hi); - dictitem_free(di); - return 0; - } - - if (ConvertFromPyObject(valObject, &tv) == -1) -- { - return -1; -- } - - if (di == NULL) - { ---- 818,838 ---- - - if (valObject == NULL) - { -+ hashitem_T *hi; -+ - if (di == NULL) - { - PyErr_SetString(PyExc_IndexError, _("no such key in dictionary")); - return -1; - } -! hi = hash_find(&d->dv_hashtab, di->di_key); - hash_remove(&d->dv_hashtab, hi); - dictitem_free(di); - return 0; - } - - if (ConvertFromPyObject(valObject, &tv) == -1) - return -1; - - if (di == NULL) - { -*** ../vim-7.3.577/src/version.c 2012-06-29 15:51:26.000000000 +0200 ---- src/version.c 2012-06-29 16:18:10.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 578, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -77. The phone company asks you to test drive their new PBX system - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.579 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.579 (after 7.3.569) -Problem: Can't compile with Python 2.5. -Solution: Use PyCObject when Capsules are not available. -Files: src/if_py_both.h, src/if_python.c, src/if_python3.c - - -*** ../vim-7.3.578/src/if_py_both.h 2012-06-29 16:19:46.000000000 +0200 ---- src/if_py_both.h 2012-06-29 16:15:29.000000000 +0200 -*************** -*** 56,62 **** - /* name, function, calling, documentation */ - {"write", OutputWrite, 1, ""}, - {"writelines", OutputWritelines, 1, ""}, -! {"flush", OutputFlush, 1, ""}, - { NULL, NULL, 0, NULL} - }; - ---- 56,62 ---- - /* name, function, calling, documentation */ - {"write", OutputWrite, 1, ""}, - {"writelines", OutputWritelines, 1, ""}, -! {"flush", OutputFlush, 1, ""}, - { NULL, NULL, 0, NULL} - }; - -*************** -*** 506,513 **** - /* name, function, calling, documentation */ - {"command", VimCommand, 1, "Execute a Vim ex-mode command" }, - {"eval", VimEval, 1, "Evaluate an expression using Vim evaluator" }, -! {"bindeval", VimEvalPy, 1, "Like eval(), but returns objects attached to vim ones"}, -! {"strwidth", VimStrwidth, 1, "Screen string width, counts <Tab> as having width 1"}, - { NULL, NULL, 0, NULL } - }; - ---- 506,513 ---- - /* name, function, calling, documentation */ - {"command", VimCommand, 1, "Execute a Vim ex-mode command" }, - {"eval", VimEval, 1, "Evaluate an expression using Vim evaluator" }, -! {"bindeval", VimEvalPy, 1, "Like eval(), but returns objects attached to vim ones"}, -! {"strwidth", VimStrwidth, 1, "Screen string width, counts <Tab> as having width 1"}, - { NULL, NULL, 0, NULL } - }; - -*************** -*** 2432,2448 **** ---- 2432,2463 ---- - convert_dl(PyObject *obj, typval_T *tv, - pytotvfunc py_to_tv, PyObject *lookupDict) - { -+ # ifdef PY_USE_CAPSULE - PyObject *capsule; -+ # else -+ PyCObject *cobject; -+ # endif - char hexBuf[sizeof(void *) * 2 + 3]; - - sprintf(hexBuf, "%p", obj); - -+ # ifdef PY_USE_CAPSULE - capsule = PyDict_GetItemString(lookupDict, hexBuf); - if (capsule == NULL) -+ # else -+ cobject = (PyCObject *)PyDict_GetItemString(lookupDict, hexBuf); -+ if (cobject == NULL) -+ # endif - { -+ # ifdef PY_USE_CAPSULE - capsule = PyCapsule_New(tv, NULL, NULL); - PyDict_SetItemString(lookupDict, hexBuf, capsule); - Py_DECREF(capsule); -+ # else -+ cobject = PyCObject_FromVoidPtr(tv, NULL); -+ PyDict_SetItemString(lookupDict, hexBuf, cobject); -+ Py_DECREF(cobject); -+ # endif - if (py_to_tv(obj, tv, lookupDict) == -1) - { - tv->v_type = VAR_UNKNOWN; -*************** -*** 2458,2464 **** - } - else - { -! typval_T *v = PyCapsule_GetPointer(capsule, NULL); - copy_tv(v, tv); - } - return 0; ---- 2473,2485 ---- - } - else - { -! typval_T *v; -! -! # ifdef PY_USE_CAPSULE -! v = PyCapsule_GetPointer(capsule, NULL); -! # else -! v = PyCObject_AsVoidPtr(cobject); -! # endif - copy_tv(v, tv); - } - return 0; -*** ../vim-7.3.578/src/if_python.c 2012-06-29 12:54:32.000000000 +0200 ---- src/if_python.c 2012-06-29 16:17:44.000000000 +0200 -*************** -*** 71,76 **** ---- 71,80 ---- - # define PySequenceMethods Py_ssize_t - #endif - -+ #if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02070000 -+ # define PY_USE_CAPSULE -+ #endif -+ - #if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02050000 - # define PyInt Py_ssize_t - # define PyInquiry lenfunc -*************** -*** 220,227 **** - # define PyObject_Malloc dll_PyObject_Malloc - # define PyObject_Free dll_PyObject_Free - # endif -! # define PyCapsule_New dll_PyCapsule_New -! # define PyCapsule_GetPointer dll_PyCapsule_GetPointer - - /* - * Pointers for dynamic link ---- 224,236 ---- - # define PyObject_Malloc dll_PyObject_Malloc - # define PyObject_Free dll_PyObject_Free - # endif -! # ifdef PY_USE_CAPSULE -! # define PyCapsule_New dll_PyCapsule_New -! # define PyCapsule_GetPointer dll_PyCapsule_GetPointer -! # else -! # define PyCObject_FromVoidPtr dll_PyCObject_FromVoidPtr -! # define PyCObject_AsVoidPtr dll_PyCObject_AsVoidPtr -! # endif - - /* - * Pointers for dynamic link -*************** -*** 309,316 **** ---- 318,330 ---- - static void* (*dll_PyObject_Malloc)(size_t); - static void (*dll_PyObject_Free)(void*); - # endif -+ # ifdef PY_USE_CAPSULE - static PyObject* (*dll_PyCapsule_New)(void *, char *, PyCapsule_Destructor); - static void* (*dll_PyCapsule_GetPointer)(PyObject *, char *); -+ # else -+ static PyCObject* (*dll_PyCObject_FromVoidPtr)(void *cobj, void (*destr)(void *)); -+ static void* (*dll_PyCObject_AsVoidPtr)(PyCObject *); -+ # endif - - static HINSTANCE hinstPython = 0; /* Instance of python.dll */ - -*************** -*** 403,409 **** - {"PyType_Ready", (PYTHON_PROC*)&dll_PyType_Ready}, - {"Py_BuildValue", (PYTHON_PROC*)&dll_Py_BuildValue}, - {"Py_FindMethod", (PYTHON_PROC*)&dll_Py_FindMethod}, -! # if (PY_VERSION_HEX >= 0x02050000) && SIZEOF_SIZE_T != SIZEOF_INT - {"Py_InitModule4_64", (PYTHON_PROC*)&dll_Py_InitModule4}, - # else - {"Py_InitModule4", (PYTHON_PROC*)&dll_Py_InitModule4}, ---- 417,424 ---- - {"PyType_Ready", (PYTHON_PROC*)&dll_PyType_Ready}, - {"Py_BuildValue", (PYTHON_PROC*)&dll_Py_BuildValue}, - {"Py_FindMethod", (PYTHON_PROC*)&dll_Py_FindMethod}, -! # if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02050000 \ -! && SIZEOF_SIZE_T != SIZEOF_INT - {"Py_InitModule4_64", (PYTHON_PROC*)&dll_Py_InitModule4}, - # else - {"Py_InitModule4", (PYTHON_PROC*)&dll_Py_InitModule4}, -*************** -*** 424,431 **** ---- 439,451 ---- - {"PyObject_Malloc", (PYTHON_PROC*)&dll_PyObject_Malloc}, - {"PyObject_Free", (PYTHON_PROC*)&dll_PyObject_Free}, - # endif -+ # ifdef PY_USE_CAPSULE - {"PyCapsule_New", (PYTHON_PROC*)&dll_PyCapsule_New}, - {"PyCapsule_GetPointer", (PYTHON_PROC*)&dll_PyCapsule_GetPointer}, -+ # else -+ {"PyCObject_FromVoidPtr", (PYTHON_PROC*)&dll_PyCObject_FromVoidPtr}, -+ {"PyCObject_AsVoidPtr", (PYTHON_PROC*)&dll_PyCObject_AsVoidPtr}, -+ # endif - {"", NULL}, - }; - -*** ../vim-7.3.578/src/if_python3.c 2012-06-29 12:54:32.000000000 +0200 ---- src/if_python3.c 2012-06-29 16:16:54.000000000 +0200 -*************** -*** 75,80 **** ---- 75,83 ---- - # define CODEC_ERROR_HANDLER NULL - #endif - -+ /* Python 3 does not support CObjects, always use Capsules */ -+ #define PY_USE_CAPSULE -+ - #define PyInt Py_ssize_t - #define PyString_Check(obj) PyUnicode_Check(obj) - #define PyString_AsBytes(obj) PyUnicode_AsEncodedString(obj, (char *)ENC_OPT, CODEC_ERROR_HANDLER) -*** ../vim-7.3.578/src/version.c 2012-06-29 16:19:46.000000000 +0200 ---- src/version.c 2012-06-29 16:21:25.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 579, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -78. You find yourself dialing IP numbers on the phone. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.580 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.580 -Problem: Warning on 64 bit MS-Windows. -Solution: Add type cast. (Mike Williams) -Files: src/if_py_both.h - - -*** ../vim-7.3.579/src/if_py_both.h 2012-06-29 16:28:23.000000000 +0200 ---- src/if_py_both.h 2012-06-29 17:49:59.000000000 +0200 -*************** -*** 495,501 **** - if (!PyArg_ParseTuple(args, "s", &expr)) - return NULL; - -! return PyLong_FromLong(mb_string2cells((char_u *)expr, STRLEN(expr))); - } - - /* ---- 495,501 ---- - if (!PyArg_ParseTuple(args, "s", &expr)) - return NULL; - -! return PyLong_FromLong(mb_string2cells((char_u *)expr, (int)STRLEN(expr))); - } - - /* -*** ../vim-7.3.579/src/version.c 2012-06-29 16:28:23.000000000 +0200 ---- src/version.c 2012-06-29 17:50:36.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 580, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -79. All of your most erotic dreams have a scrollbar at the right side. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.581 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.581 -Problem: Problems compiling with Python. -Solution: Pick UCS2 or UCS4 function at runtime. (lilydjwg) -Files: src/if_python.c - - -*** ../vim-7.3.580/src/if_python.c 2012-06-29 16:28:23.000000000 +0200 ---- src/if_python.c 2012-06-29 19:10:53.000000000 +0200 -*************** -*** 196,202 **** - # define PyString_Size dll_PyString_Size - # define PyString_Type (*dll_PyString_Type) - # define PyUnicode_Type (*dll_PyUnicode_Type) -! # define PyUnicodeUCS4_AsEncodedString (*dll_PyUnicodeUCS4_AsEncodedString) - # define PyFloat_AsDouble dll_PyFloat_AsDouble - # define PyFloat_FromDouble dll_PyFloat_FromDouble - # define PyFloat_Type (*dll_PyFloat_Type) ---- 196,203 ---- - # define PyString_Size dll_PyString_Size - # define PyString_Type (*dll_PyString_Type) - # define PyUnicode_Type (*dll_PyUnicode_Type) -! # undef PyUnicode_AsEncodedString -! # define PyUnicode_AsEncodedString py_PyUnicode_AsEncodedString - # define PyFloat_AsDouble dll_PyFloat_AsDouble - # define PyFloat_FromDouble dll_PyFloat_FromDouble - # define PyFloat_Type (*dll_PyFloat_Type) -*************** -*** 290,296 **** - static PyInt(*dll_PyString_Size)(PyObject *); - static PyTypeObject* dll_PyString_Type; - static PyTypeObject* dll_PyUnicode_Type; -! static PyObject *(*PyUnicodeUCS4_AsEncodedString)(PyObject *, char *, char *); - static double(*dll_PyFloat_AsDouble)(PyObject *); - static PyObject*(*dll_PyFloat_FromDouble)(double); - static PyTypeObject* dll_PyFloat_Type; ---- 291,297 ---- - static PyInt(*dll_PyString_Size)(PyObject *); - static PyTypeObject* dll_PyString_Type; - static PyTypeObject* dll_PyUnicode_Type; -! static PyObject *(*py_PyUnicode_AsEncodedString)(PyObject *, char *, char *); - static double(*dll_PyFloat_AsDouble)(PyObject *); - static PyObject*(*dll_PyFloat_FromDouble)(double); - static PyTypeObject* dll_PyFloat_Type; -*************** -*** 406,412 **** - {"PyString_Size", (PYTHON_PROC*)&dll_PyString_Size}, - {"PyString_Type", (PYTHON_PROC*)&dll_PyString_Type}, - {"PyUnicode_Type", (PYTHON_PROC*)&dll_PyUnicode_Type}, -- {"PyUnicodeUCS4_AsEncodedString", (PYTHON_PROC*)&dll_PyUnicodeUCS4_AsEncodedString}, - {"PyFloat_Type", (PYTHON_PROC*)&dll_PyFloat_Type}, - {"PyFloat_AsDouble", (PYTHON_PROC*)&dll_PyFloat_AsDouble}, - {"PyFloat_FromDouble", (PYTHON_PROC*)&dll_PyFloat_FromDouble}, ---- 407,412 ---- -*************** -*** 471,476 **** ---- 471,477 ---- - python_runtime_link_init(char *libname, int verbose) - { - int i; -+ void *ucs_as_encoded_string; - - #if !(defined(PY_NO_RTLD_GLOBAL) && defined(PY3_NO_RTLD_GLOBAL)) && defined(UNIX) && defined(FEAT_PYTHON3) - /* Can't have Python and Python3 loaded at the same time. -*************** -*** 506,511 **** ---- 507,531 ---- - return FAIL; - } - } -+ -+ /* Load unicode functions separately as only the ucs2 or the ucs4 functions -+ * will be present in the library. */ -+ ucs_as_encoded_string = symbol_from_dll(hinstPython, -+ "PyUnicodeUCS2_AsEncodedString"); -+ if (ucs_as_encoded_string == NULL) -+ ucs_as_encoded_string = symbol_from_dll(hinstPython, -+ "PyUnicodeUCS4_AsEncodedString"); -+ if (ucs_as_encoded_string != NULL) -+ py_PyUnicode_AsEncodedString = ucs_as_encoded_string; -+ else -+ { -+ close_dll(hinstPython); -+ hinstPython = 0; -+ if (verbose) -+ EMSG2(_(e_loadfunc), "PyUnicode_UCSX_*"); -+ return FAIL; -+ } -+ - return OK; - } - -*** ../vim-7.3.580/src/version.c 2012-06-29 17:51:58.000000000 +0200 ---- src/version.c 2012-06-29 19:13:47.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 581, - /**/ - --- -ASCII stupid question, get a stupid ANSI. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.582 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.582 (after 7.3.576) -Problem: Missing parts of the test OK file. -Solution: Add the missing parts. -Files: src/testdir/test68.ok - - -*** ../vim-7.3.581/src/testdir/test68.ok 2012-06-13 17:28:51.000000000 +0200 ---- src/testdir/test68.ok 2012-06-29 15:00:13.000000000 +0200 -*************** -*** 35,40 **** ---- 35,48 ---- - - - { -+ 1 a -+ b -+ # 1 a -+ # b -+ } -+ -+ -+ { - # 1 a - # b - } -*************** -*** 48,50 **** ---- 56,62 ---- - - { 1aa ^^2bb } - -+ -+ # 1 xxxxx -+ # foobar -+ -*** ../vim-7.3.581/src/version.c 2012-06-29 19:14:48.000000000 +0200 ---- src/version.c 2012-06-29 23:57:43.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 582, - /**/ - --- -If your nose runs, and your feet smell, you might be upside down. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.583 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.583 -Problem: PyObject_NextNotImplemented is not defined before Python 2.7. - (Danek Duvall) -Solution: Add #ifdefs. -Files: src/if_python.c - - -*** ../vim-7.3.582/src/if_python.c 2012-06-29 19:14:48.000000000 +0200 ---- src/if_python.c 2012-06-30 12:59:38.000000000 +0200 -*************** -*** 214,220 **** - # define Py_Finalize dll_Py_Finalize - # define Py_IsInitialized dll_Py_IsInitialized - # define _PyObject_New dll__PyObject_New -! # define _PyObject_NextNotImplemented (*dll__PyObject_NextNotImplemented) - # define _Py_NoneStruct (*dll__Py_NoneStruct) - # define PyObject_Init dll__PyObject_Init - # define PyObject_GetIter dll_PyObject_GetIter ---- 214,222 ---- - # define Py_Finalize dll_Py_Finalize - # define Py_IsInitialized dll_Py_IsInitialized - # define _PyObject_New dll__PyObject_New -! # if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02070000 -! # define _PyObject_NextNotImplemented (*dll__PyObject_NextNotImplemented) -! # endif - # define _Py_NoneStruct (*dll__Py_NoneStruct) - # define PyObject_Init dll__PyObject_Init - # define PyObject_GetIter dll_PyObject_GetIter -*************** -*** 310,316 **** ---- 312,320 ---- - static PyObject*(*dll__PyObject_New)(PyTypeObject *, PyObject *); - static PyObject*(*dll__PyObject_Init)(PyObject *, PyTypeObject *); - static PyObject* (*dll_PyObject_GetIter)(PyObject *); -+ # if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02070000 - static iternextfunc dll__PyObject_NextNotImplemented; -+ # endif - static PyObject* dll__Py_NoneStruct; - # if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02020000 - static int (*dll_PyType_IsSubtype)(PyTypeObject *, PyTypeObject *); -*************** -*** 430,436 **** ---- 434,442 ---- - {"_PyObject_New", (PYTHON_PROC*)&dll__PyObject_New}, - {"PyObject_Init", (PYTHON_PROC*)&dll__PyObject_Init}, - {"PyObject_GetIter", (PYTHON_PROC*)&dll_PyObject_GetIter}, -+ # if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02070000 - {"_PyObject_NextNotImplemented", (PYTHON_PROC*)&dll__PyObject_NextNotImplemented}, -+ # endif - {"_Py_NoneStruct", (PYTHON_PROC*)&dll__Py_NoneStruct}, - # if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02020000 - {"PyType_IsSubtype", (PYTHON_PROC*)&dll_PyType_IsSubtype}, -*** ../vim-7.3.582/src/version.c 2012-06-29 23:57:50.000000000 +0200 ---- src/version.c 2012-06-30 13:20:46.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 583, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -90. Instead of calling you to dinner, your spouse sends e-mail. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.584 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.584 -Problem: PyCObject is not always defined. -Solution: Use PyObject instead. -Files: src/if_py_both.h, src/if_python.c - - -*** ../vim-7.3.583/src/if_py_both.h 2012-06-29 17:51:58.000000000 +0200 ---- src/if_py_both.h 2012-06-30 13:25:24.000000000 +0200 -*************** -*** 2432,2463 **** - convert_dl(PyObject *obj, typval_T *tv, - pytotvfunc py_to_tv, PyObject *lookupDict) - { -- # ifdef PY_USE_CAPSULE - PyObject *capsule; -- # else -- PyCObject *cobject; -- # endif - char hexBuf[sizeof(void *) * 2 + 3]; - - sprintf(hexBuf, "%p", obj); - - # ifdef PY_USE_CAPSULE - capsule = PyDict_GetItemString(lookupDict, hexBuf); -- if (capsule == NULL) - # else -! cobject = (PyCObject *)PyDict_GetItemString(lookupDict, hexBuf); -! if (cobject == NULL) - # endif - { - # ifdef PY_USE_CAPSULE - capsule = PyCapsule_New(tv, NULL, NULL); -- PyDict_SetItemString(lookupDict, hexBuf, capsule); -- Py_DECREF(capsule); - # else -! cobject = PyCObject_FromVoidPtr(tv, NULL); -! PyDict_SetItemString(lookupDict, hexBuf, cobject); -! Py_DECREF(cobject); - # endif - if (py_to_tv(obj, tv, lookupDict) == -1) - { - tv->v_type = VAR_UNKNOWN; ---- 2432,2456 ---- - convert_dl(PyObject *obj, typval_T *tv, - pytotvfunc py_to_tv, PyObject *lookupDict) - { - PyObject *capsule; - char hexBuf[sizeof(void *) * 2 + 3]; - - sprintf(hexBuf, "%p", obj); - - # ifdef PY_USE_CAPSULE - capsule = PyDict_GetItemString(lookupDict, hexBuf); - # else -! capsule = (PyObject *)PyDict_GetItemString(lookupDict, hexBuf); - # endif -+ if (capsule == NULL) - { - # ifdef PY_USE_CAPSULE - capsule = PyCapsule_New(tv, NULL, NULL); - # else -! capsule = PyCObject_FromVoidPtr(tv, NULL); - # endif -+ PyDict_SetItemString(lookupDict, hexBuf, capsule); -+ Py_DECREF(capsule); - if (py_to_tv(obj, tv, lookupDict) == -1) - { - tv->v_type = VAR_UNKNOWN; -*************** -*** 2478,2484 **** - # ifdef PY_USE_CAPSULE - v = PyCapsule_GetPointer(capsule, NULL); - # else -! v = PyCObject_AsVoidPtr(cobject); - # endif - copy_tv(v, tv); - } ---- 2471,2477 ---- - # ifdef PY_USE_CAPSULE - v = PyCapsule_GetPointer(capsule, NULL); - # else -! v = PyCObject_AsVoidPtr(capsule); - # endif - copy_tv(v, tv); - } -*** ../vim-7.3.583/src/if_python.c 2012-06-30 13:21:03.000000000 +0200 ---- src/if_python.c 2012-06-30 13:23:22.000000000 +0200 -*************** -*** 327,334 **** - static PyObject* (*dll_PyCapsule_New)(void *, char *, PyCapsule_Destructor); - static void* (*dll_PyCapsule_GetPointer)(PyObject *, char *); - # else -! static PyCObject* (*dll_PyCObject_FromVoidPtr)(void *cobj, void (*destr)(void *)); -! static void* (*dll_PyCObject_AsVoidPtr)(PyCObject *); - # endif - - static HINSTANCE hinstPython = 0; /* Instance of python.dll */ ---- 327,334 ---- - static PyObject* (*dll_PyCapsule_New)(void *, char *, PyCapsule_Destructor); - static void* (*dll_PyCapsule_GetPointer)(PyObject *, char *); - # else -! static PyObject* (*dll_PyCObject_FromVoidPtr)(void *cobj, void (*destr)(void *)); -! static void* (*dll_PyCObject_AsVoidPtr)(PyObject *); - # endif - - static HINSTANCE hinstPython = 0; /* Instance of python.dll */ -*** ../vim-7.3.583/src/version.c 2012-06-30 13:21:03.000000000 +0200 ---- src/version.c 2012-06-30 13:33:08.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 584, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -91. It's Saturday afternoon in the middle of May and you - are on computer. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.585 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.585 -Problem: Calling changed_bytes() too often. -Solution: Move changed_bytes() out of a loop. (Tor Perkins) -Files: src/edit.c - - -*** ../vim-7.3.584/src/edit.c 2012-06-29 15:04:34.000000000 +0200 ---- src/edit.c 2012-07-06 13:29:25.000000000 +0200 -*************** -*** 6350,6359 **** - * add the additional whitespace needed after the - * comment leader for the numbered list. */ - for (i = 0; i < padding; i++) -- { - ins_str((char_u *)" "); -! changed_bytes(curwin->w_cursor.lnum, leader_len); -! } - } - else - { ---- 6350,6357 ---- - * add the additional whitespace needed after the - * comment leader for the numbered list. */ - for (i = 0; i < padding; i++) - ins_str((char_u *)" "); -! changed_bytes(curwin->w_cursor.lnum, leader_len); - } - else - { -*** ../vim-7.3.584/src/version.c 2012-07-06 13:36:02.000000000 +0200 ---- src/version.c 2012-07-06 13:35:03.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 585, - /**/ - --- -From "know your smileys": - :'-D Laughing so much that they're crying - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.586 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.586 -Problem: When compiling with Cygwin or MingW MEMORYSTATUSEX is not defined. -Solution: Set the default for WINVER to 0x0500. -Files: src/Make_ming.mak, src/Make_cyg.mak - - -*** ../vim-7.3.585/src/Make_ming.mak 2012-04-20 16:13:21.000000000 +0200 ---- src/Make_ming.mak 2012-06-30 21:23:55.000000000 +0200 -*************** -*** 52,58 **** - OLE=no - # Set the default $(WINVER) to make it work with pre-Win2k - ifndef WINVER -! WINVER = 0x0400 - endif - # Set to yes to enable Cscope support - CSCOPE=yes ---- 52,58 ---- - OLE=no - # Set the default $(WINVER) to make it work with pre-Win2k - ifndef WINVER -! WINVER = 0x0500 - endif - # Set to yes to enable Cscope support - CSCOPE=yes -*** ../vim-7.3.585/src/Make_cyg.mak 2011-09-30 16:56:00.000000000 +0200 ---- src/Make_cyg.mak 2012-06-30 21:23:42.000000000 +0200 -*************** -*** 1,6 **** - # - # Makefile for VIM on Win32, using Cygnus gcc -! # Last updated by Dan Sharp. Last Change: 2010 Nov 03 - # - # Also read INSTALLpc.txt! - # ---- 1,6 ---- - # - # Makefile for VIM on Win32, using Cygnus gcc -! # Last updated by Dan Sharp. Last Change: 2012 Jun 30 - # - # Also read INSTALLpc.txt! - # -*************** -*** 48,54 **** - # -L/lib/w32api to EXTRA_LIBS. - # POSTSCRIPT no or yes: set to yes for PostScript printing (no) - # FEATURES TINY, SMALL, NORMAL, BIG or HUGE (BIG) -! # WINVER Lowest Win32 version to support. (0x0400) - # CSCOPE no or yes: to include cscope interface support (yes) - # OPTIMIZE SPACE, SPEED, or MAXSPEED: set optimization level (MAXSPEED) - # NETBEANS no or yes: to include netbeans interface support (yes when GUI ---- 48,54 ---- - # -L/lib/w32api to EXTRA_LIBS. - # POSTSCRIPT no or yes: set to yes for PostScript printing (no) - # FEATURES TINY, SMALL, NORMAL, BIG or HUGE (BIG) -! # WINVER Lowest Win32 version to support. (0x0500) - # CSCOPE no or yes: to include cscope interface support (yes) - # OPTIMIZE SPACE, SPEED, or MAXSPEED: set optimization level (MAXSPEED) - # NETBEANS no or yes: to include netbeans interface support (yes when GUI -*************** -*** 85,91 **** - endif - - ifndef WINVER -! WINVER = 0x0400 - endif - - ifndef CSCOPE ---- 85,91 ---- - endif - - ifndef WINVER -! WINVER = 0x0500 - endif - - ifndef CSCOPE -*** ../vim-7.3.585/src/version.c 2012-07-06 13:36:36.000000000 +0200 ---- src/version.c 2012-07-06 13:39:41.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 586, - /**/ - --- -From "know your smileys": - :-& Eating spaghetti - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.587 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.587 -Problem: Compiler warning for local var shadowing global var. -Solution: Rename the var and move it to an inner block. (Christian Brabandt) -Files: src/buffer.c - - -*** ../vim-7.3.586/src/buffer.c 2012-06-20 17:54:34.000000000 +0200 ---- src/buffer.c 2012-07-06 16:19:32.000000000 +0200 -*************** -*** 1363,1371 **** - int action; - { - buf_T *prevbuf; -- #ifdef FEAT_WINDOWS -- win_T *prevwin; -- #endif - int unload = (action == DOBUF_UNLOAD || action == DOBUF_DEL - || action == DOBUF_WIPE); - ---- 1363,1368 ---- -*************** -*** 1406,1412 **** - #endif - { - #ifdef FEAT_WINDOWS -! prevwin = curwin; - #endif - if (prevbuf == curbuf) - u_sync(FALSE); ---- 1403,1409 ---- - #endif - { - #ifdef FEAT_WINDOWS -! win_T *previouswin = curwin; - #endif - if (prevbuf == curbuf) - u_sync(FALSE); -*************** -*** 1415,1423 **** - && !P_HID(prevbuf) - && !bufIsChanged(prevbuf)) ? DOBUF_UNLOAD : 0, FALSE); - #ifdef FEAT_WINDOWS -! if (curwin != prevwin && win_valid(prevwin)) - /* autocommands changed curwin, Grr! */ -! curwin = prevwin; - #endif - } - } ---- 1412,1420 ---- - && !P_HID(prevbuf) - && !bufIsChanged(prevbuf)) ? DOBUF_UNLOAD : 0, FALSE); - #ifdef FEAT_WINDOWS -! if (curwin != previouswin && win_valid(previouswin)) - /* autocommands changed curwin, Grr! */ -! curwin = previouswin; - #endif - } - } -*** ../vim-7.3.586/src/version.c 2012-07-06 13:40:44.000000000 +0200 ---- src/version.c 2012-07-06 16:19:08.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 587, - /**/ - --- -There's no place like $(HOME)! - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.588 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.588 -Problem: Crash on NULL pointer. -Solution: Fix the immediate problem by checking for NULL. (Lech Lorens) -Files: src/window.c - - -*** ../vim-7.3.587/src/window.c 2012-06-13 18:15:13.000000000 +0200 ---- src/window.c 2012-07-06 16:32:59.000000000 +0200 -*************** -*** 2184,2190 **** - } - - #ifdef FEAT_AUTOCMD -! if (win->w_closing || win->w_buffer->b_closing) - return; /* window is already being closed */ - if (win == aucmd_win) - { ---- 2184,2190 ---- - } - - #ifdef FEAT_AUTOCMD -! if (win->w_closing || (win->w_buffer != NULL && win->w_buffer->b_closing)) - return; /* window is already being closed */ - if (win == aucmd_win) - { -*************** -*** 3723,3729 **** - enter_tabpage(tp, old_curbuf, trigger_autocmds) - tabpage_T *tp; - buf_T *old_curbuf UNUSED; -! int trigger_autocmds UNUSED; - { - int old_off = tp->tp_firstwin->w_winrow; - win_T *next_prevwin = tp->tp_prevwin; ---- 3723,3729 ---- - enter_tabpage(tp, old_curbuf, trigger_autocmds) - tabpage_T *tp; - buf_T *old_curbuf UNUSED; -! int trigger_autocmds UNUSED; - { - int old_off = tp->tp_firstwin->w_winrow; - win_T *next_prevwin = tp->tp_prevwin; -*************** -*** 3868,3874 **** - void - goto_tabpage_tp(tp, trigger_autocmds) - tabpage_T *tp; -! int trigger_autocmds; - { - /* Don't repeat a message in another tab page. */ - set_keep_msg(NULL, 0); ---- 3868,3874 ---- - void - goto_tabpage_tp(tp, trigger_autocmds) - tabpage_T *tp; -! int trigger_autocmds; - { - /* Don't repeat a message in another tab page. */ - set_keep_msg(NULL, 0); -*** ../vim-7.3.587/src/version.c 2012-07-06 16:21:58.000000000 +0200 ---- src/version.c 2012-07-06 16:37:47.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 588, - /**/ - --- -Momento mori, ergo carpe diem - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.589 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.589 -Problem: Crash when $HOME is not set. -Solution: Check for a NULL pointer. (Chris Webb) -Files: src/misc1.c - - -*** ../vim-7.3.588/src/misc1.c 2012-06-29 15:04:34.000000000 +0200 ---- src/misc1.c 2012-07-06 16:44:39.000000000 +0200 -*************** -*** 4496,4503 **** - #else - homedir_env_orig = homedir_env = mch_getenv((char_u *)"HOME"); - #endif - #if defined(FEAT_MODIFY_FNAME) || defined(WIN3264) -! if (vim_strchr(homedir_env, '~') != NULL) - { - int usedlen = 0; - int flen; ---- 4496,4507 ---- - #else - homedir_env_orig = homedir_env = mch_getenv((char_u *)"HOME"); - #endif -+ /* Empty is the same as not set. */ -+ if (homedir_env != NULL && *homedir_env == NUL) -+ homedir_env = NULL; -+ - #if defined(FEAT_MODIFY_FNAME) || defined(WIN3264) -! if (homedir_env != NULL && vim_strchr(homedir_env, '~') != NULL) - { - int usedlen = 0; - int flen; -*************** -*** 4513,4520 **** - } - #endif - -- if (homedir_env != NULL && *homedir_env == NUL) -- homedir_env = NULL; - if (homedir_env != NULL) - envlen = STRLEN(homedir_env); - ---- 4517,4522 ---- -*** ../vim-7.3.588/src/version.c 2012-07-06 16:39:43.000000000 +0200 ---- src/version.c 2012-07-06 16:45:18.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 589, - /**/ - --- -I AM THANKFUL... -...for the taxes that I pay because it means that I am employed. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.590 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.590 -Problem: The '< and '> marks cannot be set directly. -Solution: Allow setting '< and '>. (Christian Brabandt) -Files: src/mark.c - - -*** ../vim-7.3.589/src/mark.c 2011-02-25 15:11:17.000000000 +0100 ---- src/mark.c 2012-07-06 17:47:23.000000000 +0200 -*************** -*** 98,103 **** ---- 98,116 ---- - return OK; - } - -+ #ifdef FEAT_VISUAL -+ if (c == '<') -+ { -+ curbuf->b_visual.vi_start = *pos; -+ return OK; -+ } -+ if (c == '>') -+ { -+ curbuf->b_visual.vi_end = *pos; -+ return OK; -+ } -+ #endif -+ - #ifndef EBCDIC - if (c > 'z') /* some islower() and isupper() cannot handle - characters above 127 */ -*** ../vim-7.3.589/src/version.c 2012-07-06 16:49:37.000000000 +0200 ---- src/version.c 2012-07-06 17:49:00.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 590, - /**/ - --- -The primary purpose of the DATA statement is to give names to constants; -instead of referring to pi as 3.141592653589793 at every appearance, the -variable PI can be given that value with a DATA statement and used instead -of the longer form of the constant. This also simplifies modifying the -program, should the value of pi change. - -- FORTRAN manual for Xerox Computers - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.591 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.591 -Problem: Can only move to a tab by absolute number. -Solution: Move a number of tabs to the left or the right. (Lech Lorens) -Files: runtime/doc/tabpage.txt, src/ex_cmds.h, src/ex_docmd.c, - src/testdir/test62.in, src/testdir/test62.ok, src/window.c - - -*** ../vim-7.3.590/runtime/doc/tabpage.txt 2010-08-15 21:57:17.000000000 +0200 ---- runtime/doc/tabpage.txt 2012-07-06 18:10:06.000000000 +0200 -*************** -*** 173,182 **** ---- 173,192 ---- - REORDERING TAB PAGES: - - :tabm[ove] [N] *:tabm* *:tabmove* -+ :[N]tabm[ove] - Move the current tab page to after tab page N. Use zero to - make the current tab page the first one. Without N the tab - page is made the last one. - -+ :tabm[ove] +[N] -+ :tabm[ove] -[N] -+ Move the current tab page N places to the right (with +) or to -+ the left (with -). -+ -+ Note that although it is possible to move a tab behind the N-th one by using -+ :Ntabmove, it is impossible to move it by N places by using :+Ntabmove. For -+ clarification what +N means in this context see |[range]|. -+ - - LOOPING OVER TAB PAGES: - -*** ../vim-7.3.590/src/ex_cmds.h 2012-05-18 18:47:11.000000000 +0200 ---- src/ex_cmds.h 2012-07-06 18:10:13.000000000 +0200 -*************** -*** 944,950 **** - EX(CMD_tabfirst, "tabfirst", ex_tabnext, - TRLBAR), - EX(CMD_tabmove, "tabmove", ex_tabmove, -! RANGE|NOTADR|ZEROR|COUNT|TRLBAR|ZEROR), - EX(CMD_tablast, "tablast", ex_tabnext, - TRLBAR), - EX(CMD_tabnext, "tabnext", ex_tabnext, ---- 944,950 ---- - EX(CMD_tabfirst, "tabfirst", ex_tabnext, - TRLBAR), - EX(CMD_tabmove, "tabmove", ex_tabmove, -! RANGE|NOTADR|ZEROR|EXTRA|NOSPC|TRLBAR), - EX(CMD_tablast, "tablast", ex_tabnext, - TRLBAR), - EX(CMD_tabnext, "tabnext", ex_tabnext, -*** ../vim-7.3.590/src/ex_docmd.c 2012-06-06 19:02:40.000000000 +0200 ---- src/ex_docmd.c 2012-07-06 18:16:25.000000000 +0200 -*************** -*** 7478,7484 **** - ex_tabmove(eap) - exarg_T *eap; - { -! tabpage_move(eap->addr_count == 0 ? 9999 : (int)eap->line2); - } - - /* ---- 7478,7519 ---- - ex_tabmove(eap) - exarg_T *eap; - { -! int tab_number = 9999; -! -! if (eap->arg && *eap->arg != NUL) -! { -! char_u *p = eap->arg; -! int relative = 0; /* argument +N/-N means: move N places to the -! * right/left relative to the current position. */ -! -! if (*eap->arg == '-') -! { -! relative = -1; -! p = eap->arg + 1; -! } -! else if (*eap->arg == '+') -! { -! relative = 1; -! p = eap->arg + 1; -! } -! else -! p = eap->arg; -! -! if (p == skipdigits(p)) -! { -! /* No numbers as argument. */ -! eap->errmsg = e_invarg; -! return; -! } -! -! tab_number = getdigits(&p); -! if (relative != 0) -! tab_number = tab_number * relative + tabpage_index(curtab) - 1;; -! } -! else if (eap->addr_count != 0) -! tab_number = eap->line2; -! -! tabpage_move(tab_number); - } - - /* -*** ../vim-7.3.590/src/testdir/test62.in 2012-03-07 22:55:17.000000000 +0100 ---- src/testdir/test62.in 2012-07-06 18:10:13.000000000 +0200 -*************** -*** 93,98 **** ---- 93,126 ---- - :endif - :" - :" -+ :for i in range(9) | tabnew | endfor -+ 1gt -+ Go=tabpagenr()
-+ :tabmove 5 -+ i=tabpagenr()
-+ :tabmove -2 -+ i=tabpagenr()
-+ :tabmove +4 -+ i=tabpagenr()
-+ :tabmove -+ i=tabpagenr()
-+ :tabmove -20 -+ i=tabpagenr()
-+ :tabmove +20 -+ i=tabpagenr()
-+ :3tabmove -+ i=tabpagenr()
-+ :7tabmove 5 -+ i=tabpagenr()
-+ :let a='No error caught.' -+ :try -+ :tabmove foo -+ :catch E474 -+ :let a='E474 caught.' -+ :endtry -+ i=a
-+ :" -+ :" - :/^Results/,$w! test.out - :qa! - ENDTEST -*** ../vim-7.3.590/src/testdir/test62.ok 2012-02-22 19:13:00.000000000 +0100 ---- src/testdir/test62.ok 2012-07-06 18:10:13.000000000 +0200 -*************** -*** 8,10 **** ---- 8,20 ---- - tab drop 1: pass - tab drop 2: pass - tab drop 3: pass -+ 1 -+ 6 -+ 4 -+ 8 -+ 10 -+ 1 -+ 10 -+ 4 -+ 6 -+ E474 caught. -*** ../vim-7.3.590/src/window.c 2012-07-06 16:39:43.000000000 +0200 ---- src/window.c 2012-07-06 18:10:13.000000000 +0200 -*************** -*** 3929,3935 **** - } - - /* Re-insert it at the specified position. */ -! if (n == 0) - { - curtab->tp_next = first_tabpage; - first_tabpage = curtab; ---- 3929,3935 ---- - } - - /* Re-insert it at the specified position. */ -! if (n <= 0) - { - curtab->tp_next = first_tabpage; - first_tabpage = curtab; -*** ../vim-7.3.590/src/version.c 2012-07-06 17:51:24.000000000 +0200 ---- src/version.c 2012-07-06 18:11:08.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 591, - /**/ - --- -Bare feet magnetize sharp metal objects so they point upward from the -floor -- especially in the dark. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.592 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.592 -Problem: Vim on GTK does not support g:browsefilter. -Solution: Add a GtkFileFilter to the file chooser. (Christian Brabandt) -Files: src/gui_gtk.c - - -*** ../vim-7.3.591/src/gui_gtk.c 2012-06-06 16:14:36.000000000 +0200 ---- src/gui_gtk.c 2012-07-10 13:08:06.000000000 +0200 -*************** -*** 840,846 **** - char_u *dflt, - char_u *ext UNUSED, - char_u *initdir, -! char_u *filter UNUSED) - { - #ifdef USE_FILE_CHOOSER - GtkWidget *fc; ---- 840,846 ---- - char_u *dflt, - char_u *ext UNUSED, - char_u *initdir, -! char_u *filter) - { - #ifdef USE_FILE_CHOOSER - GtkWidget *fc; -*************** -*** 848,853 **** ---- 848,854 ---- - char_u dirbuf[MAXPATHL]; - guint log_handler; - const gchar *domain = "Gtk"; -+ GtkFileFilter *gfilter; - - title = CONVERT_TO_UTF8(title); - -*************** -*** 879,884 **** ---- 880,924 ---- - NULL); - gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(fc), - (const gchar *)dirbuf); -+ -+ if (filter != NULL && *filter != NUL) -+ { -+ int i = 0; -+ char_u *patt; -+ char_u *p = filter; -+ -+ gfilter = gtk_file_filter_new(); -+ patt = alloc(STRLEN(filter)); -+ while (p != NULL && *p != NUL) -+ { -+ if (*p == '\n' || *p == ';' || *p == '\t') -+ { -+ STRNCPY(patt, filter, i); -+ patt[i] = '\0'; -+ if (*p == '\t') -+ gtk_file_filter_set_name(gfilter, (gchar *)patt); -+ else -+ { -+ gtk_file_filter_add_pattern(gfilter, (gchar *)patt); -+ if (*p == '\n') -+ { -+ gtk_file_chooser_add_filter((GtkFileChooser *)fc, -+ gfilter); -+ if (*(p + 1) != NUL) -+ gfilter = gtk_file_filter_new(); -+ } -+ } -+ filter = ++p; -+ i = 0; -+ } -+ else -+ { -+ p++; -+ i++; -+ } -+ } -+ vim_free(patt); -+ } - if (saving && dflt != NULL && *dflt != NUL) - gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(fc), (char *)dflt); - -*************** -*** 1304,1310 **** - gtk_widget_show(entry); - - /* Make Enter work like pressing OK. */ -! gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE); - - text = CONVERT_TO_UTF8(textfield); - gtk_entry_set_text(GTK_ENTRY(entry), (const char *)text); ---- 1344,1350 ---- - gtk_widget_show(entry); - - /* Make Enter work like pressing OK. */ -! gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE); - - text = CONVERT_TO_UTF8(textfield); - gtk_entry_set_text(GTK_ENTRY(entry), (const char *)text); -*** ../vim-7.3.591/src/version.c 2012-07-06 18:27:34.000000000 +0200 ---- src/version.c 2012-07-10 13:00:29.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 592, - /**/ - --- -To be rich is not the end, but only a change of worries. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.593 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.593 -Problem: No easy way to decide if b:browsefilter will work. -Solution: Add the browsefilter feature. -Files: src/gui_gtk.c, src/eval.c, src/vim.h - - -*** ../vim-7.3.592/src/gui_gtk.c 2012-07-10 13:12:46.000000000 +0200 ---- src/gui_gtk.c 2012-07-10 13:40:38.000000000 +0200 -*************** -*** 779,787 **** - /* - * Implementation of the file selector related stuff - */ -- #if GTK_CHECK_VERSION(2,4,0) -- # define USE_FILE_CHOOSER -- #endif - - #ifndef USE_FILE_CHOOSER - static void ---- 779,784 ---- -*** ../vim-7.3.592/src/eval.c 2012-06-29 12:54:32.000000000 +0200 ---- src/eval.c 2012-07-10 13:34:10.000000000 +0200 -*************** -*** 12044,12049 **** ---- 12044,12054 ---- - "all_builtin_terms", - # endif - #endif -+ #if defined(FEAT_BROWSE) && (defined(USE_FILE_CHOOSER) \ -+ || defined(FEAT_GUI_W32) \ -+ || defined(FEAT_GUI_MOTIF)) -+ "browsefilter", -+ #endif - #ifdef FEAT_BYTEOFF - "byte_offset", - #endif -*** ../vim-7.3.592/src/vim.h 2012-06-13 17:28:51.000000000 +0200 ---- src/vim.h 2012-07-10 13:30:44.000000000 +0200 -*************** -*** 2125,2130 **** ---- 2125,2136 ---- - # endif - #endif - -+ #if defined(FEAT_BROWSE) && defined(GTK_CHECK_VERSION) -+ # if GTK_CHECK_VERSION(2,4,0) -+ # define USE_FILE_CHOOSER -+ # endif -+ #endif -+ - #ifndef FEAT_NETBEANS_INTG - # undef NBDEBUG - #endif -*** ../vim-7.3.592/src/version.c 2012-07-10 13:12:46.000000000 +0200 ---- src/version.c 2012-07-10 13:34:50.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 593, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -102. When filling out your driver's license application, you give - your IP address. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.594 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.594 -Problem: The X command server doesn't work perfectly. It sends an empty - reply for as-keys requests. -Solution: Remove duplicate ga_init2(). Do not send a reply for as-keys - requests. (Brian Burns) -Files: src/if_xcmdsrv.c - - -*** ../vim-7.3.593/src/if_xcmdsrv.c 2010-08-15 21:57:27.000000000 +0200 ---- src/if_xcmdsrv.c 2012-07-10 14:15:59.000000000 +0200 -*************** -*** 655,661 **** - if (SendInit(dpy) < 0) - return NULL; - } -- ga_init2(&ga, 1, 100); - - /* - * Read the registry property. ---- 655,660 ---- -*************** -*** 1198,1206 **** - if ((*p == 'c' || *p == 'k') && (p[1] == 0)) - { - Window resWindow; -! char_u *name, *script, *serial, *end, *res; - Bool asKeys = *p == 'k'; -- garray_T reply; - char_u *enc; - - /* ---- 1197,1204 ---- - if ((*p == 'c' || *p == 'k') && (p[1] == 0)) - { - Window resWindow; -! char_u *name, *script, *serial, *end; - Bool asKeys = *p == 'k'; - char_u *enc; - - /* -*************** -*** 1256,1305 **** - if (script == NULL || name == NULL) - continue; - -! /* -! * Initialize the result property, so that we're ready at any -! * time if we need to return an error. -! */ -! if (resWindow != None) -! { -! ga_init2(&reply, 1, 100); - #ifdef FEAT_MBYTE -! ga_grow(&reply, 50 + STRLEN(p_enc)); -! sprintf(reply.ga_data, "%cr%c-E %s%c-s %s%c-r ", - 0, 0, p_enc, 0, serial, 0); -! reply.ga_len = 14 + STRLEN(p_enc) + STRLEN(serial); - #else -! ga_grow(&reply, 50); -! sprintf(reply.ga_data, "%cr%c-s %s%c-r ", 0, 0, serial, 0); -! reply.ga_len = 10 + STRLEN(serial); - #endif -! } -! res = NULL; -! if (serverName != NULL && STRICMP(name, serverName) == 0) -! { -! script = serverConvert(enc, script, &tofree); -! if (asKeys) -! server_to_input_buf(script); -! else -! res = eval_client_expr_to_string(script); -! vim_free(tofree); -! } -! if (resWindow != None) -! { -! if (res != NULL) -! ga_concat(&reply, res); -! else if (asKeys == 0) -! { -! ga_concat(&reply, (char_u *)_(e_invexprmsg)); -! ga_append(&reply, 0); -! ga_concat(&reply, (char_u *)"-c 1"); -! } -! ga_append(&reply, NUL); -! (void)AppendPropCarefully(dpy, resWindow, commProperty, -! reply.ga_data, reply.ga_len); -! ga_clear(&reply); -! } -! vim_free(res); - } - else if (*p == 'r' && p[1] == 0) - { ---- 1254,1305 ---- - if (script == NULL || name == NULL) - continue; - -! if (serverName != NULL && STRICMP(name, serverName) == 0) -! { -! script = serverConvert(enc, script, &tofree); -! if (asKeys) -! server_to_input_buf(script); -! else -! { -! char_u *res; -! -! res = eval_client_expr_to_string(script); -! if (resWindow != None) -! { -! garray_T reply; -! -! /* Initialize the result property. */ -! ga_init2(&reply, 1, 100); - #ifdef FEAT_MBYTE -! ga_grow(&reply, 50 + STRLEN(p_enc)); -! sprintf(reply.ga_data, "%cr%c-E %s%c-s %s%c-r ", - 0, 0, p_enc, 0, serial, 0); -! reply.ga_len = 14 + STRLEN(p_enc) + STRLEN(serial); - #else -! ga_grow(&reply, 50); -! sprintf(reply.ga_data, "%cr%c-s %s%c-r ", -! 0, 0, serial, 0); -! reply.ga_len = 10 + STRLEN(serial); - #endif -! -! /* Evaluate the expression and return the result. */ -! if (res != NULL) -! ga_concat(&reply, res); -! else -! { -! ga_concat(&reply, (char_u *)_(e_invexprmsg)); -! ga_append(&reply, 0); -! ga_concat(&reply, (char_u *)"-c 1"); -! } -! ga_append(&reply, NUL); -! (void)AppendPropCarefully(dpy, resWindow, commProperty, -! reply.ga_data, reply.ga_len); -! ga_clear(&reply); -! } -! vim_free(res); -! } -! vim_free(tofree); -! } - } - else if (*p == 'r' && p[1] == 0) - { -*** ../vim-7.3.593/src/version.c 2012-07-10 13:41:09.000000000 +0200 ---- src/version.c 2012-07-10 14:17:50.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 594, - /**/ - --- -A meeting is an event at which the minutes are kept and the hours are lost. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.595 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.595 -Problem: The X command server responds slowly -Solution: Change the loop that waits for replies. (Brian Burns) -Files: src/if_xcmdsrv.c - - -*** ../vim-7.3.594/src/if_xcmdsrv.c 2012-07-10 14:25:00.000000000 +0200 ---- src/if_xcmdsrv.c 2012-07-10 14:44:13.000000000 +0200 -*************** -*** 572,632 **** - { - time_t start; - time_t now; -- time_t lastChk = 0; - XEvent event; -! XPropertyEvent *e = (XPropertyEvent *)&event; -! # define SEND_MSEC_POLL 50 - - time(&start); -! while (endCond(endData) == 0) - { - time(&now); - if (seconds >= 0 && (now - start) >= seconds) - break; -! if (now != lastChk) -! { -! lastChk = now; -! if (!WindowValid(dpy, w)) -! break; -! /* -! * Sometimes the PropertyChange event doesn't come. -! * This can be seen in eg: vim -c 'echo remote_expr("gvim", "3+2")' -! */ -! serverEventProc(dpy, NULL); -! } - if (localLoop) - { -- /* Just look out for the answer without calling back into Vim */ - #ifndef HAVE_SELECT -- struct pollfd fds; -- -- fds.fd = ConnectionNumber(dpy); -- fds.events = POLLIN; - if (poll(&fds, 1, SEND_MSEC_POLL) < 0) - break; - #else -! fd_set fds; -! struct timeval tv; -! -! tv.tv_sec = 0; -! tv.tv_usec = SEND_MSEC_POLL * 1000; -! FD_ZERO(&fds); -! FD_SET(ConnectionNumber(dpy), &fds); -! if (select(ConnectionNumber(dpy) + 1, &fds, NULL, NULL, &tv) < 0) - break; - #endif -- while (XEventsQueued(dpy, QueuedAfterReading) > 0) -- { -- XNextEvent(dpy, &event); -- if (event.type == PropertyNotify && e->window == commWindow) -- serverEventProc(dpy, &event); -- } - } - else - { - if (got_int) - break; -! ui_delay((long)SEND_MSEC_POLL, TRUE); - ui_breakcheck(); - } - } ---- 572,626 ---- - { - time_t start; - time_t now; - XEvent event; -! -! #define UI_MSEC_DELAY 50 -! #define SEND_MSEC_POLL 500 -! #ifndef HAVE_SELECT -! struct pollfd fds; -! -! fds.fd = ConnectionNumber(dpy); -! fds.events = POLLIN; -! #else -! fd_set fds; -! struct timeval tv; -! -! tv.tv_sec = 0; -! tv.tv_usec = SEND_MSEC_POLL * 1000; -! FD_ZERO(&fds); -! FD_SET(ConnectionNumber(dpy), &fds); -! #endif - - time(&start); -! while (TRUE) - { -+ while (XCheckWindowEvent(dpy, commWindow, PropertyChangeMask, &event)) -+ serverEventProc(dpy, &event); -+ -+ if (endCond(endData) != 0) -+ break; -+ if (!WindowValid(dpy, w)) -+ break; - time(&now); - if (seconds >= 0 && (now - start) >= seconds) - break; -! -! /* Just look out for the answer without calling back into Vim */ - if (localLoop) - { - #ifndef HAVE_SELECT - if (poll(&fds, 1, SEND_MSEC_POLL) < 0) - break; - #else -! if (select(FD_SETSIZE, &fds, NULL, NULL, &tv) < 0) - break; - #endif - } - else - { - if (got_int) - break; -! ui_delay((long)UI_MSEC_DELAY, TRUE); - ui_breakcheck(); - } - } -*** ../vim-7.3.594/src/version.c 2012-07-10 14:25:00.000000000 +0200 ---- src/version.c 2012-07-10 14:52:16.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 595, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -104. When people ask about the Presidential Election you ask "Which country?" - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.596 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.596 -Problem: Can't remove all signs for a file or buffer. -Solution: Support "*" for the sign id. (Christian Brabandt) -Files: runtime/doc/sign.txt, src/buffer.c, src/ex_cmds.c, - src/proto/buffer.pro - - -*** ../vim-7.3.595/runtime/doc/sign.txt 2010-08-15 21:57:17.000000000 +0200 ---- runtime/doc/sign.txt 2012-07-10 15:05:19.000000000 +0200 -*************** -*** 150,157 **** - Remove the previously placed sign {id} from file {fname}. - See remark above about {fname} |:sign-fname|. - - :sign unplace {id} buffer={nr} -! Same, but use buffer {nr}. - - :sign unplace {id} - Remove the previously placed sign {id} from all files it ---- 153,166 ---- - Remove the previously placed sign {id} from file {fname}. - See remark above about {fname} |:sign-fname|. - -+ :sign unplace * file={fname} -+ Remove all placed signs in file {fname}. -+ - :sign unplace {id} buffer={nr} -! Remove the previously placed sign {id} from buffer {nr}. -! -! :sign unplace * buffer={nr} -! Remove all placed signs in buffer {nr}. - - :sign unplace {id} - Remove the previously placed sign {id} from all files it -*** ../vim-7.3.595/src/buffer.c 2012-07-06 16:21:58.000000000 +0200 ---- src/buffer.c 2012-07-10 15:06:05.000000000 +0200 -*************** -*** 57,63 **** - - #if defined(FEAT_SIGNS) - static void insert_sign __ARGS((buf_T *buf, signlist_T *prev, signlist_T *next, int id, linenr_T lnum, int typenr)); -- static void buf_delete_signs __ARGS((buf_T *buf)); - #endif - - #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX) ---- 57,62 ---- -*************** -*** 5537,5543 **** - /* - * Delete signs in buffer "buf". - */ -! static void - buf_delete_signs(buf) - buf_T *buf; - { ---- 5536,5542 ---- - /* - * Delete signs in buffer "buf". - */ -! void - buf_delete_signs(buf) - buf_T *buf; - { -*** ../vim-7.3.595/src/ex_cmds.c 2012-05-18 16:24:06.000000000 +0200 ---- src/ex_cmds.c 2012-07-10 15:14:22.000000000 +0200 -*************** -*** 6997,7002 **** ---- 6997,7012 ---- - lnum = atoi((char *)arg); - arg = skiptowhite(arg); - } -+ else if (STRNCMP(arg, "*", 1) == 0 && idx == SIGNCMD_UNPLACE) -+ { -+ if (id != -1) -+ { -+ EMSG(_(e_invarg)); -+ return; -+ } -+ id = -2; -+ arg = skiptowhite(arg + 1); -+ } - else if (STRNCMP(arg, "name=", 5) == 0) - { - arg += 5; -*************** -*** 7033,7039 **** - { - EMSG2(_("E158: Invalid buffer name: %s"), arg); - } -! else if (id <= 0) - { - if (lnum >= 0 || sign_name != NULL) - EMSG(_(e_invarg)); ---- 7043,7049 ---- - { - EMSG2(_("E158: Invalid buffer name: %s"), arg); - } -! else if (id <= 0 && !(idx == SIGNCMD_UNPLACE && id == -2)) - { - if (lnum >= 0 || sign_name != NULL) - EMSG(_(e_invarg)); -*************** -*** 7074,7084 **** - } - else if (idx == SIGNCMD_UNPLACE) - { -- /* ":sign unplace {id} file={fname}" */ - if (lnum >= 0 || sign_name != NULL) - EMSG(_(e_invarg)); - else - { - lnum = buf_delsign(buf, id); - update_debug_sign(buf, lnum); - } ---- 7084,7100 ---- - } - else if (idx == SIGNCMD_UNPLACE) - { - if (lnum >= 0 || sign_name != NULL) - EMSG(_(e_invarg)); -+ else if (id == -2) -+ { -+ /* ":sign unplace * file={fname}" */ -+ redraw_buf_later(buf, NOT_VALID); -+ buf_delete_signs(buf); -+ } - else - { -+ /* ":sign unplace {id} file={fname}" */ - lnum = buf_delsign(buf, id); - update_debug_sign(buf, lnum); - } -*** ../vim-7.3.595/src/proto/buffer.pro 2012-02-22 14:58:24.000000000 +0100 ---- src/proto/buffer.pro 2012-07-10 15:06:10.000000000 +0200 -*************** -*** 60,65 **** ---- 60,66 ---- - int buf_findsign_id __ARGS((buf_T *buf, linenr_T lnum)); - int buf_findsigntype_id __ARGS((buf_T *buf, linenr_T lnum, int typenr)); - int buf_signcount __ARGS((buf_T *buf, linenr_T lnum)); -+ void buf_delete_signs __ARGS((buf_T *buf)); - void buf_delete_all_signs __ARGS((void)); - void sign_list_placed __ARGS((buf_T *rbuf)); - void sign_mark_adjust __ARGS((linenr_T line1, linenr_T line2, long amount, long amount_after)); -*** ../vim-7.3.595/src/version.c 2012-07-10 14:56:42.000000000 +0200 ---- src/version.c 2012-07-10 15:16:40.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 596, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -105. When someone asks you for your address, you tell them your URL. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.597 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.597 -Problem: 'clipboard' "autoselect" only applies to the * register. (Sergey - Vakulenko) -Solution: Make 'autoselect' work for the + register. (Christian Brabant) - Add the "autoselectplus" option in 'clipboard' and the "P" flag in - 'guioptions'. -Files: runtime/doc/options.txt, src/normal.c, src/ops.c, src/screen.c, - src/ui.c, src/globals.h, src/proto/ui.pro, src/option.h, src/gui.c - - -*** ../vim-7.3.596/runtime/doc/options.txt 2012-02-20 22:18:23.000000000 +0100 ---- runtime/doc/options.txt 2012-07-10 15:40:35.000000000 +0200 -*************** -*** 1437,1442 **** ---- 1452,1458 ---- - This option is a list of comma separated names. - These names are recognized: - -+ *clipboard-unnamed* - unnamed When included, Vim will use the clipboard register '*' - for all yank, delete, change and put operations which - would normally go to the unnamed register. When a -*************** -*** 1446,1460 **** - explicitly accessed using the "* notation. Also see - |gui-clipboard|. - - unnamedplus A variant of "unnamed" flag which uses the clipboard - register '+' (|quoteplus|) instead of register '*' for - all operations except yank. Yank shall copy the text - into register '+' and also into '*' when "unnamed" is - included. -! Only available with the |+x11| feature. - Availability can be checked with: > - if has('unnamedplus') - < - autoselect Works like the 'a' flag in 'guioptions': If present, - then whenever Visual mode is started, or the Visual - area extended, Vim tries to become the owner of the ---- 1462,1478 ---- - explicitly accessed using the "* notation. Also see - |gui-clipboard|. - -+ *clipboard-unnamedplus* - unnamedplus A variant of "unnamed" flag which uses the clipboard - register '+' (|quoteplus|) instead of register '*' for - all operations except yank. Yank shall copy the text - into register '+' and also into '*' when "unnamed" is - included. -! Only available with the |+X11| feature. - Availability can be checked with: > - if has('unnamedplus') - < -+ *clipboard-autoselect* - autoselect Works like the 'a' flag in 'guioptions': If present, - then whenever Visual mode is started, or the Visual - area extended, Vim tries to become the owner of the -*************** -*** 1466,1474 **** ---- 1484,1499 ---- - "autoselect" flag is used. - Also applies to the modeless selection. - -+ *clipboard-autoselectplus* -+ autoselectplus Like "autoselect" but using the + register instead of -+ the * register. Compare to the 'P' flag in -+ 'guioptions'. -+ -+ *clipboard-autoselectml* - autoselectml Like "autoselect", but for the modeless selection - only. Compare to the 'A' flag in 'guioptions'. - -+ *clipboard-html* - html When the clipboard contains HTML, use this when - pasting. When putting text on the clipboard, mark it - as HTML. This works to copy rendered HTML from -*************** -*** 1479,1484 **** ---- 1504,1510 ---- - Only supported for GTK version 2 and later. - Only available with the |+multi_byte| feature. - -+ *clipboard-exclude* - exclude:{pattern} - Defines a pattern that is matched against the name of - the terminal 'term'. If there is a match, no -*************** -*** 3547,3552 **** ---- 3600,3608 ---- - windowing system's global selection unless explicitly told to - by a yank or delete operation for the "* register. - The same applies to the modeless selection. -+ *'go-P'* -+ 'P' Like autoselect but using the "+ register instead of the "* -+ register. - *'go-A'* - 'A' Autoselect for the modeless selection. Like 'a', but only - applies to the modeless selection. -*** ../vim-7.3.596/src/normal.c 2012-06-29 13:56:01.000000000 +0200 ---- src/normal.c 2012-07-10 15:44:24.000000000 +0200 -*************** -*** 1451,1457 **** - * This could call do_pending_operator() recursively, but that's OK - * because gui_yank will be TRUE for the nested call. - */ -! if (clip_star.available - && oap->op_type != OP_NOP - && !gui_yank - # ifdef FEAT_VISUAL ---- 1451,1457 ---- - * This could call do_pending_operator() recursively, but that's OK - * because gui_yank will be TRUE for the nested call. - */ -! if ((clip_star.available || clip_plus.available) - && oap->op_type != OP_NOP - && !gui_yank - # ifdef FEAT_VISUAL -*** ../vim-7.3.596/src/ops.c 2012-06-29 13:34:15.000000000 +0200 ---- src/ops.c 2012-07-10 16:20:29.000000000 +0200 -*************** -*** 962,969 **** - * selection too. */ - if (name == '*' && clip_star.available) - { -! if (clip_isautosel()) -! clip_update_selection(); - may_get_selection(name); - } - #endif ---- 962,975 ---- - * selection too. */ - if (name == '*' && clip_star.available) - { -! if (clip_isautosel_star()) -! clip_update_selection(&clip_star); -! may_get_selection(name); -! } -! if (name == '+' && clip_plus.available) -! { -! if (clip_isautosel_plus()) -! clip_update_selection(&clip_plus); - may_get_selection(name); - } - #endif -*************** -*** 3190,3196 **** - - clip_own_selection(&clip_plus); - clip_gen_set_selection(&clip_plus); -! if (!clip_isautosel() && !did_star && curr == &(y_regs[PLUS_REGISTER])) - { - copy_yank_reg(&(y_regs[STAR_REGISTER])); - clip_own_selection(&clip_star); ---- 3196,3203 ---- - - clip_own_selection(&clip_plus); - clip_gen_set_selection(&clip_plus); -! if (!clip_isautosel_star() && !did_star -! && curr == &(y_regs[PLUS_REGISTER])) - { - copy_yank_reg(&(y_regs[STAR_REGISTER])); - clip_own_selection(&clip_star); -*** ../vim-7.3.596/src/screen.c 2012-06-13 18:06:32.000000000 +0200 ---- src/screen.c 2012-07-10 16:39:01.000000000 +0200 -*************** -*** 519,526 **** - # endif - # ifdef FEAT_CLIPBOARD - /* When Visual area changed, may have to update selection. */ -! if (clip_star.available && clip_isautosel()) -! clip_update_selection(); - # endif - #ifdef FEAT_GUI - /* Remove the cursor before starting to do anything, because ---- 519,528 ---- - # endif - # ifdef FEAT_CLIPBOARD - /* When Visual area changed, may have to update selection. */ -! if (clip_star.available && clip_isautosel_star()) -! clip_update_selection(&clip_star); -! if (clip_plus.available && clip_isautosel_plus()) -! clip_update_selection(&clip_plus); - # endif - #ifdef FEAT_GUI - /* Remove the cursor before starting to do anything, because -*************** -*** 814,821 **** - - #ifdef FEAT_CLIPBOARD - /* When Visual area changed, may have to update selection. */ -! if (clip_star.available && clip_isautosel()) -! clip_update_selection(); - #endif - - win_update(wp); ---- 816,825 ---- - - #ifdef FEAT_CLIPBOARD - /* When Visual area changed, may have to update selection. */ -! if (clip_star.available && clip_isautosel_star()) -! clip_update_selection(&clip_star); -! if (clip_plus.available && clip_isautosel_plus()) -! clip_update_selection(&clip_plus); - #endif - - win_update(wp); -*************** -*** 3000,3006 **** - area_highlighting = TRUE; - attr = hl_attr(HLF_V); - #if defined(FEAT_CLIPBOARD) && defined(FEAT_X11) -! if (clip_star.available && !clip_star.owned && clip_isautosel()) - attr = hl_attr(HLF_VNC); - #endif - } ---- 3004,3013 ---- - area_highlighting = TRUE; - attr = hl_attr(HLF_V); - #if defined(FEAT_CLIPBOARD) && defined(FEAT_X11) -! if ((clip_star.available && !clip_star.owned -! && clip_isautosel_star()) -! || (clip_plus.available && !clip_plus.owned -! && clip_isautosel_plus())) - attr = hl_attr(HLF_VNC); - #endif - } -*************** -*** 9060,9066 **** - || (wp != NULL && wp->w_width != Columns) - # endif - ) -! clip_clear_selection(); - else - clip_scroll_selection(-line_count); - #endif ---- 9067,9073 ---- - || (wp != NULL && wp->w_width != Columns) - # endif - ) -! clip_clear_selection(&clip_star); - else - clip_scroll_selection(-line_count); - #endif -*************** -*** 9281,9287 **** - || (wp != NULL && wp->w_width != Columns) - # endif - ) -! clip_clear_selection(); - else - clip_scroll_selection(line_count); - #endif ---- 9288,9294 ---- - || (wp != NULL && wp->w_width != Columns) - # endif - ) -! clip_clear_selection(&clip_star); - else - clip_scroll_selection(line_count); - #endif -*** ../vim-7.3.596/src/ui.c 2012-02-12 01:35:06.000000000 +0100 ---- src/ui.c 2012-07-10 16:43:17.000000000 +0200 -*************** -*** 381,386 **** ---- 381,388 ---- - - #if defined(FEAT_CLIPBOARD) || defined(PROTO) - -+ static void clip_copy_selection __ARGS((VimClipboard *clip)); -+ - /* - * Selection stuff using Visual mode, for cutting and pasting text to other - * windows. -*************** -*** 423,431 **** - * this is called whenever VIsual mode is ended. - */ - void -! clip_update_selection() - { -! pos_T start, end; - - /* If visual mode is only due to a redo command ("."), then ignore it */ - if (!redo_VIsual_busy && VIsual_active && (State & NORMAL)) ---- 425,434 ---- - * this is called whenever VIsual mode is ended. - */ - void -! clip_update_selection(clip) -! VimClipboard *clip; - { -! pos_T start, end; - - /* If visual mode is only due to a redo command ("."), then ignore it */ - if (!redo_VIsual_busy && VIsual_active && (State & NORMAL)) -*************** -*** 444,460 **** - start = curwin->w_cursor; - end = VIsual; - } -! if (!equalpos(clip_star.start, start) -! || !equalpos(clip_star.end, end) -! || clip_star.vmode != VIsual_mode) - { -! clip_clear_selection(); -! clip_star.start = start; -! clip_star.end = end; -! clip_star.vmode = VIsual_mode; -! clip_free_selection(&clip_star); -! clip_own_selection(&clip_star); -! clip_gen_set_selection(&clip_star); - } - } - } ---- 447,463 ---- - start = curwin->w_cursor; - end = VIsual; - } -! if (!equalpos(clip->start, start) -! || !equalpos(clip->end, end) -! || clip->vmode != VIsual_mode) - { -! clip_clear_selection(clip); -! clip->start = start; -! clip->end = end; -! clip->vmode = VIsual_mode; -! clip_free_selection(clip); -! clip_own_selection(clip); -! clip_gen_set_selection(clip); - } - } - } -*************** -*** 475,481 **** - int was_owned = cbd->owned; - - cbd->owned = (clip_gen_own_selection(cbd) == OK); -! if (!was_owned && cbd == &clip_star) - { - /* May have to show a different kind of highlighting for the - * selected area. There is no specific redraw command for this, ---- 478,484 ---- - int was_owned = cbd->owned; - - cbd->owned = (clip_gen_own_selection(cbd) == OK); -! if (!was_owned && (cbd == &clip_star || cbd == &clip_plus)) - { - /* May have to show a different kind of highlighting for the - * selected area. There is no specific redraw command for this, -*************** -*** 483,489 **** - if (cbd->owned - && (get_real_state() == VISUAL - || get_real_state() == SELECTMODE) -! && clip_isautosel() - && hl_attr(HLF_V) != hl_attr(HLF_VNC)) - redraw_curbuf_later(INVERTED_ALL); - } ---- 486,493 ---- - if (cbd->owned - && (get_real_state() == VISUAL - || get_real_state() == SELECTMODE) -! && (cbd == &clip_star ? clip_isautosel_star() -! : clip_isautosel_plus()) - && hl_attr(HLF_V) != hl_attr(HLF_VNC)) - redraw_curbuf_later(INVERTED_ALL); - } -*************** -*** 502,513 **** - #ifdef FEAT_X11 - int was_owned = cbd->owned; - #endif -! int visual_selection = (cbd == &clip_star); - - clip_free_selection(cbd); - cbd->owned = FALSE; - if (visual_selection) -! clip_clear_selection(); - clip_gen_lose_selection(cbd); - #ifdef FEAT_X11 - if (visual_selection) ---- 506,520 ---- - #ifdef FEAT_X11 - int was_owned = cbd->owned; - #endif -! int visual_selection = FALSE; -! -! if (cbd == &clip_star || cbd == &clip_plus) -! visual_selection = TRUE; - - clip_free_selection(cbd); - cbd->owned = FALSE; - if (visual_selection) -! clip_clear_selection(cbd); - clip_gen_lose_selection(cbd); - #ifdef FEAT_X11 - if (visual_selection) -*************** -*** 518,524 **** - if (was_owned - && (get_real_state() == VISUAL - || get_real_state() == SELECTMODE) -! && clip_isautosel() - && hl_attr(HLF_V) != hl_attr(HLF_VNC)) - { - update_curbuf(INVERTED_ALL); ---- 525,532 ---- - if (was_owned - && (get_real_state() == VISUAL - || get_real_state() == SELECTMODE) -! && (cbd == &clip_star ? -! clip_isautosel_star() : clip_isautosel_plus()) - && hl_attr(HLF_V) != hl_attr(HLF_VNC)) - { - update_curbuf(INVERTED_ALL); -*************** -*** 534,551 **** - #endif - } - -! void -! clip_copy_selection() -! { -! if (VIsual_active && (State & NORMAL) && clip_star.available) -! { -! if (clip_isautosel()) -! clip_update_selection(); -! clip_free_selection(&clip_star); -! clip_own_selection(&clip_star); -! if (clip_star.owned) -! clip_get_selection(&clip_star); -! clip_gen_set_selection(&clip_star); - } - } - ---- 542,559 ---- - #endif - } - -! static void -! clip_copy_selection(clip) -! VimClipboard *clip; -! { -! if (VIsual_active && (State & NORMAL) && clip->available) -! { -! clip_update_selection(clip); -! clip_free_selection(clip); -! clip_own_selection(clip); -! if (clip->owned) -! clip_get_selection(clip); -! clip_gen_set_selection(clip); - } - } - -*************** -*** 555,575 **** - void - clip_auto_select() - { -! if (clip_isautosel()) -! clip_copy_selection(); - } - - /* -! * Return TRUE if automatic selection of Visual area is desired. - */ - int -! clip_isautosel() - { - return ( - #ifdef FEAT_GUI - gui.in_use ? (vim_strchr(p_go, GO_ASEL) != NULL) : - #endif -! clip_autoselect); - } - - ---- 563,600 ---- - void - clip_auto_select() - { -! if (clip_isautosel_star()) -! clip_copy_selection(&clip_star); -! if (clip_isautosel_plus()) -! clip_copy_selection(&clip_plus); - } - - /* -! * Return TRUE if automatic selection of Visual area is desired for the * -! * register. - */ - int -! clip_isautosel_star() - { - return ( - #ifdef FEAT_GUI - gui.in_use ? (vim_strchr(p_go, GO_ASEL) != NULL) : - #endif -! clip_autoselect_star); -! } -! -! /* -! * Return TRUE if automatic selection of Visual area is desired for the + -! * register. -! */ -! int -! clip_isautosel_plus() -! { -! return ( -! #ifdef FEAT_GUI -! gui.in_use ? (vim_strchr(p_go, GO_ASELPLUS) != NULL) : -! #endif -! clip_autoselect_plus); - } - - -*************** -*** 657,663 **** - VimClipboard *cb = &clip_star; - - if (cb->state == SELECT_DONE) -! clip_clear_selection(); - - row = check_row(row); - col = check_col(col); ---- 682,688 ---- - VimClipboard *cb = &clip_star; - - if (cb->state == SELECT_DONE) -! clip_clear_selection(cb); - - row = check_row(row); - col = check_col(col); -*************** -*** 749,755 **** - printf("Selection ended: (%u,%u) to (%u,%u)\n", cb->start.lnum, - cb->start.col, cb->end.lnum, cb->end.col); - #endif -! if (clip_isautosel() - || ( - #ifdef FEAT_GUI - gui.in_use ? (vim_strchr(p_go, GO_ASELML) != NULL) : ---- 774,780 ---- - printf("Selection ended: (%u,%u) to (%u,%u)\n", cb->start.lnum, - cb->start.col, cb->end.lnum, cb->end.col); - #endif -! if (clip_isautosel_star() - || ( - #ifdef FEAT_GUI - gui.in_use ? (vim_strchr(p_go, GO_ASELML) != NULL) : -*************** -*** 932,947 **** - * Called from outside to clear selected region from the display - */ - void -! clip_clear_selection() - { -- VimClipboard *cb = &clip_star; - -! if (cb->state == SELECT_CLEARED) - return; - -! clip_invert_area((int)cb->start.lnum, cb->start.col, (int)cb->end.lnum, -! cb->end.col, CLIP_CLEAR); -! cb->state = SELECT_CLEARED; - } - - /* ---- 957,972 ---- - * Called from outside to clear selected region from the display - */ - void -! clip_clear_selection(cbd) -! VimClipboard *cbd; - { - -! if (cbd->state == SELECT_CLEARED) - return; - -! clip_invert_area((int)cbd->start.lnum, cbd->start.col, (int)cbd->end.lnum, -! cbd->end.col, CLIP_CLEAR); -! cbd->state = SELECT_CLEARED; - } - - /* -*************** -*** 954,960 **** - if (clip_star.state == SELECT_DONE - && row2 >= clip_star.start.lnum - && row1 <= clip_star.end.lnum) -! clip_clear_selection(); - } - - /* ---- 979,985 ---- - if (clip_star.state == SELECT_DONE - && row2 >= clip_star.start.lnum - && row1 <= clip_star.end.lnum) -! clip_clear_selection(&clip_star); - } - - /* -*** ../vim-7.3.596/src/globals.h 2012-06-29 12:35:40.000000000 +0200 ---- src/globals.h 2012-07-10 16:35:13.000000000 +0200 -*************** -*** 517,523 **** - # define CLIP_UNNAMED_PLUS 2 - EXTERN int clip_unnamed INIT(= 0); /* above two values or'ed */ - -! EXTERN int clip_autoselect INIT(= FALSE); - EXTERN int clip_autoselectml INIT(= FALSE); - EXTERN int clip_html INIT(= FALSE); - EXTERN regprog_T *clip_exclude_prog INIT(= NULL); ---- 517,524 ---- - # define CLIP_UNNAMED_PLUS 2 - EXTERN int clip_unnamed INIT(= 0); /* above two values or'ed */ - -! EXTERN int clip_autoselect_star INIT(= FALSE); -! EXTERN int clip_autoselect_plus INIT(= FALSE); - EXTERN int clip_autoselectml INIT(= FALSE); - EXTERN int clip_html INIT(= FALSE); - EXTERN regprog_T *clip_exclude_prog INIT(= NULL); -*** ../vim-7.3.596/src/proto/ui.pro 2010-08-15 21:57:28.000000000 +0200 ---- src/proto/ui.pro 2012-07-10 16:37:35.000000000 +0200 -*************** -*** 11,27 **** - void ui_new_shellsize __ARGS((void)); - void ui_breakcheck __ARGS((void)); - void clip_init __ARGS((int can_use)); -! void clip_update_selection __ARGS((void)); - void clip_own_selection __ARGS((VimClipboard *cbd)); - void clip_lose_selection __ARGS((VimClipboard *cbd)); -- void clip_copy_selection __ARGS((void)); - void clip_auto_select __ARGS((void)); -! int clip_isautosel __ARGS((void)); - void clip_modeless __ARGS((int button, int is_click, int is_drag)); - void clip_start_selection __ARGS((int col, int row, int repeated_click)); - void clip_process_selection __ARGS((int button, int col, int row, int_u repeated_click)); - void clip_may_redraw_selection __ARGS((int row, int col, int len)); -! void clip_clear_selection __ARGS((void)); - void clip_may_clear_selection __ARGS((int row1, int row2)); - void clip_scroll_selection __ARGS((int rows)); - void clip_copy_modeless_selection __ARGS((int both)); ---- 11,27 ---- - void ui_new_shellsize __ARGS((void)); - void ui_breakcheck __ARGS((void)); - void clip_init __ARGS((int can_use)); -! void clip_update_selection __ARGS((VimClipboard *clip)); - void clip_own_selection __ARGS((VimClipboard *cbd)); - void clip_lose_selection __ARGS((VimClipboard *cbd)); - void clip_auto_select __ARGS((void)); -! int clip_isautosel_star __ARGS((void)); -! int clip_isautosel_plus __ARGS((void)); - void clip_modeless __ARGS((int button, int is_click, int is_drag)); - void clip_start_selection __ARGS((int col, int row, int repeated_click)); - void clip_process_selection __ARGS((int button, int col, int row, int_u repeated_click)); - void clip_may_redraw_selection __ARGS((int row, int col, int len)); -! void clip_clear_selection __ARGS((VimClipboard *cbd)); - void clip_may_clear_selection __ARGS((int row1, int row2)); - void clip_scroll_selection __ARGS((int rows)); - void clip_copy_modeless_selection __ARGS((int both)); -*** ../vim-7.3.596/src/option.h 2012-06-06 16:12:54.000000000 +0200 ---- src/option.h 2012-07-10 15:54:32.000000000 +0200 -*************** -*** 229,234 **** ---- 229,235 ---- - #define GO_MENUS 'm' /* use menu bar */ - #define GO_NOSYSMENU 'M' /* don't source system menu */ - #define GO_POINTER 'p' /* pointer enter/leave callbacks */ -+ #define GO_ASELPLUS 'P' /* autoselectPlus */ - #define GO_RIGHT 'r' /* use right scrollbar */ - #define GO_VRIGHT 'R' /* right scrollbar with vert split */ - #define GO_TEAROFF 't' /* add tear-off menu items */ -*** ../vim-7.3.596/src/gui.c 2012-05-27 00:37:45.000000000 +0200 ---- src/gui.c 2012-07-10 16:43:34.000000000 +0200 -*************** -*** 3154,3160 **** - } - - if (clip_star.state != SELECT_CLEARED && !did_clip) -! clip_clear_selection(); - #endif - - /* Don't put events in the input queue now. */ ---- 3154,3160 ---- - } - - if (clip_star.state != SELECT_CLEARED && !did_clip) -! clip_clear_selection(&clip_star); - #endif - - /* Don't put events in the input queue now. */ -*** ../vim-7.3.596/src/version.c 2012-07-10 15:18:18.000000000 +0200 ---- src/version.c 2012-07-10 16:32:16.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 597, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -106. When told to "go to your room" you inform your parents that you - can't...because you were kicked out and banned. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.598 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.598 -Problem: Cannot act upon end of completion. (Taro Muraoka) -Solution: Add an autocommand event that is triggered when completion has - finished. (Idea by Florian Klein) -Files: src/edit.c, src/fileio.c, src/vim.h - - -*** ../vim-7.3.597/src/edit.c 2012-07-06 13:36:36.000000000 +0200 ---- src/edit.c 2012-07-10 17:02:37.000000000 +0200 -*************** -*** 3824,3829 **** ---- 3824,3834 ---- - if (want_cindent && in_cinkeys(KEY_COMPLETE, ' ', inindent(0))) - do_c_expr_indent(); - #endif -+ #ifdef FEAT_AUTOCMD -+ /* Trigger the CompleteDone event to give scripts a chance to act -+ * upon the completion. */ -+ apply_autocmds(EVENT_COMPLETEDONE, NULL, NULL, FALSE, curbuf); -+ #endif - } - } - -*** ../vim-7.3.597/src/fileio.c 2012-06-13 14:28:16.000000000 +0200 ---- src/fileio.c 2012-07-10 17:05:51.000000000 +0200 -*************** -*** 7643,7648 **** ---- 7643,7649 ---- - {"CmdwinEnter", EVENT_CMDWINENTER}, - {"CmdwinLeave", EVENT_CMDWINLEAVE}, - {"ColorScheme", EVENT_COLORSCHEME}, -+ {"CompleteDone", EVENT_COMPLETEDONE}, - {"CursorHold", EVENT_CURSORHOLD}, - {"CursorHoldI", EVENT_CURSORHOLDI}, - {"CursorMoved", EVENT_CURSORMOVED}, -*** ../vim-7.3.597/src/vim.h 2012-07-10 13:41:09.000000000 +0200 ---- src/vim.h 2012-07-10 17:06:24.000000000 +0200 -*************** -*** 1241,1246 **** ---- 1241,1247 ---- - EVENT_CMDWINENTER, /* after entering the cmdline window */ - EVENT_CMDWINLEAVE, /* before leaving the cmdline window */ - EVENT_COLORSCHEME, /* after loading a colorscheme */ -+ EVENT_COMPLETEDONE, /* after finishing insert complete */ - EVENT_FILEAPPENDPOST, /* after appending to a file */ - EVENT_FILEAPPENDPRE, /* before appending to a file */ - EVENT_FILEAPPENDCMD, /* append to a file using command */ -*** ../vim-7.3.597/src/version.c 2012-07-10 16:49:08.000000000 +0200 ---- src/version.c 2012-07-10 17:08:41.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 598, - /**/ - --- -Laughing helps. It's like jogging on the inside. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.599 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.599 (after 7.3.597) -Problem: Missing change in one file. -Solution: Patch for changed clip_autoselect(). -Files: src/option.c - - -*** ../vim-7.3.598/src/option.c 2012-06-29 15:51:26.000000000 +0200 ---- src/option.c 2012-07-10 16:35:07.000000000 +0200 -*************** -*** 7377,7383 **** - check_clipboard_option() - { - int new_unnamed = 0; -! int new_autoselect = FALSE; - int new_autoselectml = FALSE; - int new_html = FALSE; - regprog_T *new_exclude_prog = NULL; ---- 7377,7384 ---- - check_clipboard_option() - { - int new_unnamed = 0; -! int new_autoselect_star = FALSE; -! int new_autoselect_plus = FALSE; - int new_autoselectml = FALSE; - int new_html = FALSE; - regprog_T *new_exclude_prog = NULL; -*************** -*** 7398,7410 **** - p += 11; - } - else if (STRNCMP(p, "autoselect", 10) == 0 -! && (p[10] == ',' || p[10] == NUL)) - { -! new_autoselect = TRUE; - p += 10; - } - else if (STRNCMP(p, "autoselectml", 12) == 0 -! && (p[12] == ',' || p[12] == NUL)) - { - new_autoselectml = TRUE; - p += 12; ---- 7399,7417 ---- - p += 11; - } - else if (STRNCMP(p, "autoselect", 10) == 0 -! && (p[10] == ',' || p[10] == NUL)) - { -! new_autoselect_star = TRUE; - p += 10; - } -+ else if (STRNCMP(p, "autoselectplus", 14) == 0 -+ && (p[14] == ',' || p[14] == NUL)) -+ { -+ new_autoselect_plus = TRUE; -+ p += 14; -+ } - else if (STRNCMP(p, "autoselectml", 12) == 0 -! && (p[12] == ',' || p[12] == NUL)) - { - new_autoselectml = TRUE; - p += 12; -*************** -*** 7433,7439 **** - if (errmsg == NULL) - { - clip_unnamed = new_unnamed; -! clip_autoselect = new_autoselect; - clip_autoselectml = new_autoselectml; - clip_html = new_html; - vim_free(clip_exclude_prog); ---- 7440,7447 ---- - if (errmsg == NULL) - { - clip_unnamed = new_unnamed; -! clip_autoselect_star = new_autoselect_star; -! clip_autoselect_plus = new_autoselect_plus; - clip_autoselectml = new_autoselectml; - clip_html = new_html; - vim_free(clip_exclude_prog); -*** ../vim-7.3.598/src/version.c 2012-07-10 17:14:50.000000000 +0200 ---- src/version.c 2012-07-10 18:30:17.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 599, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -108. While reading a magazine, you look for the Zoom icon for a better - look at a photograph. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.600 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.600 -Problem: <f-args> is not expanded properly with DBCS encoding. -Solution: Skip over character instead of byte. (Yukihiro Nakadaira) -Files: src/ex_docmd.c - - -*** ../vim-7.3.599/src/ex_docmd.c 2012-07-06 18:27:34.000000000 +0200 ---- src/ex_docmd.c 2012-07-10 19:20:10.000000000 +0200 -*************** -*** 5845,5852 **** ---- 5845,5858 ---- - } - else - { -+ #ifdef FEAT_MBYTE -+ int charlen = (*mb_ptr2len)(p); -+ len += charlen; -+ p += charlen; -+ #else - ++len; - ++p; -+ #endif - } - } - -*************** -*** 5889,5895 **** - } - else - { -! *q++ = *p++; - } - } - *q++ = '"'; ---- 5895,5901 ---- - } - else - { -! MB_COPY_CHAR(p, q); - } - } - *q++ = '"'; -*** ../vim-7.3.599/src/version.c 2012-07-10 18:31:49.000000000 +0200 ---- src/version.c 2012-07-10 19:21:29.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 600, - /**/ - --- -In a world without walls and borders, who needs windows and gates? - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.601 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.601 -Problem: Bad code style. -Solution: Insert space, remove parens. -Files: src/farsi.c - - -*** ../vim-7.3.600/src/farsi.c 2010-08-15 21:57:28.000000000 +0200 ---- src/farsi.c 2012-07-12 21:59:15.000000000 +0200 -*************** -*** 1813,1819 **** - ptr[i] = toF_leading(ptr[i]); - ++i; - -! while(canF_Rjoin(ptr[i]) && (i < llen)) - { - ptr[i] = toF_Rjoin(ptr[i]); - if (F_isterm(ptr[i]) || !F_isalpha(ptr[i])) ---- 1813,1819 ---- - ptr[i] = toF_leading(ptr[i]); - ++i; - -! while (canF_Rjoin(ptr[i]) && i < llen) - { - ptr[i] = toF_Rjoin(ptr[i]); - if (F_isterm(ptr[i]) || !F_isalpha(ptr[i])) -*** ../vim-7.3.600/src/version.c 2012-07-10 19:25:06.000000000 +0200 ---- src/version.c 2012-07-16 17:25:48.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 601, - /**/ - --- -There are three kinds of persons: Those who can count and those who can't. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.602 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.602 -Problem: Missing files in distribution. -Solution: Update the list of files. -Files: Filelist - - -*** ../vim-7.3.601/Filelist 2011-10-20 16:35:25.000000000 +0200 ---- Filelist 2012-06-20 12:06:41.000000000 +0200 -*************** -*** 463,468 **** ---- 463,469 ---- - runtime/macros/hanoi/hanoi.vim \ - runtime/macros/hanoi/poster \ - runtime/macros/justify.vim \ -+ runtime/macros/less.bat \ - runtime/macros/less.sh \ - runtime/macros/less.vim \ - runtime/macros/life/click.me \ -*************** -*** 666,671 **** ---- 667,674 ---- - - # generic language files - LANG_GEN = \ -+ runtime/doc/*-de.1 \ -+ runtime/doc/*-de.UTF-8.1 \ - runtime/doc/*-fr.1 \ - runtime/doc/*-fr.UTF-8.1 \ - runtime/doc/*-it.1 \ -*** ../vim-7.3.601/src/version.c 2012-07-16 17:26:18.000000000 +0200 ---- src/version.c 2012-07-16 17:27:31.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 602, - /**/ - --- -Never eat yellow snow. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.603 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.603 -Problem: It is possible to add replace builtin functions by calling - extend() on g:. -Solution: Add a flag to a dict to indicate it is a scope. Check for - existing functions. (ZyX) -Files: src/buffer.c, src/eval.c, src/proto/eval.pro, src/structs.h, - src/testdir/test34.in, src/testdir/test34.ok, src/window.c - - -*** ../vim-7.3.602/src/buffer.c 2012-07-10 15:18:18.000000000 +0200 ---- src/buffer.c 2012-07-16 16:52:58.000000000 +0200 -*************** -*** 1747,1753 **** - buf->b_wininfo->wi_win = curwin; - - #ifdef FEAT_EVAL -! init_var_dict(&buf->b_vars, &buf->b_bufvar); /* init b: variables */ - #endif - #ifdef FEAT_SYN_HL - hash_init(&buf->b_s.b_keywtab); ---- 1747,1754 ---- - buf->b_wininfo->wi_win = curwin; - - #ifdef FEAT_EVAL -! /* init b: variables */ -! init_var_dict(&buf->b_vars, &buf->b_bufvar, VAR_SCOPE); - #endif - #ifdef FEAT_SYN_HL - hash_init(&buf->b_s.b_keywtab); -*** ../vim-7.3.602/src/eval.c 2012-07-10 13:41:09.000000000 +0200 ---- src/eval.c 2012-07-16 17:18:11.000000000 +0200 -*************** -*** 850,857 **** - int i; - struct vimvar *p; - -! init_var_dict(&globvardict, &globvars_var); -! init_var_dict(&vimvardict, &vimvars_var); - vimvardict.dv_lock = VAR_FIXED; - hash_init(&compat_hashtab); - hash_init(&func_hashtab); ---- 850,857 ---- - int i; - struct vimvar *p; - -! init_var_dict(&globvardict, &globvars_var, VAR_DEF_SCOPE); -! init_var_dict(&vimvardict, &vimvars_var, VAR_SCOPE); - vimvardict.dv_lock = VAR_FIXED; - hash_init(&compat_hashtab); - hash_init(&func_hashtab); -*************** -*** 2725,2738 **** - lp->ll_dict = lp->ll_tv->vval.v_dict; - lp->ll_di = dict_find(lp->ll_dict, key, len); - -! /* When assigning to g: check that a function and variable name is -! * valid. */ -! if (rettv != NULL && lp->ll_dict == &globvardict) - { -! if (rettv->v_type == VAR_FUNC - && var_check_func_name(key, lp->ll_di == NULL)) -! return NULL; -! if (!valid_varname(key)) - return NULL; - } - ---- 2725,2750 ---- - lp->ll_dict = lp->ll_tv->vval.v_dict; - lp->ll_di = dict_find(lp->ll_dict, key, len); - -! /* When assigning to a scope dictionary check that a function and -! * variable name is valid (only variable name unless it is l: or -! * g: dictionary). Disallow overwriting a builtin function. */ -! if (rettv != NULL && lp->ll_dict->dv_scope != 0) - { -! int prevval; -! int wrong; -! -! if (len != -1) -! { -! prevval = key[len]; -! key[len] = NUL; -! } -! wrong = (lp->ll_dict->dv_scope == VAR_DEF_SCOPE -! && rettv->v_type == VAR_FUNC - && var_check_func_name(key, lp->ll_di == NULL)) -! || !valid_varname(key); -! if (len != -1) -! key[len] = prevval; -! if (wrong) - return NULL; - } - -*************** -*** 6951,6957 **** - d = (dict_T *)alloc(sizeof(dict_T)); - if (d != NULL) - { -! /* Add the list to the list of dicts for garbage collection. */ - if (first_dict != NULL) - first_dict->dv_used_prev = d; - d->dv_used_next = first_dict; ---- 6963,6969 ---- - d = (dict_T *)alloc(sizeof(dict_T)); - if (d != NULL) - { -! /* Add the dict to the list of dicts for garbage collection. */ - if (first_dict != NULL) - first_dict->dv_used_prev = d; - d->dv_used_next = first_dict; -*************** -*** 6960,6965 **** ---- 6972,6978 ---- - - hash_init(&d->dv_hashtab); - d->dv_lock = 0; -+ d->dv_scope = 0; - d->dv_refcount = 0; - d->dv_copyID = 0; - } -*************** -*** 10203,10208 **** ---- 10216,10234 ---- - { - --todo; - di1 = dict_find(d1, hi2->hi_key, -1); -+ if (d1->dv_scope != 0) -+ { -+ /* Disallow replacing a builtin function in l: and g:. -+ * Check the key to be valid when adding to any -+ * scope. */ -+ if (d1->dv_scope == VAR_DEF_SCOPE -+ && HI2DI(hi2)->di_tv.v_type == VAR_FUNC -+ && var_check_func_name(hi2->hi_key, -+ di1 == NULL)) -+ break; -+ if (!valid_varname(hi2->hi_key)) -+ break; -+ } - if (di1 == NULL) - { - di1 = dictitem_copy(HI2DI(hi2)); -*************** -*** 20027,20033 **** - { - sv = SCRIPT_SV(ga_scripts.ga_len + 1) = - (scriptvar_T *)alloc_clear(sizeof(scriptvar_T)); -! init_var_dict(&sv->sv_dict, &sv->sv_var); - ++ga_scripts.ga_len; - } - } ---- 20053,20059 ---- - { - sv = SCRIPT_SV(ga_scripts.ga_len + 1) = - (scriptvar_T *)alloc_clear(sizeof(scriptvar_T)); -! init_var_dict(&sv->sv_dict, &sv->sv_var, VAR_SCOPE); - ++ga_scripts.ga_len; - } - } -*************** -*** 20038,20049 **** - * point to it. - */ - void -! init_var_dict(dict, dict_var) - dict_T *dict; - dictitem_T *dict_var; - { - hash_init(&dict->dv_hashtab); - dict->dv_lock = 0; - dict->dv_refcount = DO_NOT_FREE_CNT; - dict->dv_copyID = 0; - dict_var->di_tv.vval.v_dict = dict; ---- 20064,20077 ---- - * point to it. - */ - void -! init_var_dict(dict, dict_var, scope) - dict_T *dict; - dictitem_T *dict_var; -+ int scope; - { - hash_init(&dict->dv_hashtab); - dict->dv_lock = 0; -+ dict->dv_scope = scope; - dict->dv_refcount = DO_NOT_FREE_CNT; - dict->dv_copyID = 0; - dict_var->di_tv.vval.v_dict = dict; -*************** -*** 22304,22310 **** - /* - * Init l: variables. - */ -! init_var_dict(&fc->l_vars, &fc->l_vars_var); - if (selfdict != NULL) - { - /* Set l:self to "selfdict". Use "name" to avoid a warning from ---- 22332,22338 ---- - /* - * Init l: variables. - */ -! init_var_dict(&fc->l_vars, &fc->l_vars_var, VAR_DEF_SCOPE); - if (selfdict != NULL) - { - /* Set l:self to "selfdict". Use "name" to avoid a warning from -*************** -*** 22325,22331 **** - * Set a:0 to "argcount". - * Set a:000 to a list with room for the "..." arguments. - */ -! init_var_dict(&fc->l_avars, &fc->l_avars_var); - add_nr_var(&fc->l_avars, &fc->fixvar[fixvar_idx++].var, "0", - (varnumber_T)(argcount - fp->uf_args.ga_len)); - /* Use "name" to avoid a warning from some compiler that checks the ---- 22353,22359 ---- - * Set a:0 to "argcount". - * Set a:000 to a list with room for the "..." arguments. - */ -! init_var_dict(&fc->l_avars, &fc->l_avars_var, VAR_SCOPE); - add_nr_var(&fc->l_avars, &fc->fixvar[fixvar_idx++].var, "0", - (varnumber_T)(argcount - fp->uf_args.ga_len)); - /* Use "name" to avoid a warning from some compiler that checks the -*** ../vim-7.3.602/src/proto/eval.pro 2012-06-29 12:54:32.000000000 +0200 ---- src/proto/eval.pro 2012-07-16 16:55:16.000000000 +0200 -*************** -*** 93,99 **** - char_u *get_tv_string_chk __ARGS((typval_T *varp)); - char_u *get_var_value __ARGS((char_u *name)); - void new_script_vars __ARGS((scid_T id)); -! void init_var_dict __ARGS((dict_T *dict, dictitem_T *dict_var)); - void vars_clear __ARGS((hashtab_T *ht)); - void copy_tv __ARGS((typval_T *from, typval_T *to)); - void ex_echo __ARGS((exarg_T *eap)); ---- 93,99 ---- - char_u *get_tv_string_chk __ARGS((typval_T *varp)); - char_u *get_var_value __ARGS((char_u *name)); - void new_script_vars __ARGS((scid_T id)); -! void init_var_dict __ARGS((dict_T *dict, dictitem_T *dict_var, int scope)); - void vars_clear __ARGS((hashtab_T *ht)); - void copy_tv __ARGS((typval_T *from, typval_T *to)); - void ex_echo __ARGS((exarg_T *eap)); -*** ../vim-7.3.602/src/structs.h 2012-06-06 19:02:40.000000000 +0200 ---- src/structs.h 2012-07-16 16:56:43.000000000 +0200 -*************** -*** 1106,1111 **** ---- 1106,1116 ---- - #define VAR_DICT 5 /* "v_dict" is used */ - #define VAR_FLOAT 6 /* "v_float" is used */ - -+ /* Values for "dv_scope". */ -+ #define VAR_SCOPE 1 /* a:, v:, s:, etc. scope dictionaries */ -+ #define VAR_DEF_SCOPE 2 /* l:, g: scope dictionaries: here funcrefs are not -+ allowed to mask existing functions */ -+ - /* Values for "v_lock". */ - #define VAR_LOCKED 1 /* locked with lock(), can use unlock() */ - #define VAR_FIXED 2 /* locked forever */ -*************** -*** 1181,1186 **** ---- 1186,1192 ---- - int dv_copyID; /* ID used by deepcopy() */ - dict_T *dv_copydict; /* copied dict used by deepcopy() */ - char dv_lock; /* zero, VAR_LOCKED, VAR_FIXED */ -+ char dv_scope; /* zero, VAR_SCOPE, VAR_DEF_SCOPE */ - dict_T *dv_used_next; /* next dict in used dicts list */ - dict_T *dv_used_prev; /* previous dict in used dicts list */ - }; -*** ../vim-7.3.602/src/testdir/test34.in 2010-08-15 21:57:29.000000000 +0200 ---- src/testdir/test34.in 2012-07-16 16:51:29.000000000 +0200 -*************** -*** 1,5 **** ---- 1,6 ---- - Test for user functions. - Also test an <expr> mapping calling a function. -+ Also test that a builtin function cannot be replaced. - - STARTTEST - :so small.vim -*************** -*** 58,64 **** - ---*--- - (one - (two -! [(one again:$-5,$w! test.out - :delfunc Table - :delfunc Compute - :delfunc Expr1 ---- 59,68 ---- - ---*--- - (one - (two -! [(one again:call append(line('$'), max([1, 2, 3])) -! :call extend(g:, {'max': function('min')}) -! :call append(line('$'), max([1, 2, 3])) -! :$-7,$w! test.out - :delfunc Table - :delfunc Compute - :delfunc Expr1 -*** ../vim-7.3.602/src/testdir/test34.ok 2011-10-12 22:02:07.000000000 +0200 ---- src/testdir/test34.ok 2012-07-16 16:43:15.000000000 +0200 -*************** -*** 4,6 **** ---- 4,8 ---- - 1. one - 2. two - 1. one again -+ 3 -+ 3 -*** ../vim-7.3.602/src/window.c 2012-07-06 18:27:34.000000000 +0200 ---- src/window.c 2012-07-16 16:53:45.000000000 +0200 -*************** -*** 3468,3474 **** - # endif - #ifdef FEAT_EVAL - /* init t: variables */ -! init_var_dict(&tp->tp_vars, &tp->tp_winvar); - #endif - tp->tp_ch_used = p_ch; - } ---- 3468,3474 ---- - # endif - #ifdef FEAT_EVAL - /* init t: variables */ -! init_var_dict(&tp->tp_vars, &tp->tp_winvar, VAR_SCOPE); - #endif - tp->tp_ch_used = p_ch; - } -*************** -*** 4410,4416 **** - #endif - #ifdef FEAT_EVAL - /* init w: variables */ -! init_var_dict(&new_wp->w_vars, &new_wp->w_winvar); - #endif - #ifdef FEAT_FOLDING - foldInitWin(new_wp); ---- 4410,4416 ---- - #endif - #ifdef FEAT_EVAL - /* init w: variables */ -! init_var_dict(&new_wp->w_vars, &new_wp->w_winvar, VAR_SCOPE); - #endif - #ifdef FEAT_FOLDING - foldInitWin(new_wp); -*** ../vim-7.3.602/src/version.c 2012-07-16 17:27:57.000000000 +0200 ---- src/version.c 2012-07-16 17:29:06.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 603, - /**/ - --- -Birthdays are healthy. The more you have them, the longer you live. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.604 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.604 -Problem: inputdialog() doesn't use the cancel argument in the console. - (David Fishburn) -Solution: Use the third argument. (Christian Brabant) -Files: src/eval.c - - -*** ../vim-7.3.603/src/eval.c 2012-07-16 17:31:48.000000000 +0200 ---- src/eval.c 2012-07-16 19:20:47.000000000 +0200 -*************** -*** 12940,12945 **** ---- 12940,12946 ---- - int xp_namelen; - long argt; - -+ /* input() with a third argument: completion */ - rettv->vval.v_string = NULL; - - xp_name = get_tv_string_buf_chk(&argvars[2], buf); -*************** -*** 12958,12963 **** ---- 12959,12969 ---- - rettv->vval.v_string = - getcmdline_prompt(inputsecret_flag ? NUL : '@', p, echo_attr, - xp_type, xp_arg); -+ if (rettv->vval.v_string == NULL -+ && argvars[1].v_type != VAR_UNKNOWN -+ && argvars[2].v_type != VAR_UNKNOWN) -+ rettv->vval.v_string = vim_strsave(get_tv_string_buf( -+ &argvars[2], buf)); - - vim_free(xp_arg); - -*** ../vim-7.3.603/src/version.c 2012-07-16 17:31:48.000000000 +0200 ---- src/version.c 2012-07-16 19:23:11.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 604, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -135. You cut classes or miss work so you can stay home and browse the web. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.605 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.605 (after 7.3.577) -Problem: MS-Windows: Can't compile with older compilers. (Titov Anatoly) -Solution: Add #ifdef for MEMORYSTATUSEX. -Files: src/os_win32.c - - -*** ../vim-7.3.604/src/os_win32.c 2012-06-29 15:51:26.000000000 +0200 ---- src/os_win32.c 2012-07-19 11:35:00.000000000 +0200 -*************** -*** 4999,5020 **** - long_u - mch_avail_mem(int special) - { -! if (g_PlatformId != VER_PLATFORM_WIN32_NT) -! { -! MEMORYSTATUS ms; -! -! ms.dwLength = sizeof(MEMORYSTATUS); -! GlobalMemoryStatus(&ms); -! return (long_u)((ms.dwAvailPhys + ms.dwAvailPageFile) >> 10); -! } -! else - { - MEMORYSTATUSEX ms; - - ms.dwLength = sizeof(MEMORYSTATUSEX); - GlobalMemoryStatusEx(&ms); - return (long_u)((ms.ullAvailPhys + ms.ullAvailPageFile) >> 10); - } - } - - #ifdef FEAT_MBYTE ---- 4999,5025 ---- - long_u - mch_avail_mem(int special) - { -! #ifdef MEMORYSTATUSEX -! PlatformId(); -! if (g_PlatformId == VER_PLATFORM_WIN32_NT) - { - MEMORYSTATUSEX ms; - -+ /* Need to use GlobalMemoryStatusEx() when there is more memory than -+ * what fits in 32 bits. But it's not always available. */ - ms.dwLength = sizeof(MEMORYSTATUSEX); - GlobalMemoryStatusEx(&ms); - return (long_u)((ms.ullAvailPhys + ms.ullAvailPageFile) >> 10); - } -+ else -+ #endif -+ { -+ MEMORYSTATUS ms; -+ -+ ms.dwLength = sizeof(MEMORYSTATUS); -+ GlobalMemoryStatus(&ms); -+ return (long_u)((ms.dwAvailPhys + ms.dwAvailPageFile) >> 10); -+ } - } - - #ifdef FEAT_MBYTE -*** ../vim-7.3.604/src/version.c 2012-07-16 19:27:25.000000000 +0200 ---- src/version.c 2012-07-19 11:36:12.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 605, - /**/ - --- -Fingers not found - Pound head on keyboard to continue. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.606 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.606 -Problem: CTRL-P completion has a problem with multi-byte characters. -Solution: Check for next character being NUL properly. (Yasuhiro Matsumoto) -Files: src/search.c, src/macros.h - - -*** ../vim-7.3.605/src/search.c 2012-06-06 16:12:54.000000000 +0200 ---- src/search.c 2012-07-19 17:09:20.000000000 +0200 -*************** -*** 5141,5147 **** - && !(compl_cont_status & CONT_SOL) - #endif - && *startp != NUL -! && *(p = startp + 1) != NUL) - goto search_line; - } - line_breakcheck(); ---- 5141,5147 ---- - && !(compl_cont_status & CONT_SOL) - #endif - && *startp != NUL -! && *(p = startp + MB_PTR2LEN(startp)) != NUL) - goto search_line; - } - line_breakcheck(); -*** ../vim-7.3.605/src/macros.h 2010-09-21 16:56:29.000000000 +0200 ---- src/macros.h 2012-07-19 17:08:38.000000000 +0200 -*************** -*** 259,264 **** ---- 259,266 ---- - * PTR2CHAR(): get character from pointer. - */ - #ifdef FEAT_MBYTE -+ /* Get the length of the character p points to */ -+ # define MB_PTR2LEN(p) (has_mbyte ? (*mb_ptr2len)(p) : 1) - /* Advance multi-byte pointer, skip over composing chars. */ - # define mb_ptr_adv(p) p += has_mbyte ? (*mb_ptr2len)(p) : 1 - /* Advance multi-byte pointer, do not skip over composing chars. */ -*************** -*** 272,277 **** ---- 274,280 ---- - # define MB_CHARLEN(p) (has_mbyte ? mb_charlen(p) : (int)STRLEN(p)) - # define PTR2CHAR(p) (has_mbyte ? mb_ptr2char(p) : (int)*(p)) - #else -+ # define MB_PTR2LEN(p) 1 - # define mb_ptr_adv(p) ++p - # define mb_cptr_adv(p) ++p - # define mb_ptr_back(s, p) --p -*** ../vim-7.3.605/src/version.c 2012-07-19 11:37:22.000000000 +0200 ---- src/version.c 2012-07-19 17:13:53.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 606, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -151. You find yourself engaged to someone you've never actually met, - except through e-mail. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.607 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.607 -Problem: With an 8 color terminal the selected menu item is black on black, - because darkGrey as bg is the same as black. -Solution: Swap fg and bg colors. (James McCoy) -Files: src/syntax.c - - -*** ../vim-7.3.606/src/syntax.c 2012-06-01 13:18:48.000000000 +0200 ---- src/syntax.c 2012-07-19 17:34:42.000000000 +0200 -*************** -*** 6653,6660 **** - "PmenuThumb ctermbg=White guibg=White"), - CENT("Pmenu ctermbg=Magenta ctermfg=Black", - "Pmenu ctermbg=Magenta ctermfg=Black guibg=Magenta"), -! CENT("PmenuSel ctermbg=DarkGrey ctermfg=Black", -! "PmenuSel ctermbg=DarkGrey ctermfg=Black guibg=DarkGrey"), - #endif - CENT("Title term=bold ctermfg=LightMagenta", - "Title term=bold ctermfg=LightMagenta gui=bold guifg=Magenta"), ---- 6653,6660 ---- - "PmenuThumb ctermbg=White guibg=White"), - CENT("Pmenu ctermbg=Magenta ctermfg=Black", - "Pmenu ctermbg=Magenta ctermfg=Black guibg=Magenta"), -! CENT("PmenuSel ctermbg=Black ctermfg=DarkGrey", -! "PmenuSel ctermbg=Black ctermfg=DarkGrey guibg=DarkGrey"), - #endif - CENT("Title term=bold ctermfg=LightMagenta", - "Title term=bold ctermfg=LightMagenta gui=bold guifg=Magenta"), -*** ../vim-7.3.606/src/version.c 2012-07-19 17:18:21.000000000 +0200 ---- src/version.c 2012-07-19 17:38:05.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 607, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -152. You find yourself falling for someone you've never seen or hardly - know, but, boy can he/she TYPE!!!!!! - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.608 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.608 -Problem: winrestview() does not always restore the view correctly. -Solution: Call win_new_height() and win_new_width(). (Lech Lorens) -Files: src/eval.c, src/proto/window.pro, src/window.c - - -*** ../vim-7.3.607/src/eval.c 2012-07-16 19:27:25.000000000 +0200 ---- src/eval.c 2012-07-19 17:50:16.000000000 +0200 -*************** -*** 18601,18606 **** ---- 18601,18610 ---- - curwin->w_skipcol = get_dict_number(dict, (char_u *)"skipcol"); - - check_cursor(); -+ win_new_height(curwin, curwin->w_height); -+ # ifdef FEAT_VERTSPLIT -+ win_new_width(curwin, W_WIDTH(curwin)); -+ # endif - changed_window_setting(); - - if (curwin->w_topline == 0) -*** ../vim-7.3.607/src/proto/window.pro 2012-06-13 14:28:16.000000000 +0200 ---- src/proto/window.pro 2012-07-19 18:05:10.000000000 +0200 -*************** -*** 51,56 **** ---- 51,58 ---- - void win_setminheight __ARGS((void)); - void win_drag_status_line __ARGS((win_T *dragwin, int offset)); - void win_drag_vsep_line __ARGS((win_T *dragwin, int offset)); -+ void win_new_height __ARGS((win_T *wp, int height)); -+ void win_new_width __ARGS((win_T *wp, int width)); - void win_comp_scroll __ARGS((win_T *wp)); - void command_height __ARGS((void)); - void last_status __ARGS((int morewin)); -*** ../vim-7.3.607/src/window.c 2012-07-16 17:31:48.000000000 +0200 ---- src/window.c 2012-07-19 18:05:18.000000000 +0200 -*************** -*** 54,60 **** - static void frame_insert __ARGS((frame_T *before, frame_T *frp)); - static void frame_remove __ARGS((frame_T *frp)); - #ifdef FEAT_VERTSPLIT -- static void win_new_width __ARGS((win_T *wp, int width)); - static void win_goto_ver __ARGS((int up, long count)); - static void win_goto_hor __ARGS((int left, long count)); - #endif ---- 54,59 ---- -*************** -*** 71,77 **** - - static win_T *win_alloc __ARGS((win_T *after, int hidden)); - static void set_fraction __ARGS((win_T *wp)); -- static void win_new_height __ARGS((win_T *wp, int height)); - - #define URL_SLASH 1 /* path_is_url() has found "://" */ - #define URL_BACKSLASH 2 /* path_is_url() has found ":\\" */ ---- 70,75 ---- -*************** -*** 5557,5563 **** - * This takes care of the things inside the window, not what happens to the - * window position, the frame or to other windows. - */ -! static void - win_new_height(wp, height) - win_T *wp; - int height; ---- 5555,5561 ---- - * This takes care of the things inside the window, not what happens to the - * window position, the frame or to other windows. - */ -! void - win_new_height(wp, height) - win_T *wp; - int height; -*************** -*** 5697,5703 **** - /* - * Set the width of a window. - */ -! static void - win_new_width(wp, width) - win_T *wp; - int width; ---- 5695,5701 ---- - /* - * Set the width of a window. - */ -! void - win_new_width(wp, width) - win_T *wp; - int width; -*** ../vim-7.3.607/src/version.c 2012-07-19 17:39:01.000000000 +0200 ---- src/version.c 2012-07-19 17:53:37.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 608, - /**/ - --- -Although the scythe isn't pre-eminent among the weapons of war, anyone who -has been on the wrong end of, say, a peasants' revolt will know that in -skilled hands it is fearsome. - -- (Terry Pratchett, Mort) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.609 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.609 -Problem: File names in :checkpath! output are garbled. -Solution: Check for \zs in the pattern. (Lech Lorens) -Files: src/search.c, src/testdir/test17.in, src/testdir/test17.ok - - -*** ../vim-7.3.608/src/search.c 2012-07-19 17:18:21.000000000 +0200 ---- src/search.c 2012-07-25 13:33:08.000000000 +0200 -*************** -*** 4740,4756 **** - * Isolate the file name. - * Include the surrounding "" or <> if present. - */ -! for (p = incl_regmatch.endp[0]; !vim_isfilec(*p); p++) -! ; -! for (i = 0; vim_isfilec(p[i]); i++) -! ; - if (i == 0) - { - /* Nothing found, use the rest of the line. */ - p = incl_regmatch.endp[0]; - i = (int)STRLEN(p); - } -! else - { - if (p[-1] == '"' || p[-1] == '<') - { ---- 4740,4772 ---- - * Isolate the file name. - * Include the surrounding "" or <> if present. - */ -! if (inc_opt != NULL -! && strstr((char *)inc_opt, "\\zs") != NULL) -! { -! /* pattern contains \zs, use the match */ -! p = incl_regmatch.startp[0]; -! i = (int)(incl_regmatch.endp[0] -! - incl_regmatch.startp[0]); -! } -! else -! { -! /* find the file name after the end of the match */ -! for (p = incl_regmatch.endp[0]; -! *p && !vim_isfilec(*p); p++) -! ; -! for (i = 0; vim_isfilec(p[i]); i++) -! ; -! } -! - if (i == 0) - { - /* Nothing found, use the rest of the line. */ - p = incl_regmatch.endp[0]; - i = (int)STRLEN(p); - } -! /* Avoid checking before the start of the line, can -! * happen if \zs appears in the regexp. */ -! else if (p > line) - { - if (p[-1] == '"' || p[-1] == '<') - { -*** ../vim-7.3.608/src/testdir/test17.in 2010-08-15 21:57:29.000000000 +0200 ---- src/testdir/test17.in 2012-07-25 13:41:43.000000000 +0200 -*************** -*** 1,4 **** -! Tests for "gf" on ${VAR} - - STARTTEST - :so small.vim ---- 1,6 ---- -! Tests for: -! - "gf" on ${VAR}, -! - ":checkpath!" with various 'include' settings. - - STARTTEST - :so small.vim -*************** -*** 20,27 **** - :endif - gf - :w! test.out -! :qa! - ENDTEST - - ${CDIR}/test17a.in - $TDIR/test17a.in ---- 22,120 ---- - :endif - gf - :w! test.out -! :brewind - ENDTEST - - ${CDIR}/test17a.in - $TDIR/test17a.in -+ -+ STARTTEST -+ :" check for 'include' without \zs or \ze -+ :lang C -+ :!rm -f ./Xbase.a -+ :!rm -rf ./Xdir1 -+ :!mkdir -p Xdir1/dir2 -+ :e Xdir1/dir2/foo.a -+ i#include "bar.a" -+ :w -+ :e Xdir1/dir2/bar.a -+ i#include "baz.a" -+ :w -+ :e Xdir1/dir2/baz.a -+ i#include "foo.a" -+ :w -+ :e Xbase.a -+ :set path=Xdir1/dir2 -+ i#include <foo.a> -+ :w -+ :redir! >>test.out -+ :checkpath! -+ :redir END -+ :brewind -+ ENDTEST -+ -+ STARTTEST -+ :" check for 'include' with \zs and \ze -+ :!rm -f ./Xbase.b -+ :!rm -rf ./Xdir1 -+ :!mkdir -p Xdir1/dir2 -+ :let &include='^\s*%inc\s*/\zs[^/]\+\ze' -+ :function! DotsToSlashes() -+ : return substitute(v:fname, '\.', '/', 'g') . '.b' -+ :endfunction -+ :let &includeexpr='DotsToSlashes()' -+ :e Xdir1/dir2/foo.b -+ i%inc /bar/ -+ :w -+ :e Xdir1/dir2/bar.b -+ i%inc /baz/ -+ :w -+ :e Xdir1/dir2/baz.b -+ i%inc /foo/ -+ :w -+ :e Xbase.b -+ :set path=Xdir1/dir2 -+ i%inc /foo/ -+ :w -+ :redir! >>test.out -+ :checkpath! -+ :redir END -+ :brewind -+ ENDTEST -+ -+ STARTTEST -+ :" check for 'include' with \zs and no \ze -+ :!rm -f ./Xbase.c -+ :!rm -rf ./Xdir1 -+ :!mkdir -p Xdir1/dir2 -+ :let &include='^\s*%inc\s*\%([[:upper:]][^[:space:]]*\s\+\)\?\zs\S\+\ze' -+ :function! StripNewlineChar() -+ : if v:fname =~ '\n$' -+ : return v:fname[:-2] -+ : endif -+ : return v:fname -+ :endfunction -+ :let &includeexpr='StripNewlineChar()' -+ :e Xdir1/dir2/foo.c -+ i%inc bar.c -+ :w -+ :e Xdir1/dir2/bar.c -+ i%inc baz.c -+ :w -+ :e Xdir1/dir2/baz.c -+ i%inc foo.c -+ :w -+ :e Xdir1/dir2/FALSE.c -+ i%inc foo.c -+ :w -+ :e Xbase.c -+ :set path=Xdir1/dir2 -+ i%inc FALSE.c foo.c -+ :w -+ :redir! >>test.out -+ :checkpath! -+ :redir END -+ :brewind -+ :q -+ ENDTEST -+ -*** ../vim-7.3.608/src/testdir/test17.ok 2010-08-15 21:57:29.000000000 +0200 ---- src/testdir/test17.ok 2012-07-25 13:45:37.000000000 +0200 -*************** -*** 1,3 **** ---- 1,33 ---- - This file is just to test "gf" in test 17. - The contents is not important. - Just testing! -+ -+ -+ --- Included files in path --- -+ Xdir1/dir2/foo.a -+ Xdir1/dir2/foo.a --> -+ Xdir1/dir2/bar.a -+ Xdir1/dir2/bar.a --> -+ Xdir1/dir2/baz.a -+ Xdir1/dir2/baz.a --> -+ "foo.a" (Already listed) -+ -+ -+ --- Included files in path --- -+ Xdir1/dir2/foo.b -+ Xdir1/dir2/foo.b --> -+ Xdir1/dir2/bar.b -+ Xdir1/dir2/bar.b --> -+ Xdir1/dir2/baz.b -+ Xdir1/dir2/baz.b --> -+ foo (Already listed) -+ -+ -+ --- Included files in path --- -+ Xdir1/dir2/foo.c -+ Xdir1/dir2/foo.c --> -+ Xdir1/dir2/bar.c -+ Xdir1/dir2/bar.c --> -+ Xdir1/dir2/baz.c -+ Xdir1/dir2/baz.c --> -+ foo.c^@ (Already listed) -*** ../vim-7.3.608/src/version.c 2012-07-19 18:05:40.000000000 +0200 ---- src/version.c 2012-07-25 13:38:54.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 609, - /**/ - --- -"The question of whether computers can think is just like the question -of whether submarines can swim." -- Edsger W. Dijkstra - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.610 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.610 -Problem: Cannot operate on the text that a search pattern matches. -Solution: Add the "gn" and "gN" commands. (Christian Brabandt) -Files: runtime/doc/index.txt, runtime/doc/visual.txt, src/normal.c, - src/proto/search.pro, src/search.c, src/testdir/test53.in, - src/testdir/test53.ok - - -*** ../vim-7.3.609/runtime/doc/index.txt 2010-08-15 21:57:18.000000000 +0200 ---- runtime/doc/index.txt 2012-07-25 14:27:20.000000000 +0200 -*************** -*** 719,726 **** ---- 719,729 ---- - |gH| gH start Select line mode - |gI| gI 2 like "I", but always start in column 1 - |gJ| gJ 2 join lines without inserting space -+ |gN| gN 1,2 find the previous match with the last used -+ search pattern and Visually select it - |gP| ["x]gP 2 put the text [from register x] before the - cursor N times, leave the cursor after it -+ |gQ| gQ switch to "Ex" mode with Vim editing - |gR| gR 2 enter Virtual Replace mode - |gU| gU{motion} 2 make Nmove text uppercase - |gV| gV don't reselect the previous Visual area -*************** -*** 750,755 **** ---- 753,760 ---- - lines down - |gk| gk 1 like "k", but when 'wrap' on go N screen - lines up -+ |gn| gn 1,2 find the next match with the last used -+ search pattern and Visually select it - |gm| gm 1 go to character at middle of the screenline - |go| go 1 cursor to byte N in the buffer - |gp| ["x]gp 2 put the text [from register x] after the -*** ../vim-7.3.609/runtime/doc/visual.txt 2010-08-15 21:57:16.000000000 +0200 ---- runtime/doc/visual.txt 2012-07-25 14:42:22.000000000 +0200 -*************** -*** 94,99 **** ---- 99,116 ---- - After using "p" or "P" in Visual mode the text that - was put will be selected. - -+ *gn* *v_gn* -+ gn Search forward for the last used search pattern, like -+ with `n`, and start Visual mode to select the match. -+ If the cursor is on the match, visually selects it. -+ If an operator is pending, operates on the match. -+ E.g., "dgn" deletes the text of the next match. -+ If Visual mode is active, extends the selection -+ until the end of the next match. -+ -+ *gN* *v_gN* -+ gN Like |gn| but searches backward, like with `N`. -+ - *<LeftMouse>* - <LeftMouse> Set the current cursor position. If Visual mode is - active it is stopped. Only when 'mouse' option is -*** ../vim-7.3.609/src/normal.c 2012-07-10 16:49:08.000000000 +0200 ---- src/normal.c 2012-07-25 14:31:40.000000000 +0200 -*************** -*** 1780,1789 **** - { - /* Prepare for redoing. Only use the nchar field for "r", - * otherwise it might be the second char of the operator. */ -! prep_redo(oap->regname, 0L, NUL, 'v', -! get_op_char(oap->op_type), -! get_extra_op_char(oap->op_type), -! oap->op_type == OP_REPLACE ? cap->nchar : NUL); - if (!redo_VIsual_busy) - { - redo_VIsual_mode = resel_VIsual_mode; ---- 1780,1797 ---- - { - /* Prepare for redoing. Only use the nchar field for "r", - * otherwise it might be the second char of the operator. */ -! if (cap->cmdchar == 'g' && (cap->nchar == 'n' -! || cap->nchar == 'N')) -! /* "gn" and "gN" are a bit different */ -! prep_redo(oap->regname, 0L, NUL, cap->cmdchar, cap->nchar, -! get_op_char(oap->op_type), -! get_extra_op_char(oap->op_type)); -! else -! prep_redo(oap->regname, 0L, NUL, 'v', -! get_op_char(oap->op_type), -! get_extra_op_char(oap->op_type), -! oap->op_type == OP_REPLACE -! ? cap->nchar : NUL); - if (!redo_VIsual_busy) - { - redo_VIsual_mode = resel_VIsual_mode; -*************** -*** 7987,7992 **** ---- 7995,8011 ---- - cap->arg = TRUE; - nv_visual(cap); - break; -+ -+ /* "gn", "gN" visually select next/previous search match -+ * "gn" selects next match -+ * "gN" selects previous match -+ */ -+ case 'N': -+ case 'n': -+ if (!current_search(cap->count1, cap->nchar == 'n')) -+ beep_flush(); -+ -+ break; - #endif /* FEAT_VISUAL */ - - /* -*** ../vim-7.3.609/src/proto/search.pro 2010-08-15 21:57:28.000000000 +0200 ---- src/proto/search.pro 2012-07-25 14:24:01.000000000 +0200 -*************** -*** 27,32 **** ---- 27,33 ---- - int end_word __ARGS((long count, int bigword, int stop, int empty)); - int bckend_word __ARGS((long count, int bigword, int eol)); - int current_word __ARGS((oparg_T *oap, long count, int include, int bigword)); -+ int current_search __ARGS((long count, int forward)); - int current_sent __ARGS((oparg_T *oap, long count, int include)); - int current_block __ARGS((oparg_T *oap, long count, int include, int what, int other)); - int current_tagblock __ARGS((oparg_T *oap, long count_arg, int include)); -*** ../vim-7.3.609/src/search.c 2012-07-25 13:46:25.000000000 +0200 ---- src/search.c 2012-07-25 14:54:28.000000000 +0200 -*************** -*** 3397,3402 **** ---- 3397,3547 ---- - return OK; - } - -+ #if defined(FEAT_VISUAL) || defined(PROTO) -+ /* -+ * Find next search match under cursor, cursor at end. -+ * Used while an operator is pending, and in Visual mode. -+ * TODO: redo only works when used in operator pending mode -+ */ -+ int -+ current_search(count, forward) -+ long count; -+ int forward; /* move forward or backwards */ -+ { -+ pos_T start_pos; /* position before the pattern */ -+ pos_T orig_pos; /* position of the cursor at beginning */ -+ pos_T pos; /* position after the pattern */ -+ int i; -+ int dir; -+ int result; /* result of various function calls */ -+ char_u old_p_ws = p_ws; -+ int visual_active = FALSE; -+ int flags = 0; -+ pos_T save_VIsual; -+ -+ -+ /* wrapping should not occur */ -+ p_ws = FALSE; -+ -+ /* Correct cursor when 'selection' is exclusive */ -+ if (VIsual_active && *p_sel == 'e' && lt(VIsual, curwin->w_cursor)) -+ dec_cursor(); -+ -+ if (VIsual_active) -+ { -+ orig_pos = curwin->w_cursor; -+ save_VIsual = VIsual; -+ visual_active = TRUE; -+ -+ /* just started visual selection, only one character */ -+ if (equalpos(VIsual, curwin->w_cursor)) -+ visual_active = FALSE; -+ -+ pos = curwin->w_cursor; -+ start_pos = VIsual; -+ -+ /* make sure, searching further will extend the match */ -+ if (VIsual_active) -+ { -+ if (forward) -+ incl(&pos); -+ else -+ decl(&pos); -+ } -+ } -+ else -+ orig_pos = pos = start_pos = curwin->w_cursor; -+ -+ /* -+ * The trick is to first search backwards and then search forward again, -+ * so that a match at the current cursor position will be correctly -+ * captured. -+ */ -+ for (i = 0; i < 2; i++) -+ { -+ if (i && count == 1) -+ flags = SEARCH_START; -+ -+ if (forward) -+ dir = i; -+ else -+ dir = !i; -+ result = searchit(curwin, curbuf, &pos, (dir ? FORWARD : BACKWARD), -+ spats[last_idx].pat, (long) (i ? count : 1), -+ SEARCH_KEEP | flags | (dir ? 0 : SEARCH_END), -+ RE_SEARCH, 0, NULL); -+ -+ /* First search may fail, but then start searching from the -+ * beginning of the file (cursor might be on the search match) -+ * except when Visual mode is active, so that extending the visual -+ * selection works. */ -+ if (!result && i) /* not found, abort */ -+ { -+ curwin->w_cursor = orig_pos; -+ if (VIsual_active) -+ VIsual = save_VIsual; -+ p_ws = old_p_ws; -+ return FAIL; -+ } -+ else if (!i && !result && !visual_active) -+ { -+ if (forward) /* try again from start of buffer */ -+ { -+ clearpos(&pos); -+ } -+ else /* try again from end of buffer */ -+ { -+ /* searching backwards, so set pos to last line and col */ -+ pos.lnum = curwin->w_buffer->b_ml.ml_line_count; -+ pos.col = STRLEN(ml_get(curwin->w_buffer->b_ml.ml_line_count)); -+ } -+ } -+ -+ } -+ -+ start_pos = pos; -+ flags = (forward ? SEARCH_END : 0); -+ -+ /* move to match */ -+ result = searchit(curwin, curbuf, &pos, (forward ? FORWARD : BACKWARD), -+ spats[last_idx].pat, 0L, flags | SEARCH_KEEP, RE_SEARCH, 0, NULL); -+ -+ if (!VIsual_active) -+ VIsual = start_pos; -+ -+ p_ws = old_p_ws; -+ curwin->w_cursor = pos; -+ VIsual_active = TRUE; -+ VIsual_mode = 'v'; -+ -+ if (VIsual_active) -+ { -+ redraw_curbuf_later(INVERTED); /* update the inversion */ -+ if (*p_sel == 'e' && ltoreq(VIsual, curwin->w_cursor)) -+ inc_cursor(); -+ } -+ -+ #ifdef FEAT_FOLDING -+ if (fdo_flags & FDO_SEARCH && KeyTyped) -+ foldOpenCursor(); -+ #endif -+ -+ may_start_select('c'); -+ #ifdef FEAT_MOUSE -+ setmouse(); -+ #endif -+ #ifdef FEAT_CLIPBOARD -+ /* Make sure the clipboard gets updated. Needed because start and -+ * end are still the same, and the selection needs to be owned */ -+ clip_star.vmode = NUL; -+ #endif -+ redraw_curbuf_later(INVERTED); -+ showmode(); -+ -+ return OK; -+ } -+ #endif /* FEAT_VISUAL */ -+ - /* - * Find sentence(s) under the cursor, cursor at end. - * When Visual active, extend it by one or more sentences. -*************** -*** 3420,3426 **** - - #ifdef FEAT_VISUAL - /* -! * When visual area is bigger than one character: Extend it. - */ - if (VIsual_active && !equalpos(start_pos, VIsual)) - { ---- 3565,3571 ---- - - #ifdef FEAT_VISUAL - /* -! * When the Visual area is bigger than one character: Extend it. - */ - if (VIsual_active && !equalpos(start_pos, VIsual)) - { -*************** -*** 3508,3515 **** - #endif - - /* -! * If cursor started on blank, check if it is just before the start of the -! * next sentence. - */ - while (c = gchar_pos(&pos), vim_iswhite(c)) /* vim_iswhite() is a macro */ - incl(&pos); ---- 3653,3660 ---- - #endif - - /* -! * If the cursor started on a blank, check if it is just before the start -! * of the next sentence. - */ - while (c = gchar_pos(&pos), vim_iswhite(c)) /* vim_iswhite() is a macro */ - incl(&pos); -*************** -*** 3558,3564 **** - #ifdef FEAT_VISUAL - if (VIsual_active) - { -! /* avoid getting stuck with "is" on a single space before a sent. */ - if (equalpos(start_pos, curwin->w_cursor)) - goto extend; - if (*p_sel == 'e') ---- 3703,3709 ---- - #ifdef FEAT_VISUAL - if (VIsual_active) - { -! /* Avoid getting stuck with "is" on a single space before a sentence. */ - if (equalpos(start_pos, curwin->w_cursor)) - goto extend; - if (*p_sel == 'e') -*** ../vim-7.3.609/src/testdir/test53.in 2010-08-15 21:57:29.000000000 +0200 ---- src/testdir/test53.in 2012-07-25 15:01:34.000000000 +0200 -*************** -*** 28,33 **** ---- 28,40 ---- - :put =matchstr(\"abcd\", \".\", 0, -1) " a - :put =match(\"abcd\", \".\", 0, 5) " -1 - :put =match(\"abcd\", \".\", 0, -1) " 0 -+ /^foobar -+ gncsearchmatch/one\_s*two\_s -+ :1 -+ gnd -+ /[a]bcdx -+ :1 -+ 2gnd - :/^start:/,/^end:/wq! test.out - ENDTEST - -*************** -*** 45,48 **** ---- 52,60 ---- - -<b>asdf<i>Xasdf</i>asdf</b>- - -<b>asdX<i>as<b />df</i>asdf</b>- - </begin> -+ SEARCH: -+ foobar -+ one -+ two -+ abcdx | abcdx | abcdx - end: -*** ../vim-7.3.609/src/testdir/test53.ok 2010-08-15 21:57:29.000000000 +0200 ---- src/testdir/test53.ok 2012-07-25 14:24:01.000000000 +0200 -*************** -*** 18,21 **** ---- 18,24 ---- - a - -1 - 0 -+ SEARCH: -+ searchmatch -+ abcdx | | abcdx - end: -*** ../vim-7.3.609/src/version.c 2012-07-25 13:46:25.000000000 +0200 ---- src/version.c 2012-07-25 15:03:43.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 610, - /**/ - --- -Did you ever see a "Hit any key to continue" message in a music piece? - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.611 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.611 -Problem: Can't use Vim dictionary as self argument in Python. -Solution: Fix the check for the "self" argument. (ZyX) -Files: src/if_py_both.h - - -*** ../vim-7.3.610/src/if_py_both.h 2012-06-30 13:34:29.000000000 +0200 ---- src/if_py_both.h 2012-07-25 15:32:10.000000000 +0200 -*************** -*** 1284,1292 **** - selfdictObject = PyDict_GetItemString(kwargs, "self"); - if (selfdictObject != NULL) - { -! if (!PyDict_Check(selfdictObject)) - { -! PyErr_SetString(PyExc_TypeError, _("'self' argument must be a dictionary")); - clear_tv(&args); - return NULL; - } ---- 1284,1293 ---- - selfdictObject = PyDict_GetItemString(kwargs, "self"); - if (selfdictObject != NULL) - { -! if (!PyMapping_Check(selfdictObject)) - { -! PyErr_SetString(PyExc_TypeError, -! _("'self' argument must be a dictionary")); - clear_tv(&args); - return NULL; - } -*** ../vim-7.3.610/src/version.c 2012-07-25 15:06:20.000000000 +0200 ---- src/version.c 2012-07-25 15:32:24.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 611, - /**/ - --- -In Joseph Heller's novel "Catch-22", the main character tries to get out of a -war by proving he is crazy. But the mere fact he wants to get out of the war -only shows he isn't crazy -- creating the original "Catch-22". - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.612 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.612 -Problem: Auto formatting messes up text when 'fo' contains "2". (ZyX) -Solution: Decrement "less_cols". (Tor Perkins) -Files: src/misc1.c, src/testdir/test68.in, src/testdir/test68.ok - - -*** ../vim-7.3.611/src/misc1.c 2012-07-06 16:49:37.000000000 +0200 ---- src/misc1.c 2012-07-25 16:03:58.000000000 +0200 -*************** -*** 1329,1334 **** ---- 1329,1335 ---- - for (i = 0; i < padding; i++) - { - STRCAT(leader, " "); -+ less_cols--; - newcol++; - } - } -*** ../vim-7.3.611/src/testdir/test68.in 2012-06-29 15:04:34.000000000 +0200 ---- src/testdir/test68.in 2012-07-25 15:57:06.000000000 +0200 -*************** -*** 94,99 **** ---- 94,109 ---- - } - - STARTTEST -+ /mno pqr/ -+ :setl tw=20 fo=an12wcq comments=s1:/*,mb:*,ex:*/ -+ A vwx yz -+ ENDTEST -+ -+ /* abc def ghi jkl -+ * mno pqr stu -+ */ -+ -+ STARTTEST - /^#/ - :setl tw=12 fo=tqnc comments=:# - A foobar -*** ../vim-7.3.611/src/testdir/test68.ok 2012-06-29 23:57:50.000000000 +0200 ---- src/testdir/test68.ok 2012-07-25 16:03:05.000000000 +0200 -*************** -*** 57,62 **** ---- 57,68 ---- - { 1aa ^^2bb } - - -+ /* abc def ghi jkl -+ * mno pqr stu -+ * vwx yz -+ */ -+ -+ - # 1 xxxxx - # foobar - -*** ../vim-7.3.611/src/version.c 2012-07-25 15:36:00.000000000 +0200 ---- src/version.c 2012-07-25 16:08:02.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 612, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -169. You hire a housekeeper for your home page. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.613 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.613 -Problem: Including Python's config.c in the build causes trouble. It is - not clear why it was there. -Solution: Omit the config file. (James McCoy) -Files: src/Makefile, src/auto/configure, src/configure.in - - -*** ../vim-7.3.612/src/Makefile 2012-06-20 18:39:12.000000000 +0200 ---- src/Makefile 2012-07-25 16:22:57.000000000 +0200 -*************** -*** 2559,2577 **** - objects/if_perlsfio.o: if_perlsfio.c - $(CCC) $(PERL_CFLAGS) -o $@ if_perlsfio.c - -- objects/py_config.o: $(PYTHON_CONFDIR)/config.c -- $(CCC) $(PYTHON_CFLAGS) -o $@ $(PYTHON_CONFDIR)/config.c \ -- -I$(PYTHON_CONFDIR) -DHAVE_CONFIG_H -DNO_MAIN -- - objects/py_getpath.o: $(PYTHON_CONFDIR)/getpath.c - $(CCC) $(PYTHON_CFLAGS) -o $@ $(PYTHON_CONFDIR)/getpath.c \ - -I$(PYTHON_CONFDIR) -DHAVE_CONFIG_H -DNO_MAIN \ - $(PYTHON_GETPATH_CFLAGS) - -- objects/py3_config.o: $(PYTHON3_CONFDIR)/config.c -- $(CCC) $(PYTHON3_CFLAGS) -o $@ $(PYTHON3_CONFDIR)/config.c \ -- -I$(PYTHON3_CONFDIR) -DHAVE_CONFIG_H -DNO_MAIN -- - objects/if_python.o: if_python.c if_py_both.h - $(CCC) $(PYTHON_CFLAGS) $(PYTHON_CFLAGS_EXTRA) -o $@ if_python.c - ---- 2559,2569 ---- -*** ../vim-7.3.612/src/auto/configure 2012-06-13 19:19:36.000000000 +0200 ---- src/auto/configure 2012-07-25 16:23:49.000000000 +0200 -*************** -*** 5357,5367 **** - PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -I${vi_cv_path_python_epfx}/include/python${vi_cv_var_python_version} -DPYTHON_HOME=\\\"${vi_cv_path_python_pfx}\\\"" - fi - PYTHON_SRC="if_python.c" -! if test "x$MACOSX" = "xyes"; then -! PYTHON_OBJ="objects/if_python.o" -! else -! PYTHON_OBJ="objects/if_python.o objects/py_config.o" -! fi - if test "${vi_cv_var_python_version}" = "1.4"; then - PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o" - fi ---- 5357,5363 ---- - PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -I${vi_cv_path_python_epfx}/include/python${vi_cv_var_python_version} -DPYTHON_HOME=\\\"${vi_cv_path_python_pfx}\\\"" - fi - PYTHON_SRC="if_python.c" -! PYTHON_OBJ="objects/if_python.o" - if test "${vi_cv_var_python_version}" = "1.4"; then - PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o" - fi -*************** -*** 5656,5666 **** - PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\"" - fi - PYTHON3_SRC="if_python3.c" -! if test "x$MACOSX" = "xyes"; then -! PYTHON3_OBJ="objects/if_python3.o" -! else -! PYTHON3_OBJ="objects/if_python3.o objects/py3_config.o" -! fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if -pthread should be used" >&5 - $as_echo_n "checking if -pthread should be used... " >&6; } ---- 5652,5658 ---- - PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\"" - fi - PYTHON3_SRC="if_python3.c" -! PYTHON3_OBJ="objects/if_python3.o" - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if -pthread should be used" >&5 - $as_echo_n "checking if -pthread should be used... " >&6; } -*** ../vim-7.3.612/src/configure.in 2012-06-13 19:19:36.000000000 +0200 ---- src/configure.in 2012-07-25 16:23:41.000000000 +0200 -*************** -*** 916,927 **** - PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -I${vi_cv_path_python_epfx}/include/python${vi_cv_var_python_version} -DPYTHON_HOME=\\\"${vi_cv_path_python_pfx}\\\"" - fi - PYTHON_SRC="if_python.c" -! dnl For Mac OSX 10.2 config.o is included in the Python library. -! if test "x$MACOSX" = "xyes"; then -! PYTHON_OBJ="objects/if_python.o" -! else -! PYTHON_OBJ="objects/if_python.o objects/py_config.o" -! fi - if test "${vi_cv_var_python_version}" = "1.4"; then - PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o" - fi ---- 916,922 ---- - PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -I${vi_cv_path_python_epfx}/include/python${vi_cv_var_python_version} -DPYTHON_HOME=\\\"${vi_cv_path_python_pfx}\\\"" - fi - PYTHON_SRC="if_python.c" -! PYTHON_OBJ="objects/if_python.o" - if test "${vi_cv_var_python_version}" = "1.4"; then - PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o" - fi -*************** -*** 1106,1117 **** - PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\"" - fi - PYTHON3_SRC="if_python3.c" -! dnl For Mac OSX 10.2 config.o is included in the Python library. -! if test "x$MACOSX" = "xyes"; then -! PYTHON3_OBJ="objects/if_python3.o" -! else -! PYTHON3_OBJ="objects/if_python3.o objects/py3_config.o" -! fi - - dnl On FreeBSD linking with "-pthread" is required to use threads. - dnl _THREAD_SAFE must be used for compiling then. ---- 1101,1107 ---- - PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\"" - fi - PYTHON3_SRC="if_python3.c" -! PYTHON3_OBJ="objects/if_python3.o" - - dnl On FreeBSD linking with "-pthread" is required to use threads. - dnl _THREAD_SAFE must be used for compiling then. -*** ../vim-7.3.612/src/version.c 2012-07-25 16:09:59.000000000 +0200 ---- src/version.c 2012-07-25 16:29:52.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 613, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -170. You introduce your wife as "my_lady@home.wife" and refer to your - children as "forked processes." - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.614 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.614 -Problem: Number argument gets turned into a number while it should be a - string. -Solution: Add flag to the call_vim_function() call. (Yasuhiro Matsumoto) -Files: src/edit.c, src/eval.c, src/proto/eval.pro - - -*** ../vim-7.3.613/src/edit.c 2012-07-10 17:14:50.000000000 +0200 ---- src/edit.c 2012-07-25 16:40:07.000000000 +0200 -*************** -*** 3959,3965 **** - curbuf_save = curbuf; - - /* Call a function, which returns a list or dict. */ -! if (call_vim_function(funcname, 2, args, FALSE, &rettv) == OK) - { - switch (rettv.v_type) - { ---- 3959,3965 ---- - curbuf_save = curbuf; - - /* Call a function, which returns a list or dict. */ -! if (call_vim_function(funcname, 2, args, FALSE, FALSE, &rettv) == OK) - { - switch (rettv.v_type) - { -*** ../vim-7.3.613/src/eval.c 2012-07-19 18:05:40.000000000 +0200 ---- src/eval.c 2012-07-25 16:42:41.000000000 +0200 -*************** -*** 1564,1574 **** - * Returns OK or FAIL. - */ - int -! call_vim_function(func, argc, argv, safe, rettv) - char_u *func; - int argc; - char_u **argv; - int safe; /* use the sandbox */ - typval_T *rettv; - { - typval_T *argvars; ---- 1564,1575 ---- - * Returns OK or FAIL. - */ - int -! call_vim_function(func, argc, argv, safe, str_arg_only, rettv) - char_u *func; - int argc; - char_u **argv; - int safe; /* use the sandbox */ -+ int str_arg_only; /* all arguments are strings */ - typval_T *rettv; - { - typval_T *argvars; -*************** -*** 1593,1600 **** - continue; - } - -! /* Recognize a number argument, the others must be strings. */ -! vim_str2nr(argv[i], NULL, &len, TRUE, TRUE, &n, NULL); - if (len != 0 && len == (int)STRLEN(argv[i])) - { - argvars[i].v_type = VAR_NUMBER; ---- 1594,1604 ---- - continue; - } - -! if (str_arg_only) -! len = 0; -! else -! /* Recognize a number argument, the others must be strings. */ -! vim_str2nr(argv[i], NULL, &len, TRUE, TRUE, &n, NULL); - if (len != 0 && len == (int)STRLEN(argv[i])) - { - argvars[i].v_type = VAR_NUMBER; -*************** -*** 1646,1652 **** - typval_T rettv; - char_u *retval; - -! if (call_vim_function(func, argc, argv, safe, &rettv) == FAIL) - return NULL; - - retval = vim_strsave(get_tv_string(&rettv)); ---- 1650,1657 ---- - typval_T rettv; - char_u *retval; - -! /* All arguments are passed as strings, no conversion to number. */ -! if (call_vim_function(func, argc, argv, safe, TRUE, &rettv) == FAIL) - return NULL; - - retval = vim_strsave(get_tv_string(&rettv)); -*************** -*** 1671,1677 **** - typval_T rettv; - long retval; - -! if (call_vim_function(func, argc, argv, safe, &rettv) == FAIL) - return -1; - - retval = get_tv_number_chk(&rettv, NULL); ---- 1676,1683 ---- - typval_T rettv; - long retval; - -! /* All arguments are passed as strings, no conversion to number. */ -! if (call_vim_function(func, argc, argv, safe, TRUE, &rettv) == FAIL) - return -1; - - retval = get_tv_number_chk(&rettv, NULL); -*************** -*** 1694,1700 **** - { - typval_T rettv; - -! if (call_vim_function(func, argc, argv, safe, &rettv) == FAIL) - return NULL; - - if (rettv.v_type != VAR_LIST) ---- 1700,1707 ---- - { - typval_T rettv; - -! /* All arguments are passed as strings, no conversion to number. */ -! if (call_vim_function(func, argc, argv, safe, TRUE, &rettv) == FAIL) - return NULL; - - if (rettv.v_type != VAR_LIST) -*** ../vim-7.3.613/src/proto/eval.pro 2012-07-16 17:31:48.000000000 +0200 ---- src/proto/eval.pro 2012-07-25 16:42:59.000000000 +0200 -*************** -*** 23,29 **** - list_T *eval_spell_expr __ARGS((char_u *badword, char_u *expr)); - int get_spellword __ARGS((list_T *list, char_u **pp)); - typval_T *eval_expr __ARGS((char_u *arg, char_u **nextcmd)); -! int call_vim_function __ARGS((char_u *func, int argc, char_u **argv, int safe, typval_T *rettv)); - void *call_func_retstr __ARGS((char_u *func, int argc, char_u **argv, int safe)); - long call_func_retnr __ARGS((char_u *func, int argc, char_u **argv, int safe)); - void *call_func_retlist __ARGS((char_u *func, int argc, char_u **argv, int safe)); ---- 23,29 ---- - list_T *eval_spell_expr __ARGS((char_u *badword, char_u *expr)); - int get_spellword __ARGS((list_T *list, char_u **pp)); - typval_T *eval_expr __ARGS((char_u *arg, char_u **nextcmd)); -! int call_vim_function __ARGS((char_u *func, int argc, char_u **argv, int safe, int str_arg_only, typval_T *rettv)); - void *call_func_retstr __ARGS((char_u *func, int argc, char_u **argv, int safe)); - long call_func_retnr __ARGS((char_u *func, int argc, char_u **argv, int safe)); - void *call_func_retlist __ARGS((char_u *func, int argc, char_u **argv, int safe)); -*** ../vim-7.3.613/src/version.c 2012-07-25 16:32:03.000000000 +0200 ---- src/version.c 2012-07-25 16:46:11.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 614, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -171. You invent another person and chat with yourself in empty chat rooms. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.615 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.615 -Problem: Completion for a user command does not recognize backslash before - a space. -Solution: Recognize escaped characters. (Yasuhiro Matsumoto) -Files: src/ex_docmd.c - - -*** ../vim-7.3.614/src/ex_docmd.c 2012-07-10 19:25:06.000000000 +0200 ---- src/ex_docmd.c 2012-07-25 17:10:16.000000000 +0200 -*************** -*** 3390,3401 **** - return NULL; - - /* Find start of last argument (argument just before cursor): */ -! p = buff + STRLEN(buff); -! while (p != arg && *p != ' ' && *p != TAB) -! p--; -! if (*p == ' ' || *p == TAB) -! p++; - xp->xp_pattern = p; - - if (ea.argt & XFILE) - { ---- 3390,3412 ---- - return NULL; - - /* Find start of last argument (argument just before cursor): */ -! p = buff; - xp->xp_pattern = p; -+ len = STRLEN(buff); -+ while (*p && p < buff + len) -+ { -+ if (*p == ' ' || *p == TAB) -+ { -+ /* argument starts after a space */ -+ xp->xp_pattern = ++p; -+ } -+ else -+ { -+ if (*p == '\\' && *(p + 1) != NUL) -+ ++p; /* skip over escaped character */ -+ mb_ptr_adv(p); -+ } -+ } - - if (ea.argt & XFILE) - { -*************** -*** 3821,3828 **** - if (compl == EXPAND_MAPPINGS) - return set_context_in_map_cmd(xp, (char_u *)"map", - arg, forceit, FALSE, FALSE, CMD_map); -! while ((xp->xp_pattern = vim_strchr(arg, ' ')) != NULL) -! arg = xp->xp_pattern + 1; - xp->xp_pattern = arg; - } - xp->xp_context = compl; ---- 3832,3853 ---- - if (compl == EXPAND_MAPPINGS) - return set_context_in_map_cmd(xp, (char_u *)"map", - arg, forceit, FALSE, FALSE, CMD_map); -! /* Find start of last argument. */ -! p = arg; -! while (*p) -! { -! if (*p == ' ') -! { -! /* argument starts after a space */ -! arg = p + 1; -! } -! else -! { -! if (*p == '\\' && *(p + 1) != NUL) -! ++p; /* skip over escaped character */ -! mb_ptr_adv(p); -! } -! } - xp->xp_pattern = arg; - } - xp->xp_context = compl; -*** ../vim-7.3.614/src/version.c 2012-07-25 16:46:59.000000000 +0200 ---- src/version.c 2012-07-25 17:17:05.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 615, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -172. You join listservers just for the extra e-mail. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.616 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.616 (after 7.3.610) -Problem: Can't compile without +visual. -Solution: Add #ifdef. -Files: src/normal.c - - -*** ../vim-7.3.615/src/normal.c 2012-07-25 15:06:20.000000000 +0200 ---- src/normal.c 2012-07-27 20:52:01.000000000 +0200 -*************** -*** 8002,8008 **** ---- 8002,8010 ---- - */ - case 'N': - case 'n': -+ #ifdef FEAT_VISUAL - if (!current_search(cap->count1, cap->nchar == 'n')) -+ #endif - beep_flush(); - - break; -*** ../vim-7.3.615/src/version.c 2012-07-25 17:22:17.000000000 +0200 ---- src/version.c 2012-07-27 20:52:58.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 616, - /**/ - --- -The CIA drives around in cars with the "Intel inside" logo. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.617 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.617 (after 7.3.615) -Problem: Hang on completion. -Solution: Skip over the space. (Yasuhiro Matsumoto) -Files: src/ex_docmd.c - - -*** ../vim-7.3.616/src/ex_docmd.c 2012-07-25 17:22:17.000000000 +0200 ---- src/ex_docmd.c 2012-07-27 21:07:42.000000000 +0200 -*************** -*** 3837,3852 **** - while (*p) - { - if (*p == ' ') -- { - /* argument starts after a space */ - arg = p + 1; -! } -! else -! { -! if (*p == '\\' && *(p + 1) != NUL) -! ++p; /* skip over escaped character */ -! mb_ptr_adv(p); -! } - } - xp->xp_pattern = arg; - } ---- 3837,3847 ---- - while (*p) - { - if (*p == ' ') - /* argument starts after a space */ - arg = p + 1; -! else if (*p == '\\' && *(p + 1) != NUL) -! ++p; /* skip over escaped character */ -! mb_ptr_adv(p); - } - xp->xp_pattern = arg; - } -*** ../vim-7.3.616/src/version.c 2012-07-27 21:05:51.000000000 +0200 ---- src/version.c 2012-07-27 21:08:31.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 617, - /**/ - --- -If Microsoft would build a car... -... You'd have to press the "Start" button to turn the engine off. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.618 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.618 (after 7.3.616) -Problem: Still doesn't compile with small features. -Solution: Move current_search() out of #ifdef. (Dominique Pelle) -Files: src/normal.c, src/search.c - - -*** ../vim-7.3.617/src/normal.c 2012-07-27 21:05:51.000000000 +0200 ---- src/normal.c 2012-07-28 13:34:13.000000000 +0200 -*************** -*** 7995,8000 **** ---- 7995,8001 ---- - cap->arg = TRUE; - nv_visual(cap); - break; -+ #endif /* FEAT_VISUAL */ - - /* "gn", "gN" visually select next/previous search match - * "gn" selects next match -*************** -*** 8006,8014 **** - if (!current_search(cap->count1, cap->nchar == 'n')) - #endif - beep_flush(); -- - break; -- #endif /* FEAT_VISUAL */ - - /* - * "gj" and "gk" two new funny movement keys -- up and down ---- 8007,8013 ---- -*** ../vim-7.3.617/src/search.c 2012-07-25 15:06:20.000000000 +0200 ---- src/search.c 2012-07-28 13:37:19.000000000 +0200 -*************** -*** 3397,3547 **** - return OK; - } - -- #if defined(FEAT_VISUAL) || defined(PROTO) -- /* -- * Find next search match under cursor, cursor at end. -- * Used while an operator is pending, and in Visual mode. -- * TODO: redo only works when used in operator pending mode -- */ -- int -- current_search(count, forward) -- long count; -- int forward; /* move forward or backwards */ -- { -- pos_T start_pos; /* position before the pattern */ -- pos_T orig_pos; /* position of the cursor at beginning */ -- pos_T pos; /* position after the pattern */ -- int i; -- int dir; -- int result; /* result of various function calls */ -- char_u old_p_ws = p_ws; -- int visual_active = FALSE; -- int flags = 0; -- pos_T save_VIsual; -- -- -- /* wrapping should not occur */ -- p_ws = FALSE; -- -- /* Correct cursor when 'selection' is exclusive */ -- if (VIsual_active && *p_sel == 'e' && lt(VIsual, curwin->w_cursor)) -- dec_cursor(); -- -- if (VIsual_active) -- { -- orig_pos = curwin->w_cursor; -- save_VIsual = VIsual; -- visual_active = TRUE; -- -- /* just started visual selection, only one character */ -- if (equalpos(VIsual, curwin->w_cursor)) -- visual_active = FALSE; -- -- pos = curwin->w_cursor; -- start_pos = VIsual; -- -- /* make sure, searching further will extend the match */ -- if (VIsual_active) -- { -- if (forward) -- incl(&pos); -- else -- decl(&pos); -- } -- } -- else -- orig_pos = pos = start_pos = curwin->w_cursor; -- -- /* -- * The trick is to first search backwards and then search forward again, -- * so that a match at the current cursor position will be correctly -- * captured. -- */ -- for (i = 0; i < 2; i++) -- { -- if (i && count == 1) -- flags = SEARCH_START; -- -- if (forward) -- dir = i; -- else -- dir = !i; -- result = searchit(curwin, curbuf, &pos, (dir ? FORWARD : BACKWARD), -- spats[last_idx].pat, (long) (i ? count : 1), -- SEARCH_KEEP | flags | (dir ? 0 : SEARCH_END), -- RE_SEARCH, 0, NULL); -- -- /* First search may fail, but then start searching from the -- * beginning of the file (cursor might be on the search match) -- * except when Visual mode is active, so that extending the visual -- * selection works. */ -- if (!result && i) /* not found, abort */ -- { -- curwin->w_cursor = orig_pos; -- if (VIsual_active) -- VIsual = save_VIsual; -- p_ws = old_p_ws; -- return FAIL; -- } -- else if (!i && !result && !visual_active) -- { -- if (forward) /* try again from start of buffer */ -- { -- clearpos(&pos); -- } -- else /* try again from end of buffer */ -- { -- /* searching backwards, so set pos to last line and col */ -- pos.lnum = curwin->w_buffer->b_ml.ml_line_count; -- pos.col = STRLEN(ml_get(curwin->w_buffer->b_ml.ml_line_count)); -- } -- } -- -- } -- -- start_pos = pos; -- flags = (forward ? SEARCH_END : 0); -- -- /* move to match */ -- result = searchit(curwin, curbuf, &pos, (forward ? FORWARD : BACKWARD), -- spats[last_idx].pat, 0L, flags | SEARCH_KEEP, RE_SEARCH, 0, NULL); -- -- if (!VIsual_active) -- VIsual = start_pos; -- -- p_ws = old_p_ws; -- curwin->w_cursor = pos; -- VIsual_active = TRUE; -- VIsual_mode = 'v'; -- -- if (VIsual_active) -- { -- redraw_curbuf_later(INVERTED); /* update the inversion */ -- if (*p_sel == 'e' && ltoreq(VIsual, curwin->w_cursor)) -- inc_cursor(); -- } -- -- #ifdef FEAT_FOLDING -- if (fdo_flags & FDO_SEARCH && KeyTyped) -- foldOpenCursor(); -- #endif -- -- may_start_select('c'); -- #ifdef FEAT_MOUSE -- setmouse(); -- #endif -- #ifdef FEAT_CLIPBOARD -- /* Make sure the clipboard gets updated. Needed because start and -- * end are still the same, and the selection needs to be owned */ -- clip_star.vmode = NUL; -- #endif -- redraw_curbuf_later(INVERTED); -- showmode(); -- -- return OK; -- } -- #endif /* FEAT_VISUAL */ -- - /* - * Find sentence(s) under the cursor, cursor at end. - * When Visual active, extend it by one or more sentences. ---- 3397,3402 ---- -*************** -*** 4670,4675 **** ---- 4525,4675 ---- - - #endif /* FEAT_TEXTOBJ */ - -+ #if defined(FEAT_VISUAL) || defined(PROTO) -+ /* -+ * Find next search match under cursor, cursor at end. -+ * Used while an operator is pending, and in Visual mode. -+ * TODO: redo only works when used in operator pending mode -+ */ -+ int -+ current_search(count, forward) -+ long count; -+ int forward; /* move forward or backwards */ -+ { -+ pos_T start_pos; /* position before the pattern */ -+ pos_T orig_pos; /* position of the cursor at beginning */ -+ pos_T pos; /* position after the pattern */ -+ int i; -+ int dir; -+ int result; /* result of various function calls */ -+ char_u old_p_ws = p_ws; -+ int visual_active = FALSE; -+ int flags = 0; -+ pos_T save_VIsual; -+ -+ -+ /* wrapping should not occur */ -+ p_ws = FALSE; -+ -+ /* Correct cursor when 'selection' is exclusive */ -+ if (VIsual_active && *p_sel == 'e' && lt(VIsual, curwin->w_cursor)) -+ dec_cursor(); -+ -+ if (VIsual_active) -+ { -+ orig_pos = curwin->w_cursor; -+ save_VIsual = VIsual; -+ visual_active = TRUE; -+ -+ /* just started visual selection, only one character */ -+ if (equalpos(VIsual, curwin->w_cursor)) -+ visual_active = FALSE; -+ -+ pos = curwin->w_cursor; -+ start_pos = VIsual; -+ -+ /* make sure, searching further will extend the match */ -+ if (VIsual_active) -+ { -+ if (forward) -+ incl(&pos); -+ else -+ decl(&pos); -+ } -+ } -+ else -+ orig_pos = pos = start_pos = curwin->w_cursor; -+ -+ /* -+ * The trick is to first search backwards and then search forward again, -+ * so that a match at the current cursor position will be correctly -+ * captured. -+ */ -+ for (i = 0; i < 2; i++) -+ { -+ if (i && count == 1) -+ flags = SEARCH_START; -+ -+ if (forward) -+ dir = i; -+ else -+ dir = !i; -+ result = searchit(curwin, curbuf, &pos, (dir ? FORWARD : BACKWARD), -+ spats[last_idx].pat, (long) (i ? count : 1), -+ SEARCH_KEEP | flags | (dir ? 0 : SEARCH_END), -+ RE_SEARCH, 0, NULL); -+ -+ /* First search may fail, but then start searching from the -+ * beginning of the file (cursor might be on the search match) -+ * except when Visual mode is active, so that extending the visual -+ * selection works. */ -+ if (!result && i) /* not found, abort */ -+ { -+ curwin->w_cursor = orig_pos; -+ if (VIsual_active) -+ VIsual = save_VIsual; -+ p_ws = old_p_ws; -+ return FAIL; -+ } -+ else if (!i && !result && !visual_active) -+ { -+ if (forward) /* try again from start of buffer */ -+ { -+ clearpos(&pos); -+ } -+ else /* try again from end of buffer */ -+ { -+ /* searching backwards, so set pos to last line and col */ -+ pos.lnum = curwin->w_buffer->b_ml.ml_line_count; -+ pos.col = STRLEN(ml_get(curwin->w_buffer->b_ml.ml_line_count)); -+ } -+ } -+ -+ } -+ -+ start_pos = pos; -+ flags = (forward ? SEARCH_END : 0); -+ -+ /* move to match */ -+ result = searchit(curwin, curbuf, &pos, (forward ? FORWARD : BACKWARD), -+ spats[last_idx].pat, 0L, flags | SEARCH_KEEP, RE_SEARCH, 0, NULL); -+ -+ if (!VIsual_active) -+ VIsual = start_pos; -+ -+ p_ws = old_p_ws; -+ curwin->w_cursor = pos; -+ VIsual_active = TRUE; -+ VIsual_mode = 'v'; -+ -+ if (VIsual_active) -+ { -+ redraw_curbuf_later(INVERTED); /* update the inversion */ -+ if (*p_sel == 'e' && ltoreq(VIsual, curwin->w_cursor)) -+ inc_cursor(); -+ } -+ -+ #ifdef FEAT_FOLDING -+ if (fdo_flags & FDO_SEARCH && KeyTyped) -+ foldOpenCursor(); -+ #endif -+ -+ may_start_select('c'); -+ #ifdef FEAT_MOUSE -+ setmouse(); -+ #endif -+ #ifdef FEAT_CLIPBOARD -+ /* Make sure the clipboard gets updated. Needed because start and -+ * end are still the same, and the selection needs to be owned */ -+ clip_star.vmode = NUL; -+ #endif -+ redraw_curbuf_later(INVERTED); -+ showmode(); -+ -+ return OK; -+ } -+ #endif /* FEAT_VISUAL */ -+ - #if defined(FEAT_LISP) || defined(FEAT_CINDENT) || defined(FEAT_TEXTOBJ) \ - || defined(PROTO) - /* -*** ../vim-7.3.617/src/version.c 2012-07-27 21:12:03.000000000 +0200 ---- src/version.c 2012-07-29 12:54:29.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 618, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -185. You order fast food over the Internet - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.619 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.619 -Problem: When executing a shell command Vim may become slow to respond. -Solution: Don't wait after every processed message. (idea by Yasuhiro - Matsumoto) -Files: src/os_win32.c - - -*** ../vim-7.3.618/src/os_win32.c 2012-07-19 11:37:22.000000000 +0200 ---- src/os_win32.c 2012-08-02 12:30:52.000000000 +0200 -*************** -*** 3319,3324 **** ---- 3319,3326 ---- - { - TranslateMessage(&msg); - pDispatchMessage(&msg); -+ delay = 1; -+ continue; - } - if (WaitForSingleObject(pi.hProcess, delay) != WAIT_TIMEOUT) - break; -*** ../vim-7.3.618/src/version.c 2012-07-29 12:55:21.000000000 +0200 ---- src/version.c 2012-08-02 12:29:08.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 619, - /**/ - --- -Some of the well know MS-Windows errors: - EMULTI Multitasking attempted, system confused - EKEYBOARD Keyboard locked, try getting out of this one! - EXPLAIN Unexplained error, please tell us what happened - EFUTURE Reserved for our future mistakes - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.620 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.620 -Problem: Building with recent Ruby on Win32 doesn't work. -Solution: Add a separate argument for the API version. (Yasuhiro Matsumoto) -Files: src/Make_ming.mak, src/Make_mvc.mak - - -*** ../vim-7.3.619/src/Make_ming.mak 2012-07-06 13:40:44.000000000 +0200 ---- src/Make_ming.mak 2012-08-02 17:02:34.000000000 +0200 -*************** -*** 260,266 **** - # DYNAMIC_RUBY=yes (to load the Ruby DLL dynamically) - # RUBY_VER=[Ruby version, eg 16, 17] (default is 16) - # RUBY_VER_LONG=[Ruby version, eg 1.6, 1.7] (default is 1.6) -! # You must set RUBY_VER_LONG when change RUBY_VER. - #RUBY=c:/ruby - ifdef RUBY - ifndef DYNAMIC_RUBY ---- 260,268 ---- - # DYNAMIC_RUBY=yes (to load the Ruby DLL dynamically) - # RUBY_VER=[Ruby version, eg 16, 17] (default is 16) - # RUBY_VER_LONG=[Ruby version, eg 1.6, 1.7] (default is 1.6) -! # You must set RUBY_VER_LONG when changing RUBY_VER. -! # You must set RUBY_API_VER version to RUBY_VER_LONG. -! # Don't set ruby API version to RUBY_VER like 191. - #RUBY=c:/ruby - ifdef RUBY - ifndef DYNAMIC_RUBY -*************** -*** 273,278 **** ---- 275,283 ---- - ifndef RUBY_VER_LONG - RUBY_VER_LONG = 1.6 - endif -+ ifndef RUBY_API_VER -+ RUBY_API_VER = $(subst .,,$(RUBY_VER_LONG)) -+ endif - - ifndef RUBY_PLATFORM - ifeq ($(RUBY_VER), 16) -*************** -*** 288,296 **** - - ifndef RUBY_INSTALL_NAME - ifeq ($(RUBY_VER), 16) -! RUBY_INSTALL_NAME = mswin32-ruby$(RUBY_VER) - else -! RUBY_INSTALL_NAME = msvcrt-ruby$(RUBY_VER) - endif - endif - ---- 293,301 ---- - - ifndef RUBY_INSTALL_NAME - ifeq ($(RUBY_VER), 16) -! RUBY_INSTALL_NAME = mswin32-ruby$(RUBY_API_VER) - else -! RUBY_INSTALL_NAME = msvcrt-ruby$(RUBY_API_VER) - endif - endif - -*** ../vim-7.3.619/src/Make_mvc.mak 2012-02-22 16:01:53.000000000 +0100 ---- src/Make_mvc.mak 2012-08-02 17:42:31.000000000 +0200 -*************** -*** 63,68 **** ---- 63,70 ---- - # RUBY_VER=[Ruby version, eg 16, 17] (default is 18) - # RUBY_VER_LONG=[Ruby version, eg 1.6, 1.7] (default is 1.8) - # You must set RUBY_VER_LONG when change RUBY_VER. -+ # You must set RUBY_API_VER to RUBY_VER_LONG. -+ # Don't set ruby API version to RUBY_VER like 191. - # - # Tcl interface: - # TCL=[Path to Tcl directory] -*************** -*** 807,834 **** - !ifndef RUBY_VER_LONG - RUBY_VER_LONG = 1.8 - !endif - - !if $(RUBY_VER) >= 18 - !ifndef RUBY_PLATFORM - RUBY_PLATFORM = i386-mswin32 - !endif - !ifndef RUBY_INSTALL_NAME -! RUBY_INSTALL_NAME = msvcrt-ruby$(RUBY_VER) - !endif - !else - !ifndef RUBY_PLATFORM - RUBY_PLATFORM = i586-mswin32 - !endif - !ifndef RUBY_INSTALL_NAME -! RUBY_INSTALL_NAME = mswin32-ruby$(RUBY_VER) - !endif - !endif # $(RUBY_VER) >= 18 - - !message Ruby requested (version $(RUBY_VER)) - root dir is "$(RUBY)" - CFLAGS = $(CFLAGS) -DFEAT_RUBY - RUBY_OBJ = $(OUTDIR)\if_ruby.obj -! !if $(RUBY_VER) >= 190 -! RUBY_INC = /I "$(RUBY)\include\ruby-$(RUBY_VER_LONG)\$(RUBY_PLATFORM)" /I "$(RUBY)\include\ruby-$(RUBY_VER_LONG)" - !else - RUBY_INC = /I "$(RUBY)\lib\ruby\$(RUBY_VER_LONG)\$(RUBY_PLATFORM)" - !endif ---- 813,843 ---- - !ifndef RUBY_VER_LONG - RUBY_VER_LONG = 1.8 - !endif -+ !ifndef RUBY_API_VER -+ RUBY_API_VER = $(RUBY_VER_LONG:.=) -+ !endif - - !if $(RUBY_VER) >= 18 - !ifndef RUBY_PLATFORM - RUBY_PLATFORM = i386-mswin32 - !endif - !ifndef RUBY_INSTALL_NAME -! RUBY_INSTALL_NAME = msvcrt-ruby$(RUBY_API_VER) - !endif - !else - !ifndef RUBY_PLATFORM - RUBY_PLATFORM = i586-mswin32 - !endif - !ifndef RUBY_INSTALL_NAME -! RUBY_INSTALL_NAME = mswin32-ruby$(RUBY_API_VER) - !endif - !endif # $(RUBY_VER) >= 18 - - !message Ruby requested (version $(RUBY_VER)) - root dir is "$(RUBY)" - CFLAGS = $(CFLAGS) -DFEAT_RUBY - RUBY_OBJ = $(OUTDIR)\if_ruby.obj -! !if $(RUBY_VER) >= 19 -! RUBY_INC = /I "$(RUBY)\lib\ruby\$(RUBY_VER_LONG)\$(RUBY_PLATFORM)" /I "$(RUBY)\include\ruby-$(RUBY_VER_LONG)" /I "$(RUBY)\include\ruby-$(RUBY_VER_LONG)\$(RUBY_PLATFORM)" - !else - RUBY_INC = /I "$(RUBY)\lib\ruby\$(RUBY_VER_LONG)\$(RUBY_PLATFORM)" - !endif -*** ../vim-7.3.619/src/version.c 2012-08-02 12:31:40.000000000 +0200 ---- src/version.c 2012-08-02 21:20:28.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 620, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -199. You read this entire list of symptoms, looking for something - that doesn't describe you. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.621 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.621 -Problem: Compiler warnings on 64 bit windows. -Solution: Add type casts. (Mike Williams) -Files: src/ex_docmd.c, src/search.c - - -*** ../vim-7.3.620/src/ex_docmd.c 2012-07-27 21:12:03.000000000 +0200 ---- src/ex_docmd.c 2012-08-02 21:19:22.000000000 +0200 -*************** -*** 3392,3398 **** - /* Find start of last argument (argument just before cursor): */ - p = buff; - xp->xp_pattern = p; -! len = STRLEN(buff); - while (*p && p < buff + len) - { - if (*p == ' ' || *p == TAB) ---- 3392,3398 ---- - /* Find start of last argument (argument just before cursor): */ - p = buff; - xp->xp_pattern = p; -! len = (int)STRLEN(buff); - while (*p && p < buff + len) - { - if (*p == ' ' || *p == TAB) -*** ../vim-7.3.620/src/search.c 2012-07-29 12:55:21.000000000 +0200 ---- src/search.c 2012-08-02 21:20:02.000000000 +0200 -*************** -*** 4621,4627 **** - { - /* searching backwards, so set pos to last line and col */ - pos.lnum = curwin->w_buffer->b_ml.ml_line_count; -! pos.col = STRLEN(ml_get(curwin->w_buffer->b_ml.ml_line_count)); - } - } - ---- 4621,4628 ---- - { - /* searching backwards, so set pos to last line and col */ - pos.lnum = curwin->w_buffer->b_ml.ml_line_count; -! pos.col = (colnr_T)STRLEN( -! ml_get(curwin->w_buffer->b_ml.ml_line_count)); - } - } - -*** ../vim-7.3.620/src/version.c 2012-08-02 21:21:43.000000000 +0200 ---- src/version.c 2012-08-02 21:23:13.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 621, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -200. You really believe in the concept of a "paperless" office. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.622 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.622 -Problem: XPM library for Win32 can't be found. -Solution: Suggest using the one from the Vim ftp site. -Files: src/Make_mvc.mak - - -*** ../vim-7.3.621/src/Make_mvc.mak 2012-08-02 21:21:43.000000000 +0200 ---- src/Make_mvc.mak 2012-08-02 21:45:52.000000000 +0200 -*************** -*** 281,287 **** - - !ifdef XPM - # XPM - Include support for XPM signs -! # you can get xpm.lib from http://iamphet.nm.ru/xpm or create it yourself - XPM_OBJ = $(OBJDIR)/xpm_w32.obj - XPM_DEFS = -DFEAT_XPM_W32 - XPM_LIB = $(XPM)\lib\libXpm.lib ---- 281,291 ---- - - !ifdef XPM - # XPM - Include support for XPM signs -! # You need to download or build xpm.lib somehow. -! # You can get the most recent version of libXpm-*.zip from -! # http://cgit.freedesktop.org/xorg/lib/libXpm -! # from which you must build xpm.lib yourself -! # OR get and unpack: ftp://ftp.vim.org/pub/vim/pcextra/xpm.zip - XPM_OBJ = $(OBJDIR)/xpm_w32.obj - XPM_DEFS = -DFEAT_XPM_W32 - XPM_LIB = $(XPM)\lib\libXpm.lib -*** ../vim-7.3.621/src/version.c 2012-08-02 21:24:38.000000000 +0200 ---- src/version.c 2012-08-02 21:46:43.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 622, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -202. You're amazed to find out Spam is a food. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.623 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.623 -Problem: Perl 5.14 commands crash Vim on MS-Windows. -Solution: Use perl_get_sv() instead of GvSV(). (Raymond Ko) -Files: src/if_perl.xs - - -*** ../vim-7.3.622/src/if_perl.xs 2012-03-16 19:34:43.000000000 +0100 ---- src/if_perl.xs 2012-08-08 13:15:29.000000000 +0200 -*************** -*** 76,81 **** ---- 76,87 ---- - # define EXTERN_C - #endif - -+ #if (PERL_REVISION == 5) && (PERL_VERSION >= 14) && defined(_MSC_VER) -+ /* Using PL_errgv to get the error message after perl_eval_sv() causes a crash -+ * with MSVC and Perl version 5.14. */ -+ # define AVOID_PL_ERRGV -+ #endif -+ - /* Compatibility hacks over */ - - static PerlInterpreter *perl_interp = NULL; -*************** -*** 796,802 **** ---- 802,812 ---- - - SvREFCNT_dec(sv); - -+ #ifdef AVOID_PL_ERRGV -+ err = SvPV(perl_get_sv("@", GV_ADD), length); -+ #else - err = SvPV(GvSV(PL_errgv), length); -+ #endif - - FREETMPS; - LEAVE; -*************** -*** 866,872 **** ---- 876,886 ---- - sv_catpvn(sv, "}", 1); - perl_eval_sv(sv, G_DISCARD | G_NOARGS); - SvREFCNT_dec(sv); -+ #ifdef AVOID_PL_ERRGV -+ str = SvPV(perl_get_sv("@", GV_ADD), length); -+ #else - str = SvPV(GvSV(PL_errgv), length); -+ #endif - if (length) - goto err; - -*************** -*** 880,886 **** ---- 894,904 ---- - sv_setpv(GvSV(PL_defgv), (char *)ml_get(i)); - PUSHMARK(sp); - perl_call_pv("VIM::perldo", G_SCALAR | G_EVAL); -+ #ifdef AVOID_PL_ERRGV -+ str = SvPV(perl_get_sv("@", GV_ADD), length); -+ #else - str = SvPV(GvSV(PL_errgv), length); -+ #endif - if (length) - break; - SPAGAIN; -*** ../vim-7.3.622/src/version.c 2012-08-02 21:48:20.000000000 +0200 ---- src/version.c 2012-08-08 13:08:10.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 623, - /**/ - --- -Don't be humble ... you're not that great. - -- Golda Meir - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.624 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.624 -Problem: When cancelling input() it returns the third argument. That should - only happen for inputdialog(). -Solution: Check if inputdialog() was used. (Hirohito Higashi) -Files: src/eval.c - - -*** ../vim-7.3.623/src/eval.c 2012-07-25 16:46:59.000000000 +0200 ---- src/eval.c 2012-08-08 14:31:48.000000000 +0200 -*************** -*** 12966,12972 **** - rettv->vval.v_string = - getcmdline_prompt(inputsecret_flag ? NUL : '@', p, echo_attr, - xp_type, xp_arg); -! if (rettv->vval.v_string == NULL - && argvars[1].v_type != VAR_UNKNOWN - && argvars[2].v_type != VAR_UNKNOWN) - rettv->vval.v_string = vim_strsave(get_tv_string_buf( ---- 12966,12972 ---- - rettv->vval.v_string = - getcmdline_prompt(inputsecret_flag ? NUL : '@', p, echo_attr, - xp_type, xp_arg); -! if (inputdialog && rettv->vval.v_string == NULL - && argvars[1].v_type != VAR_UNKNOWN - && argvars[2].v_type != VAR_UNKNOWN) - rettv->vval.v_string = vim_strsave(get_tv_string_buf( -*** ../vim-7.3.623/src/version.c 2012-08-08 13:17:26.000000000 +0200 ---- src/version.c 2012-08-08 14:28:46.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 624, - /**/ - --- -Your fault: core dumped - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.625 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.625 -Problem: "gn" does not handle zero-width matches correctly. -Solution: Handle zero-width patterns specially. (Christian Brabandt) -Files: src/search.c - - -*** ../vim-7.3.624/src/search.c 2012-08-02 21:24:38.000000000 +0200 ---- src/search.c 2012-08-08 15:25:12.000000000 +0200 -*************** -*** 4546,4551 **** ---- 4546,4554 ---- - int visual_active = FALSE; - int flags = 0; - pos_T save_VIsual; -+ regmmatch_T regmatch; -+ int nmatched = 0; -+ int zerowidth = FALSE; - - - /* wrapping should not occur */ -*************** -*** 4581,4603 **** - orig_pos = pos = start_pos = curwin->w_cursor; - - /* - * The trick is to first search backwards and then search forward again, - * so that a match at the current cursor position will be correctly - * captured. - */ - for (i = 0; i < 2; i++) - { -- if (i && count == 1) -- flags = SEARCH_START; -- - if (forward) - dir = i; - else - dir = !i; - result = searchit(curwin, curbuf, &pos, (dir ? FORWARD : BACKWARD), - spats[last_idx].pat, (long) (i ? count : 1), -! SEARCH_KEEP | flags | (dir ? 0 : SEARCH_END), -! RE_SEARCH, 0, NULL); - - /* First search may fail, but then start searching from the - * beginning of the file (cursor might be on the search match) ---- 4584,4625 ---- - orig_pos = pos = start_pos = curwin->w_cursor; - - /* -+ * Check for zero-width pattern. -+ */ -+ if (search_regcomp(spats[last_idx].pat, RE_SEARCH, RE_SEARCH, -+ ((SEARCH_HIS + SEARCH_KEEP)), ®match) == FAIL) -+ return FAIL; -+ -+ /* Zero-width pattern should match somewhere, then we can check if start -+ * and end are in the same position. */ -+ nmatched = vim_regexec_multi(®match, curwin, curbuf, -+ curwin->w_cursor.lnum, (colnr_T)0, NULL); -+ if (called_emsg) -+ return FAIL; -+ if (nmatched && regmatch.startpos[0].lnum == regmatch.endpos[0].lnum -+ && regmatch.endpos[0].col == regmatch.startpos[0].col) -+ zerowidth = TRUE; -+ vim_free(regmatch.regprog); -+ -+ /* - * The trick is to first search backwards and then search forward again, - * so that a match at the current cursor position will be correctly - * captured. - */ - for (i = 0; i < 2; i++) - { - if (forward) - dir = i; - else - dir = !i; -+ -+ flags = 0; -+ if (!dir && !zerowidth) -+ flags = SEARCH_END; -+ - result = searchit(curwin, curbuf, &pos, (dir ? FORWARD : BACKWARD), - spats[last_idx].pat, (long) (i ? count : 1), -! SEARCH_KEEP | flags, RE_SEARCH, 0, NULL); - - /* First search may fail, but then start searching from the - * beginning of the file (cursor might be on the search match) -*************** -*** 4629,4638 **** - } - - start_pos = pos; -! flags = (forward ? SEARCH_END : 0); - -! /* move to match */ -! result = searchit(curwin, curbuf, &pos, (forward ? FORWARD : BACKWARD), - spats[last_idx].pat, 0L, flags | SEARCH_KEEP, RE_SEARCH, 0, NULL); - - if (!VIsual_active) ---- 4651,4662 ---- - } - - start_pos = pos; -! flags = forward ? SEARCH_END : 0; - -! /* move to match, except for zero-width matches, in which case, we are -! * already on the next match */ -! if (!zerowidth) -! result = searchit(curwin, curbuf, &pos, (forward ? FORWARD : BACKWARD), - spats[last_idx].pat, 0L, flags | SEARCH_KEEP, RE_SEARCH, 0, NULL); - - if (!VIsual_active) -*** ../vim-7.3.624/src/version.c 2012-08-08 14:33:16.000000000 +0200 ---- src/version.c 2012-08-08 15:21:53.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 625, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -222. You send more than 20 personal e-mails a day. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.626 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.626 -Problem: Python interface doesn't build with Python 2.4 or older. -Solution: Define Py_ssize_t. (Benjamin Bannier) -Files: src/if_py_both.h - - -*** ../vim-7.3.625/src/if_py_both.h 2012-07-25 15:36:00.000000000 +0200 ---- src/if_py_both.h 2012-08-08 15:53:24.000000000 +0200 -*************** -*** 12,17 **** ---- 12,21 ---- - * Common code for if_python.c and if_python3.c. - */ - -+ #if PY_VERSION_HEX < 0x02050000 -+ typedef int Py_ssize_t; /* Python 2.4 and earlier don't have this type. */ -+ #endif -+ - #ifdef FEAT_MBYTE - # define ENC_OPT p_enc - #else -*** ../vim-7.3.625/src/version.c 2012-08-08 15:27:54.000000000 +0200 ---- src/version.c 2012-08-08 15:52:07.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 626, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -224. You set up your own Web page. You set up a Web page for each - of your kids... and your pets. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.627 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.627 -Problem: When using the "n" flag with the ":s" command a \= substitution - will not be evaluated. -Solution: Do perform the evaluation, so that a function can be invoked at - every matching position without changing the text. (Christian - Brabandt) -Files: src/ex_cmds.c - - -*** ../vim-7.3.626/src/ex_cmds.c 2012-07-10 15:18:18.000000000 +0200 ---- src/ex_cmds.c 2012-08-08 16:44:16.000000000 +0200 -*************** -*** 4264,4269 **** ---- 4264,4272 ---- - int endcolumn = FALSE; /* cursor in last column when done */ - pos_T old_cursor = curwin->w_cursor; - int start_nsubs; -+ #ifdef FEAT_EVAL -+ int save_ma = 0; -+ #endif - - cmd = eap->arg; - if (!global_busy) -*************** -*** 4668,4674 **** - } - sub_nsubs++; - did_sub = TRUE; -! goto skip; - } - - if (do_ask) ---- 4671,4682 ---- - } - sub_nsubs++; - did_sub = TRUE; -! #ifdef FEAT_EVAL -! /* Skip the substitution, unless an expression is used, -! * then it is evaluated in the sandbox. */ -! if (!(sub[0] == '\\' && sub[1] == '=')) -! #endif -! goto skip; - } - - if (do_ask) -*************** -*** 4840,4849 **** ---- 4848,4874 ---- - /* - * 3. substitute the string. - */ -+ #ifdef FEAT_EVAL -+ if (do_count) -+ { -+ /* prevent accidently changing the buffer by a function */ -+ save_ma = curbuf->b_p_ma; -+ curbuf->b_p_ma = FALSE; -+ sandbox++; -+ } -+ #endif - /* get length of substitution part */ - sublen = vim_regsub_multi(®match, - sub_firstlnum - regmatch.startpos[0].lnum, - sub, sub_firstline, FALSE, p_magic, TRUE); -+ #ifdef FEAT_EVAL -+ if (do_count) -+ { -+ curbuf->b_p_ma = save_ma; -+ sandbox--; -+ goto skip; -+ } -+ #endif - - /* When the match included the "$" of the last line it may - * go beyond the last line of the buffer. */ -*** ../vim-7.3.626/src/version.c 2012-08-08 16:05:03.000000000 +0200 ---- src/version.c 2012-08-08 16:48:45.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 627, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -225. You sign up for free subscriptions for all the computer magazines - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.628 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.628 -Problem: ":open" does not allow for a !, which results in a confusing error - message. (Shawn Wilson) -Solution: Allow ! on ":open". (Christian Brabandt) -Files: src/ex_cmds.h - - -*** ../vim-7.3.627/src/ex_cmds.h 2012-07-06 18:27:34.000000000 +0200 ---- src/ex_cmds.h 2012-08-08 17:15:45.000000000 +0200 -*************** -*** 662,668 **** - EX(CMD_nunmenu, "nunmenu", ex_menu, - EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), - EX(CMD_open, "open", ex_open, -! RANGE|EXTRA), - EX(CMD_oldfiles, "oldfiles", ex_oldfiles, - BANG|TRLBAR|SBOXOK|CMDWIN), - EX(CMD_omap, "omap", ex_map, ---- 662,668 ---- - EX(CMD_nunmenu, "nunmenu", ex_menu, - EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), - EX(CMD_open, "open", ex_open, -! RANGE|BANG|EXTRA), - EX(CMD_oldfiles, "oldfiles", ex_oldfiles, - BANG|TRLBAR|SBOXOK|CMDWIN), - EX(CMD_omap, "omap", ex_map, -*** ../vim-7.3.627/src/version.c 2012-08-08 16:50:40.000000000 +0200 ---- src/version.c 2012-08-08 17:30:14.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 628, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -226. You sit down at the computer right after dinner and your spouse - says "See you in the morning." - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.629 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.629 -Problem: There is no way to make 'shiftwidth' follow 'tabstop'. -Solution: When 'shiftwidth' is zero use the value of 'tabstop'. (Christian - Brabandt) -Files: src/edit.c, src/ex_getln.c, src/fold.c, src/misc1.c, src/ops.c, - src/option.c, src/proto/option.pro - - -*** ../vim-7.3.628/src/edit.c 2012-07-25 16:46:59.000000000 +0200 ---- src/edit.c 2012-08-08 17:55:37.000000000 +0200 -*************** -*** 8899,8907 **** - - *inserted_space_p = FALSE; - if (p_sta && in_indent) -! ts = curbuf->b_p_sw; - else -! ts = curbuf->b_p_sts; - /* Compute the virtual column where we want to be. Since - * 'showbreak' may get in the way, need to get the last column of - * the previous character. */ ---- 8899,8907 ---- - - *inserted_space_p = FALSE; - if (p_sta && in_indent) -! ts = (int)get_sw_value(); - else -! ts = (int)curbuf->b_p_sts; - /* Compute the virtual column where we want to be. Since - * 'showbreak' may get in the way, need to get the last column of - * the previous character. */ -*************** -*** 9589,9595 **** - * When nothing special, insert TAB like a normal character - */ - if (!curbuf->b_p_et -! && !(p_sta && ind && curbuf->b_p_ts != curbuf->b_p_sw) - && curbuf->b_p_sts == 0) - return TRUE; - ---- 9589,9595 ---- - * When nothing special, insert TAB like a normal character - */ - if (!curbuf->b_p_et -! && !(p_sta && ind && curbuf->b_p_ts != get_sw_value()) - && curbuf->b_p_sts == 0) - return TRUE; - -*************** -*** 9605,9611 **** - AppendToRedobuff((char_u *)"\t"); - - if (p_sta && ind) /* insert tab in indent, use 'shiftwidth' */ -! temp = (int)curbuf->b_p_sw; - else if (curbuf->b_p_sts > 0) /* use 'softtabstop' when set */ - temp = (int)curbuf->b_p_sts; - else /* otherwise use 'tabstop' */ ---- 9605,9611 ---- - AppendToRedobuff((char_u *)"\t"); - - if (p_sta && ind) /* insert tab in indent, use 'shiftwidth' */ -! temp = (int)get_sw_value(); - else if (curbuf->b_p_sts > 0) /* use 'softtabstop' when set */ - temp = (int)curbuf->b_p_sts; - else /* otherwise use 'tabstop' */ -*** ../vim-7.3.628/src/ex_getln.c 2012-06-29 13:44:37.000000000 +0200 ---- src/ex_getln.c 2012-08-08 17:39:40.000000000 +0200 -*************** -*** 2268,2277 **** - - if (c1 == Ctrl_T) - { - p = (char_u *)line_ga.ga_data; - p[line_ga.ga_len] = NUL; - indent = get_indent_str(p, 8); -! indent += curbuf->b_p_sw - indent % curbuf->b_p_sw; - add_indent: - while (get_indent_str(p, 8) < indent) - { ---- 2268,2279 ---- - - if (c1 == Ctrl_T) - { -+ long sw = get_sw_value(); -+ - p = (char_u *)line_ga.ga_data; - p[line_ga.ga_len] = NUL; - indent = get_indent_str(p, 8); -! indent += sw - indent % sw; - add_indent: - while (get_indent_str(p, 8) < indent) - { -*************** -*** 2323,2329 **** - p[line_ga.ga_len] = NUL; - indent = get_indent_str(p, 8); - --indent; -! indent -= indent % curbuf->b_p_sw; - } - while (get_indent_str(p, 8) > indent) - { ---- 2325,2331 ---- - p[line_ga.ga_len] = NUL; - indent = get_indent_str(p, 8); - --indent; -! indent -= indent % get_sw_value(); - } - while (get_indent_str(p, 8) > indent) - { -*** ../vim-7.3.628/src/fold.c 2012-02-29 19:19:57.000000000 +0100 ---- src/fold.c 2012-08-08 17:40:11.000000000 +0200 -*************** -*** 3025,3031 **** - flp->lvl = -1; - } - else -! flp->lvl = get_indent_buf(buf, lnum) / buf->b_p_sw; - if (flp->lvl > flp->wp->w_p_fdn) - { - flp->lvl = flp->wp->w_p_fdn; ---- 3025,3031 ---- - flp->lvl = -1; - } - else -! flp->lvl = get_indent_buf(buf, lnum) / get_sw_value(); - if (flp->lvl > flp->wp->w_p_fdn) - { - flp->lvl = flp->wp->w_p_fdn; -*** ../vim-7.3.628/src/misc1.c 2012-07-25 16:09:59.000000000 +0200 ---- src/misc1.c 2012-08-08 17:43:07.000000000 +0200 -*************** -*** 1389,1397 **** - #ifdef FEAT_SMARTINDENT - if (did_si) - { - if (p_sr) -! newindent -= newindent % (int)curbuf->b_p_sw; -! newindent += (int)curbuf->b_p_sw; - } - #endif - /* Copy the indent */ ---- 1389,1399 ---- - #ifdef FEAT_SMARTINDENT - if (did_si) - { -+ int sw = (int)get_sw_value(); -+ - if (p_sr) -! newindent -= newindent % sw; -! newindent += sw; - } - #endif - /* Copy the indent */ -*************** -*** 6461,6471 **** - int - get_c_indent() - { - /* - * spaces from a block's opening brace the prevailing indent for that - * block should be - */ -! int ind_level = curbuf->b_p_sw; - - /* - * spaces from the edge of the line an open brace that's at the end of a ---- 6463,6476 ---- - int - get_c_indent() - { -+ int sw = (int)get_sw_value(); -+ - /* - * spaces from a block's opening brace the prevailing indent for that - * block should be - */ -! -! int ind_level = sw; - - /* - * spaces from the edge of the line an open brace that's at the end of a -*************** -*** 6512,6523 **** - /* - * spaces from the switch() indent a "case xx" label should be located - */ -! int ind_case = curbuf->b_p_sw; - - /* - * spaces from the "case xx:" code after a switch() should be located - */ -! int ind_case_code = curbuf->b_p_sw; - - /* - * lineup break at end of case in switch() with case label ---- 6517,6528 ---- - /* - * spaces from the switch() indent a "case xx" label should be located - */ -! int ind_case = sw; - - /* - * spaces from the "case xx:" code after a switch() should be located - */ -! int ind_case_code = sw; - - /* - * lineup break at end of case in switch() with case label -*************** -*** 6528,6572 **** - * spaces from the class declaration indent a scope declaration label - * should be located - */ -! int ind_scopedecl = curbuf->b_p_sw; - - /* - * spaces from the scope declaration label code should be located - */ -! int ind_scopedecl_code = curbuf->b_p_sw; - - /* - * amount K&R-style parameters should be indented - */ -! int ind_param = curbuf->b_p_sw; - - /* - * amount a function type spec should be indented - */ -! int ind_func_type = curbuf->b_p_sw; - - /* - * amount a cpp base class declaration or constructor initialization - * should be indented - */ -! int ind_cpp_baseclass = curbuf->b_p_sw; - - /* - * additional spaces beyond the prevailing indent a continuation line - * should be located - */ -! int ind_continuation = curbuf->b_p_sw; - - /* - * spaces from the indent of the line with an unclosed parentheses - */ -! int ind_unclosed = curbuf->b_p_sw * 2; - - /* - * spaces from the indent of the line with an unclosed parentheses, which - * itself is also unclosed - */ -! int ind_unclosed2 = curbuf->b_p_sw; - - /* - * suppress ignoring spaces from the indent of a line starting with an ---- 6533,6577 ---- - * spaces from the class declaration indent a scope declaration label - * should be located - */ -! int ind_scopedecl = sw; - - /* - * spaces from the scope declaration label code should be located - */ -! int ind_scopedecl_code = sw; - - /* - * amount K&R-style parameters should be indented - */ -! int ind_param = sw; - - /* - * amount a function type spec should be indented - */ -! int ind_func_type = sw; - - /* - * amount a cpp base class declaration or constructor initialization - * should be indented - */ -! int ind_cpp_baseclass = sw; - - /* - * additional spaces beyond the prevailing indent a continuation line - * should be located - */ -! int ind_continuation = sw; - - /* - * spaces from the indent of the line with an unclosed parentheses - */ -! int ind_unclosed = sw * 2; - - /* - * spaces from the indent of the line with an unclosed parentheses, which - * itself is also unclosed - */ -! int ind_unclosed2 = sw; - - /* - * suppress ignoring spaces from the indent of a line starting with an -*************** -*** 6719,6730 **** - if (*options == 's') /* "2s" means two times 'shiftwidth' */ - { - if (options == digits) -! n = curbuf->b_p_sw; /* just "s" is one 'shiftwidth' */ - else - { -! n *= curbuf->b_p_sw; - if (divider) -! n += (curbuf->b_p_sw * fraction + divider / 2) / divider; - } - ++options; - } ---- 6724,6735 ---- - if (*options == 's') /* "2s" means two times 'shiftwidth' */ - { - if (options == digits) -! n = sw; /* just "s" is one 'shiftwidth' */ - else - { -! n *= sw; - if (divider) -! n += (sw * fraction + divider / 2) / divider; - } - ++options; - } -*** ../vim-7.3.628/src/ops.c 2012-07-10 16:49:08.000000000 +0200 ---- src/ops.c 2012-08-08 17:34:28.000000000 +0200 -*************** -*** 332,338 **** - { - int count; - int i, j; -! int p_sw = (int)curbuf->b_p_sw; - - count = get_indent(); /* get current indent */ - ---- 332,338 ---- - { - int count; - int i, j; -! int p_sw = (int)get_sw_value(); - - count = get_indent(); /* get current indent */ - -*************** -*** 388,394 **** - int total; - char_u *newp, *oldp; - int oldcol = curwin->w_cursor.col; -! int p_sw = (int)curbuf->b_p_sw; - int p_ts = (int)curbuf->b_p_ts; - struct block_def bd; - int incr; ---- 388,394 ---- - int total; - char_u *newp, *oldp; - int oldcol = curwin->w_cursor.col; -! int p_sw = (int)get_sw_value(); - int p_ts = (int)curbuf->b_p_ts; - struct block_def bd; - int incr; -*** ../vim-7.3.628/src/option.c 2012-07-10 18:31:49.000000000 +0200 ---- src/option.c 2012-08-08 17:45:01.000000000 +0200 -*************** -*** 8125,8131 **** - need_mouse_correct = TRUE; - #endif - -! if (curbuf->b_p_sw <= 0) - { - errmsg = e_positive; - curbuf->b_p_sw = curbuf->b_p_ts; ---- 8125,8131 ---- - need_mouse_correct = TRUE; - #endif - -! if (curbuf->b_p_sw < 0) - { - errmsg = e_positive; - curbuf->b_p_sw = curbuf->b_p_ts; -*************** -*** 11419,11421 **** ---- 11419,11431 ---- - { - return check_opt_strings(p, p_ff_values, FALSE); - } -+ -+ /* -+ * Return the effective shiftwidth value for current buffer, using the -+ * 'tabstop' value when 'shiftwidth' is zero. -+ */ -+ long -+ get_sw_value() -+ { -+ return curbuf->b_p_sw ? curbuf->b_p_sw : curbuf->b_p_ts; -+ } -*** ../vim-7.3.628/src/proto/option.pro 2011-01-22 00:11:42.000000000 +0100 ---- src/proto/option.pro 2012-08-08 17:34:33.000000000 +0200 -*************** -*** 56,59 **** ---- 56,60 ---- - void save_file_ff __ARGS((buf_T *buf)); - int file_ff_differs __ARGS((buf_T *buf, int ignore_empty)); - int check_ff_value __ARGS((char_u *p)); -+ long get_sw_value __ARGS((void)); - /* vim: set ft=c : */ -*** ../vim-7.3.628/src/version.c 2012-08-08 17:31:36.000000000 +0200 ---- src/version.c 2012-08-08 17:57:48.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 629, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -228. You spend Saturday night making the counter on your home page - pass that 2000 mark. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.630 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.630 -Problem: "|" does not behave correctly when 'virtualedit' is set. -Solution: Call validate_virtcol(). (David Bürgin) -Files: src/normal.c - - -*** ../vim-7.3.629/src/normal.c 2012-07-29 12:55:21.000000000 +0200 ---- src/normal.c 2012-08-15 13:20:13.000000000 +0200 -*************** -*** 7786,7792 **** ---- 7786,7795 ---- - * virtualedit. Recalculate curwin->w_cursor to avoid bad hilighting. - */ - if (c == Ctrl_V && (ve_flags & VE_BLOCK) && gchar_cursor() == TAB) -+ { -+ validate_virtcol(); - coladvance(curwin->w_virtcol); -+ } - #endif - VIsual = curwin->w_cursor; - -*** ../vim-7.3.629/src/version.c 2012-08-08 18:01:00.000000000 +0200 ---- src/version.c 2012-08-15 13:30:30.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 630, - /**/ - --- -"Marriage is when a man and woman become as one; the trouble starts -when they try to decide which one" - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.631 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.631 -Problem: Cannot complete user names. -Solution: Add user name completion. (Dominique Pelle) -Files: runtime/doc/map.txt, src/auto/configure, src/config.h.in, - src/configure.in, src/ex_docmd.c, src/ex_getln.c, - src/misc1.c, src/misc2.c, src/proto/misc1.pro, src/vim.h - - -*** ../vim-7.3.630/runtime/doc/map.txt 2012-04-30 18:48:38.000000000 +0200 ---- runtime/doc/map.txt 2012-08-15 13:46:34.000000000 +0200 -*************** -*** 1227,1232 **** ---- 1244,1250 ---- - -complete=syntax syntax file names |'syntax'| - -complete=tag tags - -complete=tag_listfiles tags, file names are shown when CTRL-D is hit -+ -complete=user user names - -complete=var user variables - -complete=custom,{func} custom completion, defined via {func} - -complete=customlist,{func} custom completion, defined via {func} -*** ../vim-7.3.630/src/auto/configure 2012-07-25 16:32:03.000000000 +0200 ---- src/auto/configure 2012-08-15 13:48:06.000000000 +0200 -*************** -*** 10631,10637 **** - fi - - for ac_func in bcmp fchdir fchown fsync getcwd getpseudotty \ -! getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \ - memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \ - setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \ - sigvec strcasecmp strerror strftime stricmp strncasecmp \ ---- 10631,10637 ---- - fi - - for ac_func in bcmp fchdir fchown fsync getcwd getpseudotty \ -! getpwent getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \ - memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \ - setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \ - sigvec strcasecmp strerror strftime stricmp strncasecmp \ -*** ../vim-7.3.630/src/config.h.in 2012-02-05 22:51:27.000000000 +0100 ---- src/config.h.in 2012-08-15 13:46:35.000000000 +0200 -*************** -*** 161,166 **** ---- 161,167 ---- - #undef HAVE_FSYNC - #undef HAVE_GETCWD - #undef HAVE_GETPSEUDOTTY -+ #undef HAVE_GETPWENT - #undef HAVE_GETPWNAM - #undef HAVE_GETPWUID - #undef HAVE_GETRLIMIT -*** ../vim-7.3.630/src/configure.in 2012-07-25 16:32:03.000000000 +0200 ---- src/configure.in 2012-08-15 13:46:35.000000000 +0200 -*************** -*** 2994,3000 **** - dnl Check for functions in one big call, to reduce the size of configure. - dnl Can only be used for functions that do not require any include. - AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \ -! getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \ - memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \ - setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \ - sigvec strcasecmp strerror strftime stricmp strncasecmp \ ---- 2994,3000 ---- - dnl Check for functions in one big call, to reduce the size of configure. - dnl Can only be used for functions that do not require any include. - AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \ -! getpwent getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \ - memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \ - setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \ - sigvec strcasecmp strerror strftime stricmp strncasecmp \ -*** ../vim-7.3.630/src/ex_docmd.c 2012-08-02 21:24:38.000000000 +0200 ---- src/ex_docmd.c 2012-08-15 13:54:29.000000000 +0200 -*************** -*** 3515,3520 **** ---- 3515,3537 ---- - #endif - } - } -+ #if defined(FEAT_CMDL_COMPL) -+ /* Check for user names */ -+ if (*xp->xp_pattern == '~') -+ { -+ for (p = xp->xp_pattern + 1; *p != NUL && *p != '/'; ++p) -+ ; -+ /* Complete ~user only if it partially matches a user name. -+ * A full match ~user<Tab> will be replaced by user's home -+ * directory i.e. something like ~user<Tab> -> /home/user/ */ -+ if (*p == NUL && p > xp->xp_pattern + 1 -+ && match_user(xp->xp_pattern + 1) == 1) -+ { -+ xp->xp_context = EXPAND_USER; -+ ++xp->xp_pattern; -+ } -+ } -+ #endif - } - - /* -*************** -*** 5396,5401 **** ---- 5413,5419 ---- - #endif - {EXPAND_TAGS, "tag"}, - {EXPAND_TAGS_LISTFILES, "tag_listfiles"}, -+ {EXPAND_USER, "user"}, - {EXPAND_USER_VARS, "var"}, - {0, NULL} - }; -*** ../vim-7.3.630/src/ex_getln.c 2012-08-08 18:01:00.000000000 +0200 ---- src/ex_getln.c 2012-08-15 13:46:35.000000000 +0200 -*************** -*** 4336,4341 **** ---- 4336,4342 ---- - * EXPAND_EXPRESSION Complete internal or user defined function/variable - * names in expressions, eg :while s^I - * EXPAND_ENV_VARS Complete environment variable names -+ * EXPAND_USER Complete user names - */ - static void - set_expand_context(xp) -*************** -*** 4681,4686 **** ---- 4682,4688 ---- - {EXPAND_LOCALES, get_locales, TRUE, FALSE}, - #endif - {EXPAND_ENV_VARS, get_env_name, TRUE, TRUE}, -+ {EXPAND_USER, get_users, TRUE, FALSE}, - }; - int i; - -*** ../vim-7.3.630/src/misc1.c 2012-08-08 18:01:00.000000000 +0200 ---- src/misc1.c 2012-08-15 13:57:53.000000000 +0200 -*************** -*** 18,23 **** ---- 18,28 ---- - static char_u *remove_tail __ARGS((char_u *p, char_u *pend, char_u *name)); - static int copy_indent __ARGS((int size, char_u *src)); - -+ /* All user names (for ~user completion as done by shell). */ -+ #if defined(FEAT_CMDL_COMPL) || defined(PROTO) -+ static garray_T ga_users; -+ #endif -+ - /* - * Count the size (in window cells) of the indent in the current line. - */ -*************** -*** 3782,3787 **** ---- 3787,3800 ---- - { - vim_free(homedir); - } -+ -+ # ifdef FEAT_CMDL_COMPL -+ void -+ free_users() -+ { -+ ga_clear_strings(&ga_users); -+ } -+ # endif - #endif - - /* -*************** -*** 4451,4456 **** ---- 4464,4543 ---- - return name; - # endif - } -+ -+ /* -+ * Find all user names for user completion. -+ * Done only once and then cached. -+ */ -+ static void -+ init_users() { -+ static int lazy_init_done = FALSE; -+ -+ if (lazy_init_done) -+ return; -+ -+ lazy_init_done = TRUE; -+ ga_init2(&ga_users, sizeof(char_u *), 20); -+ -+ # if defined(HAVE_GETPWENT) && defined(HAVE_PWD_H) -+ { -+ char_u* user; -+ struct passwd* pw; -+ -+ setpwent(); -+ while ((pw = getpwent()) != NULL) -+ /* pw->pw_name shouldn't be NULL but just in case... */ -+ if (pw->pw_name != NULL) -+ { -+ if (ga_grow(&ga_users, 1) == FAIL) -+ break; -+ user = vim_strsave((char_u*)pw->pw_name); -+ if (user == NULL) -+ break; -+ ((char_u **)(ga_users.ga_data))[ga_users.ga_len++] = user; -+ } -+ endpwent(); -+ } -+ # endif -+ } -+ -+ /* -+ * Function given to ExpandGeneric() to obtain an user names. -+ */ -+ char_u* -+ get_users(xp, idx) -+ expand_T *xp UNUSED; -+ int idx; -+ { -+ init_users(); -+ if (idx < ga_users.ga_len) -+ return ((char_u **)ga_users.ga_data)[idx]; -+ return NULL; -+ } -+ -+ /* -+ * Check whether name matches a user name. Return: -+ * 0 if name does not match any user name. -+ * 1 if name partially matches the beginning of a user name. -+ * 2 is name fully matches a user name. -+ */ -+ int match_user(name) -+ char_u* name; -+ { -+ int i; -+ int n = (int)STRLEN(name); -+ int result = 0; -+ -+ init_users(); -+ for (i = 0; i < ga_users.ga_len; i++) -+ { -+ if (STRCMP(((char_u **)ga_users.ga_data)[i], name) == 0) -+ return 2; /* full match */ -+ if (STRNCMP(((char_u **)ga_users.ga_data)[i], name, n) == 0) -+ result = 1; /* partial match */ -+ } -+ return result; -+ } - #endif - - /* -*** ../vim-7.3.630/src/misc2.c 2012-06-29 15:51:26.000000000 +0200 ---- src/misc2.c 2012-08-15 13:46:35.000000000 +0200 -*************** -*** 1110,1115 **** ---- 1110,1118 ---- - free_all_marks(); - alist_clear(&global_alist); - free_homedir(); -+ # if defined(FEAT_CMDL_COMPL) -+ free_users(); -+ # endif - free_search_patterns(); - free_old_sub(); - free_last_insert(); -*** ../vim-7.3.630/src/proto/misc1.pro 2012-06-06 16:12:54.000000000 +0200 ---- src/proto/misc1.pro 2012-08-15 13:46:35.000000000 +0200 -*************** -*** 50,55 **** ---- 50,56 ---- - void vim_beep __ARGS((void)); - void init_homedir __ARGS((void)); - void free_homedir __ARGS((void)); -+ void free_users __ARGS((void)); - char_u *expand_env_save __ARGS((char_u *src)); - char_u *expand_env_save_opt __ARGS((char_u *src, int one)); - void expand_env __ARGS((char_u *src, char_u *dst, int dstlen)); -*************** -*** 57,62 **** ---- 58,65 ---- - char_u *vim_getenv __ARGS((char_u *name, int *mustfree)); - void vim_setenv __ARGS((char_u *name, char_u *val)); - char_u *get_env_name __ARGS((expand_T *xp, int idx)); -+ char_u *get_users __ARGS((expand_T *xp, int idx)); -+ int match_user __ARGS((char_u* name)); - void home_replace __ARGS((buf_T *buf, char_u *src, char_u *dst, int dstlen, int one)); - char_u *home_replace_save __ARGS((buf_T *buf, char_u *src)); - int fullpathcmp __ARGS((char_u *s1, char_u *s2, int checkname)); -*** ../vim-7.3.630/src/vim.h 2012-07-10 17:14:50.000000000 +0200 ---- src/vim.h 2012-08-15 13:46:35.000000000 +0200 -*************** -*** 782,787 **** ---- 782,788 ---- - #define EXPAND_OWNSYNTAX 39 - #define EXPAND_LOCALES 40 - #define EXPAND_HISTORY 41 -+ #define EXPAND_USER 42 - - /* Values for exmode_active (0 is no exmode) */ - #define EXMODE_NORMAL 1 -*** ../vim-7.3.630/src/version.c 2012-08-15 13:30:55.000000000 +0200 ---- src/version.c 2012-08-15 14:01:12.000000000 +0200 -*************** -*** 716,717 **** ---- 716,719 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 631, - /**/ - --- -"Marriage is the process of finding out what kind of man your wife -would have preferred" - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.632 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.632 -Problem: Cannot select beyond 222 columns with the mouse in xterm. -Solution: Add support for SGR mouse tracking. (Hayaki Saito) -Files: runtime/doc/options.txt, src/feature.h, src/keymap.h, src/misc2.c, - src/option.h, src/os_unix.c, src/term.c, src/version.c - - -*** ../vim-7.3.631/runtime/doc/options.txt 2012-07-10 16:49:08.000000000 +0200 ---- runtime/doc/options.txt 2012-08-15 16:04:26.000000000 +0200 -*************** -*** 7383,7388 **** ---- 7424,7435 ---- - jsbterm JSB term mouse handling. - *pterm-mouse* - pterm QNX pterm mouse handling. -+ *urxvt-mouse* -+ urxvt Mouse handling for the urxvt (rxvt-unicode) terminal. -+ *sgr-mouse* -+ sgr Mouse handling for the terminal that emits SGR-styled -+ mouse reporting. Works with xterm version 277 or -+ later. - - The mouse handling must be enabled at compile time |+mouse_xterm| - |+mouse_dec| |+mouse_netterm|. -*************** -*** 7395,7400 **** ---- 7442,7448 ---- - or "xterm2" already. The main use of this option is to set it to - "xterm", when the terminal name doesn't start with "xterm", but it can - handle xterm mouse codes. -+ The "sgr" value will be set if the xterm version is 277 or later. - The "xterm2" value will be set if the xterm version is reported to be - 95 or higher. This only works when compiled with the |+termresponse| - feature and if |t_RV| is set to the escape sequence to request the -*** ../vim-7.3.631/src/feature.h 2012-04-25 16:50:44.000000000 +0200 ---- src/feature.h 2012-08-15 15:46:07.000000000 +0200 -*************** -*** 1056,1061 **** ---- 1056,1064 ---- - # ifdef FEAT_BIG - # define FEAT_MOUSE_URXVT - # endif -+ # ifdef FEAT_BIG -+ # define FEAT_MOUSE_SGR -+ # endif - # if defined(FEAT_NORMAL) && (defined(MSDOS) || defined(WIN3264)) - # define DOS_MOUSE - # endif -*************** -*** 1077,1082 **** ---- 1080,1090 ---- - # define FEAT_MOUSE_XTERM - #endif - -+ /* sgr is a small variation of mouse_xterm, and shares its code */ -+ #if defined(FEAT_MOUSE_SGR) && !defined(FEAT_MOUSE_XTERM) -+ # define FEAT_MOUSE_XTERM -+ #endif -+ - /* Define FEAT_MOUSE when any of the above is defined or FEAT_GUI. */ - #if !defined(FEAT_MOUSE_TTY) \ - && (defined(FEAT_MOUSE_XTERM) \ -*************** -*** 1087,1093 **** - || defined(FEAT_MOUSE_JSB) \ - || defined(FEAT_MOUSE_PTERM) \ - || defined(FEAT_SYSMOUSE) \ -! || defined(FEAT_MOUSE_URXVT)) - # define FEAT_MOUSE_TTY /* include non-GUI mouse support */ - #endif - #if !defined(FEAT_MOUSE) && (defined(FEAT_MOUSE_TTY) || defined(FEAT_GUI)) ---- 1095,1102 ---- - || defined(FEAT_MOUSE_JSB) \ - || defined(FEAT_MOUSE_PTERM) \ - || defined(FEAT_SYSMOUSE) \ -! || defined(FEAT_MOUSE_URXVT) \ -! || defined(FEAT_MOUSE_SGR)) - # define FEAT_MOUSE_TTY /* include non-GUI mouse support */ - #endif - #if !defined(FEAT_MOUSE) && (defined(FEAT_MOUSE_TTY) || defined(FEAT_GUI)) -*** ../vim-7.3.631/src/keymap.h 2012-01-20 17:15:47.000000000 +0100 ---- src/keymap.h 2012-08-15 15:46:07.000000000 +0200 -*************** -*** 110,115 **** ---- 110,118 ---- - /* Used for the urxvt mouse. */ - #define KS_URXVT_MOUSE 238 - -+ /* Used for the sgr mouse. */ -+ #define KS_SGR_MOUSE 237 -+ - /* - * Filler used after KS_SPECIAL and others - */ -*************** -*** 412,417 **** ---- 415,421 ---- - #define K_JSBTERM_MOUSE TERMCAP2KEY(KS_JSBTERM_MOUSE, KE_FILLER) - #define K_PTERM_MOUSE TERMCAP2KEY(KS_PTERM_MOUSE, KE_FILLER) - #define K_URXVT_MOUSE TERMCAP2KEY(KS_URXVT_MOUSE, KE_FILLER) -+ #define K_SGR_MOUSE TERMCAP2KEY(KS_SGR_MOUSE, KE_FILLER) - - #define K_SELECT TERMCAP2KEY(KS_SELECT, KE_FILLER) - #define K_TEAROFF TERMCAP2KEY(KS_TEAROFF, KE_FILLER) -*** ../vim-7.3.631/src/misc2.c 2012-08-15 14:04:50.000000000 +0200 ---- src/misc2.c 2012-08-15 15:46:07.000000000 +0200 -*************** -*** 2433,2438 **** ---- 2433,2441 ---- - #ifdef FEAT_MOUSE_URXVT - {K_URXVT_MOUSE, (char_u *)"UrxvtMouse"}, - #endif -+ #ifdef FEAT_MOUSE_SGR -+ {K_SGR_MOUSE, (char_u *)"SgrMouse"}, -+ #endif - {K_LEFTMOUSE, (char_u *)"LeftMouse"}, - {K_LEFTMOUSE_NM, (char_u *)"LeftMouseNM"}, - {K_LEFTDRAG, (char_u *)"LeftDrag"}, -*** ../vim-7.3.631/src/option.h 2012-07-10 16:49:08.000000000 +0200 ---- src/option.h 2012-08-15 15:46:07.000000000 +0200 -*************** -*** 822,828 **** - EXTERN char_u *p_ttym; /* 'ttymouse' */ - EXTERN unsigned ttym_flags; - # ifdef IN_OPTION_C -! static char *(p_ttym_values[]) = {"xterm", "xterm2", "dec", "netterm", "jsbterm", "pterm", "urxvt", NULL}; - # endif - # define TTYM_XTERM 0x01 - # define TTYM_XTERM2 0x02 ---- 822,828 ---- - EXTERN char_u *p_ttym; /* 'ttymouse' */ - EXTERN unsigned ttym_flags; - # ifdef IN_OPTION_C -! static char *(p_ttym_values[]) = {"xterm", "xterm2", "dec", "netterm", "jsbterm", "pterm", "urxvt", "sgr", NULL}; - # endif - # define TTYM_XTERM 0x01 - # define TTYM_XTERM2 0x02 -*************** -*** 831,836 **** ---- 831,837 ---- - # define TTYM_JSBTERM 0x10 - # define TTYM_PTERM 0x20 - # define TTYM_URXVT 0x40 -+ # define TTYM_SGR 0x80 - #endif - EXTERN char_u *p_udir; /* 'undodir' */ - EXTERN long p_ul; /* 'undolevels' */ -*** ../vim-7.3.631/src/os_unix.c 2012-04-20 15:55:10.000000000 +0200 ---- src/os_unix.c 2012-08-15 16:06:54.000000000 +0200 -*************** -*** 2159,2168 **** ---- 2159,2171 ---- - * Return 1 for "xterm". - * Return 2 for "xterm2". - * Return 3 for "urxvt". -+ * Return 4 for "sgr". - */ - int - use_xterm_mouse() - { -+ if (ttym_flags == TTYM_SGR) -+ return 4; - if (ttym_flags == TTYM_URXVT) - return 3; - if (ttym_flags == TTYM_XTERM2) -*************** -*** 3339,3345 **** - xterm_mouse_vers = use_xterm_mouse(); - - # ifdef FEAT_MOUSE_URXVT -! if (ttym_flags == TTYM_URXVT) { - out_str_nf((char_u *) - (on - ? IF_EB("\033[?1015h", ESC_STR "[?1015h") ---- 3342,3349 ---- - xterm_mouse_vers = use_xterm_mouse(); - - # ifdef FEAT_MOUSE_URXVT -! if (ttym_flags == TTYM_URXVT) -! { - out_str_nf((char_u *) - (on - ? IF_EB("\033[?1015h", ESC_STR "[?1015h") -*************** -*** 3348,3353 **** ---- 3352,3368 ---- - } - # endif - -+ # ifdef FEAT_MOUSE_SGR -+ if (ttym_flags == TTYM_SGR) -+ { -+ out_str_nf((char_u *) -+ (on -+ ? IF_EB("\033[?1006h", ESC_STR "[?1006h") -+ : IF_EB("\033[?1006l", ESC_STR "[?1006l"))); -+ ison = on; -+ } -+ # endif -+ - if (xterm_mouse_vers > 0) - { - if (on) /* enable mouse events, use mouse tracking if available */ -*************** -*** 3577,3582 **** ---- 3592,3618 ---- - else - del_mouse_termcode(KS_URXVT_MOUSE); - # endif -+ # ifdef FEAT_MOUSE_SGR -+ /* same as the dec mouse */ -+ if (use_xterm_mouse() == 4 -+ # ifdef FEAT_GUI -+ && !gui.in_use -+ # endif -+ ) -+ { -+ set_mouse_termcode(KS_SGR_MOUSE, (char_u *)(term_is_8bit(T_NAME) -+ ? IF_EB("\233<", CSI_STR "<") -+ : IF_EB("\033[<", ESC_STR "[<"))); -+ -+ if (*p_mouse != NUL) -+ { -+ mch_setmouse(FALSE); -+ setmouse(); -+ } -+ } -+ else -+ del_mouse_termcode(KS_SGR_MOUSE); -+ # endif - } - #endif - -*** ../vim-7.3.631/src/term.c 2012-02-05 22:05:44.000000000 +0100 ---- src/term.c 2012-08-15 16:14:09.000000000 +0200 -*************** -*** 1997,2002 **** ---- 1997,2003 ---- - # define HMT_JSBTERM 8 - # define HMT_PTERM 16 - # define HMT_URXVT 32 -+ # define HMT_SGR 64 - static int has_mouse_termcode = 0; - # endif - -*************** -*** 2037,2042 **** ---- 2038,2048 ---- - has_mouse_termcode |= HMT_URXVT; - else - # endif -+ # ifdef FEAT_MOUSE_SGR -+ if (n == KS_SGR_MOUSE) -+ has_mouse_termcode |= HMT_SGR; -+ else -+ # endif - has_mouse_termcode |= HMT_NORMAL; - # endif - } -*************** -*** 2079,2084 **** ---- 2085,2095 ---- - has_mouse_termcode &= ~HMT_URXVT; - else - # endif -+ # ifdef FEAT_MOUSE_SGR -+ if (n == KS_SGR_MOUSE) -+ has_mouse_termcode &= ~HMT_SGR; -+ else -+ # endif - has_mouse_termcode &= ~HMT_NORMAL; - # endif - } -*************** -*** 4023,4029 **** - #ifdef FEAT_TERMRESPONSE - if (key_name[0] == NUL - /* URXVT mouse uses <ESC>[#;#;#M, but we are matching <ESC>[ */ -! || key_name[0] == KS_URXVT_MOUSE) - { - /* Check for xterm version string: "<Esc>[>{x};{vers};{y}c". Also - * eat other possible responses to t_RV, rxvt returns ---- 4034,4041 ---- - #ifdef FEAT_TERMRESPONSE - if (key_name[0] == NUL - /* URXVT mouse uses <ESC>[#;#;#M, but we are matching <ESC>[ */ -! || key_name[0] == KS_URXVT_MOUSE -! || key_name[0] == KS_SGR_MOUSE) - { - /* Check for xterm version string: "<Esc>[>{x};{vers};{y}c". Also - * eat other possible responses to t_RV, rxvt returns -*************** -*** 4061,4066 **** ---- 4073,4088 ---- - - if (tp[1 + (tp[0] != CSI)] == '>' && j == 2) - { -+ # ifdef TTYM_SGR -+ if (extra >= 277 -+ # ifdef TTYM_URXVT -+ && ttym_flags != TTYM_URXVT -+ # endif -+ ) -+ set_option_value((char_u *)"ttym", 0L, -+ (char_u *)"sgr", 0); -+ else -+ # endif - /* if xterm version >= 95 use mouse dragging */ - if (extra >= 95 - # ifdef TTYM_URXVT -*************** -*** 4147,4167 **** - /* - * If it is a mouse click, get the coordinates. - */ -! if (key_name[0] == (int)KS_MOUSE - # ifdef FEAT_MOUSE_JSB -! || key_name[0] == (int)KS_JSBTERM_MOUSE - # endif - # ifdef FEAT_MOUSE_NET -! || key_name[0] == (int)KS_NETTERM_MOUSE - # endif - # ifdef FEAT_MOUSE_DEC -! || key_name[0] == (int)KS_DEC_MOUSE - # endif - # ifdef FEAT_MOUSE_PTERM -! || key_name[0] == (int)KS_PTERM_MOUSE - # endif - # ifdef FEAT_MOUSE_URXVT -! || key_name[0] == (int)KS_URXVT_MOUSE - # endif - ) - { ---- 4169,4192 ---- - /* - * If it is a mouse click, get the coordinates. - */ -! if (key_name[0] == KS_MOUSE - # ifdef FEAT_MOUSE_JSB -! || key_name[0] == KS_JSBTERM_MOUSE - # endif - # ifdef FEAT_MOUSE_NET -! || key_name[0] == KS_NETTERM_MOUSE - # endif - # ifdef FEAT_MOUSE_DEC -! || key_name[0] == KS_DEC_MOUSE - # endif - # ifdef FEAT_MOUSE_PTERM -! || key_name[0] == KS_PTERM_MOUSE - # endif - # ifdef FEAT_MOUSE_URXVT -! || key_name[0] == KS_URXVT_MOUSE -! # endif -! # ifdef FEAT_MOUSE_SGR -! || key_name[0] == KS_SGR_MOUSE - # endif - ) - { -*************** -*** 4243,4250 **** - } - } - -! # ifdef FEAT_MOUSE_URXVT -! if (key_name[0] == (int)KS_URXVT_MOUSE) - { - for (;;) - { ---- 4268,4276 ---- - } - } - -! # if defined(FEAT_MOUSE_URXVT) || defined(FEAT_MOUSE_SGR) -! if (key_name[0] == KS_URXVT_MOUSE -! || key_name[0] == KS_SGR_MOUSE) - { - for (;;) - { -*************** -*** 4256,4261 **** ---- 4282,4301 ---- - * ^-- row - * ^----- column - * ^-------- code -+ * -+ * SGR 1006 mouse reporting mode: -+ * Almost identical to xterm mouse mode, except the values -+ * are decimal instead of bytes. -+ * -+ * \033[<%d;%d;%dM -+ * ^-- row -+ * ^----- column -+ * ^-------- code -+ * -+ * \033[<%d;%d;%dm : mouse release event -+ * ^-- row -+ * ^----- column -+ * ^-------- code - */ - p = tp + slen; - -*************** -*** 4263,4294 **** - if (*p++ != ';') - return -1; - - mouse_col = getdigits(&p) - 1; - if (*p++ != ';') - return -1; - - mouse_row = getdigits(&p) - 1; -! if (*p++ != 'M') - return -1; - - slen += (int)(p - (tp + slen)); - - /* skip this one if next one has same code (like xterm - * case) */ - j = termcodes[idx].len; -! if (STRNCMP(tp, tp + slen, (size_t)j) == 0) { -! /* check if the command is complete by looking for the -! * M */ - int slen2; - int cmd_complete = 0; -! for (slen2 = slen; slen2 < len; slen2++) { -! if (tp[slen2] == 'M') { - cmd_complete = 1; - break; - } - } - p += j; -! if (cmd_complete && getdigits(&p) == mouse_code) { - slen += j; /* skip the \033[ */ - continue; - } ---- 4303,4348 ---- - if (*p++ != ';') - return -1; - -+ /* when mouse reporting is SGR, add 32 to mouse code */ -+ if (key_name[0] == KS_SGR_MOUSE) -+ mouse_code += 32; -+ - mouse_col = getdigits(&p) - 1; - if (*p++ != ';') - return -1; - - mouse_row = getdigits(&p) - 1; -! if (key_name[0] == KS_SGR_MOUSE && *p == 'm') -! mouse_code |= MOUSE_RELEASE; -! else if (*p != 'M') - return -1; -+ p++; - - slen += (int)(p - (tp + slen)); - - /* skip this one if next one has same code (like xterm - * case) */ - j = termcodes[idx].len; -! if (STRNCMP(tp, tp + slen, (size_t)j) == 0) -! { - int slen2; - int cmd_complete = 0; -! -! /* check if the command is complete by looking for the -! * 'M' */ -! for (slen2 = slen; slen2 < len; slen2++) -! { -! if (tp[slen2] == 'M' -! || (key_name[0] == KS_SGR_MOUSE -! && tp[slen2] == 'm')) -! { - cmd_complete = 1; - break; - } - } - p += j; -! if (cmd_complete && getdigits(&p) == mouse_code) -! { - slen += j; /* skip the \033[ */ - continue; - } -*************** -*** 4302,4307 **** ---- 4356,4364 ---- - #ifdef FEAT_MOUSE_URXVT - || key_name[0] == (int)KS_URXVT_MOUSE - #endif -+ #ifdef FEAT_MOUSE_SGR -+ || key_name[0] == KS_SGR_MOUSE -+ #endif - ) - { - # if !defined(MSWIN) && !defined(MSDOS) -*** ../vim-7.3.631/src/version.c 2012-08-15 14:04:50.000000000 +0200 ---- src/version.c 2012-08-15 15:47:30.000000000 +0200 -*************** -*** 384,389 **** ---- 384,394 ---- - # else - "-mouse_urxvt", - # endif -+ # ifdef FEAT_MOUSE_SGR -+ "+mouse_sgr", -+ # else -+ "-mouse_sgr", -+ # endif - #endif - #ifdef __QNX__ - # ifdef FEAT_MOUSE_PTERM -*** ../vim-7.3.631/src/version.c 2012-08-15 14:04:50.000000000 +0200 ---- src/version.c 2012-08-15 15:47:30.000000000 +0200 -*************** -*** 716,717 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 632, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -243. You unsuccessfully try to download a pizza from www.dominos.com. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.633 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.633 -Problem: Selection remains displayed as selected after selecting another - text. -Solution: Call xterm_update() before select(). (Andrew Pimlott) -Files: src/os_unix.c - - -*** ../vim-7.3.632/src/os_unix.c 2012-08-15 16:20:59.000000000 +0200 ---- src/os_unix.c 2012-08-15 17:15:58.000000000 +0200 -*************** -*** 5196,5201 **** ---- 5196,5205 ---- - FD_SET(ConnectionNumber(xterm_dpy), &rfds); - if (maxfd < ConnectionNumber(xterm_dpy)) - maxfd = ConnectionNumber(xterm_dpy); -+ -+ /* An event may have already been read but not handled. In -+ * particulary, XFlush may cause this. */ -+ xterm_update(); - } - # endif - # ifdef FEAT_MOUSE_GPM -*************** -*** 5216,5229 **** - maxfd = xsmp_icefd; - } - # endif -! #ifdef FEAT_NETBEANS_INTG - if (nb_fd != -1) - { - FD_SET(nb_fd, &rfds); - if (maxfd < nb_fd) - maxfd = nb_fd; - } -! #endif - - # ifdef OLD_VMS - /* Old VMS as v6.2 and older have broken select(). It waits more than ---- 5220,5233 ---- - maxfd = xsmp_icefd; - } - # endif -! # ifdef FEAT_NETBEANS_INTG - if (nb_fd != -1) - { - FD_SET(nb_fd, &rfds); - if (maxfd < nb_fd) - maxfd = nb_fd; - } -! # endif - - # ifdef OLD_VMS - /* Old VMS as v6.2 and older have broken select(). It waits more than -*** ../vim-7.3.632/src/version.c 2012-08-15 16:20:59.000000000 +0200 ---- src/version.c 2012-08-15 17:22:17.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 633, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -245. You use Real Audio to listen to a radio station from a distant - city rather than turn on your stereo system. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.634 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.634 -Problem: Month/Day format for undo is confusing. (Marcin Szamotulski) -Solution: Always use Year/Month/Day, should work for everybody. -Files: src/undo.c - - -*** ../vim-7.3.633/src/undo.c 2012-06-01 13:46:06.000000000 +0200 ---- src/undo.c 2012-08-23 12:43:24.000000000 +0200 -*************** -*** 2880,2890 **** - if (time(NULL) - tt < (60L * 60L * 12L)) - /* within 12 hours */ - (void)strftime((char *)buf, buflen, "%H:%M:%S", curtime); -- else if (time(NULL) - tt < (60L * 60L * 24L * 180L)) -- /* within 6 months */ -- (void)strftime((char *)buf, buflen, "%m/%d %H:%M:%S", curtime); - else -! /* long ago */ - (void)strftime((char *)buf, buflen, "%Y/%m/%d %H:%M:%S", curtime); - } - else ---- 2880,2887 ---- - if (time(NULL) - tt < (60L * 60L * 12L)) - /* within 12 hours */ - (void)strftime((char *)buf, buflen, "%H:%M:%S", curtime); - else -! /* longer ago */ - (void)strftime((char *)buf, buflen, "%Y/%m/%d %H:%M:%S", curtime); - } - else -*** ../vim-7.3.633/src/version.c 2012-08-15 17:26:53.000000000 +0200 ---- src/version.c 2012-08-23 12:58:36.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 634, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -10E. You start counting in hex. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.635 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.635 -Problem: Issue 21: System call during startup sets 'lines' to a wrong - value. (Karl Yngve) -Solution: Don't set the shell size while the GUI is still starting up. - (Christian Brabandt) -Files: src/ui.c - - -*** ../vim-7.3.634/src/ui.c 2012-07-10 16:49:08.000000000 +0200 ---- src/ui.c 2012-08-23 13:25:26.000000000 +0200 -*************** -*** 298,303 **** ---- 298,306 ---- - int retval; - - #ifdef FEAT_GUI -+ if (gui.starting) -+ /* possibly a system call during startup, check later */ -+ return OK; - if (gui.in_use) - retval = gui_get_shellsize(); - else -*** ../vim-7.3.634/src/version.c 2012-08-23 12:58:56.000000000 +0200 ---- src/version.c 2012-08-23 13:27:00.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 635, - /**/ - --- -ARTHUR: This new learning amazes me, Sir Bedevere. Explain again how sheep's - bladders may be employed to prevent earthquakes. - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.636 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.636 (after 7.3.625) -Problem: Not all zero-width matches handled correctly for "gn". -Solution: Move zero-width detection to a separate function. (Christian - Brabandt) -Files: src/search.c - - -*** ../vim-7.3.635/src/search.c 2012-08-08 15:27:54.000000000 +0200 ---- src/search.c 2012-08-23 15:52:50.000000000 +0200 -*************** -*** 4526,4531 **** ---- 4526,4533 ---- - #endif /* FEAT_TEXTOBJ */ - - #if defined(FEAT_VISUAL) || defined(PROTO) -+ static int is_zerowidth __ARGS((char_u *pattern)); -+ - /* - * Find next search match under cursor, cursor at end. - * Used while an operator is pending, and in Visual mode. -*************** -*** 4546,4556 **** - int visual_active = FALSE; - int flags = 0; - pos_T save_VIsual; -- regmmatch_T regmatch; -- int nmatched = 0; - int zerowidth = FALSE; - -- - /* wrapping should not occur */ - p_ws = FALSE; - ---- 4548,4555 ---- -*************** -*** 4583,4606 **** - else - orig_pos = pos = start_pos = curwin->w_cursor; - -! /* -! * Check for zero-width pattern. -! */ -! if (search_regcomp(spats[last_idx].pat, RE_SEARCH, RE_SEARCH, -! ((SEARCH_HIS + SEARCH_KEEP)), ®match) == FAIL) - return FAIL; - -- /* Zero-width pattern should match somewhere, then we can check if start -- * and end are in the same position. */ -- nmatched = vim_regexec_multi(®match, curwin, curbuf, -- curwin->w_cursor.lnum, (colnr_T)0, NULL); -- if (called_emsg) -- return FAIL; -- if (nmatched && regmatch.startpos[0].lnum == regmatch.endpos[0].lnum -- && regmatch.endpos[0].col == regmatch.startpos[0].col) -- zerowidth = TRUE; -- vim_free(regmatch.regprog); -- - /* - * The trick is to first search backwards and then search forward again, - * so that a match at the current cursor position will be correctly ---- 4582,4592 ---- - else - orig_pos = pos = start_pos = curwin->w_cursor; - -! /* Is the pattern is zero-width? */ -! zerowidth = is_zerowidth(spats[last_idx].pat); -! if (zerowidth == -1) - return FAIL; - - /* - * The trick is to first search backwards and then search forward again, - * so that a match at the current cursor position will be correctly -*************** -*** 4693,4698 **** ---- 4679,4721 ---- - - return OK; - } -+ -+ /* -+ * Check if the pattern is zero-width. -+ * Returns TRUE, FALSE or -1 for failure. -+ */ -+ static int -+ is_zerowidth(pattern) -+ char_u *pattern; -+ { -+ regmmatch_T regmatch; -+ int nmatched = 0; -+ int result = -1; -+ pos_T pos; -+ -+ if (search_regcomp(pattern, RE_SEARCH, RE_SEARCH, -+ SEARCH_KEEP, ®match) == FAIL) -+ return -1; -+ -+ /* move to match */ -+ clearpos(&pos); -+ if (searchit(curwin, curbuf, &pos, FORWARD, spats[last_idx].pat, 1, -+ SEARCH_KEEP, RE_SEARCH, 0, NULL) != FAIL) -+ { -+ /* Zero-width pattern should match somewhere, then we can check if -+ * start and end are in the same position. */ -+ nmatched = vim_regexec_multi(®match, curwin, curbuf, -+ pos.lnum, (colnr_T)0, NULL); -+ -+ if (!called_emsg) -+ result = (nmatched != 0 -+ && regmatch.startpos[0].lnum == regmatch.endpos[0].lnum -+ && regmatch.startpos[0].col == regmatch.endpos[0].col); -+ } -+ -+ vim_free(regmatch.regprog); -+ return result; -+ } - #endif /* FEAT_VISUAL */ - - #if defined(FEAT_LISP) || defined(FEAT_CINDENT) || defined(FEAT_TEXTOBJ) \ -*** ../vim-7.3.635/src/version.c 2012-08-23 13:28:50.000000000 +0200 ---- src/version.c 2012-08-23 15:25:23.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 636, - /**/ - --- -Edison's greatest achievement came in 1879, when he invented the -electric company. Edison's design was a brilliant adaptation of the -simple electrical circuit: the electric company sends electricity -through a wire to a customer, then immediately gets the electricity -back through another wire - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.637 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.637 -Problem: Cannot catch the error caused by a foldopen when there is no fold. - (ZyX, Issue 48) -Solution: Do not break out of the loop early when inside try/catch. - (Christian Brabandt) Except when there is a syntax error. -Files: src/ex_docmd.c, src/globals.h - - -*** ../vim-7.3.636/src/ex_docmd.c 2012-08-15 14:04:50.000000000 +0200 ---- src/ex_docmd.c 2012-08-23 18:39:08.000000000 +0200 -*************** -*** 1295,1301 **** - && cstack.cs_trylevel == 0 - #endif - ) -! && !(did_emsg && used_getline - && (getline_equal(fgetline, cookie, getexmodeline) - || getline_equal(fgetline, cookie, getexline))) - && (next_cmdline != NULL ---- 1295,1308 ---- - && cstack.cs_trylevel == 0 - #endif - ) -! && !(did_emsg -! #ifdef FEAT_EVAL -! /* Keep going when inside try/catch, so that the error can be -! * dealth with, except when it is a syntax error, it may cause -! * the :endtry to be missed. */ -! && (cstack.cs_trylevel == 0 || did_emsg_syntax) -! #endif -! && used_getline - && (getline_equal(fgetline, cookie, getexmodeline) - || getline_equal(fgetline, cookie, getexline))) - && (next_cmdline != NULL -*************** -*** 1305,1310 **** ---- 1312,1318 ---- - || (flags & DOCMD_REPEAT))); - - vim_free(cmdline_copy); -+ did_emsg_syntax = FALSE; - #ifdef FEAT_EVAL - free_cmdlines(&lines_ga); - ga_clear(&lines_ga); -*************** -*** 2137,2142 **** ---- 2145,2151 ---- - if (!sourcing) - append_command(*cmdlinep); - errormsg = IObuff; -+ did_emsg_syntax = TRUE; - } - goto doend; - } -*** ../vim-7.3.636/src/globals.h 2012-07-10 16:49:08.000000000 +0200 ---- src/globals.h 2012-08-23 18:29:09.000000000 +0200 -*************** -*** 183,188 **** ---- 183,190 ---- - #endif - EXTERN int did_emsg; /* set by emsg() when the message - is displayed or thrown */ -+ EXTERN int did_emsg_syntax; /* did_emsg set because of a -+ syntax error */ - EXTERN int called_emsg; /* always set by emsg() */ - EXTERN int ex_exitval INIT(= 0); /* exit value for ex mode */ - EXTERN int emsg_on_display INIT(= FALSE); /* there is an error message */ -*** ../vim-7.3.636/src/version.c 2012-08-23 15:53:00.000000000 +0200 ---- src/version.c 2012-08-23 17:59:12.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 637, - /**/ - --- -GOD: That is your purpose Arthur ... the Quest for the Holy Grail ... - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.638 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.638 -Problem: Unecessary redraw of the previous character. -Solution: Check if the character is double-width. (Jon Long) -Files: src/screen.c - - -*** ../vim-7.3.637/src/screen.c 2012-07-10 16:49:08.000000000 +0200 ---- src/screen.c 2012-08-23 18:49:33.000000000 +0200 -*************** -*** 5332,5339 **** - && (ScreenLinesUC[off_from] != ScreenLinesUC[off_to] - || (ScreenLinesUC[off_from] != 0 - && comp_char_differs(off_from, off_to)) -! || (cols > 1 && ScreenLines[off_from + 1] -! != ScreenLines[off_to + 1]))) - #endif - )) - return TRUE; ---- 5332,5340 ---- - && (ScreenLinesUC[off_from] != ScreenLinesUC[off_to] - || (ScreenLinesUC[off_from] != 0 - && comp_char_differs(off_from, off_to)) -! || ((*mb_off2cells)(off_from, off_from + cols) > 1 -! && ScreenLines[off_from + 1] -! != ScreenLines[off_to + 1]))) - #endif - )) - return TRUE; -*** ../vim-7.3.637/src/version.c 2012-08-23 18:43:06.000000000 +0200 ---- src/version.c 2012-08-23 18:47:11.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 638, - /**/ - --- -There is a fine line between courage and foolishness. -Unfortunately, it's not a fence. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.639 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.639 -Problem: It's not easy to build Vim on Windows with XPM support. -Solution: Include the required files, they are quite small. Update the - MSVC makefile to use them. Binary files are in the next patch. - (Sergey Khorev) -Files: src/xpm/COPYRIGHT, src/xpm/README.txt, src/xpm/include/simx.h, - src/xpm/include/xpm.h, src/Make_mvc.mak, src/bigvim.bat, - src/bigvim64.bat, Filelist - - -*** ../vim-7.3.638/src/xpm/COPYRIGHT 1970-01-01 01:00:00.000000000 +0100 ---- src/xpm/COPYRIGHT 1998-03-19 23:51:00.000000000 +0100 -*************** -*** 0 **** ---- 1,31 ---- -+ /* -+ * Copyright (C) 1989-95 GROUPE BULL -+ * -+ * Permission is hereby granted, free of charge, to any person obtaining a copy -+ * of this software and associated documentation files (the "Software"), to -+ * deal in the Software without restriction, including without limitation the -+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -+ * sell copies of the Software, and to permit persons to whom the Software is -+ * furnished to do so, subject to the following conditions: -+ * -+ * The above copyright notice and this permission notice shall be included in -+ * all copies or substantial portions of the Software. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -+ * GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -+ * -+ * Except as contained in this notice, the name of GROUPE BULL shall not be -+ * used in advertising or otherwise to promote the sale, use or other dealings -+ * in this Software without prior written authorization from GROUPE BULL. -+ */ -+ -+ Arnaud LE HORS BULL Research FRANCE -- Koala Project -+ (XPM - X PixMap format version 2 & 3) -+ Internet: lehors@sophia.inria.fr -+ Surface Mail: Arnaud LE HORS, INRIA - Sophia Antipolis, -+ 2004, route des Lucioles, 06565 Valbonne Cedex -- FRANCE -+ Voice phone: (33) 93.65.77.71, Fax: (33) 93 65 77 66, Telex: 97 00 50 F -*** ../vim-7.3.638/src/xpm/README.txt 1970-01-01 01:00:00.000000000 +0100 ---- src/xpm/README.txt 2012-08-29 13:29:17.000000000 +0200 -*************** -*** 0 **** ---- 1,23 ---- -+ This is XPM library compiled for Windows which is intended for use with Vim -+ 'signs' feature. -+ -+ Libraries in x86 directory were compiled with MSVC6 and MinGW. Proposed -+ commands to compile Vim are: -+ -+ Any version of MSVC starting from version 6.0: -+ nmake -f Make_mvc.mak GUI=yes CSCOPE=yes NETBEANS=yes XPM=e:\hg\xpm\x86 -+ -+ MinGW: -+ mingw32-make -f Make_ming.mak GUI=yes CSCOPE=yes XPM=e:/hg/xpm/x86 -+ -+ Microsoft Visual C++ on x64 (tested with versions 2008 and 2010): -+ nmake -f Make_mvc.mak GUI=yes CSCOPE=yes XPM=E:\HG\xpm\x64 -+ -+ To test, open some file in Vim and execute commands below: -+ :exe 'sign define vimxpm icon='.$VIMRUNTIME.'\\vim32x32.xpm' -+ :exe 'sign place 1 line=1 name=vimxpm file='.expand('%:p') -+ -+ -+ See COPYRIGHT for XPM licence. -+ -+ If you have questions please email sergey.khorev@gmail.com. -*** ../vim-7.3.638/src/xpm/include/simx.h 1970-01-01 01:00:00.000000000 +0100 ---- src/xpm/include/simx.h 1998-03-19 23:51:00.000000000 +0100 -*************** -*** 0 **** ---- 1,139 ---- -+ /* -+ * Copyright (C) 1989-95 GROUPE BULL -+ * -+ * Permission is hereby granted, free of charge, to any person obtaining a copy -+ * of this software and associated documentation files (the "Software"), to -+ * deal in the Software without restriction, including without limitation the -+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -+ * sell copies of the Software, and to permit persons to whom the Software is -+ * furnished to do so, subject to the following conditions: -+ * -+ * The above copyright notice and this permission notice shall be included in -+ * all copies or substantial portions of the Software. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -+ * GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -+ * -+ * Except as contained in this notice, the name of GROUPE BULL shall not be -+ * used in advertising or otherwise to promote the sale, use or other dealings -+ * in this Software without prior written authorization from GROUPE BULL. -+ */ -+ -+ /*****************************************************************************\ -+ * simx.h: 0.1a * -+ * * -+ * This emulates some Xlib functionality for MSW. It's not a general solution, * -+ * it is close related to XPM-lib. It is only intended to satisfy what is need * -+ * there. Thus allowing to read XPM files under MS windows. * -+ * * -+ * Developed by HeDu 3/94 (hedu@cul-ipn.uni-kiel.de) * -+ \*****************************************************************************/ -+ -+ -+ #ifndef _SIMX_H -+ #define _SIMX_H -+ -+ #ifdef FOR_MSW -+ -+ #include "windows.h" /* MS windows GDI types */ -+ -+ /* -+ * minimal portability layer between ansi and KR C -+ */ -+ /* this comes from xpm.h, and is here again, to avoid complicated -+ includes, since this is included from xpm.h */ -+ /* these defines get undefed at the end of this file */ -+ #if __STDC__ || defined(__cplusplus) || defined(c_plusplus) -+ /* ANSI || C++ */ -+ #define FUNC(f, t, p) extern t f p -+ #define LFUNC(f, t, p) static t f p -+ #else /* k&R */ -+ #define FUNC(f, t, p) extern t f() -+ #define LFUNC(f, t, p) static t f() -+ #endif -+ -+ -+ FUNC(boundCheckingMalloc, void *, (long s)); -+ FUNC(boundCheckingCalloc, void *, (long num, long s)); -+ FUNC(boundCheckingRealloc, void *, (void *p, long s)); -+ -+ /* define MSW types for X window types, -+ I don't know much about MSW, but the following defines do the job */ -+ -+ typedef HDC Display; /* this should be similar */ -+ typedef void *Screen; /* not used */ -+ typedef void *Visual; /* not used yet, is for GRAY, COLOR, -+ * MONO */ -+ -+ typedef void *Colormap; /* should be COLORPALETTE, not done -+ * yet */ -+ -+ typedef COLORREF Pixel; -+ -+ #define PIXEL_ALREADY_TYPEDEFED /* to let xpm.h know about it */ -+ -+ typedef struct { -+ Pixel pixel; -+ BYTE red, green, blue; -+ } XColor; -+ -+ typedef struct { -+ HBITMAP bitmap; -+ unsigned int width; -+ unsigned int height; -+ unsigned int depth; -+ } XImage; -+ -+ #if defined(__cplusplus) || defined(c_plusplus) -+ extern "C" { -+ #endif -+ /* some replacements for X... functions */ -+ -+ /* XDefaultXXX */ -+ FUNC(XDefaultVisual, Visual *, (Display *display, Screen *screen)); -+ FUNC(XDefaultScreen, Screen *, (Display *d)); -+ FUNC(XDefaultColormap, Colormap *, (Display *display, Screen *screen)); -+ FUNC(XDefaultDepth, int, (Display *d, Screen *s)); -+ -+ /* color related */ -+ FUNC(XParseColor, int, (Display *, Colormap *, char *, XColor *)); -+ FUNC(XAllocColor, int, (Display *, Colormap *, XColor *)); -+ FUNC(XQueryColors, void, (Display *display, Colormap *colormap, -+ XColor *xcolors, int ncolors)); -+ FUNC(XFreeColors, int, (Display *d, Colormap cmap, -+ unsigned long pixels[], -+ int npixels, unsigned long planes)); -+ /* XImage */ -+ FUNC(XCreateImage, XImage *, (Display *, Visual *, int depth, int format, -+ int x, int y, int width, int height, -+ int pad, int foo)); -+ -+ /* free and destroy bitmap */ -+ FUNC(XDestroyImage, void /* ? */ , (XImage *)); -+ /* free only, bitmap remains */ -+ FUNC(XImageFree, void, (XImage *)); -+ #if defined(__cplusplus) || defined(c_plusplus) -+ } /* end of extern "C" */ -+ #endif /* cplusplus */ -+ -+ #define ZPixmap 1 /* not really used */ -+ #define XYBitmap 1 /* not really used */ -+ -+ #ifndef True -+ #define True 1 -+ #define False 0 -+ #endif -+ #ifndef Bool -+ typedef BOOL Bool; /* take MSW bool */ -+ #endif -+ /* make these local here, simx.c gets the same from xpm.h */ -+ #undef LFUNC -+ #undef FUNC -+ -+ #endif /* def FOR_MSW */ -+ -+ #endif /* _SIMX_H */ -*** ../vim-7.3.638/src/xpm/include/xpm.h 1970-01-01 01:00:00.000000000 +0100 ---- src/xpm/include/xpm.h 1998-03-19 23:51:00.000000000 +0100 -*************** -*** 0 **** ---- 1,501 ---- -+ /* -+ * Copyright (C) 1989-95 GROUPE BULL -+ * -+ * Permission is hereby granted, free of charge, to any person obtaining a copy -+ * of this software and associated documentation files (the "Software"), to -+ * deal in the Software without restriction, including without limitation the -+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -+ * sell copies of the Software, and to permit persons to whom the Software is -+ * furnished to do so, subject to the following conditions: -+ * -+ * The above copyright notice and this permission notice shall be included in -+ * all copies or substantial portions of the Software. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -+ * GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -+ * -+ * Except as contained in this notice, the name of GROUPE BULL shall not be -+ * used in advertising or otherwise to promote the sale, use or other dealings -+ * in this Software without prior written authorization from GROUPE BULL. -+ */ -+ -+ /*****************************************************************************\ -+ * xpm.h: * -+ * * -+ * XPM library * -+ * Include file * -+ * * -+ * Developed by Arnaud Le Hors * -+ \*****************************************************************************/ -+ -+ /* -+ * The code related to FOR_MSW has been added by -+ * HeDu (hedu@cul-ipn.uni-kiel.de) 4/94 -+ */ -+ -+ /* -+ * The code related to AMIGA has been added by -+ * Lorens Younes (d93-hyo@nada.kth.se) 4/96 -+ */ -+ -+ #ifndef XPM_h -+ #define XPM_h -+ -+ /* -+ * first some identification numbers: -+ * the version and revision numbers are determined with the following rule: -+ * SO Major number = LIB minor version number. -+ * SO Minor number = LIB sub-minor version number. -+ * e.g: Xpm version 3.2f -+ * we forget the 3 which is the format number, 2 gives 2, and f gives 6. -+ * thus we have XpmVersion = 2 and XpmRevision = 6 -+ * which gives SOXPMLIBREV = 2.6 -+ * -+ * Then the XpmIncludeVersion number is built from these numbers. -+ */ -+ #define XpmFormat 3 -+ #define XpmVersion 4 -+ #define XpmRevision 11 -+ #define XpmIncludeVersion ((XpmFormat * 100 + XpmVersion) * 100 + XpmRevision) -+ -+ #ifndef XPM_NUMBERS -+ -+ #ifdef FOR_MSW -+ # define SYSV /* uses memcpy string.h etc. */ -+ # include <malloc.h> -+ # include "simx.h" /* defines some X stuff using MSW types */ -+ #define NEED_STRCASECMP /* at least for MSVC++ */ -+ #else /* FOR_MSW */ -+ # ifdef AMIGA -+ # include "amigax.h" -+ # else /* not AMIGA */ -+ # include <X11/Xlib.h> -+ # include <X11/Xutil.h> -+ # endif /* not AMIGA */ -+ #endif /* FOR_MSW */ -+ -+ /* let's define Pixel if it is not done yet */ -+ #if ! defined(_XtIntrinsic_h) && ! defined(PIXEL_ALREADY_TYPEDEFED) -+ typedef unsigned long Pixel; /* Index into colormap */ -+ # define PIXEL_ALREADY_TYPEDEFED -+ #endif -+ -+ /* make sure we know whether function prototypes are needed or not */ -+ #ifndef NeedFunctionPrototypes -+ # if defined(__STDC__) || defined(__cplusplus) || defined(c_plusplus) -+ # define NeedFunctionPrototypes 1 -+ # else -+ # define NeedFunctionPrototypes 0 -+ # endif -+ #endif -+ -+ -+ /* Return ErrorStatus codes: -+ * null if full success -+ * positive if partial success -+ * negative if failure -+ */ -+ -+ #define XpmColorError 1 -+ #define XpmSuccess 0 -+ #define XpmOpenFailed -1 -+ #define XpmFileInvalid -2 -+ #define XpmNoMemory -3 -+ #define XpmColorFailed -4 -+ -+ typedef struct { -+ char *name; /* Symbolic color name */ -+ char *value; /* Color value */ -+ Pixel pixel; /* Color pixel */ -+ } XpmColorSymbol; -+ -+ typedef struct { -+ char *name; /* name of the extension */ -+ unsigned int nlines; /* number of lines in this extension */ -+ char **lines; /* pointer to the extension array of strings */ -+ } XpmExtension; -+ -+ typedef struct { -+ char *string; /* characters string */ -+ char *symbolic; /* symbolic name */ -+ char *m_color; /* monochrom default */ -+ char *g4_color; /* 4 level grayscale default */ -+ char *g_color; /* other level grayscale default */ -+ char *c_color; /* color default */ -+ } XpmColor; -+ -+ typedef struct { -+ unsigned int width; /* image width */ -+ unsigned int height; /* image height */ -+ unsigned int cpp; /* number of characters per pixel */ -+ unsigned int ncolors; /* number of colors */ -+ XpmColor *colorTable; /* list of related colors */ -+ unsigned int *data; /* image data */ -+ } XpmImage; -+ -+ typedef struct { -+ unsigned long valuemask; /* Specifies which attributes are defined */ -+ char *hints_cmt; /* Comment of the hints section */ -+ char *colors_cmt; /* Comment of the colors section */ -+ char *pixels_cmt; /* Comment of the pixels section */ -+ unsigned int x_hotspot; /* Returns the x hotspot's coordinate */ -+ unsigned int y_hotspot; /* Returns the y hotspot's coordinate */ -+ unsigned int nextensions; /* number of extensions */ -+ XpmExtension *extensions; /* pointer to array of extensions */ -+ } XpmInfo; -+ -+ typedef int (*XpmAllocColorFunc)( -+ #if NeedFunctionPrototypes -+ Display* /* display */, -+ Colormap /* colormap */, -+ char* /* colorname */, -+ XColor* /* xcolor */, -+ void* /* closure */ -+ #endif -+ ); -+ -+ typedef int (*XpmFreeColorsFunc)( -+ #if NeedFunctionPrototypes -+ Display* /* display */, -+ Colormap /* colormap */, -+ Pixel* /* pixels */, -+ int /* npixels */, -+ void* /* closure */ -+ #endif -+ ); -+ -+ typedef struct { -+ unsigned long valuemask; /* Specifies which attributes are -+ defined */ -+ -+ Visual *visual; /* Specifies the visual to use */ -+ Colormap colormap; /* Specifies the colormap to use */ -+ unsigned int depth; /* Specifies the depth */ -+ unsigned int width; /* Returns the width of the created -+ pixmap */ -+ unsigned int height; /* Returns the height of the created -+ pixmap */ -+ unsigned int x_hotspot; /* Returns the x hotspot's -+ coordinate */ -+ unsigned int y_hotspot; /* Returns the y hotspot's -+ coordinate */ -+ unsigned int cpp; /* Specifies the number of char per -+ pixel */ -+ Pixel *pixels; /* List of used color pixels */ -+ unsigned int npixels; /* Number of used pixels */ -+ XpmColorSymbol *colorsymbols; /* List of color symbols to override */ -+ unsigned int numsymbols; /* Number of symbols */ -+ char *rgb_fname; /* RGB text file name */ -+ unsigned int nextensions; /* Number of extensions */ -+ XpmExtension *extensions; /* List of extensions */ -+ -+ unsigned int ncolors; /* Number of colors */ -+ XpmColor *colorTable; /* List of colors */ -+ /* 3.2 backward compatibility code */ -+ char *hints_cmt; /* Comment of the hints section */ -+ char *colors_cmt; /* Comment of the colors section */ -+ char *pixels_cmt; /* Comment of the pixels section */ -+ /* end 3.2 bc */ -+ unsigned int mask_pixel; /* Color table index of transparent -+ color */ -+ -+ /* Color Allocation Directives */ -+ Bool exactColors; /* Only use exact colors for visual */ -+ unsigned int closeness; /* Allowable RGB deviation */ -+ unsigned int red_closeness; /* Allowable red deviation */ -+ unsigned int green_closeness; /* Allowable green deviation */ -+ unsigned int blue_closeness; /* Allowable blue deviation */ -+ int color_key; /* Use colors from this color set */ -+ -+ Pixel *alloc_pixels; /* Returns the list of alloc'ed color -+ pixels */ -+ int nalloc_pixels; /* Returns the number of alloc'ed -+ color pixels */ -+ -+ Bool alloc_close_colors; /* Specify whether close colors should -+ be allocated using XAllocColor -+ or not */ -+ int bitmap_format; /* Specify the format of 1bit depth -+ images: ZPixmap or XYBitmap */ -+ -+ /* Color functions */ -+ XpmAllocColorFunc alloc_color; /* Application color allocator */ -+ XpmFreeColorsFunc free_colors; /* Application color de-allocator */ -+ void *color_closure; /* Application private data to pass to -+ alloc_color and free_colors */ -+ -+ } XpmAttributes; -+ -+ /* XpmAttributes value masks bits */ -+ #define XpmVisual (1L<<0) -+ #define XpmColormap (1L<<1) -+ #define XpmDepth (1L<<2) -+ #define XpmSize (1L<<3) /* width & height */ -+ #define XpmHotspot (1L<<4) /* x_hotspot & y_hotspot */ -+ #define XpmCharsPerPixel (1L<<5) -+ #define XpmColorSymbols (1L<<6) -+ #define XpmRgbFilename (1L<<7) -+ /* 3.2 backward compatibility code */ -+ #define XpmInfos (1L<<8) -+ #define XpmReturnInfos XpmInfos -+ /* end 3.2 bc */ -+ #define XpmReturnPixels (1L<<9) -+ #define XpmExtensions (1L<<10) -+ #define XpmReturnExtensions XpmExtensions -+ -+ #define XpmExactColors (1L<<11) -+ #define XpmCloseness (1L<<12) -+ #define XpmRGBCloseness (1L<<13) -+ #define XpmColorKey (1L<<14) -+ -+ #define XpmColorTable (1L<<15) -+ #define XpmReturnColorTable XpmColorTable -+ -+ #define XpmReturnAllocPixels (1L<<16) -+ #define XpmAllocCloseColors (1L<<17) -+ #define XpmBitmapFormat (1L<<18) -+ -+ #define XpmAllocColor (1L<<19) -+ #define XpmFreeColors (1L<<20) -+ #define XpmColorClosure (1L<<21) -+ -+ -+ /* XpmInfo value masks bits */ -+ #define XpmComments XpmInfos -+ #define XpmReturnComments XpmComments -+ -+ /* XpmAttributes mask_pixel value when there is no mask */ -+ #ifndef FOR_MSW -+ #define XpmUndefPixel 0x80000000 -+ #else -+ /* int is only 16 bit for MSW */ -+ #define XpmUndefPixel 0x8000 -+ #endif -+ -+ /* -+ * color keys for visual type, they must fit along with the number key of -+ * each related element in xpmColorKeys[] defined in XpmI.h -+ */ -+ #define XPM_MONO 2 -+ #define XPM_GREY4 3 -+ #define XPM_GRAY4 3 -+ #define XPM_GREY 4 -+ #define XPM_GRAY 4 -+ #define XPM_COLOR 5 -+ -+ -+ /* macros for forward declarations of functions with prototypes */ -+ #if NeedFunctionPrototypes -+ #define FUNC(f, t, p) extern t f p -+ #define LFUNC(f, t, p) static t f p -+ #else -+ #define FUNC(f, t, p) extern t f() -+ #define LFUNC(f, t, p) static t f() -+ #endif -+ -+ -+ /* -+ * functions declarations -+ */ -+ -+ #ifdef __cplusplus -+ extern "C" { -+ #endif -+ -+ /* FOR_MSW, all ..Pixmap.. are excluded, only the ..XImage.. are used */ -+ /* Same for Amiga! */ -+ -+ #if !defined(FOR_MSW) && !defined(AMIGA) -+ FUNC(XpmCreatePixmapFromData, int, (Display *display, -+ Drawable d, -+ char **data, -+ Pixmap *pixmap_return, -+ Pixmap *shapemask_return, -+ XpmAttributes *attributes)); -+ -+ FUNC(XpmCreateDataFromPixmap, int, (Display *display, -+ char ***data_return, -+ Pixmap pixmap, -+ Pixmap shapemask, -+ XpmAttributes *attributes)); -+ -+ FUNC(XpmReadFileToPixmap, int, (Display *display, -+ Drawable d, -+ char *filename, -+ Pixmap *pixmap_return, -+ Pixmap *shapemask_return, -+ XpmAttributes *attributes)); -+ -+ FUNC(XpmWriteFileFromPixmap, int, (Display *display, -+ char *filename, -+ Pixmap pixmap, -+ Pixmap shapemask, -+ XpmAttributes *attributes)); -+ #endif -+ -+ FUNC(XpmCreateImageFromData, int, (Display *display, -+ char **data, -+ XImage **image_return, -+ XImage **shapemask_return, -+ XpmAttributes *attributes)); -+ -+ FUNC(XpmCreateDataFromImage, int, (Display *display, -+ char ***data_return, -+ XImage *image, -+ XImage *shapeimage, -+ XpmAttributes *attributes)); -+ -+ FUNC(XpmReadFileToImage, int, (Display *display, -+ char *filename, -+ XImage **image_return, -+ XImage **shapeimage_return, -+ XpmAttributes *attributes)); -+ -+ FUNC(XpmWriteFileFromImage, int, (Display *display, -+ char *filename, -+ XImage *image, -+ XImage *shapeimage, -+ XpmAttributes *attributes)); -+ -+ FUNC(XpmCreateImageFromBuffer, int, (Display *display, -+ char *buffer, -+ XImage **image_return, -+ XImage **shapemask_return, -+ XpmAttributes *attributes)); -+ #if !defined(FOR_MSW) && !defined(AMIGA) -+ FUNC(XpmCreatePixmapFromBuffer, int, (Display *display, -+ Drawable d, -+ char *buffer, -+ Pixmap *pixmap_return, -+ Pixmap *shapemask_return, -+ XpmAttributes *attributes)); -+ -+ FUNC(XpmCreateBufferFromImage, int, (Display *display, -+ char **buffer_return, -+ XImage *image, -+ XImage *shapeimage, -+ XpmAttributes *attributes)); -+ -+ FUNC(XpmCreateBufferFromPixmap, int, (Display *display, -+ char **buffer_return, -+ Pixmap pixmap, -+ Pixmap shapemask, -+ XpmAttributes *attributes)); -+ #endif -+ FUNC(XpmReadFileToBuffer, int, (char *filename, char **buffer_return)); -+ FUNC(XpmWriteFileFromBuffer, int, (char *filename, char *buffer)); -+ -+ FUNC(XpmReadFileToData, int, (char *filename, char ***data_return)); -+ FUNC(XpmWriteFileFromData, int, (char *filename, char **data)); -+ -+ FUNC(XpmAttributesSize, int, ()); -+ FUNC(XpmFreeAttributes, void, (XpmAttributes *attributes)); -+ FUNC(XpmFreeExtensions, void, (XpmExtension *extensions, -+ int nextensions)); -+ -+ FUNC(XpmFreeXpmImage, void, (XpmImage *image)); -+ FUNC(XpmFreeXpmInfo, void, (XpmInfo *info)); -+ FUNC(XpmGetErrorString, char *, (int errcode)); -+ FUNC(XpmLibraryVersion, int, ()); -+ -+ /* XpmImage functions */ -+ FUNC(XpmReadFileToXpmImage, int, (char *filename, -+ XpmImage *image, -+ XpmInfo *info)); -+ -+ FUNC(XpmWriteFileFromXpmImage, int, (char *filename, -+ XpmImage *image, -+ XpmInfo *info)); -+ #if !defined(FOR_MSW) && !defined(AMIGA) -+ FUNC(XpmCreatePixmapFromXpmImage, int, (Display *display, -+ Drawable d, -+ XpmImage *image, -+ Pixmap *pixmap_return, -+ Pixmap *shapemask_return, -+ XpmAttributes *attributes)); -+ #endif -+ FUNC(XpmCreateImageFromXpmImage, int, (Display *display, -+ XpmImage *image, -+ XImage **image_return, -+ XImage **shapeimage_return, -+ XpmAttributes *attributes)); -+ -+ FUNC(XpmCreateXpmImageFromImage, int, (Display *display, -+ XImage *image, -+ XImage *shapeimage, -+ XpmImage *xpmimage, -+ XpmAttributes *attributes)); -+ #if !defined(FOR_MSW) && !defined(AMIGA) -+ FUNC(XpmCreateXpmImageFromPixmap, int, (Display *display, -+ Pixmap pixmap, -+ Pixmap shapemask, -+ XpmImage *xpmimage, -+ XpmAttributes *attributes)); -+ #endif -+ FUNC(XpmCreateDataFromXpmImage, int, (char ***data_return, -+ XpmImage *image, -+ XpmInfo *info)); -+ -+ FUNC(XpmCreateXpmImageFromData, int, (char **data, -+ XpmImage *image, -+ XpmInfo *info)); -+ -+ FUNC(XpmCreateXpmImageFromBuffer, int, (char *buffer, -+ XpmImage *image, -+ XpmInfo *info)); -+ -+ FUNC(XpmCreateBufferFromXpmImage, int, (char **buffer_return, -+ XpmImage *image, -+ XpmInfo *info)); -+ -+ FUNC(XpmGetParseError, int, (char *filename, -+ int *linenum_return, -+ int *charnum_return)); -+ -+ FUNC(XpmFree, void, (void *ptr)); -+ -+ #ifdef __cplusplus -+ } /* for C++ V2.0 */ -+ #endif -+ -+ -+ /* backward compatibility */ -+ -+ /* for version 3.0c */ -+ #define XpmPixmapColorError XpmColorError -+ #define XpmPixmapSuccess XpmSuccess -+ #define XpmPixmapOpenFailed XpmOpenFailed -+ #define XpmPixmapFileInvalid XpmFileInvalid -+ #define XpmPixmapNoMemory XpmNoMemory -+ #define XpmPixmapColorFailed XpmColorFailed -+ -+ #define XpmReadPixmapFile(dpy, d, file, pix, mask, att) \ -+ XpmReadFileToPixmap(dpy, d, file, pix, mask, att) -+ #define XpmWritePixmapFile(dpy, file, pix, mask, att) \ -+ XpmWriteFileFromPixmap(dpy, file, pix, mask, att) -+ -+ /* for version 3.0b */ -+ #define PixmapColorError XpmColorError -+ #define PixmapSuccess XpmSuccess -+ #define PixmapOpenFailed XpmOpenFailed -+ #define PixmapFileInvalid XpmFileInvalid -+ #define PixmapNoMemory XpmNoMemory -+ #define PixmapColorFailed XpmColorFailed -+ -+ #define ColorSymbol XpmColorSymbol -+ -+ #define XReadPixmapFile(dpy, d, file, pix, mask, att) \ -+ XpmReadFileToPixmap(dpy, d, file, pix, mask, att) -+ #define XWritePixmapFile(dpy, file, pix, mask, att) \ -+ XpmWriteFileFromPixmap(dpy, file, pix, mask, att) -+ #define XCreatePixmapFromData(dpy, d, data, pix, mask, att) \ -+ XpmCreatePixmapFromData(dpy, d, data, pix, mask, att) -+ #define XCreateDataFromPixmap(dpy, data, pix, mask, att) \ -+ XpmCreateDataFromPixmap(dpy, data, pix, mask, att) -+ -+ #endif /* XPM_NUMBERS */ -+ #endif -*** ../vim-7.3.638/src/Make_mvc.mak 2012-08-02 21:48:20.000000000 +0200 ---- src/Make_mvc.mak 2012-08-29 13:46:05.000000000 +0200 -*************** -*** 89,94 **** ---- 89,96 ---- - # Netbeans Support: NETBEANS=[yes or no] (default is yes if GUI is yes) - # - # XPM Image Support: XPM=[path to XPM directory] -+ # Default is "xpm", using the files included in the distribution. -+ # Use "no" to disable this feature. - # - # Optimization: OPTIMIZE=[SPACE, SPEED, MAXSPEED] (default is MAXSPEED) - # -*************** -*** 279,295 **** - NETBEANS_LIB = WSock32.lib - !endif - -! !ifdef XPM - # XPM - Include support for XPM signs -! # You need to download or build xpm.lib somehow. -! # You can get the most recent version of libXpm-*.zip from -! # http://cgit.freedesktop.org/xorg/lib/libXpm -! # from which you must build xpm.lib yourself -! # OR get and unpack: ftp://ftp.vim.org/pub/vim/pcextra/xpm.zip - XPM_OBJ = $(OBJDIR)/xpm_w32.obj - XPM_DEFS = -DFEAT_XPM_W32 - XPM_LIB = $(XPM)\lib\libXpm.lib -! XPM_INC = -I $(XPM)\include - !endif - !endif - ---- 281,301 ---- - NETBEANS_LIB = WSock32.lib - !endif - -! !ifndef XPM -! # XPM is not set, use the included xpm files, depending on the architecture. -! !if ("$(CPU)" == "AMD64") || ("$(CPU)" == "IA64") -! XPM = xpm\x64 -! !else -! XPM = xpm\x86 -! !endif -! !endif -! !if "$(XPM)" != "no" - # XPM - Include support for XPM signs -! # See the xpm directory for more information. - XPM_OBJ = $(OBJDIR)/xpm_w32.obj - XPM_DEFS = -DFEAT_XPM_W32 - XPM_LIB = $(XPM)\lib\libXpm.lib -! XPM_INC = -I $(XPM)\include -I $(XPM)\..\include - !endif - !endif - -*** ../vim-7.3.638/src/bigvim.bat 2010-08-15 21:57:29.000000000 +0200 ---- src/bigvim.bat 2012-08-29 13:46:18.000000000 +0200 -*************** -*** 1,3 **** - :: command to build big Vim with OLE, Perl, Python, Ruby and Tcl -! nmake -f Make_mvc.mak GUI=yes OLE=yes PERL=E:\perl512 DYNAMIC_PERL=yes PERL_VER=512 PYTHON=e:\python27 DYNAMIC_PYTHON=yes PYTHON_VER=27 PYTHON3=e:\python31 DYNAMIC_PYTHON3=yes PYTHON3_VER=31 RUBY=e:\ruby191 DYNAMIC_RUBY=yes RUBY_VER=191 RUBY_VER_LONG=1.9.1 TCL=e:\tcl DYNAMIC_TCL=yes %1 IME=yes CSCOPE=yes XPM=e:\xpm - ---- 1,5 ---- - :: command to build big Vim with OLE, Perl, Python, Ruby and Tcl -! SET VCDIR="C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\" -! SET TOOLDIR=E:\ -! %VCDIR%nmake -f Make_mvc.mak GUI=yes OLE=yes PERL=E:\perl514 DYNAMIC_PERL=yes PERL_VER=514 PYTHON=%TOOLDIR%python27 DYNAMIC_PYTHON=yes PYTHON_VER=27 PYTHON3=%TOOLDIR%python32 DYNAMIC_PYTHON3=yes PYTHON3_VER=32 RUBY=%TOOLDIR%ruby192 DYNAMIC_RUBY=yes RUBY_VER=192 RUBY_VER_LONG=1.9.2 TCL=%TOOLDIR%tcl TCL_VER=85 TCL_VER_LONG=8.5 DYNAMIC_TCL=yes %1 IME=yes CSCOPE=yes - -*** ../vim-7.3.638/src/bigvim64.bat 2012-08-29 14:16:38.000000000 +0200 ---- src/bigvim64.bat 2012-08-29 13:46:35.000000000 +0200 -*************** -*** 0 **** ---- 1,6 ---- -+ :: command to build big Vim 64 bit with OLE, Perl, Python, Ruby and Tcl -+ :: First run: %VCDIR%\vcvarsall.bat x86_amd64 -+ SET VCDIR="C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\" -+ SET TOOLDIR=E:\ -+ %VCDIR%\bin\nmake -f Make_mvc.mak CPU=AMD64 GUI=yes OLE=yes PERL=E:\perl514 DYNAMIC_PERL=yes PERL_VER=514 PYTHON=%TOOLDIR%python27 DYNAMIC_PYTHON=yes PYTHON_VER=27 PYTHON3=%TOOLDIR%python32 DYNAMIC_PYTHON3=yes PYTHON3_VER=32 RUBY=%TOOLDIR%ruby192 DYNAMIC_RUBY=yes RUBY_VER=192 RUBY_VER_LONG=1.9.2 TCL=%TOOLDIR%tcl TCL_VER=85 TCL_VER_LONG=8.5 DYNAMIC_TCL=yes %1 IME=yes CSCOPE=yes -+ -*** ../vim-7.3.638/Filelist 2012-07-16 17:27:57.000000000 +0200 ---- Filelist 2012-08-29 13:53:52.000000000 +0200 -*************** -*** 349,354 **** ---- 349,360 ---- - src/vim*.ico \ - src/vim.tlb \ - src/vimtbar.lib \ -+ src/xpm/COPYRIGHT \ -+ src/xpm/README.txt \ -+ src/xpm/include/*.h \ -+ src/xpm/x64/lib/libXpm.lib \ -+ src/xpm/x86/lib/libXpm.a \ -+ src/xpm/x86/lib/libXpm.lib \ - src/vimtbar.dll \ - nsis/icons/*.bmp \ - nsis/icons/*.ico \ -*** ../vim-7.3.638/src/version.c 2012-08-29 14:17:51.000000000 +0200 ---- src/version.c 2012-08-29 14:14:19.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 639, - /**/ - --- -A successful man is one who makes more money than his wife can spend. -A successful woman is one who can find such a man. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.640 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=latin1 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.640 -Problem: It's not easy to build Vim on Windows with XPM support. -Solution: Binary files for 7.3.639. (Sergey Khorev) -Files: src/xpm/x64/lib/libXpm.lib, src/xpm/x86/lib/libXpm.a, - src/xpm/x86/lib/libXpm.lib - - -NOTE: These are binary files, this may not work for everybody, thus I -put them in a separate patch. - - -*** ../vim-7.3.639/src/xpm/x64/lib/libXpm.lib 1970-01-01 01:00:00.000000000 +0100 ---- src/xpm/x64/lib/libXpm.lib 2012-08-26 17:34:14.000000000 +0200 -*************** -*** 0 **** ---- 1,469 ---- -+ !<arch> -+ / 1345988052 0 12499 ` -+ -+ -+ -+ -+ / 1345988052 0 11841 ` -+ -+ ´ -+ -+ WrFFrI.obj/ 1345988051 100666 12566 ` -+ d†> -+ -+ -+ -+ -+ -+ d -+ P -+ -+ -+ t -+ -+ T -+ 2`, -+ "XPMENDEXT" -+ "%s" -+ "XPMEXT %s" -+ sAƒy( -+ -+ -+ -+ -+ static char * %s[] = { -+ -+ -+ -+ -+ ªXÞ+ -+ d† -+ -+ parse.obj/ 1345988051 100666 16304 ` -+ d†7 -+ -+ -+ -+ -+ -+ HÿÈDþ„ÀuñD‹åH”$P -+ ÿ„Àuò‹t$,D‹l$(HƒÃ0ÿÆH‰\$0‰t$,A;õƒˆ -+ HÿˆLÿ„Éuò3ÃDÂ{ÆD$P -+ HÿÈDÿ„ÀuñH”$P -+ HÿˆLÿ„ÉuòAÂEÿH‰~(ˆL$PD;à sI‹Îè -+ -+ -+ -+ -+ -+ ¸ýÿÿÿé) -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ ÿÿÿD -+ à ÃÀ`P0 -+ -+ H‹L$(è -+ s.9|$Xt!LÂC(HÂS0H‹Ãè -+ -+ -+ -+ -+ d† -+ -+ 4 -+ 2`w -+ simx.obj/ 1345988050 100666 8727 ` -+ d†2 -+ -+ -+ 4 -+ 2p3ÀÃÂAÃø wÂAÃÃÂAŸƒøwÂA©ÃÂA¿ƒøwÂAÉÃ3ÀÃHē(L‹ÚL‹ÑH…Ʉ -+ ‹ÃÃâè -+ -+ T -+ -+ R`Hē(H…Étè -+ -+ -+ 20@comp.id xƒ -+ -+ -+ scan.obj/ 1345988050 100666 8135 ` -+ d† -+ -+ H‰\$0‹ZH‰|$8‹zH™;ßs9(t -+ ÿÃHƒÀ;ßrò;ßu,‹R;úr҉VÃâè -+ -+ -+ ¸ýÿÿÿé& -+ ÿÂIÿÀA;ÖrÚA;ÖtNH‹D$HH…ÀtJ‹<ÀëHÂ<RHÃçIûIÂ\$à I+ü¾ -+ -+ -+ -+ -+ -+ -+ rgb.obj/ 1345988050 100666 39939 ` -+ d†ö -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ + -+ , -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ &( -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ S• -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ RdFToI.obj/ 1345988049 100666 5315 ` -+ d† -+ -+ -+ -+ -+ -+ -+ -+ Ç -+ -+ -+ RdFToDat.obj/ 1345988049 100666 1111 ` -+ d† -+ -+ RdFToBuf.obj/ 1345988049 100666 2845 ` -+ d† -+ -+ -+ -+ -+ misc.obj/ 1345988048 100666 2352 ` -+ d†
-+ -+ -+ -+ d† -+ -+ s‹S(Â…Ã’tH‹K0è -+ -+ -+ -+ -+ -+ 20Ç -+ s -+ s -+ -+ -+ Image.obj/ 1345988048 100666 1064 ` -+ d† -+ -+ d† -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ 4 -+ 2pH‰\$H‰|$¶L‹Y3ÀH‹úL‹ÑL‹Â„Ût$D¶Ëffff„ -+ -+ t -+ -+ 4 -+ 2pH‰t$WHē H‹yH‹ñH…ÿtFHcH‰\$0HÂÇH;ßv f„ -+ -+ d -+ 2p@comp.id xƒ -+ -+ -+ d†= -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ „ÉuÉA€9 -+ „Àt4Aƒûÿuـ> -+ ƒøÿuÀ> -+ -+ -+ T -+ -+ Àp`P -+ -+ 4 -+ 2pH‰\$VWATHÂì0 -+ H‰¹( -+ ¸þÿÿÿéà -+ -+ -+ -+ -+ CrIFrDat.obj/ 1345988047 100666 2621 ` -+ d† -+ -+ CrIFrBuf.obj/ 1345988047 100666 2483 ` -+ d† -+ -+ create.obj/ 1345988047 100666 16420 ` -+ d†, -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ D‹Ã‰Œ$ -+ ƒøuÂHë¹ -+ ‹´$ -+ -+ Ô -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ Àp`P -+ -+ öt‹këI‹Ãè -+ s3ƒ¼$„ -+ -+ -+ -+ -+ -+ d†) -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ HÿÂAˆLÿ„ÉuñI‰E -+ Àp`P -+ E…Àt&fff„ -+ ‰E -+ -+ Ä -+ ƒ… -+ ‰D$0ë‹ñ‰L$8E‹gº -+ Àp`P -+ -+ -+ -+ -+ -+ d†) -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ …Àt.L‹Èffffff„ -+ -+ t -+ à Ã`, -+ "XPMENDEXT" -+ "%s" -+ "XPMEXT %s" -+ I‹xH…ÿt3ÀHƒÉÿò®HքÂD -+ H‹|$ÃH‹|$‹Âà -+ Aº E‹çrD‹æH…ÛtAº -+ sA‹P(Â…Ã’t
I‹H0è -+ ÿ„ÀuòE…ätL‹CM…ÀtHÂ>H -+ ÿ„Àuòý‰|$@E…ät L‹CM…Àt‹ÃH -+ -+ Àp`P -+ -+ -+ static char * image_name[] = { -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ d†2 -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ T -+ T -+ T -+ H‰Q0‰Q8H‰Qp‰QhH‰QxH‰‘€ -+ sH‹G0H‰C`‹G(‰CXL‰o0D‰o(öL‹l$Ptƒ‹G ‰C$‹G$‰C(ƒ ‹F‹‰C,ƒÉ‰‹‰C‹F‰C HĀ _^[Ãa -+ -+ -+ -+ -+ -+ -+ -+ s‹SXÂ…Ã’tH‹K`è -+ -+ 4 -+ 2p@comp.id xƒ -+ -+ -+ -+ -\ No newline at end of file -*** ../vim-7.3.639/src/xpm/x86/lib/libXpm.a 1970-01-01 01:00:00.000000000 +0100 ---- src/xpm/x86/lib/libXpm.a 2012-08-26 17:30:56.000000000 +0200 -*************** -*** 0 **** ---- 1,125 ---- -+ !<arch> -+ / 1345987854 0 0 0 1562 ` -+ -+ -+ -+ -+ -+ -+ L -+ L -+ -+ -+ -+ -+ "XÇFPMENÇFDEXTfÇF" -+ -+ static char * image_name[] = { -+ -+ "XPMEXT %s" -+ "%s" -+ -+ CrDatFrI.o/ 1345987850 0 0 100666 3164 ` -+ L -+ -+ ‰…äûÿÿ‹…°ûÿÿ@‰…à ûÿÿé+ùÿÿf‰$Cè -+ L -+ ýÿÿéÃüÿÿº -+ -+ ‰B…ÿ„Ä -+ ùÿÿéÃûÿÿ1À‹Âh÷ÿÿ‰…L÷ÿÿ9ÂL÷ÿÿƒÃýÿÿ‹E‰$è -+ ûÿÿ‹U‰$è -+ -+ -+ -+ -+ CrIFrBuf.o/ 1345987850 0 0 100666 1275 ` -+ L -+ CrIFrDat.o/ 1345987850 0 0 100666 1318 ` -+ L -+ L -+ ˆ¶8Èu„ÉuބÀt.‹Eð)xĀ1À[^_]É4$è -+ uՋ]ä1ÿë΋Eð‰xë¶ -+ uً]äF1ÿGCˆ¶8ÈtԄÀt+º -+ …É„ -+ º -+ õÿÿ¶ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ L -+ Image.o/ 1345987851 0 0 100666 579 ` -+ L -+ Info.o/ 1345987851 0 0 100666 901 ` -+ L -+ -+ -+ ‹A‰B‹A‰B]Ä -+ misc.o/ 1345987852 0 0 100666 1002 ` -+ L -+ ‹E¹ -+ L -+ -+ -+ -+ L -+ -+ L -+ rgb.o/ 1345987852 0 0 100666 7632 ` -+ L -+ -+ -+ -+ -+ -+ -+ L -+ -+ -+ -+ -+ -+ -+ -+ -+ simx.o/ 1345987853 0 0 100666 2040 ` -+ L -+ -+ 뛾Cècþÿÿ‰Eè¾CèWþÿÿ‰Eì¾CèKþÿÿ뀉ö¼' -+ -+ L -+ -+ L -+ éêýÿÿü¸< -+ ‰B1Àé+ûÿÿ‰$è -+ -+ -+ -+ -+ -+ -+ -+ WrFFrDat.o/ 1345987853 0 0 100666 672 ` -+ L -+ -+ L -+ static char * %s[] = { -+ -+ -+ -+ "XPMEXT %s" -+ "%s" -+ "XPMENDEXT" -+ -+ -*** ../vim-7.3.639/src/xpm/x86/lib/libXpm.lib 1970-01-01 01:00:00.000000000 +0100 ---- src/xpm/x86/lib/libXpm.lib 2012-08-26 17:29:16.000000000 +0200 -*************** -*** 0 **** ---- 1,332 ---- -+ !<arch> -+ / 1345987754 0 11348 ` -+ -+ -+ -+ L% -+ -+ -+ -+ -+ -+ -+ static char * %s[] = { -+ -+ -+ "XPMENDEXT" -+ "%s" -+ "XPMEXT %s" -+ -+ -+ -+ L -+ -+ -+ -+ L -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ w3Ҋ‘ -+ ‹K¾A‰KˆFMu»ƒÿÆ -+ ‹K¾A‰KˆFOu»‹¼$0 -+ -+ ‹N¾A‰NˆD< G;ûr¸‹”$< -+ ‹K¾A‰KˆD4 F;÷r¸‹„$0 -+ ‹F¾8@‰F…ÿŽù -+ ‹N¾A‰N…À~o= -+ ‹N¾A‰N…ÀŽúþÿÿ= -+ -+ -+ -+ -+ L -+ -+ -+ -+ simx.obj/ 1345987753 100666 5012 ` -+ L! -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ ÃçPè -+ -+ -+ -+ -+ -+ -+ L -+ -+ -+ ;õt‹~‹^‹L$<;Ãtܬ uöÄt ‹A ‰D$4ë‰l$4‹Ëj¯ÃQè -+ ¾ýÿÿÿé -+ ¾ýÿÿÿéó -+ ¾ýÿÿÿé€ -+ _^]¸ -+ _^]¸ýÿÿÿ[á -+ öt‹C담$8 -+ ‹T$0Â@ÂÊ+ÇÂwð½ -+ -+ -+ iãb -+ -+ -+ rgb.obj/ 1345987753 100666 36745 ` -+ Lõ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ : -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ ‹T$ 3ɊÌÂáÿ -+ ‹L$$Ãè%ÿ -+ -+ -+ -+ -+ -+ -+ -+ -+ &( -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ S• -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ RdFToI.obj/ 1345987752 100666 3302 ` -+ L -+ -+ -+ -+ -+ -+ L -+ -+ -+ -+ L -+ -+ _^ƒÈÿ[Ā$ÃÂT$RVè -+ -+ -+ -+ misc.obj/ 1345987752 100666 2557 ` -+ L -+ -+ -+ -+ æ -+ -+ -+ -+ Info.obj/ 1345987752 100666 1477 ` -+ L -+ -+ -+ Image.obj/ 1345987752 100666 815 ` -+ L -+ -+ -+ hashtab.obj/ 1345987751 100666 2249 ` -+ L
-+ -+ 3ÀW‹nˆL$„Ét‹øÃç+ø¾ÃŠJÇB„Éuì‹3Ò÷ó‹L• -+ _^]¸ýÿÿÿ[ÉF;Èv
Ď;ÈÇ -+ -+ -+ -+ -+ data.obj/ 1345987751 100666 8777 ` -+ L% -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ Š@„ɉFuòІ -+ ;ÃuVè -+ -+ ‹µ -+ ‰ž -+ -+ -+ -+ CrIFrDat.obj/ 1345987751 100666 1726 ` -+ L -+ -+ -+ -+ -+ -+ L -+ -+ -+ -+ -+ -+ create.obj/ 1345987751 100666 11128 ` -+ L -+ -+ öt‹GëUè -+ »ýÿÿÿé0 -+ »ýÿÿÿé -+ »ýÿÿÿéî -+ öt‹Fë‹|$DWè -+ ÇD$ -+ ÇD$ -+ ‹T$XÇ -+ ¸ -+ ¸ -+ öt‹GëVè -+ ¾ýÿÿÿéE -+ ¾ýÿÿÿé -+ ¾ýÿÿÿéù -+ ¾ýÿÿÿéÓ -+ ‹O¾A‰OˆD4‹„$4 -+ ÿÿÿ‹D$‹Œ$, -+ ‹K¾A‰KˆD4F;÷r¸‹„$0 -+ ‹E¾0@‰E…öŽö -+ ‹N¾A‰N…ÀŽýþÿÿ= -+ -+ -+ L -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ ¾ýÿÿÿé“ -+ ¾ýÿÿÿéú -+ H‰D$(u²‹T$‹K• -+ v‹>ƒÉÿ3ÀƒÆò®÷ÑIKÂT -+ uê‹D$āH‰D$‹D$uµ_^][‹L$ƒÂ -+ @‰‹T$‰Ã -+ -+ -+ -+ -+ -+ L -+ -+ -+ -+ ‹‰L$„áu‰l$;Ãtr‹öÄtk‹C;Ã…td‰L$ ‹KPQè -+ -+ -+ -+ -+ static char * image_name[] = { -+ -+ ÿÿÿ_^]3À[ÂÄ -+ v‹è‹>ƒÉÿ3ÀƒÆò®÷ÑIMÂT -+ uê‹D$ƒÃH‰D$uÀ_^]ÂB
[ÃÂB
à-+ "XPMENDEXT" -+ "%s" -+ "XPMEXT %s" -+ ‹~…ÿtƒÉÿ3Àò®÷ÑI_^ÂD -+ Ã_‹Â^à -+ -+ -+ -+ Attrib.obj/ 1345987750 100666 3166 ` -+ L -+ -+ -+ -+ -+ -\ No newline at end of file -*** ../vim-7.3.639/src/version.c 2012-08-29 14:18:26.000000000 +0200 ---- src/version.c 2012-08-29 14:19:56.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 640, - /**/ - --- -GALAHAD: No. Look, I can tackle this lot single-handed! -GIRLS: Yes, yes, let him Tackle us single-handed! - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.641 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.641 -Problem: ":mkview" uses ":normal" instead of ":normal!" for folds. (Dan) -Solution: Add the bang. (Christian Brabandt) -Files: src/fold.c - - -*** ../vim-7.3.640/src/fold.c 2012-08-08 18:01:00.000000000 +0200 ---- src/fold.c 2012-08-29 15:17:39.000000000 +0200 -*************** -*** 3373,3379 **** - /* open nested folds while this fold is open */ - if (fprintf(fd, "%ld", fp->fd_top + off) < 0 - || put_eol(fd) == FAIL -! || put_line(fd, "normal zo") == FAIL) - return FAIL; - if (put_foldopen_recurse(fd, wp, &fp->fd_nested, - off + fp->fd_top) ---- 3373,3379 ---- - /* open nested folds while this fold is open */ - if (fprintf(fd, "%ld", fp->fd_top + off) < 0 - || put_eol(fd) == FAIL -! || put_line(fd, "normal! zo") == FAIL) - return FAIL; - if (put_foldopen_recurse(fd, wp, &fp->fd_nested, - off + fp->fd_top) -*************** -*** 3417,3423 **** - { - if (fprintf(fd, "%ld", fp->fd_top + off) < 0 - || put_eol(fd) == FAIL -! || fprintf(fd, "normal z%c", - fp->fd_flags == FD_CLOSED ? 'c' : 'o') < 0 - || put_eol(fd) == FAIL) - return FAIL; ---- 3417,3423 ---- - { - if (fprintf(fd, "%ld", fp->fd_top + off) < 0 - || put_eol(fd) == FAIL -! || fprintf(fd, "normal! z%c", - fp->fd_flags == FD_CLOSED ? 'c' : 'o') < 0 - || put_eol(fd) == FAIL) - return FAIL; -*** ../vim-7.3.640/src/version.c 2012-08-29 14:23:06.000000000 +0200 ---- src/version.c 2012-08-29 15:18:26.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 641, - /**/ - --- -You cannot propel yourself forward by patting yourself on the back. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.642 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.642 -Problem: Segfault with specific autocommands. Was OK after 7.3.449 and - before 7.3.545. (Richard Brown) -Solution: Pass TRUE for abort_if_last in the call to close_buffer(). - (Christian Brabandt) -Files: src/window.c - - -*** ../vim-7.3.641/src/window.c 2012-07-19 18:05:40.000000000 +0200 ---- src/window.c 2012-08-29 15:42:15.000000000 +0200 -*************** -*** 2269,2275 **** - #ifdef FEAT_AUTOCMD - win->w_closing = TRUE; - #endif -! close_buffer(win, win->w_buffer, free_buf ? DOBUF_UNLOAD : 0, FALSE); - #ifdef FEAT_AUTOCMD - if (win_valid(win)) - win->w_closing = FALSE; ---- 2269,2275 ---- - #ifdef FEAT_AUTOCMD - win->w_closing = TRUE; - #endif -! close_buffer(win, win->w_buffer, free_buf ? DOBUF_UNLOAD : 0, TRUE); - #ifdef FEAT_AUTOCMD - if (win_valid(win)) - win->w_closing = FALSE; -*** ../vim-7.3.641/src/version.c 2012-08-29 15:22:14.000000000 +0200 ---- src/version.c 2012-08-29 15:49:52.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 642, - /**/ - --- -The psychic said, "God bless you." I said, "I didn't sneeze." She -looked deep into my eyes and said, "You will, eventually." And, damn -if she wasn't right. Two days later, I sneezed. --Ellen Degeneres - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.643 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.643 (after 7.3.635) -Problem: MS-Windows: When starting gvim maximized 'lines' and 'columns' are - wrong. (Christian Robinson) -Solution: Move the check for gui.starting from ui_get_shellsize() to - check_shellsize(). -Files: src/ui.c, src/term.c - - -*** ../vim-7.3.642/src/ui.c 2012-08-23 13:28:50.000000000 +0200 ---- src/ui.c 2012-08-29 16:20:04.000000000 +0200 -*************** -*** 298,306 **** - int retval; - - #ifdef FEAT_GUI -- if (gui.starting) -- /* possibly a system call during startup, check later */ -- return OK; - if (gui.in_use) - retval = gui_get_shellsize(); - else ---- 298,303 ---- -*** ../vim-7.3.642/src/term.c 2012-08-15 16:20:59.000000000 +0200 ---- src/term.c 2012-08-29 16:22:25.000000000 +0200 -*************** -*** 3006,3012 **** - int old_Rows = Rows; - int old_Columns = Columns; - -! if (!exiting) - { - (void)ui_get_shellsize(); - check_shellsize(); ---- 3006,3018 ---- - int old_Rows = Rows; - int old_Columns = Columns; - -! if (!exiting -! #ifdef FEAT_GUI -! /* Do not get the size when executing a shell command during -! * startup. */ -! && !gui.starting -! #endif -! ) - { - (void)ui_get_shellsize(); - check_shellsize(); -*** ../vim-7.3.642/src/version.c 2012-08-29 15:50:22.000000000 +0200 ---- src/version.c 2012-08-29 16:25:42.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 643, - /**/ - --- -Eight Megabytes And Continually Swapping. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.644 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.644 -Problem: Dead code for BeOS GUI. -Solution: Remove unused __BEOS__ stuff. -Files: src/gui.c - - -*** ../vim-7.3.643/src/gui.c 2012-07-10 16:49:08.000000000 +0200 ---- src/gui.c 2012-08-29 16:28:46.000000000 +0200 -*************** -*** 37,44 **** - static void gui_set_bg_color __ARGS((char_u *name)); - static win_T *xy2win __ARGS((int x, int y)); - -! #if defined(UNIX) && !defined(__BEOS__) && !defined(MACOS_X) \ -! && !defined(__APPLE__) - # define MAY_FORK - static void gui_do_fork __ARGS((void)); - ---- 37,43 ---- - static void gui_set_bg_color __ARGS((char_u *name)); - static win_T *xy2win __ARGS((int x, int y)); - -! #if defined(UNIX) && !defined(MACOS_X) && !defined(__APPLE__) - # define MAY_FORK - static void gui_do_fork __ARGS((void)); - -*************** -*** 784,794 **** - gui_exit(rc) - int rc; - { -- #ifndef __BEOS__ - /* don't free the fonts, it leads to a BUS error - * richard@whitequeen.com Jul 99 */ - free_highlight_fonts(); -- #endif - gui.in_use = FALSE; - gui_mch_exit(rc); - } ---- 783,791 ---- -*** ../vim-7.3.643/src/version.c 2012-08-29 16:26:01.000000000 +0200 ---- src/version.c 2012-08-29 16:33:30.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 644, - /**/ - --- -E M A C S -s e l o h -c t t n i -a a t f -p r t -e o - l - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.645 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.645 -Problem: No tests for patch 7.3.625 and 7.3.637. -Solution: Add more tests for the "gn" command and try/catch. (Christian - Brabandt) -Files: src/testdir/test53.in, src/testdir/test53.ok, - src/testdir/test55.in, src/testdir/test55.ok - - -*** ../vim-7.3.644/src/testdir/test53.in 2012-07-25 15:06:20.000000000 +0200 ---- src/testdir/test53.in 2012-08-29 16:37:44.000000000 +0200 -*************** -*** 34,40 **** - gnd - /[a]bcdx - :1 -! 2gnd - :/^start:/,/^end:/wq! test.out - ENDTEST - ---- 34,46 ---- - gnd - /[a]bcdx - :1 -! 2gnd/join -! /$ -! 0gnd -! /\>\zs -! 0gnd/^ -! gnd$h/\zs -! gnd - :/^start:/,/^end:/wq! test.out - ENDTEST - -*************** -*** 57,60 **** ---- 63,70 ---- - one - two - abcdx | abcdx | abcdx -+ join -+ lines -+ zero width pattern -+ delete first and last chars - end: -*** ../vim-7.3.644/src/testdir/test53.ok 2012-07-25 15:06:20.000000000 +0200 ---- src/testdir/test53.ok 2012-08-29 16:37:48.000000000 +0200 -*************** -*** 21,24 **** ---- 21,27 ---- - SEARCH: - searchmatch - abcdx | | abcdx -+ join lines -+ zerowidth pattern -+ elete first and last char - end: -*** ../vim-7.3.644/src/testdir/test55.in 2012-05-18 12:06:58.000000000 +0200 ---- src/testdir/test55.in 2012-08-29 16:50:51.000000000 +0200 -*************** -*** 378,383 **** ---- 378,393 ---- - :unlet dict - :call garbagecollect(1) - :" -+ :" test for patch 7.3.637 -+ :let a = 'No error caught' -+ :try|foldopen|catch|let a = matchstr(v:exception,'^[^ ]*')|endtry -+ o=a
:" -+ :lang C -+ :redir => a -+ :try|foobar|catch|let a = matchstr(v:exception,'^[^ ]*')|endtry -+ :redir END -+ o=a
:" -+ :" - :/^start:/,$wq! test.out - ENDTEST - -*** ../vim-7.3.644/src/testdir/test55.ok 2012-05-18 12:06:58.000000000 +0200 ---- src/testdir/test55.ok 2012-08-29 16:51:15.000000000 +0200 -*************** -*** 115,117 **** ---- 115,123 ---- - {'a': {'b': 'B'}} - Vim(call):E737: a - {'a': {'b': 'B'}} -+ Vim(foldopen):E490: -+ -+ -+ Error detected while processing : -+ E492: Not an editor command: foobar|catch|let a = matchstr(v:exception,'^[^ ]*')|endtry -+ -*** ../vim-7.3.644/src/version.c 2012-08-29 16:34:23.000000000 +0200 ---- src/version.c 2012-08-29 16:37:20.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 645, - /**/ - --- -TALL KNIGHT OF NI: Ni! - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.646 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.646 -Problem: When reloading a buffer the undo file becomes unusable unless ":w" - is executed. (Dmitri Frank) -Solution: After reloading the buffer write the undo file. (Christian - Brabandt) -Files: src/fileio.c - - -*** ../vim-7.3.645/src/fileio.c 2012-07-10 17:14:50.000000000 +0200 ---- src/fileio.c 2012-08-29 18:19:44.000000000 +0200 -*************** -*** 7060,7067 **** ---- 7060,7082 ---- - } - - if (reload) -+ { - /* Reload the buffer. */ - buf_reload(buf, orig_mode); -+ #ifdef FEAT_PERSISTENT_UNDO -+ if (buf->b_p_udf && buf->b_ffname != NULL) -+ { -+ char_u hash[UNDO_HASH_SIZE]; -+ buf_T *save_curbuf = curbuf; -+ -+ /* Any existing undo file is unusable, write it now. */ -+ curbuf = buf; -+ u_compute_hash(hash); -+ u_write_undo(NULL, FALSE, buf, hash); -+ curbuf = save_curbuf; -+ } -+ #endif -+ } - - #ifdef FEAT_AUTOCMD - /* Trigger FileChangedShell when the file was changed in any way. */ -*** ../vim-7.3.645/src/version.c 2012-08-29 16:55:09.000000000 +0200 ---- src/version.c 2012-08-29 18:21:07.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 646, - /**/ - --- - An extraordinary TALL KNIGHT in all black (possibly John with Mike on his - shoulders) walks out from the dark trees. He is extremely fierce and - gruesome countenance. He walks towards KING ARTHUR and PATSY, who are - wazzing like mad. (Salopian slang, meaning very scared. almost to the - point of wetting oneself, e.g. before an important football match or - prior to a postering. Salopian slang meaning a beating by the school - praeposters. Sorry about the Salopian slant to this stage direction - Ed.) - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.647 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.647 -Problem: "gnd" doesn't work correctly in Visual mode. -Solution: Handle Visual mode differently in "gn". (Christian Brabandt) -Files: src/search.c, src/testdir/test53.in, src/testdir/test53.ok - - -*** ../vim-7.3.646/src/search.c 2012-08-23 15:53:00.000000000 +0200 ---- src/search.c 2012-09-05 12:11:58.000000000 +0200 -*************** -*** 4545,4551 **** - int dir; - int result; /* result of various function calls */ - char_u old_p_ws = p_ws; -- int visual_active = FALSE; - int flags = 0; - pos_T save_VIsual; - int zerowidth = FALSE; ---- 4545,4550 ---- -*************** -*** 4561,4571 **** - { - orig_pos = curwin->w_cursor; - save_VIsual = VIsual; -- visual_active = TRUE; -- -- /* just started visual selection, only one character */ -- if (equalpos(VIsual, curwin->w_cursor)) -- visual_active = FALSE; - - pos = curwin->w_cursor; - start_pos = VIsual; ---- 4560,4565 ---- -*************** -*** 4619,4625 **** - p_ws = old_p_ws; - return FAIL; - } -! else if (!i && !result && !visual_active) - { - if (forward) /* try again from start of buffer */ - { ---- 4613,4619 ---- - p_ws = old_p_ws; - return FAIL; - } -! else if (!i && !result) - { - if (forward) /* try again from start of buffer */ - { -*************** -*** 4691,4697 **** - regmmatch_T regmatch; - int nmatched = 0; - int result = -1; -! pos_T pos; - - if (search_regcomp(pattern, RE_SEARCH, RE_SEARCH, - SEARCH_KEEP, ®match) == FAIL) ---- 4685,4692 ---- - regmmatch_T regmatch; - int nmatched = 0; - int result = -1; -! pos_T pos; -! int save_called_emsg = called_emsg; - - if (search_regcomp(pattern, RE_SEARCH, RE_SEARCH, - SEARCH_KEEP, ®match) == FAIL) -*************** -*** 4704,4718 **** - { - /* Zero-width pattern should match somewhere, then we can check if - * start and end are in the same position. */ - nmatched = vim_regexec_multi(®match, curwin, curbuf, - pos.lnum, (colnr_T)0, NULL); - - if (!called_emsg) - result = (nmatched != 0 -! && regmatch.startpos[0].lnum == regmatch.endpos[0].lnum -! && regmatch.startpos[0].col == regmatch.endpos[0].col); - } - - vim_free(regmatch.regprog); - return result; - } ---- 4699,4715 ---- - { - /* Zero-width pattern should match somewhere, then we can check if - * start and end are in the same position. */ -+ called_emsg = FALSE; - nmatched = vim_regexec_multi(®match, curwin, curbuf, - pos.lnum, (colnr_T)0, NULL); - - if (!called_emsg) - result = (nmatched != 0 -! && regmatch.startpos[0].lnum == regmatch.endpos[0].lnum -! && regmatch.startpos[0].col == regmatch.endpos[0].col); - } - -+ called_emsg |= save_called_emsg; - vim_free(regmatch.regprog); - return result; - } -*** ../vim-7.3.646/src/testdir/test53.in 2012-08-29 16:55:09.000000000 +0200 ---- src/testdir/test53.in 2012-09-05 12:12:03.000000000 +0200 -*************** -*** 40,46 **** - /\>\zs - 0gnd/^ - gnd$h/\zs -! gnd - :/^start:/,/^end:/wq! test.out - ENDTEST - ---- 40,47 ---- - /\>\zs - 0gnd/^ - gnd$h/\zs -! gnd/[u]niquepattern/s -! vlgnd - :/^start:/,/^end:/wq! test.out - ENDTEST - -*************** -*** 67,70 **** ---- 68,72 ---- - lines - zero width pattern - delete first and last chars -+ uniquepattern uniquepattern - end: -*** ../vim-7.3.646/src/testdir/test53.ok 2012-08-29 16:55:09.000000000 +0200 ---- src/testdir/test53.ok 2012-09-05 12:12:08.000000000 +0200 -*************** -*** 24,27 **** ---- 24,28 ---- - join lines - zerowidth pattern - elete first and last char -+ uniquepattern - end: -*** ../vim-7.3.646/src/version.c 2012-08-29 18:50:50.000000000 +0200 ---- src/version.c 2012-09-05 12:13:37.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 647, - /**/ - --- - ** Hello and Welcome to the Psychiatric Hotline ** -If you are obsessive-compulsive, please press 1 repeatedly. -If you are co-dependent, please ask someone to press 2. -If you have multiple personalities, please press 3, 4, 5 and 6. -If you are paranoid-delusional, we know who you are and what you want - - just stay on the line so we can trace the call. -If you are schizophrenic, listen carefully and a little voice will - tell you which number to press next. -If you are manic-depressive, it doesn't matter which number you press - - no one will answer. -If you suffer from panic attacks, push every button you can find. -If you are sane, please hold on - we have the rest of humanity on the - other line and they desparately want to ask you a few questions. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.648 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.648 -Problem: Crash when using a very long file name. (ZyX) -Solution: Properly check length of buffer space. -Files: src/buffer.c - - -*** ../vim-7.3.647/src/buffer.c 2012-07-16 17:31:48.000000000 +0200 ---- src/buffer.c 2012-09-05 13:17:38.000000000 +0200 -*************** -*** 3234,3245 **** - { - /* format: "fname + (path) (1 of 2) - VIM" */ - - if (curbuf->b_fname == NULL) -! vim_strncpy(buf, (char_u *)_("[No Name]"), IOSIZE - 100); - else - { - p = transstr(gettail(curbuf->b_fname)); -! vim_strncpy(buf, p, IOSIZE - 100); - vim_free(p); - } - ---- 3234,3248 ---- - { - /* format: "fname + (path) (1 of 2) - VIM" */ - -+ #define SPACE_FOR_FNAME (IOSIZE - 100) -+ #define SPACE_FOR_DIR (IOSIZE - 20) -+ #define SPACE_FOR_ARGNR (IOSIZE - 10) /* at least room for " - VIM" */ - if (curbuf->b_fname == NULL) -! vim_strncpy(buf, (char_u *)_("[No Name]"), SPACE_FOR_FNAME); - else - { - p = transstr(gettail(curbuf->b_fname)); -! vim_strncpy(buf, p, SPACE_FOR_FNAME); - vim_free(p); - } - -*************** -*** 3263,3269 **** - buf[off++] = ' '; - buf[off++] = '('; - home_replace(curbuf, curbuf->b_ffname, -! buf + off, IOSIZE - off, TRUE); - #ifdef BACKSLASH_IN_FILENAME - /* avoid "c:/name" to be reduced to "c" */ - if (isalpha(buf[off]) && buf[off + 1] == ':') ---- 3266,3272 ---- - buf[off++] = ' '; - buf[off++] = '('; - home_replace(curbuf, curbuf->b_ffname, -! buf + off, SPACE_FOR_DIR - off, TRUE); - #ifdef BACKSLASH_IN_FILENAME - /* avoid "c:/name" to be reduced to "c" */ - if (isalpha(buf[off]) && buf[off + 1] == ':') -*************** -*** 3274,3291 **** - if (p == buf + off) - /* must be a help buffer */ - vim_strncpy(buf + off, (char_u *)_("help"), -! (size_t)(IOSIZE - off - 1)); - else - *p = NUL; - -! /* translate unprintable chars */ -! p = transstr(buf + off); -! vim_strncpy(buf + off, p, (size_t)(IOSIZE - off - 1)); -! vim_free(p); - STRCAT(buf, ")"); - } - -! append_arg_number(curwin, buf, IOSIZE, FALSE); - - #if defined(FEAT_CLIENTSERVER) - if (serverName != NULL) ---- 3277,3304 ---- - if (p == buf + off) - /* must be a help buffer */ - vim_strncpy(buf + off, (char_u *)_("help"), -! (size_t)(SPACE_FOR_DIR - off - 1)); - else - *p = NUL; - -! /* Translate unprintable chars and concatenate. Keep some -! * room for the server name. When there is no room (very long -! * file name) use (...). */ -! if (off < SPACE_FOR_DIR) -! { -! p = transstr(buf + off); -! vim_strncpy(buf + off, p, (size_t)(SPACE_FOR_DIR - off)); -! vim_free(p); -! } -! else -! { -! vim_strncpy(buf + off, (char_u *)"...", -! (size_t)(SPACE_FOR_ARGNR - off)); -! } - STRCAT(buf, ")"); - } - -! append_arg_number(curwin, buf, SPACE_FOR_ARGNR, FALSE); - - #if defined(FEAT_CLIENTSERVER) - if (serverName != NULL) -*** ../vim-7.3.647/src/version.c 2012-09-05 12:16:40.000000000 +0200 ---- src/version.c 2012-09-05 13:29:53.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 648, - /**/ - --- -Q: How does a UNIX Guru do Sex ? -A: unzip;strip;touch;finger;mount;fsck;more;yes;umount;sleep - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.649 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.649 -Problem: When 'clipboard' is set to "unnamed" small deletes end up in the - numbered registers. (Ingo Karkat) -Solution: Use the original register name to decide whether to put a delete - in a numbered register. (Christian Brabandt) -Files: src/ops.c - - -*** ../vim-7.3.648/src/ops.c 2012-08-08 18:01:00.000000000 +0200 ---- src/ops.c 2012-09-05 14:13:32.000000000 +0200 -*************** -*** 1623,1628 **** ---- 1623,1629 ---- - #endif - linenr_T old_lcount = curbuf->b_ml.ml_line_count; - int did_yank = FALSE; -+ int orig_regname = oap->regname; - - if (curbuf->b_ml.ml_flags & ML_EMPTY) /* nothing to do */ - return OK; -*************** -*** 1715,1722 **** - /* - * Put deleted text into register 1 and shift number registers if the - * delete contains a line break, or when a regname has been specified. - */ -! if (oap->regname != 0 || oap->motion_type == MLINE - || oap->line_count > 1 || oap->use_reg_one) - { - y_current = &y_regs[9]; ---- 1716,1725 ---- - /* - * Put deleted text into register 1 and shift number registers if the - * delete contains a line break, or when a regname has been specified. -+ * Use the register name from before adjust_clip_reg() may have -+ * changed it. - */ -! if (orig_regname != 0 || oap->motion_type == MLINE - || oap->line_count > 1 || oap->use_reg_one) - { - y_current = &y_regs[9]; -*** ../vim-7.3.648/src/version.c 2012-09-05 13:30:22.000000000 +0200 ---- src/version.c 2012-09-05 14:17:55.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 649, - /**/ - --- -'I generally avoid temptation unless I can't resist it." - -- Mae West - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.650 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.650 -Problem: Completion after ":help \{-" gives an error message and messes up - the command line. -Solution: Cancel the tag search if the pattern can't be compiled. (Yasuhiro - Matsumoto) -Files: src/tag.c - - -*** ../vim-7.3.649/src/tag.c 2012-01-10 22:26:12.000000000 +0100 ---- src/tag.c 2012-09-05 14:56:52.000000000 +0200 -*************** -*** 1443,1448 **** ---- 1443,1450 ---- - orgpat.len = p_tl; - - prepare_pats(&orgpat, has_re); -+ if (has_re && orgpat.regmatch.regprog == NULL) -+ goto findtag_end; - - #ifdef FEAT_TAG_BINS - /* This is only to avoid a compiler warning for using search_info -*** ../vim-7.3.649/src/version.c 2012-09-05 14:18:42.000000000 +0200 ---- src/version.c 2012-09-05 15:01:07.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 650, - /**/ - --- -GUARD #1: What, ridden on a horse? -ARTHUR: Yes! -GUARD #1: You're using coconuts! -ARTHUR: What? -GUARD #1: You've got two empty halves of coconut and you're bangin' 'em - together. - The Quest for the Holy Grail (Monty Python) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.651 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.651 -Problem: Completion after ":help \{-" gives an error message. -Solution: Prepend a backslash. -Files: src/ex_cmds.c - - -*** ../vim-7.3.650/src/ex_cmds.c 2012-08-08 16:50:40.000000000 +0200 ---- src/ex_cmds.c 2012-09-05 15:10:13.000000000 +0200 -*************** -*** 4851,4857 **** - #ifdef FEAT_EVAL - if (do_count) - { -! /* prevent accidently changing the buffer by a function */ - save_ma = curbuf->b_p_ma; - curbuf->b_p_ma = FALSE; - sandbox++; ---- 4851,4857 ---- - #ifdef FEAT_EVAL - if (do_count) - { -! /* prevent accidentally changing the buffer by a function */ - save_ma = curbuf->b_p_ma; - curbuf->b_p_ma = FALSE; - sandbox++; -*************** -*** 5264,5270 **** - * is assumed to be 'p' if missing. - * - * This is implemented in two passes: first we scan the file for the pattern and -! * set a mark for each line that (not) matches. secondly we execute the command - * for each line that has a mark. This is required because after deleting - * lines we do not know where to search for the next match. - */ ---- 5264,5270 ---- - * is assumed to be 'p' if missing. - * - * This is implemented in two passes: first we scan the file for the pattern and -! * set a mark for each line that (not) matches. Secondly we execute the command - * for each line that has a mark. This is required because after deleting - * lines we do not know where to search for the next match. - */ -*************** -*** 5896,5904 **** - } - else - { -! /* replace "[:...:]" with "\[:...:]"; "[+...]" with "\[++...]" */ -! if (arg[0] == '[' && (arg[1] == ':' -! || (arg[1] == '+' && arg[2] == '+'))) - *d++ = '\\'; - - for (s = arg; *s; ++s) ---- 5896,5909 ---- - } - else - { -! /* Replace: -! * "[:...:]" with "\[:...:]" -! * "[++...]" with "\[++...]" -! * "\{" with "\\{" -! */ -! if ((arg[0] == '[' && (arg[1] == ':' -! || (arg[1] == '+' && arg[2] == '+'))) -! || (arg[0] == '\\' && arg[1] == '{')) - *d++ = '\\'; - - for (s = arg; *s; ++s) -*** ../vim-7.3.650/src/version.c 2012-09-05 15:03:27.000000000 +0200 ---- src/version.c 2012-09-05 15:12:51.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 651, - /**/ - --- -GUARD #1: Where'd you get the coconut? -ARTHUR: We found them. -GUARD #1: Found them? In Mercea? The coconut's tropical! -ARTHUR: What do you mean? -GUARD #1: Well, this is a temperate zone. - The Quest for the Holy Grail (Monty Python) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.652 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.652 -Problem: Workaround for Python crash isn't perfect. -Solution: Change the type of the length argument. (Sean Estabrooks) -Files: src/if_py_both.h - - -*** ../vim-7.3.651/src/if_py_both.h 2012-08-08 16:05:03.000000000 +0200 ---- src/if_py_both.h 2012-09-05 17:15:31.000000000 +0200 -*************** -*** 74,91 **** - static PyObject * - OutputWrite(PyObject *self, PyObject *args) - { -! int len; - char *str = NULL; - int error = ((OutputObject *)(self))->error; - - if (!PyArg_ParseTuple(args, "et#", ENC_OPT, &str, &len)) - return NULL; - -- /* TODO: This works around a gcc optimizer problem and avoids Vim -- * from crashing. Should find a real solution. */ -- if (str == NULL) -- return NULL; -- - Py_BEGIN_ALLOW_THREADS - Python_Lock_Vim(); - writer((writefn)(error ? emsg : msg), (char_u *)str, len); ---- 74,86 ---- - static PyObject * - OutputWrite(PyObject *self, PyObject *args) - { -! Py_ssize_t len; - char *str = NULL; - int error = ((OutputObject *)(self))->error; - - if (!PyArg_ParseTuple(args, "et#", ENC_OPT, &str, &len)) - return NULL; - - Py_BEGIN_ALLOW_THREADS - Python_Lock_Vim(); - writer((writefn)(error ? emsg : msg), (char_u *)str, len); -*** ../vim-7.3.651/src/version.c 2012-09-05 15:15:01.000000000 +0200 ---- src/version.c 2012-09-05 17:27:46.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 652, - /**/ - --- -GUARD #2: It could be carried by an African swallow! -GUARD #1: Oh, yeah, an African swallow maybe, but not a European swallow, - that's my point. -GUARD #2: Oh, yeah, I agree with that... - The Quest for the Holy Grail (Monty Python) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.653 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.653 -Problem: MingW needs build rule for included XPM files. Object directory - for 32 and 64 builds is the same, also for MSVC. -Solution: Add MingW build rule to use included XPM files. Add the CPU or - architecture to the object directory name. (Sergey Khorev) -Files: src/Make_ming.mak, src/Make_mvc.mak, src/xpm/README.txt - - -*** ../vim-7.3.652/src/Make_ming.mak 2012-08-02 21:21:43.000000000 +0200 ---- src/Make_ming.mak 2012-09-05 17:43:11.000000000 +0200 -*************** -*** 1,14 **** -! # Makefile for VIM on Win32, using 'EGCS/mingw32 1.1.2'. - # Info at http://www.mingw.org -! # Also requires 'GNU make 3.77', which you can get through a link -! # to 'JanJaap's page from the above page. - # Get missing libraries from http://gnuwin32.sf.net. - # - # Tested on Win32 NT 4 and Win95. - # -! # To make everything, just 'make -f Make_ming.mak' -! # To make just e.g. gvim.exe, 'make -f Make_ming.mak gvim.exe' -! # After a run, you can 'make -f Make_ming.mak clean' to clean up - # - # NOTE: Sometimes 'GNU Make' will stop after building vimrun.exe -- I think - # it's just run out of memory or something. Run again, and it will continue ---- 1,15 ---- -! # Makefile for VIM on Win32 -! # - # Info at http://www.mingw.org -! # Alternative x86 and 64-builds: http://mingw-w64.sourceforge.net -! # Also requires GNU make, which you can download from the same sites. - # Get missing libraries from http://gnuwin32.sf.net. - # - # Tested on Win32 NT 4 and Win95. - # -! # To make everything, just 'make -f Make_ming.mak'. -! # To make just e.g. gvim.exe, 'make -f Make_ming.mak gvim.exe'. -! # After a run, you can 'make -f Make_ming.mak clean' to clean up. - # - # NOTE: Sometimes 'GNU Make' will stop after building vimrun.exe -- I think - # it's just run out of memory or something. Run again, and it will continue -*************** -*** 20,27 **** - # "make mpress" uses the MPRESS compressor for 32- and 64-bit EXEs: - # http://www.matcode.com/mpress.htm - # -! # Maintained by Ron Aaron <ronaharon@yahoo.com> -! # updated 2003 Jan 20 - - #>>>>> choose options: - # set to yes for a debug build ---- 21,28 ---- - # "make mpress" uses the MPRESS compressor for 32- and 64-bit EXEs: - # http://www.matcode.com/mpress.htm - # -! # Maintained by Ron Aaron <ronaharon@yahoo.com> et al. -! # Updated 2012 Sep 5. - - #>>>>> choose options: - # set to yes for a debug build -*************** -*** 31,62 **** - # set to yes to make gvim, no for vim - GUI=yes - # FEATURES=[TINY | SMALL | NORMAL | BIG | HUGE] -! # set to TINY to make minimal version (few features) - FEATURES=BIG -! # set to one of i386, i486, i586, i686 as the minimum target processor - ARCH=i386 -! # set to yes to cross-compile from unix; no=native Windows - CROSS=no -! # set to path to iconv.h and libiconv.a to enable using 'iconv.dll' - #ICONV="." - ICONV=yes - GETTEXT=yes -! # set to yes to include multibyte support - MBYTE=yes -! # set to yes to include IME support - IME=yes - DYNAMIC_IME=yes -! # set to yes to enable writing a postscript file with :hardcopy - POSTSCRIPT=no -! # set to yes to enable OLE support - OLE=no -! # Set the default $(WINVER) to make it work with pre-Win2k - ifndef WINVER - WINVER = 0x0500 - endif -! # Set to yes to enable Cscope support - CSCOPE=yes -! # Set to yes to enable Netbeans support - NETBEANS=$(GUI) - - ---- 32,64 ---- - # set to yes to make gvim, no for vim - GUI=yes - # FEATURES=[TINY | SMALL | NORMAL | BIG | HUGE] -! # Set to TINY to make minimal version (few features). - FEATURES=BIG -! # Set to one of i386, i486, i586, i686 as the minimum target processor. -! # For amd64/x64 architecture set ARCH=x86-64 . - ARCH=i386 -! # Set to yes to cross-compile from unix; no=native Windows. - CROSS=no -! # Set to path to iconv.h and libiconv.a to enable using 'iconv.dll'. - #ICONV="." - ICONV=yes - GETTEXT=yes -! # Set to yes to include multibyte support. - MBYTE=yes -! # Set to yes to include IME support. - IME=yes - DYNAMIC_IME=yes -! # Set to yes to enable writing a postscript file with :hardcopy. - POSTSCRIPT=no -! # Set to yes to enable OLE support. - OLE=no -! # Set the default $(WINVER) to make it work with pre-Win2k. - ifndef WINVER - WINVER = 0x0500 - endif -! # Set to yes to enable Cscope support. - CSCOPE=yes -! # Set to yes to enable Netbeans support. - NETBEANS=$(GUI) - - -*************** -*** 431,441 **** - endif - endif - -- ifdef XPM - # Only allow XPM for a GUI build. - ifeq (yes, $(GUI)) -! CFLAGS += -DFEAT_XPM_W32 -I $(XPM)/include - endif - endif - - ifeq ($(DEBUG),yes) ---- 433,464 ---- - endif - endif - - # Only allow XPM for a GUI build. - ifeq (yes, $(GUI)) -! -! ifndef XPM -! ifeq ($(ARCH),i386) -! XPM = xpm/x86 -! endif -! ifeq ($(ARCH),i486) -! XPM = xpm/x86 -! endif -! ifeq ($(ARCH),i586) -! XPM = xpm/x86 -! endif -! ifeq ($(ARCH),i686) -! XPM = xpm/x86 - endif -+ ifeq ($(ARCH),x86-64) -+ XPM = xpm/x64 -+ endif -+ endif -+ ifdef XPM -+ ifneq ($(XPM),no) -+ CFLAGS += -DFEAT_XPM_W32 -I $(XPM)/include -I $(XPM)/../include -+ endif -+ endif -+ - endif - - ifeq ($(DEBUG),yes) -*************** -*** 565,574 **** - DEFINES += $(DEF_GUI) - OBJ += $(GUIOBJ) - LFLAGS += -mwindows -! OUTDIR = gobj$(DEBUG_SUFFIX)$(MZSCHEME_SUFFIX) - else - TARGET := vim$(DEBUG_SUFFIX).exe -! OUTDIR = obj$(DEBUG_SUFFIX)$(MZSCHEME_SUFFIX) - endif - - ifdef GETTEXT ---- 588,597 ---- - DEFINES += $(DEF_GUI) - OBJ += $(GUIOBJ) - LFLAGS += -mwindows -! OUTDIR = gobj$(DEBUG_SUFFIX)$(MZSCHEME_SUFFIX)$(ARCH) - else - TARGET := vim$(DEBUG_SUFFIX).exe -! OUTDIR = obj$(DEBUG_SUFFIX)$(MZSCHEME_SUFFIX)$(ARCH) - endif - - ifdef GETTEXT -*** ../vim-7.3.652/src/Make_mvc.mak 2012-08-29 14:18:26.000000000 +0200 ---- src/Make_mvc.mak 2012-09-05 17:33:56.000000000 +0200 -*************** -*** 213,218 **** ---- 213,219 ---- - # We're on Windows 95 - CPU = i386 - !endif # !PROCESSOR_ARCHITECTURE -+ OBJDIR = $(OBJDIR)$(CPU) - - # Build a retail version by default - -*************** -*** 283,292 **** - - !ifndef XPM - # XPM is not set, use the included xpm files, depending on the architecture. -! !if ("$(CPU)" == "AMD64") || ("$(CPU)" == "IA64") - XPM = xpm\x64 -! !else - XPM = xpm\x86 - !endif - !endif - !if "$(XPM)" != "no" ---- 284,295 ---- - - !ifndef XPM - # XPM is not set, use the included xpm files, depending on the architecture. -! !if "$(CPU)" == "AMD64" - XPM = xpm\x64 -! !elseif "$(CPU)" == "i386" - XPM = xpm\x86 -+ !else -+ XPM = no - !endif - !endif - !if "$(XPM)" != "no" -*** ../vim-7.3.652/src/xpm/README.txt 2012-08-29 14:18:26.000000000 +0200 ---- src/xpm/README.txt 2012-09-05 17:35:34.000000000 +0200 -*************** -*** 10,15 **** ---- 10,18 ---- - MinGW: - mingw32-make -f Make_ming.mak GUI=yes CSCOPE=yes XPM=e:/hg/xpm/x86 - -+ MinGW 64 for x64: -+ mingw32-make -f Make_ming.mak GUI=yes ARCH=x86-64 XPM=E:\HG\xpm\x64 -+ - Microsoft Visual C++ on x64 (tested with versions 2008 and 2010): - nmake -f Make_mvc.mak GUI=yes CSCOPE=yes XPM=E:\HG\xpm\x64 - -*** ../vim-7.3.652/src/version.c 2012-09-05 17:28:08.000000000 +0200 ---- src/version.c 2012-09-05 17:53:15.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 653, - /**/ - --- -GUARD #2: Wait a minute -- supposing two swallows carried it together? -GUARD #1: No, they'd have to have it on a line. -GUARD #2: Well, simple! They'd just use a standard creeper! -GUARD #1: What, held under the dorsal guiding feathers? -GUARD #2: Well, why not? - The Quest for the Holy Grail (Monty Python) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.654 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.654 -Problem: When creating a Vim dictionary from Python objects an empty key - might be used. -Solution: Do not use empty keys, throw an IndexError. (ZyX) -Files: src/if_py_both.h - - -*** ../vim-7.3.653/src/if_py_both.h 2012-09-05 17:28:08.000000000 +0200 ---- src/if_py_both.h 2012-09-05 18:35:18.000000000 +0200 -*************** -*** 607,612 **** ---- 607,620 ---- - - static PyTypeObject DictionaryType; - -+ #define DICTKEY_GET_NOTEMPTY(err) \ -+ DICTKEY_GET(err) \ -+ if (*key == NUL) \ -+ { \ -+ PyErr_SetString(PyExc_ValueError, _("empty keys are not allowed")); \ -+ return err; \ -+ } -+ - typedef struct - { - PyObject_HEAD -*************** -*** 659,665 **** - if (valObject == NULL) - return -1; - -! DICTKEY_GET(-1) - - di = dictitem_alloc(key); - ---- 667,673 ---- - if (valObject == NULL) - return -1; - -! DICTKEY_GET_NOTEMPTY(-1) - - di = dictitem_alloc(key); - -*************** -*** 730,736 **** - return -1; - } - -! DICTKEY_GET(-1) - - valObject = PyTuple_GetItem(litem, 1); - if (valObject == NULL) ---- 738,744 ---- - return -1; - } - -! DICTKEY_GET_NOTEMPTY(-1) - - valObject = PyTuple_GetItem(litem, 1); - if (valObject == NULL) -*************** -*** 784,799 **** - DictionaryItem(PyObject *self, PyObject *keyObject) - { - char_u *key; -! dictitem_T *val; - DICTKEY_DECL - -! DICTKEY_GET(NULL) - -! val = dict_find(((DictionaryObject *) (self))->dict, key, -1); - - DICTKEY_UNREF - -! return ConvertToPyObject(&val->di_tv); - } - - static PyInt ---- 792,813 ---- - DictionaryItem(PyObject *self, PyObject *keyObject) - { - char_u *key; -! dictitem_T *di; - DICTKEY_DECL - -! DICTKEY_GET_NOTEMPTY(NULL) -! -! di = dict_find(((DictionaryObject *) (self))->dict, key, -1); - -! if (di == NULL) -! { -! PyErr_SetString(PyExc_IndexError, _("no such key in dictionary")); -! return NULL; -! } - - DICTKEY_UNREF - -! return ConvertToPyObject(&di->di_tv); - } - - static PyInt -*************** -*** 811,817 **** - return -1; - } - -! DICTKEY_GET(-1) - - di = dict_find(d, key, -1); - ---- 825,831 ---- - return -1; - } - -! DICTKEY_GET_NOTEMPTY(-1) - - di = dict_find(d, key, -1); - -*** ../vim-7.3.653/src/version.c 2012-09-05 17:57:34.000000000 +0200 ---- src/version.c 2012-09-05 18:38:43.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 654, - /**/ - --- -MORTICIAN: What? -CUSTOMER: Nothing -- here's your nine pence. -DEAD PERSON: I'm not dead! -MORTICIAN: Here -- he says he's not dead! -CUSTOMER: Yes, he is. -DEAD PERSON: I'm not! - The Quest for the Holy Grail (Monty Python) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.655 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Note: the patch probably doesn't work, since this is a binary file. -Get the file from Mercurial instead. - -Patch 7.3.655 -Problem: 64 bit MingW xpm .a file is missing. -Solution: Add the file. (Sergey Khorev) -Files: src/xpm/x64/lib/libXpm.a - - -*** ../vim-7.3.654/src/xpm/x64/lib/libXpm.a 2012-09-05 18:48:11.000000000 +0200 ---- src/xpm/x64/lib/libXpm.a 2012-09-01 07:46:16.000000000 +0200 -*************** -*** 0 **** ---- 1,238 ---- -+ !<arch> -+ / 1346471174 0 0 0 1492 ` -+ -+ d† -+ ‹ƒ¸ -+ CrBufFrI.o/ 1346471168 0 0 100666 3329 ` -+ d† -+ -+ -+ staticI¼ char * I¾me[] = {‰éL‰¬$ˆ -+ -+ -+ -+ -+ "XPMENEÂ|
ÇFDEXTH‰fÇF" -+ -+ -+ "XPMEXT %s" -+ "%s" -+ -+ p PÀÃà ð -+ CrDatFrI.o/ 1346471168 0 0 100666 3136 ` -+ d† -+ -+ AƒÅÇD$h -+ -+ p PÀÃà ð -+ d† -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ ‹“À -+ -+ ‹“À -+ p PÀÃà ð -+ -+ p PÀÃà ð -+ -+ 20`pPÀ -+ -+ p PÀÃà ð -+ -+ p PÀÃà ð -+ -+ p PÀÃà ð -+ -+ -+ -+ CrIFrBuf.o/ 1346471169 0 0 100666 1452 ` -+ d† -+ 0 `pPÀÃà -+ -+ L -+ d† -+ 0 `pPÀÃà -+ -+ L -+ d† -+ HÇÂ( -+ -+ p PÀÃà ð -+ -+ p PÀÃà ð -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ hashtab.o/ 1346471170 0 0 100666 1598 ` -+ d† -+ -+ ƒÀ‰Cë¸f‹+ºVUUUL‹cA½ýÿÿÿÂt- -+ -+ 20`pPÀ -+ d† -+ d† -+ d† -+ d† -+ 0 `pPÀÃà -+ -+ RdFToDat.o/ 1346471171 0 0 100666 851 ` -+ d† -+ -+ RdFToI.o/ 1346471172 0 0 100666 2495 ` -+ d† -+ HĀ0[é -+ H‹ -+ þÿÿ‹D$(HÂÄp -+ -+ N -+ rgb.o/ 1346471172 0 0 100666 9826 ` -+ d† -+ fÂÂoD9Ã¥3BÂD% -+ -+ -+ -+ -+ -+ p PÀÃà ð -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ d† -+ -+ -+ 9ýv‰øHÂÂ;u
ë -+ -+ p PÀÃà ð -+ p PÀÃà ð -+ p PÀÃà ð -+ d† -+ -+ ‰ÇÃçè?þÿÿø‰D$,é9ÿÿÿ@ -+ -+ d† -+ -+ parse.o/ 1346471173 0 0 100666 9240 ` -+ d† -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ HƒÂ0¶ f‰„LP -+ -+ -+ -+ -+ -+ -+ -+ HƒÂÂÂÿþþþ÷Ñ!È%€€€€té‰ÃÃ驀€ -+ ýÿÿfff.„ -+ -+ p PÀÃà ð -+ -+ p PÀÃà ð -+ -+ p PÀÃà ð -+ p PÀÃà ð -+ -+ -+ -+ -+ -+ d† -+ -+ WrFFrI.o/ 1346471174 0 0 100666 3804 ` -+ d† -+ static char * %s[] = { -+ -+ -+ -+ -+ "XPMEXT %s" -+ "%s" -+ "XPMENDEXT" -+ -+ -+ p PÀÃà ð -\ No newline at end of file -*** ../vim-7.3.654/src/version.c 2012-09-05 18:45:24.000000000 +0200 ---- src/version.c 2012-09-05 18:46:57.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 655, - /**/ - --- -Shit makes the flowers grow and that's beautiful - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.656 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.656 -Problem: Internal error in :pyeval. -Solution: Handle failed object conversion. (ZyX) -Files: src/if_python.c, src/if_python3.c - - -*** ../vim-7.3.655/src/if_python.c 2012-06-30 13:34:29.000000000 +0200 ---- src/if_python.c 2012-09-05 18:52:50.000000000 +0200 -*************** -*** 1025,1032 **** - - static PySequenceMethods BufferAsSeq = { - (PyInquiry) BufferLength, /* sq_length, len(x) */ -! (binaryfunc) 0, /* BufferConcat, */ /* sq_concat, x+y */ -! (PyIntArgFunc) 0, /* BufferRepeat, */ /* sq_repeat, x*n */ - (PyIntArgFunc) BufferItem, /* sq_item, x[i] */ - (PyIntIntArgFunc) BufferSlice, /* sq_slice, x[i:j] */ - (PyIntObjArgProc) BufferAssItem, /* sq_ass_item, x[i]=v */ ---- 1025,1032 ---- - - static PySequenceMethods BufferAsSeq = { - (PyInquiry) BufferLength, /* sq_length, len(x) */ -! (binaryfunc) 0, /* BufferConcat, sq_concat, x+y */ -! (PyIntArgFunc) 0, /* BufferRepeat, sq_repeat, x*n */ - (PyIntArgFunc) BufferItem, /* sq_item, x[i] */ - (PyIntIntArgFunc) BufferSlice, /* sq_slice, x[i:j] */ - (PyIntObjArgProc) BufferAssItem, /* sq_ass_item, x[i]=v */ -*************** -*** 1787,1792 **** ---- 1787,1796 ---- - case VAR_DICT: ++rettv->vval.v_dict->dv_refcount; break; - case VAR_LIST: ++rettv->vval.v_list->lv_refcount; break; - case VAR_FUNC: func_ref(rettv->vval.v_string); break; -+ case VAR_UNKNOWN: -+ rettv->v_type = VAR_NUMBER; -+ rettv->vval.v_number = 0; -+ break; - } - } - -*** ../vim-7.3.655/src/if_python3.c 2012-06-29 16:28:23.000000000 +0200 ---- src/if_python3.c 2012-09-05 18:52:50.000000000 +0200 -*************** -*** 1817,1822 **** ---- 1817,1826 ---- - case VAR_DICT: ++rettv->vval.v_dict->dv_refcount; break; - case VAR_LIST: ++rettv->vval.v_list->lv_refcount; break; - case VAR_FUNC: func_ref(rettv->vval.v_string); break; -+ case VAR_UNKNOWN: -+ rettv->v_type = VAR_NUMBER; -+ rettv->vval.v_number = 0; -+ break; - } - } - -*** ../vim-7.3.655/src/version.c 2012-09-05 18:48:22.000000000 +0200 ---- src/version.c 2012-09-05 18:53:20.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 656, - /**/ - --- -DEAD PERSON: I'm getting better! -CUSTOMER: No, you're not -- you'll be stone dead in a moment. -MORTICIAN: Oh, I can't take him like that -- it's against regulations. - The Quest for the Holy Grail (Monty Python) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.657 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.657 -Problem: Python bindings silently truncate string values containing NUL. -Solution: Fail when a string contains NUL. (ZyX) -Files: src/if_python.c, src/if_python3.c - - -*** ../vim-7.3.656/src/if_python.c 2012-09-05 18:54:37.000000000 +0200 ---- src/if_python.c 2012-09-05 19:02:07.000000000 +0200 -*************** -*** 191,196 **** ---- 191,197 ---- - # define PyRun_SimpleString dll_PyRun_SimpleString - # define PyRun_String dll_PyRun_String - # define PyString_AsString dll_PyString_AsString -+ # define PyString_AsStringAndSize dll_PyString_AsStringAndSize - # define PyString_FromString dll_PyString_FromString - # define PyString_FromStringAndSize dll_PyString_FromStringAndSize - # define PyString_Size dll_PyString_Size -*************** -*** 288,293 **** ---- 289,295 ---- - static int(*dll_PyRun_SimpleString)(char *); - static PyObject *(*dll_PyRun_String)(char *, int, PyObject *, PyObject *); - static char*(*dll_PyString_AsString)(PyObject *); -+ static int(*dll_PyString_AsStringAndSize)(PyObject *, char **, int *); - static PyObject*(*dll_PyString_FromString)(const char *); - static PyObject*(*dll_PyString_FromStringAndSize)(const char *, PyInt); - static PyInt(*dll_PyString_Size)(PyObject *); -*************** -*** 406,411 **** ---- 408,414 ---- - {"PyRun_SimpleString", (PYTHON_PROC*)&dll_PyRun_SimpleString}, - {"PyRun_String", (PYTHON_PROC*)&dll_PyRun_String}, - {"PyString_AsString", (PYTHON_PROC*)&dll_PyString_AsString}, -+ {"PyString_AsStringAndSize", (PYTHON_PROC*)&dll_PyString_AsStringAndSize}, - {"PyString_FromString", (PYTHON_PROC*)&dll_PyString_FromString}, - {"PyString_FromStringAndSize", (PYTHON_PROC*)&dll_PyString_FromStringAndSize}, - {"PyString_Size", (PYTHON_PROC*)&dll_PyString_Size}, -*************** -*** 578,591 **** - static int initialised = 0; - #define PYINITIALISED initialised - -- /* Add conversion from PyInt? */ - #define DICTKEY_GET(err) \ - if (!PyString_Check(keyObject)) \ - { \ - PyErr_SetString(PyExc_TypeError, _("only string keys are allowed")); \ - return err; \ - } \ -! key = (char_u *) PyString_AsString(keyObject); - #define DICTKEY_UNREF - #define DICTKEY_DECL - ---- 581,595 ---- - static int initialised = 0; - #define PYINITIALISED initialised - - #define DICTKEY_GET(err) \ - if (!PyString_Check(keyObject)) \ - { \ - PyErr_SetString(PyExc_TypeError, _("only string keys are allowed")); \ - return err; \ - } \ -! if (PyString_AsStringAndSize(keyObject, (char **) &key, NULL) == -1) \ -! return err; -! - #define DICTKEY_UNREF - #define DICTKEY_DECL - -*** ../vim-7.3.656/src/if_python3.c 2012-09-05 18:54:37.000000000 +0200 ---- src/if_python3.c 2012-09-05 19:02:07.000000000 +0200 -*************** -*** 172,177 **** ---- 172,178 ---- - # define PyUnicode_AsEncodedString py3_PyUnicode_AsEncodedString - # undef PyBytes_AsString - # define PyBytes_AsString py3_PyBytes_AsString -+ # define PyBytes_AsStringAndSize py3_PyBytes_AsStringAndSize - # undef PyBytes_FromString - # define PyBytes_FromString py3_PyBytes_FromString - # define PyFloat_FromDouble py3_PyFloat_FromDouble -*************** -*** 273,278 **** ---- 274,280 ---- - static char* (*py3__PyUnicode_AsString)(PyObject *unicode); - static PyObject* (*py3_PyUnicode_AsEncodedString)(PyObject *unicode, const char* encoding, const char* errors); - static char* (*py3_PyBytes_AsString)(PyObject *bytes); -+ static int (*py3_PyBytes_AsStringAndSize)(PyObject *bytes, char **buffer, int *length); - static PyObject* (*py3_PyBytes_FromString)(char *str); - static PyObject* (*py3_PyFloat_FromDouble)(double num); - static double (*py3_PyFloat_AsDouble)(PyObject *); -*************** -*** 379,384 **** ---- 381,387 ---- - {"PyImport_AppendInittab", (PYTHON_PROC*)&py3_PyImport_AppendInittab}, - {"_PyUnicode_AsString", (PYTHON_PROC*)&py3__PyUnicode_AsString}, - {"PyBytes_AsString", (PYTHON_PROC*)&py3_PyBytes_AsString}, -+ {"PyBytes_AsStringAndSize", (PYTHON_PROC*)&py3_PyBytes_AsStringAndSize}, - {"PyBytes_FromString", (PYTHON_PROC*)&py3_PyBytes_FromString}, - {"PyFloat_FromDouble", (PYTHON_PROC*)&py3_PyFloat_FromDouble}, - {"PyFloat_AsDouble", (PYTHON_PROC*)&py3_PyFloat_AsDouble}, -*************** -*** 544,560 **** - - #define PYINITIALISED py3initialised - -! /* Add conversion from PyInt? */ - #define DICTKEY_GET(err) \ - if (PyBytes_Check(keyObject)) \ -! key = (char_u *) PyBytes_AsString(keyObject); \ - else if (PyUnicode_Check(keyObject)) \ - { \ - bytes = PyString_AsBytes(keyObject); \ - if (bytes == NULL) \ - return err; \ -! key = (char_u *) PyBytes_AsString(bytes); \ -! if (key == NULL) \ - return err; \ - } \ - else \ ---- 547,566 ---- - - #define PYINITIALISED py3initialised - -! #define DICTKEY_DECL PyObject *bytes = NULL; -! - #define DICTKEY_GET(err) \ - if (PyBytes_Check(keyObject)) \ -! { \ -! if (PyBytes_AsStringAndSize(keyObject, (char **) &key, NULL) == -1) \ -! return err; \ -! } \ - else if (PyUnicode_Check(keyObject)) \ - { \ - bytes = PyString_AsBytes(keyObject); \ - if (bytes == NULL) \ - return err; \ -! if (PyBytes_AsStringAndSize(bytes, (char **) &key, NULL) == -1) \ - return err; \ - } \ - else \ -*************** -*** 562,573 **** - PyErr_SetString(PyExc_TypeError, _("only string keys are allowed")); \ - return err; \ - } - #define DICTKEY_UNREF \ - if (bytes != NULL) \ - Py_XDECREF(bytes); - -- #define DICTKEY_DECL PyObject *bytes = NULL; -- - /* - * Include the code shared with if_python.c - */ ---- 568,578 ---- - PyErr_SetString(PyExc_TypeError, _("only string keys are allowed")); \ - return err; \ - } -+ - #define DICTKEY_UNREF \ - if (bytes != NULL) \ - Py_XDECREF(bytes); - - /* - * Include the code shared with if_python.c - */ -*** ../vim-7.3.656/src/version.c 2012-09-05 18:54:37.000000000 +0200 ---- src/version.c 2012-09-05 19:03:03.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 657, - /**/ - --- -Have you heard about the new Barbie doll? It's called Divorce -Barbie. It comes with all of Ken's stuff. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.658 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.658 -Problem: NUL bytes truncate strings when converted from Python. -Solution: Handle truncation as an error. (ZyX) -Files: src/if_py_both.h, src/if_python3.c - - -*** ../vim-7.3.657/src/if_py_both.h 2012-09-05 18:45:24.000000000 +0200 ---- src/if_py_both.h 2012-09-05 19:05:27.000000000 +0200 -*************** -*** 2530,2537 **** - #if PY_MAJOR_VERSION >= 3 - else if (PyBytes_Check(obj)) - { -! char_u *result = (char_u *) PyBytes_AsString(obj); - - if (result == NULL) - return -1; - ---- 2530,2539 ---- - #if PY_MAJOR_VERSION >= 3 - else if (PyBytes_Check(obj)) - { -! char_u *result; - -+ if (PyString_AsStringAndSize(obj, (char **) &result, NULL) == -1) -+ return -1; - if (result == NULL) - return -1; - -*************** -*** 2549,2555 **** - if (bytes == NULL) - return -1; - -! result = (char_u *) PyBytes_AsString(bytes); - if (result == NULL) - return -1; - ---- 2551,2558 ---- - if (bytes == NULL) - return -1; - -! if(PyString_AsStringAndSize(bytes, (char **) &result, NULL) == -1) -! return -1; - if (result == NULL) - return -1; - -*************** -*** 2572,2578 **** - if (bytes == NULL) - return -1; - -! result=(char_u *) PyString_AsString(bytes); - if (result == NULL) - return -1; - ---- 2575,2582 ---- - if (bytes == NULL) - return -1; - -! if(PyString_AsStringAndSize(bytes, (char **) &result, NULL) == -1) -! return -1; - if (result == NULL) - return -1; - -*************** -*** 2587,2594 **** - } - else if (PyString_Check(obj)) - { -! char_u *result = (char_u *) PyString_AsString(obj); - - if (result == NULL) - return -1; - ---- 2591,2600 ---- - } - else if (PyString_Check(obj)) - { -! char_u *result; - -+ if(PyString_AsStringAndSize(obj, (char **) &result, NULL) == -1) -+ return -1; - if (result == NULL) - return -1; - -*** ../vim-7.3.657/src/if_python3.c 2012-09-05 19:03:51.000000000 +0200 ---- src/if_python3.c 2012-09-05 19:05:27.000000000 +0200 -*************** -*** 85,90 **** ---- 85,91 ---- - #define PyString_AsString(obj) PyBytes_AsString(obj) - #define PyString_Size(obj) PyBytes_GET_SIZE(bytes) - #define PyString_FromString(repr) PyUnicode_FromString(repr) -+ #define PyString_AsStringAndSize(obj, buffer, len) PyBytes_AsStringAndSize(obj, buffer, len) - - #if defined(DYNAMIC_PYTHON3) || defined(PROTO) - -*************** -*** 552,558 **** - #define DICTKEY_GET(err) \ - if (PyBytes_Check(keyObject)) \ - { \ -! if (PyBytes_AsStringAndSize(keyObject, (char **) &key, NULL) == -1) \ - return err; \ - } \ - else if (PyUnicode_Check(keyObject)) \ ---- 553,559 ---- - #define DICTKEY_GET(err) \ - if (PyBytes_Check(keyObject)) \ - { \ -! if (PyString_AsStringAndSize(keyObject, (char **) &key, NULL) == -1) \ - return err; \ - } \ - else if (PyUnicode_Check(keyObject)) \ -*************** -*** 560,566 **** - bytes = PyString_AsBytes(keyObject); \ - if (bytes == NULL) \ - return err; \ -! if (PyBytes_AsStringAndSize(bytes, (char **) &key, NULL) == -1) \ - return err; \ - } \ - else \ ---- 561,567 ---- - bytes = PyString_AsBytes(keyObject); \ - if (bytes == NULL) \ - return err; \ -! if (PyString_AsStringAndSize(bytes, (char **) &key, NULL) == -1) \ - return err; \ - } \ - else \ -*** ../vim-7.3.657/src/version.c 2012-09-05 19:03:51.000000000 +0200 ---- src/version.c 2012-09-05 19:07:40.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 658, - /**/ - --- -You know you use Vim too much when you have this alias in your -~/.bashrc file: alias :e=/bin/vim (Eljay Love-Jensen) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.659 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.659 -Problem: Recent Python changes are not tested. -Solution: Add tests for Python bindings. (ZyX) -Files: src/testdir/test86.in, src/testdir/test86.ok, - src/testdir/test87.in, src/testdir/test87.ok - - -*** ../vim-7.3.658/src/testdir/test86.in 2012-06-29 12:54:32.000000000 +0200 ---- src/testdir/test86.in 2012-09-05 19:11:36.000000000 +0200 -*************** -*** 176,203 **** - :else - : $put ='[0.0, 0.0]' - :endif - :" - :" pyeval() - :let l=pyeval('range(3)') - :$put =string(l) - :let d=pyeval('{"a": "b", "c": 1, "d": ["e"]}') - :$put =sort(items(d)) -- :try -- : let undef=pyeval('undefined_name') -- :catch -- : $put =v:exception[:13] -- :endtry -- :try -- : let vim=pyeval('vim') -- :catch -- : $put =v:exception[:13] -- :endtry - :if has('float') - : let f=pyeval('0.0') - : $put =string(f) - :else - : $put ='0.0' - :endif - :endfun - :" - :call Test() ---- 176,237 ---- - :else - : $put ='[0.0, 0.0]' - :endif -+ :let messages=[] -+ :py <<EOF -+ d=vim.bindeval('{}') -+ m=vim.bindeval('messages') -+ try: -+ d['abc'] -+ except Exception as e: -+ m.extend([e.__class__.__name__]) -+ -+ try: -+ d['abc']="\0" -+ except Exception as e: -+ m.extend([e.__class__.__name__]) -+ -+ try: -+ d['abc']=vim -+ except Exception as e: -+ m.extend([e.__class__.__name__]) -+ -+ try: -+ d['']=1 -+ except Exception as e: -+ m.extend([e.__class__.__name__]) -+ -+ try: -+ d['a\0b']=1 -+ except Exception as e: -+ m.extend([e.__class__.__name__]) -+ -+ try: -+ d[b'a\0b']=1 -+ except Exception as e: -+ m.extend([e.__class__.__name__]) -+ EOF -+ :$put =messages - :" - :" pyeval() - :let l=pyeval('range(3)') - :$put =string(l) - :let d=pyeval('{"a": "b", "c": 1, "d": ["e"]}') - :$put =sort(items(d)) - :if has('float') - : let f=pyeval('0.0') - : $put =string(f) - :else - : $put ='0.0' - :endif -+ :" Invalid values: -+ :for e in ['"\0"', '{"\0": 1}', 'undefined_name', 'vim'] -+ : try -+ : let v=pyeval(e) -+ : catch -+ : let toput=e.":\t".v:exception[:13] -+ : $put =toput -+ : endtry -+ :endfor - :endfun - :" - :call Test() -*** ../vim-7.3.658/src/testdir/test86.ok 2012-06-29 12:54:32.000000000 +0200 ---- src/testdir/test86.ok 2012-09-05 19:11:36.000000000 +0200 -*************** -*** 38,47 **** - Vim(python):E725: - Vim(python):E117: - [0.0, 0.0] - [0, 1, 2] - ['a', 'b'] - ['c', 1] - ['d', ['e']] -- Vim(let):E858: -- Vim(let):E859: - 0.0 ---- 38,55 ---- - Vim(python):E725: - Vim(python):E117: - [0.0, 0.0] -+ IndexError -+ TypeError -+ TypeError -+ ValueError -+ TypeError -+ TypeError - [0, 1, 2] - ['a', 'b'] - ['c', 1] - ['d', ['e']] - 0.0 -+ "\0": Vim(let):E859: -+ {"\0": 1}: Vim(let):E859: -+ undefined_name: Vim(let):E858: -+ vim: Vim(let):E859: -*** ../vim-7.3.658/src/testdir/test87.in 2012-06-29 12:54:32.000000000 +0200 ---- src/testdir/test87.in 2012-09-05 19:11:36.000000000 +0200 -*************** -*** 176,203 **** - :else - : $put ='[0.0, 0.0]' - :endif - :" - :" py3eval() - :let l=py3eval('[0, 1, 2]') - :$put =string(l) - :let d=py3eval('{"a": "b", "c": 1, "d": ["e"]}') - :$put =sort(items(d)) -- :try -- : let undef=py3eval('undefined_name') -- :catch -- : $put =v:exception[:13] -- :endtry -- :try -- : let vim=py3eval('vim') -- :catch -- : $put =v:exception[:13] -- :endtry - :if has('float') - : let f=py3eval('0.0') - : $put =string(f) - :else - : $put ='0.0' - :endif - :endfun - :" - :call Test() ---- 176,237 ---- - :else - : $put ='[0.0, 0.0]' - :endif -+ :let messages=[] -+ :py3 <<EOF -+ d=vim.bindeval('{}') -+ m=vim.bindeval('messages') -+ try: -+ d['abc'] -+ except Exception as e: -+ m.extend([e.__class__.__name__]) -+ -+ try: -+ d['abc']="\0" -+ except Exception as e: -+ m.extend([e.__class__.__name__]) -+ -+ try: -+ d['abc']=vim -+ except Exception as e: -+ m.extend([e.__class__.__name__]) -+ -+ try: -+ d['']=1 -+ except Exception as e: -+ m.extend([e.__class__.__name__]) -+ -+ try: -+ d['a\0b']=1 -+ except Exception as e: -+ m.extend([e.__class__.__name__]) -+ -+ try: -+ d[b'a\0b']=1 -+ except Exception as e: -+ m.extend([e.__class__.__name__]) -+ EOF -+ :$put =messages - :" - :" py3eval() - :let l=py3eval('[0, 1, 2]') - :$put =string(l) - :let d=py3eval('{"a": "b", "c": 1, "d": ["e"]}') - :$put =sort(items(d)) - :if has('float') - : let f=py3eval('0.0') - : $put =string(f) - :else - : $put ='0.0' - :endif -+ :" Invalid values: -+ :for e in ['"\0"', '{"\0": 1}', 'undefined_name', 'vim'] -+ : try -+ : let v=py3eval(e) -+ : catch -+ : let toput=e.":\t".v:exception[:13] -+ : $put =toput -+ : endtry -+ :endfor - :endfun - :" - :call Test() -*** ../vim-7.3.658/src/testdir/test87.ok 2012-06-29 12:54:32.000000000 +0200 ---- src/testdir/test87.ok 2012-09-05 19:11:36.000000000 +0200 -*************** -*** 38,47 **** - Vim(py3):E725: - Vim(py3):E117: - [0.0, 0.0] - [0, 1, 2] - ['a', 'b'] - ['c', 1] - ['d', ['e']] -- Vim(let):E860: -- Vim(let):E861: - 0.0 ---- 38,55 ---- - Vim(py3):E725: - Vim(py3):E117: - [0.0, 0.0] -+ IndexError -+ TypeError -+ TypeError -+ ValueError -+ TypeError -+ TypeError - [0, 1, 2] - ['a', 'b'] - ['c', 1] - ['d', ['e']] - 0.0 -+ "\0": Vim(let):E861: -+ {"\0": 1}: Vim(let):E861: -+ undefined_name: Vim(let):E860: -+ vim: Vim(let):E861: -*** ../vim-7.3.658/src/version.c 2012-09-05 19:09:06.000000000 +0200 ---- src/version.c 2012-09-05 19:16:52.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 659, - /**/ - --- -DEAD PERSON: I don't want to go in the cart! -CUSTOMER: Oh, don't be such a baby. -MORTICIAN: I can't take him... -DEAD PERSON: I feel fine! -CUSTOMER: Oh, do us a favor... -MORTICIAN: I can't. - The Quest for the Holy Grail (Monty Python) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.660 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.660 -Problem: ":help !" jumps to help for ":!". -Solution: Adjust check for tag header line. (Andy Wokula) -Files: src/tag.c - - -*** ../vim-7.3.659/src/tag.c 2012-09-05 15:03:27.000000000 +0200 ---- src/tag.c 2012-09-12 18:10:01.000000000 +0200 -*************** -*** 1797,1803 **** - */ - if (state == TS_START) - { -! if (STRNCMP(lbuf, "!_TAG_", 6) <= 0) - { - /* - * Read header line. ---- 1797,1803 ---- - */ - if (state == TS_START) - { -! if (STRNCMP(lbuf, "!_TAG_", 6) == 0) - { - /* - * Read header line. -*** ../vim-7.3.659/src/version.c 2012-09-05 19:17:37.000000000 +0200 ---- src/version.c 2012-09-12 18:18:30.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 660, - /**/ - --- -Q: How does a UNIX Guru pick up a girl? -A: look; grep; which; eval; nice; uname; talk; date; - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.661 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.661 (after 7.3.652) -Problem: SEGV in Python code. -Solution: Initialize len to zero. Use the right function depending on - version. (Maxim Philippov) -Files: src/if_py_both.h, src/if_python.c, src/if_python3.c - - -*** ../vim-7.3.660/src/if_py_both.h 2012-09-05 19:09:06.000000000 +0200 ---- src/if_py_both.h 2012-09-12 19:50:07.000000000 +0200 -*************** -*** 74,80 **** - static PyObject * - OutputWrite(PyObject *self, PyObject *args) - { -! Py_ssize_t len; - char *str = NULL; - int error = ((OutputObject *)(self))->error; - ---- 74,80 ---- - static PyObject * - OutputWrite(PyObject *self, PyObject *args) - { -! Py_ssize_t len = 0; - char *str = NULL; - int error = ((OutputObject *)(self))->error; - -*** ../vim-7.3.660/src/if_python.c 2012-09-05 19:03:51.000000000 +0200 ---- src/if_python.c 2012-09-12 19:52:10.000000000 +0200 -*************** -*** 44,51 **** - # undef _XOPEN_SOURCE /* pyconfig.h defines it as well. */ - #endif - -- #define PY_SSIZE_T_CLEAN -- - #include <Python.h> - #if defined(MACOS) && !defined(MACOS_X_UNIX) - # include "macglue.h" ---- 44,49 ---- -*************** -*** 54,59 **** ---- 52,61 ---- - #undef main /* Defined in python.h - aargh */ - #undef HAVE_FCNTL_H /* Clash with os_win32.h */ - -+ #if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02050000 -+ # define PY_SSIZE_T_CLEAN -+ #endif -+ - static void init_structs(void); - - #define PyBytes_FromString PyString_FromString -*************** -*** 358,365 **** ---- 360,374 ---- - PYTHON_PROC *ptr; - } python_funcname_table[] = - { -+ #ifndef PY_SSIZE_T_CLEAN - {"PyArg_Parse", (PYTHON_PROC*)&dll_PyArg_Parse}, - {"PyArg_ParseTuple", (PYTHON_PROC*)&dll_PyArg_ParseTuple}, -+ {"Py_BuildValue", (PYTHON_PROC*)&dll_Py_BuildValue}, -+ #else -+ {"_PyArg_Parse_SizeT", (PYTHON_PROC*)&dll_PyArg_Parse}, -+ {"_PyArg_ParseTuple_SizeT", (PYTHON_PROC*)&dll_PyArg_ParseTuple}, -+ {"_Py_BuildValue_SizeT", (PYTHON_PROC*)&dll_Py_BuildValue}, -+ #endif - {"PyMem_Free", (PYTHON_PROC*)&dll_PyMem_Free}, - {"PyMem_Malloc", (PYTHON_PROC*)&dll_PyMem_Malloc}, - {"PyDict_SetItemString", (PYTHON_PROC*)&dll_PyDict_SetItemString}, -*************** -*** 422,428 **** - {"PySys_SetArgv", (PYTHON_PROC*)&dll_PySys_SetArgv}, - {"PyType_Type", (PYTHON_PROC*)&dll_PyType_Type}, - {"PyType_Ready", (PYTHON_PROC*)&dll_PyType_Ready}, -- {"Py_BuildValue", (PYTHON_PROC*)&dll_Py_BuildValue}, - {"Py_FindMethod", (PYTHON_PROC*)&dll_Py_FindMethod}, - # if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02050000 \ - && SIZEOF_SIZE_T != SIZEOF_INT ---- 431,436 ---- -*** ../vim-7.3.660/src/if_python3.c 2012-09-05 19:09:06.000000000 +0200 ---- src/if_python3.c 2012-09-12 19:52:10.000000000 +0200 -*************** -*** 42,49 **** - # undef _DEBUG - #endif - -- #define PY_SSIZE_T_CLEAN -- - #ifdef F_BLANK - # undef F_BLANK - #endif ---- 42,47 ---- -*************** -*** 66,71 **** ---- 64,73 ---- - #undef main /* Defined in python.h - aargh */ - #undef HAVE_FCNTL_H /* Clash with os_win32.h */ - -+ #if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02050000 -+ # define PY_SSIZE_T_CLEAN -+ #endif -+ - static void init_structs(void); - - /* The "surrogateescape" error handler is new in Python 3.1 */ -*************** -*** 328,334 **** ---- 330,342 ---- - {"PySys_SetArgv", (PYTHON_PROC*)&py3_PySys_SetArgv}, - {"Py_SetPythonHome", (PYTHON_PROC*)&py3_Py_SetPythonHome}, - {"Py_Initialize", (PYTHON_PROC*)&py3_Py_Initialize}, -+ #ifndef PY_SSIZE_T_CLEAN - {"PyArg_ParseTuple", (PYTHON_PROC*)&py3_PyArg_ParseTuple}, -+ {"Py_BuildValue", (PYTHON_PROC*)&py3_Py_BuildValue}, -+ #else -+ {"_PyArg_ParseTuple_SizeT", (PYTHON_PROC*)&py3_PyArg_ParseTuple}, -+ {"_Py_BuildValue_SizeT", (PYTHON_PROC*)&py3_Py_BuildValue}, -+ #endif - {"PyMem_Free", (PYTHON_PROC*)&py3_PyMem_Free}, - {"PyMem_Malloc", (PYTHON_PROC*)&py3_PyMem_Malloc}, - {"PyList_New", (PYTHON_PROC*)&py3_PyList_New}, -*************** -*** 364,370 **** - {"PyObject_GetIter", (PYTHON_PROC*)&py3_PyObject_GetIter}, - {"PyLong_FromLong", (PYTHON_PROC*)&py3_PyLong_FromLong}, - {"PyDict_New", (PYTHON_PROC*)&py3_PyDict_New}, -- {"Py_BuildValue", (PYTHON_PROC*)&py3_Py_BuildValue}, - {"PyType_Ready", (PYTHON_PROC*)&py3_PyType_Ready}, - {"PyDict_SetItemString", (PYTHON_PROC*)&py3_PyDict_SetItemString}, - {"PyLong_AsLong", (PYTHON_PROC*)&py3_PyLong_AsLong}, ---- 372,377 ---- -*** ../vim-7.3.660/src/version.c 2012-09-12 18:19:39.000000000 +0200 ---- src/version.c 2012-09-12 19:53:52.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 661, - /**/ - --- -Courtroom Quote #19: -Q: Doctor, how many autopsies have you performed on dead people? -A: All my autopsies have been performed on dead people. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.662 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.662 -Problem: Can't build Ruby interface with Ruby 1.9.3. -Solution: Add missing functions. (V. Ondruch) -Files: src/if_ruby.c - - -*** ../vim-7.3.661/src/if_ruby.c 2012-04-25 12:28:05.000000000 +0200 ---- src/if_ruby.c 2012-09-18 16:31:45.000000000 +0200 -*************** -*** 178,183 **** ---- 178,186 ---- - #define rb_hash_new dll_rb_hash_new - #define rb_inspect dll_rb_inspect - #define rb_int2inum dll_rb_int2inum -+ #define rb_fix2int dll_rb_fix2int -+ #define rb_num2int dll_rb_num2int -+ #define rb_num2uint dll_rb_num2uint - #define rb_lastline_get dll_rb_lastline_get - #define rb_lastline_set dll_rb_lastline_set - #define rb_load_protect dll_rb_load_protect -*************** -*** 268,274 **** - static VALUE (*dll_rb_hash_new) (void); - static VALUE (*dll_rb_inspect) (VALUE); - static VALUE (*dll_rb_int2inum) (long); -! static VALUE (*dll_rb_int2inum) (long); - static VALUE (*dll_rb_lastline_get) (void); - static void (*dll_rb_lastline_set) (VALUE); - static void (*dll_rb_load_protect) (VALUE, int, int*); ---- 271,279 ---- - static VALUE (*dll_rb_hash_new) (void); - static VALUE (*dll_rb_inspect) (VALUE); - static VALUE (*dll_rb_int2inum) (long); -! static long (*dll_rb_fix2int) (VALUE); -! static long (*dll_rb_num2int) (VALUE); -! static unsigned long (*dll_rb_num2uint) (VALUE); - static VALUE (*dll_rb_lastline_get) (void); - static void (*dll_rb_lastline_set) (VALUE); - static void (*dll_rb_load_protect) (VALUE, int, int*); -*************** -*** 377,382 **** ---- 382,390 ---- - {"rb_hash_new", (RUBY_PROC*)&dll_rb_hash_new}, - {"rb_inspect", (RUBY_PROC*)&dll_rb_inspect}, - {"rb_int2inum", (RUBY_PROC*)&dll_rb_int2inum}, -+ {"rb_fix2int", (RUBY_PROC*)&dll_rb_fix2int}, -+ {"rb_num2int", (RUBY_PROC*)&dll_rb_num2int}, -+ {"rb_num2uint", (RUBY_PROC*)&dll_rb_num2uint}, - {"rb_lastline_get", (RUBY_PROC*)&dll_rb_lastline_get}, - {"rb_lastline_set", (RUBY_PROC*)&dll_rb_lastline_set}, - {"rb_load_protect", (RUBY_PROC*)&dll_rb_load_protect}, -*** ../vim-7.3.661/src/version.c 2012-09-12 20:21:38.000000000 +0200 ---- src/version.c 2012-09-18 16:35:53.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 662, - /**/ - --- -FATHER: We are here today to witness the union of two young people in the - joyful bond of the holy wedlock. Unfortunately, one of them, my son - Herbert, has just fallen to his death. - [Murmurs from CROWD; the BRIDE smiles with relief, coughs.] - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.663 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.663 -Problem: End of color scheme name not clear in E185. (Aaron Lewis) -Solution: Put the name in single quotes. -Files: src/ex_docmd.c - - -*** ../vim-7.3.662/src/ex_docmd.c 2012-08-23 18:43:06.000000000 +0200 ---- src/ex_docmd.c 2012-09-14 20:49:29.000000000 +0200 -*************** -*** 6466,6472 **** - #endif - } - else if (load_colors(eap->arg) == FAIL) -! EMSG2(_("E185: Cannot find color scheme %s"), eap->arg); - } - - static void ---- 6466,6472 ---- - #endif - } - else if (load_colors(eap->arg) == FAIL) -! EMSG2(_("E185: Cannot find color scheme '%s'"), eap->arg); - } - - static void -*** ../vim-7.3.662/src/version.c 2012-09-18 16:36:26.000000000 +0200 ---- src/version.c 2012-09-18 16:44:57.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 663, - /**/ - --- -Yesterday is history. -Tomorrow is a mystery. -Today is a gift. -That's why it is called 'present'. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.664 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.664 -Problem: Buffer overflow in unescaping text. (Raymond Ko) -Solution: Limit check for multi-byte character to 4 bytes. -Files: src/mbyte.c - - -*** ../vim-7.3.663/src/mbyte.c 2012-06-01 17:46:52.000000000 +0200 ---- src/mbyte.c 2012-09-18 17:53:05.000000000 +0200 -*************** -*** 3793,3805 **** - mb_unescape(pp) - char_u **pp; - { -! static char_u buf[MB_MAXBYTES + 1]; -! int n, m = 0; - char_u *str = *pp; - - /* Must translate K_SPECIAL KS_SPECIAL KE_FILLER to K_SPECIAL and CSI -! * KS_EXTRA KE_CSI to CSI. */ -! for (n = 0; str[n] != NUL && m <= MB_MAXBYTES; ++n) - { - if (str[n] == K_SPECIAL - && str[n + 1] == KS_SPECIAL ---- 3793,3807 ---- - mb_unescape(pp) - char_u **pp; - { -! static char_u buf[6]; -! int n; -! int m = 0; - char_u *str = *pp; - - /* Must translate K_SPECIAL KS_SPECIAL KE_FILLER to K_SPECIAL and CSI -! * KS_EXTRA KE_CSI to CSI. -! * Maximum length of a utf-8 character is 4 bytes. */ -! for (n = 0; str[n] != NUL && m < 4; ++n) - { - if (str[n] == K_SPECIAL - && str[n + 1] == KS_SPECIAL -*************** -*** 3836,3841 **** ---- 3838,3847 ---- - *pp = str + n + 1; - return buf; - } -+ -+ /* Bail out quickly for ASCII. */ -+ if (buf[0] < 128) -+ break; - } - return NULL; - } -*** ../vim-7.3.663/src/version.c 2012-09-18 16:47:00.000000000 +0200 ---- src/version.c 2012-09-18 18:01:14.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 664, - /**/ - --- -There are three kinds of people: Those who can count & those who can't. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.665 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.665 -Problem: MSVC 11 is not supported. -Solution: Recognize MSVC 11. (Raymond Ko) -Files: src/Make_mvc.mak - - -*** ../vim-7.3.664/src/Make_mvc.mak 2012-09-05 17:57:34.000000000 +0200 ---- src/Make_mvc.mak 2012-09-18 18:24:48.000000000 +0200 -*************** -*** 395,400 **** ---- 395,403 ---- - !if "$(_NMAKE_VER)" == "10.00.30319.01" - MSVCVER = 10.0 - !endif -+ !if "$(_NMAKE_VER)" == "11.00.50727.1" -+ MSVCVER = 11.0 -+ !endif - !endif - - # Abort bulding VIM if version of VC is unrecognised. -*************** -*** 409,415 **** - !endif - - # Convert processor ID to MVC-compatible number -! !if ("$(MSVCVER)" != "8.0") && ("$(MSVCVER)" != "9.0") && ("$(MSVCVER)" != "10.0") - !if "$(CPUNR)" == "i386" - CPUARG = /G3 - !elseif "$(CPUNR)" == "i486" ---- 412,418 ---- - !endif - - # Convert processor ID to MVC-compatible number -! !if ("$(MSVCVER)" != "8.0") && ("$(MSVCVER)" != "9.0") && ("$(MSVCVER)" != "10.0") && ("$(MSVCVER)" != "11.0") - !if "$(CPUNR)" == "i386" - CPUARG = /G3 - !elseif "$(CPUNR)" == "i486" -*************** -*** 443,449 **** - OPTFLAG = /Ox - !endif - -! !if ("$(MSVCVER)" == "8.0") || ("$(MSVCVER)" == "9.0") || ("$(MSVCVER)" == "10.0") - # Use link time code generation if not worried about size - !if "$(OPTIMIZE)" != "SPACE" - OPTFLAG = $(OPTFLAG) /GL ---- 446,452 ---- - OPTFLAG = /Ox - !endif - -! !if ("$(MSVCVER)" == "8.0") || ("$(MSVCVER)" == "9.0") || ("$(MSVCVER)" == "10.0") || ("$(MSVCVER)" == "11.0") - # Use link time code generation if not worried about size - !if "$(OPTIMIZE)" != "SPACE" - OPTFLAG = $(OPTFLAG) /GL -*** ../vim-7.3.664/src/version.c 2012-09-18 18:03:33.000000000 +0200 ---- src/version.c 2012-09-18 18:26:16.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 665, - /**/ - --- -There are 10 kinds of people: Those who understand binary and those who don't. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.6 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.666 -Problem: With MSVC 11 Win32.mak is not found. -Solution: Add the SDK_INCLUDE_DIR variable. (Raymond Ko) -Files: src/Make_mvc.mak - - -*** ../vim-7.3.665/src/Make_mvc.mak 2012-09-18 18:27:07.000000000 +0200 ---- src/Make_mvc.mak 2012-09-18 21:58:09.000000000 +0200 -*************** -*** 1,7 **** - # Makefile for Vim on Win32 (Windows NT/2000/XP/2003 and Windows 95/98/Me) - # and Win64, using the Microsoft Visual C++ compilers. Known to work with - # VC5, VC6 (VS98), VC7.0 (VS2002), VC7.1 (VS2003), VC8 (VS2005), -! # VC9 (VS2008), and VC10 (VS2010). - # - # To build using other Windows compilers, see INSTALLpc.txt - # ---- 1,7 ---- - # Makefile for Vim on Win32 (Windows NT/2000/XP/2003 and Windows 95/98/Me) - # and Win64, using the Microsoft Visual C++ compilers. Known to work with - # VC5, VC6 (VS98), VC7.0 (VS2002), VC7.1 (VS2003), VC8 (VS2005), -! # VC9 (VS2008), VC10 (VS2010) and VC11 (VS2012) - # - # To build using other Windows compilers, see INSTALLpc.txt - # -*************** -*** 15,20 **** ---- 15,23 ---- - # This will build the console version of Vim with no additional interfaces. - # To add features, define any of the following: - # -+ # For MSVC 11 you need to specify where the Win32.mak file is, e.g.: -+ # SDK_INCLUDE_DIR="C:\Program Files\Microsoft SDKs\Windows\v7.1\Include" -+ # - # !!!! After changing features do "nmake clean" first !!!! - # - # Feature Set: FEATURES=[TINY, SMALL, NORMAL, BIG, HUGE] (default is BIG) -*************** -*** 227,233 **** ---- 230,241 ---- - - # Get all sorts of useful, standard macros from the Platform SDK. - -+ !ifdef SDK_INCLUDE_DIR -+ !include $(SDK_INCLUDE_DIR)\Win32.mak -+ !else - !include <Win32.mak> -+ !endif -+ - - # Flag to turn on Win64 compatibility warnings for VC7.x and VC8. - WP64CHECK = /Wp64 -*************** -*** 911,917 **** - - # Report link time code generation progress if used. - !ifdef NODEBUG -! !if ("$(MSVCVER)" == "8.0") || ("$(MSVCVER)" == "9.0") || ("$(MSVCVER)" == "10.0") - !if "$(OPTIMIZE)" != "SPACE" - LINKARGS1 = $(LINKARGS1) /LTCG:STATUS - !endif ---- 919,925 ---- - - # Report link time code generation progress if used. - !ifdef NODEBUG -! !if ("$(MSVCVER)" == "8.0") || ("$(MSVCVER)" == "9.0") || ("$(MSVCVER)" == "10.0") || ("$(MSVCVER)" == "11.0") - !if "$(OPTIMIZE)" != "SPACE" - LINKARGS1 = $(LINKARGS1) /LTCG:STATUS - !endif -*** ../vim-7.3.665/src/version.c 2012-09-18 18:27:07.000000000 +0200 ---- src/version.c 2012-09-18 21:58:44.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 666, - /**/ - --- -Be nice to your kids... they'll be the ones choosing your nursing home. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.667 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.667 -Problem: Unused variables in Perl interface. -Solution: Adjust #ifdefs. -Files: src/if_perl.xs - - -*** ../vim-7.3.666/src/if_perl.xs 2012-08-08 13:17:26.000000000 +0200 ---- src/if_perl.xs 2012-09-21 12:39:29.000000000 +0200 -*************** -*** 315,320 **** ---- 315,323 ---- - static void (*Perl_sv_free2)(pTHX_ SV*); - static void (*Perl_sys_init)(int* argc, char*** argv); - static void (*Perl_sys_term)(void); -+ static void (*Perl_call_list)(pTHX_ I32, AV*); -+ # if (PERL_REVISION == 5) && (PERL_VERSION >= 14) -+ # else - static SV** (*Perl_ISv_ptr)(register PerlInterpreter*); - static SV*** (*Perl_Istack_max_ptr)(register PerlInterpreter*); - static SV*** (*Perl_Istack_base_ptr)(register PerlInterpreter*); -*************** -*** 326,341 **** - static I32** (*Perl_Imarkstack_max_ptr)(register PerlInterpreter*); - static SV*** (*Perl_Istack_sp_ptr)(register PerlInterpreter*); - static OP** (*Perl_Iop_ptr)(register PerlInterpreter*); -- static void (*Perl_call_list)(pTHX_ I32, AV*); - static I32* (*Perl_Iscopestack_ix_ptr)(register PerlInterpreter*); - static AV** (*Perl_Iunitcheckav_ptr)(register PerlInterpreter*); - #endif - - static GV** (*Perl_Idefgv_ptr)(register PerlInterpreter*); - static GV** (*Perl_Ierrgv_ptr)(register PerlInterpreter*); - static SV* (*Perl_Isv_yes_ptr)(register PerlInterpreter*); -- static void (*boot_DynaLoader)_((pTHX_ CV*)); - static perl_key* (*Perl_Gthr_key_ptr)_((pTHX)); - - /* - * Table of name to function pointer of perl. ---- 329,347 ---- - static I32** (*Perl_Imarkstack_max_ptr)(register PerlInterpreter*); - static SV*** (*Perl_Istack_sp_ptr)(register PerlInterpreter*); - static OP** (*Perl_Iop_ptr)(register PerlInterpreter*); - static I32* (*Perl_Iscopestack_ix_ptr)(register PerlInterpreter*); - static AV** (*Perl_Iunitcheckav_ptr)(register PerlInterpreter*); -+ # endif - #endif - -+ #if (PERL_REVISION == 5) && (PERL_VERSION >= 14) -+ #else - static GV** (*Perl_Idefgv_ptr)(register PerlInterpreter*); - static GV** (*Perl_Ierrgv_ptr)(register PerlInterpreter*); - static SV* (*Perl_Isv_yes_ptr)(register PerlInterpreter*); - static perl_key* (*Perl_Gthr_key_ptr)_((pTHX)); -+ #endif -+ static void (*boot_DynaLoader)_((pTHX_ CV*)); - - /* - * Table of name to function pointer of perl. -*** ../vim-7.3.666/src/version.c 2012-09-18 22:00:02.000000000 +0200 ---- src/version.c 2012-09-21 12:40:57.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 667, - /**/ - --- -Two cows are standing together in a field. One asks the other: -"So what do you think about this Mad Cow Disease?" -The other replies: "That doesn't concern me. I'm a helicopter." - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.668 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.668 -Problem: Building with Perl loaded dynamically still uses static library. -Solution: Adjust use of PL_thr_key. (Ken Takata) -Files: src/if_perl.xs - - -*** ../vim-7.3.667/src/if_perl.xs 2012-09-21 12:42:38.000000000 +0200 ---- src/if_perl.xs 2012-09-21 12:47:55.000000000 +0200 -*************** -*** 155,161 **** - # define Perl_set_context dll_Perl_set_context - # if (PERL_REVISION == 5) && (PERL_VERSION >= 14) - # define Perl_sv_2bool_flags dll_Perl_sv_2bool_flags -! # define Perl_xs_apiversion_bootcheck dll_Perl_xs_apiversion_bootcheck - # else - # define Perl_sv_2bool dll_Perl_sv_2bool - # endif ---- 155,161 ---- - # define Perl_set_context dll_Perl_set_context - # if (PERL_REVISION == 5) && (PERL_VERSION >= 14) - # define Perl_sv_2bool_flags dll_Perl_sv_2bool_flags -! # define Perl_xs_apiversion_bootcheck dll_Perl_xs_apiversion_bootcheck - # else - # define Perl_sv_2bool dll_Perl_sv_2bool - # endif -*************** -*** 225,230 **** ---- 225,233 ---- - # define Perl_call_list dll_Perl_call_list - # define Perl_Iscopestack_ix_ptr dll_Perl_Iscopestack_ix_ptr - # define Perl_Iunitcheckav_ptr dll_Perl_Iunitcheckav_ptr -+ # if (PERL_REVISION == 5) && (PERL_VERSION >= 14) -+ # define PL_thr_key *dll_PL_thr_key -+ # endif - - /* - * Declare HANDLE for perl.dll and function pointers. -*************** -*** 335,340 **** ---- 338,344 ---- - #endif - - #if (PERL_REVISION == 5) && (PERL_VERSION >= 14) -+ static perl_key* dll_PL_thr_key; - #else - static GV** (*Perl_Idefgv_ptr)(register PerlInterpreter*); - static GV** (*Perl_Ierrgv_ptr)(register PerlInterpreter*); -*************** -*** 453,458 **** ---- 457,463 ---- - # endif - #endif - #if (PERL_REVISION == 5) && (PERL_VERSION >= 14) -+ {"PL_thr_key", (PERL_PROC*)&dll_PL_thr_key}, - #else - {"Perl_Idefgv_ptr", (PERL_PROC*)&Perl_Idefgv_ptr}, - {"Perl_Ierrgv_ptr", (PERL_PROC*)&Perl_Ierrgv_ptr}, -*** ../vim-7.3.667/src/version.c 2012-09-21 12:42:38.000000000 +0200 ---- src/version.c 2012-09-21 12:49:06.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 668, - /**/ - --- -Michael: There is no such thing as a dump question. -Bernard: Sure there is. For example "what is a core dump?" - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.669 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.669 -Problem: When building with Cygwin loading Python dynamically fails. -Solution: Use DLLLIBRARY instead of INSTSONAME. (Ken Takata) -Files: src/configure.in, src/auto/configure - - -*** ../vim-7.3.668/src/configure.in 2012-08-15 14:04:50.000000000 +0200 ---- src/configure.in 2012-09-21 12:52:32.000000000 +0200 -*************** -*** 889,894 **** ---- 889,895 ---- - @echo "python_LIBS='$(LIBS)'" - @echo "python_SYSLIBS='$(SYSLIBS)'" - @echo "python_LINKFORSHARED='$(LINKFORSHARED)'" -+ @echo "python_DLLLIBRARY='$(DLLLIBRARY)'" - @echo "python_INSTSONAME='$(INSTSONAME)'" - eof - dnl -- delete the lines from make about Entering/Leaving directory -*************** -*** 909,914 **** ---- 910,918 ---- - fi - ]) - -+ if test "X$python_DLLLIBRARY" != "X"; then -+ python_INSTSONAME="$python_DLLLIBRARY" -+ fi - PYTHON_LIBS="${vi_cv_path_python_plibs}" - if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then - PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -DPYTHON_HOME=\\\"${vi_cv_path_python_pfx}\\\"" -*************** -*** 1082,1087 **** ---- 1086,1092 ---- - @echo "python3_BASEMODLIBS='$(BASEMODLIBS)'" - @echo "python3_LIBS='$(LIBS)'" - @echo "python3_SYSLIBS='$(SYSLIBS)'" -+ @echo "python3_DLLLIBRARY='$(DLLLIBRARY)'" - @echo "python3_INSTSONAME='$(INSTSONAME)'" - eof - dnl -- delete the lines from make about Entering/Leaving directory -*************** -*** 1094,1099 **** ---- 1099,1107 ---- - vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//` - ]) - -+ if test "X$python3_DLLLIBRARY" != "X"; then -+ python3_INSTSONAME="$python3_DLLLIBRARY" -+ fi - PYTHON3_LIBS="${vi_cv_path_python3_plibs}" - if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then - PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\"" -*** ../vim-7.3.668/src/auto/configure 2012-08-15 14:04:50.000000000 +0200 ---- src/auto/configure 2012-09-21 13:06:09.000000000 +0200 -*************** -*** 5330,5335 **** ---- 5330,5336 ---- - @echo "python_LIBS='$(LIBS)'" - @echo "python_SYSLIBS='$(SYSLIBS)'" - @echo "python_LINKFORSHARED='$(LINKFORSHARED)'" -+ @echo "python_DLLLIBRARY='$(DLLLIBRARY)'" - @echo "python_INSTSONAME='$(INSTSONAME)'" - eof - eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`" -*************** -*** 5350,5355 **** ---- 5351,5359 ---- - fi - - -+ if test "X$python_DLLLIBRARY" != "X"; then -+ python_INSTSONAME="$python_DLLLIBRARY" -+ fi - PYTHON_LIBS="${vi_cv_path_python_plibs}" - if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then - PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -DPYTHON_HOME=\\\"${vi_cv_path_python_pfx}\\\"" -*************** -*** 5633,5638 **** ---- 5637,5643 ---- - @echo "python3_BASEMODLIBS='$(BASEMODLIBS)'" - @echo "python3_LIBS='$(LIBS)'" - @echo "python3_SYSLIBS='$(SYSLIBS)'" -+ @echo "python3_DLLLIBRARY='$(DLLLIBRARY)'" - @echo "python3_INSTSONAME='$(INSTSONAME)'" - eof - eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`" -*************** -*** 5645,5650 **** ---- 5650,5658 ---- - fi - - -+ if test "X$python3_DLLLIBRARY" != "X"; then -+ python3_INSTSONAME="$python3_DLLLIBRARY" -+ fi - PYTHON3_LIBS="${vi_cv_path_python3_plibs}" - if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then - PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\"" -*** ../vim-7.3.668/src/version.c 2012-09-21 12:50:44.000000000 +0200 ---- src/version.c 2012-09-21 12:54:42.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 669, - /**/ - --- -TALL KNIGHT: We are now no longer the Knights Who Say Ni! -ONE KNIGHT: Ni! -OTHERS: Sh! -ONE KNIGHT: (whispers) Sorry. - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.670 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.670 -Problem: Python: memory leaks when there are exceptions. -Solution: Add DICTKEY_UNREF in the right places. (ZyX) -Files: src/if_py_both.h - - -*** ../vim-7.3.669/src/if_py_both.h 2012-09-12 20:21:38.000000000 +0200 ---- src/if_py_both.h 2012-09-21 13:32:13.000000000 +0200 -*************** -*** 799,812 **** - - di = dict_find(((DictionaryObject *) (self))->dict, key, -1); - - if (di == NULL) - { - PyErr_SetString(PyExc_IndexError, _("no such key in dictionary")); - return NULL; - } - -- DICTKEY_UNREF -- - return ConvertToPyObject(&di->di_tv); - } - ---- 799,812 ---- - - di = dict_find(((DictionaryObject *) (self))->dict, key, -1); - -+ DICTKEY_UNREF -+ - if (di == NULL) - { - PyErr_SetString(PyExc_IndexError, _("no such key in dictionary")); - return NULL; - } - - return ConvertToPyObject(&di->di_tv); - } - -*************** -*** 835,840 **** ---- 835,841 ---- - - if (di == NULL) - { -+ DICTKEY_UNREF - PyErr_SetString(PyExc_IndexError, _("no such key in dictionary")); - return -1; - } -*************** -*** 859,864 **** ---- 860,866 ---- - - if (dict_add(d, di) == FAIL) - { -+ DICTKEY_UNREF - vim_free(di); - PyErr_SetVim(_("failed to add key to dictionary")); - return -1; -*** ../vim-7.3.669/src/version.c 2012-09-21 13:26:44.000000000 +0200 ---- src/version.c 2012-09-21 13:42:43.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 670, - /**/ - --- -TALL KNIGHT: Firstly. You must get us another shrubbery! -OTHER KNIGHTS: More shrubberies! More shrubberies for the ex-Knights of Ni! -ARTHUR: Not another shrubbery - - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.671 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.671 -Problem: More Python code can be shared between Python 2 and 3. -Solution: Move code to if_py_both.h. (ZyX) -Files: src/if_py_both.h, src/if_python.c, src/if_python3.c - - -*** ../vim-7.3.670/src/if_py_both.h 2012-09-21 13:43:09.000000000 +0200 ---- src/if_py_both.h 2012-09-21 13:45:02.000000000 +0200 -*************** -*** 71,76 **** ---- 71,101 ---- - /* Output buffer management - */ - -+ static int -+ OutputSetattr(PyObject *self, char *name, PyObject *val) -+ { -+ if (val == NULL) -+ { -+ PyErr_SetString(PyExc_AttributeError, _("can't delete OutputObject attributes")); -+ return -1; -+ } -+ -+ if (strcmp(name, "softspace") == 0) -+ { -+ if (!PyInt_Check(val)) -+ { -+ PyErr_SetString(PyExc_TypeError, _("softspace must be an integer")); -+ return -1; -+ } -+ -+ ((OutputObject *)(self))->softspace = PyInt_AsLong(val); -+ return 0; -+ } -+ -+ PyErr_SetString(PyExc_AttributeError, _("invalid attribute")); -+ return -1; -+ } -+ - static PyObject * - OutputWrite(PyObject *self, PyObject *args) - { -*** ../vim-7.3.670/src/if_python.c 2012-09-12 20:21:38.000000000 +0200 ---- src/if_python.c 2012-09-21 13:45:02.000000000 +0200 -*************** -*** 951,981 **** - return Py_FindMethod(OutputMethods, self, name); - } - -- static int -- OutputSetattr(PyObject *self, char *name, PyObject *val) -- { -- if (val == NULL) -- { -- PyErr_SetString(PyExc_AttributeError, _("can't delete OutputObject attributes")); -- return -1; -- } -- -- if (strcmp(name, "softspace") == 0) -- { -- if (!PyInt_Check(val)) -- { -- PyErr_SetString(PyExc_TypeError, _("softspace must be an integer")); -- return -1; -- } -- -- ((OutputObject *)(self))->softspace = PyInt_AsLong(val); -- return 0; -- } -- -- PyErr_SetString(PyExc_AttributeError, _("invalid attribute")); -- return -1; -- } -- - /***************/ - - static int ---- 951,956 ---- -*** ../vim-7.3.670/src/if_python3.c 2012-09-12 20:21:38.000000000 +0200 ---- src/if_python3.c 2012-09-21 13:45:02.000000000 +0200 -*************** -*** 88,93 **** ---- 88,96 ---- - #define PyString_Size(obj) PyBytes_GET_SIZE(bytes) - #define PyString_FromString(repr) PyUnicode_FromString(repr) - #define PyString_AsStringAndSize(obj, buffer, len) PyBytes_AsStringAndSize(obj, buffer, len) -+ #define PyInt_Check(obj) PyLong_Check(obj) -+ #define PyInt_FromLong(i) PyLong_FromLong(i) -+ #define PyInt_AsLong(obj) PyLong_AsLong(obj) - - #if defined(DYNAMIC_PYTHON3) || defined(PROTO) - -*************** -*** 586,591 **** ---- 589,599 ---- - */ - #include "if_py_both.h" - -+ #define GET_ATTR_STRING(name, nameobj) \ -+ char *name = ""; \ -+ if(PyUnicode_Check(nameobj)) \ -+ name = _PyUnicode_AsString(nameobj) -+ - #define PY3OBJ_DELETED(obj) (obj->ob_base.ob_refcnt<=0) - - static void -*************** -*** 923,931 **** - static PyObject * - OutputGetattro(PyObject *self, PyObject *nameobj) - { -! char *name = ""; -! if (PyUnicode_Check(nameobj)) -! name = _PyUnicode_AsString(nameobj); - - if (strcmp(name, "softspace") == 0) - return PyLong_FromLong(((OutputObject *)(self))->softspace); ---- 931,937 ---- - static PyObject * - OutputGetattro(PyObject *self, PyObject *nameobj) - { -! GET_ATTR_STRING(name, nameobj); - - if (strcmp(name, "softspace") == 0) - return PyLong_FromLong(((OutputObject *)(self))->softspace); -*************** -*** 936,965 **** - static int - OutputSetattro(PyObject *self, PyObject *nameobj, PyObject *val) - { -! char *name = ""; -! if (PyUnicode_Check(nameobj)) -! name = _PyUnicode_AsString(nameobj); -! -! if (val == NULL) -! { -! PyErr_SetString(PyExc_AttributeError, _("can't delete OutputObject attributes")); -! return -1; -! } - -! if (strcmp(name, "softspace") == 0) -! { -! if (!PyLong_Check(val)) -! { -! PyErr_SetString(PyExc_TypeError, _("softspace must be an integer")); -! return -1; -! } -! -! ((OutputObject *)(self))->softspace = PyLong_AsLong(val); -! return 0; -! } -! -! PyErr_SetString(PyExc_AttributeError, _("invalid attribute")); -! return -1; - } - - /***************/ ---- 942,950 ---- - static int - OutputSetattro(PyObject *self, PyObject *nameobj, PyObject *val) - { -! GET_ATTR_STRING(name, nameobj); - -! return OutputSetattr(self, name, val); - } - - /***************/ -*************** -*** 1091,1099 **** - { - BufferObject *this = (BufferObject *)(self); - -! char *name = ""; -! if (PyUnicode_Check(nameobj)) -! name = _PyUnicode_AsString(nameobj); - - if (CheckBuffer(this)) - return NULL; ---- 1076,1082 ---- - { - BufferObject *this = (BufferObject *)(self); - -! GET_ATTR_STRING(name, nameobj); - - if (CheckBuffer(this)) - return NULL; -*************** -*** 1257,1265 **** - static PyObject * - RangeGetattro(PyObject *self, PyObject *nameobj) - { -! char *name = ""; -! if (PyUnicode_Check(nameobj)) -! name = _PyUnicode_AsString(nameobj); - - if (strcmp(name, "start") == 0) - return Py_BuildValue("n", ((RangeObject *)(self))->start - 1); ---- 1240,1246 ---- - static PyObject * - RangeGetattro(PyObject *self, PyObject *nameobj) - { -! GET_ATTR_STRING(name, nameobj); - - if (strcmp(name, "start") == 0) - return Py_BuildValue("n", ((RangeObject *)(self))->start - 1); -*************** -*** 1430,1439 **** - { - WindowObject *this = (WindowObject *)(self); - -! char *name = ""; -! if (PyUnicode_Check(nameobj)) -! name = _PyUnicode_AsString(nameobj); -! - - if (CheckWindow(this)) - return NULL; ---- 1411,1417 ---- - { - WindowObject *this = (WindowObject *)(self); - -! GET_ATTR_STRING(name, nameobj); - - if (CheckWindow(this)) - return NULL; -*************** -*** 1461,1470 **** - static int - WindowSetattro(PyObject *self, PyObject *nameobj, PyObject *val) - { -! char *name = ""; -! -! if (PyUnicode_Check(nameobj)) -! name = _PyUnicode_AsString(nameobj); - - return WindowSetattr(self, name, val); - } ---- 1439,1445 ---- - static int - WindowSetattro(PyObject *self, PyObject *nameobj, PyObject *val) - { -! GET_ATTR_STRING(name, nameobj); - - return WindowSetattr(self, name, val); - } -*************** -*** 1508,1516 **** - static PyObject * - CurrentGetattro(PyObject *self UNUSED, PyObject *nameobj) - { -! char *name = ""; -! if (PyUnicode_Check(nameobj)) -! name = _PyUnicode_AsString(nameobj); - - if (strcmp(name, "buffer") == 0) - return (PyObject *)BufferNew(curbuf); ---- 1483,1489 ---- - static PyObject * - CurrentGetattro(PyObject *self UNUSED, PyObject *nameobj) - { -! GET_ATTR_STRING(name, nameobj); - - if (strcmp(name, "buffer") == 0) - return (PyObject *)BufferNew(curbuf); -*************** -*** 1681,1689 **** - FunctionGetattro(PyObject *self, PyObject *nameobj) - { - FunctionObject *this = (FunctionObject *)(self); -! char *name = ""; -! if (PyUnicode_Check(nameobj)) -! name = _PyUnicode_AsString(nameobj); - - if (strcmp(name, "name") == 0) - return PyUnicode_FromString((char *)(this->name)); ---- 1654,1661 ---- - FunctionGetattro(PyObject *self, PyObject *nameobj) - { - FunctionObject *this = (FunctionObject *)(self); -! -! GET_ATTR_STRING(name, nameobj); - - if (strcmp(name, "name") == 0) - return PyUnicode_FromString((char *)(this->name)); -*** ../vim-7.3.670/src/version.c 2012-09-21 13:43:09.000000000 +0200 ---- src/version.c 2012-09-21 13:45:28.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 671, - /**/ - --- -The war between Emacs and Vi is over. Vi has won with 3 to 1. - http://www.ssc.com/lg/issue30/raymond.html - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.672 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.672 -Problem: Not possible to lock/unlock lists in Python interface. -Solution: Add .locked and .scope attributes. (ZyX) -Files: runtime/doc/if_pyth.txt, src/if_py_both.h, src/if_python.c, - src/if_python3.c, src/testdir/test86.in, src/testdir/test86.ok, - src/testdir/test87.in, src/testdir/test87.ok - - -*** ../vim-7.3.671/runtime/doc/if_pyth.txt 2012-06-29 12:54:32.000000000 +0200 ---- runtime/doc/if_pyth.txt 2012-09-21 13:49:14.000000000 +0200 -*************** -*** 27,33 **** - - *:python* *:py* *E205* *E263* *E264* - :[range]py[thon] {stmt} -! Execute Python statement {stmt}. - - :[range]py[thon] << {endmarker} - {script} ---- 27,35 ---- - - *:python* *:py* *E205* *E263* *E264* - :[range]py[thon] {stmt} -! Execute Python statement {stmt}. A simple check if -! the `:python` command is working: > -! :python print "Hello" - - :[range]py[thon] << {endmarker} - {script} -*************** -*** 157,162 **** ---- 159,184 ---- - vimlist or vimdictionary python type that are connected to original - list or dictionary. Thus modifications to these objects imply - modifications of the original. -+ -+ Additionally, vimlist and vimdictionary type have read-write -+ `.locked` attribute that returns -+ Value Meaning ~ -+ zero Variable is not locked -+ vim.VAR_LOCKED Variable is locked, but can be unlocked -+ vim.VAR_FIXED Variable is locked and can’t be unlocked -+ integer constants. If variable is not fixed, you can do -+ `var.locked=True` to lock it and `var.locked=False` to unlock. -+ There is no recursive locking like |:lockvar|! does. There is also -+ no way to lock a specific key or check whether it is locked (in any -+ case these locks are ignored by anything except |:let|: |extend()| -+ does not care, neither does python interface). -+ -+ Vimdictionary type also supports `.scope` attribute which is one of -+ Value Meaning ~ -+ zero Dictionary is not a scope one -+ vim.VAR_DEF_SCOPE Function-local or global scope dictionary -+ vim.VAR_SCOPE Other scope dictionary -+ - 2. if expression evaluates to a function reference, then it returns - callable vimfunction object. Use self keyword argument to assign - |self| object for dictionary functions. -*************** -*** 362,369 **** - 8. Python 3 *python3* - - *:py3* *:python3* -! The |:py3| and |:python3| commands work similar to |:python|. -! *:py3file* - The |:py3file| command works similar to |:pyfile|. - - ---- 384,393 ---- - 8. Python 3 *python3* - - *:py3* *:python3* -! The |:py3| and |:python3| commands work similar to |:python|. A simple check -! if the `:py3` command is wrong: > -! :py3 print("Hello") -! < *:py3file* - The |:py3file| command works similar to |:pyfile|. - - -*** ../vim-7.3.671/src/if_py_both.h 2012-09-21 13:45:57.000000000 +0200 ---- src/if_py_both.h 2012-09-21 13:49:14.000000000 +0200 -*************** -*** 808,813 **** ---- 808,851 ---- - } - - static PyInt -+ DictionarySetattr(DictionaryObject *self, char *name, PyObject *val) -+ { -+ if (val == NULL) -+ { -+ PyErr_SetString(PyExc_AttributeError, _("Cannot delete DictionaryObject attributes")); -+ return -1; -+ } -+ -+ if (strcmp(name, "locked") == 0) -+ { -+ if (self->dict->dv_lock == VAR_FIXED) -+ { -+ PyErr_SetString(PyExc_TypeError, _("Cannot modify fixed dictionary")); -+ return -1; -+ } -+ else -+ { -+ if (!PyBool_Check(val)) -+ { -+ PyErr_SetString(PyExc_TypeError, _("Only boolean objects are allowed")); -+ return -1; -+ } -+ -+ if (val == Py_True) -+ self->dict->dv_lock = VAR_LOCKED; -+ else -+ self->dict->dv_lock = 0; -+ } -+ return 0; -+ } -+ else -+ { -+ PyErr_SetString(PyExc_AttributeError, _("Cannot set this attribute")); -+ return -1; -+ } -+ } -+ -+ static PyInt - DictionaryLength(PyObject *self) - { - return ((PyInt) ((((DictionaryObject *)(self))->dict->dv_hashtab.ht_used))); -*************** -*** 1271,1276 **** ---- 1309,1352 ---- - return self; - } - -+ static int -+ ListSetattr(ListObject *self, char *name, PyObject *val) -+ { -+ if (val == NULL) -+ { -+ PyErr_SetString(PyExc_AttributeError, _("Cannot delete DictionaryObject attributes")); -+ return -1; -+ } -+ -+ if (strcmp(name, "locked") == 0) -+ { -+ if (self->list->lv_lock == VAR_FIXED) -+ { -+ PyErr_SetString(PyExc_TypeError, _("Cannot modify fixed list")); -+ return -1; -+ } -+ else -+ { -+ if (!PyBool_Check(val)) -+ { -+ PyErr_SetString(PyExc_TypeError, _("Only boolean objects are allowed")); -+ return -1; -+ } -+ -+ if (val == Py_True) -+ self->list->lv_lock = VAR_LOCKED; -+ else -+ self->list->lv_lock = 0; -+ } -+ return 0; -+ } -+ else -+ { -+ PyErr_SetString(PyExc_AttributeError, _("Cannot set this attribute")); -+ return -1; -+ } -+ } -+ - static struct PyMethodDef ListMethods[] = { - {"extend", (PyCFunction)ListConcatInPlace, METH_O, ""}, - { NULL, NULL, 0, NULL } -*** ../vim-7.3.671/src/if_python.c 2012-09-21 13:45:57.000000000 +0200 ---- src/if_python.c 2012-09-21 13:49:14.000000000 +0200 -*************** -*** 163,168 **** ---- 163,169 ---- - # define PyInt_FromLong dll_PyInt_FromLong - # define PyLong_AsLong dll_PyLong_AsLong - # define PyLong_FromLong dll_PyLong_FromLong -+ # define PyBool_Type (*dll_PyBool_Type) - # define PyInt_Type (*dll_PyInt_Type) - # define PyLong_Type (*dll_PyLong_Type) - # define PyList_GetItem dll_PyList_GetItem -*************** -*** 221,226 **** ---- 222,229 ---- - # define _PyObject_NextNotImplemented (*dll__PyObject_NextNotImplemented) - # endif - # define _Py_NoneStruct (*dll__Py_NoneStruct) -+ # define _Py_ZeroStruct (*dll__Py_ZeroStruct) -+ # define _Py_TrueStruct (*dll__Py_TrueStruct) - # define PyObject_Init dll__PyObject_Init - # define PyObject_GetIter dll_PyObject_GetIter - # if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02020000 -*************** -*** 263,268 **** ---- 266,272 ---- - static PyObject*(*dll_PyInt_FromLong)(long); - static long(*dll_PyLong_AsLong)(PyObject *); - static PyObject*(*dll_PyLong_FromLong)(long); -+ static PyTypeObject* dll_PyBool_Type; - static PyTypeObject* dll_PyInt_Type; - static PyTypeObject* dll_PyLong_Type; - static PyObject*(*dll_PyList_GetItem)(PyObject *, PyInt); -*************** -*** 320,325 **** ---- 324,331 ---- - static iternextfunc dll__PyObject_NextNotImplemented; - # endif - static PyObject* dll__Py_NoneStruct; -+ static PyObject* _Py_ZeroStruct; -+ static PyObject* dll__Py_TrueStruct; - # if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02020000 - static int (*dll_PyType_IsSubtype)(PyTypeObject *, PyTypeObject *); - # endif -*************** -*** 389,394 **** ---- 395,401 ---- - {"PyInt_FromLong", (PYTHON_PROC*)&dll_PyInt_FromLong}, - {"PyLong_AsLong", (PYTHON_PROC*)&dll_PyLong_AsLong}, - {"PyLong_FromLong", (PYTHON_PROC*)&dll_PyLong_FromLong}, -+ {"PyBool_Type", (PYTHON_PROC*)&dll_PyBool_Type}, - {"PyInt_Type", (PYTHON_PROC*)&dll_PyInt_Type}, - {"PyLong_Type", (PYTHON_PROC*)&dll_PyLong_Type}, - {"PyList_GetItem", (PYTHON_PROC*)&dll_PyList_GetItem}, -*************** -*** 449,454 **** ---- 456,463 ---- - {"_PyObject_NextNotImplemented", (PYTHON_PROC*)&dll__PyObject_NextNotImplemented}, - # endif - {"_Py_NoneStruct", (PYTHON_PROC*)&dll__Py_NoneStruct}, -+ {"_Py_ZeroStruct", (PYTHON_PROC*)&dll__Py_ZeroStruct}, -+ {"_Py_TrueStruct", (PYTHON_PROC*)&dll__Py_TrueStruct}, - # if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02020000 - {"PyType_IsSubtype", (PYTHON_PROC*)&dll_PyType_IsSubtype}, - # endif -*************** -*** 1563,1568 **** ---- 1572,1581 ---- - PyDict_SetItemString(dict, "buffers", (PyObject *)(void *)&TheBufferList); - PyDict_SetItemString(dict, "current", (PyObject *)(void *)&TheCurrent); - PyDict_SetItemString(dict, "windows", (PyObject *)(void *)&TheWindowList); -+ PyDict_SetItemString(dict, "VAR_LOCKED", PyInt_FromLong(VAR_LOCKED)); -+ PyDict_SetItemString(dict, "VAR_FIXED", PyInt_FromLong(VAR_FIXED)); -+ PyDict_SetItemString(dict, "VAR_SCOPE", PyInt_FromLong(VAR_SCOPE)); -+ PyDict_SetItemString(dict, "VAR_DEF_SCOPE", PyInt_FromLong(VAR_DEF_SCOPE)); - - if (PyErr_Occurred()) - return -1; -*************** -*** 1629,1635 **** - (destructor) DictionaryDestructor, - (printfunc) 0, - (getattrfunc) DictionaryGetattr, -! (setattrfunc) 0, - (cmpfunc) 0, - (reprfunc) 0, - ---- 1642,1648 ---- - (destructor) DictionaryDestructor, - (printfunc) 0, - (getattrfunc) DictionaryGetattr, -! (setattrfunc) DictionarySetattr, - (cmpfunc) 0, - (reprfunc) 0, - -*************** -*** 1656,1661 **** ---- 1669,1681 ---- - static PyObject * - DictionaryGetattr(PyObject *self, char *name) - { -+ DictionaryObject *this = ((DictionaryObject *) (self)); -+ -+ if (strcmp(name, "locked") == 0) -+ return PyInt_FromLong(this->dict->dv_lock); -+ else if (strcmp(name, "scope") == 0) -+ return PyInt_FromLong(this->dict->dv_scope); -+ - return Py_FindMethod(DictionaryMethods, self, name); - } - -*************** -*** 1687,1693 **** - (destructor) ListDestructor, - (printfunc) 0, - (getattrfunc) ListGetattr, -! (setattrfunc) 0, - (cmpfunc) 0, - (reprfunc) 0, - ---- 1707,1713 ---- - (destructor) ListDestructor, - (printfunc) 0, - (getattrfunc) ListGetattr, -! (setattrfunc) ListSetattr, - (cmpfunc) 0, - (reprfunc) 0, - -*************** -*** 1714,1719 **** ---- 1734,1742 ---- - static PyObject * - ListGetattr(PyObject *self, char *name) - { -+ if (strcmp(name, "locked") == 0) -+ return PyInt_FromLong(((ListObject *)(self))->list->lv_lock); -+ - return Py_FindMethod(ListMethods, self, name); - } - -*** ../vim-7.3.671/src/if_python3.c 2012-09-21 13:45:57.000000000 +0200 ---- src/if_python3.c 2012-09-21 13:49:14.000000000 +0200 -*************** -*** 161,167 **** - # define PyRun_String py3_PyRun_String - # define PySys_SetObject py3_PySys_SetObject - # define PySys_SetArgv py3_PySys_SetArgv -- # define PyType_Type (*py3_PyType_Type) - # define PyType_Ready py3_PyType_Ready - #undef Py_BuildValue - # define Py_BuildValue py3_Py_BuildValue ---- 161,166 ---- -*************** -*** 170,175 **** ---- 169,176 ---- - # define Py_Finalize py3_Py_Finalize - # define Py_IsInitialized py3_Py_IsInitialized - # define _Py_NoneStruct (*py3__Py_NoneStruct) -+ # define _Py_FalseStruct (*py3__Py_FalseStruct) -+ # define _Py_TrueStruct (*py3__Py_TrueStruct) - # define _PyObject_NextNotImplemented (*py3__PyObject_NextNotImplemented) - # define PyModule_AddObject py3_PyModule_AddObject - # define PyImport_AppendInittab py3_PyImport_AppendInittab -*************** -*** 184,191 **** ---- 185,194 ---- - # define PyFloat_FromDouble py3_PyFloat_FromDouble - # define PyFloat_AsDouble py3_PyFloat_AsDouble - # define PyObject_GenericGetAttr py3_PyObject_GenericGetAttr -+ # define PyType_Type (*py3_PyType_Type) - # define PySlice_Type (*py3_PySlice_Type) - # define PyFloat_Type (*py3_PyFloat_Type) -+ # define PyBool_Type (*py3_PyBool_Type) - # define PyErr_NewException py3_PyErr_NewException - # ifdef Py_DEBUG - # define _Py_NegativeRefcount py3__Py_NegativeRefcount -*************** -*** 245,251 **** - static PyObject* (*py3_PyImport_ImportModule)(const char *); - static PyObject* (*py3_PyImport_AddModule)(const char *); - static int (*py3_PyErr_BadArgument)(void); -- static PyTypeObject* py3_PyType_Type; - static PyObject* (*py3_PyErr_Occurred)(void); - static PyObject* (*py3_PyModule_GetDict)(PyObject *); - static int (*py3_PyList_SetItem)(PyObject *, Py_ssize_t, PyObject *); ---- 248,253 ---- -*************** -*** 275,280 **** ---- 277,284 ---- - static PyObject*(*py3__PyObject_Init)(PyObject *, PyTypeObject *); - static iternextfunc py3__PyObject_NextNotImplemented; - static PyObject* py3__Py_NoneStruct; -+ static PyObject* py3__Py_FalseStruct; -+ static PyObject* py3__Py_TrueStruct; - static int (*py3_PyModule_AddObject)(PyObject *m, const char *name, PyObject *o); - static int (*py3_PyImport_AppendInittab)(const char *name, PyObject* (*initfunc)(void)); - static char* (*py3__PyUnicode_AsString)(PyObject *unicode); -*************** -*** 288,295 **** ---- 292,301 ---- - static PyObject* (*py3_PyModule_Create2)(struct PyModuleDef* module, int module_api_version); - static PyObject* (*py3_PyType_GenericAlloc)(PyTypeObject *type, Py_ssize_t nitems); - static PyObject* (*py3_PyType_GenericNew)(PyTypeObject *type, PyObject *args, PyObject *kwds); -+ static PyTypeObject* py3_PyType_Type; - static PyTypeObject* py3_PySlice_Type; - static PyTypeObject* py3_PyFloat_Type; -+ static PyTypeObject* py3_PyBool_Type; - static PyObject* (*py3_PyErr_NewException)(char *name, PyObject *base, PyObject *dict); - static PyObject* (*py3_PyCapsule_New)(void *, char *, PyCapsule_Destructor); - static void* (*py3_PyCapsule_GetPointer)(PyObject *, char *); -*************** -*** 363,369 **** - {"PyImport_ImportModule", (PYTHON_PROC*)&py3_PyImport_ImportModule}, - {"PyImport_AddModule", (PYTHON_PROC*)&py3_PyImport_AddModule}, - {"PyErr_BadArgument", (PYTHON_PROC*)&py3_PyErr_BadArgument}, -- {"PyType_Type", (PYTHON_PROC*)&py3_PyType_Type}, - {"PyErr_Occurred", (PYTHON_PROC*)&py3_PyErr_Occurred}, - {"PyModule_GetDict", (PYTHON_PROC*)&py3_PyModule_GetDict}, - {"PyList_SetItem", (PYTHON_PROC*)&py3_PyList_SetItem}, ---- 369,374 ---- -*************** -*** 386,391 **** ---- 391,398 ---- - {"Py_IsInitialized", (PYTHON_PROC*)&py3_Py_IsInitialized}, - {"_PyObject_NextNotImplemented", (PYTHON_PROC*)&py3__PyObject_NextNotImplemented}, - {"_Py_NoneStruct", (PYTHON_PROC*)&py3__Py_NoneStruct}, -+ {"_Py_FalseStruct", (PYTHON_PROC*)&py3__Py_FalseStruct}, -+ {"_Py_TrueStruct", (PYTHON_PROC*)&py3__Py_TrueStruct}, - {"PyErr_Clear", (PYTHON_PROC*)&py3_PyErr_Clear}, - {"PyObject_Init", (PYTHON_PROC*)&py3__PyObject_Init}, - {"PyModule_AddObject", (PYTHON_PROC*)&py3_PyModule_AddObject}, -*************** -*** 400,407 **** ---- 407,416 ---- - {"PyModule_Create2", (PYTHON_PROC*)&py3_PyModule_Create2}, - {"PyType_GenericAlloc", (PYTHON_PROC*)&py3_PyType_GenericAlloc}, - {"PyType_GenericNew", (PYTHON_PROC*)&py3_PyType_GenericNew}, -+ {"PyType_Type", (PYTHON_PROC*)&py3_PyType_Type}, - {"PySlice_Type", (PYTHON_PROC*)&py3_PySlice_Type}, - {"PyFloat_Type", (PYTHON_PROC*)&py3_PyFloat_Type}, -+ {"PyBool_Type", (PYTHON_PROC*)&py3_PyBool_Type}, - {"PyErr_NewException", (PYTHON_PROC*)&py3_PyErr_NewException}, - # ifdef Py_DEBUG - {"_Py_NegativeRefcount", (PYTHON_PROC*)&py3__Py_NegativeRefcount}, -*************** -*** 1534,1539 **** ---- 1543,1570 ---- - /* mp_ass_subscript */ (objobjargproc) DictionaryAssItem, - }; - -+ static PyObject * -+ DictionaryGetattro(PyObject *self, PyObject *nameobj) -+ { -+ DictionaryObject *this = ((DictionaryObject *) (self)); -+ -+ GET_ATTR_STRING(name, nameobj); -+ -+ if (strcmp(name, "locked") == 0) -+ return PyLong_FromLong(this->dict->dv_lock); -+ else if (strcmp(name, "scope") == 0) -+ return PyLong_FromLong(this->dict->dv_scope); -+ -+ return PyObject_GenericGetAttr(self, nameobj); -+ } -+ -+ static int -+ DictionarySetattro(PyObject *self, PyObject *nameobj, PyObject *val) -+ { -+ GET_ATTR_STRING(name, nameobj); -+ return DictionarySetattr((DictionaryObject *) self, name, val); -+ } -+ - static PyTypeObject DictionaryType; - - static void -*************** -*** 1625,1630 **** ---- 1656,1679 ---- - } - } - -+ static PyObject * -+ ListGetattro(PyObject *self, PyObject *nameobj) -+ { -+ GET_ATTR_STRING(name, nameobj); -+ -+ if (strcmp(name, "locked") == 0) -+ return PyLong_FromLong(((ListObject *) (self))->list->lv_lock); -+ -+ return PyObject_GenericGetAttr(self, nameobj); -+ } -+ -+ static int -+ ListSetattro(PyObject *self, PyObject *nameobj, PyObject *val) -+ { -+ GET_ATTR_STRING(name, nameobj); -+ return ListSetattr((ListObject *) self, name, val); -+ } -+ - static void - ListDestructor(PyObject *self) - { -*************** -*** 1713,1718 **** ---- 1762,1768 ---- - PyMODINIT_FUNC Py3Init_vim(void) - { - PyObject *mod; -+ PyObject *tmp; - /* The special value is removed from sys.path in Python3_Init(). */ - static wchar_t *(argv[2]) = {L"/must>not&exist/foo", NULL}; - -*************** -*** 1744,1749 **** ---- 1794,1809 ---- - Py_INCREF((PyObject *)(void *)&TheWindowList); - PyModule_AddObject(mod, "windows", (PyObject *)(void *)&TheWindowList); - -+ #define ADD_INT_CONSTANT(name, value) \ -+ tmp = PyLong_FromLong(value); \ -+ Py_INCREF(tmp); \ -+ PyModule_AddObject(mod, name, tmp) -+ -+ ADD_INT_CONSTANT("VAR_LOCKED", VAR_LOCKED); -+ ADD_INT_CONSTANT("VAR_FIXED", VAR_FIXED); -+ ADD_INT_CONSTANT("VAR_SCOPE", VAR_SCOPE); -+ ADD_INT_CONSTANT("VAR_DEF_SCOPE", VAR_DEF_SCOPE); -+ - if (PyErr_Occurred()) - return NULL; - -*************** -*** 1899,1904 **** ---- 1959,1966 ---- - vim_memset(&DictionaryType, 0, sizeof(DictionaryType)); - DictionaryType.tp_name = "vim.dictionary"; - DictionaryType.tp_basicsize = sizeof(DictionaryObject); -+ DictionaryType.tp_getattro = DictionaryGetattro; -+ DictionaryType.tp_setattro = DictionarySetattro; - DictionaryType.tp_dealloc = DictionaryDestructor; - DictionaryType.tp_as_mapping = &DictionaryAsMapping; - DictionaryType.tp_flags = Py_TPFLAGS_DEFAULT; -*************** -*** 1909,1914 **** ---- 1971,1978 ---- - ListType.tp_name = "vim.list"; - ListType.tp_dealloc = ListDestructor; - ListType.tp_basicsize = sizeof(ListObject); -+ ListType.tp_getattro = ListGetattro; -+ ListType.tp_setattro = ListSetattro; - ListType.tp_as_sequence = &ListAsSeq; - ListType.tp_as_mapping = &ListAsMapping; - ListType.tp_flags = Py_TPFLAGS_DEFAULT; -*** ../vim-7.3.671/src/testdir/test86.in 2012-09-05 19:17:37.000000000 +0200 ---- src/testdir/test86.in 2012-09-21 13:49:14.000000000 +0200 -*************** -*** 211,216 **** ---- 211,251 ---- - m.extend([e.__class__.__name__]) - EOF - :$put =messages -+ :unlet messages -+ :" locked and scope attributes -+ :let d={} | let dl={} | lockvar dl -+ :for s in split("d dl v: g:") -+ : let name=tr(s, ':', 's') -+ : execute 'py '.name.'=vim.bindeval("'.s.'")' -+ : let toput=s.' : '.join(map(['locked', 'scope'], 'v:val.":".pyeval(name.".".v:val)'), ';') -+ : $put =toput -+ :endfor -+ :silent! let d.abc=1 -+ :silent! let dl.abc=1 -+ :py d.locked=True -+ :py dl.locked=False -+ :silent! let d.def=1 -+ :silent! let dl.def=1 -+ :put ='d:'.string(d) -+ :put ='dl:'.string(dl) -+ :unlet d dl -+ : -+ :let l=[] | let ll=[] | lockvar ll -+ :for s in split("l ll") -+ : let name=tr(s, ':', 's') -+ : execute 'py '.name.'=vim.bindeval("'.s.'")' -+ : let toput=s.' : locked:'.pyeval(name.'.locked') -+ : $put =toput -+ :endfor -+ :silent! call extend(l, [0]) -+ :silent! call extend(ll, [0]) -+ :py l.locked=True -+ :py ll.locked=False -+ :silent! call extend(l, [1]) -+ :silent! call extend(ll, [1]) -+ :put ='l:'.string(l) -+ :put ='ll:'.string(ll) -+ :unlet l ll - :" - :" pyeval() - :let l=pyeval('range(3)') -*************** -*** 240,245 **** ---- 275,281 ---- - :call garbagecollect(1) - :" - :/^start:/,$wq! test.out -+ :call getchar() - ENDTEST - - start: -*** ../vim-7.3.671/src/testdir/test86.ok 2012-09-05 19:17:37.000000000 +0200 ---- src/testdir/test86.ok 2012-09-21 13:49:14.000000000 +0200 -*************** -*** 44,49 **** ---- 44,59 ---- - ValueError - TypeError - TypeError -+ d : locked:0;scope:0 -+ dl : locked:1;scope:0 -+ v: : locked:2;scope:1 -+ g: : locked:0;scope:2 -+ d:{'abc': 1} -+ dl:{'def': 1} -+ l : locked:0 -+ ll : locked:1 -+ l:[0] -+ ll:[1] - [0, 1, 2] - ['a', 'b'] - ['c', 1] -*** ../vim-7.3.671/src/testdir/test87.in 2012-09-05 19:17:37.000000000 +0200 ---- src/testdir/test87.in 2012-09-21 13:49:14.000000000 +0200 -*************** -*** 211,216 **** ---- 211,251 ---- - m.extend([e.__class__.__name__]) - EOF - :$put =messages -+ :unlet messages -+ :" locked and scope attributes -+ :let d={} | let dl={} | lockvar dl -+ :for s in split("d dl v: g:") -+ : let name=tr(s, ':', 's') -+ : execute 'py3 '.name.'=vim.bindeval("'.s.'")' -+ : let toput=s.' : '.join(map(['locked', 'scope'], 'v:val.":".py3eval(name.".".v:val)'), ';') -+ : $put =toput -+ :endfor -+ :silent! let d.abc=1 -+ :silent! let dl.abc=1 -+ :py3 d.locked=True -+ :py3 dl.locked=False -+ :silent! let d.def=1 -+ :silent! let dl.def=1 -+ :put ='d:'.string(d) -+ :put ='dl:'.string(dl) -+ :unlet d dl -+ : -+ :let l=[] | let ll=[] | lockvar ll -+ :for s in split("l ll") -+ : let name=tr(s, ':', 's') -+ : execute 'py3 '.name.'=vim.bindeval("'.s.'")' -+ : let toput=s.' : locked:'.py3eval(name.'.locked') -+ : $put =toput -+ :endfor -+ :silent! call extend(l, [0]) -+ :silent! call extend(ll, [0]) -+ :py3 l.locked=True -+ :py3 ll.locked=False -+ :silent! call extend(l, [1]) -+ :silent! call extend(ll, [1]) -+ :put ='l:'.string(l) -+ :put ='ll:'.string(ll) -+ :unlet l ll - :" - :" py3eval() - :let l=py3eval('[0, 1, 2]') -*** ../vim-7.3.671/src/testdir/test87.ok 2012-09-05 19:17:37.000000000 +0200 ---- src/testdir/test87.ok 2012-09-21 13:49:14.000000000 +0200 -*************** -*** 44,49 **** ---- 44,59 ---- - ValueError - TypeError - TypeError -+ d : locked:0;scope:0 -+ dl : locked:1;scope:0 -+ v: : locked:2;scope:1 -+ g: : locked:0;scope:2 -+ d:{'abc': 1} -+ dl:{'def': 1} -+ l : locked:0 -+ ll : locked:1 -+ l:[0] -+ ll:[1] - [0, 1, 2] - ['a', 'b'] - ['c', 1] -*** ../vim-7.3.671/src/version.c 2012-09-21 13:45:57.000000000 +0200 ---- src/version.c 2012-09-21 13:48:18.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 672, - /**/ - --- -Vi beats Emacs to death, and then again! - http://linuxtoday.com/stories/5764.html - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.673 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.673 -Problem: Using "gN" while 'selection' is "exclusive" misses one character. - (Ben Fritz) -Solution: Check the direction when compensating for exclusive selection. - (Christian Brabandt) -Files: src/search.c - - -*** ../vim-7.3.672/src/search.c 2012-09-05 12:16:39.000000000 +0200 ---- src/search.c 2012-10-03 13:28:49.000000000 +0200 -*************** -*** 4650,4657 **** - if (VIsual_active) - { - redraw_curbuf_later(INVERTED); /* update the inversion */ -! if (*p_sel == 'e' && ltoreq(VIsual, curwin->w_cursor)) -! inc_cursor(); - } - - #ifdef FEAT_FOLDING ---- 4650,4664 ---- - if (VIsual_active) - { - redraw_curbuf_later(INVERTED); /* update the inversion */ -! if (*p_sel == 'e') -! { -! /* Correction for exclusive selection depends on the direction. */ -! if (forward && ltoreq(VIsual, curwin->w_cursor)) -! inc_cursor(); -! else if (!forward && ltoreq(curwin->w_cursor, VIsual)) -! inc(&VIsual); -! } -! - } - - #ifdef FEAT_FOLDING -*** ../vim-7.3.672/src/version.c 2012-09-21 14:00:05.000000000 +0200 ---- src/version.c 2012-10-03 13:31:45.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 673, - /**/ - --- -You can be stopped by the police for biking over 65 miles per hour. -You are not allowed to walk across a street on your hands. - [real standing laws in Connecticut, United States of America] - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.674 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.674 -Problem: Can't compile with Lua/dyn on Cygwin. -Solution: Adjust configure to use the right library name. (Ken Takata) -Files: src/configure.in, src/auto/configure - - -*** ../vim-7.3.673/src/configure.in 2012-09-21 13:26:44.000000000 +0200 ---- src/configure.in 2012-10-03 14:39:42.000000000 +0200 -*************** -*** 455,485 **** - - LUA_INC= - if test "X$vi_cv_path_lua_pfx" != "X"; then - AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include) - if test -f $vi_cv_path_lua_pfx/include/lua.h; then - AC_MSG_RESULT(yes) - else - AC_MSG_RESULT(no) -! dnl -- try to find Lua executable -! AC_PATH_PROG(vi_cv_path_lua, lua) -! if test "X$vi_cv_path_lua" != "X"; then -! dnl -- find Lua version -! AC_CACHE_CHECK(Lua version, vi_cv_version_lua, -! [ vi_cv_version_lua=`${vi_cv_path_lua} -e "print(_VERSION)" | sed 's/.* //'` ]) -! AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua) -! if test -f $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua/lua.h; then -! AC_MSG_RESULT(yes) -! LUA_INC=/lua$vi_cv_version_lua -! else -! AC_MSG_RESULT(no) -! vi_cv_path_lua_pfx= -! fi - fi - fi - fi - - if test "X$vi_cv_path_lua_pfx" != "X"; then -! if test "X$vi_cv_version_lua" != "X"; then - dnl Test alternate location using version - LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua$vi_cv_version_lua" - else ---- 455,485 ---- - - LUA_INC= - if test "X$vi_cv_path_lua_pfx" != "X"; then -+ dnl -- try to find Lua executable -+ AC_PATH_PROG(vi_cv_path_lua, lua) -+ if test "X$vi_cv_path_lua" != "X"; then -+ dnl -- find Lua version -+ AC_CACHE_CHECK(Lua version, vi_cv_version_lua, -+ [ vi_cv_version_lua=`${vi_cv_path_lua} -e "print(_VERSION)" | sed 's/.* //'` ]) -+ fi - AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include) - if test -f $vi_cv_path_lua_pfx/include/lua.h; then - AC_MSG_RESULT(yes) - else - AC_MSG_RESULT(no) -! AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua) -! if test -f $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua/lua.h; then -! AC_MSG_RESULT(yes) -! LUA_INC=/lua$vi_cv_version_lua -! else -! AC_MSG_RESULT(no) -! vi_cv_path_lua_pfx= - fi - fi - fi - - if test "X$vi_cv_path_lua_pfx" != "X"; then -! if test "X$LUA_INC" != "X"; then - dnl Test alternate location using version - LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua$vi_cv_version_lua" - else -*************** -*** 491,507 **** - LUA_PRO="if_lua.pro" - AC_DEFINE(FEAT_LUA) - if test "$enable_luainterp" = "dynamic"; then -! dnl Determine the SONAME for the current version, but fallback to -! dnl liblua${vi_cv_version_lua}.so if no SONAME-versioned file is found. -! for i in 0 1 2 3 4 5 6 7 8 9; do -! if test -f "${vi_cv_path_lua_pfx}/lib/liblua${vi_cv_version_lua}.so.$i"; then -! LUA_SONAME=".$i" -! break -! fi -! done - AC_DEFINE(DYNAMIC_LUA) - LUA_LIBS="" -! LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"liblua${vi_cv_version_lua}.so$LUA_SONAME\\\" $LUA_CFLAGS" - fi - fi - if test "$fail_if_missing" = "yes" -a -z "$LUA_SRC"; then ---- 491,512 ---- - LUA_PRO="if_lua.pro" - AC_DEFINE(FEAT_LUA) - if test "$enable_luainterp" = "dynamic"; then -! if test -f "${vi_cv_path_lua_pfx}/bin/cyglua-${vi_cv_version_lua}.dll"; then -! vi_cv_dll_name_lua="cyglua-${vi_cv_version_lua}.dll" -! else -! dnl Determine the SONAME for the current version, but fallback to -! dnl liblua${vi_cv_version_lua}.so if no SONAME-versioned file is found. -! for i in 0 1 2 3 4 5 6 7 8 9; do -! if test -f "${vi_cv_path_lua_pfx}/lib/liblua${vi_cv_version_lua}.so.$i"; then -! LUA_SONAME=".$i" -! break -! fi -! done -! vi_cv_dll_name_lua="liblua${vi_cv_version_lua}.so$LUA_SONAME" -! fi - AC_DEFINE(DYNAMIC_LUA) - LUA_LIBS="" -! LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"${vi_cv_dll_name_lua}\\\" $LUA_CFLAGS" - fi - fi - if test "$fail_if_missing" = "yes" -a -z "$LUA_SRC"; then -*** ../vim-7.3.673/src/auto/configure 2012-09-21 13:26:44.000000000 +0200 ---- src/auto/configure 2012-10-03 14:42:13.000000000 +0200 -*************** -*** 4648,4662 **** - - LUA_INC= - if test "X$vi_cv_path_lua_pfx" != "X"; then -! { $as_echo "$as_me:${as_lineno-$LINENO}: checking if lua.h can be found in $vi_cv_path_lua_pfx/include" >&5 -! $as_echo_n "checking if lua.h can be found in $vi_cv_path_lua_pfx/include... " >&6; } -! if test -f $vi_cv_path_lua_pfx/include/lua.h; then -! { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -! $as_echo "yes" >&6; } -! else -! { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -! $as_echo "no" >&6; } -! # Extract the first word of "lua", so it can be a program name with args. - set dummy lua; ac_word=$2 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } ---- 4648,4654 ---- - - LUA_INC= - if test "X$vi_cv_path_lua_pfx" != "X"; then -! # Extract the first word of "lua", so it can be a program name with args. - set dummy lua; ac_word=$2 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } -*************** -*** 4696,4703 **** - fi - - -! if test "X$vi_cv_path_lua" != "X"; then -! { $as_echo "$as_me:${as_lineno-$LINENO}: checking Lua version" >&5 - $as_echo_n "checking Lua version... " >&6; } - if test "${vi_cv_version_lua+set}" = set; then : - $as_echo_n "(cached) " >&6 ---- 4688,4695 ---- - fi - - -! if test "X$vi_cv_path_lua" != "X"; then -! { $as_echo "$as_me:${as_lineno-$LINENO}: checking Lua version" >&5 - $as_echo_n "checking Lua version... " >&6; } - if test "${vi_cv_version_lua+set}" = set; then : - $as_echo_n "(cached) " >&6 -*************** -*** 4706,4728 **** - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_version_lua" >&5 - $as_echo "$vi_cv_version_lua" >&6; } -! { $as_echo "$as_me:${as_lineno-$LINENO}: checking if lua.h can be found in $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua" >&5 - $as_echo_n "checking if lua.h can be found in $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua... " >&6; } -! if test -f $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua/lua.h; then -! { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 - $as_echo "yes" >&6; } -! LUA_INC=/lua$vi_cv_version_lua -! else -! { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 - $as_echo "no" >&6; } -! vi_cv_path_lua_pfx= -! fi - fi - fi - fi - - if test "X$vi_cv_path_lua_pfx" != "X"; then -! if test "X$vi_cv_version_lua" != "X"; then - LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua$vi_cv_version_lua" - else - LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua" ---- 4698,4728 ---- - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_version_lua" >&5 - $as_echo "$vi_cv_version_lua" >&6; } -! fi -! { $as_echo "$as_me:${as_lineno-$LINENO}: checking if lua.h can be found in $vi_cv_path_lua_pfx/include" >&5 -! $as_echo_n "checking if lua.h can be found in $vi_cv_path_lua_pfx/include... " >&6; } -! if test -f $vi_cv_path_lua_pfx/include/lua.h; then -! { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -! $as_echo "yes" >&6; } -! else -! { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -! $as_echo "no" >&6; } -! { $as_echo "$as_me:${as_lineno-$LINENO}: checking if lua.h can be found in $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua" >&5 - $as_echo_n "checking if lua.h can be found in $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua... " >&6; } -! if test -f $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua/lua.h; then -! { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 - $as_echo "yes" >&6; } -! LUA_INC=/lua$vi_cv_version_lua -! else -! { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 - $as_echo "no" >&6; } -! vi_cv_path_lua_pfx= - fi - fi - fi - - if test "X$vi_cv_path_lua_pfx" != "X"; then -! if test "X$LUA_INC" != "X"; then - LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua$vi_cv_version_lua" - else - LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua" -*************** -*** 4734,4749 **** - $as_echo "#define FEAT_LUA 1" >>confdefs.h - - if test "$enable_luainterp" = "dynamic"; then -! for i in 0 1 2 3 4 5 6 7 8 9; do -! if test -f "${vi_cv_path_lua_pfx}/lib/liblua${vi_cv_version_lua}.so.$i"; then -! LUA_SONAME=".$i" -! break -! fi -! done - $as_echo "#define DYNAMIC_LUA 1" >>confdefs.h - - LUA_LIBS="" -! LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"liblua${vi_cv_version_lua}.so$LUA_SONAME\\\" $LUA_CFLAGS" - fi - fi - if test "$fail_if_missing" = "yes" -a -z "$LUA_SRC"; then ---- 4734,4754 ---- - $as_echo "#define FEAT_LUA 1" >>confdefs.h - - if test "$enable_luainterp" = "dynamic"; then -! if test -f "${vi_cv_path_lua_pfx}/bin/cyglua-${vi_cv_version_lua}.dll"; then -! vi_cv_dll_name_lua="cyglua-${vi_cv_version_lua}.dll" -! else -! for i in 0 1 2 3 4 5 6 7 8 9; do -! if test -f "${vi_cv_path_lua_pfx}/lib/liblua${vi_cv_version_lua}.so.$i"; then -! LUA_SONAME=".$i" -! break -! fi -! done -! vi_cv_dll_name_lua="liblua${vi_cv_version_lua}.so$LUA_SONAME" -! fi - $as_echo "#define DYNAMIC_LUA 1" >>confdefs.h - - LUA_LIBS="" -! LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"${vi_cv_dll_name_lua}\\\" $LUA_CFLAGS" - fi - fi - if test "$fail_if_missing" = "yes" -a -z "$LUA_SRC"; then -*** ../vim-7.3.673/src/version.c 2012-10-03 13:35:45.000000000 +0200 ---- src/version.c 2012-10-03 14:44:56.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 674, - /**/ - --- -The Law, in its majestic equality, forbids the rich, as well as the -poor, to sleep under the bridges, to beg in the streets, and to steal -bread. -- Anatole France - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.675 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.675 -Problem: Using uninitialized memory with very long file name. -Solution: Put NUL after text when it is truncated. (ZyX) -Files: src/buffer.c - - -*** ../vim-7.3.674/src/buffer.c 2012-09-05 13:30:22.000000000 +0200 ---- src/buffer.c 2012-10-03 16:25:12.000000000 +0200 -*************** -*** 3058,3064 **** - - *p++ = '"'; - if (buf_spname(curbuf) != NULL) -! STRCPY(p, buf_spname(curbuf)); - else - { - if (!fullname && curbuf->b_fname != NULL) ---- 3058,3064 ---- - - *p++ = '"'; - if (buf_spname(curbuf) != NULL) -! vim_strncpy(p, buf_spname(curbuf), IOSIZE - (p - buffer) - 1); - else - { - if (!fullname && curbuf->b_fname != NULL) -*** ../vim-7.3.674/src/version.c 2012-10-03 14:48:03.000000000 +0200 ---- src/version.c 2012-10-03 16:29:28.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 675, - /**/ - --- -It is illegal to rob a bank and then shoot at the bank teller with a water -pistol. - [real standing law in Louisana, United States of America] - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.676 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.676 -Problem: Ruby compilation on Windows 32 bit doesn't work. -Solution: Only use some functions for 64 bit. (Ken Takata) -Files: src/if_ruby.c - - -*** ../vim-7.3.675/src/if_ruby.c 2012-09-18 16:36:26.000000000 +0200 ---- src/if_ruby.c 2012-10-03 17:55:58.000000000 +0200 -*************** -*** 178,186 **** ---- 178,188 ---- - #define rb_hash_new dll_rb_hash_new - #define rb_inspect dll_rb_inspect - #define rb_int2inum dll_rb_int2inum -+ #if SIZEOF_INT < SIZEOF_LONG /* 64 bits only */ - #define rb_fix2int dll_rb_fix2int - #define rb_num2int dll_rb_num2int - #define rb_num2uint dll_rb_num2uint -+ #endif - #define rb_lastline_get dll_rb_lastline_get - #define rb_lastline_set dll_rb_lastline_set - #define rb_load_protect dll_rb_load_protect -*************** -*** 271,279 **** ---- 273,283 ---- - static VALUE (*dll_rb_hash_new) (void); - static VALUE (*dll_rb_inspect) (VALUE); - static VALUE (*dll_rb_int2inum) (long); -+ #if SIZEOF_INT < SIZEOF_LONG /* 64 bits only */ - static long (*dll_rb_fix2int) (VALUE); - static long (*dll_rb_num2int) (VALUE); - static unsigned long (*dll_rb_num2uint) (VALUE); -+ #endif - static VALUE (*dll_rb_lastline_get) (void); - static void (*dll_rb_lastline_set) (VALUE); - static void (*dll_rb_load_protect) (VALUE, int, int*); -*************** -*** 382,390 **** ---- 386,396 ---- - {"rb_hash_new", (RUBY_PROC*)&dll_rb_hash_new}, - {"rb_inspect", (RUBY_PROC*)&dll_rb_inspect}, - {"rb_int2inum", (RUBY_PROC*)&dll_rb_int2inum}, -+ #if SIZEOF_INT < SIZEOF_LONG /* 64 bits only */ - {"rb_fix2int", (RUBY_PROC*)&dll_rb_fix2int}, - {"rb_num2int", (RUBY_PROC*)&dll_rb_num2int}, - {"rb_num2uint", (RUBY_PROC*)&dll_rb_num2uint}, -+ #endif - {"rb_lastline_get", (RUBY_PROC*)&dll_rb_lastline_get}, - {"rb_lastline_set", (RUBY_PROC*)&dll_rb_lastline_set}, - {"rb_load_protect", (RUBY_PROC*)&dll_rb_load_protect}, -*** ../vim-7.3.675/src/version.c 2012-10-03 17:12:43.000000000 +0200 ---- src/version.c 2012-10-03 17:52:11.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 676, - /**/ - --- -Why don't cannibals eat clowns? -Because they taste funny. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.677 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.677 -Problem: buf_spname() is used inconsistently. -Solution: Make the return type a char_u pointer. Check the size of the - returned string. -Files: src/buffer.c, src/proto/buffer.pro, src/ex_cmds2.c, - src/ex_docmd.c, src/memline.c, src/screen.c - - -*** ../vim-7.3.676/src/buffer.c 2012-10-03 17:12:43.000000000 +0200 ---- src/buffer.c 2012-10-03 18:14:34.000000000 +0200 -*************** -*** 2635,2641 **** - continue; - msg_putchar('\n'); - if (buf_spname(buf) != NULL) -! STRCPY(NameBuff, buf_spname(buf)); - else - home_replace(buf, buf->b_fname, NameBuff, MAXPATHL, TRUE); - ---- 2635,2641 ---- - continue; - msg_putchar('\n'); - if (buf_spname(buf) != NULL) -! vim_strncpy(NameBuff, buf_spname(buf), MAXPATHL - 1); - else - home_replace(buf, buf->b_fname, NameBuff, MAXPATHL, TRUE); - -*************** -*** 3350,3356 **** - else - { - if (buf_spname(curbuf) != NULL) -! i_name = (char_u *)buf_spname(curbuf); - else /* use file name only in icon */ - i_name = gettail(curbuf->b_ffname); - *i_str = NUL; ---- 3350,3356 ---- - else - { - if (buf_spname(curbuf) != NULL) -! i_name = buf_spname(curbuf); - else /* use file name only in icon */ - i_name = gettail(curbuf->b_ffname); - *i_str = NUL; -*************** -*** 3766,3772 **** - case STL_FILENAME: - fillable = FALSE; /* don't change ' ' to fillchar */ - if (buf_spname(wp->w_buffer) != NULL) -! STRCPY(NameBuff, buf_spname(wp->w_buffer)); - else - { - t = (opt == STL_FULLPATH) ? wp->w_buffer->b_ffname ---- 3766,3772 ---- - case STL_FILENAME: - fillable = FALSE; /* don't change ' ' to fillchar */ - if (buf_spname(wp->w_buffer) != NULL) -! vim_strncpy(NameBuff, buf_spname(wp->w_buffer), MAXPATHL - 1); - else - { - t = (opt == STL_FULLPATH) ? wp->w_buffer->b_ffname -*************** -*** 5244,5250 **** - * Return special buffer name. - * Returns NULL when the buffer has a normal file name. - */ -! char * - buf_spname(buf) - buf_T *buf; - { ---- 5244,5250 ---- - * Return special buffer name. - * Returns NULL when the buffer has a normal file name. - */ -! char_u * - buf_spname(buf) - buf_T *buf; - { -*************** -*** 5263,5271 **** - goto win_found; - win_found: - if (win != NULL && win->w_llist_ref != NULL) -! return _(msg_loclist); - else -! return _(msg_qflist); - } - #endif - #ifdef FEAT_QUICKFIX ---- 5263,5271 ---- - goto win_found; - win_found: - if (win != NULL && win->w_llist_ref != NULL) -! return (char_u *)_(msg_loclist); - else -! return (char_u *)_(msg_qflist); - } - #endif - #ifdef FEAT_QUICKFIX -*************** -*** 5274,5285 **** - if (bt_nofile(buf)) - { - if (buf->b_sfname != NULL) -! return (char *)buf->b_sfname; -! return _("[Scratch]"); - } - #endif - if (buf->b_fname == NULL) -! return _("[No Name]"); - return NULL; - } - ---- 5274,5285 ---- - if (bt_nofile(buf)) - { - if (buf->b_sfname != NULL) -! return buf->b_sfname; -! return (char_u *)_("[Scratch]"); - } - #endif - if (buf->b_fname == NULL) -! return (char_u *)_("[No Name]"); - return NULL; - } - -*** ../vim-7.3.676/src/proto/buffer.pro 2012-07-10 15:18:18.000000000 +0200 ---- src/proto/buffer.pro 2012-10-03 18:17:58.000000000 +0200 -*************** -*** 51,57 **** - void do_modelines __ARGS((int flags)); - int read_viminfo_bufferlist __ARGS((vir_T *virp, int writing)); - void write_viminfo_bufferlist __ARGS((FILE *fp)); -! char *buf_spname __ARGS((buf_T *buf)); - void buf_addsign __ARGS((buf_T *buf, int id, linenr_T lnum, int typenr)); - linenr_T buf_change_sign_type __ARGS((buf_T *buf, int markId, int typenr)); - int buf_getsigntype __ARGS((buf_T *buf, linenr_T lnum, int type)); ---- 51,57 ---- - void do_modelines __ARGS((int flags)); - int read_viminfo_bufferlist __ARGS((vir_T *virp, int writing)); - void write_viminfo_bufferlist __ARGS((FILE *fp)); -! char_u *buf_spname __ARGS((buf_T *buf)); - void buf_addsign __ARGS((buf_T *buf, int id, linenr_T lnum, int typenr)); - linenr_T buf_change_sign_type __ARGS((buf_T *buf, int markId, int typenr)); - int buf_getsigntype __ARGS((buf_T *buf, linenr_T lnum, int type)); -*** ../vim-7.3.676/src/ex_cmds2.c 2012-06-29 12:57:03.000000000 +0200 ---- src/ex_cmds2.c 2012-10-03 18:15:26.000000000 +0200 -*************** -*** 1688,1695 **** - msg_didout = FALSE; - } - if (EMSG2(_("E162: No write since last change for buffer \"%s\""), -! buf_spname(buf) != NULL ? (char_u *)buf_spname(buf) : -! buf->b_fname)) - { - save = no_wait_return; - no_wait_return = FALSE; ---- 1688,1694 ---- - msg_didout = FALSE; - } - if (EMSG2(_("E162: No write since last change for buffer \"%s\""), -! buf_spname(buf) != NULL ? buf_spname(buf) : buf->b_fname)) - { - save = no_wait_return; - no_wait_return = FALSE; -*** ../vim-7.3.676/src/ex_docmd.c 2012-09-18 16:47:00.000000000 +0200 ---- src/ex_docmd.c 2012-10-03 18:15:47.000000000 +0200 -*************** -*** 7602,7608 **** - msg_putchar(bufIsChanged(wp->w_buffer) ? '+' : ' '); - msg_putchar(' '); - if (buf_spname(wp->w_buffer) != NULL) -! STRCPY(IObuff, buf_spname(wp->w_buffer)); - else - home_replace(wp->w_buffer, wp->w_buffer->b_fname, - IObuff, IOSIZE, TRUE); ---- 7602,7608 ---- - msg_putchar(bufIsChanged(wp->w_buffer) ? '+' : ' '); - msg_putchar(' '); - if (buf_spname(wp->w_buffer) != NULL) -! vim_strncpy(IObuff, buf_spname(wp->w_buffer), IOSIZE - 1); - else - home_replace(wp->w_buffer, wp->w_buffer->b_fname, - IObuff, IOSIZE, TRUE); -*** ../vim-7.3.676/src/memline.c 2011-10-26 11:44:15.000000000 +0200 ---- src/memline.c 2012-10-03 18:18:23.000000000 +0200 -*************** -*** 780,788 **** - need_wait_return = TRUE; /* call wait_return later */ - ++no_wait_return; - (void)EMSG2(_("E303: Unable to open swap file for \"%s\", recovery impossible"), -! buf_spname(buf) != NULL -! ? (char_u *)buf_spname(buf) -! : buf->b_fname); - --no_wait_return; - } - ---- 780,786 ---- - need_wait_return = TRUE; /* call wait_return later */ - ++no_wait_return; - (void)EMSG2(_("E303: Unable to open swap file for \"%s\", recovery impossible"), -! buf_spname(buf) != NULL ? buf_spname(buf) : buf->b_fname); - --no_wait_return; - } - -*************** -*** 1315,1321 **** - smsg((char_u *)_("Using swap file \"%s\""), NameBuff); - - if (buf_spname(curbuf) != NULL) -! STRCPY(NameBuff, buf_spname(curbuf)); - else - home_replace(NULL, curbuf->b_ffname, NameBuff, MAXPATHL, TRUE); - smsg((char_u *)_("Original file \"%s\""), NameBuff); ---- 1313,1319 ---- - smsg((char_u *)_("Using swap file \"%s\""), NameBuff); - - if (buf_spname(curbuf) != NULL) -! vim_strncpy(NameBuff, buf_spname(curbuf), MAXPATHL - 1); - else - home_replace(NULL, curbuf->b_ffname, NameBuff, MAXPATHL, TRUE); - smsg((char_u *)_("Original file \"%s\""), NameBuff); -*** ../vim-7.3.676/src/screen.c 2012-08-23 18:55:50.000000000 +0200 ---- src/screen.c 2012-10-03 18:17:25.000000000 +0200 -*************** -*** 9876,9882 **** - buf_T *buf; - { - if (buf_spname(buf) != NULL) -! STRCPY(NameBuff, buf_spname(buf)); - else - home_replace(buf, buf->b_fname, NameBuff, MAXPATHL, TRUE); - trans_characters(NameBuff, MAXPATHL); ---- 9876,9882 ---- - buf_T *buf; - { - if (buf_spname(buf) != NULL) -! vim_strncpy(NameBuff, buf_spname(buf), MAXPATHL - 1); - else - home_replace(buf, buf->b_fname, NameBuff, MAXPATHL, TRUE); - trans_characters(NameBuff, MAXPATHL); -*** ../vim-7.3.676/src/version.c 2012-10-03 18:06:55.000000000 +0200 ---- src/version.c 2012-10-03 18:22:18.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 677, - /**/ - --- -bashian roulette: -$ ((RANDOM%6)) || rm -rf ~ - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.678 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.678 -Problem: Ruby .so name may not be correct. -Solution: Use the LIBRUBY_SO entry from the config. (Vit Ondruch) -Files: src/configure.in, src/auto/configure - - -*** ../vim-7.3.677/src/configure.in 2012-10-03 14:48:03.000000000 +0200 ---- src/configure.in 2012-10-03 18:38:24.000000000 +0200 -*************** -*** 1487,1493 **** - RUBY_PRO="if_ruby.pro" - AC_DEFINE(FEAT_RUBY) - if test "$enable_rubyinterp" = "dynamic"; then -! libruby=`$vi_cv_path_ruby -r rbconfig -e 'printf "lib%s.%s\n", Config::CONFIG[["RUBY_SO_NAME"]], Config::CONFIG[["DLEXT"]]'` - AC_DEFINE(DYNAMIC_RUBY) - RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS" - RUBY_LIBS= ---- 1487,1493 ---- - RUBY_PRO="if_ruby.pro" - AC_DEFINE(FEAT_RUBY) - if test "$enable_rubyinterp" = "dynamic"; then -! libruby=`$vi_cv_path_ruby -r rbconfig -e 'puts Config::CONFIG[["LIBRUBY_SO"]]'` - AC_DEFINE(DYNAMIC_RUBY) - RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS" - RUBY_LIBS= -*** ../vim-7.3.677/src/auto/configure 2012-10-03 14:48:03.000000000 +0200 ---- src/auto/configure 2012-10-03 18:40:48.000000000 +0200 -*************** -*** 6376,6382 **** - $as_echo "#define FEAT_RUBY 1" >>confdefs.h - - if test "$enable_rubyinterp" = "dynamic"; then -! libruby=`$vi_cv_path_ruby -r rbconfig -e 'printf "lib%s.%s\n", Config::CONFIG["RUBY_SO_NAME"], Config::CONFIG["DLEXT"]'` - $as_echo "#define DYNAMIC_RUBY 1" >>confdefs.h - - RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS" ---- 6376,6382 ---- - $as_echo "#define FEAT_RUBY 1" >>confdefs.h - - if test "$enable_rubyinterp" = "dynamic"; then -! libruby=`$vi_cv_path_ruby -r rbconfig -e 'puts Config::CONFIG["LIBRUBY_SO"]'` - $as_echo "#define DYNAMIC_RUBY 1" >>confdefs.h - - RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS" -*** ../vim-7.3.677/src/version.c 2012-10-03 18:24:55.000000000 +0200 ---- src/version.c 2012-10-03 18:49:09.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 678, - /**/ - --- -Snoring is prohibited unless all bedroom windows are closed and securely -locked. - [real standing law in Massachusetts, United States of America] - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.679 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.679 -Problem: Ruby detection uses Config, newer Ruby versions use RbConfig. -Solution: Detect the need to use RbConfig. (Vit Ondruch) -Files: src/configure.in, src/auto/configure - - -*** ../vim-7.3.678/src/configure.in 2012-10-03 18:49:55.000000000 +0200 ---- src/configure.in 2012-10-03 18:50:48.000000000 +0200 -*************** -*** 1442,1465 **** - AC_MSG_CHECKING(Ruby version) - if $vi_cv_path_ruby -e '(VERSION rescue RUBY_VERSION) >= "1.6.0" or exit 1' >/dev/null 2>/dev/null; then - AC_MSG_RESULT(OK) - AC_MSG_CHECKING(Ruby header files) -! rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e 'print Config::CONFIG[["rubyhdrdir"]] || Config::CONFIG[["archdir"]] || $hdrdir' 2>/dev/null` - if test "X$rubyhdrdir" != "X"; then - AC_MSG_RESULT($rubyhdrdir) - RUBY_CFLAGS="-I$rubyhdrdir" -! rubyarch=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["arch"]]'` - if test -d "$rubyhdrdir/$rubyarch"; then - RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyhdrdir/$rubyarch" - fi -! rubyversion=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["ruby_version"]].gsub(/\./, "")[[0,2]]'` - RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion" -! rubylibs=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LIBS"]]'` - if test "X$rubylibs" != "X"; then - RUBY_LIBS="$rubylibs" - fi -! librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBYARG"]])'` -! librubya=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBY_A"]])'` -! rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["libdir"]])'` - if test -f "$rubylibdir/$librubya"; then - librubyarg="$librubyarg" - RUBY_LIBS="$RUBY_LIBS -L$rubylibdir" ---- 1442,1471 ---- - AC_MSG_CHECKING(Ruby version) - if $vi_cv_path_ruby -e '(VERSION rescue RUBY_VERSION) >= "1.6.0" or exit 1' >/dev/null 2>/dev/null; then - AC_MSG_RESULT(OK) -+ AC_MSG_CHECKING(Ruby rbconfig) -+ ruby_rbconfig="RbConfig" -+ if ! $vi_cv_path_ruby -r rbconfig -e 'RbConfig' >/dev/null 2>/dev/null; then -+ ruby_rbconfig="Config" -+ fi -+ AC_MSG_RESULT($ruby_rbconfig) - AC_MSG_CHECKING(Ruby header files) -! rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e "print $ruby_rbconfig::CONFIG[['rubyhdrdir']] || $ruby_rbconfig::CONFIG[['archdir']] || \\$hdrdir" 2>/dev/null` - if test "X$rubyhdrdir" != "X"; then - AC_MSG_RESULT($rubyhdrdir) - RUBY_CFLAGS="-I$rubyhdrdir" -! rubyarch=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['arch']]"` - if test -d "$rubyhdrdir/$rubyarch"; then - RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyhdrdir/$rubyarch" - fi -! rubyversion=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['ruby_version']].gsub(/\./, '')[[0,2]]"` - RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion" -! rubylibs=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LIBS']]"` - if test "X$rubylibs" != "X"; then - RUBY_LIBS="$rubylibs" - fi -! librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBYARG']])"` -! librubya=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBY_A']])"` -! rubylibdir=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['libdir']])"` - if test -f "$rubylibdir/$librubya"; then - librubyarg="$librubyarg" - RUBY_LIBS="$RUBY_LIBS -L$rubylibdir" -*************** -*** 1472,1478 **** - if test "X$librubyarg" != "X"; then - RUBY_LIBS="$librubyarg $RUBY_LIBS" - fi -! rubyldflags=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LDFLAGS"]]'` - if test "X$rubyldflags" != "X"; then - dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only - dnl be included if requested by passing --with-mac-arch to ---- 1478,1484 ---- - if test "X$librubyarg" != "X"; then - RUBY_LIBS="$librubyarg $RUBY_LIBS" - fi -! rubyldflags=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LDFLAGS']]"` - if test "X$rubyldflags" != "X"; then - dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only - dnl be included if requested by passing --with-mac-arch to -*************** -*** 1487,1493 **** - RUBY_PRO="if_ruby.pro" - AC_DEFINE(FEAT_RUBY) - if test "$enable_rubyinterp" = "dynamic"; then -! libruby=`$vi_cv_path_ruby -r rbconfig -e 'puts Config::CONFIG[["LIBRUBY_SO"]]'` - AC_DEFINE(DYNAMIC_RUBY) - RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS" - RUBY_LIBS= ---- 1493,1499 ---- - RUBY_PRO="if_ruby.pro" - AC_DEFINE(FEAT_RUBY) - if test "$enable_rubyinterp" = "dynamic"; then -! libruby=`$vi_cv_path_ruby -r rbconfig -e "puts $ruby_rbconfig::CONFIG[['LIBRUBY_SO']]"` - AC_DEFINE(DYNAMIC_RUBY) - RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS" - RUBY_LIBS= -*** ../vim-7.3.678/src/auto/configure 2012-10-03 18:49:55.000000000 +0200 ---- src/auto/configure 2012-10-03 18:51:38.000000000 +0200 -*************** -*** 6332,6357 **** - if $vi_cv_path_ruby -e '(VERSION rescue RUBY_VERSION) >= "1.6.0" or exit 1' >/dev/null 2>/dev/null; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: OK" >&5 - $as_echo "OK" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking Ruby header files" >&5 - $as_echo_n "checking Ruby header files... " >&6; } -! rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e 'print Config::CONFIG["rubyhdrdir"] || Config::CONFIG["archdir"] || $hdrdir' 2>/dev/null` - if test "X$rubyhdrdir" != "X"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $rubyhdrdir" >&5 - $as_echo "$rubyhdrdir" >&6; } - RUBY_CFLAGS="-I$rubyhdrdir" -! rubyarch=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG["arch"]'` - if test -d "$rubyhdrdir/$rubyarch"; then - RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyhdrdir/$rubyarch" - fi -! rubyversion=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG["ruby_version"].gsub(/\./, "")[0,2]'` - RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion" -! rubylibs=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG["LIBS"]'` - if test "X$rubylibs" != "X"; then - RUBY_LIBS="$rubylibs" - fi -! librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG["LIBRUBYARG"])'` -! librubya=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG["LIBRUBY_A"])'` -! rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG["libdir"])'` - if test -f "$rubylibdir/$librubya"; then - librubyarg="$librubyarg" - RUBY_LIBS="$RUBY_LIBS -L$rubylibdir" ---- 6332,6365 ---- - if $vi_cv_path_ruby -e '(VERSION rescue RUBY_VERSION) >= "1.6.0" or exit 1' >/dev/null 2>/dev/null; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: OK" >&5 - $as_echo "OK" >&6; } -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking Ruby rbconfig" >&5 -+ $as_echo_n "checking Ruby rbconfig... " >&6; } -+ ruby_rbconfig="RbConfig" -+ if ! $vi_cv_path_ruby -r rbconfig -e 'RbConfig' >/dev/null 2>/dev/null; then -+ ruby_rbconfig="Config" -+ fi -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ruby_rbconfig" >&5 -+ $as_echo "$ruby_rbconfig" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking Ruby header files" >&5 - $as_echo_n "checking Ruby header files... " >&6; } -! rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e "print $ruby_rbconfig::CONFIG['rubyhdrdir'] || $ruby_rbconfig::CONFIG['archdir'] || \\$hdrdir" 2>/dev/null` - if test "X$rubyhdrdir" != "X"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $rubyhdrdir" >&5 - $as_echo "$rubyhdrdir" >&6; } - RUBY_CFLAGS="-I$rubyhdrdir" -! rubyarch=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG['arch']"` - if test -d "$rubyhdrdir/$rubyarch"; then - RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyhdrdir/$rubyarch" - fi -! rubyversion=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG['ruby_version'].gsub(/\./, '')[0,2]"` - RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion" -! rubylibs=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG['LIBS']"` - if test "X$rubylibs" != "X"; then - RUBY_LIBS="$rubylibs" - fi -! librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG['LIBRUBYARG'])"` -! librubya=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG['LIBRUBY_A'])"` -! rubylibdir=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG['libdir'])"` - if test -f "$rubylibdir/$librubya"; then - librubyarg="$librubyarg" - RUBY_LIBS="$RUBY_LIBS -L$rubylibdir" -*************** -*** 6363,6369 **** - if test "X$librubyarg" != "X"; then - RUBY_LIBS="$librubyarg $RUBY_LIBS" - fi -! rubyldflags=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG["LDFLAGS"]'` - if test "X$rubyldflags" != "X"; then - rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'` - if test "X$rubyldflags" != "X"; then ---- 6371,6377 ---- - if test "X$librubyarg" != "X"; then - RUBY_LIBS="$librubyarg $RUBY_LIBS" - fi -! rubyldflags=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG['LDFLAGS']"` - if test "X$rubyldflags" != "X"; then - rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'` - if test "X$rubyldflags" != "X"; then -*************** -*** 6376,6382 **** - $as_echo "#define FEAT_RUBY 1" >>confdefs.h - - if test "$enable_rubyinterp" = "dynamic"; then -! libruby=`$vi_cv_path_ruby -r rbconfig -e 'puts Config::CONFIG["LIBRUBY_SO"]'` - $as_echo "#define DYNAMIC_RUBY 1" >>confdefs.h - - RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS" ---- 6384,6390 ---- - $as_echo "#define FEAT_RUBY 1" >>confdefs.h - - if test "$enable_rubyinterp" = "dynamic"; then -! libruby=`$vi_cv_path_ruby -r rbconfig -e "puts $ruby_rbconfig::CONFIG['LIBRUBY_SO']"` - $as_echo "#define DYNAMIC_RUBY 1" >>confdefs.h - - RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS" -*** ../vim-7.3.678/src/version.c 2012-10-03 18:49:55.000000000 +0200 ---- src/version.c 2012-10-03 21:08:31.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 679, - /**/ - --- -Close your shells, or I'll kill -9 you -Tomorrow I'll quota you -Remember the disks'll always be full -And then while I'm away -I'll write ~ everyday -And I'll send-pr all my buggings to you. - [ CVS log "Beatles style" for FreeBSD ports/INDEX, Satoshi Asami ] - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.680 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.680 -Problem: Some files missing in the list of distributed files. -Solution: Add lines for new files. -Files: Filelist - - -*** ../vim-7.3.679/Filelist 2012-08-29 14:18:26.000000000 +0200 ---- Filelist 2012-09-21 14:53:59.000000000 +0200 -*************** -*** 261,266 **** ---- 261,267 ---- - src/Make_mvc.mak \ - src/Make_w16.mak \ - src/bigvim.bat \ -+ src/bigvim64.bat \ - src/msvcsetup.bat \ - src/msvc2008.bat \ - src/msvc2010.bat \ -*************** -*** 352,357 **** ---- 353,359 ---- - src/xpm/COPYRIGHT \ - src/xpm/README.txt \ - src/xpm/include/*.h \ -+ src/xpm/x64/lib/libXpm.a \ - src/xpm/x64/lib/libXpm.lib \ - src/xpm/x86/lib/libXpm.a \ - src/xpm/x86/lib/libXpm.lib \ -*************** -*** 692,697 **** ---- 694,700 ---- - runtime/tutor/tutor.utf-8 \ - runtime/tutor/tutor.?? \ - runtime/tutor/tutor.??.* \ -+ runtime/tutor/tutor.??_??.* \ - runtime/tutor/tutor.bar \ - runtime/tutor/tutor.bar.* \ - runtime/spell/README.txt \ -*** ../vim-7.3.679/src/version.c 2012-10-03 21:09:33.000000000 +0200 ---- src/version.c 2012-10-03 21:32:38.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 680, - /**/ - --- -So when I saw the post to comp.editors, I rushed over to the FTP site to -grab it. So I yank apart the tarball, light x candles, where x= the -vim version multiplied by the md5sum of the source divided by the MAC of -my NIC (8A3FA78155A8A1D346C3C4A), put on black robes, dim the lights, -wave a dead chicken over the hard drive, and summon the power of GNU GCC -with the magic words "make config ; make!". - [Jason Spence, compiling Vim 5.0] - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.681 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.681 (after 7.3.680) -Problem: List of distributed files picks up backup files. -Solution: Make tutor patterns more specific. -Files: Filelist - - -*** ../vim-7.3.680/Filelist 2012-10-03 21:33:37.000000000 +0200 ---- Filelist 2012-10-03 21:44:29.000000000 +0200 -*************** -*** 693,702 **** - runtime/tutor/Makefile \ - runtime/tutor/tutor.utf-8 \ - runtime/tutor/tutor.?? \ -! runtime/tutor/tutor.??.* \ -! runtime/tutor/tutor.??_??.* \ - runtime/tutor/tutor.bar \ -! runtime/tutor/tutor.bar.* \ - runtime/spell/README.txt \ - runtime/spell/??/*.diff \ - runtime/spell/??/main.aap \ ---- 693,709 ---- - runtime/tutor/Makefile \ - runtime/tutor/tutor.utf-8 \ - runtime/tutor/tutor.?? \ -! runtime/tutor/tutor.??.utf-8 \ -! runtime/tutor/tutor.??.euc \ -! runtime/tutor/tutor.??.sjis \ -! runtime/tutor/tutor.??.iso9 \ -! runtime/tutor/tutor.??.big5 \ -! runtime/tutor/tutor.??.cp1250 \ -! runtime/tutor/tutor.??.cp1251 \ -! runtime/tutor/tutor.??.cp737 \ -! runtime/tutor/tutor.??_??.utf-8 \ - runtime/tutor/tutor.bar \ -! runtime/tutor/tutor.bar.utf-8 \ - runtime/spell/README.txt \ - runtime/spell/??/*.diff \ - runtime/spell/??/main.aap \ -*** ../vim-7.3.680/src/version.c 2012-10-03 21:33:37.000000000 +0200 ---- src/version.c 2012-10-03 21:48:04.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 681, - /**/ - --- -Zen Microsystems: we're the om in .commmmmmmmm - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.682 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.682 (after 7.3.677) -Problem: Compiler complains about incompatible types. -Solution: Remove type casts. (hint by Danek Duvall) -Files: src/edit.c - - -*** ../vim-7.3.681/src/edit.c 2012-08-08 18:01:00.000000000 +0200 ---- src/edit.c 2012-10-04 22:33:22.000000000 +0200 -*************** -*** 4194,4201 **** - ins_buf->b_fname == NULL - ? buf_spname(ins_buf) - : ins_buf->b_sfname == NULL -! ? (char *)ins_buf->b_fname -! : (char *)ins_buf->b_sfname); - (void)msg_trunc_attr(IObuff, TRUE, hl_attr(HLF_R)); - } - else if (*e_cpt == NUL) ---- 4194,4201 ---- - ins_buf->b_fname == NULL - ? buf_spname(ins_buf) - : ins_buf->b_sfname == NULL -! ? ins_buf->b_fname -! : ins_buf->b_sfname); - (void)msg_trunc_attr(IObuff, TRUE, hl_attr(HLF_R)); - } - else if (*e_cpt == NUL) -*** ../vim-7.3.681/src/version.c 2012-10-03 21:48:38.000000000 +0200 ---- src/version.c 2012-10-04 22:36:15.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 682, - /**/ - --- -Dogs must have a permit signed by the mayor in order to congregate in groups -of three or more on private property. - [real standing law in Oklahoma, United States of America] - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.683 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.683 -Problem: ":python" may crash when vimbindeval() returns None. -Solution: Check for v_string to be NULL. (Yukihiro Nakadaira) -Files: src/if_py_both.h - - -*** ../vim-7.3.682/src/if_py_both.h 2012-09-21 14:00:05.000000000 +0200 ---- src/if_py_both.h 2012-10-05 21:05:06.000000000 +0200 -*************** -*** 351,357 **** - - if (our_tv->v_type == VAR_STRING) - { -! result = Py_BuildValue("s", our_tv->vval.v_string); - } - else if (our_tv->v_type == VAR_NUMBER) - { ---- 351,358 ---- - - if (our_tv->v_type == VAR_STRING) - { -! result = Py_BuildValue("s", our_tv->vval.v_string == NULL -! ? "" : (char *)our_tv->vval.v_string); - } - else if (our_tv->v_type == VAR_NUMBER) - { -*************** -*** 2751,2757 **** - switch (tv->v_type) - { - case VAR_STRING: -! return PyBytes_FromString((char *) tv->vval.v_string); - case VAR_NUMBER: - return PyLong_FromLong((long) tv->vval.v_number); - #ifdef FEAT_FLOAT ---- 2752,2759 ---- - switch (tv->v_type) - { - case VAR_STRING: -! return PyBytes_FromString(tv->vval.v_string == NULL -! ? "" : (char *)tv->vval.v_string); - case VAR_NUMBER: - return PyLong_FromLong((long) tv->vval.v_number); - #ifdef FEAT_FLOAT -*************** -*** 2763,2769 **** - case VAR_DICT: - return DictionaryNew(tv->vval.v_dict); - case VAR_FUNC: -! return FunctionNew(tv->vval.v_string); - case VAR_UNKNOWN: - Py_INCREF(Py_None); - return Py_None; ---- 2765,2772 ---- - case VAR_DICT: - return DictionaryNew(tv->vval.v_dict); - case VAR_FUNC: -! return FunctionNew(tv->vval.v_string == NULL -! ? (char_u *)"" : tv->vval.v_string); - case VAR_UNKNOWN: - Py_INCREF(Py_None); - return Py_None; -*** ../vim-7.3.682/src/version.c 2012-10-04 22:38:32.000000000 +0200 ---- src/version.c 2012-10-05 21:04:19.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 683, - /**/ - --- -SIGIRO -- irony detected (iron core dumped) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.684 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.684 -Problem: "make test" does not delete lua.vim. -Solution: Add lua.vim to the clean target. (Simon Ruderich) -Files: src/testdir/Makefile, src/testdir/Make_dos.mak, - src/testdir/Make_ming.mak, src/testdir/Make_vms.mms - - -*** ../vim-7.3.683/src/testdir/Makefile 2012-06-29 12:54:32.000000000 +0200 ---- src/testdir/Makefile 2012-10-06 19:04:54.000000000 +0200 -*************** -*** 48,57 **** - $(SCRIPTS) $(SCRIPTS_GUI): $(VIMPROG) - - clean: -! -rm -rf *.out *.failed *.rej *.orig test.log tiny.vim small.vim mbyte.vim mzscheme.vim test.ok X* valgrind.* viminfo - - test1.out: test1.in -! -rm -f $*.failed tiny.vim small.vim mbyte.vim mzscheme.vim test.ok X* viminfo - $(VALGRIND) $(VIMPROG) -u unix.vim -U NONE --noplugin -s dotest.in $*.in - @/bin/sh -c "if diff test.out $*.ok; \ - then mv -f test.out $*.out; \ ---- 48,57 ---- - $(SCRIPTS) $(SCRIPTS_GUI): $(VIMPROG) - - clean: -! -rm -rf *.out *.failed *.rej *.orig test.log tiny.vim small.vim mbyte.vim mzscheme.vim lua.vim test.ok X* valgrind.* viminfo - - test1.out: test1.in -! -rm -f $*.failed tiny.vim small.vim mbyte.vim mzscheme.vim lua.vim test.ok X* viminfo - $(VALGRIND) $(VIMPROG) -u unix.vim -U NONE --noplugin -s dotest.in $*.in - @/bin/sh -c "if diff test.out $*.ok; \ - then mv -f test.out $*.out; \ -*************** -*** 73,79 **** - fi \ - else echo $* NO OUTPUT >>test.log; \ - fi" -! # -rm -rf X* test.ok viminfo - - test49.out: test49.vim - ---- 73,79 ---- - fi \ - else echo $* NO OUTPUT >>test.log; \ - fi" -! -rm -rf X* test.ok viminfo - - test49.out: test49.vim - -*** ../vim-7.3.683/src/testdir/Make_dos.mak 2012-06-29 12:54:32.000000000 +0200 ---- src/testdir/Make_dos.mak 2012-10-06 19:04:02.000000000 +0200 -*************** -*** 62,67 **** ---- 62,68 ---- - -if exist tiny.vim del tiny.vim - -if exist mbyte.vim del mbyte.vim - -if exist mzscheme.vim del mzscheme.vim -+ -if exist lua.vim del lua.vim - -del X* - -if exist viminfo del viminfo - -*** ../vim-7.3.683/src/testdir/Make_ming.mak 2012-06-29 12:54:32.000000000 +0200 ---- src/testdir/Make_ming.mak 2012-10-06 19:04:08.000000000 +0200 -*************** -*** 85,90 **** ---- 85,91 ---- - -$(DEL) tiny.vim - -$(DEL) mbyte.vim - -$(DEL) mzscheme.vim -+ -$(DEL) lua.vim - -$(DEL) X* - -$(DEL) viminfo - -*** ../vim-7.3.683/src/testdir/Make_vms.mms 2012-04-05 16:56:38.000000000 +0200 ---- src/testdir/Make_vms.mms 2012-10-06 19:04:34.000000000 +0200 -*************** -*** 4,10 **** - # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> - # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> - # -! # Last change: 2012 Apr 05 - # - # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. - # Edit the lines in the Configuration section below to select. ---- 4,10 ---- - # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> - # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> - # -! # Last change: 2012 Oct 06 - # - # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. - # Edit the lines in the Configuration section below to select. -*************** -*** 184,188 **** ---- 184,189 ---- - -@ if "''F$SEARCH("small.vim")'" .NES. "" then delete/noconfirm/nolog small.vim.* - -@ if "''F$SEARCH("mbyte.vim")'" .NES. "" then delete/noconfirm/nolog mbyte.vim.* - -@ if "''F$SEARCH("mzscheme.vim")'" .NES. "" then delete/noconfirm/nolog mzscheme.vim.* -+ -@ if "''F$SEARCH("lua.vim")'" .NES. "" then delete/noconfirm/nolog lua.vim.* - -@ if "''F$SEARCH("viminfo.*")'" .NES. "" then delete/noconfirm/nolog viminfo.*.* - -*** ../vim-7.3.683/src/version.c 2012-10-05 21:30:04.000000000 +0200 ---- src/version.c 2012-10-06 18:59:40.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 684, - /**/ - --- -ERIC IDLE PLAYED: THE DEAD COLLECTOR, MR BINT (A VILLAGE NE'ER-DO -WELL VERY - KEEN ON BURNING WITCHES), SIR ROBIN, THE GUARD WHO DOESN'T - HICOUGH BUT TRIES TO GET THINGS STRAIGHT, CONCORDE (SIR - LAUNCELOT'S TRUSTY STEED), ROGER THE SHRUBBER (A SHRUBBER), - BROTHER MAYNARD - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.685 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.685 -Problem: No test for what patch 7.3.673 fixes. -Solution: Add a test. (Christian Brabandt) -Files: src/testdir/test53.in, src/testdir/test53.ok - - -*** ../vim-7.3.684/src/testdir/test53.in 2012-09-05 12:16:40.000000000 +0200 ---- src/testdir/test53.in 2012-10-11 03:31:27.000000000 +0200 -*************** -*** 42,47 **** ---- 42,50 ---- - gnd$h/\zs - gnd/[u]niquepattern/s - vlgnd -+ /mother -+ :set selection=exclusive -+ $cgNmongoose - :/^start:/,/^end:/wq! test.out - ENDTEST - -*************** -*** 69,72 **** ---- 72,76 ---- - zero width pattern - delete first and last chars - uniquepattern uniquepattern -+ my very excellent mother just served us nachos - end: -*** ../vim-7.3.684/src/testdir/test53.ok 2012-09-05 12:16:40.000000000 +0200 ---- src/testdir/test53.ok 2012-10-11 03:31:33.000000000 +0200 -*************** -*** 25,28 **** ---- 25,29 ---- - zerowidth pattern - elete first and last char - uniquepattern -+ my very excellent mongoose just served us nachos - end: -*** ../vim-7.3.684/src/version.c 2012-10-06 19:10:29.000000000 +0200 ---- src/version.c 2012-10-11 03:34:06.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 685, - /**/ - --- -FATAL ERROR! SYSTEM HALTED! - Press any key to continue doing nothing. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.686 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.686 -Problem: Using CTRL-\ e mappings is useful also when entering an - expression, but it doesn't work. (Marcin Szamotulski) -Solution: Allow using CTRL-\ e when entering an expression if it was not - typed. -Files: src/ex_getln.c - - -*** ../vim-7.3.685/src/ex_getln.c 2012-08-15 14:04:50.000000000 +0200 ---- src/ex_getln.c 2012-10-11 03:54:04.000000000 +0200 -*************** -*** 667,675 **** - c = plain_vgetc(); - --no_mapping; - --allow_keys; -! /* CTRL-\ e doesn't work when obtaining an expression. */ -! if (c != Ctrl_N && c != Ctrl_G -! && (c != 'e' || ccline.cmdfirstc == '=')) - { - vungetc(c); - c = Ctrl_BSL; ---- 667,676 ---- - c = plain_vgetc(); - --no_mapping; - --allow_keys; -! /* CTRL-\ e doesn't work when obtaining an expression, unless it -! * is in a mapping. */ -! if (c != Ctrl_N && c != Ctrl_G && (c != 'e' -! || (ccline.cmdfirstc == '=' && KeyTyped))) - { - vungetc(c); - c = Ctrl_BSL; -*** ../vim-7.3.685/src/version.c 2012-10-11 03:35:38.000000000 +0200 ---- src/version.c 2012-10-11 04:03:19.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 686, - /**/ - --- -(letter from Mark to Mike, about the film's probable certificate) - I would like to get back to the Censor and agree to lose the shits, take - the odd Jesus Christ out and lose Oh fuck off, but to retain 'fart in - your general direction', 'castanets of your testicles' and 'oral sex' - and ask him for an 'A' rating on that basis. - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.687 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.687 -Problem: Test 16 fails when $DISPLAY is not set. -Solution: Skip the test when $DISPLAY is not set. -Files: src/testdir/test16.in - - -*** ../vim-7.3.686/src/testdir/test16.in 2010-08-15 21:57:29.000000000 +0200 ---- src/testdir/test16.in 2012-10-11 04:02:11.000000000 +0200 -*************** -*** 2,7 **** ---- 2,8 ---- - For KDE set a font, empty 'guifont' may cause a hang. - - STARTTEST -+ :if $DISPLAY == "" | e! test.ok | wq! test.out | endif - :set exrc secure - :if has("gui_kde") - : set guifont=Courier\ 10\ Pitch/8/-1/5/50/0/0/0/0/0 -*** ../vim-7.3.686/src/version.c 2012-10-11 04:04:32.000000000 +0200 ---- src/version.c 2012-10-11 04:31:10.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 687, - /**/ - --- -A fool must search for a greater fool to find admiration. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.688 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.688 -Problem: Python 3.3 is not supported. -Solution: Add Python 3.3 support (Ken Takata) -Files: src/if_python3.c - - -*** ../vim-7.3.687/src/if_python3.c 2012-09-21 14:00:05.000000000 +0200 ---- src/if_python3.c 2012-10-14 03:19:53.000000000 +0200 -*************** -*** 174,180 **** - # define _PyObject_NextNotImplemented (*py3__PyObject_NextNotImplemented) - # define PyModule_AddObject py3_PyModule_AddObject - # define PyImport_AppendInittab py3_PyImport_AppendInittab -! # define _PyUnicode_AsString py3__PyUnicode_AsString - # undef PyUnicode_AsEncodedString - # define PyUnicode_AsEncodedString py3_PyUnicode_AsEncodedString - # undef PyBytes_AsString ---- 174,185 ---- - # define _PyObject_NextNotImplemented (*py3__PyObject_NextNotImplemented) - # define PyModule_AddObject py3_PyModule_AddObject - # define PyImport_AppendInittab py3_PyImport_AppendInittab -! # if PY_VERSION_HEX >= 0x030300f0 -! # undef _PyUnicode_AsString -! # define _PyUnicode_AsString py3_PyUnicode_AsUTF8String -! # else -! # define _PyUnicode_AsString py3__PyUnicode_AsString -! # endif - # undef PyUnicode_AsEncodedString - # define PyUnicode_AsEncodedString py3_PyUnicode_AsEncodedString - # undef PyBytes_AsString -*************** -*** 281,287 **** ---- 286,296 ---- - static PyObject* py3__Py_TrueStruct; - static int (*py3_PyModule_AddObject)(PyObject *m, const char *name, PyObject *o); - static int (*py3_PyImport_AppendInittab)(const char *name, PyObject* (*initfunc)(void)); -+ #if PY_VERSION_HEX >= 0x030300f0 -+ static char* (*py3_PyUnicode_AsUTF8String)(PyObject *unicode); -+ #else - static char* (*py3__PyUnicode_AsString)(PyObject *unicode); -+ #endif - static PyObject* (*py3_PyUnicode_AsEncodedString)(PyObject *unicode, const char* encoding, const char* errors); - static char* (*py3_PyBytes_AsString)(PyObject *bytes); - static int (*py3_PyBytes_AsStringAndSize)(PyObject *bytes, char **buffer, int *length); -*************** -*** 397,403 **** ---- 406,416 ---- - {"PyObject_Init", (PYTHON_PROC*)&py3__PyObject_Init}, - {"PyModule_AddObject", (PYTHON_PROC*)&py3_PyModule_AddObject}, - {"PyImport_AppendInittab", (PYTHON_PROC*)&py3_PyImport_AppendInittab}, -+ #if PY_VERSION_HEX >= 0x030300f0 -+ {"PyUnicode_AsUTF8String", (PYTHON_PROC*)&py3_PyUnicode_AsUTF8String}, -+ #else - {"_PyUnicode_AsString", (PYTHON_PROC*)&py3__PyUnicode_AsString}, -+ #endif - {"PyBytes_AsString", (PYTHON_PROC*)&py3_PyBytes_AsString}, - {"PyBytes_AsStringAndSize", (PYTHON_PROC*)&py3_PyBytes_AsStringAndSize}, - {"PyBytes_FromString", (PYTHON_PROC*)&py3_PyBytes_FromString}, -*************** -*** 490,495 **** ---- 503,514 ---- - - /* Load unicode functions separately as only the ucs2 or the ucs4 functions - * will be present in the library. */ -+ #if PY_VERSION_HEX >= 0x030300f0 -+ ucs_from_string = symbol_from_dll(hinstPy3, "PyUnicode_FromString"); -+ ucs_decode = symbol_from_dll(hinstPy3, "PyUnicode_Decode"); -+ ucs_as_encoded_string = symbol_from_dll(hinstPy3, -+ "PyUnicode_AsEncodedString"); -+ #else - ucs_from_string = symbol_from_dll(hinstPy3, "PyUnicodeUCS2_FromString"); - ucs_decode = symbol_from_dll(hinstPy3, - "PyUnicodeUCS2_Decode"); -*************** -*** 504,509 **** ---- 523,529 ---- - ucs_as_encoded_string = symbol_from_dll(hinstPy3, - "PyUnicodeUCS4_AsEncodedString"); - } -+ #endif - if (ucs_from_string && ucs_decode && ucs_as_encoded_string) - { - py3_PyUnicode_FromString = ucs_from_string; -*************** -*** 600,607 **** - - #define GET_ATTR_STRING(name, nameobj) \ - char *name = ""; \ -! if(PyUnicode_Check(nameobj)) \ -! name = _PyUnicode_AsString(nameobj) - - #define PY3OBJ_DELETED(obj) (obj->ob_base.ob_refcnt<=0) - ---- 620,627 ---- - - #define GET_ATTR_STRING(name, nameobj) \ - char *name = ""; \ -! if (PyUnicode_Check(nameobj)) \ -! name = _PyUnicode_AsString(nameobj) - - #define PY3OBJ_DELETED(obj) (obj->ob_base.ob_refcnt<=0) - -*************** -*** 704,709 **** ---- 724,731 ---- - Py_SetPythonHome(PYTHON3_HOME); - #endif - -+ PyImport_AppendInittab("vim", Py3Init_vim); -+ - #if !defined(MACOS) || defined(MACOS_X_UNIX) - Py_Initialize(); - #else -*************** -*** 719,726 **** - if (PythonIO_Init()) - goto fail; - -- PyImport_AppendInittab("vim", Py3Init_vim); -- - globals = PyModule_GetDict(PyImport_AddModule("__main__")); - - /* Remove the element from sys.path that was added because of our ---- 741,746 ---- -*** ../vim-7.3.687/src/version.c 2012-10-11 04:44:26.000000000 +0200 ---- src/version.c 2012-10-14 03:00:57.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 688, - /**/ - --- -The problem with political jokes is that they get elected. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.689 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.689 -Problem: MzScheme and Lua may use a NULL string. -Solution: Use an empty string instead of NULL. (Yukihiro Nakadaira) -Files: src/if_lua.c, src/if_mzsch.c - - -*** ../vim-7.3.688/src/if_lua.c 2012-06-29 12:54:32.000000000 +0200 ---- src/if_lua.c 2012-10-14 03:33:32.000000000 +0200 -*************** -*** 464,470 **** - switch (tv->v_type) - { - case VAR_STRING: -! lua_pushstring(L, (char *) tv->vval.v_string); - break; - case VAR_NUMBER: - lua_pushinteger(L, (int) tv->vval.v_number); ---- 464,471 ---- - switch (tv->v_type) - { - case VAR_STRING: -! lua_pushstring(L, tv->vval.v_string == NULL -! ? "" : (char *)tv->vval.v_string); - break; - case VAR_NUMBER: - lua_pushinteger(L, (int) tv->vval.v_number); -*** ../vim-7.3.688/src/if_mzsch.c 2012-02-12 01:55:50.000000000 +0100 ---- src/if_mzsch.c 2012-10-14 03:33:32.000000000 +0200 -*************** -*** 2649,2655 **** - new_value = FALSE; - else if (vim_value->v_type == VAR_STRING) - { -! result = scheme_make_string((char *)vim_value->vval.v_string); - MZ_GC_CHECK(); - } - else if (vim_value->v_type == VAR_NUMBER) ---- 2649,2656 ---- - new_value = FALSE; - else if (vim_value->v_type == VAR_STRING) - { -! result = scheme_make_string(vim_value->vval.v_string == NULL -! ? "" : (char *)vim_value->vval.v_string); - MZ_GC_CHECK(); - } - else if (vim_value->v_type == VAR_NUMBER) -*** ../vim-7.3.688/src/version.c 2012-10-14 03:22:49.000000000 +0200 ---- src/version.c 2012-10-14 03:33:49.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 689, - /**/ - --- -Computers make very fast, very accurate, mistakes. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.690 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.690 -Problem: When the current directory name is exactly the maximum path length - Vim may crash. -Solution: Only add "/" when there is room. (Danek Duvall) -Files: src/os_unix.c - - -*** ../vim-7.3.689/src/os_unix.c 2012-08-15 17:26:53.000000000 +0200 ---- src/os_unix.c 2012-10-14 04:28:40.000000000 +0200 -*************** -*** 2512,2526 **** - } - - l = STRLEN(buf); -! if (l >= len) -! retval = FAIL; - #ifndef VMS -! else -! { -! if (l > 0 && buf[l - 1] != '/' && *fname != NUL - && STRCMP(fname, ".") != 0) -! STRCAT(buf, "/"); -! } - #endif - } - ---- 2512,2523 ---- - } - - l = STRLEN(buf); -! if (l >= len - 1) -! retval = FAIL; /* no space for trailing "/" */ - #ifndef VMS -! else if (l > 0 && buf[l - 1] != '/' && *fname != NUL - && STRCMP(fname, ".") != 0) -! STRCAT(buf, "/"); - #endif - } - -*** ../vim-7.3.689/src/version.c 2012-10-14 03:41:54.000000000 +0200 ---- src/version.c 2012-10-14 04:26:17.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 690, - /**/ - --- -SOLDIER: What? Ridden on a horse? -ARTHUR: Yes! -SOLDIER: You're using coconuts! - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.691 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.691 -Problem: State specific to the Python thread is discarded. -Solution: Keep state between threads. (Paul) -Files: src/if_python.c - - -*** ../vim-7.3.690/src/if_python.c 2012-09-21 14:00:05.000000000 +0200 ---- src/if_python.c 2012-10-14 05:19:44.000000000 +0200 -*************** -*** 740,748 **** - #else - PyMac_Initialize(); - #endif -! /* initialise threads */ - PyEval_InitThreads(); -! - #ifdef DYNAMIC_PYTHON - get_exceptions(); - #endif ---- 740,750 ---- - #else - PyMac_Initialize(); - #endif -! /* Initialise threads and save the state using PyGILState_Ensure. -! * Without this call, thread-specific state (such as the system trace -! * hook), will be lost between invocations of Python code. */ - PyEval_InitThreads(); -! pygilstate = PyGILState_Ensure(); - #ifdef DYNAMIC_PYTHON - get_exceptions(); - #endif -*** ../vim-7.3.690/src/version.c 2012-10-14 04:35:16.000000000 +0200 ---- src/version.c 2012-10-14 05:14:35.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 691, - /**/ - --- -ARTHUR: The swallow may fly south with the sun, or the house martin or the - plover seek warmer hot lands in winter, yet these are not strangers to - our land. -SOLDIER: Are you suggesting coconuts migrate? - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.692 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.692 -Problem: Can't build GTK version with GTK 2.0. -Solution: Put GtkFileFilter declaration in the right place. (Yegappan - Lakshmanan) -Files: src/gui_gtk.c - - -*** ../vim-7.3.691/src/gui_gtk.c 2012-07-10 13:41:09.000000000 +0200 ---- src/gui_gtk.c 2012-10-18 05:12:34.000000000 +0200 -*************** -*** 845,851 **** - char_u dirbuf[MAXPATHL]; - guint log_handler; - const gchar *domain = "Gtk"; -- GtkFileFilter *gfilter; - - title = CONVERT_TO_UTF8(title); - ---- 845,850 ---- -*************** -*** 883,888 **** ---- 882,888 ---- - int i = 0; - char_u *patt; - char_u *p = filter; -+ GtkFileFilter *gfilter; - - gfilter = gtk_file_filter_new(); - patt = alloc(STRLEN(filter)); -*** ../vim-7.3.691/src/version.c 2012-10-14 05:20:05.000000000 +0200 ---- src/version.c 2012-10-18 05:13:55.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 692, - /**/ - --- -"The future's already arrived - it's just not evenly distributed yet." - -- William Gibson - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.693 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.693 -Problem: Can't make 'softtabstop' follow 'shiftwidth'. -Solution: When 'softtabstop' is negative use the value of 'shiftwidth'. - (so8res) -Files: src/edit.c, src/option.c, src/proto/option.pro - - -*** ../vim-7.3.692/src/edit.c 2012-10-04 22:38:32.000000000 +0200 ---- src/edit.c 2012-10-21 00:01:53.000000000 +0200 -*************** -*** 8885,8891 **** - */ - if ( mode == BACKSPACE_CHAR - && ((p_sta && in_indent) -! || (curbuf->b_p_sts != 0 - && curwin->w_cursor.col > 0 - && (*(ml_get_cursor() - 1) == TAB - || (*(ml_get_cursor() - 1) == ' ' ---- 8885,8891 ---- - */ - if ( mode == BACKSPACE_CHAR - && ((p_sta && in_indent) -! || (get_sts_value() != 0 - && curwin->w_cursor.col > 0 - && (*(ml_get_cursor() - 1) == TAB - || (*(ml_get_cursor() - 1) == ' ' -*************** -*** 8901,8907 **** - if (p_sta && in_indent) - ts = (int)get_sw_value(); - else -! ts = (int)curbuf->b_p_sts; - /* Compute the virtual column where we want to be. Since - * 'showbreak' may get in the way, need to get the last column of - * the previous character. */ ---- 8901,8907 ---- - if (p_sta && in_indent) - ts = (int)get_sw_value(); - else -! ts = (int)get_sts_value(); - /* Compute the virtual column where we want to be. Since - * 'showbreak' may get in the way, need to get the last column of - * the previous character. */ -*************** -*** 9590,9596 **** - */ - if (!curbuf->b_p_et - && !(p_sta && ind && curbuf->b_p_ts != get_sw_value()) -! && curbuf->b_p_sts == 0) - return TRUE; - - if (stop_arrow() == FAIL) ---- 9590,9596 ---- - */ - if (!curbuf->b_p_et - && !(p_sta && ind && curbuf->b_p_ts != get_sw_value()) -! && get_sts_value() == 0) - return TRUE; - - if (stop_arrow() == FAIL) -*************** -*** 9606,9613 **** - - if (p_sta && ind) /* insert tab in indent, use 'shiftwidth' */ - temp = (int)get_sw_value(); -! else if (curbuf->b_p_sts > 0) /* use 'softtabstop' when set */ -! temp = (int)curbuf->b_p_sts; - else /* otherwise use 'tabstop' */ - temp = (int)curbuf->b_p_ts; - temp -= get_nolist_virtcol() % temp; ---- 9606,9613 ---- - - if (p_sta && ind) /* insert tab in indent, use 'shiftwidth' */ - temp = (int)get_sw_value(); -! else if (curbuf->b_p_sts != 0) /* use 'softtabstop' when set */ -! temp = (int)get_sts_value(); - else /* otherwise use 'tabstop' */ - temp = (int)curbuf->b_p_ts; - temp -= get_nolist_virtcol() % temp; -*************** -*** 9635,9641 **** - /* - * When 'expandtab' not set: Replace spaces by TABs where possible. - */ -! if (!curbuf->b_p_et && (curbuf->b_p_sts || (p_sta && ind))) - { - char_u *ptr; - #ifdef FEAT_VREPLACE ---- 9635,9641 ---- - /* - * When 'expandtab' not set: Replace spaces by TABs where possible. - */ -! if (!curbuf->b_p_et && (get_sts_value() || (p_sta && ind))) - { - char_u *ptr; - #ifdef FEAT_VREPLACE -*** ../vim-7.3.692/src/option.c 2012-08-08 18:01:00.000000000 +0200 ---- src/option.c 2012-10-21 00:05:06.000000000 +0200 -*************** -*** 8509,8519 **** - p_window = Rows - 1; - } - -- if (curbuf->b_p_sts < 0) -- { -- errmsg = e_positive; -- curbuf->b_p_sts = 0; -- } - if (curbuf->b_p_ts <= 0) - { - errmsg = e_positive; ---- 8509,8514 ---- -*************** -*** 11429,11431 **** ---- 11424,11436 ---- - { - return curbuf->b_p_sw ? curbuf->b_p_sw : curbuf->b_p_ts; - } -+ -+ /* -+ * Return the effective softtabstop value for the current buffer, using the -+ * 'tabstop' value when 'softtabstop' is negative. -+ */ -+ long -+ get_sts_value() -+ { -+ return curbuf->b_p_sts < 0 ? get_sw_value() : curbuf->b_p_sts; -+ } -*** ../vim-7.3.692/src/proto/option.pro 2012-08-08 18:01:00.000000000 +0200 ---- src/proto/option.pro 2012-10-21 00:01:59.000000000 +0200 -*************** -*** 57,60 **** ---- 57,61 ---- - int file_ff_differs __ARGS((buf_T *buf, int ignore_empty)); - int check_ff_value __ARGS((char_u *p)); - long get_sw_value __ARGS((void)); -+ long get_sts_value __ARGS((void)); - /* vim: set ft=c : */ -*** ../vim-7.3.692/src/version.c 2012-10-18 05:18:27.000000000 +0200 ---- src/version.c 2012-10-21 00:07:19.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 693, - /**/ - --- -FIRST VILLAGER: We have found a witch. May we burn her? - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.694 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.694 -Problem: Now that 'shiftwidth' may use the value of 'tabstop' it is not so - easy to use in indent files. -Solution: Add the shiftwidth() function. (so8res) -Files: runtime/doc/eval.txt, src/eval.c - - -*** ../vim-7.3.693/runtime/doc/eval.txt 2012-06-29 12:54:32.000000000 +0200 ---- runtime/doc/eval.txt 2012-10-21 00:43:22.000000000 +0200 -*************** -*** 1921,1926 **** ---- 1932,1938 ---- - shellescape( {string} [, {special}]) - String escape {string} for use as shell - command argument -+ shiftwidth() Number effective value of 'shiftwidth' - simplify( {filename}) String simplify filename as much as possible - sin( {expr}) Float sine of {expr} - sinh( {expr}) Float hyperbolic sine of {expr} -*************** -*** 3732,3741 **** - Like |input()|, but when the GUI is running and text dialogs - are supported, a dialog window pops up to input the text. - Example: > -! :let n = inputdialog("value for shiftwidth", &sw) -! :if n != "" -! : let &sw = n -! :endif - < When the dialog is cancelled {cancelreturn} is returned. When - omitted an empty string is returned. - Hitting <Enter> works like pressing the OK button. Hitting ---- 3755,3764 ---- - Like |input()|, but when the GUI is running and text dialogs - are supported, a dialog window pops up to input the text. - Example: > -! :let n = inputdialog("value for shiftwidth", shiftwidth()) -! :if n != "" -! : let &sw = n -! :endif - < When the dialog is cancelled {cancelreturn} is returned. When - omitted an empty string is returned. - Hitting <Enter> works like pressing the OK button. Hitting -*************** -*** 5308,5313 **** ---- 5332,5354 ---- - :call system("chmod +w -- " . shellescape(expand("%"))) - - -+ shiftwidth() *shiftwidth()* -+ Returns the effective value of 'shiftwidth'. This is the -+ 'shiftwidth' value unless it is zero, in which case it is the -+ 'tabstop' value. To be backwards compatible in indent -+ plugins, use this: > -+ if exists('*shiftwidth') -+ func s:sw() -+ return shiftwidth() -+ endfunc -+ else -+ func s:sw() -+ return &sw -+ endfunc -+ endif -+ < And then use s:sw() instead of &sw. -+ -+ - simplify({filename}) *simplify()* - Simplify the file name as much as possible without changing - the meaning. Shortcuts (on MS-Windows) or symbolic links (on -*** ../vim-7.3.693/src/eval.c 2012-08-08 14:33:16.000000000 +0200 ---- src/eval.c 2012-10-21 00:29:15.000000000 +0200 -*************** -*** 687,692 **** ---- 687,693 ---- - static void f_settabwinvar __ARGS((typval_T *argvars, typval_T *rettv)); - static void f_setwinvar __ARGS((typval_T *argvars, typval_T *rettv)); - static void f_shellescape __ARGS((typval_T *argvars, typval_T *rettv)); -+ static void f_shiftwidth __ARGS((typval_T *argvars, typval_T *rettv)); - static void f_simplify __ARGS((typval_T *argvars, typval_T *rettv)); - #ifdef FEAT_FLOAT - static void f_sin __ARGS((typval_T *argvars, typval_T *rettv)); -*************** -*** 8051,8056 **** ---- 8052,8058 ---- - {"settabwinvar", 4, 4, f_settabwinvar}, - {"setwinvar", 3, 3, f_setwinvar}, - {"shellescape", 1, 2, f_shellescape}, -+ {"shiftwidth", 0, 0, f_shiftwidth}, - {"simplify", 1, 1, f_simplify}, - #ifdef FEAT_FLOAT - {"sin", 1, 1, f_sin}, -*************** -*** 16652,16657 **** ---- 16654,16670 ---- - } - - /* -+ * shiftwidth() function -+ */ -+ static void -+ f_shiftwidth(argvars, rettv) -+ typval_T *argvars; -+ typval_T *rettv; -+ { -+ rettv->vval.v_number = get_sw_value(); -+ } -+ -+ /* - * "simplify()" function - */ - static void -*** ../vim-7.3.693/src/version.c 2012-10-21 00:10:29.000000000 +0200 ---- src/version.c 2012-10-21 00:30:27.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 694, - /**/ - --- -CRONE: Who sent you? -ARTHUR: The Knights Who Say GNU! -CRONE: Aaaagh! (she looks around in rear) No! We have no licenses here. - "Monty Python and the Holy editor wars" PYTHON (MONTY) SOFTWARE LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.695 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.695 -Problem: Balloon cannot show multi-byte text. -Solution: Properly deal with multi-byte characters. (Dominique Pelle) -Files: src/gui_beval.c, src/ui.c - - -*** ../vim-7.3.694/src/gui_beval.c 2010-08-15 21:57:28.000000000 +0200 ---- src/gui_beval.c 2012-10-21 00:54:19.000000000 +0200 -*************** -*** 359,365 **** - } - } - -! col = vcol2col(wp, lnum, col) - 1; - - if (VIsual_active - && wp->w_buffer == curwin->w_buffer ---- 359,365 ---- - } - } - -! col = vcol2col(wp, lnum, col); - - if (VIsual_active - && wp->w_buffer == curwin->w_buffer -*************** -*** 377,384 **** - return FAIL; - - lbuf = ml_get_buf(curwin->w_buffer, VIsual.lnum, FALSE); -! lbuf = vim_strnsave(lbuf + spos->col, -! epos->col - spos->col + (*p_sel != 'e')); - lnum = spos->lnum; - col = spos->col; - } ---- 377,386 ---- - return FAIL; - - lbuf = ml_get_buf(curwin->w_buffer, VIsual.lnum, FALSE); -! len = epos->col - spos->col; -! if (*p_sel != 'e') -! len += MB_PTR2LEN(lbuf + epos->col); -! lbuf = vim_strnsave(lbuf + spos->col, len); - lnum = spos->lnum; - col = spos->col; - } -*** ../vim-7.3.694/src/ui.c 2012-08-29 16:26:01.000000000 +0200 ---- src/ui.c 2012-10-21 00:50:17.000000000 +0200 -*************** -*** 98,104 **** - #endif - - /* -! * ui_inchar(): low level input funcion. - * Get characters from the keyboard. - * Return the number of characters that are available. - * If "wtime" == 0 do not wait for characters. ---- 98,104 ---- - #endif - - /* -! * ui_inchar(): low level input function. - * Get characters from the keyboard. - * Return the number of characters that are available. - * If "wtime" == 0 do not wait for characters. -*************** -*** 493,499 **** - } - } - #else -! /* Only own the clibpard when we didn't own it yet. */ - if (!cbd->owned && cbd->available) - cbd->owned = (clip_gen_own_selection(cbd) == OK); - #endif ---- 493,499 ---- - } - } - #else -! /* Only own the clipboard when we didn't own it yet. */ - if (!cbd->owned && cbd->available) - cbd->owned = (clip_gen_own_selection(cbd) == OK); - #endif -*************** -*** 3132,3138 **** - char_u *start; - - start = ptr = ml_get_buf(wp->w_buffer, lnum, FALSE); -! while (count <= vcol && *ptr != NUL) - { - count += win_lbr_chartabsize(wp, ptr, count, NULL); - mb_ptr_adv(ptr); ---- 3132,3138 ---- - char_u *start; - - start = ptr = ml_get_buf(wp->w_buffer, lnum, FALSE); -! while (count < vcol && *ptr != NUL) - { - count += win_lbr_chartabsize(wp, ptr, count, NULL); - mb_ptr_adv(ptr); -*** ../vim-7.3.694/src/version.c 2012-10-21 00:44:59.000000000 +0200 ---- src/version.c 2012-10-21 00:50:32.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 695, - /**/ - --- -BEDEVERE: Why do you think she is a witch? -SECOND VILLAGER: She turned me into a newt. -BEDEVERE: A newt? -SECOND VILLAGER: (After looking at himself for some time) I got better. - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.696 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.696 -Problem: Message about added spell language can be wrong. -Solution: Give correct message. Add g:menutrans_set_lang_to to allow for - translation. (Jiri Sedlak) -Files: runtime/menu.vim - - -*** ../vim-7.3.695/runtime/menu.vim 2010-08-15 21:57:11.000000000 +0200 ---- runtime/menu.vim 2012-10-21 01:17:27.000000000 +0200 -*************** -*** 434,439 **** ---- 434,443 ---- - let enc = &enc - endif - -+ if !exists("g:menutrans_set_lang_to") -+ let g:menutrans_set_lang_to = 'Set language to' -+ endif -+ - let found = 0 - let s = globpath(&rtp, "spell/*." . enc . ".spl") - if s != "" -*************** -*** 441,448 **** - for f in split(s, "\n") - let nm = substitute(f, '.*spell[/\\]\(..\)\.[^/\\]*\.spl', '\1', "") - if nm != "en" && nm !~ '/' - let found += 1 -! let menuname = '&Tools.&Spelling.Set\ language\ to\ "' . nm . '"' - exe 'an 40.335.' . n . ' ' . menuname . ' :set spl=' . nm . ' spell<CR>' - let s:undo_spellang += ['aun ' . menuname] - endif ---- 445,453 ---- - for f in split(s, "\n") - let nm = substitute(f, '.*spell[/\\]\(..\)\.[^/\\]*\.spl', '\1', "") - if nm != "en" && nm !~ '/' -+ let _nm = nm - let found += 1 -! let menuname = '&Tools.&Spelling.' . escape(g:menutrans_set_lang_to, "\\. \t|") . '\ "' . nm . '"' - exe 'an 40.335.' . n . ' ' . menuname . ' :set spl=' . nm . ' spell<CR>' - let s:undo_spellang += ['aun ' . menuname] - endif -*************** -*** 452,458 **** - if found == 0 - echomsg "Could not find other spell files" - elseif found == 1 -! echomsg "Found spell file " . nm - else - echomsg "Found " . found . " more spell files" - endif ---- 457,463 ---- - if found == 0 - echomsg "Could not find other spell files" - elseif found == 1 -! echomsg "Found spell file " . _nm - else - echomsg "Found " . found . " more spell files" - endif -*** ../vim-7.3.695/src/version.c 2012-10-21 00:58:34.000000000 +0200 ---- src/version.c 2012-10-21 01:15:00.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 696, - /**/ - --- -BEDEVERE: And what do you burn, apart from witches? -FOURTH VILLAGER: ... Wood? -BEDEVERE: So why do witches burn? -SECOND VILLAGER: (pianissimo) ... Because they're made of wood...? - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.697 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.697 -Problem: Leaking resources when setting GUI font. -Solution: Free the font. (Ken Takata) -Files: src/syntax.c - - -*** ../vim-7.3.696/src/syntax.c 2012-07-19 17:39:01.000000000 +0200 ---- src/syntax.c 2012-10-21 01:37:19.000000000 +0200 -*************** -*** 105,111 **** - # ifdef FEAT_XFONTSET - static GuiFontset fontset_name2handle __ARGS((char_u *name, int fixed_width)); - # endif -! static void hl_do_font __ARGS((int idx, char_u *arg, int do_normal, int do_menu, int do_tooltip)); - #endif - - /* ---- 105,111 ---- - # ifdef FEAT_XFONTSET - static GuiFontset fontset_name2handle __ARGS((char_u *name, int fixed_width)); - # endif -! static void hl_do_font __ARGS((int idx, char_u *arg, int do_normal, int do_menu, int do_tooltip, int free_font)); - #endif - - /* -*************** -*** 7259,7272 **** - HL_TABLE()[idx].sg_fontset = NOFONTSET; - # endif - hl_do_font(idx, arg, is_normal_group, is_menu_group, -! is_tooltip_group); - - # ifdef FEAT_XFONTSET - if (HL_TABLE()[idx].sg_fontset != NOFONTSET) - { -! /* New fontset was accepted. Free the old one, if there was -! * one. -! */ - gui_mch_free_fontset(temp_sg_fontset); - vim_free(HL_TABLE()[idx].sg_font_name); - HL_TABLE()[idx].sg_font_name = vim_strsave(arg); ---- 7259,7271 ---- - HL_TABLE()[idx].sg_fontset = NOFONTSET; - # endif - hl_do_font(idx, arg, is_normal_group, is_menu_group, -! is_tooltip_group, FALSE); - - # ifdef FEAT_XFONTSET - if (HL_TABLE()[idx].sg_fontset != NOFONTSET) - { -! /* New fontset was accepted. Free the old one, if there -! * was one. */ - gui_mch_free_fontset(temp_sg_fontset); - vim_free(HL_TABLE()[idx].sg_font_name); - HL_TABLE()[idx].sg_font_name = vim_strsave(arg); -*************** -*** 7277,7284 **** - if (HL_TABLE()[idx].sg_font != NOFONT) - { - /* New font was accepted. Free the old one, if there was -! * one. -! */ - gui_mch_free_font(temp_sg_font); - vim_free(HL_TABLE()[idx].sg_font_name); - HL_TABLE()[idx].sg_font_name = vim_strsave(arg); ---- 7276,7282 ---- - if (HL_TABLE()[idx].sg_font != NOFONT) - { - /* New font was accepted. Free the old one, if there was -! * one. */ - gui_mch_free_font(temp_sg_font); - vim_free(HL_TABLE()[idx].sg_font_name); - HL_TABLE()[idx].sg_font_name = vim_strsave(arg); -*************** -*** 8064,8075 **** - * Get the font or fontset for one highlight group. - */ - static void -! hl_do_font(idx, arg, do_normal, do_menu, do_tooltip) - int idx; - char_u *arg; - int do_normal; /* set normal font */ - int do_menu UNUSED; /* set menu font */ - int do_tooltip UNUSED; /* set tooltip font */ - { - # ifdef FEAT_XFONTSET - /* If 'guifontset' is not empty, first try using the name as a ---- 8062,8074 ---- - * Get the font or fontset for one highlight group. - */ - static void -! hl_do_font(idx, arg, do_normal, do_menu, do_tooltip, free_font) - int idx; - char_u *arg; - int do_normal; /* set normal font */ - int do_menu UNUSED; /* set menu font */ - int do_tooltip UNUSED; /* set tooltip font */ -+ int free_font; /* free current font/fontset */ - { - # ifdef FEAT_XFONTSET - /* If 'guifontset' is not empty, first try using the name as a -*************** -*** 8083,8088 **** ---- 8082,8089 ---- - || do_tooltip - # endif - ) -+ if (free_fontset) -+ gui_mch_free_fontset(HL_TABLE()[idx].sg_fontset); - HL_TABLE()[idx].sg_fontset = fontset_name2handle(arg, 0 - # ifdef FONTSET_ALWAYS - || do_menu -*************** -*** 8093,8100 **** - ); - if (HL_TABLE()[idx].sg_fontset != NOFONTSET) - { -! /* If it worked and it's the Normal group, use it as the -! * normal fontset. Same for the Menu group. */ - if (do_normal) - gui_init_font(arg, TRUE); - # if (defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_ATHENA)) && defined(FEAT_MENU) ---- 8094,8101 ---- - ); - if (HL_TABLE()[idx].sg_fontset != NOFONTSET) - { -! /* If it worked and it's the Normal group, use it as the normal -! * fontset. Same for the Menu group. */ - if (do_normal) - gui_init_font(arg, TRUE); - # if (defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_ATHENA)) && defined(FEAT_MENU) -*************** -*** 8126,8131 **** ---- 8127,8134 ---- - else - # endif - { -+ if (free_font) -+ gui_mch_free_font(HL_TABLE()[idx].sg_font); - HL_TABLE()[idx].sg_font = font_name2handle(arg); - /* If it worked and it's the Normal group, use it as the - * normal font. Same for the Menu group. */ -*************** -*** 9162,9168 **** - if (HL_TABLE()[idx].sg_font_name != NULL) - { - hl_do_font(idx, HL_TABLE()[idx].sg_font_name, FALSE, do_menu, -! do_tooltip); - didit = TRUE; - } - if (HL_TABLE()[idx].sg_gui_fg_name != NULL) ---- 9165,9171 ---- - if (HL_TABLE()[idx].sg_font_name != NULL) - { - hl_do_font(idx, HL_TABLE()[idx].sg_font_name, FALSE, do_menu, -! do_tooltip, TRUE); - didit = TRUE; - } - if (HL_TABLE()[idx].sg_gui_fg_name != NULL) -*** ../vim-7.3.696/src/version.c 2012-10-21 01:21:53.000000000 +0200 ---- src/version.c 2012-10-21 01:27:55.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 697, - /**/ - --- -BEDEVERE: Wait. Wait ... tell me, what also floats on water? -ALL: Bread? No, no, no. Apples .... gravy ... very small rocks ... -ARTHUR: A duck. - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.698 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.698 -Problem: Python 3 does not preserve state beween commands. -Solution: Preserve the state. (Paul Ollis) -Files: src/if_python.c, src/if_python3.c - - -*** ../vim-7.3.697/src/if_python.c 2012-10-14 05:20:05.000000000 +0200 ---- src/if_python.c 2012-10-21 01:44:10.000000000 +0200 -*************** -*** 740,748 **** - #else - PyMac_Initialize(); - #endif -! /* Initialise threads and save the state using PyGILState_Ensure. -! * Without this call, thread-specific state (such as the system trace -! * hook), will be lost between invocations of Python code. */ - PyEval_InitThreads(); - pygilstate = PyGILState_Ensure(); - #ifdef DYNAMIC_PYTHON ---- 740,749 ---- - #else - PyMac_Initialize(); - #endif -! /* Initialise threads, and save the state using PyGILState_Ensure. -! * Without the call to PyGILState_Ensure, thread specific state (such -! * as the system trace hook), will be lost between invocations of -! * Python code. */ - PyEval_InitThreads(); - pygilstate = PyGILState_Ensure(); - #ifdef DYNAMIC_PYTHON -*** ../vim-7.3.697/src/if_python3.c 2012-10-14 03:22:49.000000000 +0200 ---- src/if_python3.c 2012-10-21 01:44:37.000000000 +0200 -*************** -*** 731,738 **** - #else - PyMac_Initialize(); - #endif -! /* initialise threads, must be after Py_Initialize() */ - PyEval_InitThreads(); - - #ifdef DYNAMIC_PYTHON3 - get_py3_exceptions(); ---- 731,742 ---- - #else - PyMac_Initialize(); - #endif -! /* Initialise threads, and save the state using PyGILState_Ensure. -! * Without the call to PyGILState_Ensure, thread specific state (such -! * as the system trace hook), will be lost between invocations of -! * Python code. */ - PyEval_InitThreads(); -+ pygilstate = PyGILState_Ensure(); - - #ifdef DYNAMIC_PYTHON3 - get_py3_exceptions(); -*** ../vim-7.3.697/src/version.c 2012-10-21 01:40:24.000000000 +0200 ---- src/version.c 2012-10-21 01:42:44.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 698, - /**/ - --- -ALL: A witch! A witch! -WITCH: It's a fair cop. -ALL: Burn her! Burn her! Let's make her into a ladder. - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.699 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.699 -Problem: When 'ttymouse' is set to "sgr" manually, it is overruled by - automatic detection. -Solution: Do not use automatic detection when 'ttymouse' was set manually. - (Hayaki Saito) -Files: src/term.c - - -*** ../vim-7.3.698/src/term.c 2012-08-29 16:26:01.000000000 +0200 ---- src/term.c 2012-10-21 02:07:25.000000000 +0200 -*************** -*** 4079,4102 **** - - if (tp[1 + (tp[0] != CSI)] == '>' && j == 2) - { - # ifdef TTYM_SGR -! if (extra >= 277 -! # ifdef TTYM_URXVT -! && ttym_flags != TTYM_URXVT -! # endif -! ) -! set_option_value((char_u *)"ttym", 0L, - (char_u *)"sgr", 0); -! else - # endif -! /* if xterm version >= 95 use mouse dragging */ -! if (extra >= 95 -! # ifdef TTYM_URXVT -! && ttym_flags != TTYM_URXVT -! # endif -! ) -! set_option_value((char_u *)"ttym", 0L, - (char_u *)"xterm2", 0); - /* if xterm version >= 141 try to get termcap codes */ - if (extra >= 141) - { ---- 4079,4100 ---- - - if (tp[1 + (tp[0] != CSI)] == '>' && j == 2) - { -+ /* Only set 'ttymouse' automatically if it was not set -+ * by the user already. */ -+ if (!option_was_set((char_u *)"ttym")) -+ { - # ifdef TTYM_SGR -! if (extra >= 277) -! set_option_value((char_u *)"ttym", 0L, - (char_u *)"sgr", 0); -! else - # endif -! /* if xterm version >= 95 use mouse dragging */ -! if (extra >= 95) -! set_option_value((char_u *)"ttym", 0L, - (char_u *)"xterm2", 0); -+ } -+ - /* if xterm version >= 141 try to get termcap codes */ - if (extra >= 141) - { -*** ../vim-7.3.698/src/version.c 2012-10-21 01:46:56.000000000 +0200 ---- src/version.c 2012-10-21 02:09:17.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 699, - /**/ - --- -Never under any circumstances take a sleeping pill -and a laxative on the same night. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.700 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.700 -Problem: Cannot detect URXVT and SGR mouse support. -Solution: add +mouse_urxvt and +mouse_sgr. (Hayaki Saito) -Files: src/feature.h, src/eval.c - - -*** ../vim-7.3.699/src/feature.h 2012-08-15 16:20:59.000000000 +0200 ---- src/feature.h 2012-10-21 02:13:36.000000000 +0200 -*************** -*** 1038,1045 **** ---- 1038,1047 ---- - * +mouse_gpm Unix only: Include code for Linux console mouse - * handling. - * +mouse_pterm PTerm mouse support for QNX -+ * +mouse_sgr Unix only: Include code for for SGR-styled mouse. - * +mouse_sysmouse Unix only: Include code for FreeBSD and DragonFly - * console mouse handling. -+ * +mouse_urxvt Unix only: Include code for for urxvt mosue handling. - * +mouse Any mouse support (any of the above enabled). - */ - /* OS/2 and Amiga console have no mouse support */ -*** ../vim-7.3.699/src/eval.c 2012-10-21 00:44:59.000000000 +0200 ---- src/eval.c 2012-10-21 02:12:48.000000000 +0200 -*************** -*** 12276,12284 **** ---- 12276,12290 ---- - # ifdef FEAT_MOUSE_PTERM - "mouse_pterm", - # endif -+ # ifdef FEAT_MOUSE_SGR -+ "mouse_sgr", -+ # endif - # ifdef FEAT_SYSMOUSE - "mouse_sysmouse", - # endif -+ # ifdef FEAT_MOUSE_URXVT -+ "mouse_urxvt", -+ # endif - # ifdef FEAT_MOUSE_XTERM - "mouse_xterm", - # endif -*** ../vim-7.3.699/src/version.c 2012-10-21 02:10:20.000000000 +0200 ---- src/version.c 2012-10-21 02:15:32.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 700, - /**/ - --- -If you had to identify, in one word, the reason why the -human race has not achieved, and never will achieve, its -full potential, that word would be "meetings." - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.701 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.701 -Problem: MS-Windows: Crash with stack overflow when setting 'encoding'. -Solution: Handle that loading the iconv library may be called recursively. - (Jiri Sedlak) -Files: src/os_win32.c - - -*** ../vim-7.3.700/src/os_win32.c 2012-08-02 12:31:40.000000000 +0200 ---- src/os_win32.c 2012-10-21 02:35:21.000000000 +0200 -*************** -*** 288,305 **** - vimLoadLib(char *name) - { - HINSTANCE dll = NULL; -! char old_dir[MAXPATHL]; - - if (exe_path == NULL) - get_exe_name(); -! if (exe_path != NULL && mch_dirname(old_dir, MAXPATHL) == OK) - { - /* Change directory to where the executable is, both to make sure we - * find a .dll there and to avoid looking for a .dll in the current - * directory. */ -! mch_chdir(exe_path); - dll = LoadLibrary(name); -- mch_chdir(old_dir); - } - return dll; - } ---- 288,313 ---- - vimLoadLib(char *name) - { - HINSTANCE dll = NULL; -! TCHAR old_dir[MAXPATHL]; - -+ /* NOTE: Do not use mch_dirname() and mch_chdir() here, they may call -+ * vimLoadLib() recursively, which causes a stack overflow. */ - if (exe_path == NULL) - get_exe_name(); -! if (exe_path != NULL && GetCurrentDirectory(MAXPATHL, old_dir) != 0) - { - /* Change directory to where the executable is, both to make sure we - * find a .dll there and to avoid looking for a .dll in the current - * directory. */ -! SetCurrentDirectory(exe_path); -! dll = LoadLibrary(name); -! SetCurrentDirectory(old_dir); -! } -! else -! { -! /* We are not able to change directory to where the executable is, try -! * to load library anyway. */ - dll = LoadLibrary(name); - } - return dll; - } -*** ../vim-7.3.700/src/version.c 2012-10-21 02:17:28.000000000 +0200 ---- src/version.c 2012-10-21 02:35:48.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 701, - /**/ - --- -BEDEVERE: And that, my lord, is how we know the Earth to be banana-shaped. - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.702 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.702 -Problem: Nmake from VS6 service pack 6 is not recognized. -Solution: Detect the version number. (Jiri Sedlak) -Files: src/Make_mvc.mak - - -*** ../vim-7.3.701/src/Make_mvc.mak 2012-09-18 22:00:02.000000000 +0200 ---- src/Make_mvc.mak 2012-10-21 02:38:21.000000000 +0200 -*************** -*** 373,378 **** ---- 373,382 ---- - MSVCVER = 6.0 - CPU = ix86 - !endif -+ !if "$(_NMAKE_VER)" == "6.00.9782.0" -+ MSVCVER = 6.0 -+ CPU = ix86 -+ !endif - !if "$(_NMAKE_VER)" == "7.00.9466" - MSVCVER = 7.0 - !endif -*** ../vim-7.3.701/src/version.c 2012-10-21 02:37:02.000000000 +0200 ---- src/version.c 2012-10-21 02:40:00.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 702, - /**/ - --- -Back off man, I'm a scientist. - -- Peter, Ghostbusters - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.703 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.703 -Problem: When 'undofile' is reset the hash is computed unnecessarily. -Solution: Only compute the hash when the option was set. (Christian Brabandt) -Files: src/option.c - - -*** ../vim-7.3.702/src/option.c 2012-10-21 00:10:29.000000000 +0200 ---- src/option.c 2012-10-21 03:42:10.000000000 +0200 -*************** -*** 7573,7596 **** - /* 'undofile' */ - else if ((int *)varp == &curbuf->b_p_udf || (int *)varp == &p_udf) - { -! char_u hash[UNDO_HASH_SIZE]; -! buf_T *save_curbuf = curbuf; -! -! for (curbuf = firstbuf; curbuf != NULL; curbuf = curbuf->b_next) - { -! /* When 'undofile' is set globally: for every buffer, otherwise -! * only for the current buffer: Try to read in the undofile, if -! * one exists and the buffer wasn't changed and the buffer was -! * loaded. */ -! if ((curbuf == save_curbuf -! || (opt_flags & OPT_GLOBAL) || opt_flags == 0) -! && !curbufIsChanged() && curbuf->b_ml.ml_mfp != NULL) - { -! u_compute_hash(hash); -! u_read_undo(NULL, hash, curbuf->b_fname); - } - } -- curbuf = save_curbuf; - } - #endif - ---- 7573,7602 ---- - /* 'undofile' */ - else if ((int *)varp == &curbuf->b_p_udf || (int *)varp == &p_udf) - { -! /* Only take action when the option was set. When reset we do not -! * delete the undo file, the option may be set again without making -! * any changes in between. */ -! if (curbuf->b_p_udf || p_udf) - { -! char_u hash[UNDO_HASH_SIZE]; -! buf_T *save_curbuf = curbuf; -! -! for (curbuf = firstbuf; curbuf != NULL; curbuf = curbuf->b_next) - { -! /* When 'undofile' is set globally: for every buffer, otherwise -! * only for the current buffer: Try to read in the undofile, -! * if one exists, the buffer wasn't changed and the buffer was -! * loaded */ -! if ((curbuf == save_curbuf -! || (opt_flags & OPT_GLOBAL) || opt_flags == 0) -! && !curbufIsChanged() && curbuf->b_ml.ml_mfp != NULL) -! { -! u_compute_hash(hash); -! u_read_undo(NULL, hash, curbuf->b_fname); -! } - } -+ curbuf = save_curbuf; - } - } - #endif - -*** ../vim-7.3.702/src/version.c 2012-10-21 02:41:04.000000000 +0200 ---- src/version.c 2012-10-21 03:43:29.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 703, - /**/ - --- -Scientists decoded the first message from an alien civilization: - SIMPLY SEND 6 TIMES 10 TO THE 50 ATOMS OF HYDROGEN TO THE STAR -SYSTEM AT THE TOP OF THE LIST, CROSS OFF THAT STAR SYSTEM, THEN PUT -YOUR STAR SYSTEM AT THE BOTTOM OF THE LIST AND SEND IT TO 100 OTHER -STAR SYSTEMS. WITHIN ONE TENTH GALACTIC ROTATION YOU WILL RECEIVE -ENOUGH HYDROGREN TO POWER YOUR CIVILIZATION UNTIL ENTROPY REACHES ITS -MAXIMUM! IT REALLY WORKS! - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.704 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.704 -Problem: Repeating "cgn" does not always work correctly. -Solution: Also fetch the operator character. (Christian Brabandt) -Files: src/normal.c - - -*** ../vim-7.3.703/src/normal.c 2012-08-15 13:30:55.000000000 +0200 ---- src/normal.c 2012-10-21 03:51:38.000000000 +0200 -*************** -*** 960,967 **** - #ifdef FEAT_CMDL_INFO - need_flushbuf |= add_to_showcmd(ca.nchar); - #endif - if (ca.nchar == 'r' || ca.nchar == '\'' || ca.nchar == '`' -! || ca.nchar == Ctrl_BSL) - { - cp = &ca.extra_char; /* need to get a third character */ - if (ca.nchar != 'r') ---- 960,970 ---- - #ifdef FEAT_CMDL_INFO - need_flushbuf |= add_to_showcmd(ca.nchar); - #endif -+ /* For "gn" from redo, need to get one more char to determine the -+ * operator */ - if (ca.nchar == 'r' || ca.nchar == '\'' || ca.nchar == '`' -! || ca.nchar == Ctrl_BSL -! || ((ca.nchar == 'n' || ca.nchar == 'N') && !stuff_empty())) - { - cp = &ca.extra_char; /* need to get a third character */ - if (ca.nchar != 'r') -*************** -*** 1083,1088 **** ---- 1086,1093 ---- - ca.nchar = ca.extra_char; - idx = find_command(ca.cmdchar); - } -+ else if (ca.nchar == 'n' || ca.nchar == 'N') -+ ca.oap->op_type = get_op_type(*cp, NUL); - else if (*cp == Ctrl_BSL) - { - long towait = (p_ttm >= 0 ? p_ttm : p_tm); -*************** -*** 8009,8015 **** - #ifdef FEAT_VISUAL - if (!current_search(cap->count1, cap->nchar == 'n')) - #endif -! beep_flush(); - break; - - /* ---- 8014,8020 ---- - #ifdef FEAT_VISUAL - if (!current_search(cap->count1, cap->nchar == 'n')) - #endif -! clearopbeep(oap); - break; - - /* -*** ../vim-7.3.703/src/version.c 2012-10-21 03:45:57.000000000 +0200 ---- src/version.c 2012-10-21 03:53:51.000000000 +0200 -*************** -*** 721,722 **** ---- 721,724 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 704, - /**/ - --- -The word "leader" is derived from the word "lead", as in the material that -bullets are made out of. The term "leader" was popularized at about the same -time as the invention of firearms. It grew out of the observation that the -person in charge of every organization was the person whom everyone wanted to -fill with hot lead. - I don't recomment this; it's just a point of historical interest. - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.705 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.705 -Problem: Mouse features are not sorted properly. (Tony Mechelynck) -Solution: Put the mouse features in alphabetical order. -Files: src/version.c - - -*** ../vim-7.3.704/src/version.c 2012-10-21 03:54:27.000000000 +0200 ---- src/version.c 2012-10-21 03:59:04.000000000 +0200 -*************** -*** 348,353 **** ---- 348,354 ---- - # else - "-mouse", - #endif -+ - #if defined(UNIX) || defined(VMS) - # ifdef FEAT_MOUSE_DEC - "+mouse_dec", -*************** -*** 369,402 **** - # else - "-mouse_netterm", - # endif - # ifdef FEAT_SYSMOUSE - "+mouse_sysmouse", - # else - "-mouse_sysmouse", - # endif -- # ifdef FEAT_MOUSE_XTERM -- "+mouse_xterm", -- # else -- "-mouse_xterm", -- # endif - # ifdef FEAT_MOUSE_URXVT - "+mouse_urxvt", - # else - "-mouse_urxvt", - # endif -! # ifdef FEAT_MOUSE_SGR -! "+mouse_sgr", -! # else -! "-mouse_sgr", -! # endif -! #endif -! #ifdef __QNX__ -! # ifdef FEAT_MOUSE_PTERM -! "+mouse_pterm", - # else -! "-mouse_pterm", - # endif - #endif - #ifdef FEAT_MBYTE_IME - # ifdef DYNAMIC_IME - "+multi_byte_ime/dyn", ---- 370,408 ---- - # else - "-mouse_netterm", - # endif -+ #endif -+ -+ #ifdef __QNX__ -+ # ifdef FEAT_MOUSE_PTERM -+ "+mouse_pterm", -+ # else -+ "-mouse_pterm", -+ # endif -+ #endif -+ -+ #if defined(UNIX) || defined(VMS) -+ # ifdef FEAT_MOUSE_SGR -+ "+mouse_sgr", -+ # else -+ "-mouse_sgr", -+ # endif - # ifdef FEAT_SYSMOUSE - "+mouse_sysmouse", - # else - "-mouse_sysmouse", - # endif - # ifdef FEAT_MOUSE_URXVT - "+mouse_urxvt", - # else - "-mouse_urxvt", - # endif -! # ifdef FEAT_MOUSE_XTERM -! "+mouse_xterm", - # else -! "-mouse_xterm", - # endif - #endif -+ - #ifdef FEAT_MBYTE_IME - # ifdef DYNAMIC_IME - "+multi_byte_ime/dyn", -*** ../vim-7.3.704/src/version.c 2012-10-21 03:54:27.000000000 +0200 ---- src/version.c 2012-10-21 03:59:04.000000000 +0200 -*************** -*** 721,722 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 705, - /**/ - --- -Are leaders born or made? And if they're made, can we return them under -warranty? - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.706 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.706 (after 7.3.697) -Problem: Can't build Motif version. -Solution: Fix wrongly named variable. (Ike Devolder) -Files: src/syntax.c - - -*** ../vim-7.3.705/src/syntax.c 2012-10-21 01:40:24.000000000 +0200 ---- src/syntax.c 2012-10-21 21:22:46.000000000 +0200 -*************** -*** 8082,8088 **** - || do_tooltip - # endif - ) -! if (free_fontset) - gui_mch_free_fontset(HL_TABLE()[idx].sg_fontset); - HL_TABLE()[idx].sg_fontset = fontset_name2handle(arg, 0 - # ifdef FONTSET_ALWAYS ---- 8082,8088 ---- - || do_tooltip - # endif - ) -! if (free_font) - gui_mch_free_fontset(HL_TABLE()[idx].sg_fontset); - HL_TABLE()[idx].sg_fontset = fontset_name2handle(arg, 0 - # ifdef FONTSET_ALWAYS -*** ../vim-7.3.705/src/version.c 2012-10-21 04:00:03.000000000 +0200 ---- src/version.c 2012-10-21 21:25:07.000000000 +0200 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 706, - /**/ - --- -"You're fired." (1980) -"You're laid off." (1985) -"You're downsized." (1990) -"You're rightsized." (1992) - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.707 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.707 (after 7.3.701) -Problem: Problems loading a library for a file name with non-latin - characters. -Solution: Use wide system functions when possible. (Ken Takata) -Files: src/os_win32.c, src/os_win32.h - - -*** ../vim-7.3.706/src/os_win32.c 2012-10-21 02:37:02.000000000 +0200 ---- src/os_win32.c 2012-10-21 21:33:58.000000000 +0200 -*************** -*** 287,313 **** - HINSTANCE - vimLoadLib(char *name) - { -! HINSTANCE dll = NULL; -! TCHAR old_dir[MAXPATHL]; - - /* NOTE: Do not use mch_dirname() and mch_chdir() here, they may call - * vimLoadLib() recursively, which causes a stack overflow. */ - if (exe_path == NULL) - get_exe_name(); -! if (exe_path != NULL && GetCurrentDirectory(MAXPATHL, old_dir) != 0) - { -! /* Change directory to where the executable is, both to make sure we -! * find a .dll there and to avoid looking for a .dll in the current -! * directory. */ -! SetCurrentDirectory(exe_path); -! dll = LoadLibrary(name); -! SetCurrentDirectory(old_dir); -! } -! else -! { -! /* We are not able to change directory to where the executable is, try -! * to load library anyway. */ -! dll = LoadLibrary(name); - } - return dll; - } ---- 287,326 ---- - HINSTANCE - vimLoadLib(char *name) - { -! HINSTANCE dll = NULL; -! char old_dir[MAXPATHL]; - - /* NOTE: Do not use mch_dirname() and mch_chdir() here, they may call - * vimLoadLib() recursively, which causes a stack overflow. */ - if (exe_path == NULL) - get_exe_name(); -! if (exe_path != NULL) - { -! #ifdef FEAT_MBYTE -! WCHAR old_dirw[MAXPATHL]; -! -! if (GetCurrentDirectoryW(MAXPATHL, old_dirw) != 0) -! { -! /* Change directory to where the executable is, both to make -! * sure we find a .dll there and to avoid looking for a .dll -! * in the current directory. */ -! SetCurrentDirectory(exe_path); -! dll = LoadLibrary(name); -! SetCurrentDirectoryW(old_dirw); -! return dll; -! } -! /* Retry with non-wide function (for Windows 98). */ -! if (GetLastError() == ERROR_CALL_NOT_IMPLEMENTED) -! #endif -! if (GetCurrentDirectory(MAXPATHL, old_dir) != 0) -! { -! /* Change directory to where the executable is, both to make -! * sure we find a .dll there and to avoid looking for a .dll -! * in the current directory. */ -! SetCurrentDirectory(exe_path); -! dll = LoadLibrary(name); -! SetCurrentDirectory(old_dir); -! } - } - return dll; - } -*** ../vim-7.3.706/src/os_win32.h 2011-08-10 17:07:56.000000000 +0200 ---- src/os_win32.h 2012-10-21 21:33:30.000000000 +0200 -*************** -*** 108,114 **** - */ - #define CMDBUFFSIZE 1024 /* size of the command processing buffer */ - -! /* _MAX_PATH is only 256 (stdlib.h), but we want more for the 'path' option, - * thus use a larger number. */ - #define MAXPATHL 1024 - ---- 108,114 ---- - */ - #define CMDBUFFSIZE 1024 /* size of the command processing buffer */ - -! /* _MAX_PATH is only 260 (stdlib.h), but we want more for the 'path' option, - * thus use a larger number. */ - #define MAXPATHL 1024 - -*** ../vim-7.3.706/src/version.c 2012-10-21 21:25:17.000000000 +0200 ---- src/version.c 2012-10-21 21:37:52.000000000 +0200 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 707, - /**/ - --- -Our job was to build a computer information system for the branch banks. We -were the perfect people for the job: Dean had seen a computer once, and I had -heard Dean talk about it. - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.708 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.708 -Problem: Filler lines above the first line may be hidden when opening Vim. -Solution: Change how topfill is computed. (Christian Brabandt) -Files: src/diff.c, src/testdir/test47.in, src/testdir/test47.ok - - -*** ../vim-7.3.707/src/diff.c 2012-05-18 18:47:11.000000000 +0200 ---- src/diff.c 2012-10-21 22:08:44.000000000 +0200 -*************** -*** 615,625 **** - #endif - /* A change may have made filler lines invalid, need to take care - * of that for other windows. */ -! if (wp != curwin && wp->w_topfill > 0) - { -- n = diff_check(wp, wp->w_topline); - if (wp->w_topfill > n) - wp->w_topfill = (n < 0 ? 0 : n); - } - } - } ---- 615,627 ---- - #endif - /* A change may have made filler lines invalid, need to take care - * of that for other windows. */ -! n = diff_check(wp, wp->w_topline); -! if ((wp != curwin && wp->w_topfill > 0) || n > 0) - { - if (wp->w_topfill > n) - wp->w_topfill = (n < 0 ? 0 : n); -+ else if (n > 0 && n > wp->w_topfill) -+ wp->w_topfill = n; - } - } - } -*** ../vim-7.3.707/src/testdir/test47.in 2010-08-15 21:57:29.000000000 +0200 ---- src/testdir/test47.in 2012-10-21 22:08:44.000000000 +0200 -*************** -*** 36,42 **** - :call append("$", two) - :call append("$", three) - :$-2,$w! test.out -! :unlet one two three - :qa! - ENDTEST - ---- 36,57 ---- - :call append("$", two) - :call append("$", three) - :$-2,$w! test.out -! :" Test that diffing shows correct filler lines -! :diffoff! -! :windo :bw! -! :enew -! :put =range(4,10) -! :1d _ -! :vnew -! :put =range(1,10) -! :1d _ -! :windo :diffthis -! :wincmd h -! :let w0=line('w0') -! :enew -! :put =w0 -! :.w >> test.out -! :unlet! one two three w0 - :qa! - ENDTEST - -*** ../vim-7.3.707/src/testdir/test47.ok 2010-08-15 21:57:29.000000000 +0200 ---- src/testdir/test47.ok 2012-10-21 22:08:44.000000000 +0200 -*************** -*** 1,3 **** ---- 1,4 ---- - 2-4-5-6-8-9 - 1-2-4-5-8 - 2-3-4-5-6-7-8 -+ 1 -*** ../vim-7.3.707/src/version.c 2012-10-21 21:38:42.000000000 +0200 ---- src/version.c 2012-10-21 22:10:42.000000000 +0200 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 708, - /**/ - --- -At some point in the project somebody will start whining about the need to -determine the project "requirements". This involves interviewing people who -don't know what they want but, curiously, know exactly when they need it. - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.709 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.709 -Problem: Compiler warning for unused argument. -Solution: Add UNUSED. -Files: src/eval.c - - -*** ../vim-7.3.708/src/eval.c 2012-10-21 02:17:28.000000000 +0200 ---- src/eval.c 2012-10-21 23:53:32.000000000 +0200 -*************** -*** 16664,16670 **** - */ - static void - f_shiftwidth(argvars, rettv) -! typval_T *argvars; - typval_T *rettv; - { - rettv->vval.v_number = get_sw_value(); ---- 16664,16670 ---- - */ - static void - f_shiftwidth(argvars, rettv) -! typval_T *argvars UNUSED; - typval_T *rettv; - { - rettv->vval.v_number = get_sw_value(); -*** ../vim-7.3.708/src/version.c 2012-10-21 22:18:17.000000000 +0200 ---- src/version.c 2012-10-21 23:55:01.000000000 +0200 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 709, - /**/ - --- -The only way the average employee can speak to an executive is by taking a -second job as a golf caddie. - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.710 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.710 (after 7.3.704) -Problem: Patch 7.3.704 breaks "fn". -Solution: Add check for ca.cmdchar. (Christian Brabandt) -Files: src/normal.c - - -*** ../vim-7.3.709/src/normal.c 2012-10-21 03:54:27.000000000 +0200 ---- src/normal.c 2012-10-23 05:02:27.000000000 +0200 -*************** -*** 1086,1092 **** - ca.nchar = ca.extra_char; - idx = find_command(ca.cmdchar); - } -! else if (ca.nchar == 'n' || ca.nchar == 'N') - ca.oap->op_type = get_op_type(*cp, NUL); - else if (*cp == Ctrl_BSL) - { ---- 1086,1092 ---- - ca.nchar = ca.extra_char; - idx = find_command(ca.cmdchar); - } -! else if ((ca.nchar == 'n' || ca.nchar == 'N') && ca.cmdchar == 'g') - ca.oap->op_type = get_op_type(*cp, NUL); - else if (*cp == Ctrl_BSL) - { -*** ../vim-7.3.709/src/version.c 2012-10-21 23:55:59.000000000 +0200 ---- src/version.c 2012-10-23 04:59:21.000000000 +0200 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 710, - /**/ - --- -The budget process was invented by an alien race of sadistic beings who -resemble large cats. - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.711 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.711 (after 7.3.688) -Problem: vim.current.buffer is not available. (lilydjwg) -Solution: Use py3_PyUnicode_AsUTF8 instead of py3_PyUnicode_AsUTF8String. - (Ken Takata) -Files: src/if_python3.c - - -*** ../vim-7.3.710/src/if_python3.c 2012-10-21 01:46:56.000000000 +0200 ---- src/if_python3.c 2012-10-23 05:15:31.000000000 +0200 -*************** -*** 176,182 **** - # define PyImport_AppendInittab py3_PyImport_AppendInittab - # if PY_VERSION_HEX >= 0x030300f0 - # undef _PyUnicode_AsString -! # define _PyUnicode_AsString py3_PyUnicode_AsUTF8String - # else - # define _PyUnicode_AsString py3__PyUnicode_AsString - # endif ---- 176,182 ---- - # define PyImport_AppendInittab py3_PyImport_AppendInittab - # if PY_VERSION_HEX >= 0x030300f0 - # undef _PyUnicode_AsString -! # define _PyUnicode_AsString py3_PyUnicode_AsUTF8 - # else - # define _PyUnicode_AsString py3__PyUnicode_AsString - # endif -*************** -*** 286,296 **** - static PyObject* py3__Py_TrueStruct; - static int (*py3_PyModule_AddObject)(PyObject *m, const char *name, PyObject *o); - static int (*py3_PyImport_AppendInittab)(const char *name, PyObject* (*initfunc)(void)); -! #if PY_VERSION_HEX >= 0x030300f0 -! static char* (*py3_PyUnicode_AsUTF8String)(PyObject *unicode); -! #else - static char* (*py3__PyUnicode_AsString)(PyObject *unicode); -! #endif - static PyObject* (*py3_PyUnicode_AsEncodedString)(PyObject *unicode, const char* encoding, const char* errors); - static char* (*py3_PyBytes_AsString)(PyObject *bytes); - static int (*py3_PyBytes_AsStringAndSize)(PyObject *bytes, char **buffer, int *length); ---- 286,296 ---- - static PyObject* py3__Py_TrueStruct; - static int (*py3_PyModule_AddObject)(PyObject *m, const char *name, PyObject *o); - static int (*py3_PyImport_AppendInittab)(const char *name, PyObject* (*initfunc)(void)); -! # if PY_VERSION_HEX >= 0x030300f0 -! static char* (*py3_PyUnicode_AsUTF8)(PyObject *unicode); -! # else - static char* (*py3__PyUnicode_AsString)(PyObject *unicode); -! # endif - static PyObject* (*py3_PyUnicode_AsEncodedString)(PyObject *unicode, const char* encoding, const char* errors); - static char* (*py3_PyBytes_AsString)(PyObject *bytes); - static int (*py3_PyBytes_AsStringAndSize)(PyObject *bytes, char **buffer, int *length); -*************** -*** 348,360 **** - {"PySys_SetArgv", (PYTHON_PROC*)&py3_PySys_SetArgv}, - {"Py_SetPythonHome", (PYTHON_PROC*)&py3_Py_SetPythonHome}, - {"Py_Initialize", (PYTHON_PROC*)&py3_Py_Initialize}, -! #ifndef PY_SSIZE_T_CLEAN - {"PyArg_ParseTuple", (PYTHON_PROC*)&py3_PyArg_ParseTuple}, - {"Py_BuildValue", (PYTHON_PROC*)&py3_Py_BuildValue}, -! #else - {"_PyArg_ParseTuple_SizeT", (PYTHON_PROC*)&py3_PyArg_ParseTuple}, - {"_Py_BuildValue_SizeT", (PYTHON_PROC*)&py3_Py_BuildValue}, -! #endif - {"PyMem_Free", (PYTHON_PROC*)&py3_PyMem_Free}, - {"PyMem_Malloc", (PYTHON_PROC*)&py3_PyMem_Malloc}, - {"PyList_New", (PYTHON_PROC*)&py3_PyList_New}, ---- 348,360 ---- - {"PySys_SetArgv", (PYTHON_PROC*)&py3_PySys_SetArgv}, - {"Py_SetPythonHome", (PYTHON_PROC*)&py3_Py_SetPythonHome}, - {"Py_Initialize", (PYTHON_PROC*)&py3_Py_Initialize}, -! # ifndef PY_SSIZE_T_CLEAN - {"PyArg_ParseTuple", (PYTHON_PROC*)&py3_PyArg_ParseTuple}, - {"Py_BuildValue", (PYTHON_PROC*)&py3_Py_BuildValue}, -! # else - {"_PyArg_ParseTuple_SizeT", (PYTHON_PROC*)&py3_PyArg_ParseTuple}, - {"_Py_BuildValue_SizeT", (PYTHON_PROC*)&py3_Py_BuildValue}, -! # endif - {"PyMem_Free", (PYTHON_PROC*)&py3_PyMem_Free}, - {"PyMem_Malloc", (PYTHON_PROC*)&py3_PyMem_Malloc}, - {"PyList_New", (PYTHON_PROC*)&py3_PyList_New}, -*************** -*** 406,416 **** - {"PyObject_Init", (PYTHON_PROC*)&py3__PyObject_Init}, - {"PyModule_AddObject", (PYTHON_PROC*)&py3_PyModule_AddObject}, - {"PyImport_AppendInittab", (PYTHON_PROC*)&py3_PyImport_AppendInittab}, -! #if PY_VERSION_HEX >= 0x030300f0 -! {"PyUnicode_AsUTF8String", (PYTHON_PROC*)&py3_PyUnicode_AsUTF8String}, -! #else - {"_PyUnicode_AsString", (PYTHON_PROC*)&py3__PyUnicode_AsString}, -! #endif - {"PyBytes_AsString", (PYTHON_PROC*)&py3_PyBytes_AsString}, - {"PyBytes_AsStringAndSize", (PYTHON_PROC*)&py3_PyBytes_AsStringAndSize}, - {"PyBytes_FromString", (PYTHON_PROC*)&py3_PyBytes_FromString}, ---- 406,416 ---- - {"PyObject_Init", (PYTHON_PROC*)&py3__PyObject_Init}, - {"PyModule_AddObject", (PYTHON_PROC*)&py3_PyModule_AddObject}, - {"PyImport_AppendInittab", (PYTHON_PROC*)&py3_PyImport_AppendInittab}, -! # if PY_VERSION_HEX >= 0x030300f0 -! {"PyUnicode_AsUTF8", (PYTHON_PROC*)&py3_PyUnicode_AsUTF8}, -! # else - {"_PyUnicode_AsString", (PYTHON_PROC*)&py3__PyUnicode_AsString}, -! # endif - {"PyBytes_AsString", (PYTHON_PROC*)&py3_PyBytes_AsString}, - {"PyBytes_AsStringAndSize", (PYTHON_PROC*)&py3_PyBytes_AsStringAndSize}, - {"PyBytes_FromString", (PYTHON_PROC*)&py3_PyBytes_FromString}, -*************** -*** 503,514 **** - - /* Load unicode functions separately as only the ucs2 or the ucs4 functions - * will be present in the library. */ -! #if PY_VERSION_HEX >= 0x030300f0 - ucs_from_string = symbol_from_dll(hinstPy3, "PyUnicode_FromString"); - ucs_decode = symbol_from_dll(hinstPy3, "PyUnicode_Decode"); - ucs_as_encoded_string = symbol_from_dll(hinstPy3, - "PyUnicode_AsEncodedString"); -! #else - ucs_from_string = symbol_from_dll(hinstPy3, "PyUnicodeUCS2_FromString"); - ucs_decode = symbol_from_dll(hinstPy3, - "PyUnicodeUCS2_Decode"); ---- 503,514 ---- - - /* Load unicode functions separately as only the ucs2 or the ucs4 functions - * will be present in the library. */ -! # if PY_VERSION_HEX >= 0x030300f0 - ucs_from_string = symbol_from_dll(hinstPy3, "PyUnicode_FromString"); - ucs_decode = symbol_from_dll(hinstPy3, "PyUnicode_Decode"); - ucs_as_encoded_string = symbol_from_dll(hinstPy3, - "PyUnicode_AsEncodedString"); -! # else - ucs_from_string = symbol_from_dll(hinstPy3, "PyUnicodeUCS2_FromString"); - ucs_decode = symbol_from_dll(hinstPy3, - "PyUnicodeUCS2_Decode"); -*************** -*** 523,529 **** - ucs_as_encoded_string = symbol_from_dll(hinstPy3, - "PyUnicodeUCS4_AsEncodedString"); - } -! #endif - if (ucs_from_string && ucs_decode && ucs_as_encoded_string) - { - py3_PyUnicode_FromString = ucs_from_string; ---- 523,529 ---- - ucs_as_encoded_string = symbol_from_dll(hinstPy3, - "PyUnicodeUCS4_AsEncodedString"); - } -! # endif - if (ucs_from_string && ucs_decode && ucs_as_encoded_string) - { - py3_PyUnicode_FromString = ucs_from_string; -*** ../vim-7.3.710/src/version.c 2012-10-23 05:08:49.000000000 +0200 ---- src/version.c 2012-10-23 05:14:27.000000000 +0200 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 711, - /**/ - --- -The fastest way to get an engineer to solve a problem is to declare that the -problem is unsolvable. No engineer can walk away from an unsolvable problem -until it's solved. - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.712 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.712 -Problem: Nmake from VS2010 SP1 is not recognized. -Solution: Add the version number. (Ken Takata) -Files: src/Make_mvc.mak - - -*** ../vim-7.3.711/src/Make_mvc.mak 2012-10-21 02:41:04.000000000 +0200 ---- src/Make_mvc.mak 2012-10-23 05:33:33.000000000 +0200 -*************** -*** 407,412 **** ---- 407,415 ---- - !if "$(_NMAKE_VER)" == "10.00.30319.01" - MSVCVER = 10.0 - !endif -+ !if "$(_NMAKE_VER)" == "10.00.40219.01" -+ MSVCVER = 10.0 -+ !endif - !if "$(_NMAKE_VER)" == "11.00.50727.1" - MSVCVER = 11.0 - !endif -*** ../vim-7.3.711/src/version.c 2012-10-23 05:17:33.000000000 +0200 ---- src/version.c 2012-10-23 05:34:24.000000000 +0200 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 712, - /**/ - --- -Engineers are widely recognized as superior marriage material: intelligent, -dependable, employed, honest, and handy around the house. - (Scott Adams - The Dilbert principle) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.713 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.713 -Problem: printf() can only align to bytes, not characters. -Solution: Add the "S" item. (Christian Brabandt) -Files: runtime/doc/eval.txt, src/message.c - - -*** ../vim-7.3.712/runtime/doc/eval.txt 2012-10-21 00:44:59.000000000 +0200 ---- runtime/doc/eval.txt 2012-11-14 18:00:40.000000000 +0100 -*************** -*** 4427,4432 **** ---- 4451,4457 ---- - - Often used items are: - %s string -+ %6S string right-aligned in 6 display cells - %6s string right-aligned in 6 bytes - %.9s string truncated to 9 bytes - %c single byte -*************** -*** 4541,4546 **** ---- 4566,4575 ---- - s The text of the String argument is used. If a - precision is specified, no more bytes than the number - specified are used. -+ S The text of the String argument is used. If a -+ precision is specified, no more display cells than the -+ number specified are used. Without the |+multi_byte| -+ feature works just like 's'. - - *printf-f* *E807* - f The Float argument is converted into a string of the -*** ../vim-7.3.712/src/message.c 2012-03-28 16:49:25.000000000 +0200 ---- src/message.c 2012-11-14 17:58:25.000000000 +0100 -*************** -*** 4290,4295 **** ---- 4290,4296 ---- - case '%': - case 'c': - case 's': -+ case 'S': - length_modifier = '\0'; - str_arg_l = 1; - switch (fmt_spec) -*************** -*** 4318,4323 **** ---- 4319,4325 ---- - } - - case 's': -+ case 'S': - str_arg = - #ifndef HAVE_STDARG_H - (char *)get_a_arg(arg_idx); -*************** -*** 4354,4359 **** ---- 4356,4379 ---- - str_arg_l = (q == NULL) ? precision - : (size_t)(q - str_arg); - } -+ #ifdef FEAT_MBYTE -+ if (fmt_spec == 'S') -+ { -+ if (min_field_width != 0) -+ min_field_width += STRLEN(str_arg) -+ - mb_string2cells((char_u *)str_arg, -1); -+ if (precision) -+ { -+ char_u *p1 = (char_u *)str_arg; -+ size_t i; -+ -+ for (i = 0; i < precision && *p1; i++) -+ p1 += mb_ptr2len(p1); -+ -+ str_arg_l = precision = p1 - (char_u *)str_arg; -+ } -+ } -+ #endif - break; - - default: -*** ../vim-7.3.712/src/version.c 2012-10-23 05:35:30.000000000 +0200 ---- src/version.c 2012-11-14 17:54:12.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 713, - /**/ - --- -In many of the more relaxed civilizations on the Outer Eastern Rim of the -Galaxy, "The Hitchhiker's Guide to the Galaxy" has already supplanted the -great "Encyclopedia Galactica" as the standard repository of all knowledge -and wisdom, for though it has many omissions and contains much that is -apocryphal, or at least wildly inaccurate, it scores over the older, more -pedestrian work in two important respects. -First, it is slightly cheaper; and second, it has the words "DON'T PANIC" -inscribed in large friendly letters on its cover. - -- 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/ \\\ -\\\ an exciting new programming language -- http://www.Zimbu.org /// - \\\ help me help AIDS victims -- http://ICCF-Holland.org /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.714 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.714 -Problem: Inconsistency: :set can be used in the sandbox, but :setlocal and - :setglobal cannot. (Michael Henry) -Solution: Fix the flags for :setlocal and :setglobal. (Christian Brabandt) -Files: src/ex_cmds.h - - -*** ../vim-7.3.713/src/ex_cmds.h 2012-08-08 17:31:36.000000000 +0200 ---- src/ex_cmds.h 2012-11-14 20:41:28.000000000 +0100 -*************** -*** 832,840 **** - EX(CMD_setfiletype, "setfiletype", ex_setfiletype, - TRLBAR|EXTRA|NEEDARG|CMDWIN), - EX(CMD_setglobal, "setglobal", ex_set, -! TRLBAR|EXTRA|CMDWIN), - EX(CMD_setlocal, "setlocal", ex_set, -! TRLBAR|EXTRA|CMDWIN), - EX(CMD_sfind, "sfind", ex_splitview, - BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR), - EX(CMD_sfirst, "sfirst", ex_rewind, ---- 832,840 ---- - EX(CMD_setfiletype, "setfiletype", ex_setfiletype, - TRLBAR|EXTRA|NEEDARG|CMDWIN), - EX(CMD_setglobal, "setglobal", ex_set, -! TRLBAR|EXTRA|CMDWIN|SBOXOK), - EX(CMD_setlocal, "setlocal", ex_set, -! TRLBAR|EXTRA|CMDWIN|SBOXOK), - EX(CMD_sfind, "sfind", ex_splitview, - BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR), - EX(CMD_sfirst, "sfirst", ex_rewind, -*** ../vim-7.3.713/src/version.c 2012-11-14 18:10:49.000000000 +0100 ---- src/version.c 2012-11-14 20:43:01.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 714, - /**/ - --- -"So this is it," said Arthur, "we are going to die." -"Yes," said Ford, "except...no! Wait a minute!" He suddenly lunged across -the chamber at something behind Arthur's line of vision. "What's this -switch?" he cried. -"What? Where?" cried Arthur, twisting around. -"No, I was only fooling," said Ford, "we are going to die after all." - -- 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/ \\\ -\\\ an exciting new programming language -- http://www.Zimbu.org /// - \\\ help me help AIDS victims -- http://ICCF-Holland.org /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.715 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.715 -Problem: Crash when calling setloclist() in BufUnload autocmd. (Marcin - Szamotulski) -Solution: Set w_llist to NULL when it was freed. Also add a test. - (Christian Brabandt) -Files: src/quickfix.c, src/testdir/test49.ok, src/testdir/test49.vim - - -*** ../vim-7.3.714/src/quickfix.c 2012-06-29 12:57:03.000000000 +0200 ---- src/quickfix.c 2012-11-14 22:33:20.000000000 +0100 -*************** -*** 107,113 **** - }; - - static int qf_init_ext __ARGS((qf_info_T *qi, char_u *efile, buf_T *buf, typval_T *tv, char_u *errorformat, int newlist, linenr_T lnumfirst, linenr_T lnumlast, char_u *qf_title)); -! static void qf_new_list __ARGS((qf_info_T *qi, char_u *qf_title)); - static void ll_free_all __ARGS((qf_info_T **pqi)); - static int qf_add_entry __ARGS((qf_info_T *qi, qfline_T **prevp, char_u *dir, char_u *fname, int bufnum, char_u *mesg, long lnum, int col, int vis_col, char_u *pattern, int nr, int type, int valid)); - static qf_info_T *ll_new_list __ARGS((void)); ---- 107,113 ---- - }; - - static int qf_init_ext __ARGS((qf_info_T *qi, char_u *efile, buf_T *buf, typval_T *tv, char_u *errorformat, int newlist, linenr_T lnumfirst, linenr_T lnumlast, char_u *qf_title)); -! static void qf_new_list __ARGS((qf_info_T *qi, char_u *qf_title, win_T *wp)); - static void ll_free_all __ARGS((qf_info_T **pqi)); - static int qf_add_entry __ARGS((qf_info_T *qi, qfline_T **prevp, char_u *dir, char_u *fname, int bufnum, char_u *mesg, long lnum, int col, int vis_col, char_u *pattern, int nr, int type, int valid)); - static qf_info_T *ll_new_list __ARGS((void)); -*************** -*** 266,272 **** - - if (newlist || qi->qf_curlist == qi->qf_listcount) - /* make place for a new list */ -! qf_new_list(qi, qf_title); - else if (qi->qf_lists[qi->qf_curlist].qf_count > 0) - /* Adding to existing list, find last entry. */ - for (qfprev = qi->qf_lists[qi->qf_curlist].qf_start; ---- 266,272 ---- - - if (newlist || qi->qf_curlist == qi->qf_listcount) - /* make place for a new list */ -! qf_new_list(qi, qf_title, curwin); - else if (qi->qf_lists[qi->qf_curlist].qf_count > 0) - /* Adding to existing list, find last entry. */ - for (qfprev = qi->qf_lists[qi->qf_curlist].qf_start; -*************** -*** 885,893 **** - * Prepare for adding a new quickfix list. - */ - static void -! qf_new_list(qi, qf_title) - qf_info_T *qi; - char_u *qf_title; - { - int i; - ---- 885,894 ---- - * Prepare for adding a new quickfix list. - */ - static void -! qf_new_list(qi, qf_title, wp) - qf_info_T *qi; - char_u *qf_title; -+ win_T *wp; - { - int i; - -*************** -*** 897,903 **** ---- 898,908 ---- - * way with ":grep'. - */ - while (qi->qf_listcount > qi->qf_curlist + 1) -+ { -+ if (wp != NULL && wp->w_llist == qi) -+ wp->w_llist = NULL; - qf_free(qi, --qi->qf_listcount); -+ } - - /* - * When the stack is full, remove to oldest entry -*************** -*** 905,910 **** ---- 910,917 ---- - */ - if (qi->qf_listcount == LISTCOUNT) - { -+ if (wp != NULL && wp->w_llist == qi) -+ wp->w_llist = NULL; - qf_free(qi, 0); - for (i = 1; i < LISTCOUNT; ++i) - qi->qf_lists[i - 1] = qi->qf_lists[i]; -*************** -*** 3181,3187 **** - eap->cmdidx != CMD_vimgrepadd && eap->cmdidx != CMD_lvimgrepadd) - || qi->qf_curlist == qi->qf_listcount) - /* make place for a new list */ -! qf_new_list(qi, *eap->cmdlinep); - else if (qi->qf_lists[qi->qf_curlist].qf_count > 0) - /* Adding to existing list, find last entry. */ - for (prevp = qi->qf_lists[qi->qf_curlist].qf_start; ---- 3188,3194 ---- - eap->cmdidx != CMD_vimgrepadd && eap->cmdidx != CMD_lvimgrepadd) - || qi->qf_curlist == qi->qf_listcount) - /* make place for a new list */ -! qf_new_list(qi, *eap->cmdlinep, curwin); - else if (qi->qf_lists[qi->qf_curlist].qf_count > 0) - /* Adding to existing list, find last entry. */ - for (prevp = qi->qf_lists[qi->qf_curlist].qf_start; -*************** -*** 3747,3753 **** - - if (action == ' ' || qi->qf_curlist == qi->qf_listcount) - /* make place for a new list */ -! qf_new_list(qi, title); - else if (action == 'a' && qi->qf_lists[qi->qf_curlist].qf_count > 0) - /* Adding to existing list, find last entry. */ - for (prevp = qi->qf_lists[qi->qf_curlist].qf_start; ---- 3754,3760 ---- - - if (action == ' ' || qi->qf_curlist == qi->qf_listcount) - /* make place for a new list */ -! qf_new_list(qi, title, wp); - else if (action == 'a' && qi->qf_lists[qi->qf_curlist].qf_count > 0) - /* Adding to existing list, find last entry. */ - for (prevp = qi->qf_lists[qi->qf_curlist].qf_start; -*************** -*** 4029,4035 **** - #endif - - /* create a new quickfix list */ -! qf_new_list(qi, *eap->cmdlinep); - - /* Go through all directories in 'runtimepath' */ - p = p_rtp; ---- 4036,4042 ---- - #endif - - /* create a new quickfix list */ -! qf_new_list(qi, *eap->cmdlinep, wp); - - /* Go through all directories in 'runtimepath' */ - p = p_rtp; -*** ../vim-7.3.714/src/testdir/test49.ok 2010-08-15 21:57:29.000000000 +0200 ---- src/testdir/test49.ok 2012-11-14 22:26:13.000000000 +0100 -*************** -*** 85,92 **** - *** Test 83: OK (2835) - *** Test 84: OK (934782101) - *** Test 85: OK (198689) -! --- Test 86: All tests were run with throwing exceptions on error. - The $VIMNOERRTHROW control is not configured. -! --- Test 86: All tests were run with throwing exceptions on interrupt. - The $VIMNOINTTHROW control is not configured. -! *** Test 86: OK (50443995) ---- 85,94 ---- - *** Test 83: OK (2835) - *** Test 84: OK (934782101) - *** Test 85: OK (198689) -! --- Test 86: No Crash for vimgrep on BufUnload -! *** Test 86: OK (0) -! --- Test 87: All tests were run with throwing exceptions on error. - The $VIMNOERRTHROW control is not configured. -! --- Test 87: All tests were run with throwing exceptions on interrupt. - The $VIMNOINTTHROW control is not configured. -! *** Test 87: OK (50443995) -*** ../vim-7.3.714/src/testdir/test49.vim 2010-09-29 16:55:45.000000000 +0200 ---- src/testdir/test49.vim 2012-11-14 22:26:13.000000000 +0100 -*************** -*** 9603,9611 **** - - Xcheck 198689 - - - "------------------------------------------------------------------------------- -! " Test 86: $VIMNOERRTHROW and $VIMNOINTTHROW support {{{1 - " - " It is possible to configure Vim for throwing exceptions on error - " or interrupt, controlled by variables $VIMNOERRTHROW and ---- 9603,9630 ---- - - Xcheck 198689 - -+ "------------------------------------------------------------------------------- -+ " Test 86 setloclist crash {{{1 -+ " -+ " Executing a setloclist() on BufUnload shouldn't crash Vim -+ "------------------------------------------------------------------------------- -+ -+ func F -+ au BufUnload * :call setloclist(0, [{'bufnr':1, 'lnum':1, 'col':1, 'text': 'tango down'}]) -+ -+ :lvimgrep /.*/ * -+ endfunc -+ -+ XpathINIT -+ -+ ExecAsScript F -+ -+ delfunction F -+ Xout "No Crash for vimgrep on BufUnload" -+ Xcheck 0 - - "------------------------------------------------------------------------------- -! " Test 87: $VIMNOERRTHROW and $VIMNOINTTHROW support {{{1 - " - " It is possible to configure Vim for throwing exceptions on error - " or interrupt, controlled by variables $VIMNOERRTHROW and -*** ../vim-7.3.714/src/version.c 2012-11-14 20:52:22.000000000 +0100 ---- src/version.c 2012-11-14 22:36:45.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 715, - /**/ - --- -One difference between a man and a machine is that a machine is quiet -when well oiled. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.716 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.716 -Problem: Error on exit when using Python 3. -Solution: Remove PythonIO_Fini(). (Roland Puntaier) -Files: src/if_python3.c - - -*** ../vim-7.3.715/src/if_python3.c 2012-10-23 05:17:33.000000000 +0200 ---- src/if_python3.c 2012-11-20 10:59:54.000000000 +0100 -*************** -*** 657,663 **** - static PyObject *globals; - - static int PythonIO_Init(void); -- static void PythonIO_Fini(void); - PyMODINIT_FUNC Py3Init_vim(void); - - /****************************************************** ---- 657,662 ---- -*************** -*** 685,691 **** - // acquire lock before finalizing - pygilstate = PyGILState_Ensure(); - -- PythonIO_Fini(); - Py_Finalize(); - } - ---- 684,689 ---- -*************** -*** 989,1001 **** - return PythonIO_Init_io(); - } - -- static void -- PythonIO_Fini(void) -- { -- PySys_SetObject("stdout", NULL); -- PySys_SetObject("stderr", NULL); -- } -- - /****************************************************** - * 3. Implementation of the Vim module for Python - */ ---- 987,992 ---- -*** ../vim-7.3.715/src/version.c 2012-11-14 22:38:04.000000000 +0100 ---- src/version.c 2012-11-15 21:40:47.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 716, - /**/ - --- -Nothing is fool-proof to a sufficiently talented fool. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.717 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.717 -Problem: When changing the font size, only MS-Windows limits the window - size. -Solution: Also limit the window size on other systems. (Roland Puntaier) -Files: src/gui.c - - -*** ../vim-7.3.716/src/gui.c 2012-08-29 16:34:23.000000000 +0200 ---- src/gui.c 2012-11-20 12:01:08.000000000 +0100 -*************** -*** 905,917 **** - # endif - gui_mch_set_font(gui.norm_font); - #endif -! gui_set_shellsize(FALSE, -! #ifdef MSWIN -! TRUE -! #else -! FALSE -! #endif -! , RESIZE_BOTH); - } - - return ret; ---- 905,911 ---- - # endif - gui_mch_set_font(gui.norm_font); - #endif -! gui_set_shellsize(FALSE, TRUE, RESIZE_BOTH); - } - - return ret; -*** ../vim-7.3.716/src/version.c 2012-11-20 11:02:49.000000000 +0100 ---- src/version.c 2012-11-20 12:02:04.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 717, - /**/ - --- -The 50-50-90 rule: Anytime you have a 50-50 chance of getting -something right, there's a 90% probability you'll get it wrong. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.718 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.718 -Problem: When re-using the current buffer the buffer-local options stay. -Solution: Re-initialize the buffer-local options. (Christian Brabandt) -Files: src/buffer.c - - -*** ../vim-7.3.717/src/buffer.c 2012-10-03 18:24:55.000000000 +0200 ---- src/buffer.c 2012-11-17 14:11:35.000000000 +0100 -*************** -*** 1702,1707 **** ---- 1702,1712 ---- - #endif - /* buf->b_nwindows = 0; why was this here? */ - free_buffer_stuff(buf, FALSE); /* delete local variables et al. */ -+ -+ /* Init the options. */ -+ buf->b_p_initialized = FALSE; -+ buf_copy_options(buf, BCO_ENTER); -+ - #ifdef FEAT_KEYMAP - /* need to reload lmaps and set b:keymap_name */ - curbuf->b_kmap_state |= KEYMAP_INIT; -*** ../vim-7.3.717/src/version.c 2012-11-20 12:03:02.000000000 +0100 ---- src/version.c 2012-11-20 12:16:35.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 718, - /**/ - --- -Latest survey shows that 3 out of 4 people make up 75% of the -world's population. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.719 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.719 -Problem: Cannot run new version of cproto, it fails on missing include - files. -Solution: Add lots of #ifndef PROTO -Files: src/os_amiga.c, src/os_amiga.h, src/gui_w16.c, src/gui_w48.c, - src/gui_w32.c, src/vimio.h, src/os_msdos.c, src/os_msdos.h, - src/os_win16.h, src/os_win16.c, src/os_win32.h, src/os_win32.c, - src/os_mswin.c, src/gui_photon.c, src/os_unix.h, src/os_beos.c, - src/os_beos.h - - -*** ../vim-7.3.718/src/os_amiga.c 2012-06-29 15:51:26.000000000 +0200 ---- src/os_amiga.c 2012-11-20 15:47:31.000000000 +0100 -*************** -*** 22,27 **** ---- 22,30 ---- - #undef TRUE /* will be redefined by exec/types.h */ - #undef FALSE - -+ /* cproto fails on missing include files, skip them */ -+ #ifndef PROTO -+ - #ifndef LATTICE - # include <exec/types.h> - # include <exec/exec.h> -*************** -*** 55,60 **** ---- 58,65 ---- - # include <libraries/arp_pragmas.h> - #endif - -+ #endif /* PROTO */ -+ - /* - * At this point TRUE and FALSE are defined as 1L and 0L, but we want 1 and 0. - */ -*************** -*** 283,289 **** - #endif - } - -! #include <workbench/startup.h> - - /* - * Check_win checks whether we have an interactive window. ---- 288,296 ---- - #endif - } - -! #ifndef PROTO -! # include <workbench/startup.h> -! #endif - - /* - * Check_win checks whether we have an interactive window. -*************** -*** 1002,1008 **** - * Heavely modified by mool. - */ - -! #include <devices/conunit.h> - - /* - * try to get the real window size ---- 1009,1017 ---- - * Heavely modified by mool. - */ - -! #ifndef PROTO -! # include <devices/conunit.h> -! #endif - - /* - * try to get the real window size -*************** -*** 1129,1137 **** - * say 'oml lib:amiga.lib -r sendpacket.o' - */ - - /* #include <proto/exec.h> */ - /* #include <proto/dos.h> */ -! #include <exec/memory.h> - - /* - * Function - dos_packet written by Phil Lindsay, Carolyn Scheppner, and Andy ---- 1138,1148 ---- - * say 'oml lib:amiga.lib -r sendpacket.o' - */ - -+ #ifndef PROTO - /* #include <proto/exec.h> */ - /* #include <proto/dos.h> */ -! # include <exec/memory.h> -! #endif - - /* - * Function - dos_packet written by Phil Lindsay, Carolyn Scheppner, and Andy -*** ../vim-7.3.718/src/os_amiga.h 2010-08-15 21:57:25.000000000 +0200 ---- src/os_amiga.h 2012-11-20 15:46:37.000000000 +0100 -*************** -*** 56,61 **** ---- 56,64 ---- - # define TEMPNAMELEN 12 - #endif - -+ /* cproto fails on missing include files */ -+ #ifndef PROTO -+ - #include <exec/types.h> - #include <libraries/dos.h> - #include <libraries/dosextens.h> -*************** -*** 67,72 **** ---- 70,77 ---- - # include <proto/intuition.h> - #endif - -+ #endif /* PROTO */ -+ - #define FNAME_ILLEGAL ";*?`#%" /* illegal characters in a file name */ - - /* -*************** -*** 85,90 **** ---- 90,96 ---- - # include <unistd.h> - #endif - -+ #ifndef PROTO - /* - * arpbase.h must be included before functions.h - */ -*************** -*** 92,97 **** ---- 98,105 ---- - # include <libraries/arpbase.h> - #endif - -+ #endif /* PROTO */ -+ - /* - * This won't be needed if you have a version of Lattice 4.01 without broken - * break signal handling. -*** ../vim-7.3.718/src/gui_w16.c 2012-02-04 22:01:44.000000000 +0100 ---- src/gui_w16.c 2012-11-20 15:55:04.000000000 +0100 -*************** -*** 1521,1527 **** - - - #if defined(FEAT_TOOLBAR) || defined(PROTO) -! #include "gui_w3~1.h" - /* - * Create the toolbar, initially unpopulated. - * (just like the menu, there are no defaults, it's all ---- 1521,1532 ---- - - - #if defined(FEAT_TOOLBAR) || defined(PROTO) -! -! /* cproto fails on missing include files */ -! #ifndef PROTO -! # include "gui_w3~1.h" -! #endif -! - /* - * Create the toolbar, initially unpopulated. - * (just like the menu, there are no defaults, it's all -*** ../vim-7.3.718/src/gui_w48.c 2012-01-20 20:54:15.000000000 +0100 ---- src/gui_w48.c 2012-11-20 15:53:49.000000000 +0100 -*************** -*** 25,30 **** ---- 25,34 ---- - #ifdef DEBUG - # include <tchar.h> - #endif -+ -+ /* cproto fails on missing include files */ -+ #ifndef PROTO -+ - #ifndef __MINGW32__ - # include <shellapi.h> - #endif -*************** -*** 44,49 **** ---- 48,55 ---- - # include "glbl_ime.h" - #endif - -+ #endif /* PROTO */ -+ - #ifdef FEAT_MENU - # define MENUHINTS /* show menu hints in command line */ - #endif -*** ../vim-7.3.718/src/gui_w32.c 2012-01-04 20:29:18.000000000 +0100 ---- src/gui_w32.c 2012-11-20 15:56:31.000000000 +0100 -*************** -*** 198,208 **** - static UINT_PTR BevalTimerId = 0; - static DWORD LastActivity = 0; - - /* - * excerpts from headers since this may not be presented - * in the extremely old compilers - */ -! #include <pshpack1.h> - - typedef struct _DllVersionInfo - { ---- 198,214 ---- - static UINT_PTR BevalTimerId = 0; - static DWORD LastActivity = 0; - -+ -+ /* cproto fails on missing include files */ -+ #ifndef PROTO -+ - /* - * excerpts from headers since this may not be presented - * in the extremely old compilers - */ -! # include <pshpack1.h> -! -! #endif - - typedef struct _DllVersionInfo - { -*************** -*** 213,219 **** - DWORD dwPlatformID; - } DLLVERSIONINFO; - -! #include <poppack.h> - - typedef struct tagTOOLINFOA_NEW - { ---- 219,227 ---- - DWORD dwPlatformID; - } DLLVERSIONINFO; - -! #ifndef PROTO -! # include <poppack.h> -! #endif - - typedef struct tagTOOLINFOA_NEW - { -*** ../vim-7.3.718/src/vimio.h 2010-08-15 21:57:28.000000000 +0200 ---- src/vimio.h 2012-11-20 15:57:19.000000000 +0100 -*************** -*** 13,16 **** - # define _CRT_NONSTDC_NO_DEPRECATE - #endif - -! #include <io.h> ---- 13,19 ---- - # define _CRT_NONSTDC_NO_DEPRECATE - #endif - -! /* cproto fails on missing include files */ -! #ifndef PROTO -! # include <io.h> -! #endif -*** ../vim-7.3.718/src/os_msdos.c 2012-06-29 15:51:26.000000000 +0200 ---- src/os_msdos.c 2012-11-20 15:59:18.000000000 +0100 -*************** -*** 23,29 **** - - #include "vim.h" - -! #include <conio.h> - - /* - * MS-DOS only code, not used for Win16. ---- 23,32 ---- - - #include "vim.h" - -! /* cproto fails on missing include files */ -! #ifndef PROTO -! # include <conio.h> -! #endif - - /* - * MS-DOS only code, not used for Win16. -*************** -*** 31,47 **** - #ifndef WIN16 - - -! #include <bios.h> -! #ifdef DJGPP -! # include <dpmi.h> -! # include <signal.h> -! # include <sys/movedata.h> -! # include <crt0.h> -! # ifdef FEAT_CLIPBOARD -! # include <sys/segments.h> - # endif -- #else -- # include <alloc.h> - #endif - - #if defined(DJGPP) || defined(PROTO) ---- 34,52 ---- - #ifndef WIN16 - - -! #ifndef PROTO -! # include <bios.h> -! # ifdef DJGPP -! # include <dpmi.h> -! # include <signal.h> -! # include <sys/movedata.h> -! # include <crt0.h> -! # ifdef FEAT_CLIPBOARD -! # include <sys/segments.h> -! # endif -! # else -! # include <alloc.h> - # endif - #endif - - #if defined(DJGPP) || defined(PROTO) -*************** -*** 2130,2137 **** - - #undef setlocale - -! #include <go32.h> -! #include <inlines/ctype.ha> - #include <locale.h> - - #define UPCASE (__dj_ISALNUM | __dj_ISALPHA | __dj_ISGRAPH | __dj_ISPRINT | __dj_ISUPPER) ---- 2135,2144 ---- - - #undef setlocale - -! #ifndef PROTO -! # include <go32.h> -! # include <inlines/ctype.ha> -! #endif - #include <locale.h> - - #define UPCASE (__dj_ISALNUM | __dj_ISALPHA | __dj_ISGRAPH | __dj_ISPRINT | __dj_ISUPPER) -*** ../vim-7.3.718/src/os_msdos.h 2010-08-15 21:57:25.000000000 +0200 ---- src/os_msdos.h 2012-11-20 15:57:48.000000000 +0100 -*************** -*** 53,61 **** - - #define FNAME_ILLEGAL "\"*?><|" /* illegal characters in a file name */ - -! #include <dos.h> -! #include <dir.h> -! #include <time.h> - - #ifdef DJGPP - # include <unistd.h> ---- 53,64 ---- - - #define FNAME_ILLEGAL "\"*?><|" /* illegal characters in a file name */ - -! /* cproto fails on missing include files */ -! #ifndef PROTO -! # include <dos.h> -! # include <dir.h> -! # include <time.h> -! #endif - - #ifdef DJGPP - # include <unistd.h> -*** ../vim-7.3.718/src/os_win16.h 2010-08-15 21:57:25.000000000 +0200 ---- src/os_win16.h 2012-11-20 16:00:33.000000000 +0100 -*************** -*** 63,78 **** - - #include <stdlib.h> - #include <time.h> -- #include <dos.h> -- #include <dir.h> - -! #ifndef STRICT -! # define STRICT -! #endif -! #ifndef COBJMACROS -! # define COBJMACROS /* For OLE: Enable "friendlier" access to objects */ -! #endif -! #include <windows.h> - - /* - * plenty of memory, use large buffers ---- 63,83 ---- - - #include <stdlib.h> - #include <time.h> - -! /* cproto fails on missing include files */ -! #ifndef PROTO -! # include <dos.h> -! # include <dir.h> -! -! # ifndef STRICT -! # define STRICT -! # endif -! # ifndef COBJMACROS -! # define COBJMACROS /* For OLE: Enable "friendlier" access to objects */ -! # endif -! # include <windows.h> -! -! #endif /* PROTO */ - - /* - * plenty of memory, use large buffers -*** ../vim-7.3.718/src/os_win16.c 2012-06-29 15:51:26.000000000 +0200 ---- src/os_win16.c 2012-11-20 16:01:50.000000000 +0100 -*************** -*** 22,37 **** - - #include "vim.h" - -! #include <dos.h> - #include <string.h> - #include <sys/types.h> - #include <signal.h> - #include <limits.h> -- #include <process.h> - -! #undef chdir -! #include <direct.h> -! #include <shellapi.h> /* required for FindExecutable() */ - - - /* Record all output and all keyboard & mouse input */ ---- 22,44 ---- - - #include "vim.h" - -! /* cproto fails on missing include files */ -! #ifndef PROTO -! # include <dos.h> -! #endif -! - #include <string.h> - #include <sys/types.h> - #include <signal.h> - #include <limits.h> - -! #ifndef PROTO -! # include <process.h> -! -! # undef chdir -! # include <direct.h> -! # include <shellapi.h> /* required for FindExecutable() */ -! #endif - - - /* Record all output and all keyboard & mouse input */ -*** ../vim-7.3.718/src/os_win32.h 2012-10-21 21:38:42.000000000 +0200 ---- src/os_win32.h 2012-11-20 16:09:59.000000000 +0100 -*************** -*** 12,18 **** - - #include "os_dos.h" /* common MS-DOS and Win32 stuff */ - #ifndef __CYGWIN__ -! #include <direct.h> /* for _mkdir() */ - #endif - - /* Stop the VC2005 compiler from nagging. */ ---- 12,21 ---- - - #include "os_dos.h" /* common MS-DOS and Win32 stuff */ - #ifndef __CYGWIN__ -! /* cproto fails on missing include files */ -! # ifndef PROTO -! # include <direct.h> /* for _mkdir() */ -! # endif - #endif - - /* Stop the VC2005 compiler from nagging. */ -*************** -*** 101,107 **** - #ifndef COBJMACROS - # define COBJMACROS /* For OLE: Enable "friendlier" access to objects */ - #endif -! #include <windows.h> - - /* - * Win32 has plenty of memory, use large buffers ---- 104,112 ---- - #ifndef COBJMACROS - # define COBJMACROS /* For OLE: Enable "friendlier" access to objects */ - #endif -! #ifndef PROTO -! # include <windows.h> -! #endif - - /* - * Win32 has plenty of memory, use large buffers -*************** -*** 194,199 **** ---- 199,206 ---- - # define vim_mkdir(x, y) mch_mkdir(x) - #endif - -+ #ifndef PROTO -+ - /* Enable common dialogs input unicode from IME if posible. */ - #ifdef FEAT_MBYTE - /* The variables are defined in os_win32.c. */ -*************** -*** 207,209 **** ---- 214,218 ---- - # define pIsDialogMessage IsDialogMessage - # define pPeekMessage PeekMessage - #endif -+ -+ #endif /* PROTO */ -*** ../vim-7.3.718/src/os_win32.c 2012-10-21 21:38:42.000000000 +0200 ---- src/os_win32.c 2012-11-20 16:12:09.000000000 +0100 -*************** -*** 29,35 **** - #include <sys/types.h> - #include <signal.h> - #include <limits.h> -! #include <process.h> - - #undef chdir - #ifdef __GNUC__ ---- 29,39 ---- - #include <sys/types.h> - #include <signal.h> - #include <limits.h> -! -! /* cproto fails on missing include files */ -! #ifndef PROTO -! # include <process.h> -! #endif - - #undef chdir - #ifdef __GNUC__ -*************** -*** 40,47 **** - # include <direct.h> - #endif - -! #if defined(FEAT_TITLE) && !defined(FEAT_GUI_W32) -! # include <shellapi.h> - #endif - - #ifdef __MINGW32__ ---- 44,53 ---- - # include <direct.h> - #endif - -! #ifndef PROTO -! # if defined(FEAT_TITLE) && !defined(FEAT_GUI_W32) -! # include <shellapi.h> -! # endif - #endif - - #ifdef __MINGW32__ -*************** -*** 125,130 **** ---- 131,137 ---- - typedef int WORD; - typedef int WCHAR; - typedef void VOID; -+ typedef int BY_HANDLE_FILE_INFORMATION; - #endif - - #ifndef FEAT_GUI_W32 -*************** -*** 152,157 **** ---- 159,166 ---- - # define wcsicmp(a, b) wcscmpi((a), (b)) - #endif - -+ #ifndef PROTO -+ - /* Enable common dialogs input unicode from IME if posible. */ - #ifdef FEAT_MBYTE - LRESULT (WINAPI *pDispatchMessage)(LPMSG) = DispatchMessage; -*************** -*** 160,165 **** ---- 169,176 ---- - BOOL (WINAPI *pPeekMessage)(LPMSG, HWND, UINT, UINT, UINT) = PeekMessage; - #endif - -+ #endif /* PROTO */ -+ - #ifndef FEAT_GUI_W32 - /* Win32 Console handles for input and output */ - static HANDLE g_hConIn = INVALID_HANDLE_VALUE; -*************** -*** 453,459 **** - DWORD g_PlatformId; - - #ifdef HAVE_ACL -! # include <aclapi.h> - /* - * These are needed to dynamically load the ADVAPI DLL, which is not - * implemented under Windows 95 (and causes VIM to crash) ---- 464,473 ---- - DWORD g_PlatformId; - - #ifdef HAVE_ACL -! # ifndef PROTO -! # include <aclapi.h> -! # endif -! - /* - * These are needed to dynamically load the ADVAPI DLL, which is not - * implemented under Windows 95 (and causes VIM to crash) -*************** -*** 1658,1665 **** - #endif /* FEAT_GUI_W32 */ - } - -! #ifndef __MINGW32__ -! # include <shellapi.h> /* required for FindExecutable() */ - #endif - - /* ---- 1672,1681 ---- - #endif /* FEAT_GUI_W32 */ - } - -! #ifndef PROTO -! # ifndef __MINGW32__ -! # include <shellapi.h> /* required for FindExecutable() */ -! # endif - #endif - - /* -*** ../vim-7.3.718/src/os_mswin.c 2011-11-30 13:42:40.000000000 +0100 ---- src/os_mswin.c 2012-11-20 16:15:05.000000000 +0100 -*************** -*** 26,38 **** - - #ifdef WIN16 - # define SHORT_FNAME /* always 8.3 file name */ -! # include <dos.h> - # include <string.h> - #endif - #include <sys/types.h> - #include <signal.h> - #include <limits.h> -! #include <process.h> - - #undef chdir - #ifdef __GNUC__ ---- 26,43 ---- - - #ifdef WIN16 - # define SHORT_FNAME /* always 8.3 file name */ -! /* cproto fails on missing include files */ -! # ifndef PROTO -! # include <dos.h> -! # endif - # include <string.h> - #endif - #include <sys/types.h> - #include <signal.h> - #include <limits.h> -! #ifndef PROTO -! # include <process.h> -! #endif - - #undef chdir - #ifdef __GNUC__ -*************** -*** 43,62 **** - # include <direct.h> - #endif - -! #if defined(FEAT_TITLE) && !defined(FEAT_GUI_W32) -! # include <shellapi.h> -! #endif -! -! #if defined(FEAT_PRINTER) && !defined(FEAT_POSTSCRIPT) -! # include <dlgs.h> -! # ifdef WIN3264 -! # include <winspool.h> -! # else -! # include <print.h> - # endif -! # include <commdlg.h> - #endif - - #ifdef __MINGW32__ - # ifndef FROM_LEFT_1ST_BUTTON_PRESSED - # define FROM_LEFT_1ST_BUTTON_PRESSED 0x0001 ---- 48,70 ---- - # include <direct.h> - #endif - -! #ifndef PROTO -! # if defined(FEAT_TITLE) && !defined(FEAT_GUI_W32) -! # include <shellapi.h> - # endif -! -! # if defined(FEAT_PRINTER) && !defined(FEAT_POSTSCRIPT) -! # include <dlgs.h> -! # ifdef WIN3264 -! # include <winspool.h> -! # else -! # include <print.h> -! # endif -! # include <commdlg.h> - #endif - -+ #endif /* PROTO */ -+ - #ifdef __MINGW32__ - # ifndef FROM_LEFT_1ST_BUTTON_PRESSED - # define FROM_LEFT_1ST_BUTTON_PRESSED 0x0001 -*************** -*** 2410,2416 **** - - - #if defined(FEAT_SHORTCUT) || defined(PROTO) -! # include <shlobj.h> - - /* - * When "fname" is the name of a shortcut (*.lnk) resolve the file it points ---- 2418,2426 ---- - - - #if defined(FEAT_SHORTCUT) || defined(PROTO) -! # ifndef PROTO -! # include <shlobj.h> -! # endif - - /* - * When "fname" is the name of a shortcut (*.lnk) resolve the file it points -*** ../vim-7.3.718/src/gui_photon.c 2011-09-14 16:04:52.000000000 +0200 ---- src/gui_photon.c 2012-11-20 16:16:11.000000000 +0100 -*************** -*** 13,20 **** - - #include "vim.h" - -! #ifdef FEAT_TOOLBAR -! # include <photon/PxImage.h> - #endif - - #if !defined(__QNX__) ---- 13,23 ---- - - #include "vim.h" - -! /* cproto fails on missing include files */ -! #ifndef PROTO -! # ifdef FEAT_TOOLBAR -! # include <photon/PxImage.h> -! # endif - #endif - - #if !defined(__QNX__) -*** ../vim-7.3.718/src/os_unix.h 2011-02-25 15:17:14.000000000 +0100 ---- src/os_unix.h 2012-11-20 16:51:06.000000000 +0100 -*************** -*** 198,203 **** ---- 198,206 ---- - # define HAVE_TOTAL_MEM - #endif - -+ -+ #ifndef PROTO -+ - #ifdef VMS - # include <unixio.h> - # include <unixlib.h> -*************** -*** 226,232 **** ---- 229,239 ---- - # ifdef FEAT_GUI_GTK - # include "gui_gtk_vms.h" - # endif -+ #endif - -+ #endif /* PROTO */ -+ -+ #ifdef VMS - typedef struct dsc$descriptor DESC; - #endif - -*** ../vim-7.3.718/src/os_beos.c 2010-08-15 21:57:28.000000000 +0200 ---- src/os_beos.c 2012-11-20 16:22:17.000000000 +0100 -*************** -*** 13,19 **** - - #include <float.h> - #include <termios.h> -! #include <kernel/OS.h> - #include "vim.h" - - #if USE_THREAD_FOR_INPUT_WITH_TIMEOUT ---- 13,22 ---- - - #include <float.h> - #include <termios.h> -! #ifndef PROTO -! # include <kernel/OS.h> -! #endif -! - #include "vim.h" - - #if USE_THREAD_FOR_INPUT_WITH_TIMEOUT -*** ../vim-7.3.718/src/os_beos.h 2010-08-15 21:57:32.000000000 +0200 ---- src/os_beos.h 2012-11-20 16:22:48.000000000 +0100 -*************** -*** 22,25 **** - - /* select emulation */ - -! #include <net/socket.h> /* for typedefs and #defines only */ ---- 22,27 ---- - - /* select emulation */ - -! #ifndef PROTO -! # include <net/socket.h> /* for typedefs and #defines only */ -! #endif -*** ../vim-7.3.718/src/version.c 2012-11-20 12:16:54.000000000 +0100 ---- src/version.c 2012-11-20 16:32:18.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 719, - /**/ - --- -George: "I just got a new set of golf clubs for my wife!" - John: "Great trade!" - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.720 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.720 -Problem: Proto files are outdated. -Solution: Update the newly generated proto files. -Files: src/proto/digraph.pro, src/proto/fold.pro, src/proto/misc1.pro, - src/proto/move.pro, src/proto/screen.pro, src/proto/search.pro, - src/proto/os_win32.pro, src/proto/os_mswin.pro, - src/proto/os_beos.pro - -*** ../vim-7.3.719/src/proto/digraph.pro 2010-08-15 21:57:28.000000000 +0200 ---- src/proto/digraph.pro 2012-11-20 16:51:45.000000000 +0100 -*************** -*** 1,7 **** - /* digraph.c */ - int do_digraph __ARGS((int c)); - int get_digraph __ARGS((int cmdline)); -! int getdigraph __ARGS((int char1, int char2, int meta)); - void putdigraph __ARGS((char_u *str)); - void listdigraphs __ARGS((void)); - char_u *keymap_init __ARGS((void)); ---- 1,7 ---- - /* digraph.c */ - int do_digraph __ARGS((int c)); - int get_digraph __ARGS((int cmdline)); -! int getdigraph __ARGS((int char1, int char2, int meta_char)); - void putdigraph __ARGS((char_u *str)); - void listdigraphs __ARGS((void)); - char_u *keymap_init __ARGS((void)); -*** ../vim-7.3.719/src/proto/fold.pro 2010-08-15 21:57:28.000000000 +0200 ---- src/proto/fold.pro 2012-11-20 16:51:49.000000000 +0100 -*************** -*** 27,33 **** - void foldUpdate __ARGS((win_T *wp, linenr_T top, linenr_T bot)); - void foldUpdateAll __ARGS((win_T *win)); - int foldMoveTo __ARGS((int updown, int dir, long count)); -! void foldInitWin __ARGS((win_T *newwin)); - int find_wl_entry __ARGS((win_T *win, linenr_T lnum)); - void foldAdjustVisual __ARGS((void)); - void foldAdjustCursor __ARGS((void)); ---- 27,33 ---- - void foldUpdate __ARGS((win_T *wp, linenr_T top, linenr_T bot)); - void foldUpdateAll __ARGS((win_T *win)); - int foldMoveTo __ARGS((int updown, int dir, long count)); -! void foldInitWin __ARGS((win_T *new_win)); - int find_wl_entry __ARGS((win_T *win, linenr_T lnum)); - void foldAdjustVisual __ARGS((void)); - void foldAdjustCursor __ARGS((void)); -*** ../vim-7.3.719/src/proto/misc1.pro 2012-08-15 14:04:50.000000000 +0200 ---- src/proto/misc1.pro 2012-11-20 16:51:56.000000000 +0100 -*************** -*** 5,12 **** - int get_indent_str __ARGS((char_u *ptr, int ts)); - int set_indent __ARGS((int size, int flags)); - int get_number_indent __ARGS((linenr_T lnum)); -! int open_line __ARGS((int dir, int flags, int old_indent)); -! int get_leader_len __ARGS((char_u *line, char_u **flags, int backward, int do_skip_space)); - int get_last_leader_offset __ARGS((char_u *line, char_u **flags)); - int plines __ARGS((linenr_T lnum)); - int plines_win __ARGS((win_T *wp, linenr_T lnum, int winheight)); ---- 5,12 ---- - int get_indent_str __ARGS((char_u *ptr, int ts)); - int set_indent __ARGS((int size, int flags)); - int get_number_indent __ARGS((linenr_T lnum)); -! int open_line __ARGS((int dir, int flags, int second_line_indent)); -! int get_leader_len __ARGS((char_u *line, char_u **flags, int backward, int include_space)); - int get_last_leader_offset __ARGS((char_u *line, char_u **flags)); - int plines __ARGS((linenr_T lnum)); - int plines_win __ARGS((win_T *wp, linenr_T lnum, int winheight)); -*************** -*** 59,65 **** - void vim_setenv __ARGS((char_u *name, char_u *val)); - char_u *get_env_name __ARGS((expand_T *xp, int idx)); - char_u *get_users __ARGS((expand_T *xp, int idx)); -! int match_user __ARGS((char_u* name)); - void home_replace __ARGS((buf_T *buf, char_u *src, char_u *dst, int dstlen, int one)); - char_u *home_replace_save __ARGS((buf_T *buf, char_u *src)); - int fullpathcmp __ARGS((char_u *s1, char_u *s2, int checkname)); ---- 59,65 ---- - void vim_setenv __ARGS((char_u *name, char_u *val)); - char_u *get_env_name __ARGS((expand_T *xp, int idx)); - char_u *get_users __ARGS((expand_T *xp, int idx)); -! int match_user __ARGS((char_u *name)); - void home_replace __ARGS((buf_T *buf, char_u *src, char_u *dst, int dstlen, int one)); - char_u *home_replace_save __ARGS((buf_T *buf, char_u *src)); - int fullpathcmp __ARGS((char_u *s1, char_u *s2, int checkname)); -*** ../vim-7.3.719/src/proto/move.pro 2010-08-15 21:57:28.000000000 +0200 ---- src/proto/move.pro 2012-11-20 16:51:57.000000000 +0100 -*************** -*** 24,30 **** - int curwin_col_off __ARGS((void)); - int win_col_off2 __ARGS((win_T *wp)); - int curwin_col_off2 __ARGS((void)); -! void curs_columns __ARGS((int scroll)); - void scrolldown __ARGS((long line_count, int byfold)); - void scrollup __ARGS((long line_count, int byfold)); - void check_topfill __ARGS((win_T *wp, int down)); ---- 24,30 ---- - int curwin_col_off __ARGS((void)); - int win_col_off2 __ARGS((win_T *wp)); - int curwin_col_off2 __ARGS((void)); -! void curs_columns __ARGS((int may_scroll)); - void scrolldown __ARGS((long line_count, int byfold)); - void scrollup __ARGS((long line_count, int byfold)); - void check_topfill __ARGS((win_T *wp, int down)); -*** ../vim-7.3.719/src/proto/screen.pro 2010-08-15 21:57:28.000000000 +0200 ---- src/proto/screen.pro 2012-11-20 16:52:01.000000000 +0100 -*************** -*** 31,38 **** - void screen_draw_rectangle __ARGS((int row, int col, int height, int width, int invert)); - void screen_fill __ARGS((int start_row, int end_row, int start_col, int end_col, int c1, int c2, int attr)); - void check_for_delay __ARGS((int check_msg_scroll)); -! int screen_valid __ARGS((int clear)); -! void screenalloc __ARGS((int clear)); - void free_screenlines __ARGS((void)); - void screenclear __ARGS((void)); - int can_clear __ARGS((char_u *p)); ---- 31,38 ---- - void screen_draw_rectangle __ARGS((int row, int col, int height, int width, int invert)); - void screen_fill __ARGS((int start_row, int end_row, int start_col, int end_col, int c1, int c2, int attr)); - void check_for_delay __ARGS((int check_msg_scroll)); -! int screen_valid __ARGS((int doclear)); -! void screenalloc __ARGS((int doclear)); - void free_screenlines __ARGS((void)); - void screenclear __ARGS((void)); - int can_clear __ARGS((char_u *p)); -*** ../vim-7.3.719/src/proto/search.pro 2012-07-25 15:06:20.000000000 +0200 ---- src/proto/search.pro 2012-11-20 16:52:01.000000000 +0100 -*************** -*** 27,38 **** - int end_word __ARGS((long count, int bigword, int stop, int empty)); - int bckend_word __ARGS((long count, int bigword, int eol)); - int current_word __ARGS((oparg_T *oap, long count, int include, int bigword)); -- int current_search __ARGS((long count, int forward)); - int current_sent __ARGS((oparg_T *oap, long count, int include)); - int current_block __ARGS((oparg_T *oap, long count, int include, int what, int other)); - int current_tagblock __ARGS((oparg_T *oap, long count_arg, int include)); - int current_par __ARGS((oparg_T *oap, long count, int include, int type)); - int current_quote __ARGS((oparg_T *oap, long count, int include, int quotechar)); - int linewhite __ARGS((linenr_T lnum)); - void find_pattern_in_path __ARGS((char_u *ptr, int dir, int len, int whole, int skip_comments, int type, long count, int action, linenr_T start_lnum, linenr_T end_lnum)); - int read_viminfo_search_pattern __ARGS((vir_T *virp, int force)); ---- 27,38 ---- - int end_word __ARGS((long count, int bigword, int stop, int empty)); - int bckend_word __ARGS((long count, int bigword, int eol)); - int current_word __ARGS((oparg_T *oap, long count, int include, int bigword)); - int current_sent __ARGS((oparg_T *oap, long count, int include)); - int current_block __ARGS((oparg_T *oap, long count, int include, int what, int other)); - int current_tagblock __ARGS((oparg_T *oap, long count_arg, int include)); - int current_par __ARGS((oparg_T *oap, long count, int include, int type)); - int current_quote __ARGS((oparg_T *oap, long count, int include, int quotechar)); -+ int current_search __ARGS((long count, int forward)); - int linewhite __ARGS((linenr_T lnum)); - void find_pattern_in_path __ARGS((char_u *ptr, int dir, int len, int whole, int skip_comments, int type, long count, int action, linenr_T start_lnum, linenr_T end_lnum)); - int read_viminfo_search_pattern __ARGS((vir_T *virp, int force)); -*** ../vim-7.3.719/src/proto/os_win32.pro 2011-05-05 18:31:54.000000000 +0200 ---- src/proto/os_win32.pro 2012-11-20 16:52:13.000000000 +0100 -*************** -*** 22,28 **** - int mch_isdir __ARGS((char_u *name)); - int mch_mkdir __ARGS((char_u *name)); - int mch_is_linked __ARGS((char_u *fname)); -! int win32_fileinfo __ARGS((char_u *name, BY_HANDLE_FILE_INFORMATION *lpFileInfo)); - int mch_writable __ARGS((char_u *name)); - int mch_can_exe __ARGS((char_u *name)); - int mch_nodetype __ARGS((char_u *name)); ---- 22,28 ---- - int mch_isdir __ARGS((char_u *name)); - int mch_mkdir __ARGS((char_u *name)); - int mch_is_linked __ARGS((char_u *fname)); -! int win32_fileinfo __ARGS((char_u *fname, BY_HANDLE_FILE_INFORMATION *info)); - int mch_writable __ARGS((char_u *name)); - int mch_can_exe __ARGS((char_u *name)); - int mch_nodetype __ARGS((char_u *name)); -*** ../vim-7.3.719/src/proto/os_mswin.pro 2010-08-15 21:57:28.000000000 +0200 ---- src/proto/os_mswin.pro 2012-11-20 16:52:14.000000000 +0100 -*************** -*** 28,38 **** - void WideCharToMultiByte_alloc __ARGS((UINT cp, DWORD flags, LPCWSTR in, int inlen, LPSTR *out, int *outlen, LPCSTR def, LPBOOL useddef)); - int clip_mch_own_selection __ARGS((VimClipboard *cbd)); - void clip_mch_lose_selection __ARGS((VimClipboard *cbd)); - short_u *enc_to_utf16 __ARGS((char_u *str, int *lenp)); - char_u *utf16_to_enc __ARGS((short_u *str, int *lenp)); -- void clip_mch_request_selection __ARGS((VimClipboard *cbd)); - void acp_to_enc __ARGS((char_u *str, int str_size, char_u **out, int *outlen)); -- void clip_mch_set_selection __ARGS((VimClipboard *cbd)); - void DumpPutS __ARGS((const char *psz)); - int mch_get_winpos __ARGS((int *x, int *y)); - void mch_set_winpos __ARGS((int x, int y)); ---- 28,38 ---- - void WideCharToMultiByte_alloc __ARGS((UINT cp, DWORD flags, LPCWSTR in, int inlen, LPSTR *out, int *outlen, LPCSTR def, LPBOOL useddef)); - int clip_mch_own_selection __ARGS((VimClipboard *cbd)); - void clip_mch_lose_selection __ARGS((VimClipboard *cbd)); -+ void clip_mch_request_selection __ARGS((VimClipboard *cbd)); -+ void clip_mch_set_selection __ARGS((VimClipboard *cbd)); - short_u *enc_to_utf16 __ARGS((char_u *str, int *lenp)); - char_u *utf16_to_enc __ARGS((short_u *str, int *lenp)); - void acp_to_enc __ARGS((char_u *str, int str_size, char_u **out, int *outlen)); - void DumpPutS __ARGS((const char *psz)); - int mch_get_winpos __ARGS((int *x, int *y)); - void mch_set_winpos __ARGS((int x, int y)); -*** ../vim-7.3.719/src/version.c 2012-11-20 16:53:34.000000000 +0100 ---- src/version.c 2012-11-20 16:55:09.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 720, - /**/ - --- -Light travels faster than sound. This is why some people -appear bright until you hear them speak - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.721 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.721 -Problem: Ruby interface defines local functions globally. -Solution: Make the functions static. -Files: src/if_ruby.c - - -*** ../vim-7.3.720/src/if_ruby.c 2012-10-03 18:06:55.000000000 +0200 ---- src/if_ruby.c 2012-11-20 15:35:46.000000000 +0100 -*************** -*** 336,346 **** - #endif - - #ifdef RUBY19_OR_LATER -! SIGNED_VALUE rb_num2long_stub(VALUE x) - { - return dll_rb_num2long(x); - } -! VALUE rb_int2big_stub(SIGNED_VALUE x) - { - return dll_rb_int2big(x); - } ---- 336,346 ---- - #endif - - #ifdef RUBY19_OR_LATER -! static SIGNED_VALUE rb_num2long_stub(VALUE x) - { - return dll_rb_num2long(x); - } -! static VALUE rb_int2big_stub(SIGNED_VALUE x) - { - return dll_rb_int2big(x); - } -*** ../vim-7.3.720/src/version.c 2012-11-20 16:56:49.000000000 +0100 ---- src/version.c 2012-11-20 16:58:32.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 721, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -39. You move into a new house and decide to Netscape before you landscape. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.722 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.722 -Problem: Perl flags may contain "-g", which breaks "make proto". -Solution: Filter out the "-g" flag for cproto. (Ken Takata) -Files: src/Makefile - - -*** ../vim-7.3.721/src/Makefile 2012-07-25 16:32:03.000000000 +0200 ---- src/Makefile 2012-11-20 17:02:22.000000000 +0100 -*************** -*** 1753,1762 **** - # Filter out arguments that cproto doesn't support. - # Don't pass "-pthread" to cproto, it sees it as a list of individual flags. - # Don't pass "-fstack-protector" to cproto, for the same reason. - # The -E"gcc -E" argument must be separate to avoid problems with shell - # quoting. - CPROTO = cproto $(PROTO_FLAGS) -DPROTO \ -! `echo '$(LINT_CFLAGS)' | sed -e 's/-pthread//g' -e 's/-fstack-protector//g'` - - ### Would be nice if this would work for "normal" make. - ### Currently it only works for (Free)BSD make. ---- 1753,1763 ---- - # Filter out arguments that cproto doesn't support. - # Don't pass "-pthread" to cproto, it sees it as a list of individual flags. - # Don't pass "-fstack-protector" to cproto, for the same reason. -+ # Don't pass "-g" to cproto. - # The -E"gcc -E" argument must be separate to avoid problems with shell - # quoting. - CPROTO = cproto $(PROTO_FLAGS) -DPROTO \ -! `echo '$(LINT_CFLAGS)' | sed -e 's/-pthread//g' -e 's/-fstack-protector//g' -e 's/\ -g\ / /g'` - - ### Would be nice if this would work for "normal" make. - ### Currently it only works for (Free)BSD make. -*** ../vim-7.3.721/src/version.c 2012-11-20 16:59:09.000000000 +0100 ---- src/version.c 2012-11-20 17:02:54.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 722, - /**/ - --- -The future isn't what it used to be. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.723 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.723 -Problem: Various tiny problems. -Solution: Various tiny fixes. -Files: src/gui_mac.c, src/xpm_w32.c, src/netbeans.c, src/sha256.c, - src/if_sniff.c, README.txt - - -*** ../vim-7.3.722/src/gui_mac.c 2011-12-14 15:07:11.000000000 +0100 ---- src/gui_mac.c 2012-06-20 18:16:12.000000000 +0200 -*************** -*** 5728,5734 **** - case VIM_QUESTION: useIcon = kNoteIcon; break; - case VIM_WARNING: useIcon = kCautionIcon; break; - case VIM_ERROR: useIcon = kStopIcon; break; -! default: useIcon = kStopIcon; - } - AppendDITL(theDialog, iconDITL, overlayDITL); - ReleaseResource(iconDITL); ---- 5728,5734 ---- - case VIM_QUESTION: useIcon = kNoteIcon; break; - case VIM_WARNING: useIcon = kCautionIcon; break; - case VIM_ERROR: useIcon = kStopIcon; break; -! default: useIcon = kStopIcon; - } - AppendDITL(theDialog, iconDITL, overlayDITL); - ReleaseResource(iconDITL); -*** ../vim-7.3.722/src/xpm_w32.c 2012-02-05 00:47:56.000000000 +0100 ---- src/xpm_w32.c 2012-08-02 21:46:20.000000000 +0200 -*************** -*** 55,61 **** - return -1; - if (shp == NULL) - { -! if (img) - XDestroyImage(img); - return -1; - } ---- 55,61 ---- - return -1; - if (shp == NULL) - { -! if (img) - XDestroyImage(img); - return -1; - } -*** ../vim-7.3.722/src/netbeans.c 2012-04-20 19:47:00.000000000 +0200 ---- src/netbeans.c 2012-06-20 19:56:18.000000000 +0200 -*************** -*** 978,984 **** - buf_list_used = 0; - - /* free the queued key commands */ -! while(key_node != NULL && key_node != &keyHead) - { - keyQ_T *next = key_node->next; - vim_free(key_node->keystr); ---- 978,984 ---- - buf_list_used = 0; - - /* free the queued key commands */ -! while (key_node != NULL && key_node != &keyHead) - { - keyQ_T *next = key_node->next; - vim_free(key_node->keystr); -*************** -*** 993,999 **** - } - - /* free the queued netbeans commands */ -! while(cmd_node != NULL && cmd_node != &head) - { - queue_T *next = cmd_node->next; - vim_free(cmd_node->buffer); ---- 993,999 ---- - } - - /* free the queued netbeans commands */ -! while (cmd_node != NULL && cmd_node != &head) - { - queue_T *next = cmd_node->next; - vim_free(cmd_node->buffer); -*** ../vim-7.3.722/src/sha256.c 2010-08-15 21:57:25.000000000 +0200 ---- src/sha256.c 2012-03-18 21:35:07.000000000 +0100 -*************** -*** 7,15 **** - * See README.txt for an overview of the Vim source code. - * - * FIPS-180-2 compliant SHA-256 implementation -! * GPL by Christophe Devine. - * Modified for md5deep, in public domain. - * Modified For Vim, Mohsin Ahmed, http://www.cs.albany.edu/~mosh - * - * Vim specific notes: - * Functions exported by this file: ---- 7,17 ---- - * See README.txt for an overview of the Vim source code. - * - * FIPS-180-2 compliant SHA-256 implementation -! * GPL by Christophe Devine, applies to older version. - * Modified for md5deep, in public domain. - * Modified For Vim, Mohsin Ahmed, http://www.cs.albany.edu/~mosh -+ * Mohsin Ahmed states this work is distributed under the VIM License or GPL, -+ * at your choice. - * - * Vim specific notes: - * Functions exported by this file: -*** ../vim-7.3.722/src/if_sniff.c 2010-12-17 18:06:00.000000000 +0100 ---- src/if_sniff.c 2012-06-20 19:56:09.000000000 +0200 -*************** -*** 449,455 **** - if (!sniff_cmd) - { - struct sn_cmd_list *list = sniff_cmd_ext; -! while(list) - { - if (!strcmp(cmd, list->sniff_cmd->cmd_name)) - { ---- 449,455 ---- - if (!sniff_cmd) - { - struct sn_cmd_list *list = sniff_cmd_ext; -! while (list) - { - if (!strcmp(cmd, list->sniff_cmd->cmd_name)) - { -*************** -*** 479,485 **** - /* unescape message text */ - char *p = msg; - char *end = p+strlen(msg); -! while(*p) - { - if (*p == '\\') - mch_memmove(p,p+1,end-p); ---- 479,485 ---- - /* unescape message text */ - char *p = msg; - char *end = p+strlen(msg); -! while (*p) - { - if (*p == '\\') - mch_memmove(p,p+1,end-p); -*************** -*** 489,495 **** - SNIFF_TRACE1("request def = %s\n",def); - SNIFF_TRACE1("request msg = %s\n",msg); - -! while(list && list->next_cmd) - list = list->next_cmd; - if (!list) - sniff_cmd_ext = cmd_node; ---- 489,495 ---- - SNIFF_TRACE1("request def = %s\n",def); - SNIFF_TRACE1("request msg = %s\n",msg); - -! while (list && list->next_cmd) - list = list->next_cmd; - if (!list) - sniff_cmd_ext = cmd_node; -*************** -*** 628,634 **** - gui_mch_wait_for_chars(0L); - #endif - #ifdef WIN32 -! while(sniffBufStart != NULL) - { - struct sniffBufNode *node = sniffBufStart; - sniffBufStart = sniffBufStart->next; ---- 628,634 ---- - gui_mch_wait_for_chars(0L); - #endif - #ifdef WIN32 -! while (sniffBufStart != NULL) - { - struct sniffBufNode *node = sniffBufStart; - sniffBufStart = sniffBufStart->next; -*************** -*** 789,795 **** - command = buffer[0]; - arguments = &buffer[1]; - token = strtok(arguments, sniff_rq_sep); -! while(argc <3) - { - if (token) - { ---- 789,795 ---- - command = buffer[0]; - arguments = &buffer[1]; - token = strtok(arguments, sniff_rq_sep); -! while (argc <3) - { - if (token) - { -*************** -*** 925,931 **** - default : - break; - } -! while(argc) - vim_free(argv[--argc]); - } - ---- 925,931 ---- - default : - break; - } -! while (argc) - vim_free(argv[--argc]); - } - -*** ../vim-7.3.722/README.txt 2010-08-15 21:56:43.000000000 +0200 ---- README.txt 2012-10-28 18:58:18.000000000 +0100 -*************** -*** 97,103 **** - If you have problems, have a look at the Vim FAQ: - http://vimdoc.sf.net/vimfaq.html - -! Send bug reports to: - Bram Moolenaar <Bram@vim.org> - - There are several mailing lists for Vim, see http://www.vim.org/maillist.php. ---- 97,107 ---- - If you have problems, have a look at the Vim FAQ: - http://vimdoc.sf.net/vimfaq.html - -! If you still have problems, use one of the maillists to discuss t with Vim -! users and developers: -! http://www.vim.org/maillist.php -! -! If nothing else works, report bugs directly: - Bram Moolenaar <Bram@vim.org> - - There are several mailing lists for Vim, see http://www.vim.org/maillist.php. -*** ../vim-7.3.722/src/version.c 2012-11-20 17:03:23.000000000 +0100 ---- src/version.c 2012-11-20 17:14:09.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 723, - /**/ - --- -"Oh, no! NOT the Spanish Inquisition!" -"NOBODY expects the Spanish Inquisition!!!" - -- Monty Python sketch -- -"Oh, no! NOT another option!" -"EVERYBODY expects another option!!!" - -- Discussion in vim-dev mailing list -- - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.724 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.724 -Problem: Building with Ruby and Tcl on MS-Windows 64 bit does not work. -Solution: Remove Ruby and Tcl from the big MS-Windows build. -Files: src/bigvim64.bat - - -*** ../vim-7.3.723/src/bigvim64.bat 2012-08-29 14:18:26.000000000 +0200 ---- src/bigvim64.bat 2012-08-29 17:32:55.000000000 +0200 -*************** -*** 1,6 **** - :: command to build big Vim 64 bit with OLE, Perl, Python, Ruby and Tcl - :: First run: %VCDIR%\vcvarsall.bat x86_amd64 - SET VCDIR="C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\" - SET TOOLDIR=E:\ -! %VCDIR%\bin\nmake -f Make_mvc.mak CPU=AMD64 GUI=yes OLE=yes PERL=E:\perl514 DYNAMIC_PERL=yes PERL_VER=514 PYTHON=%TOOLDIR%python27 DYNAMIC_PYTHON=yes PYTHON_VER=27 PYTHON3=%TOOLDIR%python32 DYNAMIC_PYTHON3=yes PYTHON3_VER=32 RUBY=%TOOLDIR%ruby192 DYNAMIC_RUBY=yes RUBY_VER=192 RUBY_VER_LONG=1.9.2 TCL=%TOOLDIR%tcl TCL_VER=85 TCL_VER_LONG=8.5 DYNAMIC_TCL=yes %1 IME=yes CSCOPE=yes - ---- 1,7 ---- - :: command to build big Vim 64 bit with OLE, Perl, Python, Ruby and Tcl - :: First run: %VCDIR%\vcvarsall.bat x86_amd64 -+ :: Ruby and Tcl are excluded, doesn't seem to work. - SET VCDIR="C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\" - SET TOOLDIR=E:\ -! %VCDIR%\bin\nmake -f Make_mvc.mak CPU=AMD64 GUI=yes OLE=yes PERL=E:\perl514 DYNAMIC_PERL=yes PERL_VER=514 PYTHON=%TOOLDIR%python27 DYNAMIC_PYTHON=yes PYTHON_VER=27 PYTHON3=%TOOLDIR%python32 DYNAMIC_PYTHON3=yes PYTHON3_VER=32 %1 IME=yes CSCOPE=yes - -*** ../vim-7.3.723/src/version.c 2012-11-20 17:18:56.000000000 +0100 ---- src/version.c 2012-11-20 17:20:51.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 724, - /**/ - --- -Microsoft is to software what McDonalds is to gourmet cooking - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.725 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.725 -Problem: :aboveleft and :belowright have no effect on :copen. -Solution: Check for cmdmod.split. (Christian Brabandt) -Files: src/quickfix.c - - -*** ../vim-7.3.724/src/quickfix.c 2012-11-14 22:38:04.000000000 +0100 ---- src/quickfix.c 2012-11-20 17:51:59.000000000 +0100 -*************** -*** 2347,2354 **** - /* The current window becomes the previous window afterwards. */ - win = curwin; - -! if (eap->cmdidx == CMD_copen || eap->cmdidx == CMD_cwindow) -! /* Create the new window at the very bottom. */ - win_goto(lastwin); - if (win_split(height, WSP_BELOW | WSP_NEWLOC) == FAIL) - return; /* not enough room for window */ ---- 2347,2356 ---- - /* The current window becomes the previous window afterwards. */ - win = curwin; - -! if ((eap->cmdidx == CMD_copen || eap->cmdidx == CMD_cwindow) -! && cmdmod.split == 0) -! /* Create the new window at the very bottom, except when -! * :belowright or :aboveleft is used. */ - win_goto(lastwin); - if (win_split(height, WSP_BELOW | WSP_NEWLOC) == FAIL) - return; /* not enough room for window */ -*** ../vim-7.3.724/src/version.c 2012-11-20 17:21:29.000000000 +0100 ---- src/version.c 2012-11-20 17:50:30.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 725, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -40. You tell the cab driver you live at - http://123.elm.street/house/bluetrim.html -41. You actually try that 123.elm.street address. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.726 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.726 -Problem: Typos and duplicate info in README. -Solution: Fix the text. -Files: README.txt - - -*** ../vim-7.3.725/README.txt 2012-11-20 17:18:56.000000000 +0100 ---- README.txt 2012-11-21 12:28:58.000000000 +0100 -*************** -*** 97,111 **** - If you have problems, have a look at the Vim FAQ: - http://vimdoc.sf.net/vimfaq.html - -! If you still have problems, use one of the maillists to discuss t with Vim -! users and developers: - http://www.vim.org/maillist.php - - If nothing else works, report bugs directly: - Bram Moolenaar <Bram@vim.org> - -- There are several mailing lists for Vim, see http://www.vim.org/maillist.php. -- - - MAIN AUTHOR - ---- 97,109 ---- - If you have problems, have a look at the Vim FAQ: - http://vimdoc.sf.net/vimfaq.html - -! If you still have problems or any other questions, use one of the mailing -! lists to discuss them with Vim users and developers: - http://www.vim.org/maillist.php - - If nothing else works, report bugs directly: - Bram Moolenaar <Bram@vim.org> - - - MAIN AUTHOR - -*** ../vim-7.3.725/src/version.c 2012-11-20 17:55:06.000000000 +0100 ---- src/version.c 2012-11-23 21:44:38.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 726, - /**/ - --- -Q: Should I clean my house or work on Vim? -A: Whatever contains more bugs. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.727 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.727 -Problem: Can't always find Win32.mak when building GvimExt. -Solution: Use same mechanism as in Make_mvc.mak. (Cade Foster) -Files: src/GvimExt/Makefile - - -*** ../vim-7.3.726/src/GvimExt/Makefile 2010-08-15 21:57:29.000000000 +0200 ---- src/GvimExt/Makefile 2012-11-21 19:53:02.000000000 +0100 -*************** -*** 10,16 **** - NODEBUG = 1 - !endif - -! !include <win32.mak> - - all: gvimext.dll - ---- 10,20 ---- - NODEBUG = 1 - !endif - -! !ifdef SDK_INCLUDE_DIR -! !include $(SDK_INCLUDE_DIR)\Win32.mak -! !else -! !include <Win32.mak> -! !endif - - all: gvimext.dll - -*** ../vim-7.3.726/src/version.c 2012-11-23 21:45:20.000000000 +0100 ---- src/version.c 2012-11-23 21:46:35.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 727, - /**/ - --- -Time is money. Especially if you make clocks. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.728 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.728 -Problem: Cannot compile with MzScheme interface on Ubuntu 12.10. -Solution: Find the collects directory under /usr/share. -Files: src/configure.in, src/auto/configure - - -*** ../vim-7.3.727/src/configure.in 2012-10-03 21:09:33.000000000 +0200 ---- src/configure.in 2012-11-23 21:51:39.000000000 +0100 -*************** -*** 650,666 **** - MZSCHEME_LIBS="${MZSCHEME_LIBS} -R ${vi_cv_path_mzscheme_pfx}/lib" - fi - fi - if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then -! SCHEME_COLLECTS=lib/plt/ - else - if test -d $vi_cv_path_mzscheme_pfx/lib/racket/collects; then -! SCHEME_COLLECTS=lib/racket/ - fi - fi -! if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.ss" ; then - MZSCHEME_EXTRA="mzscheme_base.c" - else -! if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.rkt" ; then - MZSCHEME_EXTRA="mzscheme_base.c" - fi - fi ---- 650,679 ---- - MZSCHEME_LIBS="${MZSCHEME_LIBS} -R ${vi_cv_path_mzscheme_pfx}/lib" - fi - fi -+ -+ AC_MSG_CHECKING(for racket collects directory) - if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then -! SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/plt/ - else - if test -d $vi_cv_path_mzscheme_pfx/lib/racket/collects; then -! SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/racket/ -! else -! if test -d $vi_cv_path_mzscheme_pfx/share/racket/collects; then -! SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/share/racket/ -! fi - fi - fi -! if test "X$SCHEME_COLLECTS" != "X" ; then -! AC_MSG_RESULT(${SCHEME_COLLECTS}) -! else -! AC_MSG_RESULT(not found) -! fi -! -! AC_MSG_CHECKING(for mzscheme_base.c) -! if test -f "${SCHEME_COLLECTS}collects/scheme/base.ss" ; then - MZSCHEME_EXTRA="mzscheme_base.c" - else -! if test -f "${SCHEME_COLLECTS}collects/scheme/base.rkt" ; then - MZSCHEME_EXTRA="mzscheme_base.c" - fi - fi -*************** -*** 668,676 **** - dnl need to generate bytecode for MzScheme base - MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE" - MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc" - fi - MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \ -! -DMZSCHEME_COLLECTS='\"${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects\"'" - MZSCHEME_SRC="if_mzsch.c" - MZSCHEME_OBJ="objects/if_mzsch.o" - MZSCHEME_PRO="if_mzsch.pro" ---- 681,693 ---- - dnl need to generate bytecode for MzScheme base - MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE" - MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc" -+ AC_MSG_RESULT(needed) -+ else -+ AC_MSG_RESULT(not needed) - fi -+ - MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \ -! -DMZSCHEME_COLLECTS='\"${SCHEME_COLLECTS}collects\"'" - MZSCHEME_SRC="if_mzsch.c" - MZSCHEME_OBJ="objects/if_mzsch.o" - MZSCHEME_PRO="if_mzsch.pro" -*** ../vim-7.3.727/src/auto/configure 2012-10-03 21:09:33.000000000 +0200 ---- src/auto/configure 2012-11-23 21:51:42.000000000 +0100 -*************** -*** 4957,4982 **** - MZSCHEME_LIBS="${MZSCHEME_LIBS} -R ${vi_cv_path_mzscheme_pfx}/lib" - fi - fi - if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then -! SCHEME_COLLECTS=lib/plt/ - else - if test -d $vi_cv_path_mzscheme_pfx/lib/racket/collects; then -! SCHEME_COLLECTS=lib/racket/ - fi - fi -! if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.ss" ; then - MZSCHEME_EXTRA="mzscheme_base.c" - else -! if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.rkt" ; then - MZSCHEME_EXTRA="mzscheme_base.c" - fi - fi - if test "X$MZSCHEME_EXTRA" != "X" ; then - MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE" - MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc" - fi - MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \ -! -DMZSCHEME_COLLECTS='\"${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects\"'" - MZSCHEME_SRC="if_mzsch.c" - MZSCHEME_OBJ="objects/if_mzsch.o" - MZSCHEME_PRO="if_mzsch.pro" ---- 4957,5005 ---- - MZSCHEME_LIBS="${MZSCHEME_LIBS} -R ${vi_cv_path_mzscheme_pfx}/lib" - fi - fi -+ -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for racket collects directory" >&5 -+ $as_echo_n "checking for racket collects directory... " >&6; } - if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then -! SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/plt/ - else - if test -d $vi_cv_path_mzscheme_pfx/lib/racket/collects; then -! SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/racket/ -! else -! if test -d $vi_cv_path_mzscheme_pfx/share/racket/collects; then -! SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/share/racket/ -! fi - fi - fi -! if test "X$SCHEME_COLLECTS" != "X" ; then -! { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${SCHEME_COLLECTS}" >&5 -! $as_echo "${SCHEME_COLLECTS}" >&6; } -! else -! { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 -! $as_echo "not found" >&6; } -! fi -! -! { $as_echo "$as_me:${as_lineno-$LINENO}: checking for mzscheme_base.c" >&5 -! $as_echo_n "checking for mzscheme_base.c... " >&6; } -! if test -f "${SCHEME_COLLECTS}collects/scheme/base.ss" ; then - MZSCHEME_EXTRA="mzscheme_base.c" - else -! if test -f "${SCHEME_COLLECTS}collects/scheme/base.rkt" ; then - MZSCHEME_EXTRA="mzscheme_base.c" - fi - fi - if test "X$MZSCHEME_EXTRA" != "X" ; then - MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE" - MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc" -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: needed" >&5 -+ $as_echo "needed" >&6; } -+ else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not needed" >&5 -+ $as_echo "not needed" >&6; } - fi -+ - MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \ -! -DMZSCHEME_COLLECTS='\"${SCHEME_COLLECTS}collects\"'" - MZSCHEME_SRC="if_mzsch.c" - MZSCHEME_OBJ="objects/if_mzsch.o" - MZSCHEME_PRO="if_mzsch.pro" -*** ../vim-7.3.727/src/version.c 2012-11-23 21:47:18.000000000 +0100 ---- src/version.c 2012-11-23 21:54:13.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 728, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -60. As your car crashes through the guardrail on a mountain road, your first - instinct is to search for the "back" button. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.729 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.729 -Problem: Building with Ruby fails on some systems. -Solution: Remove "static" and add #ifndef PROTO. (Ken Takata) -Files: src/if_ruby.c - - -*** ../vim-7.3.728/src/if_ruby.c 2012-11-20 16:59:09.000000000 +0100 ---- src/if_ruby.c 2012-11-24 13:32:06.000000000 +0100 -*************** -*** 335,346 **** - static void* (*ruby_process_options)(int, char**); - #endif - -! #ifdef RUBY19_OR_LATER -! static SIGNED_VALUE rb_num2long_stub(VALUE x) - { - return dll_rb_num2long(x); - } -! static VALUE rb_int2big_stub(SIGNED_VALUE x) - { - return dll_rb_int2big(x); - } ---- 335,346 ---- - static void* (*ruby_process_options)(int, char**); - #endif - -! #if defined(RUBY19_OR_LATER) && !defined(PROTO) -! SIGNED_VALUE rb_num2long_stub(VALUE x) - { - return dll_rb_num2long(x); - } -! VALUE rb_int2big_stub(SIGNED_VALUE x) - { - return dll_rb_int2big(x); - } -*** ../vim-7.3.728/src/version.c 2012-11-23 21:54:43.000000000 +0100 ---- src/version.c 2012-11-24 13:34:20.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 729, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -64. The remote to the T.V. is missing...and you don't even care. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.730 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.730 -Problem: Crash in PHP file when using syntastic. (Ike Devolder) -Solution: Avoid using NULL pointer. (Christian Brabandt) -Files: src/quickfix.c - - -*** ../vim-7.3.729/src/quickfix.c 2012-11-20 17:55:06.000000000 +0100 ---- src/quickfix.c 2012-11-28 15:20:21.000000000 +0100 -*************** -*** 898,908 **** - * way with ":grep'. - */ - while (qi->qf_listcount > qi->qf_curlist + 1) -- { -- if (wp != NULL && wp->w_llist == qi) -- wp->w_llist = NULL; - qf_free(qi, --qi->qf_listcount); -- } - - /* - * When the stack is full, remove to oldest entry ---- 898,904 ---- -*************** -*** 910,917 **** - */ - if (qi->qf_listcount == LISTCOUNT) - { -- if (wp != NULL && wp->w_llist == qi) -- wp->w_llist = NULL; - qf_free(qi, 0); - for (i = 1; i < LISTCOUNT; ++i) - qi->qf_lists[i - 1] = qi->qf_lists[i]; ---- 906,911 ---- -*************** -*** 2135,2143 **** - while (qi->qf_lists[idx].qf_count) - { - qfp = qi->qf_lists[idx].qf_start->qf_next; -! vim_free(qi->qf_lists[idx].qf_start->qf_text); -! vim_free(qi->qf_lists[idx].qf_start->qf_pattern); -! vim_free(qi->qf_lists[idx].qf_start); - qi->qf_lists[idx].qf_start = qfp; - --qi->qf_lists[idx].qf_count; - } ---- 2129,2140 ---- - while (qi->qf_lists[idx].qf_count) - { - qfp = qi->qf_lists[idx].qf_start->qf_next; -! if (qi->qf_lists[idx].qf_title != NULL) -! { -! vim_free(qi->qf_lists[idx].qf_start->qf_text); -! vim_free(qi->qf_lists[idx].qf_start->qf_pattern); -! vim_free(qi->qf_lists[idx].qf_start); -! } - qi->qf_lists[idx].qf_start = qfp; - --qi->qf_lists[idx].qf_count; - } -*** ../vim-7.3.729/src/version.c 2012-11-24 13:38:56.000000000 +0100 ---- src/version.c 2012-11-28 15:16:16.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 730, - /**/ - - --- -hundred-and-one symptoms of being an internet addict: -89. In addition to your e-mail address being on your business - cards you even have your own domain. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.731 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.731 -Problem: Py3Init_vim() is exported uneccessarily. -Solution: Make it static. (Ken Takata) -Files: src/if_python3.c - - -*** ../vim-7.3.730/src/if_python3.c 2012-11-20 11:02:49.000000000 +0100 ---- src/if_python3.c 2012-11-28 15:32:00.000000000 +0100 -*************** -*** 657,663 **** - static PyObject *globals; - - static int PythonIO_Init(void); -! PyMODINIT_FUNC Py3Init_vim(void); - - /****************************************************** - * 1. Python interpreter main program. ---- 657,663 ---- - static PyObject *globals; - - static int PythonIO_Init(void); -! static PyObject *Py3Init_vim(void); - - /****************************************************** - * 1. Python interpreter main program. -*************** -*** 1773,1780 **** - - static struct PyModuleDef vimmodule; - -! #ifndef PROTO -! PyMODINIT_FUNC Py3Init_vim(void) - { - PyObject *mod; - PyObject *tmp; ---- 1773,1780 ---- - - static struct PyModuleDef vimmodule; - -! static PyObject * -! Py3Init_vim(void) - { - PyObject *mod; - PyObject *tmp; -*************** -*** 1824,1830 **** - - return mod; - } -- #endif - - /************************************************************************* - * 4. Utility functions for handling the interface between Vim and Python. ---- 1824,1829 ---- -*** ../vim-7.3.730/src/version.c 2012-11-28 15:25:28.000000000 +0100 ---- src/version.c 2012-11-28 15:30:47.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 731, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -90. Instead of calling you to dinner, your spouse sends e-mail. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.732 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.732 -Problem: Compiler warnings for function arguments. -Solution: Use inteptr_t instead of long. -Files: src/if_mzsch.c - - -*** ../vim-7.3.731/src/if_mzsch.c 2012-10-14 03:41:54.000000000 +0200 ---- src/if_mzsch.c 2012-11-24 14:00:31.000000000 +0100 -*************** -*** 142,148 **** - static int do_mzscheme_command(exarg_T *, void *, Scheme_Closed_Prim *what); - static void startup_mzscheme(void); - static char *string_to_line(Scheme_Object *obj); -! static void do_output(char *mesg, long len); - static void do_printf(char *format, ...); - static void do_flush(void); - static Scheme_Object *_apply_thunk_catch_exceptions( ---- 142,148 ---- - static int do_mzscheme_command(exarg_T *, void *, Scheme_Closed_Prim *what); - static void startup_mzscheme(void); - static char *string_to_line(Scheme_Object *obj); -! static void do_output(char *mesg, intptr_t len); - static void do_printf(char *format, ...); - static void do_flush(void); - static Scheme_Object *_apply_thunk_catch_exceptions( -*************** -*** 1349,1356 **** - } - - static void -! do_output(char *mesg, long len UNUSED) - { - do_intrnl_output(mesg, 0); - } - ---- 1349,1357 ---- - } - - static void -! do_output(char *mesg, intptr_t len UNUSED) - { -+ /* TODO: use len, the string may not be NUL terminated */ - do_intrnl_output(mesg, 0); - } - -*************** -*** 1370,1376 **** - do_flush(void) - { - char *buff; -! long length; - - buff = scheme_get_sized_string_output(curerr, &length); - MZ_GC_CHECK(); ---- 1371,1377 ---- - do_flush(void) - { - char *buff; -! intptr_t length; - - buff = scheme_get_sized_string_output(curerr, &length); - MZ_GC_CHECK(); -*************** -*** 2588,2594 **** - { - char *scheme_str = NULL; - char *vim_str = NULL; -! long len; - int i; - - scheme_str = scheme_display_to_string(obj, &len); ---- 2589,2595 ---- - { - char *scheme_str = NULL; - char *vim_str = NULL; -! intptr_t len; - int i; - - scheme_str = scheme_display_to_string(obj, &len); -*************** -*** 2597,2606 **** - * are replacing a single line, and we must replace it with - * a single line. - */ -! if (memchr(scheme_str, '\n', len)) - scheme_signal_error(_("string cannot contain newlines")); - -! vim_str = (char *)alloc(len + 1); - - /* Create a copy of the string, with internal nulls replaced by - * newline characters, as is the vim convention. ---- 2598,2607 ---- - * are replacing a single line, and we must replace it with - * a single line. - */ -! if (memchr(scheme_str, '\n', (size_t)len)) - scheme_signal_error(_("string cannot contain newlines")); - -! vim_str = (char *)alloc((int)(len + 1)); - - /* Create a copy of the string, with internal nulls replaced by - * newline characters, as is the vim convention. -*** ../vim-7.3.731/src/version.c 2012-11-28 15:33:10.000000000 +0100 ---- src/version.c 2012-11-28 15:34:30.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 732, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -91. It's Saturday afternoon in the middle of May and you - are on computer. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.733 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.733 -Problem: Tests fail when including MzScheme. -Solution: Change #ifdefs for vim_main2(). -Files: src/main.c - - -*** ../vim-7.3.732/src/main.c 2012-04-25 18:24:24.000000000 +0200 ---- src/main.c 2012-11-24 14:26:56.000000000 +0100 -*************** -*** 147,154 **** - #define ME_INVALID_ARG 5 - }; - -- #ifndef NO_VIM_MAIN /* skip this for unittests */ - #ifndef PROTO /* don't want a prototype for main() */ - int - # ifdef VIMDLL - _export ---- 147,154 ---- - #define ME_INVALID_ARG 5 - }; - - #ifndef PROTO /* don't want a prototype for main() */ -+ #ifndef NO_VIM_MAIN /* skip this for unittests */ - int - # ifdef VIMDLL - _export -*************** -*** 570,584 **** - return mzscheme_main(2, args); - } - } - -! int vim_main2(int argc, char **argv) - { - char_u *fname = (char_u *)argv[0]; - mparm_T params; - - memcpy(¶ms, argv[1], sizeof(params)); - #endif - - /* Execute --cmd arguments. */ - exe_pre_commands(¶ms); - ---- 570,596 ---- - return mzscheme_main(2, args); - } - } -+ #endif -+ #endif /* NO_VIM_MAIN */ - -! /* vim_main2() needs to be produced when FEAT_MZSCHEME is defined even when -! * NO_VIM_MAIN is defined. */ -! #ifdef FEAT_MZSCHEME -! int -! vim_main2(int argc UNUSED, char **argv UNUSED) - { -+ # ifndef NO_VIM_MAIN - char_u *fname = (char_u *)argv[0]; - mparm_T params; - - memcpy(¶ms, argv[1], sizeof(params)); -+ # else -+ return 0; -+ } -+ # endif - #endif - -+ #ifndef NO_VIM_MAIN - /* Execute --cmd arguments. */ - exe_pre_commands(¶ms); - -*************** -*** 999,1006 **** - - return 0; - } -- #endif /* PROTO */ - #endif /* NO_VIM_MAIN */ - - /* - * Main loop: Execute Normal mode commands until exiting Vim. ---- 1011,1018 ---- - - return 0; - } - #endif /* NO_VIM_MAIN */ -+ #endif /* PROTO */ - - /* - * Main loop: Execute Normal mode commands until exiting Vim. -*** ../vim-7.3.732/src/version.c 2012-11-28 15:37:46.000000000 +0100 ---- src/version.c 2012-11-28 15:54:07.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 733, - /**/ - --- -From "know your smileys": - :^[/ mean-smiley-with-cigarette - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.734 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.734 -Problem: Cannot put help files in a sub-directory. -Solution: Make :helptags work for sub-directories. (Charles Campbell) -Files: src/ex_cmds.c - - -*** ../vim-7.3.733/src/ex_cmds.c 2012-09-05 15:15:01.000000000 +0200 ---- src/ex_cmds.c 2012-11-28 15:59:58.000000000 +0100 -*************** -*** 6344,6353 **** - } - - #ifdef FEAT_MULTI_LANG -! /* Get a list of all files in the directory. */ - STRCPY(NameBuff, dirname); - add_pathsep(NameBuff); -! STRCAT(NameBuff, "*"); - if (gen_expand_wildcards(1, &NameBuff, &filecount, &files, - EW_FILE|EW_SILENT) == FAIL - || filecount == 0) ---- 6344,6353 ---- - } - - #ifdef FEAT_MULTI_LANG -! /* Get a list of all files in the help directory and in subdirectories. */ - STRCPY(NameBuff, dirname); - add_pathsep(NameBuff); -! STRCAT(NameBuff, "**"); - if (gen_expand_wildcards(1, &NameBuff, &filecount, &files, - EW_FILE|EW_SILENT) == FAIL - || filecount == 0) -*************** -*** 6436,6443 **** - helptags_one(dir, ext, tagfname, add_help_tags) - char_u *dir; /* doc directory */ - char_u *ext; /* suffix, ".txt", ".itx", ".frx", etc. */ -! char_u *tagfname; /* "tags" for English, "tags-fr" for French. */ -! int add_help_tags; /* add "help-tags" tag */ - { - FILE *fd_tags; - FILE *fd; ---- 6436,6443 ---- - helptags_one(dir, ext, tagfname, add_help_tags) - char_u *dir; /* doc directory */ - char_u *ext; /* suffix, ".txt", ".itx", ".frx", etc. */ -! char_u *tagfname; /* "tags" for English, "tags-fr" for French. */ -! int add_help_tags; /* add "help-tags" tag */ - { - FILE *fd_tags; - FILE *fd; -*************** -*** 6449,6454 **** ---- 6449,6455 ---- - char_u *s; - int i; - char_u *fname; -+ int dirlen; - # ifdef FEAT_MBYTE - int utf8 = MAYBE; - int this_utf8; -*************** -*** 6459,6467 **** - /* - * Find all *.txt files. - */ - STRCPY(NameBuff, dir); -! add_pathsep(NameBuff); -! STRCAT(NameBuff, "*"); - STRCAT(NameBuff, ext); - if (gen_expand_wildcards(1, &NameBuff, &filecount, &files, - EW_FILE|EW_SILENT) == FAIL ---- 6460,6468 ---- - /* - * Find all *.txt files. - */ -+ dirlen = STRLEN(dir); - STRCPY(NameBuff, dir); -! STRCAT(NameBuff, "/**/*"); - STRCAT(NameBuff, ext); - if (gen_expand_wildcards(1, &NameBuff, &filecount, &files, - EW_FILE|EW_SILENT) == FAIL -*************** -*** 6522,6528 **** - EMSG2(_("E153: Unable to open %s for reading"), files[fi]); - continue; - } -! fname = gettail(files[fi]); - - # ifdef FEAT_MBYTE - firstline = TRUE; ---- 6523,6529 ---- - EMSG2(_("E153: Unable to open %s for reading"), files[fi]); - continue; - } -! fname = files[fi] + dirlen + 1; - - # ifdef FEAT_MBYTE - firstline = TRUE; -*** ../vim-7.3.733/src/version.c 2012-11-28 15:55:37.000000000 +0100 ---- src/version.c 2012-11-28 15:58:26.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 734, - /**/ - --- -From "know your smileys": - y:-) Bad toupee - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.735 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.735 -Problem: Cannot build Ruby 1.9 with MingW or Cygwin. -Solution: Add another include directory. (Ken Takata) -Files: src/Make_cyg.mak, src/Make_ming.mak - - -*** ../vim-7.3.734/src/Make_cyg.mak 2012-07-06 13:40:44.000000000 +0200 ---- src/Make_cyg.mak 2012-11-28 16:14:41.000000000 +0100 -*************** -*** 21,27 **** - # TCL_VER define to version of TCL being used (83) - # DYNAMIC_TCL no or yes: use yes to load the TCL DLL dynamically (yes) - # RUBY define to path to Ruby dir to get Ruby support (not defined) -! # RUBY_VER define to version of Ruby being used (16) - # DYNAMIC_RUBY no or yes: use yes to load the Ruby DLL dynamically (yes) - # MZSCHEME define to path to MzScheme dir to get MZSCHEME support (not defined) - # MZSCHEME_VER define to version of MzScheme being used (209_000) ---- 21,31 ---- - # TCL_VER define to version of TCL being used (83) - # DYNAMIC_TCL no or yes: use yes to load the TCL DLL dynamically (yes) - # RUBY define to path to Ruby dir to get Ruby support (not defined) -! # RUBY_VER define to version of Ruby being used (16) -! # RUBY_VER_LONG same, but in format with dot. (1.6) -! # You must set RUBY_VER_LONG when changing RUBY_VER. -! # You must set RUBY_API_VER version to RUBY_VER_LONG. -! # Don't set ruby API version to RUBY_VER like 191. - # DYNAMIC_RUBY no or yes: use yes to load the Ruby DLL dynamically (yes) - # MZSCHEME define to path to MzScheme dir to get MZSCHEME support (not defined) - # MZSCHEME_VER define to version of MzScheme being used (209_000) -*************** -*** 217,224 **** ---- 221,235 ---- - endif - endif - -+ ifeq (19, $(word 1,$(sort 19 $(RUBY_VER)))) -+ RUBY_19_OR_LATER = 1 -+ endif -+ - DEFINES += -DFEAT_RUBY - INCLUDES += -I$(RUBY)/lib/ruby/$(RUBY_VER_LONG)/$(RUBY_PLATFORM) -+ ifdef RUBY_19_OR_LATER -+ INCLUDES += -I$(RUBY)/include/ruby-$(RUBY_VER_LONG) -I$(RUBY)/include/ruby-$(RUBY_VER_LONG)/$(RUBY_PLATFORM) -+ endif - EXTRA_OBJS += $(OUTDIR)/if_ruby.o - - ifeq (yes, $(DYNAMIC_RUBY)) -*** ../vim-7.3.734/src/Make_ming.mak 2012-09-05 17:57:34.000000000 +0200 ---- src/Make_ming.mak 2012-11-28 16:14:16.000000000 +0100 -*************** -*** 301,307 **** - endif - endif - -! RUBYINC =-I $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/$(RUBY_PLATFORM) -I $(RUBY)/include/ruby-$(RUBY_VER_LONG) -I $(RUBY)/include/ruby-$(RUBY_VER_LONG)/$(RUBY_PLATFORM) - ifeq (no, $(DYNAMIC_RUBY)) - RUBYLIB = -L$(RUBY)/lib -l$(RUBY_INSTALL_NAME) - endif ---- 301,314 ---- - endif - endif - -! ifeq (19, $(word 1,$(sort 19 $(RUBY_VER)))) -! RUBY_19_OR_LATER = 1 -! endif -! -! RUBYINC = -I $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/$(RUBY_PLATFORM) -! ifdef RUBY_19_OR_LATER -! RUBYINC += -I $(RUBY)/include/ruby-$(RUBY_VER_LONG) -I $(RUBY)/include/ruby-$(RUBY_VER_LONG)/$(RUBY_PLATFORM) -! endif - ifeq (no, $(DYNAMIC_RUBY)) - RUBYLIB = -L$(RUBY)/lib -l$(RUBY_INSTALL_NAME) - endif -*** ../vim-7.3.734/src/version.c 2012-11-28 16:06:13.000000000 +0100 ---- src/version.c 2012-11-28 16:16:28.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 735, - /**/ - --- -From "know your smileys": - :----} You lie like Pinocchio - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.736 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.736 -Problem: File name completion in input() escapes white space. (Frederic - Hardy) -Solution: Do not escape white space. (Christian Brabandt) -Files: src/ex_getln.c - - -*** ../vim-7.3.735/src/ex_getln.c 2012-10-11 04:04:32.000000000 +0200 ---- src/ex_getln.c 2012-11-28 16:42:12.000000000 +0100 -*************** -*** 102,108 **** - static void redrawcmdprompt __ARGS((void)); - static void cursorcmd __ARGS((void)); - static int ccheck_abbr __ARGS((int)); -! static int nextwild __ARGS((expand_T *xp, int type, int options)); - static void escape_fname __ARGS((char_u **pp)); - static int showmatches __ARGS((expand_T *xp, int wildmenu)); - static void set_expand_context __ARGS((expand_T *xp)); ---- 102,108 ---- - static void redrawcmdprompt __ARGS((void)); - static void cursorcmd __ARGS((void)); - static int ccheck_abbr __ARGS((int)); -! static int nextwild __ARGS((expand_T *xp, int type, int options, int escape)); - static void escape_fname __ARGS((char_u **pp)); - static int showmatches __ARGS((expand_T *xp, int wildmenu)); - static void set_expand_context __ARGS((expand_T *xp)); -*************** -*** 810,818 **** - did_wild_list = TRUE; - } - if (wim_flags[wim_index] & WIM_LONGEST) -! res = nextwild(&xpc, WILD_LONGEST, WILD_NO_BEEP); - else if (wim_flags[wim_index] & WIM_FULL) -! res = nextwild(&xpc, WILD_NEXT, WILD_NO_BEEP); - else - res = OK; /* don't insert 'wildchar' now */ - } ---- 810,820 ---- - did_wild_list = TRUE; - } - if (wim_flags[wim_index] & WIM_LONGEST) -! res = nextwild(&xpc, WILD_LONGEST, WILD_NO_BEEP, -! firstc != '@'); - else if (wim_flags[wim_index] & WIM_FULL) -! res = nextwild(&xpc, WILD_NEXT, WILD_NO_BEEP, -! firstc != '@'); - else - res = OK; /* don't insert 'wildchar' now */ - } -*************** -*** 823,831 **** - /* if 'wildmode' first contains "longest", get longest - * common part */ - if (wim_flags[0] & WIM_LONGEST) -! res = nextwild(&xpc, WILD_LONGEST, WILD_NO_BEEP); - else -! res = nextwild(&xpc, WILD_EXPAND_KEEP, WILD_NO_BEEP); - - /* if interrupted while completing, behave like it failed */ - if (got_int) ---- 825,835 ---- - /* if 'wildmode' first contains "longest", get longest - * common part */ - if (wim_flags[0] & WIM_LONGEST) -! res = nextwild(&xpc, WILD_LONGEST, WILD_NO_BEEP, -! firstc != '@'); - else -! res = nextwild(&xpc, WILD_EXPAND_KEEP, WILD_NO_BEEP, -! firstc != '@'); - - /* if interrupted while completing, behave like it failed */ - if (got_int) -*************** -*** 860,866 **** - int p_wmnu_save = p_wmnu; - p_wmnu = 0; - #endif -! nextwild(&xpc, WILD_PREV, 0); /* remove match */ - #ifdef FEAT_WILDMENU - p_wmnu = p_wmnu_save; - #endif ---- 864,871 ---- - int p_wmnu_save = p_wmnu; - p_wmnu = 0; - #endif -! /* remove match */ -! nextwild(&xpc, WILD_PREV, 0, firstc != '@'); - #ifdef FEAT_WILDMENU - p_wmnu = p_wmnu_save; - #endif -*************** -*** 874,882 **** - redrawcmd(); - did_wild_list = TRUE; - if (wim_flags[wim_index] & WIM_LONGEST) -! nextwild(&xpc, WILD_LONGEST, WILD_NO_BEEP); - else if (wim_flags[wim_index] & WIM_FULL) -! nextwild(&xpc, WILD_NEXT, WILD_NO_BEEP); - } - else - vim_beep(); ---- 879,889 ---- - redrawcmd(); - did_wild_list = TRUE; - if (wim_flags[wim_index] & WIM_LONGEST) -! nextwild(&xpc, WILD_LONGEST, WILD_NO_BEEP, -! firstc != '@'); - else if (wim_flags[wim_index] & WIM_FULL) -! nextwild(&xpc, WILD_NEXT, WILD_NO_BEEP, -! firstc != '@'); - } - else - vim_beep(); -*************** -*** 899,907 **** - /* <S-Tab> goes to last match, in a clumsy way */ - if (c == K_S_TAB && KeyTyped) - { -! if (nextwild(&xpc, WILD_EXPAND_KEEP, 0) == OK -! && nextwild(&xpc, WILD_PREV, 0) == OK -! && nextwild(&xpc, WILD_PREV, 0) == OK) - goto cmdline_changed; - } - ---- 906,914 ---- - /* <S-Tab> goes to last match, in a clumsy way */ - if (c == K_S_TAB && KeyTyped) - { -! if (nextwild(&xpc, WILD_EXPAND_KEEP, 0, firstc != '@') == OK -! && nextwild(&xpc, WILD_PREV, 0, firstc != '@') == OK -! && nextwild(&xpc, WILD_PREV, 0, firstc != '@') == OK) - goto cmdline_changed; - } - -*************** -*** 1418,1424 **** - goto cmdline_not_changed; - - case Ctrl_A: /* all matches */ -! if (nextwild(&xpc, WILD_ALL, 0) == FAIL) - break; - goto cmdline_changed; - ---- 1425,1431 ---- - goto cmdline_not_changed; - - case Ctrl_A: /* all matches */ -! if (nextwild(&xpc, WILD_ALL, 0, firstc != '@') == FAIL) - break; - goto cmdline_changed; - -*************** -*** 1454,1460 **** - #endif - - /* completion: longest common part */ -! if (nextwild(&xpc, WILD_LONGEST, 0) == FAIL) - break; - goto cmdline_changed; - ---- 1461,1467 ---- - #endif - - /* completion: longest common part */ -! if (nextwild(&xpc, WILD_LONGEST, 0, firstc != '@') == FAIL) - break; - goto cmdline_changed; - -*************** -*** 1462,1469 **** - case Ctrl_P: /* previous match */ - if (xpc.xp_numfiles > 0) - { -! if (nextwild(&xpc, (c == Ctrl_P) ? WILD_PREV : WILD_NEXT, 0) -! == FAIL) - break; - goto cmdline_changed; - } ---- 1469,1476 ---- - case Ctrl_P: /* previous match */ - if (xpc.xp_numfiles > 0) - { -! if (nextwild(&xpc, (c == Ctrl_P) ? WILD_PREV : WILD_NEXT, -! 0, firstc != '@') == FAIL) - break; - goto cmdline_changed; - } -*************** -*** 3338,3347 **** - * normal character (instead of being expanded). This allows :s/^I^D etc. - */ - static int -! nextwild(xp, type, options) - expand_T *xp; - int type; - int options; /* extra options for ExpandOne() */ - { - int i, j; - char_u *p1; ---- 3345,3355 ---- - * normal character (instead of being expanded). This allows :s/^I^D etc. - */ - static int -! nextwild(xp, type, options, escape) - expand_T *xp; - int type; - int options; /* extra options for ExpandOne() */ -+ int escape; /* if TRUE, escape the returned matches */ - { - int i, j; - char_u *p1; -*************** -*** 3390,3396 **** - else - { - int use_options = options | -! WILD_HOME_REPLACE|WILD_ADD_SLASH|WILD_SILENT|WILD_ESCAPE; - - if (p_wic) - use_options += WILD_ICASE; ---- 3398,3406 ---- - else - { - int use_options = options | -! WILD_HOME_REPLACE|WILD_ADD_SLASH|WILD_SILENT; -! if (escape) -! use_options |= WILD_ESCAPE; - - if (p_wic) - use_options += WILD_ICASE; -*** ../vim-7.3.735/src/version.c 2012-11-28 16:18:26.000000000 +0100 ---- src/version.c 2012-11-28 16:30:45.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 736, - /**/ - --- -From "know your smileys": - ;-0 Can't find shift key - ,-9 Kann Umschalttaste nicht finden - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.737 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.737 -Problem: When using do_cmdline() recursively did_endif is not reset, - causing messages to be overwritten. -Solution: Reset did_endif. (Christian Brabandt) -Files: src/ex_docmd.c - - -*** ../vim-7.3.736/src/ex_docmd.c 2012-10-03 18:24:55.000000000 +0200 ---- src/ex_docmd.c 2012-11-28 17:25:27.000000000 +0100 -*************** -*** 1536,1541 **** ---- 1536,1543 ---- - if_level = 0; - #endif - -+ did_endif = FALSE; /* in case do_cmdline used recursively */ -+ - --call_depth; - return retval; - } -*** ../vim-7.3.736/src/version.c 2012-11-28 16:49:53.000000000 +0100 ---- src/version.c 2012-11-28 17:33:54.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 737, - /**/ - --- -From "know your smileys": - :-) Funny - |-) Funny Oriental - (-: Funny Australian - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.738 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.738 (after 7.3.730) -Problem: Unused function argument. -Solution: Remove it. (Christian Brabandt) -Files: src/quickfix.c - - -*** ../vim-7.3.737/src/quickfix.c 2012-11-28 15:25:28.000000000 +0100 ---- src/quickfix.c 2012-11-28 17:36:26.000000000 +0100 -*************** -*** 107,113 **** - }; - - static int qf_init_ext __ARGS((qf_info_T *qi, char_u *efile, buf_T *buf, typval_T *tv, char_u *errorformat, int newlist, linenr_T lnumfirst, linenr_T lnumlast, char_u *qf_title)); -! static void qf_new_list __ARGS((qf_info_T *qi, char_u *qf_title, win_T *wp)); - static void ll_free_all __ARGS((qf_info_T **pqi)); - static int qf_add_entry __ARGS((qf_info_T *qi, qfline_T **prevp, char_u *dir, char_u *fname, int bufnum, char_u *mesg, long lnum, int col, int vis_col, char_u *pattern, int nr, int type, int valid)); - static qf_info_T *ll_new_list __ARGS((void)); ---- 107,113 ---- - }; - - static int qf_init_ext __ARGS((qf_info_T *qi, char_u *efile, buf_T *buf, typval_T *tv, char_u *errorformat, int newlist, linenr_T lnumfirst, linenr_T lnumlast, char_u *qf_title)); -! static void qf_new_list __ARGS((qf_info_T *qi, char_u *qf_title)); - static void ll_free_all __ARGS((qf_info_T **pqi)); - static int qf_add_entry __ARGS((qf_info_T *qi, qfline_T **prevp, char_u *dir, char_u *fname, int bufnum, char_u *mesg, long lnum, int col, int vis_col, char_u *pattern, int nr, int type, int valid)); - static qf_info_T *ll_new_list __ARGS((void)); -*************** -*** 266,272 **** - - if (newlist || qi->qf_curlist == qi->qf_listcount) - /* make place for a new list */ -! qf_new_list(qi, qf_title, curwin); - else if (qi->qf_lists[qi->qf_curlist].qf_count > 0) - /* Adding to existing list, find last entry. */ - for (qfprev = qi->qf_lists[qi->qf_curlist].qf_start; ---- 266,272 ---- - - if (newlist || qi->qf_curlist == qi->qf_listcount) - /* make place for a new list */ -! qf_new_list(qi, qf_title); - else if (qi->qf_lists[qi->qf_curlist].qf_count > 0) - /* Adding to existing list, find last entry. */ - for (qfprev = qi->qf_lists[qi->qf_curlist].qf_start; -*************** -*** 885,894 **** - * Prepare for adding a new quickfix list. - */ - static void -! qf_new_list(qi, qf_title, wp) - qf_info_T *qi; - char_u *qf_title; -- win_T *wp; - { - int i; - ---- 885,893 ---- - * Prepare for adding a new quickfix list. - */ - static void -! qf_new_list(qi, qf_title) - qf_info_T *qi; - char_u *qf_title; - { - int i; - -*************** -*** 3187,3193 **** - eap->cmdidx != CMD_vimgrepadd && eap->cmdidx != CMD_lvimgrepadd) - || qi->qf_curlist == qi->qf_listcount) - /* make place for a new list */ -! qf_new_list(qi, *eap->cmdlinep, curwin); - else if (qi->qf_lists[qi->qf_curlist].qf_count > 0) - /* Adding to existing list, find last entry. */ - for (prevp = qi->qf_lists[qi->qf_curlist].qf_start; ---- 3186,3192 ---- - eap->cmdidx != CMD_vimgrepadd && eap->cmdidx != CMD_lvimgrepadd) - || qi->qf_curlist == qi->qf_listcount) - /* make place for a new list */ -! qf_new_list(qi, *eap->cmdlinep); - else if (qi->qf_lists[qi->qf_curlist].qf_count > 0) - /* Adding to existing list, find last entry. */ - for (prevp = qi->qf_lists[qi->qf_curlist].qf_start; -*************** -*** 3753,3759 **** - - if (action == ' ' || qi->qf_curlist == qi->qf_listcount) - /* make place for a new list */ -! qf_new_list(qi, title, wp); - else if (action == 'a' && qi->qf_lists[qi->qf_curlist].qf_count > 0) - /* Adding to existing list, find last entry. */ - for (prevp = qi->qf_lists[qi->qf_curlist].qf_start; ---- 3752,3758 ---- - - if (action == ' ' || qi->qf_curlist == qi->qf_listcount) - /* make place for a new list */ -! qf_new_list(qi, title); - else if (action == 'a' && qi->qf_lists[qi->qf_curlist].qf_count > 0) - /* Adding to existing list, find last entry. */ - for (prevp = qi->qf_lists[qi->qf_curlist].qf_start; -*************** -*** 4035,4041 **** - #endif - - /* create a new quickfix list */ -! qf_new_list(qi, *eap->cmdlinep, wp); - - /* Go through all directories in 'runtimepath' */ - p = p_rtp; ---- 4034,4040 ---- - #endif - - /* create a new quickfix list */ -! qf_new_list(qi, *eap->cmdlinep); - - /* Go through all directories in 'runtimepath' */ - p = p_rtp; -*** ../vim-7.3.737/src/version.c 2012-11-28 17:34:43.000000000 +0100 ---- src/version.c 2012-11-28 17:37:20.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 738, - /**/ - --- -From "know your smileys": - :-H Is missing teeth - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.739 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.739 -Problem: Computing number of lines may have an integer overflow. -Solution: Check for MAXCOL explicitly. (Dominique Pelle) -Files: src/move.c - - -*** ../vim-7.3.738/src/move.c 2012-03-28 14:19:46.000000000 +0200 ---- src/move.c 2012-11-28 18:15:42.000000000 +0100 -*************** -*** 2576,2582 **** - else - topline_back(lp); - h2 = lp->height; -! if (h2 + h1 > min_height) - { - *lp = loff0; /* no overlap */ - return; ---- 2576,2582 ---- - else - topline_back(lp); - h2 = lp->height; -! if (h2 == MAXCOL || h2 + h1 > min_height) - { - *lp = loff0; /* no overlap */ - return; -*************** -*** 2588,2594 **** - else - topline_back(lp); - h3 = lp->height; -! if (h3 + h2 > min_height) - { - *lp = loff0; /* no overlap */ - return; ---- 2588,2594 ---- - else - topline_back(lp); - h3 = lp->height; -! if (h3 == MAXCOL || h3 + h2 > min_height) - { - *lp = loff0; /* no overlap */ - return; -*************** -*** 2600,2606 **** - else - topline_back(lp); - h4 = lp->height; -! if (h4 + h3 + h2 > min_height || h3 + h2 + h1 > min_height) - *lp = loff1; /* 1 line overlap */ - else - *lp = loff2; /* 2 lines overlap */ ---- 2600,2606 ---- - else - topline_back(lp); - h4 = lp->height; -! if (h4 == MAXCOL || h4 + h3 + h2 > min_height || h3 + h2 + h1 > min_height) - *lp = loff1; /* 1 line overlap */ - else - *lp = loff2; /* 2 lines overlap */ -*** ../vim-7.3.738/src/version.c 2012-11-28 17:41:55.000000000 +0100 ---- src/version.c 2012-11-28 18:16:40.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 739, - /**/ - --- -From "know your smileys": - !-| I-am-a-Cylon-Centurian-with-one-red-eye-bouncing-back-and-forth - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.740 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.740 -Problem: IOC tool complains about undefined behavior for int. -Solution: Change to unsigned int. (Dominique Pelle) -Files: src/hashtab.c, src/misc2.c - - -*** ../vim-7.3.739/src/hashtab.c 2010-08-15 21:57:25.000000000 +0200 ---- src/hashtab.c 2012-11-28 18:27:46.000000000 +0100 -*************** -*** 138,144 **** - hash_T perturb; - hashitem_T *freeitem; - hashitem_T *hi; -! int idx; - - #ifdef HT_DEBUG - ++hash_count_lookup; ---- 138,144 ---- - hash_T perturb; - hashitem_T *freeitem; - hashitem_T *hi; -! unsigned idx; - - #ifdef HT_DEBUG - ++hash_count_lookup; -*************** -*** 150,156 **** - * - skip over a removed item - * - return if the item matches - */ -! idx = (int)(hash & ht->ht_mask); - hi = &ht->ht_array[idx]; - - if (hi->hi_key == NULL) ---- 150,156 ---- - * - skip over a removed item - * - return if the item matches - */ -! idx = (unsigned)(hash & ht->ht_mask); - hi = &ht->ht_array[idx]; - - if (hi->hi_key == NULL) -*************** -*** 176,182 **** - #ifdef HT_DEBUG - ++hash_count_perturb; /* count a "miss" for hashtab lookup */ - #endif -! idx = (int)((idx << 2) + idx + perturb + 1); - hi = &ht->ht_array[idx & ht->ht_mask]; - if (hi->hi_key == NULL) - return freeitem == NULL ? hi : freeitem; ---- 176,182 ---- - #ifdef HT_DEBUG - ++hash_count_perturb; /* count a "miss" for hashtab lookup */ - #endif -! idx = (unsigned)((idx << 2U) + idx + perturb + 1U); - hi = &ht->ht_array[idx & ht->ht_mask]; - if (hi->hi_key == NULL) - return freeitem == NULL ? hi : freeitem; -*************** -*** 342,348 **** - hashitem_T temparray[HT_INIT_SIZE]; - hashitem_T *oldarray, *newarray; - hashitem_T *olditem, *newitem; -! int newi; - int todo; - long_u oldsize, newsize; - long_u minsize; ---- 342,348 ---- - hashitem_T temparray[HT_INIT_SIZE]; - hashitem_T *oldarray, *newarray; - hashitem_T *olditem, *newitem; -! unsigned newi; - int todo; - long_u oldsize, newsize; - long_u minsize; -*************** -*** 448,460 **** - * the algorithm to find an item in hash_lookup(). But we only - * need to search for a NULL key, thus it's simpler. - */ -! newi = (int)(olditem->hi_hash & newmask); - newitem = &newarray[newi]; - - if (newitem->hi_key != NULL) - for (perturb = olditem->hi_hash; ; perturb >>= PERTURB_SHIFT) - { -! newi = (int)((newi << 2) + newi + perturb + 1); - newitem = &newarray[newi & newmask]; - if (newitem->hi_key == NULL) - break; ---- 448,460 ---- - * the algorithm to find an item in hash_lookup(). But we only - * need to search for a NULL key, thus it's simpler. - */ -! newi = (unsigned)(olditem->hi_hash & newmask); - newitem = &newarray[newi]; - - if (newitem->hi_key != NULL) - for (perturb = olditem->hi_hash; ; perturb >>= PERTURB_SHIFT) - { -! newi = (unsigned)((newi << 2U) + newi + perturb + 1U); - newitem = &newarray[newi & newmask]; - if (newitem->hi_key == NULL) - break; -*** ../vim-7.3.739/src/misc2.c 2012-08-15 16:20:59.000000000 +0200 ---- src/misc2.c 2012-11-28 18:27:46.000000000 +0100 -*************** -*** 3860,3866 **** - ush temp; \ - \ - temp = (ush)keys[2] | 2; \ -! t = (int)(((unsigned)(temp * (temp ^ 1)) >> 8) & 0xff); \ - } - - /* ---- 3860,3866 ---- - ush temp; \ - \ - temp = (ush)keys[2] | 2; \ -! t = (int)(((unsigned)(temp * (temp ^ 1U)) >> 8) & 0xff); \ - } - - /* -*************** -*** 4002,4008 **** - ush temp; - - temp = (ush)keys[2] | 2; -! temp = (int)(((unsigned)(temp * (temp ^ 1)) >> 8) & 0xff); - UPDATE_KEYS_ZIP(*p ^= temp); - } - else ---- 4002,4008 ---- - ush temp; - - temp = (ush)keys[2] | 2; -! temp = (int)(((unsigned)(temp * (temp ^ 1U)) >> 8) & 0xff); - UPDATE_KEYS_ZIP(*p ^= temp); - } - else -*** ../vim-7.3.739/src/version.c 2012-11-28 18:22:04.000000000 +0100 ---- src/version.c 2012-11-28 18:28:00.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 740, - /**/ - --- -From "know your smileys": - ~#:-( I just washed my hair, and I can't do nuthin' with it. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.741 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.741 (after 7.3.737) -Problem: Tiny build fails. -Solution: Move #ifdef. (Ike Devolder) -Files: src/ex_docmd.c - - -*** ../vim-7.3.740/src/ex_docmd.c 2012-11-28 17:34:43.000000000 +0100 ---- src/ex_docmd.c 2012-11-28 19:09:39.000000000 +0100 -*************** -*** 1534,1542 **** - * ":endif" (could be ":if x | foo | endif"). - */ - if_level = 0; -- #endif - - did_endif = FALSE; /* in case do_cmdline used recursively */ - - --call_depth; - return retval; ---- 1534,1542 ---- - * ":endif" (could be ":if x | foo | endif"). - */ - if_level = 0; - - did_endif = FALSE; /* in case do_cmdline used recursively */ -+ #endif - - --call_depth; - return retval; -*** ../vim-7.3.740/src/version.c 2012-11-28 18:31:49.000000000 +0100 ---- src/version.c 2012-11-28 19:09:15.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 741, - /**/ - --- -From "know your smileys": - :-O>-o Smiley American tourist (note big mouth and camera) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.742 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.742 -Problem: Leaking memory when :vimgrep restores the directory. -Solution: Free the allocated memory. (Christian Brabandt) -Files: src/quickfix.c - - -*** ../vim-7.3.741/src/quickfix.c 2012-11-28 17:41:55.000000000 +0100 ---- src/quickfix.c 2012-11-28 22:09:40.000000000 +0100 -*************** -*** 3515,3520 **** ---- 3515,3521 ---- - ea.cmdidx = (curwin->w_localdir == NULL) ? CMD_cd : CMD_lcd; - ex_cd(&ea); - } -+ vim_free(dirname_now); - } - } - -*** ../vim-7.3.741/src/version.c 2012-11-28 19:10:51.000000000 +0100 ---- src/version.c 2012-11-28 22:11:50.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 742, - /**/ - --- -How many light bulbs does it take to change a person? - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.743 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.743 (after 7.3.741) -Problem: Tiny build still fails. -Solution: Add #else in the right place. -Files: src/ex_docmd.c - - -*** ../vim-7.3.742/src/ex_docmd.c 2012-11-28 19:10:51.000000000 +0100 ---- src/ex_docmd.c 2012-11-28 22:14:21.000000000 +0100 -*************** -*** 1528,1541 **** - } - } - -! #ifndef FEAT_EVAL - /* - * Reset if_level, in case a sourced script file contains more ":if" than - * ":endif" (could be ":if x | foo | endif"). - */ - if_level = 0; -- -- did_endif = FALSE; /* in case do_cmdline used recursively */ - #endif - - --call_depth; ---- 1528,1541 ---- - } - } - -! #ifdef FEAT_EVAL -! did_endif = FALSE; /* in case do_cmdline used recursively */ -! #else - /* - * Reset if_level, in case a sourced script file contains more ":if" than - * ":endif" (could be ":if x | foo | endif"). - */ - if_level = 0; - #endif - - --call_depth; -*** ../vim-7.3.742/src/version.c 2012-11-28 22:12:40.000000000 +0100 ---- src/version.c 2012-11-28 22:15:15.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 743, - /**/ - --- -From "know your smileys": - :-)-O Smiling doctor with stethoscope - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.744 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.744 -Problem: 64 bit compiler warning. -Solution: Add type cast. (Mike Williams) -Files: src/ex_cmds.c - - -*** ../vim-7.3.743/src/ex_cmds.c 2012-11-28 16:06:13.000000000 +0100 ---- src/ex_cmds.c 2012-11-29 20:08:10.000000000 +0100 -*************** -*** 6460,6466 **** - /* - * Find all *.txt files. - */ -! dirlen = STRLEN(dir); - STRCPY(NameBuff, dir); - STRCAT(NameBuff, "/**/*"); - STRCAT(NameBuff, ext); ---- 6460,6466 ---- - /* - * Find all *.txt files. - */ -! dirlen = (int)STRLEN(dir); - STRCPY(NameBuff, dir); - STRCAT(NameBuff, "/**/*"); - STRCAT(NameBuff, ext); -*** ../vim-7.3.743/src/version.c 2012-11-28 23:03:02.000000000 +0100 ---- src/version.c 2012-11-29 20:08:37.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 744, - /**/ - --- -From "know your smileys": - *<|:-) Santa Claus (Ho Ho Ho) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.745 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.745 -Problem: Automatically setting 'ttymouse' doesn't work. -Solution: Reset the "option was set" flag when using the default. -Files: src/option.c, src/proto/option.pro, src/term.c - - -*** ../vim-7.3.744/src/option.c 2012-10-21 03:45:57.000000000 +0200 ---- src/option.c 2012-12-03 20:07:32.000000000 +0100 -*************** -*** 11179,11184 **** ---- 11179,11197 ---- - } - - /* -+ * Reset the flag indicating option "name" was set. -+ */ -+ void -+ reset_option_was_set(name) -+ char_u *name; -+ { -+ int idx = findoption(name); -+ -+ if (idx >= 0) -+ options[idx].flags &= ~P_WAS_SET; -+ } -+ -+ /* - * compatible_set() - Called when 'compatible' has been set or unset. - * - * When 'compatible' set: Set all relevant options (those that have the P_VIM) -*** ../vim-7.3.744/src/proto/option.pro 2012-10-21 00:10:29.000000000 +0200 ---- src/proto/option.pro 2012-12-03 20:08:36.000000000 +0100 -*************** -*** 52,57 **** ---- 52,58 ---- - void vimrc_found __ARGS((char_u *fname, char_u *envname)); - void change_compatible __ARGS((int on)); - int option_was_set __ARGS((char_u *name)); -+ void reset_option_was_set __ARGS((char_u *name)); - int can_bs __ARGS((int what)); - void save_file_ff __ARGS((buf_T *buf)); - int file_ff_differs __ARGS((buf_T *buf, int ignore_empty)); -*** ../vim-7.3.744/src/term.c 2012-10-21 02:10:20.000000000 +0200 ---- src/term.c 2012-12-03 20:09:28.000000000 +0100 -*************** -*** 1864,1870 **** ---- 1864,1875 ---- - } - # endif - if (p != NULL) -+ { - set_option_value((char_u *)"ttym", 0L, p, 0); -+ /* Reset the WAS_SET flag, 'ttymouse' can be set to "sgr" or -+ * "xterm2" in check_termcode(). */ -+ reset_option_was_set((char_u *)"ttym"); -+ } - if (p == NULL - # ifdef FEAT_GUI - || gui.in_use -*** ../vim-7.3.744/src/version.c 2012-11-29 20:09:55.000000000 +0100 ---- src/version.c 2012-12-05 14:39:33.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 745, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -97. Your mother tells you to remember something, and you look for - a File/Save command. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.746 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.746 -Problem: Memory leaks when using location lists. -Solution: Set qf_title to something. (Christian Brabandt) -Files: src/eval.c, src/quickfix.c - - -*** ../vim-7.3.745/src/eval.c 2012-10-21 23:55:59.000000000 +0200 ---- src/eval.c 2012-12-05 14:47:56.000000000 +0100 -*************** -*** 16292,16298 **** - action = *act; - } - -! if (l != NULL && set_errorlist(wp, l, action, NULL) == OK) - rettv->vval.v_number = 0; - } - #endif ---- 16292,16299 ---- - action = *act; - } - -! if (l != NULL && set_errorlist(wp, l, action, -! (char_u *)(wp == NULL ? "setqflist()" : "setloclist()")) == OK) - rettv->vval.v_number = 0; - } - #endif -*** ../vim-7.3.745/src/quickfix.c 2012-11-28 22:12:40.000000000 +0100 ---- src/quickfix.c 2012-12-05 14:51:52.000000000 +0100 -*************** -*** 2124,2138 **** - int idx; - { - qfline_T *qfp; - - while (qi->qf_lists[idx].qf_count) - { - qfp = qi->qf_lists[idx].qf_start->qf_next; -! if (qi->qf_lists[idx].qf_title != NULL) - { - vim_free(qi->qf_lists[idx].qf_start->qf_text); - vim_free(qi->qf_lists[idx].qf_start->qf_pattern); - vim_free(qi->qf_lists[idx].qf_start); - } - qi->qf_lists[idx].qf_start = qfp; - --qi->qf_lists[idx].qf_count; ---- 2124,2145 ---- - int idx; - { - qfline_T *qfp; -+ int stop = FALSE; - - while (qi->qf_lists[idx].qf_count) - { - qfp = qi->qf_lists[idx].qf_start->qf_next; -! if (qi->qf_lists[idx].qf_title != NULL && !stop) - { - vim_free(qi->qf_lists[idx].qf_start->qf_text); -+ stop = (qi->qf_lists[idx].qf_start == qfp); - vim_free(qi->qf_lists[idx].qf_start->qf_pattern); - vim_free(qi->qf_lists[idx].qf_start); -+ if (stop) -+ /* Somehow qf_count may have an incorrect value, set it to 1 -+ * to avoid crashing when it's wrong. -+ * TODO: Avoid qf_count being incorrect. */ -+ qi->qf_lists[idx].qf_count = 1; - } - qi->qf_lists[idx].qf_start = qfp; - --qi->qf_lists[idx].qf_count; -*** ../vim-7.3.745/src/version.c 2012-12-05 14:42:56.000000000 +0100 ---- src/version.c 2012-12-05 15:15:45.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 746, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -98. The Alta Vista administrators ask you what sites are missing - in their index files. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.747 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.747 -Problem: When characters are concealed text aligned with tabs are no longer - aligned, e.g. at ":help :index". -Solution: Compensate space for tabs for concealed characters. (Dominique - Pelle) -Files: src/screen.c - - -*** ../vim-7.3.746/src/screen.c 2012-10-03 18:24:55.000000000 +0200 ---- src/screen.c 2012-12-05 15:22:03.000000000 +0100 -*************** -*** 4269,4275 **** - { - /* tab amount depends on current column */ - n_extra = (int)wp->w_buffer->b_p_ts -! - VCOL_HLC % (int)wp->w_buffer->b_p_ts - 1; - #ifdef FEAT_MBYTE - mb_utf8 = FALSE; /* don't draw as UTF-8 */ - #endif ---- 4269,4288 ---- - { - /* tab amount depends on current column */ - n_extra = (int)wp->w_buffer->b_p_ts -! - vcol % (int)wp->w_buffer->b_p_ts - 1; -! #ifdef FEAT_CONCEAL -! /* Tab alignment should be identical regardless of -! * 'conceallevel' value. So tab compensates of all -! * previous concealed characters, and thus resets vcol_off -! * and boguscols accumulated so far in the line. Note that -! * the tab can be longer than 'tabstop' when there -! * are concealed characters. */ -! n_extra += vcol_off; -! vcol -= vcol_off; -! vcol_off = 0; -! col -= boguscols; -! boguscols = 0; -! #endif - #ifdef FEAT_MBYTE - mb_utf8 = FALSE; /* don't draw as UTF-8 */ - #endif -*** ../vim-7.3.746/src/version.c 2012-12-05 15:16:42.000000000 +0100 ---- src/version.c 2012-12-05 15:22:27.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 747, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -99. The hum of a cooling fan and the click of keys is comforting to you. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.748 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.748 -Problem: Cannot properly test conceal mode. -Solution: Add the screencol() and screenrow() functions. Use them in - test88. (Simon Ruderich) -Files: runtime/doc/eval.txt, src/eval.c, src/proto/screen.pro, - src/screen.c, src/testdir/Make_amiga.mak, - src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, - src/testdir/Make_os2.mak, src/testdir/Make_vms.mms - src/testdir/Makefile, src/testdir/test88.in, - src/testdir/test88.ok - - -*** ../vim-7.3.747/runtime/doc/eval.txt 2012-11-14 18:10:49.000000000 +0100 ---- runtime/doc/eval.txt 2012-12-05 15:45:34.000000000 +0100 -*************** -*** 1892,1897 **** ---- 1903,1910 ---- - resolve( {filename}) String get filename a shortcut points to - reverse( {list}) List reverse {list} in-place - round( {expr}) Float round off {expr} -+ screencol() Number current cursor column -+ screenrow() Number current cursor row - search( {pattern} [, {flags} [, {stopline} [, {timeout}]]]) - Number search for {pattern} - searchdecl( {name} [, {global} [, {thisblock}]]) -*************** -*** 4848,4862 **** - echo round(-4.5) - < -5.0 - {only available when compiled with the |+float| feature} -! -! - search({pattern} [, {flags} [, {stopline} [, {timeout}]]]) *search()* - Search for regexp pattern {pattern}. The search starts at the - cursor position (you can use |cursor()| to set it). - - If there is no match a 0 is returned and the cursor doesn't - move. No error message is given. -- When a match has been found its line number is returned. - - {flags} is a String, which can contain these character flags: - 'b' search backward instead of forward ---- 4874,4907 ---- - echo round(-4.5) - < -5.0 - {only available when compiled with the |+float| feature} -! -! screencol() *screencol()* -! The result is a Number, which is the current screen column of -! the cursor. The leftmost column has number 1. -! This function is mainly used for testing. -! -! Note: Always returns the current screen column, thus if used -! in a command (e.g. ":echo screencol()") it will return the -! column inside the command line, which is 1 when the command is -! executed. To get the cursor position in the file use one of -! the following mappings: > -! nnoremap <expr> GG ":echom ".screencol()."\n" -! nnoremap <silent> GG :echom screencol()<CR> -! < -! screenrow() *screenrow()* -! The result is a Number, which is the current screen row of the -! cursor. The top line has number one. -! This function is mainly used for testing. -! -! Note: Same restrictions as with |screencol()|. -! - search({pattern} [, {flags} [, {stopline} [, {timeout}]]]) *search()* - Search for regexp pattern {pattern}. The search starts at the - cursor position (you can use |cursor()| to set it). - -+ When a match has been found its line number is returned. - If there is no match a 0 is returned and the cursor doesn't - move. No error message is given. - - {flags} is a String, which can contain these character flags: - 'b' search backward instead of forward -*** ../vim-7.3.747/src/eval.c 2012-12-05 15:16:42.000000000 +0100 ---- src/eval.c 2012-12-05 16:03:23.000000000 +0100 -*************** -*** 668,673 **** ---- 668,675 ---- - #ifdef FEAT_FLOAT - static void f_round __ARGS((typval_T *argvars, typval_T *rettv)); - #endif -+ static void f_screencol __ARGS((typval_T *argvars, typval_T *rettv)); -+ static void f_screenrow __ARGS((typval_T *argvars, typval_T *rettv)); - static void f_search __ARGS((typval_T *argvars, typval_T *rettv)); - static void f_searchdecl __ARGS((typval_T *argvars, typval_T *rettv)); - static void f_searchpair __ARGS((typval_T *argvars, typval_T *rettv)); -*************** -*** 8033,8038 **** ---- 8035,8042 ---- - #ifdef FEAT_FLOAT - {"round", 1, 1, f_round}, - #endif -+ {"screencol", 0, 0, f_screencol}, -+ {"screenrow", 0, 0, f_screenrow}, - {"search", 1, 4, f_search}, - {"searchdecl", 1, 3, f_searchdecl}, - {"searchpair", 3, 7, f_searchpair}, -*************** -*** 15725,15730 **** ---- 15729,15758 ---- - #endif - - /* -+ * "screencol()" function -+ * -+ * First column is 1 to be consistent with virtcol(). -+ */ -+ static void -+ f_screencol(argvars, rettv) -+ typval_T *argvars UNUSED; -+ typval_T *rettv; -+ { -+ rettv->vval.v_number = screen_screencol() + 1; -+ } -+ -+ /* -+ * "screenrow()" function -+ */ -+ static void -+ f_screenrow(argvars, rettv) -+ typval_T *argvars UNUSED; -+ typval_T *rettv; -+ { -+ rettv->vval.v_number = screen_screenrow() + 1; -+ } -+ -+ /* - * "search()" function - */ - static void -*** ../vim-7.3.747/src/proto/screen.pro 2012-11-20 16:56:49.000000000 +0100 ---- src/proto/screen.pro 2012-12-05 15:57:35.000000000 +0100 -*************** -*** 50,53 **** ---- 50,55 ---- - int messaging __ARGS((void)); - void showruler __ARGS((int always)); - int number_width __ARGS((win_T *wp)); -+ int screen_screencol __ARGS((void)); -+ int screen_screenrow __ARGS((void)); - /* vim: set ft=c : */ -*** ../vim-7.3.747/src/screen.c 2012-12-05 15:32:24.000000000 +0100 ---- src/screen.c 2012-12-05 15:58:02.000000000 +0100 -*************** -*** 10264,10266 **** ---- 10264,10286 ---- - return n; - } - #endif -+ -+ /* -+ * Return the current cursor column. This is the actual position on the -+ * screen. First column is 0. -+ */ -+ int -+ screen_screencol() -+ { -+ return screen_cur_col; -+ } -+ -+ /* -+ * Return the current cursor row. This is the actual position on the screen. -+ * First row is 0. -+ */ -+ int -+ screen_screenrow() -+ { -+ return screen_cur_row; -+ } -*** ../vim-7.3.747/src/testdir/Make_amiga.mak 2012-06-29 12:54:32.000000000 +0200 ---- src/testdir/Make_amiga.mak 2012-12-05 16:00:14.000000000 +0100 -*************** -*** 31,37 **** - test66.out test67.out test68.out test69.out test70.out \ - test71.out test72.out test73.out test74.out test75.out \ - test76.out test77.out test78.out test79.out test80.out \ -! test81.out test82.out test83.out test84.out - - .SUFFIXES: .in .out - ---- 31,37 ---- - test66.out test67.out test68.out test69.out test70.out \ - test71.out test72.out test73.out test74.out test75.out \ - test76.out test77.out test78.out test79.out test80.out \ -! test81.out test82.out test83.out test84.out test88.out - - .SUFFIXES: .in .out - -*************** -*** 135,137 **** ---- 135,138 ---- - test82.out: test82.in - test83.out: test83.in - test84.out: test84.in -+ test88.out: test88.in -*** ../vim-7.3.747/src/testdir/Make_dos.mak 2012-10-06 19:10:29.000000000 +0200 ---- src/testdir/Make_dos.mak 2012-12-05 16:00:29.000000000 +0100 -*************** -*** 30,36 **** - test68.out test69.out test71.out test72.out test73.out \ - test74.out test75.out test76.out test77.out test78.out \ - test79.out test80.out test81.out test82.out test83.out \ -! test84.out test85.out test86.out test87.out - - SCRIPTS32 = test50.out test70.out - ---- 30,36 ---- - test68.out test69.out test71.out test72.out test73.out \ - test74.out test75.out test76.out test77.out test78.out \ - test79.out test80.out test81.out test82.out test83.out \ -! test84.out test85.out test86.out test87.out test88.out - - SCRIPTS32 = test50.out test70.out - -*** ../vim-7.3.747/src/testdir/Make_ming.mak 2012-10-06 19:10:29.000000000 +0200 ---- src/testdir/Make_ming.mak 2012-12-05 16:00:40.000000000 +0100 -*************** -*** 50,56 **** - test68.out test69.out test71.out test72.out test73.out \ - test74.out test75.out test76.out test77.out test78.out \ - test79.out test80.out test81.out test82.out test83.out \ -! test84.out test85.out test86.out test87.out - - SCRIPTS32 = test50.out test70.out - ---- 50,56 ---- - test68.out test69.out test71.out test72.out test73.out \ - test74.out test75.out test76.out test77.out test78.out \ - test79.out test80.out test81.out test82.out test83.out \ -! test84.out test85.out test86.out test87.out test88.out - - SCRIPTS32 = test50.out test70.out - -*** ../vim-7.3.747/src/testdir/Make_os2.mak 2012-06-29 12:54:32.000000000 +0200 ---- src/testdir/Make_os2.mak 2012-12-05 16:00:50.000000000 +0100 -*************** -*** 31,37 **** - test66.out test67.out test68.out test69.out test70.out \ - test71.out test72.out test73.out test74.out test75.out \ - test76.out test77.out test78.out test79.out test80.out \ -! test81.out test82.out test83.out test84.out - - .SUFFIXES: .in .out - ---- 31,37 ---- - test66.out test67.out test68.out test69.out test70.out \ - test71.out test72.out test73.out test74.out test75.out \ - test76.out test77.out test78.out test79.out test80.out \ -! test81.out test82.out test83.out test84.out test88.out - - .SUFFIXES: .in .out - -*** ../vim-7.3.747/src/testdir/Make_vms.mms 2012-10-06 19:10:29.000000000 +0200 ---- src/testdir/Make_vms.mms 2012-12-05 16:01:03.000000000 +0100 -*************** -*** 4,10 **** - # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> - # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> - # -! # Last change: 2012 Oct 06 - # - # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. - # Edit the lines in the Configuration section below to select. ---- 4,10 ---- - # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> - # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> - # -! # Last change: 2012 Dec 05 - # - # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. - # Edit the lines in the Configuration section below to select. -*************** -*** 76,82 **** - test66.out test67.out test68.out test69.out \ - test71.out test72.out test74.out test75.out test76.out \ - test77.out test78.out test79.out test80.out test81.out \ -! test82.out test83.out test84.out - - # Known problems: - # Test 30: a problem around mac format - unknown reason ---- 76,82 ---- - test66.out test67.out test68.out test69.out \ - test71.out test72.out test74.out test75.out test76.out \ - test77.out test78.out test79.out test80.out test81.out \ -! test82.out test83.out test84.out test88.out - - # Known problems: - # Test 30: a problem around mac format - unknown reason -*** ../vim-7.3.747/src/testdir/Makefile 2012-10-06 19:10:29.000000000 +0200 ---- src/testdir/Makefile 2012-12-05 15:59:02.000000000 +0100 -*************** -*** 13,19 **** - - SCRIPTS = test1.out test2.out test3.out test4.out test5.out test6.out \ - test7.out test8.out test9.out test10.out test11.out \ -! test12.out test13.out test14.out test15.out test17.out \ - test18.out test19.out test20.out test21.out test22.out \ - test23.out test24.out test25.out test26.out test27.out \ - test28.out test29.out test30.out test31.out test32.out \ ---- 13,19 ---- - - SCRIPTS = test1.out test2.out test3.out test4.out test5.out test6.out \ - test7.out test8.out test9.out test10.out test11.out \ -! test12.out test13.out test14.out test15.out test17.out \ - test18.out test19.out test20.out test21.out test22.out \ - test23.out test24.out test25.out test26.out test27.out \ - test28.out test29.out test30.out test31.out test32.out \ -*************** -*** 27,33 **** - test69.out test70.out test71.out test72.out test73.out \ - test74.out test75.out test76.out test77.out test78.out \ - test79.out test80.out test81.out test82.out test83.out \ -! test84.out test85.out test86.out test87.out - - SCRIPTS_GUI = test16.out - ---- 27,33 ---- - test69.out test70.out test71.out test72.out test73.out \ - test74.out test75.out test76.out test77.out test78.out \ - test79.out test80.out test81.out test82.out test83.out \ -! test84.out test85.out test86.out test87.out test88.out - - SCRIPTS_GUI = test16.out - -*** ../vim-7.3.747/src/testdir/test88.in 2012-12-05 16:08:56.000000000 +0100 ---- src/testdir/test88.in 2012-12-05 15:40:05.000000000 +0100 -*************** -*** 0 **** ---- 1,85 ---- -+ vim: set ft=vim -+ -+ Tests for correct display (cursor column position) with +conceal and -+ tabulators. -+ -+ STARTTEST -+ :so small.vim -+ :if !has('conceal') -+ e! test.ok -+ wq! test.out -+ :endif -+ :" Conceal settings. -+ :set conceallevel=2 -+ :set concealcursor=nc -+ :syntax match test /|/ conceal -+ :" Save current cursor position. Only works in <expr> mode, can't be used -+ :" with :normal because it moves the cursor to the command line. Thanks to ZyX -+ :" <zyx.vim@gmail.com> for the idea to use an <expr> mapping. -+ :let positions = [] -+ :nnoremap <expr> GG ":let positions += ['".screenrow().":".screencol()."']\n" -+ :" Start test. -+ /^start: -+ :normal ztj -+ GGk -+ :" We should end up in the same column when running these commands on the two -+ :" lines. -+ :normal ft -+ GGk -+ :normal $ -+ GGk -+ :normal 0j -+ GGk -+ :normal ft -+ GGk -+ :normal $ -+ GGk -+ :normal 0j0j -+ GGk -+ :" Same for next test block. -+ :normal ft -+ GGk -+ :normal $ -+ GGk -+ :normal 0j -+ GGk -+ :normal ft -+ GGk -+ :normal $ -+ GGk -+ :normal 0j0j -+ GGk -+ :" And check W with multiple tabs and conceals in a line. -+ :normal W -+ GGk -+ :normal W -+ GGk -+ :normal W -+ GGk -+ :normal $ -+ GGk -+ :normal 0j -+ GGk -+ :normal W -+ GGk -+ :normal W -+ GGk -+ :normal W -+ GGk -+ :normal $ -+ GGk -+ :" Display result. -+ :call append('$', 'end:') -+ :call append('$', positions) -+ :/^end/,$wq! test.out -+ ENDTEST -+ -+ start: -+ .concealed. text -+ |concealed| text -+ -+ .concealed. text -+ |concealed| text -+ -+ .a. .b. .c. .d. -+ |a| |b| |c| |d| -*** ../vim-7.3.747/src/testdir/test88.ok 2012-12-05 16:08:56.000000000 +0100 ---- src/testdir/test88.ok 2012-12-05 15:40:05.000000000 +0100 -*************** -*** 0 **** ---- 1,23 ---- -+ end: -+ 2:1 -+ 2:17 -+ 2:20 -+ 3:1 -+ 3:17 -+ 3:20 -+ 5:8 -+ 5:25 -+ 5:28 -+ 6:8 -+ 6:25 -+ 6:28 -+ 8:1 -+ 8:9 -+ 8:17 -+ 8:25 -+ 8:27 -+ 9:1 -+ 9:9 -+ 9:17 -+ 9:25 -+ 9:26 -*** ../vim-7.3.747/src/version.c 2012-12-05 15:32:24.000000000 +0100 ---- src/version.c 2012-12-05 16:07:46.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 748, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -101. U can read htis w/o ny porblm and cant figur eout Y its evn listd. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.749 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.749 -Problem: Python interface doesn't build without the multi-byte feature. -Solution: Add #ifdef. (Ken Takata) -Files: src/if_py_both.h - - -*** ../vim-7.3.748/src/if_py_both.h 2012-10-05 21:30:04.000000000 +0200 ---- src/if_py_both.h 2012-12-05 16:27:20.000000000 +0100 -*************** -*** 520,526 **** - if (!PyArg_ParseTuple(args, "s", &expr)) - return NULL; - -! return PyLong_FromLong(mb_string2cells((char_u *)expr, (int)STRLEN(expr))); - } - - /* ---- 520,532 ---- - if (!PyArg_ParseTuple(args, "s", &expr)) - return NULL; - -! return PyLong_FromLong( -! #ifdef FEAT_MBYTE -! mb_string2cells((char_u *)expr, (int)STRLEN(expr)) -! #else -! STRLEN(expr) -! #endif -! ); - } - - /* -*** ../vim-7.3.748/src/version.c 2012-12-05 16:10:21.000000000 +0100 ---- src/version.c 2012-12-05 16:29:27.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 749, - /**/ - --- -Contrary to popular belief, Unix is user friendly. -It just happens to be selective about who it makes friends with. - -- Dave Parnas - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.750 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.750 -Problem: The justify macro does not always work correctly. -Solution: Fix off-by-one error (James McCoy) -Files: runtime/macros/justify.vim - - -*** ../vim-7.3.749/runtime/macros/justify.vim 2010-08-15 21:57:19.000000000 +0200 ---- runtime/macros/justify.vim 2012-12-05 16:58:40.000000000 +0100 -*************** -*** 1,4 **** -! " Function to left and rigt align text. - " - " Written by: Preben "Peppe" Guldberg <c928400@student.dtu.dk> - " Created: 980806 14:13 (or around that time anyway) ---- 1,4 ---- -! " Function to left and right align text. - " - " Written by: Preben "Peppe" Guldberg <c928400@student.dtu.dk> - " Created: 980806 14:13 (or around that time anyway) -*************** -*** 256,273 **** - let str = substitute(str, '\s\+$', '', '') - let str = substitute(str, '^\s\+', '', '') - let str = substitute(str, '\s\+', ' ', 'g') -! " Use substitute() hack to get strlen in characters instead of bytes -! let str_n = strlen(substitute(str, '.', 'x', 'g')) - - " Possible addition of space after punctuation - if exists("join_str") - let str = substitute(str, join_str, '\1 ', 'g') - endif -! let join_n = strlen(substitute(str, '.', 'x', 'g')) - str_n - - " Can extraspaces be added? - " Note that str_n may be less than strlen(str) [joinspaces above] -! if strlen(substitute(str, '.', 'x', 'g')) < tw - indent_n && str_n > 0 - " How many spaces should be added - let s_add = tw - str_n - indent_n - join_n - let s_nr = strlen(substitute(str, '\S', '', 'g') ) - join_n ---- 256,272 ---- - let str = substitute(str, '\s\+$', '', '') - let str = substitute(str, '^\s\+', '', '') - let str = substitute(str, '\s\+', ' ', 'g') -! let str_n = strdisplaywidth(str) - - " Possible addition of space after punctuation - if exists("join_str") - let str = substitute(str, join_str, '\1 ', 'g') - endif -! let join_n = strdisplaywidth(str) - str_n - - " Can extraspaces be added? - " Note that str_n may be less than strlen(str) [joinspaces above] -! if strdisplaywidth(str) <= tw - indent_n && str_n > 0 - " How many spaces should be added - let s_add = tw - str_n - indent_n - join_n - let s_nr = strlen(substitute(str, '\S', '', 'g') ) - join_n -*** ../vim-7.3.749/src/version.c 2012-12-05 16:30:03.000000000 +0100 ---- src/version.c 2012-12-05 17:01:02.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 750, - /**/ - --- -To be rich is not the end, but only a change of worries. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.751 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.751 -Problem: Test 61 is flaky, it fails once in a while. -Solution: When it fails retry once. -Files: src/testdir/Makefile - - -*** ../vim-7.3.750/src/testdir/Makefile 2012-12-05 16:10:21.000000000 +0100 ---- src/testdir/Makefile 2012-12-05 18:17:03.000000000 +0100 -*************** -*** 47,58 **** - - $(SCRIPTS) $(SCRIPTS_GUI): $(VIMPROG) - - clean: -! -rm -rf *.out *.failed *.rej *.orig test.log tiny.vim small.vim mbyte.vim mzscheme.vim lua.vim test.ok X* valgrind.* viminfo - - test1.out: test1.in -! -rm -f $*.failed tiny.vim small.vim mbyte.vim mzscheme.vim lua.vim test.ok X* viminfo -! $(VALGRIND) $(VIMPROG) -u unix.vim -U NONE --noplugin -s dotest.in $*.in - @/bin/sh -c "if diff test.out $*.ok; \ - then mv -f test.out $*.out; \ - else echo; \ ---- 47,62 ---- - - $(SCRIPTS) $(SCRIPTS_GUI): $(VIMPROG) - -+ RM_ON_RUN = test.out X* viminfo -+ RM_ON_START = tiny.vim small.vim mbyte.vim mzscheme.vim lua.vim test.ok -+ RUN_VIM = $(VALGRIND) $(VIMPROG) -u unix.vim -U NONE --noplugin -s dotest.in -+ - clean: -! -rm -rf *.out *.failed *.rej *.orig test.log $(RM_ON_RUN) $(RM_ON_START) valgrind.* - - test1.out: test1.in -! -rm -rf $*.failed $(RM_ON_RUN) $(RM_ON_START) -! $(RUN_VIM) $*.in - @/bin/sh -c "if diff test.out $*.ok; \ - then mv -f test.out $*.out; \ - else echo; \ -*************** -*** 61,71 **** - -rm -rf X* viminfo - - .in.out: -! -rm -rf $*.failed test.ok test.out X* viminfo - cp $*.ok test.ok - # Sleep a moment to avoid that the xterm title is messed up - @-sleep .2 -! -$(VALGRIND) $(VIMPROG) -u unix.vim -U NONE --noplugin -s dotest.in $*.in - @/bin/sh -c "if test -f test.out; then\ - if diff test.out $*.ok; \ - then mv -f test.out $*.out; \ ---- 65,86 ---- - -rm -rf X* viminfo - - .in.out: -! -rm -rf $*.failed test.ok $(RM_ON_RUN) - cp $*.ok test.ok - # Sleep a moment to avoid that the xterm title is messed up - @-sleep .2 -! -$(RUN_VIM) $*.in -! -! # For flaky tests retry one time. -! @/bin/sh -c "if test -f test.out -a $* = test61; then \ -! if diff test.out $*.ok; \ -! then echo flaky test ok first time; \ -! else rm -rf $*.failed $(RM_ON_RUN); \ -! $(RUN_VIM) $*.in; \ -! fi \ -! fi" -! -! # Check if the test.out file matches test.ok. - @/bin/sh -c "if test -f test.out; then\ - if diff test.out $*.ok; \ - then mv -f test.out $*.out; \ -*** ../vim-7.3.750/src/version.c 2012-12-05 17:03:17.000000000 +0100 ---- src/version.c 2012-12-05 18:10:49.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 751, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -103. When you find yourself in the "Computer" section of Barnes & Noble - enjoying yourself. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.752 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.752 -Problem: Test 49 script file doesn't fold properly. -Solution: Add a colon. -Files: src/testdir/test49.vim - - -*** ../vim-7.3.751/src/testdir/test49.vim 2012-11-14 22:38:04.000000000 +0100 ---- src/testdir/test49.vim 2012-11-23 22:08:37.000000000 +0100 -*************** -*** 1,6 **** - " Vim script language tests - " Author: Servatius Brandt <Servatius.Brandt@fujitsu-siemens.com> -! " Last Change: 2010 Sep 29 - - "------------------------------------------------------------------------------- - " Test environment {{{1 ---- 1,6 ---- - " Vim script language tests - " Author: Servatius Brandt <Servatius.Brandt@fujitsu-siemens.com> -! " Last Change: 2012 Nov 23 - - "------------------------------------------------------------------------------- - " Test environment {{{1 -*************** -*** 9604,9610 **** - Xcheck 198689 - - "------------------------------------------------------------------------------- -! " Test 86 setloclist crash {{{1 - " - " Executing a setloclist() on BufUnload shouldn't crash Vim - "------------------------------------------------------------------------------- ---- 9604,9610 ---- - Xcheck 198689 - - "------------------------------------------------------------------------------- -! " Test 86: setloclist crash {{{1 - " - " Executing a setloclist() on BufUnload shouldn't crash Vim - "------------------------------------------------------------------------------- -*** ../vim-7.3.751/src/version.c 2012-12-05 18:21:28.000000000 +0100 ---- src/version.c 2012-12-05 18:59:50.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 752, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -106. When told to "go to your room" you inform your parents that you - can't...because you were kicked out and banned. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.753 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.753 -Problem: When there is a QuitPre autocommand using ":q" twice does not work - for exiting when there are more files to edit. -Solution: Do not decrement quitmore in an autocommand. (Techlive Zheng) -Files: src/ex_docmd.c, src/fileio.c, src/proto/fileio.pro - - -*** ../vim-7.3.752/src/ex_docmd.c 2012-11-28 23:03:02.000000000 +0100 ---- src/ex_docmd.c 2012-12-05 19:07:01.000000000 +0100 -*************** -*** 1729,1739 **** - ++ex_nesting_level; - #endif - -! /* when not editing the last file :q has to be typed twice */ - if (quitmore - #ifdef FEAT_EVAL - /* avoid that a function call in 'statusline' does this */ - && !getline_equal(fgetline, cookie, get_func_line) - #endif - ) - --quitmore; ---- 1729,1741 ---- - ++ex_nesting_level; - #endif - -! /* When the last file has not been edited :q has to be typed twice. */ - if (quitmore - #ifdef FEAT_EVAL - /* avoid that a function call in 'statusline' does this */ - && !getline_equal(fgetline, cookie, get_func_line) -+ /* avoid that an autocommand, e.g. QuitPre, does this */ -+ && !getline_equal(fgetline, cookie, getnextac) - #endif - ) - --quitmore; -*** ../vim-7.3.752/src/fileio.c 2012-08-29 18:50:50.000000000 +0200 ---- src/fileio.c 2012-12-05 19:08:17.000000000 +0100 -*************** -*** 7774,7780 **** - static int event_ignored __ARGS((event_T event)); - static int au_get_grouparg __ARGS((char_u **argp)); - static int do_autocmd_event __ARGS((event_T event, char_u *pat, int nested, char_u *cmd, int forceit, int group)); -- static char_u *getnextac __ARGS((int c, void *cookie, int indent)); - static int apply_autocmds_group __ARGS((event_T event, char_u *fname, char_u *fname_io, int force, int group, buf_T *buf, exarg_T *eap)); - static void auto_next_pat __ARGS((AutoPatCmd *apc, int stop_at_last)); - ---- 7774,7779 ---- -*************** -*** 9613,9619 **** - * Called by do_cmdline() to get the next line for ":if". - * Returns allocated string, or NULL for end of autocommands. - */ -! static char_u * - getnextac(c, cookie, indent) - int c UNUSED; - void *cookie; ---- 9612,9618 ---- - * Called by do_cmdline() to get the next line for ":if". - * Returns allocated string, or NULL for end of autocommands. - */ -! char_u * - getnextac(c, cookie, indent) - int c UNUSED; - void *cookie; -*** ../vim-7.3.752/src/proto/fileio.pro 2012-02-29 18:22:03.000000000 +0100 ---- src/proto/fileio.pro 2012-12-05 19:08:24.000000000 +0100 -*************** -*** 47,52 **** ---- 47,53 ---- - int has_insertcharpre __ARGS((void)); - void block_autocmds __ARGS((void)); - void unblock_autocmds __ARGS((void)); -+ char_u *getnextac __ARGS((int c, void *cookie, int indent)); - int has_autocmd __ARGS((event_T event, char_u *sfname, buf_T *buf)); - char_u *get_augroup_name __ARGS((expand_T *xp, int idx)); - char_u *set_context_in_autocmd __ARGS((expand_T *xp, char_u *arg, int doautocmd)); -*** ../vim-7.3.752/src/version.c 2012-12-05 19:00:03.000000000 +0100 ---- src/version.c 2012-12-05 19:08:34.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 753, - /**/ - --- -Laughing helps. It's like jogging on the inside. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.754 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.754 -Problem: Latest nmake is not recognized. -Solution: Add nmake version 11.00.51106.1. (Raymond Ko) -Files: src/Make_mvc.mak - - -*** ../vim-7.3.753/src/Make_mvc.mak 2012-10-23 05:35:30.000000000 +0200 ---- src/Make_mvc.mak 2012-12-06 21:27:56.000000000 +0100 -*************** -*** 413,418 **** ---- 413,421 ---- - !if "$(_NMAKE_VER)" == "11.00.50727.1" - MSVCVER = 11.0 - !endif -+ !if "$(_NMAKE_VER)" == "11.00.51106.1" -+ MSVCVER = 11.0 -+ !endif - !endif - - # Abort bulding VIM if version of VC is unrecognised. -*** ../vim-7.3.753/src/version.c 2012-12-05 19:13:11.000000000 +0100 ---- src/version.c 2012-12-06 21:29:12.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 754, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -116. You are living with your boyfriend who networks your respective - computers so you can sit in separate rooms and email each other - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.755 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.755 -Problem: Autoconf doesn't find Python 3 if it's called "python". -Solution: Search for "python2" and "python3" first, then "python". -Files: src/configure.in, src/auto/configure - - -*** ../vim-7.3.754/src/configure.in 2012-11-23 21:54:43.000000000 +0100 ---- src/configure.in 2012-12-09 15:41:59.000000000 +0100 -*************** -*** 838,844 **** - AC_MSG_RESULT($enable_pythoninterp) - if test "$enable_pythoninterp" = "yes" -o "$enable_pythoninterp" = "dynamic"; then - dnl -- find the python executable -! AC_PATH_PROG(vi_cv_path_python, python) - if test "X$vi_cv_path_python" != "X"; then - - dnl -- get its version number ---- 838,844 ---- - AC_MSG_RESULT($enable_pythoninterp) - if test "$enable_pythoninterp" = "yes" -o "$enable_pythoninterp" = "dynamic"; then - dnl -- find the python executable -! AC_PATH_PROGS(vi_cv_path_python, python2 python) - if test "X$vi_cv_path_python" != "X"; then - - dnl -- get its version number -*************** -*** 1028,1034 **** - AC_MSG_RESULT($enable_python3interp) - if test "$enable_python3interp" = "yes" -o "$enable_python3interp" = "dynamic"; then - dnl -- find the python3 executable -! AC_PATH_PROG(vi_cv_path_python3, python3) - if test "X$vi_cv_path_python3" != "X"; then - - dnl -- get its version number ---- 1028,1034 ---- - AC_MSG_RESULT($enable_python3interp) - if test "$enable_python3interp" = "yes" -o "$enable_python3interp" = "dynamic"; then - dnl -- find the python3 executable -! AC_PATH_PROGS(vi_cv_path_python3, python3 python) - if test "X$vi_cv_path_python3" != "X"; then - - dnl -- get its version number -*** ../vim-7.3.754/src/auto/configure 2012-11-23 21:54:43.000000000 +0100 ---- src/auto/configure 2012-12-12 14:23:46.000000000 +0100 -*************** -*** 5214,5221 **** - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_pythoninterp" >&5 - $as_echo "$enable_pythoninterp" >&6; } - if test "$enable_pythoninterp" = "yes" -o "$enable_pythoninterp" = "dynamic"; then -! # Extract the first word of "python", so it can be a program name with args. -! set dummy python; ac_word=$2 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } - if test "${ac_cv_path_vi_cv_path_python+set}" = set; then : ---- 5214,5223 ---- - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_pythoninterp" >&5 - $as_echo "$enable_pythoninterp" >&6; } - if test "$enable_pythoninterp" = "yes" -o "$enable_pythoninterp" = "dynamic"; then -! for ac_prog in python2 python -! do -! # Extract the first word of "$ac_prog", so it can be a program name with args. -! set dummy $ac_prog; ac_word=$2 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } - if test "${ac_cv_path_vi_cv_path_python+set}" = set; then : -*************** -*** 5254,5259 **** ---- 5256,5264 ---- - fi - - -+ test -n "$vi_cv_path_python" && break -+ done -+ - if test "X$vi_cv_path_python" != "X"; then - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python version" >&5 -*************** -*** 5509,5516 **** - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_python3interp" >&5 - $as_echo "$enable_python3interp" >&6; } - if test "$enable_python3interp" = "yes" -o "$enable_python3interp" = "dynamic"; then -! # Extract the first word of "python3", so it can be a program name with args. -! set dummy python3; ac_word=$2 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } - if test "${ac_cv_path_vi_cv_path_python3+set}" = set; then : ---- 5514,5523 ---- - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_python3interp" >&5 - $as_echo "$enable_python3interp" >&6; } - if test "$enable_python3interp" = "yes" -o "$enable_python3interp" = "dynamic"; then -! for ac_prog in python3 python -! do -! # Extract the first word of "$ac_prog", so it can be a program name with args. -! set dummy $ac_prog; ac_word=$2 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } - if test "${ac_cv_path_vi_cv_path_python3+set}" = set; then : -*************** -*** 5549,5554 **** ---- 5556,5564 ---- - fi - - -+ test -n "$vi_cv_path_python3" && break -+ done -+ - if test "X$vi_cv_path_python3" != "X"; then - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python version" >&5 -*** ../vim-7.3.754/src/version.c 2012-12-06 21:30:24.000000000 +0100 ---- src/version.c 2012-12-12 14:23:14.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 755, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -145. You e-mail your boss, informing him you'll be late. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.756 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.756 -Problem: A location list can get a wrong count in :lvimgrep. -Solution: Check if the list was changed by autocommands. (mostly by - Christian Brabandt) -Files: src/quickfic.c - - -*** ../vim-7.3.755/src/quickfix.c 2012-12-05 15:16:42.000000000 +0100 ---- src/quickfix.c 2012-12-12 15:50:08.000000000 +0100 -*************** -*** 3109,3114 **** ---- 3109,3117 ---- - char_u *p; - int fi; - qf_info_T *qi = &ql_info; -+ #ifdef FEAT_AUTOCMD -+ qfline_T *cur_qf_start; -+ #endif - qfline_T *prevp = NULL; - long lnum; - buf_T *buf; -*************** -*** 3218,3223 **** ---- 3221,3232 ---- - * ":lcd %:p:h" changes the meaning of short path names. */ - mch_dirname(dirname_start, MAXPATHL); - -+ #ifdef FEAT_AUTOCMD -+ /* Remeber the value of qf_start, so that we can check for autocommands -+ * changing the current quickfix list. */ -+ cur_qf_start = qi->qf_lists[qi->qf_curlist].qf_start; -+ #endif -+ - seconds = (time_t)0; - for (fi = 0; fi < fcount && !got_int && tomatch > 0; ++fi) - { -*************** -*** 3273,3278 **** ---- 3282,3309 ---- - /* Use existing, loaded buffer. */ - using_dummy = FALSE; - -+ #ifdef FEAT_AUTOCMD -+ if (cur_qf_start != qi->qf_lists[qi->qf_curlist].qf_start) -+ { -+ int idx; -+ -+ /* Autocommands changed the quickfix list. Find the one we were -+ * using and restore it. */ -+ for (idx = 0; idx < LISTCOUNT; ++idx) -+ if (cur_qf_start == qi->qf_lists[idx].qf_start) -+ { -+ qi->qf_curlist = idx; -+ break; -+ } -+ if (idx == LISTCOUNT) -+ { -+ /* List cannot be found, create a new one. */ -+ qf_new_list(qi, *eap->cmdlinep); -+ cur_qf_start = qi->qf_lists[qi->qf_curlist].qf_start; -+ } -+ } -+ #endif -+ - if (buf == NULL) - { - if (!got_int) -*************** -*** 3324,3329 **** ---- 3355,3363 ---- - if (got_int) - break; - } -+ #ifdef FEAT_AUTOCMD -+ cur_qf_start = qi->qf_lists[qi->qf_curlist].qf_start; -+ #endif - - if (using_dummy) - { -*** ../vim-7.3.755/src/version.c 2012-12-12 14:25:01.000000000 +0100 ---- src/version.c 2012-12-12 15:35:58.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 756, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -146. You experience ACTUAL physical withdrawal symptoms when away - from your 'puter and the net. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.757 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.757 -Problem: Issue 96: May access freed memory when a put command triggers - autocommands. (Dominique Pelle) -Solution: Call u_save() before getting y_array. -Files: src/ops.c - - -*** ../vim-7.3.756/src/ops.c 2012-09-05 14:18:42.000000000 +0200 ---- src/ops.c 2012-12-12 16:03:35.000000000 +0100 -*************** -*** 3351,3356 **** ---- 3351,3362 ---- - return; - } - -+ #ifdef FEAT_AUTOCMD -+ /* Autocommands may be executed when saving lines for undo, which may make -+ * y_array invalid. Start undo now to avoid that. */ -+ u_save(curwin->w_cursor.lnum, curwin->w_cursor.lnum + 1); -+ #endif -+ - if (insert_string != NULL) - { - y_type = MCHAR; -*** ../vim-7.3.756/src/version.c 2012-12-12 15:55:16.000000000 +0100 ---- src/version.c 2012-12-12 16:06:47.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 757, - /**/ - --- -We are the Borg of GNU GPL. We will assimilate your source code. -Resistance is futile. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.758 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.758 -Problem: Matchit plugin does not handle space in #ifdef. -Solution: Change matching pattern to allow spaces. (Mike Morearty) -Files: runtime/macros/matchit.vim - - -*** ../vim-7.3.757/runtime/macros/matchit.vim 2010-08-15 21:57:19.000000000 +0200 ---- runtime/macros/matchit.vim 2012-12-12 16:34:11.000000000 +0100 -*************** -*** 131,137 **** - " let default = substitute(escape(&mps, '[$^.*~\\/?]'), '[,:]\+', - " \ '\\|', 'g').'\|\/\*\|\*\/\|#if\>\|#ifdef\>\|#else\>\|#elif\>\|#endif\>' - let default = escape(&mps, '[$^.*~\\/?]') . (strlen(&mps) ? "," : "") . -! \ '\/\*:\*\/,#if\%(def\)\=:#else\>:#elif\>:#endif\>' - " s:all = pattern with all the keywords - let match_words = match_words . (strlen(match_words) ? "," : "") . default - if match_words !~ s:notslash . '\\\d' ---- 131,137 ---- - " let default = substitute(escape(&mps, '[$^.*~\\/?]'), '[,:]\+', - " \ '\\|', 'g').'\|\/\*\|\*\/\|#if\>\|#ifdef\>\|#else\>\|#elif\>\|#endif\>' - let default = escape(&mps, '[$^.*~\\/?]') . (strlen(&mps) ? "," : "") . -! \ '\/\*:\*\/,#\s*if\%(def\)\=:#\s*else\>:#\s*elif\>:#\s*endif\>' - " s:all = pattern with all the keywords - let match_words = match_words . (strlen(match_words) ? "," : "") . default - if match_words !~ s:notslash . '\\\d' -*************** -*** 649,655 **** - " s:all regexp based on s:pat and the default groups - " This part is copied and slightly modified from s:Match_wrapper(). - let default = escape(&mps, '[$^.*~\\/?]') . (strlen(&mps) ? "," : "") . -! \ '\/\*:\*\/,#if\%(def\)\=:#else\>:#elif\>:#endif\>' - " Allow b:match_words = "GetVimMatchWords()" . - if b:match_words =~ ":" - let match_words = b:match_words ---- 649,655 ---- - " s:all regexp based on s:pat and the default groups - " This part is copied and slightly modified from s:Match_wrapper(). - let default = escape(&mps, '[$^.*~\\/?]') . (strlen(&mps) ? "," : "") . -! \ '\/\*:\*\/,#\s*if\%(def\)\=:#\s*else\>:#\s*elif\>:#\s*endif\>' - " Allow b:match_words = "GetVimMatchWords()" . - if b:match_words =~ ":" - let match_words = b:match_words -*************** -*** 808,812 **** ---- 808,813 ---- - endfun - - let &cpo = s:save_cpo -+ unlet s:save_cpo - - " vim:sts=2:sw=2: -*** ../vim-7.3.757/src/version.c 2012-12-12 16:11:28.000000000 +0100 ---- src/version.c 2012-12-12 16:41:40.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 758, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -147. You finally give up smoking...because it made the monitor dirty. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.759 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.759 -Problem: MS-Windows: Updating the tabline is slow when there are many tabs. -Solution: Disable redrawing while performing the update. (Arseny Kapoulkine) -Files: src/gui_w48.c - - -*** ../vim-7.3.758/src/gui_w48.c 2012-11-20 16:53:34.000000000 +0100 ---- src/gui_w48.c 2012-12-12 17:10:21.000000000 +0100 -*************** -*** 2452,2458 **** - TCITEM tie; - int nr = 0; - int curtabidx = 0; -- RECT rc; - #ifdef FEAT_MBYTE - static int use_unicode = FALSE; - int uu; ---- 2452,2457 ---- -*************** -*** 2479,2491 **** - tie.mask = TCIF_TEXT; - tie.iImage = -1; - - /* Add a label for each tab page. They all contain the same text area. */ - for (tp = first_tabpage; tp != NULL; tp = tp->tp_next, ++nr) - { - if (tp == curtab) - curtabidx = nr; - -! if (!TabCtrl_GetItemRect(s_tabhwnd, nr, &rc)) - { - /* Add the tab */ - tie.pszText = "-Empty-"; ---- 2478,2493 ---- - tie.mask = TCIF_TEXT; - tie.iImage = -1; - -+ /* Disable redraw for tab updates to eliminate O(N^2) draws. */ -+ SendMessage(s_tabhwnd, WM_SETREDRAW, (WPARAM)FALSE, 0); -+ - /* Add a label for each tab page. They all contain the same text area. */ - for (tp = first_tabpage; tp != NULL; tp = tp->tp_next, ++nr) - { - if (tp == curtab) - curtabidx = nr; - -! if (nr >= TabCtrl_GetItemCount(s_tabhwnd)) - { - /* Add the tab */ - tie.pszText = "-Empty-"; -*************** -*** 2519,2529 **** - } - - /* Remove any old labels. */ -! while (TabCtrl_GetItemRect(s_tabhwnd, nr, &rc)) - TabCtrl_DeleteItem(s_tabhwnd, nr); - - if (TabCtrl_GetCurSel(s_tabhwnd) != curtabidx) - TabCtrl_SetCurSel(s_tabhwnd, curtabidx); - } - - /* ---- 2521,2534 ---- - } - - /* Remove any old labels. */ -! while (nr < TabCtrl_GetItemCount(s_tabhwnd)) - TabCtrl_DeleteItem(s_tabhwnd, nr); - - if (TabCtrl_GetCurSel(s_tabhwnd) != curtabidx) - TabCtrl_SetCurSel(s_tabhwnd, curtabidx); -+ -+ /* Re-enable redraw. This should trigger a repaint. */ -+ SendMessage(s_tabhwnd, WM_SETREDRAW, (WPARAM)TRUE, 0); - } - - /* -*** ../vim-7.3.758/src/version.c 2012-12-12 16:43:52.000000000 +0100 ---- src/version.c 2012-12-12 17:10:46.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 759, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -148. You find it easier to dial-up the National Weather Service - Weather/your_town/now.html than to simply look out the window. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.760 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.760 -Problem: dv_ deletes the white space before the line. -Solution: Move the cursor to the first non-white. (Christian Brabandt) -Files: src/normal.c, src/testdir/test19.in, src/testdir/test19.ok - - -*** ../vim-7.3.759/src/normal.c 2012-10-23 05:08:49.000000000 +0200 ---- src/normal.c 2012-12-12 17:23:00.000000000 +0100 -*************** -*** 8628,8634 **** - cap->oap->motion_type = MLINE; - if (cursor_down(cap->count1 - 1L, cap->oap->op_type == OP_NOP) == FAIL) - clearopbeep(cap->oap); -! else if ( cap->oap->op_type == OP_DELETE - || cap->oap->op_type == OP_LSHIFT - || cap->oap->op_type == OP_RSHIFT) - beginline(BL_SOL | BL_FIX); ---- 8628,8636 ---- - cap->oap->motion_type = MLINE; - if (cursor_down(cap->count1 - 1L, cap->oap->op_type == OP_NOP) == FAIL) - clearopbeep(cap->oap); -! else if ( (cap->oap->op_type == OP_DELETE /* only with linewise motions */ -! && cap->oap->motion_force != 'v' -! && cap->oap->motion_force != Ctrl_V) - || cap->oap->op_type == OP_LSHIFT - || cap->oap->op_type == OP_RSHIFT) - beginline(BL_SOL | BL_FIX); -*** ../vim-7.3.759/src/testdir/test19.in 2011-09-08 23:22:35.000000000 +0200 ---- src/testdir/test19.in 2012-12-12 17:19:36.000000000 +0100 -*************** -*** 1,4 **** ---- 1,5 ---- - Tests for "r<Tab>" with 'smarttab' and 'expandtab' set/not set. -+ Also test that dv_ works correctly - - STARTTEST - :so small.vim -*************** -*** 16,22 **** - :" Test that copyindent works with expandtab set - :set expandtab smartindent copyindent ts=8 sw=8 sts=8 - o{ -! x:?^start?,$w! test.out - :qa! - ENDTEST - ---- 17,25 ---- - :" Test that copyindent works with expandtab set - :set expandtab smartindent copyindent ts=8 sw=8 sts=8 - o{ -! x:set nosol -! /Second line/ -! fwdv_:?^start?,$w! test.out - :qa! - ENDTEST - -*************** -*** 27,29 **** ---- 30,33 ---- - a cde - f ghi - test text -+ Second line beginning with whitespace -*** ../vim-7.3.759/src/testdir/test19.ok 2011-09-07 19:58:04.000000000 +0200 ---- src/testdir/test19.ok 2012-12-12 17:19:36.000000000 +0100 -*************** -*** 7,9 **** ---- 7,10 ---- - test text - { - x -+ with whitespace -*** ../vim-7.3.759/src/version.c 2012-12-12 17:12:21.000000000 +0100 ---- src/version.c 2012-12-12 17:20:47.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 760, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -149. You find your computer sexier than your girlfriend - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.761 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.761 -Problem: In Visual mode a "-p does not work. (Marcin Szamotulski) -Solution: Avoid writing to "- before putting it. (Christian Brabandt) -Files: src/normal.c, src/testdir/test48.in, src/testdir/test48.ok - - -*** ../vim-7.3.760/src/normal.c 2012-12-12 17:33:26.000000000 +0100 ---- src/normal.c 2012-12-12 18:11:06.000000000 +0100 -*************** -*** 9412,9425 **** - # ifdef FEAT_CLIPBOARD - adjust_clip_reg(®name); - # endif -! if (regname == 0 || regname == '"' || VIM_ISDIGIT(regname) - # ifdef FEAT_CLIPBOARD - || (clip_unnamed && (regname == '*' || regname == '+')) - # endif - - ) - { -! /* the delete is going to overwrite the register we want to - * put, save it first. */ - reg1 = get_register(regname, TRUE); - } ---- 9412,9426 ---- - # ifdef FEAT_CLIPBOARD - adjust_clip_reg(®name); - # endif -! if (regname == 0 || regname == '"' -! || VIM_ISDIGIT(regname) || regname == '-' - # ifdef FEAT_CLIPBOARD - || (clip_unnamed && (regname == '*' || regname == '+')) - # endif - - ) - { -! /* The delete is going to overwrite the register we want to - * put, save it first. */ - reg1 = get_register(regname, TRUE); - } -*** ../vim-7.3.760/src/testdir/test48.in 2010-08-15 21:57:29.000000000 +0200 ---- src/testdir/test48.in 2012-12-12 18:09:21.000000000 +0100 -*************** -*** 54,61 **** ---- 54,65 ---- - ^O3li4li4li <-- should show the name of a noted text editor - ^o4li4li4li <-- and its version number-dd - :" -+ :" Test for yanking and pasting using the small delete register -+ gg/^foo -+ dewve"-p - :wq! test.out - ENDTEST -+ foo, bar - keyword keyw - all your base are belong to us - 1 2 3 4 5 6 -*** ../vim-7.3.760/src/testdir/test48.ok 2010-08-15 21:57:29.000000000 +0200 ---- src/testdir/test48.ok 2012-12-12 18:09:25.000000000 +0100 -*************** -*** 1,3 **** ---- 1,4 ---- -+ , foo - keyword keyword - all your base - are belong to vim -*** ../vim-7.3.760/src/version.c 2012-12-12 17:33:26.000000000 +0100 ---- src/version.c 2012-12-12 18:19:51.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 761, - /**/ - --- -You are not really successful until someone claims he sat -beside you in school. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.762 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.762 (after 7.3.759) -Problem: On some systems the tabline is not redrawn. -Solution: Call RedrawWindow(). (Charles Peacech) -Files: src/gui_w48.c - - -*** ../vim-7.3.761/src/gui_w48.c 2012-12-12 17:12:21.000000000 +0100 ---- src/gui_w48.c 2012-12-16 12:45:47.000000000 +0100 -*************** -*** 2527,2534 **** - if (TabCtrl_GetCurSel(s_tabhwnd) != curtabidx) - TabCtrl_SetCurSel(s_tabhwnd, curtabidx); - -! /* Re-enable redraw. This should trigger a repaint. */ - SendMessage(s_tabhwnd, WM_SETREDRAW, (WPARAM)TRUE, 0); - } - - /* ---- 2527,2536 ---- - if (TabCtrl_GetCurSel(s_tabhwnd) != curtabidx) - TabCtrl_SetCurSel(s_tabhwnd, curtabidx); - -! /* Re-enable redraw and redraw. */ - SendMessage(s_tabhwnd, WM_SETREDRAW, (WPARAM)TRUE, 0); -+ RedrawWindow(s_tabhwnd, NULL, NULL, -+ RDW_ERASE | RDW_FRAME | RDW_INVALIDATE | RDW_ALLCHILDREN); - } - - /* -*** ../vim-7.3.761/src/version.c 2012-12-12 18:20:28.000000000 +0100 ---- src/version.c 2012-12-16 12:46:44.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 762, - /**/ - --- -"The question of whether computers can think is just like the question -of whether submarines can swim." -- Edsger W. Dijkstra - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.763 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.763 -Problem: Jumping to a mark does not open a fold if it is in the same line. - (Wiktor Ruben) -Solution: Also compare the column after the jump. (Christian Brabandt) -Files: src/normal.c - - -*** ../vim-7.3.762/src/normal.c 2012-12-12 18:20:28.000000000 +0100 ---- src/normal.c 2013-01-11 22:02:30.000000000 +0100 -*************** -*** 7523,7529 **** - pos_T *pos; - int c; - #ifdef FEAT_FOLDING -! linenr_T lnum = curwin->w_cursor.lnum; - int old_KeyTyped = KeyTyped; /* getting file may reset it */ - #endif - ---- 7523,7529 ---- - pos_T *pos; - int c; - #ifdef FEAT_FOLDING -! pos_T old_cursor = curwin->w_cursor; - int old_KeyTyped = KeyTyped; /* getting file may reset it */ - #endif - -*************** -*** 7552,7558 **** - #endif - #ifdef FEAT_FOLDING - if (cap->oap->op_type == OP_NOP -! && (pos == (pos_T *)-1 || lnum != curwin->w_cursor.lnum) - && (fdo_flags & FDO_MARK) - && old_KeyTyped) - foldOpenCursor(); ---- 7552,7558 ---- - #endif - #ifdef FEAT_FOLDING - if (cap->oap->op_type == OP_NOP -! && (pos == (pos_T *)-1 || !equalpos(old_cursor, *pos)) - && (fdo_flags & FDO_MARK) - && old_KeyTyped) - foldOpenCursor(); -*** ../vim-7.3.762/src/version.c 2012-12-16 12:50:33.000000000 +0100 ---- src/version.c 2013-01-17 13:23:27.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 763, - /**/ - --- -This is an airconditioned room, do not open Windows. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.764 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.764 -Problem: Not all message translation files are installed. -Solution: Also install the converted files. -Files: src/po/Makefile - - -*** ../vim-7.3.763/src/po/Makefile 2010-08-15 21:57:26.000000000 +0200 ---- src/po/Makefile 2013-01-17 13:30:30.000000000 +0100 -*************** -*** 20,25 **** ---- 20,26 ---- - ko \ - ko.UTF-8 \ - nb \ -+ nl \ - no \ - pl \ - pt_BR \ -*************** -*** 33,38 **** ---- 34,49 ---- - zh_TW \ - zh_TW.UTF-8 - -+ CONVERTED = \ -+ cs.cp1250 \ -+ ja.sjis \ -+ pl.cp1250 \ -+ pl.UTF-8 \ -+ ru.cp1251 \ -+ sk.cp1250 \ -+ uk.cp1251 \ -+ zh_CN.cp936 -+ - MOFILES = \ - af.mo \ - ca.mo \ -*************** -*** 49,54 **** ---- 60,66 ---- - ko.mo \ - ko.UTF-8.mo \ - nb.mo \ -+ nl.mo \ - no.mo \ - pl.mo \ - pt_BR.mo \ -*************** -*** 62,68 **** - zh_TW.UTF-8.mo \ - zh_TW.mo - -! CONVERTED = \ - cs.cp1250.mo \ - ja.sjis.mo \ - pl.cp1250.mo \ ---- 74,80 ---- - zh_TW.UTF-8.mo \ - zh_TW.mo - -! MOCONVERTED = \ - cs.cp1250.mo \ - ja.sjis.mo \ - pl.cp1250.mo \ -*************** -*** 88,93 **** ---- 100,106 ---- - ko.ck \ - ko.UTF-8.ck \ - nb.ck \ -+ nl.ck \ - no.ck \ - pl.ck \ - pt_BR.ck \ -*************** -*** 123,129 **** - - .SUFFIXES: - .SUFFIXES: .po .mo .pot .ck -! .PHONY: all install uninstall prefixcheck converted check clean checkclean distclean update-po $(LANGUAGES) - - .po.mo: - $(MSGFMT) -o $@ $< ---- 136,142 ---- - - .SUFFIXES: - .SUFFIXES: .po .mo .pot .ck -! .PHONY: all install uninstall prefixcheck converted check clean checkclean distclean update-po $(LANGUAGES) $(CONVERTED) - - .po.mo: - $(MSGFMT) -o $@ $< -*************** -*** 132,144 **** - $(VIM) -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq $< - touch $@ - -! all: $(MOFILES) - - check: $(CHECKFILES) - -! install: $(MOFILES) - @$(MAKE) prefixcheck -! for lang in $(LANGUAGES); do \ - dir=$(LOCALEDIR)/$$lang/; \ - if test ! -x "$$dir"; then \ - mkdir $$dir; chmod 755 $$dir; \ ---- 145,157 ---- - $(VIM) -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq $< - touch $@ - -! all: $(MOFILES) $(MOCONVERTED) - - check: $(CHECKFILES) - -! install: $(MOFILES) $(MOCONVERTED) - @$(MAKE) prefixcheck -! for lang in $(LANGUAGES) $(CONVERTED); do \ - dir=$(LOCALEDIR)/$$lang/; \ - if test ! -x "$$dir"; then \ - mkdir $$dir; chmod 755 $$dir; \ -*************** -*** 155,167 **** - - uninstall: - @$(MAKE) prefixcheck -! for cat in $(MOFILES); do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ - rm -f $(LOCALEDIR)/$$lang/LC_MESSAGES/$(PACKAGE).mo; \ - done - -! converted: $(CONVERTED) - - # Norwegian/Bokmal: "nb" is an alias for "no". - # Copying the file is not efficient, but I don't know of another way to make ---- 168,180 ---- - - uninstall: - @$(MAKE) prefixcheck -! for cat in $(MOFILES) $(MOCONVERTED); do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ - rm -f $(LOCALEDIR)/$$lang/LC_MESSAGES/$(PACKAGE).mo; \ - done - -! converted: $(MOCONVERTED) - - # Norwegian/Bokmal: "nb" is an alias for "no". - # Copying the file is not efficient, but I don't know of another way to make -*** ../vim-7.3.763/src/version.c 2013-01-17 13:24:00.000000000 +0100 ---- src/version.c 2013-01-17 13:25:41.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 764, - /**/ - --- -The software said it requires Windows 95 or better, so I installed Linux. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.765 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.765 -Problem: Segfault when doing "cclose" on BufUnload in a python function. - (Sean Reifschneider) -Solution: Skip window with NULL buffer. (Christian Brabandt) -Files: src/main.c, src/window.c - - -*** ../vim-7.3.764/src/main.c 2012-11-28 15:55:37.000000000 +0100 ---- src/main.c 2013-01-17 13:46:57.000000000 +0100 -*************** -*** 1376,1381 **** ---- 1376,1384 ---- - for (wp = (tp == curtab) - ? firstwin : tp->tp_firstwin; wp != NULL; wp = wp->w_next) - { -+ if (wp->w_buffer == NULL) -+ /* Autocmd must have close the buffer already, skip. */ -+ continue; - buf = wp->w_buffer; - if (buf->b_changedtick != -1) - { -*** ../vim-7.3.764/src/window.c 2012-08-29 15:50:22.000000000 +0200 ---- src/window.c 2013-01-17 13:53:10.000000000 +0100 -*************** -*** 2276,2284 **** - #endif - } - - /* Autocommands may have closed the window already, or closed the only - * other window or moved to another tab page. */ -! if (!win_valid(win) || last_window() || curtab != prev_curtab - || close_last_window_tabpage(win, free_buf, prev_curtab)) - return; - ---- 2276,2290 ---- - #endif - } - -+ if (only_one_window() && win_valid(win) && win->w_buffer == NULL -+ && (last_window() || curtab != prev_curtab -+ || close_last_window_tabpage(win, free_buf, prev_curtab))) -+ /* Autocommands have close all windows, quit now. */ -+ getout(0); -+ - /* Autocommands may have closed the window already, or closed the only - * other window or moved to another tab page. */ -! else if (!win_valid(win) || last_window() || curtab != prev_curtab - || close_last_window_tabpage(win, free_buf, prev_curtab)) - return; - -*************** -*** 6282,6288 **** - return FALSE; - - for (wp = firstwin; wp != NULL; wp = wp->w_next) -! if ((!((wp->w_buffer->b_help && !curbuf->b_help) - # ifdef FEAT_QUICKFIX - || wp->w_p_pvw - # endif ---- 6288,6295 ---- - return FALSE; - - for (wp = firstwin; wp != NULL; wp = wp->w_next) -! if (wp->w_buffer != NULL -! && (!((wp->w_buffer->b_help && !curbuf->b_help) - # ifdef FEAT_QUICKFIX - || wp->w_p_pvw - # endif -*** ../vim-7.3.764/src/version.c 2013-01-17 13:35:13.000000000 +0100 ---- src/version.c 2013-01-17 13:56:56.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 765, - /**/ - --- - He was not in the least bit scared to be mashed into a pulp - Or to have his eyes gouged out and his elbows broken; - To have his kneecaps split and his body burned away - And his limbs all hacked and mangled, brave Sir Robin. - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.766 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.766 -Problem: ":help cpo-*" jumps to the wrong place. -Solution: Make it equivalent to ":help cpo-star". -Files: src/ex_cmds.c - - -*** ../vim-7.3.765/src/ex_cmds.c 2012-11-29 20:09:55.000000000 +0100 ---- src/ex_cmds.c 2013-01-17 14:05:45.000000000 +0100 -*************** -*** 5849,5862 **** - int i; - static char *(mtable[]) = {"*", "g*", "[*", "]*", ":*", - "/*", "/\\*", "\"*", "**", -! "/\\(\\)", - "?", ":?", "?<CR>", "g?", "g?g?", "g??", "z?", - "/\\?", "/\\z(\\)", "\\=", ":s\\=", - "[count]", "[quotex]", "[range]", - "[pattern]", "\\|", "\\%$"}; - static char *(rtable[]) = {"star", "gstar", "[star", "]star", ":star", - "/star", "/\\\\star", "quotestar", "starstar", -! "/\\\\(\\\\)", - "?", ":?", "?<CR>", "g?", "g?g?", "g??", "z?", - "/\\\\?", "/\\\\z(\\\\)", "\\\\=", ":s\\\\=", - "\\[count]", "\\[quotex]", "\\[range]", ---- 5849,5862 ---- - int i; - static char *(mtable[]) = {"*", "g*", "[*", "]*", ":*", - "/*", "/\\*", "\"*", "**", -! "cpo-*", "/\\(\\)", - "?", ":?", "?<CR>", "g?", "g?g?", "g??", "z?", - "/\\?", "/\\z(\\)", "\\=", ":s\\=", - "[count]", "[quotex]", "[range]", - "[pattern]", "\\|", "\\%$"}; - static char *(rtable[]) = {"star", "gstar", "[star", "]star", ":star", - "/star", "/\\\\star", "quotestar", "starstar", -! "cpo-star", "/\\\\(\\\\)", - "?", ":?", "?<CR>", "g?", "g?g?", "g??", "z?", - "/\\\\?", "/\\\\z(\\\\)", "\\\\=", ":s\\\\=", - "\\[count]", "\\[quotex]", "\\[range]", -*** ../vim-7.3.765/src/version.c 2013-01-17 13:59:56.000000000 +0100 ---- src/version.c 2013-01-17 14:09:04.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 766, - /**/ - --- -The greatest lies of all time: - (1) The check is in the mail. - (2) We have a really challenging assignment for you. - (3) I love you. - (4) All bugs have been fixed. - (5) This won't hurt a bit. - (6) Honey, I just need to debug this program and be home in 5 minutes. - (7) I have just sent you an e-mail about that. - (8) Of course I'll respect you in the morning. - (9) I'm from the government, and I'm here to help you. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.767 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.767 -Problem: (Win32) The _errno used for iconv may be the wrong one. -Solution: Use the _errno from iconv.dll. (Ken Takata) -Files: src/mbyte.c - - -*** ../vim-7.3.766/src/mbyte.c 2012-09-18 18:03:33.000000000 +0200 ---- src/mbyte.c 2013-01-17 14:33:42.000000000 +0100 -*************** -*** 3242,3248 **** - - /* - * Version of strnicmp() that handles multi-byte characters. -! * Needed for Big5, Sjift-JIS and UTF-8 encoding. Other DBCS encodings can - * probably use strnicmp(), because there are no ASCII characters in the - * second byte. - * Returns zero if s1 and s2 are equal (ignoring case), the difference between ---- 3242,3248 ---- - - /* - * Version of strnicmp() that handles multi-byte characters. -! * Needed for Big5, Shift-JIS and UTF-8 encoding. Other DBCS encodings can - * probably use strnicmp(), because there are no ASCII characters in the - * second byte. - * Returns zero if s1 and s2 are equal (ignoring case), the difference between -*************** -*** 4294,4299 **** ---- 4294,4337 ---- - # endif - - /* -+ * Get the address of 'funcname' which is imported by 'hInst' DLL. -+ */ -+ static void * -+ get_iconv_import_func(HINSTANCE hInst, const char *funcname) -+ { -+ PBYTE pImage = (PBYTE)hInst; -+ PIMAGE_DOS_HEADER pDOS = (PIMAGE_DOS_HEADER)hInst; -+ PIMAGE_NT_HEADERS pPE; -+ PIMAGE_IMPORT_DESCRIPTOR pImpDesc; -+ PIMAGE_THUNK_DATA pIAT; /* Import Address Table */ -+ PIMAGE_THUNK_DATA pINT; /* Import Name Table */ -+ PIMAGE_IMPORT_BY_NAME pImpName; -+ -+ if (pDOS->e_magic != IMAGE_DOS_SIGNATURE) -+ return NULL; -+ pPE = (PIMAGE_NT_HEADERS)(pImage + pDOS->e_lfanew); -+ if (pPE->Signature != IMAGE_NT_SIGNATURE) -+ return NULL; -+ pImpDesc = (PIMAGE_IMPORT_DESCRIPTOR)(pImage -+ + pPE->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT] -+ .VirtualAddress); -+ for (; pImpDesc->FirstThunk; ++pImpDesc) -+ { -+ pIAT = (PIMAGE_THUNK_DATA)(pImage + pImpDesc->FirstThunk); -+ pINT = (PIMAGE_THUNK_DATA)(pImage + pImpDesc->OriginalFirstThunk); -+ for (; pIAT->u1.Function; ++pIAT, ++pINT) -+ { -+ if (IMAGE_SNAP_BY_ORDINAL(pINT->u1.Ordinal)) -+ continue; -+ pImpName = (PIMAGE_IMPORT_BY_NAME)(pImage + pINT->u1.AddressOfData); -+ if (strcmp(pImpName->Name, funcname) == 0) -+ return (void *)pIAT->u1.Function; -+ } -+ } -+ return NULL; -+ } -+ -+ /* - * Try opening the iconv.dll and return TRUE if iconv() can be used. - */ - int -*************** -*** 4326,4332 **** - iconv_open = (void *)GetProcAddress(hIconvDLL, "libiconv_open"); - iconv_close = (void *)GetProcAddress(hIconvDLL, "libiconv_close"); - iconvctl = (void *)GetProcAddress(hIconvDLL, "libiconvctl"); -! iconv_errno = (void *)GetProcAddress(hMsvcrtDLL, "_errno"); - if (iconv == NULL || iconv_open == NULL || iconv_close == NULL - || iconvctl == NULL || iconv_errno == NULL) - { ---- 4364,4372 ---- - iconv_open = (void *)GetProcAddress(hIconvDLL, "libiconv_open"); - iconv_close = (void *)GetProcAddress(hIconvDLL, "libiconv_close"); - iconvctl = (void *)GetProcAddress(hIconvDLL, "libiconvctl"); -! iconv_errno = get_iconv_import_func(hIconvDLL, "_errno"); -! if (iconv_errno == NULL) -! iconv_errno = (void *)GetProcAddress(hMsvcrtDLL, "_errno"); - if (iconv == NULL || iconv_open == NULL || iconv_close == NULL - || iconvctl == NULL || iconv_errno == NULL) - { -*** ../vim-7.3.766/src/version.c 2013-01-17 14:09:39.000000000 +0100 ---- src/version.c 2013-01-17 14:34:19.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 767, - /**/ - --- -FIRST HEAD: Oh! quick! get the sword out I want to cut his head off. -THIRD HEAD: Oh, cut your own head off. -SECOND HEAD: Yes - do us all a favour. - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.768 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.768 -Problem: settabvar() and setwinvar() may move the cursor. -Solution: Save and restore the cursor position when appropriate. (idea by - Yasuhiro Matsumoto) -Files: src/edit.c - - -*** ../vim-7.3.767/src/edit.c 2012-10-21 00:10:29.000000000 +0200 ---- src/edit.c 2013-01-17 15:32:10.000000000 +0100 -*************** -*** 372,377 **** ---- 372,379 ---- - */ - if (cmdchar != 'r' && cmdchar != 'v') - { -+ pos_T save_cursor = curwin->w_cursor; -+ - # ifdef FEAT_EVAL - if (cmdchar == 'R') - ptr = (char_u *)"r"; -*************** -*** 382,387 **** ---- 384,402 ---- - set_vim_var_string(VV_INSERTMODE, ptr, 1); - # endif - apply_autocmds(EVENT_INSERTENTER, NULL, NULL, FALSE, curbuf); -+ -+ /* Since Insert mode was not started yet a call to check_cursor_col() -+ * may have moved the cursor, especially with the "A" command. */ -+ if (curwin->w_cursor.col != save_cursor.col -+ && curwin->w_cursor.lnum == save_cursor.lnum) -+ { -+ int save_state = State; -+ -+ curwin->w_cursor = save_cursor; -+ State = INSERT; -+ check_cursor_col(); -+ State = save_state; -+ } - } - #endif - -*** ../vim-7.3.767/src/version.c 2013-01-17 14:39:43.000000000 +0100 ---- src/version.c 2013-01-17 15:10:48.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 768, - /**/ - --- -Life would be so much easier if we could just look at the source code. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.769 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.769 -Problem: 'matchpairs' does not work with multi-byte characters. -Solution: Make it work. (Christian Brabandt) -Files: src/misc1.c, src/option.c, src/proto/option.pro, src/search.c, - src/testdir/test69.in, src/testdir/test69.ok - - -*** ../vim-7.3.768/src/misc1.c 2012-08-15 14:04:50.000000000 +0200 ---- src/misc1.c 2013-01-17 15:55:09.000000000 +0100 -*************** -*** 2288,2301 **** - */ - if (p_sm && (State & INSERT) - && msg_silent == 0 -- #ifdef FEAT_MBYTE -- && charlen == 1 -- #endif - #ifdef FEAT_INS_EXPAND - && !ins_compl_active() - #endif - ) -! showmatch(c); - - #ifdef FEAT_RIGHTLEFT - if (!p_ri || (State & REPLACE_FLAG)) ---- 2288,2305 ---- - */ - if (p_sm && (State & INSERT) - && msg_silent == 0 - #ifdef FEAT_INS_EXPAND - && !ins_compl_active() - #endif - ) -! { -! #ifdef FEAT_MBYTE -! if (has_mbyte) -! showmatch(mb_ptr2char(buf)); -! else -! #endif -! showmatch(c); -! } - - #ifdef FEAT_RIGHTLEFT - if (!p_ri || (State & REPLACE_FLAG)) -*** ../vim-7.3.768/src/option.c 2012-12-05 14:42:56.000000000 +0100 ---- src/option.c 2013-01-17 16:38:42.000000000 +0100 -*************** -*** 6149,6164 **** - /* 'matchpairs' */ - else if (gvarp == &p_mps) - { -! /* Check for "x:y,x:y" */ -! for (p = *varp; *p != NUL; p += 4) - { -! if (p[1] != ':' || p[2] == NUL || (p[3] != NUL && p[3] != ',')) - { -! errmsg = e_invarg; -! break; - } -- if (p[3] == NUL) -- break; - } - } - ---- 6149,6194 ---- - /* 'matchpairs' */ - else if (gvarp == &p_mps) - { -! #ifdef FEAT_MBYTE -! if (has_mbyte) - { -! for (p = *varp; *p != NUL; ++p) - { -! int x2,x3 = -1; -! -! if (*p != NUL) -! p += mb_ptr2len(p); -! if (*p != NUL) -! x2 = *p++; -! if (*p != NUL) -! { -! x3 = mb_ptr2char(p); -! p += mb_ptr2len(p); -! } -! if (x2 != ':' || x2 == -1 || x3 == -1 -! || (*p != NUL && *p != ',')) -! { -! errmsg = e_invarg; -! break; -! } -! if (*p == NUL) -! break; -! } -! } -! else -! #endif -! { -! /* Check for "x:y,x:y" */ -! for (p = *varp; *p != NUL; p += 4) -! { -! if (p[1] != ':' || p[2] == NUL || (p[3] != NUL && p[3] != ',')) -! { -! errmsg = e_invarg; -! break; -! } -! if (p[3] == NUL) -! break; - } - } - } - -*************** -*** 11453,11455 **** ---- 11483,11583 ---- - { - return curbuf->b_p_sts < 0 ? get_sw_value() : curbuf->b_p_sts; - } -+ -+ /* -+ * Check matchpairs option for "*initc". -+ * If there is a match set "*initc" to the matching character and "*findc" to -+ * the opposite character. Set "*backwards" to the direction. -+ * When "switchit" is TRUE swap the direction. -+ */ -+ void -+ find_mps_values(initc, findc, backwards, switchit) -+ int *initc; -+ int *findc; -+ int *backwards; -+ int switchit; -+ { -+ char_u *ptr; -+ -+ ptr = curbuf->b_p_mps; -+ while (*ptr != NUL) -+ { -+ #ifdef FEAT_MBYTE -+ if (has_mbyte) -+ { -+ char_u *prev; -+ -+ if (mb_ptr2char(ptr) == *initc) -+ { -+ if (switchit) -+ { -+ *findc = *initc; -+ *initc = mb_ptr2char(ptr + mb_ptr2len(ptr) + 1); -+ *backwards = TRUE; -+ } -+ else -+ { -+ *findc = mb_ptr2char(ptr + mb_ptr2len(ptr) + 1); -+ *backwards = FALSE; -+ } -+ return; -+ } -+ prev = ptr; -+ ptr += mb_ptr2len(ptr) + 1; -+ if (mb_ptr2char(ptr) == *initc) -+ { -+ if (switchit) -+ { -+ *findc = *initc; -+ *initc = mb_ptr2char(prev); -+ *backwards = FALSE; -+ } -+ else -+ { -+ *findc = mb_ptr2char(prev); -+ *backwards = TRUE; -+ } -+ return; -+ } -+ ptr += mb_ptr2len(ptr); -+ } -+ else -+ #endif -+ { -+ if (*ptr == *initc) -+ { -+ if (switchit) -+ { -+ *backwards = TRUE; -+ *findc = *initc; -+ *initc = ptr[2]; -+ } -+ else -+ { -+ *backwards = FALSE; -+ *findc = ptr[2]; -+ } -+ return; -+ } -+ ptr += 2; -+ if (*ptr == *initc) -+ { -+ if (switchit) -+ { -+ *backwards = FALSE; -+ *findc = *initc; -+ *initc = ptr[-2]; -+ } -+ else -+ { -+ *backwards = TRUE; -+ *findc = ptr[-2]; -+ } -+ return; -+ } -+ ++ptr; -+ } -+ if (*ptr == ',') -+ ++ptr; -+ } -+ } -*** ../vim-7.3.768/src/proto/option.pro 2012-12-05 14:42:56.000000000 +0100 ---- src/proto/option.pro 2013-01-17 16:39:30.000000000 +0100 -*************** -*** 59,62 **** ---- 59,63 ---- - int check_ff_value __ARGS((char_u *p)); - long get_sw_value __ARGS((void)); - long get_sts_value __ARGS((void)); -+ void find_mps_values __ARGS((int *initc, int *findc, int *backwards, int switchit)); - /* vim: set ft=c : */ -*** ../vim-7.3.768/src/search.c 2012-10-03 13:35:45.000000000 +0200 ---- src/search.c 2013-01-17 16:50:12.000000000 +0100 -*************** -*** 1786,1813 **** - } - else if (initc != '#' && initc != NUL) - { -! /* 'matchpairs' is "x:y,x:y" */ -! for (ptr = curbuf->b_p_mps; *ptr; ptr += 2) -! { -! if (*ptr == initc) -! { -! findc = initc; -! initc = ptr[2]; -! backwards = TRUE; -! break; -! } -! ptr += 2; -! if (*ptr == initc) -! { -! findc = initc; -! initc = ptr[-2]; -! backwards = FALSE; -! break; -! } -! if (ptr[1] != ',') -! break; -! } -! if (!findc) /* invalid initc! */ - return NULL; - } - /* ---- 1786,1793 ---- - } - else if (initc != '#' && initc != NUL) - { -! find_mps_values(&initc, &findc, &backwards, TRUE); -! if (findc == NUL) - return NULL; - } - /* -*************** -*** 1886,1921 **** - --pos.col; - for (;;) - { -! initc = linep[pos.col]; - if (initc == NUL) - break; - -! for (ptr = curbuf->b_p_mps; *ptr; ++ptr) -! { -! if (*ptr == initc) -! { -! findc = ptr[2]; -! backwards = FALSE; -! break; -! } -! ptr += 2; -! if (*ptr == initc) -! { -! findc = ptr[-2]; -! backwards = TRUE; -! break; -! } -! if (!*++ptr) -! break; -! } - if (findc) - break; -! #ifdef FEAT_MBYTE -! if (has_mbyte) -! pos.col += (*mb_ptr2len)(linep + pos.col); -! else -! #endif -! ++pos.col; - } - if (!findc) - { ---- 1866,1879 ---- - --pos.col; - for (;;) - { -! initc = PTR2CHAR(linep + pos.col); - if (initc == NUL) - break; - -! find_mps_values(&initc, &findc, &backwards, FALSE); - if (findc) - break; -! pos.col += MB_PTR2LEN(linep + pos.col); - } - if (!findc) - { -*************** -*** 2260,2266 **** - * inquote if the number of quotes in a line is even, unless this - * line or the previous one ends in a '\'. Complicated, isn't it? - */ -! switch (c = linep[pos.col]) - { - case NUL: - /* at end of line without trailing backslash, reset inquote */ ---- 2218,2225 ---- - * inquote if the number of quotes in a line is even, unless this - * line or the previous one ends in a '\'. Complicated, isn't it? - */ -! c = PTR2CHAR(linep + pos.col); -! switch (c) - { - case NUL: - /* at end of line without trailing backslash, reset inquote */ -*************** -*** 2469,2488 **** - * Only show match for chars in the 'matchpairs' option. - */ - /* 'matchpairs' is "x:y,x:y" */ -! for (p = curbuf->b_p_mps; *p != NUL; p += 2) - { - #ifdef FEAT_RIGHTLEFT -! if (*p == c && (curwin->w_p_rl ^ p_ri)) -! break; - #endif -! p += 2; -! if (*p == c - #ifdef FEAT_RIGHTLEFT - && !(curwin->w_p_rl ^ p_ri) - #endif - ) - break; -! if (p[1] != ',') - return; - } - ---- 2428,2450 ---- - * Only show match for chars in the 'matchpairs' option. - */ - /* 'matchpairs' is "x:y,x:y" */ -! for (p = curbuf->b_p_mps; *p != NUL; ++p) - { -+ if (PTR2CHAR(p) == c - #ifdef FEAT_RIGHTLEFT -! && (curwin->w_p_rl ^ p_ri) - #endif -! ) -! break; -! p += MB_PTR2LEN(p) + 1; -! if (PTR2CHAR(p) == c - #ifdef FEAT_RIGHTLEFT - && !(curwin->w_p_rl ^ p_ri) - #endif - ) - break; -! p += MB_PTR2LEN(p); -! if (*p == NUL) - return; - } - -*** ../vim-7.3.768/src/testdir/test69.in 2010-08-15 21:57:29.000000000 +0200 ---- src/testdir/test69.in 2013-01-17 15:55:09.000000000 +0100 -*************** -*** 1,4 **** ---- 1,5 ---- - Test for multi-byte text formatting. -+ Also test, that 'mps' with multibyte chars works. - - STARTTEST - :so mbyte.vim -*************** -*** 134,139 **** ---- 135,149 ---- - } - - STARTTEST -+ /^{/+1 -+ :set mps+=u2018:u2019 -+ d% -+ ENDTEST -+ -+ { -+ ‘ two three ’ four -+ } -+ STARTTEST - :g/^STARTTEST/.,/^ENDTEST/d - :1;/^Results/,$wq! test.out - ENDTEST -*** ../vim-7.3.768/src/testdir/test69.ok 2010-08-15 21:57:29.000000000 +0200 ---- src/testdir/test69.ok 2013-01-17 15:55:09.000000000 +0100 -*************** -*** 140,142 **** ---- 140,146 ---- - a - } - -+ -+ { -+ four -+ } -*** ../vim-7.3.768/src/version.c 2013-01-17 15:36:54.000000000 +0100 ---- src/version.c 2013-01-17 15:55:49.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 769, - /**/ - --- -Microsoft's definition of a boolean: TRUE, FALSE, MAYBE -"Embrace and extend"...? - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.770 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.770 -Problem: Vim.h indentation is inconsistent. -Solution: Adjust the indentation. (Elias Diem) -Files: src/vim.h - - -*** ../vim-7.3.769/src/vim.h 2012-08-15 14:04:50.000000000 +0200 ---- src/vim.h 2013-01-17 17:12:54.000000000 +0100 -*************** -*** 104,110 **** - # endif - #endif - #if defined(MACOS_X) || defined(MACOS_CLASSIC) -! # define MACOS - #endif - #if defined(MACOS_X) && defined(MACOS_CLASSIC) - Error: To compile for both MACOS X and Classic use a Classic Carbon ---- 104,110 ---- - # endif - #endif - #if defined(MACOS_X) || defined(MACOS_CLASSIC) -! # define MACOS - #endif - #if defined(MACOS_X) && defined(MACOS_CLASSIC) - Error: To compile for both MACOS X and Classic use a Classic Carbon -*************** -*** 490,496 **** - # include <string.h> - # endif - # if defined(HAVE_STRINGS_H) && !defined(NO_STRINGS_WITH_STRING_H) -! # include <strings.h> - # endif - # ifdef HAVE_STAT_H - # include <stat.h> ---- 490,496 ---- - # include <string.h> - # endif - # if defined(HAVE_STRINGS_H) && !defined(NO_STRINGS_WITH_STRING_H) -! # include <strings.h> - # endif - # ifdef HAVE_STAT_H - # include <stat.h> -*************** -*** 515,536 **** - # include <stdarg.h> - #endif - -! # if defined(HAVE_SYS_SELECT_H) && \ - (!defined(HAVE_SYS_TIME_H) || defined(SYS_SELECT_WITH_SYS_TIME)) -! # include <sys/select.h> -! # endif - -! # ifndef HAVE_SELECT -! # ifdef HAVE_SYS_POLL_H -! # include <sys/poll.h> - # define HAVE_POLL -- # else -- # ifdef HAVE_POLL_H -- # include <poll.h> -- # define HAVE_POLL -- # endif - # endif - # endif - - /* ================ end of the header file puzzle =============== */ - ---- 515,536 ---- - # include <stdarg.h> - #endif - -! #if defined(HAVE_SYS_SELECT_H) && \ - (!defined(HAVE_SYS_TIME_H) || defined(SYS_SELECT_WITH_SYS_TIME)) -! # include <sys/select.h> -! #endif - -! #ifndef HAVE_SELECT -! # ifdef HAVE_SYS_POLL_H -! # include <sys/poll.h> -! # define HAVE_POLL -! # else -! # ifdef HAVE_POLL_H -! # include <poll.h> - # define HAVE_POLL - # endif - # endif -+ #endif - - /* ================ end of the header file puzzle =============== */ - -*************** -*** 1877,1884 **** - /* VIM_ATOM_NAME is the older Vim-specific selection type for X11. Still - * supported for when a mix of Vim versions is used. VIMENC_ATOM_NAME includes - * the encoding to support Vims using different 'encoding' values. */ -! #define VIM_ATOM_NAME "_VIM_TEXT" -! #define VIMENC_ATOM_NAME "_VIMENC_TEXT" - - /* Selection states for modeless selection */ - # define SELECT_CLEARED 0 ---- 1877,1884 ---- - /* VIM_ATOM_NAME is the older Vim-specific selection type for X11. Still - * supported for when a mix of Vim versions is used. VIMENC_ATOM_NAME includes - * the encoding to support Vims using different 'encoding' values. */ -! # define VIM_ATOM_NAME "_VIM_TEXT" -! # define VIMENC_ATOM_NAME "_VIMENC_TEXT" - - /* Selection states for modeless selection */ - # define SELECT_CLEARED 0 -*** ../vim-7.3.769/src/version.c 2013-01-17 17:01:57.000000000 +0100 ---- src/version.c 2013-01-17 17:16:45.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 770, - /**/ - --- -FIRST HEAD: All right! All right! We'll kill him first and then have tea and - biscuits. - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.771 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.771 (after 7.3.769) -Problem: Uninitialized variable. (Yasuhiro Matsumoto) -Solution: Set x2 to -1. -Files: src/option.c - - -*** ../vim-7.3.770/src/option.c 2013-01-17 17:01:56.000000000 +0100 ---- src/option.c 2013-01-17 17:31:56.000000000 +0100 -*************** -*** 6154,6160 **** - { - for (p = *varp; *p != NUL; ++p) - { -! int x2,x3 = -1; - - if (*p != NUL) - p += mb_ptr2len(p); ---- 6154,6161 ---- - { - for (p = *varp; *p != NUL; ++p) - { -! int x2 = -1; -! int x3 = -1; - - if (*p != NUL) - p += mb_ptr2len(p); -*************** -*** 6165,6172 **** - x3 = mb_ptr2char(p); - p += mb_ptr2len(p); - } -! if (x2 != ':' || x2 == -1 || x3 == -1 -! || (*p != NUL && *p != ',')) - { - errmsg = e_invarg; - break; ---- 6166,6172 ---- - x3 = mb_ptr2char(p); - p += mb_ptr2len(p); - } -! if (x2 != ':' || x3 == -1 || (*p != NUL && *p != ',')) - { - errmsg = e_invarg; - break; -*** ../vim-7.3.770/src/version.c 2013-01-17 17:17:21.000000000 +0100 ---- src/version.c 2013-01-17 17:37:24.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 771, - /**/ - --- - GALAHAD turns back. We see from his POV the lovely ZOOT standing by him - smiling enchantingly and a number of equally delectable GIRLIES draped - around in the seductively poulticed room. They look at him smilingly and - wave. - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.772 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.772 -Problem: Cursor is at the wrong location and below the end of the file - after doing substitutions with confirm flag: %s/x/y/c - (Dominique Pelle) -Solution: Update the cursor position. (Christian Brabandt & Dominique) -Files: src/ex_cmds.c - - -*** ../vim-7.3.771/src/ex_cmds.c 2013-01-17 14:09:39.000000000 +0100 ---- src/ex_cmds.c 2013-01-17 18:31:38.000000000 +0100 -*************** -*** 5200,5205 **** ---- 5200,5211 ---- - EMSG2(_(e_patnotf2), get_search_pat()); - } - -+ #ifdef FEAT_FOLDING -+ if (do_ask && hasAnyFolding(curwin)) -+ /* Cursor position may require updating */ -+ changed_window_setting(); -+ #endif -+ - vim_free(regmatch.regprog); - } - -*** ../vim-7.3.771/src/version.c 2013-01-17 17:37:31.000000000 +0100 ---- src/version.c 2013-01-17 18:32:56.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 772, - /**/ - --- -Linux is just like a wigwam: no Windows, no Gates and an Apache inside. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.773 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.773 (after 7.3.767) -Problem: Crash when OriginalFirstThunk is zero. -Solution: Skip items with OriginalFirstThunk not set. (Ken Takata) -Files: src/mbyte.c - - -*** ../vim-7.3.772/src/mbyte.c 2013-01-17 14:39:43.000000000 +0100 ---- src/mbyte.c 2013-01-19 13:59:21.000000000 +0100 -*************** -*** 4317,4322 **** ---- 4317,4324 ---- - .VirtualAddress); - for (; pImpDesc->FirstThunk; ++pImpDesc) - { -+ if (!pImpDesc->OriginalFirstThunk) -+ continue; - pIAT = (PIMAGE_THUNK_DATA)(pImage + pImpDesc->FirstThunk); - pINT = (PIMAGE_THUNK_DATA)(pImage + pImpDesc->OriginalFirstThunk); - for (; pIAT->u1.Function; ++pIAT, ++pINT) -*** ../vim-7.3.772/src/version.c 2013-01-17 18:33:58.000000000 +0100 ---- src/version.c 2013-01-19 14:01:50.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 773, - /**/ - --- -Experience is what you get when you don't get what you want. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.774 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.774 -Problem: Tiny GUI version misses console dialog feature. -Solution: Define FEAT_CON_DIALOG when apprpriate. (Christian Brabandt) -Files: src/feature.h, src/gui.h - - -*** ../vim-7.3.773/src/feature.h 2012-10-21 02:17:28.000000000 +0200 ---- src/feature.h 2013-01-23 13:33:52.000000000 +0100 -*************** -*** 792,797 **** ---- 792,806 ---- - #endif - - /* -+ * On some systems, when we compile with the GUI, we always use it. On Mac -+ * there is no terminal version, and on Windows we can't figure out how to -+ * fork one off with :gui. -+ */ -+ #if defined(FEAT_GUI_MSWIN) || (defined(FEAT_GUI_MAC) && !defined(MACOS_X_UNIX)) -+ # define ALWAYS_USE_GUI -+ #endif -+ -+ /* - * +dialog_gui Use GUI dialog. - * +dialog_con May use Console dialog. - * When none of these defined there is no dialog support. -*************** -*** 820,825 **** ---- 829,837 ---- - || defined(FEAT_GUI_GTK) || defined(FEAT_GUI_MSWIN) \ - || defined(FEAT_GUI_PHOTON) || defined(FEAT_GUI_MAC)) - # define FEAT_GUI_TEXTDIALOG -+ # ifndef ALWAYS_USE_GUI -+ # define FEAT_CON_DIALOG -+ # endif - #endif - - /* Mac specific thing: Codewarrior interface. */ -*** ../vim-7.3.773/src/gui.h 2011-06-26 04:48:56.000000000 +0200 ---- src/gui.h 2013-01-23 13:33:24.000000000 +0100 -*************** -*** 59,73 **** - #endif - - /* -- * On some systems, when we compile with the GUI, we always use it. On Mac -- * there is no terminal version, and on Windows we can't figure out how to -- * fork one off with :gui. -- */ -- #if defined(FEAT_GUI_MSWIN) || (defined(FEAT_GUI_MAC) && !defined(MACOS_X_UNIX)) -- # define ALWAYS_USE_GUI -- #endif -- -- /* - * On some systems scrolling needs to be done right away instead of in the - * main loop. - */ ---- 59,64 ---- -*** ../vim-7.3.773/src/version.c 2013-01-19 14:01:57.000000000 +0100 ---- src/version.c 2013-01-23 13:38:12.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 774, - /**/ - --- -Overflow on /dev/null, please empty the bit bucket. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.775 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.775 -Problem: Cygwin and Mingw builds miss dependency on gui_w48.c. -Solution: Add a build rule. (Ken Takata) -Files: src/Make_cyg.mak, src/Make_ming.mak - - -*** ../vim-7.3.774/src/Make_cyg.mak 2012-11-28 16:18:26.000000000 +0100 ---- src/Make_cyg.mak 2013-01-23 13:53:48.000000000 +0100 -*************** -*** 600,605 **** ---- 600,608 ---- - $(OUTDIR)/ex_eval.o: ex_eval.c $(INCL) ex_cmds.h - $(CC) -c $(CFLAGS) ex_eval.c -o $(OUTDIR)/ex_eval.o - -+ $(OUTDIR)/gui_w32.o: gui_w32.c gui_w48.c $(INCL) -+ $(CC) -c $(CFLAGS) gui_w32.c -o $(OUTDIR)/gui_w32.o -+ - $(OUTDIR)/if_cscope.o: if_cscope.c $(INCL) if_cscope.h - $(CC) -c $(CFLAGS) if_cscope.c -o $(OUTDIR)/if_cscope.o - -*** ../vim-7.3.774/src/Make_ming.mak 2012-11-28 16:18:26.000000000 +0100 ---- src/Make_ming.mak 2013-01-23 13:53:48.000000000 +0100 -*************** -*** 731,736 **** ---- 731,739 ---- - $(OUTDIR)/ex_eval.o: ex_eval.c $(INCL) ex_cmds.h - $(CC) -c $(CFLAGS) ex_eval.c -o $(OUTDIR)/ex_eval.o - -+ $(OUTDIR)/gui_w32.o: gui_w32.c gui_w48.c $(INCL) -+ $(CC) -c $(CFLAGS) gui_w32.c -o $(OUTDIR)/gui_w32.o -+ - $(OUTDIR)/if_cscope.o: if_cscope.c $(INCL) if_cscope.h - $(CC) -c $(CFLAGS) if_cscope.c -o $(OUTDIR)/if_cscope.o - -*** ../vim-7.3.774/src/version.c 2013-01-23 13:40:54.000000000 +0100 ---- src/version.c 2013-01-23 13:53:34.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 775, - /**/ - --- - ** Hello and Welcome to the Psychiatric Hotline ** -If you are obsessive-compulsive, please press 1 repeatedly. -If you are co-dependent, please ask someone to press 2. -If you have multiple personalities, please press 3, 4, 5 and 6. -If you are paranoid-delusional, we know who you are and what you want - - just stay on the line so we can trace the call. -If you are schizophrenic, listen carefully and a little voice will - tell you which number to press next. -If you are manic-depressive, it doesn't matter which number you press - - no one will answer. -If you suffer from panic attacks, push every button you can find. -If you are sane, please hold on - we have the rest of humanity on the - other line and they desparately want to ask you a few questions. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.776 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.776 -Problem: ml_get error when searching, caused by curwin not matching curbuf. -Solution: Avoid changing curbuf. (Lech Lorens) -Files: src/charset.c, src/eval.c, src/mark.c, src/proto/charset.pro, - src/proto/mark.pro, src/regexp.c, src/syntax.c - - -*** ../vim-7.3.775/src/charset.c 2012-05-25 11:56:06.000000000 +0200 ---- src/charset.c 2013-01-23 15:43:37.000000000 +0100 -*************** -*** 905,910 **** ---- 905,918 ---- - vim_iswordc(c) - int c; - { -+ return vim_iswordc_buf(c, curbuf); -+ } -+ -+ int -+ vim_iswordc_buf(c, buf) -+ int c; -+ buf_T *buf; -+ { - #ifdef FEAT_MBYTE - if (c >= 0x100) - { -*************** -*** 914,920 **** - return utf_class(c) >= 2; - } - #endif -! return (c > 0 && c < 0x100 && GET_CHARTAB(curbuf, c) != 0); - } - - /* ---- 922,928 ---- - return utf_class(c) >= 2; - } - #endif -! return (c > 0 && c < 0x100 && GET_CHARTAB(buf, c) != 0); - } - - /* -*************** -*** 933,939 **** - - #if defined(FEAT_SYN_HL) || defined(PROTO) - int -! vim_iswordc_buf(p, buf) - char_u *p; - buf_T *buf; - { ---- 941,947 ---- - - #if defined(FEAT_SYN_HL) || defined(PROTO) - int -! vim_iswordp_buf(p, buf) - char_u *p; - buf_T *buf; - { -*** ../vim-7.3.775/src/eval.c 2012-12-05 16:10:21.000000000 +0100 ---- src/eval.c 2013-01-23 14:24:08.000000000 +0100 -*************** -*** 18884,18890 **** - #endif - if (name[0] == '\'') /* mark */ - { -! pp = getmark_fnum(name[1], FALSE, fnum); - if (pp == NULL || pp == (pos_T *)-1 || pp->lnum <= 0) - return NULL; - return pp; ---- 18884,18890 ---- - #endif - if (name[0] == '\'') /* mark */ - { -! pp = getmark_buf_fnum(curbuf, name[1], FALSE, fnum); - if (pp == NULL || pp == (pos_T *)-1 || pp->lnum <= 0) - return NULL; - return pp; -*** ../vim-7.3.775/src/mark.c 2012-07-06 17:51:24.000000000 +0200 ---- src/mark.c 2013-01-23 14:24:16.000000000 +0100 -*************** -*** 304,310 **** - #endif - - /* -! * Find mark "c". - * If "changefile" is TRUE it's allowed to edit another file for '0, 'A, etc. - * If "fnum" is not NULL store the fnum there for '0, 'A etc., don't edit - * another file. ---- 304,310 ---- - #endif - - /* -! * Find mark "c" in buffer pointed to by "buf". - * If "changefile" is TRUE it's allowed to edit another file for '0, 'A, etc. - * If "fnum" is not NULL store the fnum there for '0, 'A etc., don't edit - * another file. -*************** -*** 315,329 **** - * - -1 if mark is in other file and jumped there (only if changefile is TRUE) - */ - pos_T * - getmark(c, changefile) - int c; - int changefile; - { -! return getmark_fnum(c, changefile, NULL); - } - - pos_T * -! getmark_fnum(c, changefile, fnum) - int c; - int changefile; - int *fnum; ---- 315,339 ---- - * - -1 if mark is in other file and jumped there (only if changefile is TRUE) - */ - pos_T * -+ getmark_buf(buf, c, changefile) -+ buf_T *buf; -+ int c; -+ int changefile; -+ { -+ return getmark_buf_fnum(buf, c, changefile, NULL); -+ } -+ -+ pos_T * - getmark(c, changefile) - int c; - int changefile; - { -! return getmark_buf_fnum(curbuf, c, changefile, NULL); - } - - pos_T * -! getmark_buf_fnum(buf, c, changefile, fnum) -! buf_T *buf; - int c; - int changefile; - int *fnum; -*************** -*** 351,365 **** - posp = &pos_copy; /* w_pcmark may be changed soon */ - } - else if (c == '"') /* to pos when leaving buffer */ -! posp = &(curbuf->b_last_cursor); - else if (c == '^') /* to where Insert mode stopped */ -! posp = &(curbuf->b_last_insert); - else if (c == '.') /* to where last change was made */ -! posp = &(curbuf->b_last_change); - else if (c == '[') /* to start of previous operator */ -! posp = &(curbuf->b_op_start); - else if (c == ']') /* to end of previous operator */ -! posp = &(curbuf->b_op_end); - else if (c == '{' || c == '}') /* to previous/next paragraph */ - { - pos_T pos; ---- 361,375 ---- - posp = &pos_copy; /* w_pcmark may be changed soon */ - } - else if (c == '"') /* to pos when leaving buffer */ -! posp = &(buf->b_last_cursor); - else if (c == '^') /* to where Insert mode stopped */ -! posp = &(buf->b_last_insert); - else if (c == '.') /* to where last change was made */ -! posp = &(buf->b_last_change); - else if (c == '[') /* to start of previous operator */ -! posp = &(buf->b_op_start); - else if (c == ']') /* to end of previous operator */ -! posp = &(buf->b_op_end); - else if (c == '{' || c == '}') /* to previous/next paragraph */ - { - pos_T pos; -*************** -*** 395,402 **** - #ifdef FEAT_VISUAL - else if (c == '<' || c == '>') /* start/end of visual area */ - { -! startp = &curbuf->b_visual.vi_start; -! endp = &curbuf->b_visual.vi_end; - if ((c == '<') == lt(*startp, *endp)) - posp = startp; - else ---- 405,412 ---- - #ifdef FEAT_VISUAL - else if (c == '<' || c == '>') /* start/end of visual area */ - { -! startp = &buf->b_visual.vi_start; -! endp = &buf->b_visual.vi_end; - if ((c == '<') == lt(*startp, *endp)) - posp = startp; - else -*************** -*** 404,410 **** - /* - * For Visual line mode, set mark at begin or end of line - */ -! if (curbuf->b_visual.vi_mode == 'V') - { - pos_copy = *posp; - posp = &pos_copy; ---- 414,420 ---- - /* - * For Visual line mode, set mark at begin or end of line - */ -! if (buf->b_visual.vi_mode == 'V') - { - pos_copy = *posp; - posp = &pos_copy; -*************** -*** 420,426 **** - #endif - else if (ASCII_ISLOWER(c)) /* normal named mark */ - { -! posp = &(curbuf->b_namedm[c - 'a']); - } - else if (ASCII_ISUPPER(c) || VIM_ISDIGIT(c)) /* named file mark */ - { ---- 430,436 ---- - #endif - else if (ASCII_ISLOWER(c)) /* normal named mark */ - { -! posp = &(buf->b_namedm[c - 'a']); - } - else if (ASCII_ISUPPER(c) || VIM_ISDIGIT(c)) /* named file mark */ - { -*************** -*** 435,441 **** - - if (fnum != NULL) - *fnum = namedfm[c].fmark.fnum; -! else if (namedfm[c].fmark.fnum != curbuf->b_fnum) - { - /* mark is in another file */ - posp = &pos_copy; ---- 445,451 ---- - - if (fnum != NULL) - *fnum = namedfm[c].fmark.fnum; -! else if (namedfm[c].fmark.fnum != buf->b_fnum) - { - /* mark is in another file */ - posp = &pos_copy; -*** ../vim-7.3.775/src/proto/charset.pro 2010-08-15 21:57:28.000000000 +0200 ---- src/proto/charset.pro 2013-01-23 15:43:25.000000000 +0100 -*************** -*** 19,26 **** - int win_linetabsize __ARGS((win_T *wp, char_u *p, colnr_T len)); - int vim_isIDc __ARGS((int c)); - int vim_iswordc __ARGS((int c)); - int vim_iswordp __ARGS((char_u *p)); -! int vim_iswordc_buf __ARGS((char_u *p, buf_T *buf)); - int vim_isfilec __ARGS((int c)); - int vim_isfilec_or_wc __ARGS((int c)); - int vim_isprintc __ARGS((int c)); ---- 19,27 ---- - int win_linetabsize __ARGS((win_T *wp, char_u *p, colnr_T len)); - int vim_isIDc __ARGS((int c)); - int vim_iswordc __ARGS((int c)); -+ int vim_iswordc_buf __ARGS((int c, buf_T *buf)); - int vim_iswordp __ARGS((char_u *p)); -! int vim_iswordp_buf __ARGS((char_u *p, buf_T *buf)); - int vim_isfilec __ARGS((int c)); - int vim_isfilec_or_wc __ARGS((int c)); - int vim_isprintc __ARGS((int c)); -*** ../vim-7.3.775/src/proto/mark.pro 2010-08-15 21:57:28.000000000 +0200 ---- src/proto/mark.pro 2013-01-23 14:24:23.000000000 +0100 -*************** -*** 5,12 **** - void checkpcmark __ARGS((void)); - pos_T *movemark __ARGS((int count)); - pos_T *movechangelist __ARGS((int count)); - pos_T *getmark __ARGS((int c, int changefile)); -! pos_T *getmark_fnum __ARGS((int c, int changefile, int *fnum)); - pos_T *getnextmark __ARGS((pos_T *startpos, int dir, int begin_line)); - void fmarks_check_names __ARGS((buf_T *buf)); - int check_mark __ARGS((pos_T *pos)); ---- 5,13 ---- - void checkpcmark __ARGS((void)); - pos_T *movemark __ARGS((int count)); - pos_T *movechangelist __ARGS((int count)); -+ pos_T *getmark_buf __ARGS((buf_T *buf, int c, int changefile)); - pos_T *getmark __ARGS((int c, int changefile)); -! pos_T *getmark_buf_fnum __ARGS((buf_T *buf, int c, int changefile, int *fnum)); - pos_T *getnextmark __ARGS((pos_T *startpos, int dir, int begin_line)); - void fmarks_check_names __ARGS((buf_T *buf)); - int check_mark __ARGS((pos_T *pos)); -*** ../vim-7.3.775/src/regexp.c 2011-07-20 17:58:14.000000000 +0200 ---- src/regexp.c 2013-01-23 14:19:15.000000000 +0100 -*************** -*** 3623,3629 **** - proftime_T *tm; /* timeout limit or NULL */ - { - long r; -- buf_T *save_curbuf = curbuf; - - reg_match = NULL; - reg_mmatch = rmp; ---- 3623,3628 ---- -*************** -*** 3638,3647 **** - #endif - ireg_maxcol = rmp->rmm_maxcol; - -- /* Need to switch to buffer "buf" to make vim_iswordc() work. */ -- curbuf = buf; - r = vim_regexec_both(NULL, col, tm); -- curbuf = save_curbuf; - - return r; - } ---- 3637,3643 ---- -*************** -*** 4185,4191 **** - int cmp = OPERAND(scan)[1]; - pos_T *pos; - -! pos = getmark(mark, FALSE); - if (pos == NULL /* mark doesn't exist */ - || pos->lnum <= 0 /* mark isn't set (in curbuf) */ - || (pos->lnum == reglnum + reg_firstlnum ---- 4181,4187 ---- - int cmp = OPERAND(scan)[1]; - pos_T *pos; - -! pos = getmark_buf(reg_buf, mark, FALSE); - if (pos == NULL /* mark doesn't exist */ - || pos->lnum <= 0 /* mark isn't set (in curbuf) */ - || (pos->lnum == reglnum + reg_firstlnum -*************** -*** 4315,4322 **** - #endif - else - { -! if (!vim_iswordc(c) -! || (reginput > regline && vim_iswordc(reginput[-1]))) - status = RA_NOMATCH; - } - break; ---- 4311,4318 ---- - #endif - else - { -! if (!vim_iswordc_buf(c, reg_buf) -! || (reginput > regline && vim_iswordc_buf(reginput[-1], reg_buf))) - status = RA_NOMATCH; - } - break; -*************** -*** 4339,4346 **** - #endif - else - { -! if (!vim_iswordc(reginput[-1]) -! || (reginput[0] != NUL && vim_iswordc(c))) - status = RA_NOMATCH; - } - break; /* Matched with EOW */ ---- 4335,4342 ---- - #endif - else - { -! if (!vim_iswordc_buf(reginput[-1], reg_buf) -! || (reginput[0] != NUL && vim_iswordc_buf(c, reg_buf))) - status = RA_NOMATCH; - } - break; /* Matched with EOW */ -*** ../vim-7.3.775/src/syntax.c 2012-10-21 21:25:17.000000000 +0200 ---- src/syntax.c 2013-01-23 14:19:15.000000000 +0100 -*************** -*** 1954,1962 **** - if (do_keywords) - { - line = syn_getcurline(); -! if (vim_iswordc_buf(line + current_col, syn_buf) - && (current_col == 0 -! || !vim_iswordc_buf(line + current_col - 1 - #ifdef FEAT_MBYTE - - (has_mbyte - ? (*mb_head_off)(line, line + current_col - 1) ---- 1954,1962 ---- - if (do_keywords) - { - line = syn_getcurline(); -! if (vim_iswordp_buf(line + current_col, syn_buf) - && (current_col == 0 -! || !vim_iswordp_buf(line + current_col - 1 - #ifdef FEAT_MBYTE - - (has_mbyte - ? (*mb_head_off)(line, line + current_col - 1) -*************** -*** 3280,3286 **** - #endif - ++kwlen; - } -! while (vim_iswordc_buf(kwp + kwlen, syn_buf)); - - if (kwlen > MAXKEYWLEN) - return 0; ---- 3280,3286 ---- - #endif - ++kwlen; - } -! while (vim_iswordp_buf(kwp + kwlen, syn_buf)); - - if (kwlen > MAXKEYWLEN) - return 0; -*** ../vim-7.3.775/src/version.c 2013-01-23 13:55:16.000000000 +0100 ---- src/version.c 2013-01-23 14:19:44.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 776, - /**/ - --- -Q: How does a UNIX Guru do Sex ? -A: unzip;strip;touch;finger;mount;fsck;more;yes;umount;sleep - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.777 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.777 -Problem: When building with Gnome locale gets reset. -Solution: Set locale after gnome_program_init(). (Christian Brabandt) -Files: src/gui_gtk_x11.c - - -*** ../vim-7.3.776/src/gui_gtk_x11.c 2012-05-18 17:03:14.000000000 +0200 ---- src/gui_gtk_x11.c 2013-01-23 15:58:14.000000000 +0100 -*************** -*** 3130,3137 **** ---- 3130,3145 ---- - * exits on failure, but that's a non-issue because we already called - * gtk_init_check() in gui_mch_init_check(). */ - if (using_gnome) -+ { - gnome_program_init(VIMPACKAGE, VIM_VERSION_SHORT, - LIBGNOMEUI_MODULE, gui_argc, gui_argv, NULL); -+ # if defined(FEAT_FLOAT) && defined(LC_NUMERIC) -+ /* Make sure strtod() uses a decimal point, not a comma. Gnome init -+ * may change it. */ -+ if (setlocale(LC_NUMERIC, NULL) != (char *) "C") -+ setlocale(LC_NUMERIC, "C"); -+ # endif -+ } - #endif - vim_free(gui_argv); - gui_argv = NULL; -*** ../vim-7.3.776/src/version.c 2013-01-23 15:53:08.000000000 +0100 ---- src/version.c 2013-01-23 15:56:21.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 777, - /**/ - --- - [clop clop] -GUARD #1: Halt! Who goes there? -ARTHUR: It is I, Arthur, son of Uther Pendragon, from the castle of - Camelot. King of the Britons, defeator of the Saxons, sovereign of - all England! -GUARD #1: Pull the other one! - The Quest for the Holy Grail (Monty Python) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.778 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.778 -Problem: Compiler error for adding up two pointers. (Titov Anatoly) -Solution: Add a type cast. (Ken Takata) -Files: src/mbyte.c - - -*** ../vim-7.3.777/src/mbyte.c 2013-01-19 14:01:57.000000000 +0100 ---- src/mbyte.c 2013-01-23 16:18:02.000000000 +0100 -*************** -*** 4325,4331 **** - { - if (IMAGE_SNAP_BY_ORDINAL(pINT->u1.Ordinal)) - continue; -! pImpName = (PIMAGE_IMPORT_BY_NAME)(pImage + pINT->u1.AddressOfData); - if (strcmp(pImpName->Name, funcname) == 0) - return (void *)pIAT->u1.Function; - } ---- 4325,4332 ---- - { - if (IMAGE_SNAP_BY_ORDINAL(pINT->u1.Ordinal)) - continue; -! pImpName = (PIMAGE_IMPORT_BY_NAME)(pImage -! + (UINT_PTR)(pINT->u1.AddressOfData)); - if (strcmp(pImpName->Name, funcname) == 0) - return (void *)pIAT->u1.Function; - } -*** ../vim-7.3.777/src/version.c 2013-01-23 16:00:05.000000000 +0100 ---- src/version.c 2013-01-23 16:18:40.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 778, - /**/ - --- -'I generally avoid temptation unless I can't resist it." - -- Mae West - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.779 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.779 -Problem: Backwards search lands in wrong place when started on a multibyte - character. -Solution: Do not set extra_col for a backwards search. (Sung Pae) -Files: src/search.c, src/testdir/test44.in, src/testdir/test44.ok - - -*** ../vim-7.3.778/src/search.c 2013-01-17 17:01:57.000000000 +0100 ---- src/search.c 2013-01-23 16:27:35.000000000 +0100 -*************** -*** 572,578 **** - extra_col = 0; - #ifdef FEAT_MBYTE - /* Watch out for the "col" being MAXCOL - 2, used in a closed fold. */ -! else if (has_mbyte && pos->lnum >= 1 && pos->lnum <= buf->b_ml.ml_line_count - && pos->col < MAXCOL - 2) - { - ptr = ml_get_buf(buf, pos->lnum, FALSE) + pos->col; ---- 572,579 ---- - extra_col = 0; - #ifdef FEAT_MBYTE - /* Watch out for the "col" being MAXCOL - 2, used in a closed fold. */ -! else if (dir != BACKWARD && has_mbyte -! && pos->lnum >= 1 && pos->lnum <= buf->b_ml.ml_line_count - && pos->col < MAXCOL - 2) - { - ptr = ml_get_buf(buf, pos->lnum, FALSE) + pos->col; -*** ../vim-7.3.778/src/testdir/test44.in 2011-07-20 17:58:14.000000000 +0200 ---- src/testdir/test44.in 2013-01-23 16:22:38.000000000 +0100 -*************** -*** 29,34 **** ---- 29,37 ---- - x/\%d21879b - x/ [[=A=]]* [[=B=]]* [[=C=]]* [[=D=]]* [[=E=]]* [[=F=]]* [[=G=]]* [[=H=]]* [[=I=]]* [[=J=]]* [[=K=]]* [[=L=]]* [[=M=]]* [[=N=]]* [[=O=]]* [[=P=]]* [[=Q=]]* [[=R=]]* [[=S=]]* [[=T=]]* [[=U=]]* [[=V=]]* [[=W=]]* [[=X=]]* [[=Y=]]* [[=Z=]]*/e - x/ [[=a=]]* [[=b=]]* [[=c=]]* [[=d=]]* [[=e=]]* [[=f=]]* [[=g=]]* [[=h=]]* [[=i=]]* [[=j=]]* [[=k=]]* [[=l=]]* [[=m=]]* [[=n=]]* [[=o=]]* [[=p=]]* [[=q=]]* [[=r=]]* [[=s=]]* [[=t=]]* [[=u=]]* [[=v=]]* [[=w=]]* [[=x=]]* [[=y=]]* [[=z=]]*/e -+ x:" Test backwards search from a multi-byte char -+ /x -+ x?. - x:?^1?,$w! test.out - :e! test.out - G:put =matchstr(\"×בגד\", \".\", 0, 2) " ב -*************** -*** 57,59 **** ---- 60,63 ---- - g aå•·bb - h AÀÃÂÃÄÅĀĂĄÇÇžÇ áº¢ BḂḆ CÇĆĈĊČ DÄŽÄḊḎḠEÈÉÊËĒĔĖĘĚẺẼ FḞ GÄœÄžÄ Ä¢Ç¤Ç¦Ç´á¸ HĤĦḢḦḨ IÃŒÃÃŽÃĨĪĬĮİÇỈ JÄ´ KĶǨḰḴ LĹĻĽĿÅḺ MḾṀ NÑŃŅŇṄṈ OÃ’Ã“Ã”Ã•Ã–Ã˜ÅŒÅŽÅÆ ǑǪǬỎ PṔṖ Q RŔŖŘṘṞ SŚŜŞŠṠTŢŤŦṪṮ UÙÚÛÜŨŪŬŮŰŲƯǓỦ Vá¹¼ WŴẀẂẄẆ XẊẌ YÃŶŸẎỲỶỸ ZŹŻŽƵáºáº” - i aà áâãäåÄăąǎǟǡả bḃḇ cÃ§Ä‡Ä‰Ä‹Ä dÄđḋá¸á¸‘ eèéêëēĕėęěẻẽ fḟ gÄğġģǥǧǵḡ hĥħḣḧḩẖ iìÃîïĩīÄįÇỉ jĵǰ kķǩḱḵ lĺļľŀłḻ mḿṠnñńņňʼnṅṉ oòóôõöøÅÅőơǒǫÇá» pṕṗ q rŕŗřṙṟ sÅ›Åşšṡ tţťŧṫṯẗ uùúûüũūÅůűųưǔủ vá¹½ wŵáºáºƒáº…ẇẘ xẋẠyýÿŷáºáº™á»³á»·á»¹ zźżžƶẑẕ -+ j 0123â¤x -*** ../vim-7.3.778/src/testdir/test44.ok 2011-07-20 17:58:14.000000000 +0200 ---- src/testdir/test44.ok 2013-01-23 16:22:38.000000000 +0100 -*************** -*** 16,21 **** ---- 16,22 ---- - g abb - h AÀÃÂÃÄÅĀĂĄÇÇžÇ áº¢ BḂḆ CÇĆĈĊČ DÄŽÄḊḎḠEÈÉÊËĒĔĖĘĚẺẼ FḞ GÄœÄžÄ Ä¢Ç¤Ç¦Ç´á¸ HĤĦḢḦḨ IÃŒÃÃŽÃĨĪĬĮİÇỈ JÄ´ KĶǨḰḴ LĹĻĽĿÅḺ MḾṀ NÑŃŅŇṄṈ OÃ’Ã“Ã”Ã•Ã–Ã˜ÅŒÅŽÅÆ ǑǪǬỎ PṔṖ Q RŔŖŘṘṞ SŚŜŞŠṠTŢŤŦṪṮ UÙÚÛÜŨŪŬŮŰŲƯǓỦ Vá¹¼ WŴẀẂẄẆ XẊẌ YÃŶŸẎỲỶỸ ZŹŻŽƵẠ- i aà áâãäåÄăąǎǟǡả bḃḇ cÃ§Ä‡Ä‰Ä‹Ä dÄđḋá¸á¸‘ eèéêëēĕėęěẻẽ fḟ gÄğġģǥǧǵḡ hĥħḣḧḩẖ iìÃîïĩīÄįÇỉ jĵǰ kķǩḱḵ lĺļľŀłḻ mḿṠnñńņňʼnṅṉ oòóôõöøÅÅőơǒǫÇá» pṕṗ q rŕŗřṙṟ sÅ›Åşšṡ tţťŧṫṯẗ uùúûüũūÅůűųưǔủ vá¹½ wŵáºáºƒáº…ẇẘ xẋẠyýÿŷáºáº™á»³á»·á»¹ zźżžƶẑ -+ j 012⤠- ב - בג - × -*** ../vim-7.3.778/src/version.c 2013-01-23 16:19:17.000000000 +0100 ---- src/version.c 2013-01-23 16:39:23.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 779, - /**/ - --- -Veni, Vidi, Video -- I came, I saw, I taped what I saw. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.780 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.780 -Problem: char2nr() and nr2char() always use 'encoding'. -Solution: Add argument to use utf-8 characters. (Yasuhiro Matsumoto) -Files: runtime/doc/eval.txt, src/eval.c - - -*** ../vim-7.3.779/runtime/doc/eval.txt 2012-12-05 16:10:21.000000000 +0100 ---- runtime/doc/eval.txt 2013-01-23 17:00:52.000000000 +0100 -*************** -*** 1705,1711 **** - any call {func} with arguments {arglist} - ceil( {expr}) Float round {expr} up - changenr() Number current change number -! char2nr( {expr}) Number ASCII value of first char in {expr} - cindent( {lnum}) Number C indent for line {lnum} - clearmatches() none clear all matches - col( {expr}) Number column nr of cursor or mark ---- 1716,1722 ---- - any call {func} with arguments {arglist} - ceil( {expr}) Float round {expr} up - changenr() Number current change number -! char2nr( {expr}[, {utf8}]) Number ASCII/UTF8 value of first char in {expr} - cindent( {lnum}) Number C indent for line {lnum} - clearmatches() none clear all matches - col( {expr}) Number column nr of cursor or mark -*************** -*** 1862,1868 **** - mode( [expr]) String current editing mode - mzeval( {expr}) any evaluate |MzScheme| expression - nextnonblank( {lnum}) Number line nr of non-blank line >= {lnum} -! nr2char( {expr}) String single char with ASCII value {expr} - or( {expr}, {expr}) Number bitwise OR - pathshorten( {expr}) String shorten directory names in a path - pow( {x}, {y}) Float {x} to the power of {y} ---- 1873,1879 ---- - mode( [expr]) String current editing mode - mzeval( {expr}) any evaluate |MzScheme| expression - nextnonblank( {lnum}) Number line nr of non-blank line >= {lnum} -! nr2char( {expr}[, {utf8}]) String single char with ASCII/UTF8 value {expr} - or( {expr}, {expr}) Number bitwise OR - pathshorten( {expr}) String shorten directory names in a path - pow( {x}, {y}) Float {x} to the power of {y} -*************** -*** 2282,2295 **** - redo it is the number of the redone change. After undo it is - one less than the number of the undone change. - -! char2nr({expr}) *char2nr()* - Return number value of the first char in {expr}. Examples: > - char2nr(" ") returns 32 - char2nr("ABC") returns 65 -! < The current 'encoding' is used. Example for "utf-8": > - char2nr("á") returns 225 - char2nr("á"[0]) returns 195 -! < |nr2char()| does the opposite. - - cindent({lnum}) *cindent()* - Get the amount of indent for line {lnum} according the C ---- 2294,2310 ---- - redo it is the number of the redone change. After undo it is - one less than the number of the undone change. - -! char2nr({expr}[, {utf8}]) *char2nr()* - Return number value of the first char in {expr}. Examples: > - char2nr(" ") returns 32 - char2nr("ABC") returns 65 -! < When {utf8} is omitted or zero, the current 'encoding' is used. -! Example for "utf-8": > - char2nr("á") returns 225 - char2nr("á"[0]) returns 195 -! < With {utf8} set to 1, always treat as utf-8 characters. -! A combining character is a separate character. -! |nr2char()| does the opposite. - - cindent({lnum}) *cindent()* - Get the amount of indent for line {lnum} according the C -*** ../vim-7.3.779/src/eval.c 2013-01-23 15:53:08.000000000 +0100 ---- src/eval.c 2013-01-23 16:57:48.000000000 +0100 -*************** -*** 7854,7860 **** - {"ceil", 1, 1, f_ceil}, - #endif - {"changenr", 0, 0, f_changenr}, -! {"char2nr", 1, 1, f_char2nr}, - {"cindent", 1, 1, f_cindent}, - {"clearmatches", 0, 0, f_clearmatches}, - {"col", 1, 1, f_col}, ---- 7854,7860 ---- - {"ceil", 1, 1, f_ceil}, - #endif - {"changenr", 0, 0, f_changenr}, -! {"char2nr", 1, 2, f_char2nr}, - {"cindent", 1, 1, f_cindent}, - {"clearmatches", 0, 0, f_clearmatches}, - {"col", 1, 1, f_col}, -*************** -*** 8003,8009 **** - {"mzeval", 1, 1, f_mzeval}, - #endif - {"nextnonblank", 1, 1, f_nextnonblank}, -! {"nr2char", 1, 1, f_nr2char}, - {"or", 2, 2, f_or}, - {"pathshorten", 1, 1, f_pathshorten}, - #ifdef FEAT_FLOAT ---- 8003,8009 ---- - {"mzeval", 1, 1, f_mzeval}, - #endif - {"nextnonblank", 1, 1, f_nextnonblank}, -! {"nr2char", 1, 2, f_nr2char}, - {"or", 2, 2, f_or}, - {"pathshorten", 1, 1, f_pathshorten}, - #ifdef FEAT_FLOAT -*************** -*** 9303,9309 **** - { - #ifdef FEAT_MBYTE - if (has_mbyte) -! rettv->vval.v_number = (*mb_ptr2char)(get_tv_string(&argvars[0])); - else - #endif - rettv->vval.v_number = get_tv_string(&argvars[0])[0]; ---- 9303,9319 ---- - { - #ifdef FEAT_MBYTE - if (has_mbyte) -! { -! int utf8 = 0; -! -! if (argvars[1].v_type != VAR_UNKNOWN) -! utf8 = get_tv_number_chk(&argvars[1], NULL); -! -! if (utf8) -! rettv->vval.v_number = (*utf_ptr2char)(get_tv_string(&argvars[0])); -! else -! rettv->vval.v_number = (*mb_ptr2char)(get_tv_string(&argvars[0])); -! } - else - #endif - rettv->vval.v_number = get_tv_string(&argvars[0])[0]; -*************** -*** 14360,14366 **** - - #ifdef FEAT_MBYTE - if (has_mbyte) -! buf[(*mb_char2bytes)((int)get_tv_number(&argvars[0]), buf)] = NUL; - else - #endif - { ---- 14370,14385 ---- - - #ifdef FEAT_MBYTE - if (has_mbyte) -! { -! int utf8 = 0; -! -! if (argvars[1].v_type != VAR_UNKNOWN) -! utf8 = get_tv_number_chk(&argvars[1], NULL); -! if (utf8) -! buf[(*utf_char2bytes)((int)get_tv_number(&argvars[0]), buf)] = NUL; -! else -! buf[(*mb_char2bytes)((int)get_tv_number(&argvars[0]), buf)] = NUL; -! } - else - #endif - { -*** ../vim-7.3.779/src/version.c 2013-01-23 16:43:07.000000000 +0100 ---- src/version.c 2013-01-23 17:06:36.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 780, - /**/ - --- -A real patriot is the fellow who gets a parking ticket and rejoices -that the system works. - - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.781 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.781 -Problem: Drawing with 'guifontwide' can be slow. -Solution: Draw multiple characters at a time. (Taro Muraoka) -Files: src/gui.c - - -*** ../vim-7.3.780/src/gui.c 2012-11-20 12:03:02.000000000 +0100 ---- src/gui.c 2013-01-23 17:28:48.000000000 +0100 -*************** -*** 2380,2386 **** - int cl; /* byte length of current char */ - int comping; /* current char is composing */ - int scol = col; /* screen column */ -! int dowide; /* use 'guifontwide' */ - - /* Break the string at a composing character, it has to be drawn on - * top of the previous character. */ ---- 2380,2388 ---- - int cl; /* byte length of current char */ - int comping; /* current char is composing */ - int scol = col; /* screen column */ -! int curr_wide; /* use 'guifontwide' */ -! int prev_wide = FALSE; -! int wide_changed; - - /* Break the string at a composing character, it has to be drawn on - * top of the previous character. */ -*************** -*** 2395,2403 **** - && fontset == NOFONTSET - # endif - && gui.wide_font != NOFONT) -! dowide = TRUE; - else -! dowide = FALSE; - comping = utf_iscomposing(c); - if (!comping) /* count cells from non-composing chars */ - cells += cn; ---- 2397,2405 ---- - && fontset == NOFONTSET - # endif - && gui.wide_font != NOFONT) -! curr_wide = TRUE; - else -! curr_wide = FALSE; - comping = utf_iscomposing(c); - if (!comping) /* count cells from non-composing chars */ - cells += cn; -*************** -*** 2405,2413 **** - if (cl == 0) /* hit end of string */ - len = i + cl; /* len must be wrong "cannot happen" */ - -! /* print the string so far if it's the last character or there is - * a composing character. */ -! if (i + cl >= len || (comping && i > start) || dowide - # if defined(FEAT_GUI_X11) - || (cn > 1 - # ifdef FEAT_XFONTSET ---- 2407,2417 ---- - if (cl == 0) /* hit end of string */ - len = i + cl; /* len must be wrong "cannot happen" */ - -! wide_changed = curr_wide != prev_wide; -! -! /* Print the string so far if it's the last character or there is - * a composing character. */ -! if (i + cl >= len || (comping && i > start) || wide_changed - # if defined(FEAT_GUI_X11) - || (cn > 1 - # ifdef FEAT_XFONTSET -*************** -*** 2419,2443 **** - # endif - ) - { -! if (comping || dowide) - thislen = i - start; - else - thislen = i - start + cl; - if (thislen > 0) - { - gui_mch_draw_string(gui.row, scol, s + start, thislen, - draw_flags); - start += thislen; - } - scol += cells; - cells = 0; -! if (dowide) - { -! gui_mch_set_font(gui.wide_font); -! gui_mch_draw_string(gui.row, scol - cn, -! s + start, cl, draw_flags); -! gui_mch_set_font(font); -! start += cl; - } - - # if defined(FEAT_GUI_X11) ---- 2423,2450 ---- - # endif - ) - { -! if (comping || wide_changed) - thislen = i - start; - else - thislen = i - start + cl; - if (thislen > 0) - { -+ if (prev_wide) -+ gui_mch_set_font(gui.wide_font); - gui_mch_draw_string(gui.row, scol, s + start, thislen, - draw_flags); -+ if (prev_wide) -+ gui_mch_set_font(font); - start += thislen; - } - scol += cells; - cells = 0; -! /* Adjust to not draw a character which width is changed -! * against with last one. */ -! if (wide_changed && !comping) - { -! scol -= cn; -! cl = 0; - } - - # if defined(FEAT_GUI_X11) -*************** -*** 2447,2453 **** - # ifdef FEAT_XFONTSET - && fontset == NOFONTSET - # endif -! && !dowide) - gui_mch_draw_string(gui.row, scol - 1, (char_u *)" ", - 1, draw_flags); - # endif ---- 2454,2460 ---- - # ifdef FEAT_XFONTSET - && fontset == NOFONTSET - # endif -! && !wide_changed) - gui_mch_draw_string(gui.row, scol - 1, (char_u *)" ", - 1, draw_flags); - # endif -*************** -*** 2465,2470 **** ---- 2472,2478 ---- - # endif - start = i + cl; - } -+ prev_wide = curr_wide; - } - /* The stuff below assumes "len" is the length in screen columns. */ - len = scol - col; -*** ../vim-7.3.780/src/version.c 2013-01-23 17:15:25.000000000 +0100 ---- src/version.c 2013-01-23 17:28:17.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 781, - /**/ - --- -GUARD #1: Where'd you get the coconut? -ARTHUR: We found them. -GUARD #1: Found them? In Mercea? The coconut's tropical! -ARTHUR: What do you mean? -GUARD #1: Well, this is a temperate zone. - The Quest for the Holy Grail (Monty Python) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.782 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.782 -Problem: Windows: IME composition may use a wrong font. -Solution: Use 'guifontwide' for IME when it is set. (Taro Muraoka) -Files: runtime/doc/options.txt, src/gui.c, src/gui_w48.c, - src/proto/gui_w16.pro, src/proto/gui_w32.pro - - -*** ../vim-7.3.781/runtime/doc/options.txt 2012-08-15 16:20:59.000000000 +0200 ---- runtime/doc/options.txt 2013-01-23 18:24:48.000000000 +0100 -*************** -*** 3518,3523 **** ---- 3560,3569 ---- - to set 'guifontwide' at all unless you want to override the choice - made by Pango/Xft. - -+ Windows +multibyte only: *guifontwide_win_mbyte* -+ -+ If set and vaild, 'guifontwide' is used for IME instead of 'guifont'. -+ - *'guiheadroom'* *'ghr'* - 'guiheadroom' 'ghr' number (default 50) - global -*** ../vim-7.3.781/src/gui.c 2013-01-23 17:43:52.000000000 +0100 ---- src/gui.c 2013-01-23 18:24:48.000000000 +0100 -*************** -*** 1002,1007 **** ---- 1002,1010 ---- - else - #endif - gui.wide_font = font; -+ #ifdef FEAT_GUI_MSWIN -+ gui_mch_wide_font_changed(); -+ #endif - return OK; - } - #endif -*** ../vim-7.3.781/src/gui_w48.c 2012-12-16 12:50:33.000000000 +0100 ---- src/gui_w48.c 2013-01-23 18:32:45.000000000 +0100 -*************** -*** 323,332 **** ---- 323,337 ---- - - /* - * For control IME. -+ * -+ * These LOGFONT used for IME. - */ - #ifdef FEAT_MBYTE - # ifdef USE_IM_CONTROL -+ /* holds LOGFONT for 'guifontwide' if available, otherwise 'guifont' */ - static LOGFONT norm_logfont; -+ /* holds LOGFONT for 'guifont' always. */ -+ static LOGFONT sub_logfont; - # endif - #endif - -*************** -*** 3090,3095 **** ---- 3095,3133 ---- - return res; - } - -+ -+ #ifdef FEAT_MBYTE_IME -+ /* -+ * Set correct LOGFONT to IME. Use 'guifontwide' if available, otherwise use -+ * 'guifont' -+ */ -+ static void -+ update_im_font() -+ { -+ LOGFONT lf_wide; -+ -+ if (p_guifontwide != NULL && *p_guifontwide != NUL -+ && get_logfont(&lf_wide, p_guifontwide, NULL, TRUE) == OK) -+ norm_logfont = lf_wide; -+ else -+ norm_logfont = sub_logfont; -+ im_set_font(&norm_logfont); -+ } -+ #endif -+ -+ #ifdef FEAT_MBYTE -+ /* -+ * Handler of gui.wide_font (p_guifontwide) changed notification. -+ */ -+ void -+ gui_mch_wide_font_changed() -+ { -+ # ifdef FEAT_MBYTE_IME -+ update_im_font(); -+ # endif -+ } -+ #endif -+ - /* - * Initialise vim to use the font with the given name. - * Return FAIL if the font could not be loaded, OK otherwise. -*************** -*** 3112,3120 **** - font_name = lf.lfFaceName; - #if defined(FEAT_MBYTE_IME) || defined(GLOBAL_IME) - norm_logfont = lf; - #endif - #ifdef FEAT_MBYTE_IME -! im_set_font(&lf); - #endif - gui_mch_free_font(gui.norm_font); - gui.norm_font = font; ---- 3150,3159 ---- - font_name = lf.lfFaceName; - #if defined(FEAT_MBYTE_IME) || defined(GLOBAL_IME) - norm_logfont = lf; -+ sub_logfont = lf; - #endif - #ifdef FEAT_MBYTE_IME -! update_im_font(); - #endif - gui_mch_free_font(gui.norm_font); - gui.norm_font = font; -*** ../vim-7.3.781/src/proto/gui_w16.pro 2011-01-17 20:08:03.000000000 +0100 ---- src/proto/gui_w16.pro 2013-01-23 18:24:48.000000000 +0100 -*************** -*** 50,55 **** ---- 50,56 ---- - void gui_mch_insert_lines __ARGS((int row, int num_lines)); - void gui_mch_exit __ARGS((int rc)); - int gui_mch_init_font __ARGS((char_u *font_name, int fontset)); -+ void gui_mch_wide_font_changed __ARGS((void)); - int gui_mch_maximized __ARGS((void)); - void gui_mch_newfont __ARGS((void)); - void gui_mch_settitle __ARGS((char_u *title, char_u *icon)); -*** ../vim-7.3.781/src/proto/gui_w32.pro 2011-01-17 20:08:03.000000000 +0100 ---- src/proto/gui_w32.pro 2013-01-23 18:24:48.000000000 +0100 -*************** -*** 50,55 **** ---- 50,56 ---- - void gui_mch_insert_lines __ARGS((int row, int num_lines)); - void gui_mch_exit __ARGS((int rc)); - int gui_mch_init_font __ARGS((char_u *font_name, int fontset)); -+ void gui_mch_wide_font_changed __ARGS((void)); - int gui_mch_maximized __ARGS((void)); - void gui_mch_newfont __ARGS((void)); - void gui_mch_settitle __ARGS((char_u *title, char_u *icon)); -*** ../vim-7.3.781/src/version.c 2013-01-23 17:43:52.000000000 +0100 ---- src/version.c 2013-01-23 18:25:33.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 782, - /**/ - --- -"A mouse can be just as dangerous as a bullet or a bomb." - (US Representative Lamar Smith, R-Texas) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.783 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.783 -Problem: Crash when mark is not set. (Dominique Pelle) -Solution: Check for NULL. -Files: src/normal.c - - -*** ../vim-7.3.782/src/normal.c 2013-01-17 13:24:00.000000000 +0100 ---- src/normal.c 2013-01-24 20:57:53.000000000 +0100 -*************** -*** 7552,7557 **** ---- 7552,7558 ---- - #endif - #ifdef FEAT_FOLDING - if (cap->oap->op_type == OP_NOP -+ && pos != NULL - && (pos == (pos_T *)-1 || !equalpos(old_cursor, *pos)) - && (fdo_flags & FDO_MARK) - && old_KeyTyped) -*** ../vim-7.3.782/src/version.c 2013-01-23 18:37:31.000000000 +0100 ---- src/version.c 2013-01-24 20:58:36.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 783, - /**/ - --- -Shit makes the flowers grow and that's beautiful - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.784 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.784 (after 7.3.781) -Problem: Error when 'guifontwide' has a comma. -Solution: Use gui.wide_font. (Taro Muraoka) -Files: src/gui_w48.c - - -*** ../vim-7.3.783/src/gui_w48.c 2013-01-23 18:37:31.000000000 +0100 ---- src/gui_w48.c 2013-01-25 19:26:23.000000000 +0100 -*************** -*** 3107,3113 **** - LOGFONT lf_wide; - - if (p_guifontwide != NULL && *p_guifontwide != NUL -! && get_logfont(&lf_wide, p_guifontwide, NULL, TRUE) == OK) - norm_logfont = lf_wide; - else - norm_logfont = sub_logfont; ---- 3107,3114 ---- - LOGFONT lf_wide; - - if (p_guifontwide != NULL && *p_guifontwide != NUL -! && gui.wide_font != NOFONT -! && GetObject((HFONT)gui.wide_font, sizeof(lf_wide), &lf_wide)) - norm_logfont = lf_wide; - else - norm_logfont = sub_logfont; -*** ../vim-7.3.783/src/version.c 2013-01-24 21:00:15.000000000 +0100 ---- src/version.c 2013-01-25 19:27:52.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 784, - /**/ - --- -CUSTOMER: You're not fooling anyone y'know. Look, isn't there something - you can do? -DEAD PERSON: I feel happy... I feel happy. - [whop] -CUSTOMER: Ah, thanks very much. -MORTICIAN: Not at all. See you on Thursday. -CUSTOMER: Right. - The Quest for the Holy Grail (Monty Python) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.785 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.785 (after 7.3.776) -Problem: Crash with specific use of search pattern. -Solution: Initialize reg_buf to curbuf. -Files: src/regexp.c - - -*** ../vim-7.3.784/src/regexp.c 2013-01-23 15:53:08.000000000 +0100 ---- src/regexp.c 2013-01-25 20:04:14.000000000 +0100 -*************** -*** 3413,3419 **** - * reg_startpos <invalid> reg_mmatch->startpos - * reg_endpos <invalid> reg_mmatch->endpos - * reg_win NULL window in which to search -! * reg_buf <invalid> buffer in which to search - * reg_firstlnum <invalid> first line in which to search - * reg_maxline 0 last line nr - * reg_line_lbr FALSE or TRUE FALSE ---- 3413,3419 ---- - * reg_startpos <invalid> reg_mmatch->startpos - * reg_endpos <invalid> reg_mmatch->endpos - * reg_win NULL window in which to search -! * reg_buf curbuf buffer in which to search - * reg_firstlnum <invalid> first line in which to search - * reg_maxline 0 last line nr - * reg_line_lbr FALSE or TRUE FALSE -*************** -*** 3571,3576 **** ---- 3571,3577 ---- - reg_mmatch = NULL; - reg_maxline = 0; - reg_line_lbr = FALSE; -+ reg_buf = curbuf; - reg_win = NULL; - ireg_ic = rmp->rm_ic; - #ifdef FEAT_MBYTE -*************** -*** 3595,3600 **** ---- 3596,3602 ---- - reg_mmatch = NULL; - reg_maxline = 0; - reg_line_lbr = TRUE; -+ reg_buf = curbuf; - reg_win = NULL; - ireg_ic = rmp->rm_ic; - #ifdef FEAT_MBYTE -*************** -*** 4311,4318 **** - #endif - else - { -! if (!vim_iswordc_buf(c, reg_buf) -! || (reginput > regline && vim_iswordc_buf(reginput[-1], reg_buf))) - status = RA_NOMATCH; - } - break; ---- 4313,4320 ---- - #endif - else - { -! if (!vim_iswordc_buf(c, reg_buf) || (reginput > regline -! && vim_iswordc_buf(reginput[-1], reg_buf))) - status = RA_NOMATCH; - } - break; -*************** -*** 7135,7140 **** ---- 7137,7143 ---- - reg_match = rmp; - reg_mmatch = NULL; - reg_maxline = 0; -+ reg_buf = curbuf; - return vim_regsub_both(source, dest, copy, magic, backslash); - } - #endif -*** ../vim-7.3.784/src/version.c 2013-01-25 19:28:34.000000000 +0100 ---- src/version.c 2013-01-25 20:09:30.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 785, - /**/ - --- -ARTHUR: Well, I can't just call you `Man'. -DENNIS: Well, you could say `Dennis'. -ARTHUR: Well, I didn't know you were called `Dennis.' -DENNIS: Well, you didn't bother to find out, did you? - The Quest for the Holy Grail (Monty Python) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.786 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.786 -Problem: Python threads don't run in the background (issue 103). -Solution: Move the statements to manipulate thread state. -Files: src/if_python.c - - -*** ../vim-7.3.785/src/if_python.c 2012-10-21 01:46:56.000000000 +0200 ---- src/if_python.c 2013-01-30 11:38:06.000000000 +0100 -*************** -*** 740,751 **** - #else - PyMac_Initialize(); - #endif -! /* Initialise threads, and save the state using PyGILState_Ensure. -! * Without the call to PyGILState_Ensure, thread specific state (such -! * as the system trace hook), will be lost between invocations of -! * Python code. */ - PyEval_InitThreads(); -- pygilstate = PyGILState_Ensure(); - #ifdef DYNAMIC_PYTHON - get_exceptions(); - #endif ---- 740,750 ---- - #else - PyMac_Initialize(); - #endif -! /* Initialise threads, and below save the state using -! * PyGILState_Ensure. Without the call to PyGILState_Ensure, thread -! * specific state (such as the system trace hook), will be lost -! * between invocations of Python code. */ - PyEval_InitThreads(); - #ifdef DYNAMIC_PYTHON - get_exceptions(); - #endif -*************** -*** 756,761 **** ---- 755,764 ---- - if (PythonMod_Init()) - goto fail; - -+ /* The first python thread is vim's, release the lock. */ -+ Python_SaveThread(); -+ pygilstate = PyGILState_Ensure(); -+ - globals = PyModule_GetDict(PyImport_AddModule("__main__")); - - /* Remove the element from sys.path that was added because of our -*************** -*** 764,771 **** - * the current directory in sys.path. */ - PyRun_SimpleString("import sys; sys.path = filter(lambda x: x != '/must>not&exist', sys.path)"); - -! /* the first python thread is vim's, release the lock */ -! Python_SaveThread(); - - initialised = 1; - } ---- 767,773 ---- - * the current directory in sys.path. */ - PyRun_SimpleString("import sys; sys.path = filter(lambda x: x != '/must>not&exist', sys.path)"); - -! PyGILState_Release(pygilstate); - - initialised = 1; - } -*** ../vim-7.3.785/src/version.c 2013-01-25 20:10:58.000000000 +0100 ---- src/version.c 2013-01-30 11:44:04.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 786, - /**/ - --- -ARTHUR: I command you as King of the Britons to stand aside! -BLACK KNIGHT: I move for no man. - The Quest for the Holy Grail (Monty Python) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.787 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.787 -Problem: With 'relativenumber' set it is not possible to see the absolute - line number. -Solution: For the cursor line show the absolute line number instead of a - zero. (Nazri Ramliy) -Files: src/screen.c - - -*** ../vim-7.3.786/src/screen.c 2012-12-05 16:10:21.000000000 +0100 ---- src/screen.c 2013-01-30 12:29:33.000000000 +0100 -*************** -*** 2319,2324 **** ---- 2319,2325 ---- - { - int w = number_width(wp); - long num; -+ char *fmt = "%*ld "; - - if (len > w + 1) - len = w + 1; -*************** -*** 2327,2336 **** - /* 'number' */ - num = (long)lnum; - else - /* 'relativenumber', don't use negative numbers */ - num = labs((long)get_cursor_rel_lnum(wp, lnum)); - -! sprintf((char *)buf, "%*ld ", w, num); - #ifdef FEAT_RIGHTLEFT - if (wp->w_p_rl) - /* the line number isn't reversed */ ---- 2328,2344 ---- - /* 'number' */ - num = (long)lnum; - else -+ { - /* 'relativenumber', don't use negative numbers */ - num = labs((long)get_cursor_rel_lnum(wp, lnum)); -+ if (num == 0) -+ { -+ num = lnum; -+ fmt = "%-*ld "; -+ } -+ } - -! sprintf((char *)buf, fmt, w, num); - #ifdef FEAT_RIGHTLEFT - if (wp->w_p_rl) - /* the line number isn't reversed */ -*************** -*** 3484,3498 **** - ) - { - long num; - - if (wp->w_p_nu) - /* 'number' */ - num = (long)lnum; - else - /* 'relativenumber', don't use negative numbers */ - num = labs((long)get_cursor_rel_lnum(wp, lnum)); - -! sprintf((char *)extra, "%*ld ", - number_width(wp), num); - if (wp->w_skipcol > 0) - for (p_extra = extra; *p_extra == ' '; ++p_extra) ---- 3492,3514 ---- - ) - { - long num; -+ char *fmt = "%*ld "; - - if (wp->w_p_nu) - /* 'number' */ - num = (long)lnum; - else -+ { - /* 'relativenumber', don't use negative numbers */ - num = labs((long)get_cursor_rel_lnum(wp, lnum)); -+ if (num == 0) -+ { -+ num = lnum; -+ fmt = "%-*ld "; -+ } -+ } - -! sprintf((char *)extra, fmt, - number_width(wp), num); - if (wp->w_skipcol > 0) - for (p_extra = extra; *p_extra == ' '; ++p_extra) -*************** -*** 3513,3519 **** - * the current line differently. - * TODO: Can we use CursorLine instead of CursorLineNr - * when CursorLineNr isn't set? */ -! if (wp->w_p_cul && lnum == wp->w_cursor.lnum) - char_attr = hl_attr(HLF_CLN); - #endif - } ---- 3529,3536 ---- - * the current line differently. - * TODO: Can we use CursorLine instead of CursorLineNr - * when CursorLineNr isn't set? */ -! if ((wp->w_p_cul || wp->w_p_rnu) -! && lnum == wp->w_cursor.lnum) - char_attr = hl_attr(HLF_CLN); - #endif - } -*************** -*** 10238,10249 **** - int n; - linenr_T lnum; - -! if (wp->w_p_nu) -! /* 'number' */ -! lnum = wp->w_buffer->b_ml.ml_line_count; -! else -! /* 'relativenumber' */ -! lnum = wp->w_height; - - if (lnum == wp->w_nrwidth_line_count) - return wp->w_nrwidth_width; ---- 10255,10261 ---- - int n; - linenr_T lnum; - -! lnum = wp->w_buffer->b_ml.ml_line_count; - - if (lnum == wp->w_nrwidth_line_count) - return wp->w_nrwidth_width; -*** ../vim-7.3.786/src/version.c 2013-01-30 11:44:33.000000000 +0100 ---- src/version.c 2013-01-30 12:25:10.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 787, - /**/ - --- -ARTHUR: A scratch? Your arm's off! -BLACK KNIGHT: No, it isn't. -ARTHUR: Well, what's that then? -BLACK KNIGHT: I've had worse. - The Quest for the Holy Grail (Monty Python) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.788 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.788 -Problem: When only using patches build fails on missing nl.po. -Solution: Create an empty nl.po file. -Files: src/po/Makefile - - -*** ../vim-7.3.787/src/po/Makefile 2013-01-17 13:35:13.000000000 +0100 ---- src/po/Makefile 2013-01-30 12:50:41.000000000 +0100 -*************** -*** 176,181 **** ---- 176,185 ---- - - converted: $(MOCONVERTED) - -+ # nl.po was added later, if it does not exist use an empty file. -+ nl.po: -+ touch nl.po -+ - # Norwegian/Bokmal: "nb" is an alias for "no". - # Copying the file is not efficient, but I don't know of another way to make - # this work. -*** ../vim-7.3.787/src/version.c 2013-01-30 12:31:32.000000000 +0100 ---- src/version.c 2013-01-30 12:45:32.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 788, - /**/ - --- -"It's so simple to be wise. Just think of something stupid to say -and then don't say it." -- Sam Levenson - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.789 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.789 (after 7.3.776) -Problem: "\k" in regexp does not work in other window. -Solution: Use the right buffer. (Yukihiro Nakadaira) -Files: src/mbyte.c, src/proto/mbyte.pro, src/regexp.c - - -*** ../vim-7.3.788/src/mbyte.c 2013-01-23 16:19:17.000000000 +0100 ---- src/mbyte.c 2013-01-30 13:53:07.000000000 +0100 -*************** -*** 869,879 **** - mb_get_class(p) - char_u *p; - { - if (MB_BYTE2LEN(p[0]) == 1) - { - if (p[0] == NUL || vim_iswhite(p[0])) - return 0; -! if (vim_iswordc(p[0])) - return 2; - return 1; - } ---- 869,887 ---- - mb_get_class(p) - char_u *p; - { -+ return mb_get_class_buf(p, curbuf); -+ } -+ -+ int -+ mb_get_class_buf(p, buf) -+ char_u *p; -+ buf_T *buf; -+ { - if (MB_BYTE2LEN(p[0]) == 1) - { - if (p[0] == NUL || vim_iswhite(p[0])) - return 0; -! if (vim_iswordc_buf(p[0], buf)) - return 2; - return 1; - } -*** ../vim-7.3.788/src/proto/mbyte.pro 2011-08-10 13:21:30.000000000 +0200 ---- src/proto/mbyte.pro 2013-01-30 13:53:27.000000000 +0100 -*************** -*** 4,9 **** ---- 4,10 ---- - int bomb_size __ARGS((void)); - void remove_bom __ARGS((char_u *s)); - int mb_get_class __ARGS((char_u *p)); -+ int mb_get_class_buf __ARGS((char_u *p, buf_T *buf)); - int dbcs_class __ARGS((unsigned lead, unsigned trail)); - int latin_char2len __ARGS((int c)); - int latin_char2bytes __ARGS((int c, char_u *buf)); -*** ../vim-7.3.788/src/regexp.c 2013-01-25 20:10:58.000000000 +0100 ---- src/regexp.c 2013-01-30 13:55:39.000000000 +0100 -*************** -*** 4013,4020 **** - reg_prev_class() - { - if (reginput > regline) -! return mb_get_class(reginput - 1 -! - (*mb_head_off)(regline, reginput - 1)); - return -1; - } - ---- 4013,4020 ---- - reg_prev_class() - { - if (reginput > regline) -! return mb_get_class_buf(reginput - 1 -! - (*mb_head_off)(regline, reginput - 1), reg_buf); - return -1; - } - -*************** -*** 4304,4310 **** - int this_class; - - /* Get class of current and previous char (if it exists). */ -! this_class = mb_get_class(reginput); - if (this_class <= 1) - status = RA_NOMATCH; /* not on a word at all */ - else if (reg_prev_class() == this_class) ---- 4304,4310 ---- - int this_class; - - /* Get class of current and previous char (if it exists). */ -! this_class = mb_get_class_buf(reginput, reg_buf); - if (this_class <= 1) - status = RA_NOMATCH; /* not on a word at all */ - else if (reg_prev_class() == this_class) -*************** -*** 4328,4334 **** - int this_class, prev_class; - - /* Get class of current and previous char (if it exists). */ -! this_class = mb_get_class(reginput); - prev_class = reg_prev_class(); - if (this_class == prev_class - || prev_class == 0 || prev_class == 1) ---- 4328,4334 ---- - int this_class, prev_class; - - /* Get class of current and previous char (if it exists). */ -! this_class = mb_get_class_buf(reginput, reg_buf); - prev_class = reg_prev_class(); - if (this_class == prev_class - || prev_class == 0 || prev_class == 1) -*************** -*** 4365,4378 **** - break; - - case KWORD: -! if (!vim_iswordp(reginput)) - status = RA_NOMATCH; - else - ADVANCE_REGINPUT(); - break; - - case SKWORD: -! if (VIM_ISDIGIT(*reginput) || !vim_iswordp(reginput)) - status = RA_NOMATCH; - else - ADVANCE_REGINPUT(); ---- 4365,4378 ---- - break; - - case KWORD: -! if (!vim_iswordp_buf(reginput, reg_buf)) - status = RA_NOMATCH; - else - ADVANCE_REGINPUT(); - break; - - case SKWORD: -! if (VIM_ISDIGIT(*reginput) || !vim_iswordp_buf(reginput, reg_buf)) - status = RA_NOMATCH; - else - ADVANCE_REGINPUT(); -*************** -*** 5734,5740 **** - case SKWORD + ADD_NL: - while (count < maxcount) - { -! if (vim_iswordp(scan) && (testval || !VIM_ISDIGIT(*scan))) - { - mb_ptr_adv(scan); - } ---- 5734,5741 ---- - case SKWORD + ADD_NL: - while (count < maxcount) - { -! if (vim_iswordp_buf(scan, reg_buf) -! && (testval || !VIM_ISDIGIT(*scan))) - { - mb_ptr_adv(scan); - } -*** ../vim-7.3.788/src/version.c 2013-01-30 12:50:50.000000000 +0100 ---- src/version.c 2013-01-30 13:58:07.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 789, - /**/ - --- -MARTHA'S WAY: Don't throw out all that leftover wine. Freeze into ice cubes - for future use in casseroles and sauces. -MY WAY: What leftover wine? - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.790 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.790 -Problem: After reloading a buffer the modelines are not processed. -Solution: call do_modelines(). (Ken Takata) -Files: src/fileio.c - - -*** ../vim-7.3.789/src/fileio.c 2012-12-05 19:13:11.000000000 +0100 ---- src/fileio.c 2013-01-30 14:08:21.000000000 +0100 -*************** -*** 7243,7248 **** ---- 7243,7251 ---- - * reset it, might have had a read error. */ - if (orig_mode == curbuf->b_orig_mode) - curbuf->b_p_ro |= old_ro; -+ -+ /* Modelines must override settings done by autocommands. */ -+ do_modelines(0); - } - - /* restore curwin/curbuf and a few other things */ -*** ../vim-7.3.789/src/version.c 2013-01-30 13:59:31.000000000 +0100 ---- src/version.c 2013-01-30 14:02:30.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 790, - /**/ - --- -BLACK KNIGHT: Come on you pansy! - [hah] [parry thrust] - [ARTHUR chops the BLACK KNIGHT's right arm off] -ARTHUR: Victory is mine! [kneeling] - We thank thee Lord, that in thy merc- - [Black Knight kicks Arthur in the head while he is praying] - The Quest for the Holy Grail (Monty Python) - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.791 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.791 -Problem: MzScheme interface doesn't work propely. -Solution: Make it work better. (Sergey Khorev) -Files: runtime/doc/if_mzsch.txt, src/configure.in, src/auto/configure, - src/eval.c, src/if_mzsch.c, src/if_mzsch.h, src/Make_ming.mak, - src/Make_mvc.mak, src/os_unix.c, src/proto/eval.pro, - src/testdir/test70.in, src/testdir/test70.ok - - -*** ../vim-7.3.790/runtime/doc/if_mzsch.txt 2010-08-15 21:57:14.000000000 +0200 ---- runtime/doc/if_mzsch.txt 2013-01-30 14:26:44.000000000 +0100 -*************** -*** 11,17 **** - 3. Threads |mzscheme-threads| - 4. Vim access from MzScheme |mzscheme-vim| - 5. mzeval() Vim function |mzscheme-mzeval| -! 6. Dynamic loading |mzscheme-dynamic| - - {Vi does not have any of these commands} - ---- 11,18 ---- - 3. Threads |mzscheme-threads| - 4. Vim access from MzScheme |mzscheme-vim| - 5. mzeval() Vim function |mzscheme-mzeval| -! 6. Using Function references |mzscheme-funcref| -! 7. Dynamic loading |mzscheme-dynamic| - - {Vi does not have any of these commands} - -*************** -*** 21,30 **** - Based on the work of Brent Fulgham. - Dynamic loading added by Sergey Khorev - -! For downloading MzScheme and other info: -! http://www.plt-scheme.org/software/mzscheme/ - -! Note: On FreeBSD you should use the "drscheme" port. - - ============================================================================== - 1. Commands *mzscheme-commands* ---- 22,38 ---- - Based on the work of Brent Fulgham. - Dynamic loading added by Sergey Khorev - -! MzScheme and PLT Scheme names have been rebranded as Racket. For more -! information please check http://racket-lang.org - -! Futures and places of Racket version 5.x up to and including 5.3.1 do not -! work correctly with processes created by Vim. -! The simplest solution is to build Racket on your own with these features -! disabled: > -! ./configure --disable-futures --disable-places --prefix=your-install-prefix -! -! To speed up the process, you might also want to use --disable-gracket and -! --disable-docs - - ============================================================================== - 1. Commands *mzscheme-commands* -*************** -*** 155,162 **** - (eval {expr-string}) Evaluate the vim expression into - respective MzScheme object: |Lists| are - represented as Scheme lists, -! |Dictionaries| as hash tables. -! NOTE the name clashes with MzScheme eval - (range-start) Start/End of the range passed with - (range-end) the Scheme command. - (beep) beep ---- 163,173 ---- - (eval {expr-string}) Evaluate the vim expression into - respective MzScheme object: |Lists| are - represented as Scheme lists, -! |Dictionaries| as hash tables, -! |Funcref|s as functions (see also -! |mzscheme-funcref|) -! NOTE the name clashes with MzScheme eval, -! use module qualifiers to overcome this. - (range-start) Start/End of the range passed with - (range-end) the Scheme command. - (beep) beep -*************** -*** 237,243 **** - evaluate MzScheme expressions and pass their values to VimL. - - ============================================================================== -! 6. Dynamic loading *mzscheme-dynamic* *E815* - - On MS-Windows the MzScheme libraries can be loaded dynamically. The |:version| - output then includes |+mzscheme/dyn|. ---- 248,270 ---- - evaluate MzScheme expressions and pass their values to VimL. - - ============================================================================== -! 6. Using Function references *mzscheme-funcref* -! -! MzScheme interface allows use of |Funcref|s so you can call Vim functions -! directly from Scheme. For instance: > -! function! MyAdd2(arg) -! return a:arg + 2 -! endfunction -! mz (define f2 (vim-eval "function(\"MyAdd2\")")) -! mz (f2 7) -! < or : > -! :mz (define indent (vim-eval "function('indent')")) -! " return Vim indent for line 12 -! :mz (indent 12) -! < -! -! ============================================================================== -! 7. Dynamic loading *mzscheme-dynamic* *E815* - - On MS-Windows the MzScheme libraries can be loaded dynamically. The |:version| - output then includes |+mzscheme/dyn|. -*** ../vim-7.3.790/src/configure.in 2012-12-12 14:25:01.000000000 +0100 ---- src/configure.in 2013-01-30 14:26:44.000000000 +0100 -*************** -*** 617,623 **** - - if test "X$vi_cv_path_mzscheme_pfx" != "X"; then - if test "x$MACOSX" = "xyes"; then -! MZSCHEME_LIBS="-framework PLT_MzScheme" - elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then - MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a" - MZSCHEME_CFLAGS="-DMZ_PRECISE_GC" ---- 617,624 ---- - - if test "X$vi_cv_path_mzscheme_pfx" != "X"; then - if test "x$MACOSX" = "xyes"; then -! MZSCHEME_LIBS="-framework Racket" -! MZSCHEME_CFLAGS="-DMZ_PRECISE_GC" - elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then - MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a" - MZSCHEME_CFLAGS="-DMZ_PRECISE_GC" -*************** -*** 660,665 **** ---- 661,670 ---- - else - if test -d $vi_cv_path_mzscheme_pfx/share/racket/collects; then - SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/share/racket/ -+ else -+ if test -d $vi_cv_path_mzscheme_pfx/collects; then -+ SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/ -+ fi - fi - fi - fi -*** ../vim-7.3.790/src/auto/configure 2012-12-12 14:25:01.000000000 +0100 ---- src/auto/configure 2013-01-30 14:27:31.000000000 +0100 -*************** -*** 4927,4933 **** - - if test "X$vi_cv_path_mzscheme_pfx" != "X"; then - if test "x$MACOSX" = "xyes"; then -! MZSCHEME_LIBS="-framework PLT_MzScheme" - elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then - MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a" - MZSCHEME_CFLAGS="-DMZ_PRECISE_GC" ---- 4927,4934 ---- - - if test "X$vi_cv_path_mzscheme_pfx" != "X"; then - if test "x$MACOSX" = "xyes"; then -! MZSCHEME_LIBS="-framework Racket" -! MZSCHEME_CFLAGS="-DMZ_PRECISE_GC" - elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then - MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a" - MZSCHEME_CFLAGS="-DMZ_PRECISE_GC" -*************** -*** 4968,4973 **** ---- 4969,4978 ---- - else - if test -d $vi_cv_path_mzscheme_pfx/share/racket/collects; then - SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/share/racket/ -+ else -+ if test -d $vi_cv_path_mzscheme_pfx/collects; then -+ SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/ -+ fi - fi - fi - fi -*** ../vim-7.3.790/src/eval.c 2013-01-23 17:15:25.000000000 +0100 ---- src/eval.c 2013-01-30 14:33:00.000000000 +0100 -*************** -*** 14333,14338 **** ---- 14333,14354 ---- - str = get_tv_string_buf(&argvars[0], buf); - do_mzeval(str, rettv); - } -+ -+ void -+ mzscheme_call_vim(name, args, rettv) -+ char_u *name; -+ typval_T *args; -+ typval_T *rettv; -+ { -+ typval_T argvars[3]; -+ -+ argvars[0].v_type = VAR_STRING; -+ argvars[0].vval.v_string = name; -+ copy_tv(args, &argvars[1]); -+ argvars[2].v_type = VAR_UNKNOWN; -+ f_call(argvars, rettv); -+ clear_tv(&argvars[1]); -+ } - #endif - - /* -*** ../vim-7.3.790/src/if_mzsch.c 2012-11-28 15:37:46.000000000 +0100 ---- src/if_mzsch.c 2013-01-30 14:34:37.000000000 +0100 -*************** -*** 1,11 **** - /* vi:set ts=8 sts=4 sw=4: - * - * MzScheme interface by Sergey Khorev <sergey.khorev@gmail.com> -! * Original work by Brent Fulgham <bfulgham@debian.org> - * (Based on lots of help from Matthew Flatt) - * -- * TODO Convert byte-strings to char strings? -- * - * This consists of six parts: - * 1. MzScheme interpreter main program - * 2. Routines that handle the external interface between MzScheme and ---- 1,9 ---- - /* vi:set ts=8 sts=4 sw=4: - * - * MzScheme interface by Sergey Khorev <sergey.khorev@gmail.com> -! * Based on work by Brent Fulgham <bfulgham@debian.org> - * (Based on lots of help from Matthew Flatt) - * - * This consists of six parts: - * 1. MzScheme interpreter main program - * 2. Routines that handle the external interface between MzScheme and -*************** -*** 142,148 **** - static int do_mzscheme_command(exarg_T *, void *, Scheme_Closed_Prim *what); - static void startup_mzscheme(void); - static char *string_to_line(Scheme_Object *obj); -! static void do_output(char *mesg, intptr_t len); - static void do_printf(char *format, ...); - static void do_flush(void); - static Scheme_Object *_apply_thunk_catch_exceptions( ---- 140,151 ---- - static int do_mzscheme_command(exarg_T *, void *, Scheme_Closed_Prim *what); - static void startup_mzscheme(void); - static char *string_to_line(Scheme_Object *obj); -! #if MZSCHEME_VERSION_MAJOR >= 500 -! # define OUTPUT_LEN_TYPE intptr_t -! #else -! # define OUTPUT_LEN_TYPE long -! #endif -! static void do_output(char *mesg, OUTPUT_LEN_TYPE len); - static void do_printf(char *format, ...); - static void do_flush(void); - static Scheme_Object *_apply_thunk_catch_exceptions( -*************** -*** 166,175 **** - static int mzscheme_env_main(Scheme_Env *env, int argc, char **argv); - static int mzscheme_init(void); - #ifdef FEAT_EVAL -! static Scheme_Object *vim_to_mzscheme(typval_T *vim_value, int depth, - Scheme_Hash_Table *visited); -! static int mzscheme_to_vim(Scheme_Object *obj, typval_T *tv, int depth, - Scheme_Hash_Table *visited); - #endif - - #ifdef MZ_PRECISE_GC ---- 169,181 ---- - static int mzscheme_env_main(Scheme_Env *env, int argc, char **argv); - static int mzscheme_init(void); - #ifdef FEAT_EVAL -! static Scheme_Object *vim_to_mzscheme(typval_T *vim_value); -! static Scheme_Object *vim_to_mzscheme_impl(typval_T *vim_value, int depth, - Scheme_Hash_Table *visited); -! static int mzscheme_to_vim(Scheme_Object *obj, typval_T *tv); -! static int mzscheme_to_vim_impl(Scheme_Object *obj, typval_T *tv, int depth, - Scheme_Hash_Table *visited); -+ static Scheme_Object *vim_funcref(void *data, int argc, Scheme_Object **argv); - #endif - - #ifdef MZ_PRECISE_GC -*************** -*** 183,188 **** ---- 189,201 ---- - } - static int buffer_fixup_proc(void *obj) - { -+ /* apparently not needed as the object will be uncollectable while -+ * the buffer is alive -+ */ -+ /* -+ vim_mz_buffer* buf = (vim_mz_buffer*) obj; -+ buf->buf->b_mzscheme_ref = GC_fixup_self(obj); -+ */ - return buffer_size_proc(obj); - } - static int window_size_proc(void *obj UNUSED) -*************** -*** 195,206 **** - } - static int window_fixup_proc(void *obj) - { - return window_size_proc(obj); - } - #endif - - #ifdef DYNAMIC_MZSCHEME -- - static Scheme_Object *dll_scheme_eof; - static Scheme_Object *dll_scheme_false; - static Scheme_Object *dll_scheme_void; ---- 208,233 ---- - } - static int window_fixup_proc(void *obj) - { -+ /* apparently not needed as the object will be uncollectable while -+ * the window is alive -+ */ -+ /* -+ vim_mz_window* win = (vim_mz_window*) obj; -+ win->win->w_mzscheme_ref = GC_fixup_self(obj); -+ */ - return window_size_proc(obj); - } -+ /* with precise GC, w_mzscheme_ref and b_mzscheme_ref are immobile boxes -+ * containing pointers to a window/buffer -+ * with conservative GC these are simply pointers*/ -+ # define WINDOW_REF(win) *(vim_mz_window **)((win)->w_mzscheme_ref) -+ # define BUFFER_REF(buf) *(vim_mz_buffer **)((buf)->b_mzscheme_ref) -+ #else -+ # define WINDOW_REF(win) (vim_mz_window *)((win)->w_mzscheme_ref) -+ # define BUFFER_REF(buf) (vim_mz_buffer *)((buf)->b_mzscheme_ref) - #endif - - #ifdef DYNAMIC_MZSCHEME - static Scheme_Object *dll_scheme_eof; - static Scheme_Object *dll_scheme_false; - static Scheme_Object *dll_scheme_void; -*************** -*** 319,324 **** ---- 346,352 ---- - (Scheme_Object *s); - static Scheme_Object *(*dll_scheme_char_string_to_path) - (Scheme_Object *s); -+ static void *(*dll_scheme_set_collects_path)(Scheme_Object *p); - # endif - static Scheme_Hash_Table *(*dll_scheme_make_hash_table)(int type); - static void (*dll_scheme_hash_set)(Scheme_Hash_Table *table, -*************** -*** 378,388 **** - # endif - # define scheme_gc_ptr_ok dll_scheme_gc_ptr_ok - # if MZSCHEME_VERSION_MAJOR < 299 -! # define scheme_get_sized_string_output dll_scheme_get_sized_string_output - # else - # define scheme_get_sized_byte_string_output \ - dll_scheme_get_sized_byte_string_output -! # define scheme_get_param dll_scheme_get_param - # endif - # define scheme_intern_symbol dll_scheme_intern_symbol - # define scheme_lookup_global dll_scheme_lookup_global ---- 406,416 ---- - # endif - # define scheme_gc_ptr_ok dll_scheme_gc_ptr_ok - # if MZSCHEME_VERSION_MAJOR < 299 -! # define scheme_get_sized_byte_string_output dll_scheme_get_sized_string_output - # else - # define scheme_get_sized_byte_string_output \ - dll_scheme_get_sized_byte_string_output -! # define scheme_get_param dll_scheme_get_param - # endif - # define scheme_intern_symbol dll_scheme_intern_symbol - # define scheme_lookup_global dll_scheme_lookup_global -*************** -*** 391,398 **** - # define scheme_make_pair dll_scheme_make_pair - # define scheme_make_prim_w_arity dll_scheme_make_prim_w_arity - # if MZSCHEME_VERSION_MAJOR < 299 -! # define scheme_make_string dll_scheme_make_string -! # define scheme_make_string_output_port dll_scheme_make_string_output_port - # else - # define scheme_make_byte_string dll_scheme_make_byte_string - # define scheme_make_byte_string_output_port \ ---- 419,426 ---- - # define scheme_make_pair dll_scheme_make_pair - # define scheme_make_prim_w_arity dll_scheme_make_prim_w_arity - # if MZSCHEME_VERSION_MAJOR < 299 -! # define scheme_make_byte_string dll_scheme_make_string -! # define scheme_make_byte_string_output_port dll_scheme_make_string_output_port - # else - # define scheme_make_byte_string dll_scheme_make_byte_string - # define scheme_make_byte_string_output_port \ -*************** -*** 421,426 **** ---- 449,455 ---- - dll_scheme_char_string_to_byte_string - # define scheme_char_string_to_path \ - dll_scheme_char_string_to_path -+ # define scheme_set_collects_path dll_scheme_set_collects_path - # endif - # define scheme_make_hash_table dll_scheme_make_hash_table - # define scheme_hash_set dll_scheme_hash_set -*************** -*** 529,534 **** ---- 558,564 ---- - {"scheme_char_string_to_byte_string", - (void **)&dll_scheme_char_string_to_byte_string}, - {"scheme_char_string_to_path", (void **)&dll_scheme_char_string_to_path}, -+ {"scheme_set_collects_path", (void **)&dll_scheme_set_collects_path}, - # endif - {"scheme_make_hash_table", (void **)&dll_scheme_make_hash_table}, - {"scheme_hash_set", (void **)&dll_scheme_hash_set}, -*************** -*** 625,635 **** - } - #endif /* DYNAMIC_MZSCHEME */ - - /* need to put it here for dynamic stuff to work */ - #if defined(INCLUDE_MZSCHEME_BASE) - # include "mzscheme_base.c" - #elif MZSCHEME_VERSION_MAJOR >= 400 -! # error MzScheme 4.x must include mzscheme_base.c, for MinGW32 you need to define MZSCHEME_GENERATE_BASE=yes - #endif - - /* ---- 655,694 ---- - } - #endif /* DYNAMIC_MZSCHEME */ - -+ #if MZSCHEME_VERSION_MAJOR < 299 -+ # define GUARANTEED_STRING_ARG(proc, num) GUARANTEE_STRING(proc, num) -+ #else -+ static Scheme_Object * -+ guaranteed_byte_string_arg(char *proc, int num, int argc, Scheme_Object **argv) -+ { -+ if (SCHEME_BYTE_STRINGP(argv[num])) -+ { -+ return argv[num]; -+ } -+ else if (SCHEME_CHAR_STRINGP(argv[num])) -+ { -+ Scheme_Object *tmp = NULL; -+ MZ_GC_DECL_REG(2); -+ MZ_GC_VAR_IN_REG(0, argv[num]); -+ MZ_GC_VAR_IN_REG(1, tmp); -+ MZ_GC_REG(); -+ tmp = scheme_char_string_to_byte_string(argv[num]); -+ MZ_GC_UNREG(); -+ return tmp; -+ } -+ else -+ scheme_wrong_type(proc, "string", num, argc, argv); -+ /* unreachable */ -+ return scheme_void; -+ } -+ # define GUARANTEED_STRING_ARG(proc, num) guaranteed_byte_string_arg(proc, num, argc, argv) -+ #endif -+ - /* need to put it here for dynamic stuff to work */ - #if defined(INCLUDE_MZSCHEME_BASE) - # include "mzscheme_base.c" - #elif MZSCHEME_VERSION_MAJOR >= 400 -! # error MzScheme >=4 must include mzscheme_base.c, for MinGW32 you need to define MZSCHEME_GENERATE_BASE=yes - #endif - - /* -*************** -*** 861,866 **** ---- 920,930 ---- - scheme_set_stack_base(stack_base, 1); - #endif - -+ #ifndef TRAMPOLINED_MZVIM_STARTUP -+ /* in newer versions of precise GC the initial env has been created */ -+ environment = scheme_basic_env(); -+ #endif -+ - MZ_REGISTER_STATIC(environment); - MZ_REGISTER_STATIC(curout); - MZ_REGISTER_STATIC(curerr); -*************** -*** 869,878 **** - MZ_REGISTER_STATIC(exn_message); - MZ_REGISTER_STATIC(vim_exn); - -- #ifndef TRAMPOLINED_MZVIM_STARTUP -- /* in newer versions of precise GC the initial env has been created */ -- environment = scheme_basic_env(); -- #endif - MZ_GC_CHECK(); - - #ifdef INCLUDE_MZSCHEME_BASE ---- 933,938 ---- -*************** -*** 909,923 **** - Scheme_Object *coll_byte_string = NULL; - Scheme_Object *coll_char_string = NULL; - Scheme_Object *coll_path = NULL; -- Scheme_Object *coll_pair = NULL; -- Scheme_Config *config = NULL; - -! MZ_GC_DECL_REG(5); - MZ_GC_VAR_IN_REG(0, coll_byte_string); - MZ_GC_VAR_IN_REG(1, coll_char_string); - MZ_GC_VAR_IN_REG(2, coll_path); -- MZ_GC_VAR_IN_REG(3, coll_pair); -- MZ_GC_VAR_IN_REG(4, config); - MZ_GC_REG(); - coll_byte_string = scheme_make_byte_string(MZSCHEME_COLLECTS); - MZ_GC_CHECK(); ---- 969,979 ---- - Scheme_Object *coll_byte_string = NULL; - Scheme_Object *coll_char_string = NULL; - Scheme_Object *coll_path = NULL; - -! MZ_GC_DECL_REG(3); - MZ_GC_VAR_IN_REG(0, coll_byte_string); - MZ_GC_VAR_IN_REG(1, coll_char_string); - MZ_GC_VAR_IN_REG(2, coll_path); - MZ_GC_REG(); - coll_byte_string = scheme_make_byte_string(MZSCHEME_COLLECTS); - MZ_GC_CHECK(); -*************** -*** 925,935 **** - MZ_GC_CHECK(); - coll_path = scheme_char_string_to_path(coll_char_string); - MZ_GC_CHECK(); -! coll_pair = scheme_make_pair(coll_path, scheme_null); -! MZ_GC_CHECK(); -! config = scheme_config; -! MZ_GC_CHECK(); -! scheme_set_param(config, MZCONFIG_COLLECTION_PATHS, coll_pair); - MZ_GC_CHECK(); - MZ_GC_UNREG(); - } ---- 981,987 ---- - MZ_GC_CHECK(); - coll_path = scheme_char_string_to_path(coll_char_string); - MZ_GC_CHECK(); -! scheme_set_collects_path(coll_path); - MZ_GC_CHECK(); - MZ_GC_UNREG(); - } -*************** -*** 944,954 **** - MZ_GC_VAR_IN_REG(1, coll_pair); - MZ_GC_VAR_IN_REG(2, config); - MZ_GC_REG(); -! coll_string = scheme_make_string(MZSCHEME_COLLECTS); - MZ_GC_CHECK(); - coll_pair = scheme_make_pair(coll_string, scheme_null); - MZ_GC_CHECK(); -! config = scheme_config; - MZ_GC_CHECK(); - scheme_set_param(config, MZCONFIG_COLLECTION_PATHS, coll_pair); - MZ_GC_CHECK(); ---- 996,1006 ---- - MZ_GC_VAR_IN_REG(1, coll_pair); - MZ_GC_VAR_IN_REG(2, config); - MZ_GC_REG(); -! coll_string = scheme_make_byte_string(MZSCHEME_COLLECTS); - MZ_GC_CHECK(); - coll_pair = scheme_make_pair(coll_string, scheme_null); - MZ_GC_CHECK(); -! config = scheme_current_config(); - MZ_GC_CHECK(); - scheme_set_param(config, MZCONFIG_COLLECTION_PATHS, coll_pair); - MZ_GC_CHECK(); -*************** -*** 991,997 **** - MZ_GC_VAR_IN_REG(3, guard); - MZ_GC_VAR_IN_REG(4, config); - MZ_GC_REG(); -! config = scheme_config; - MZ_GC_CHECK(); - args[0] = scheme_get_param(config, MZCONFIG_SECURITY_GUARD); - MZ_GC_CHECK(); ---- 1043,1049 ---- - MZ_GC_VAR_IN_REG(3, guard); - MZ_GC_VAR_IN_REG(4, config); - MZ_GC_REG(); -! config = scheme_current_config(); - MZ_GC_CHECK(); - args[0] = scheme_get_param(config, MZCONFIG_SECURITY_GUARD); - MZ_GC_CHECK(); -*************** -*** 1055,1066 **** - MZ_GC_DECL_REG(1); - MZ_GC_VAR_IN_REG(0, config); - MZ_GC_REG(); -! config = scheme_config; - MZ_GC_CHECK(); - /* recreate ports each call effectively clearing these ones */ -! curout = scheme_make_string_output_port(); - MZ_GC_CHECK(); -! curerr = scheme_make_string_output_port(); - MZ_GC_CHECK(); - scheme_set_param(config, MZCONFIG_OUTPUT_PORT, curout); - MZ_GC_CHECK(); ---- 1107,1118 ---- - MZ_GC_DECL_REG(1); - MZ_GC_VAR_IN_REG(0, config); - MZ_GC_REG(); -! config = scheme_current_config(); - MZ_GC_CHECK(); - /* recreate ports each call effectively clearing these ones */ -! curout = scheme_make_byte_string_output_port(); - MZ_GC_CHECK(); -! curerr = scheme_make_byte_string_output_port(); - MZ_GC_CHECK(); - scheme_set_param(config, MZCONFIG_OUTPUT_PORT, curout); - MZ_GC_CHECK(); -*************** -*** 1149,1161 **** - { - if (buf->b_mzscheme_ref) - { -! vim_mz_buffer *bp; - -! bp = buf->b_mzscheme_ref; - bp->buf = INVALID_BUFFER_VALUE; -! buf->b_mzscheme_ref = NULL; - scheme_gc_ptr_ok(bp); - MZ_GC_CHECK(); - } - } - ---- 1201,1221 ---- - { - if (buf->b_mzscheme_ref) - { -! vim_mz_buffer *bp = NULL; -! MZ_GC_DECL_REG(1); -! MZ_GC_VAR_IN_REG(0, bp); -! MZ_GC_REG(); - -! bp = BUFFER_REF(buf); - bp->buf = INVALID_BUFFER_VALUE; -! #ifndef MZ_PRECISE_GC - scheme_gc_ptr_ok(bp); -+ #else -+ scheme_free_immobile_box(buf->b_mzscheme_ref); -+ #endif -+ buf->b_mzscheme_ref = NULL; - MZ_GC_CHECK(); -+ MZ_GC_UNREG(); - } - } - -*************** -*** 1167,1178 **** - { - if (win->w_mzscheme_ref) - { -! vim_mz_window *wp; -! wp = win->w_mzscheme_ref; - wp->win = INVALID_WINDOW_VALUE; -! win->w_mzscheme_ref = NULL; - scheme_gc_ptr_ok(wp); - MZ_GC_CHECK(); - } - } - ---- 1227,1246 ---- - { - if (win->w_mzscheme_ref) - { -! vim_mz_window *wp = NULL; -! MZ_GC_DECL_REG(1); -! MZ_GC_VAR_IN_REG(0, wp); -! MZ_GC_REG(); -! wp = WINDOW_REF(win); - wp->win = INVALID_WINDOW_VALUE; -! #ifndef MZ_PRECISE_GC - scheme_gc_ptr_ok(wp); -+ #else -+ scheme_free_immobile_box(win->w_mzscheme_ref); -+ #endif -+ win->w_mzscheme_ref = NULL; - MZ_GC_CHECK(); -+ MZ_GC_UNREG(); - } - } - -*************** -*** 1349,1355 **** - } - - static void -! do_output(char *mesg, intptr_t len UNUSED) - { - /* TODO: use len, the string may not be NUL terminated */ - do_intrnl_output(mesg, 0); ---- 1417,1423 ---- - } - - static void -! do_output(char *mesg, OUTPUT_LEN_TYPE len UNUSED) - { - /* TODO: use len, the string may not be NUL terminated */ - do_intrnl_output(mesg, 0); -*************** -*** 1371,1379 **** - do_flush(void) - { - char *buff; -! intptr_t length; - -! buff = scheme_get_sized_string_output(curerr, &length); - MZ_GC_CHECK(); - if (length) - { ---- 1439,1447 ---- - do_flush(void) - { - char *buff; -! OUTPUT_LEN_TYPE length; - -! buff = scheme_get_sized_byte_string_output(curerr, &length); - MZ_GC_CHECK(); - if (length) - { -*************** -*** 1381,1387 **** - return; - } - -! buff = scheme_get_sized_string_output(curout, &length); - MZ_GC_CHECK(); - if (length) - do_output(buff, length); ---- 1449,1455 ---- - return; - } - -! buff = scheme_get_sized_byte_string_output(curout, &length); - MZ_GC_CHECK(); - if (length) - do_output(buff, length); -*************** -*** 1398,1409 **** - vim_command(void *data, int argc, Scheme_Object **argv) - { - Vim_Prim *prim = (Vim_Prim *)data; -! char *cmd = SCHEME_STR_VAL(GUARANTEE_STRING(prim->name, 0)); - - /* may be use do_cmdline_cmd? */ -! do_cmdline((char_u *)cmd, NULL, NULL, DOCMD_NOWAIT|DOCMD_VERBOSE); - update_screen(VALID); - - raise_if_error(); - return scheme_void; - } ---- 1466,1482 ---- - vim_command(void *data, int argc, Scheme_Object **argv) - { - Vim_Prim *prim = (Vim_Prim *)data; -! Scheme_Object *cmd = NULL; -! MZ_GC_DECL_REG(1); -! MZ_GC_VAR_IN_REG(0, cmd); -! MZ_GC_REG(); -! cmd = GUARANTEED_STRING_ARG(prim->name, 0); - - /* may be use do_cmdline_cmd? */ -! do_cmdline(BYTE_STRING_VALUE(cmd), NULL, NULL, DOCMD_NOWAIT|DOCMD_VERBOSE); - update_screen(VALID); - -+ MZ_GC_UNREG(); - raise_if_error(); - return scheme_void; - } -*************** -*** 1414,1439 **** - { - #ifdef FEAT_EVAL - Vim_Prim *prim = (Vim_Prim *)data; -! char *expr; -! Scheme_Object *result; -! /* hash table to store visited values to avoid infinite loops */ -! Scheme_Hash_Table *visited = NULL; - typval_T *vim_result; -! -! MZ_GC_DECL_REG(1); -! MZ_GC_VAR_IN_REG(0, visited); - MZ_GC_REG(); - -! visited = scheme_make_hash_table(SCHEME_hash_ptr); -! MZ_GC_CHECK(); -! -! expr = SCHEME_STR_VAL(GUARANTEE_STRING(prim->name, 0)); -! vim_result = eval_expr((char_u *)expr, NULL); - - if (vim_result == NULL) - raise_vim_exn(_("invalid expression")); - -! result = vim_to_mzscheme(vim_result, 1, visited); - free_tv(vim_result); - - MZ_GC_UNREG(); ---- 1487,1508 ---- - { - #ifdef FEAT_EVAL - Vim_Prim *prim = (Vim_Prim *)data; -! Scheme_Object *result = NULL; - typval_T *vim_result; -! Scheme_Object *expr = NULL; -! MZ_GC_DECL_REG(2); -! MZ_GC_VAR_IN_REG(0, result); -! MZ_GC_VAR_IN_REG(1, expr); - MZ_GC_REG(); -+ expr = GUARANTEED_STRING_ARG(prim->name, 0); - -! vim_result = eval_expr(BYTE_STRING_VALUE(expr), NULL); - - if (vim_result == NULL) - raise_vim_exn(_("invalid expression")); - -! result = vim_to_mzscheme(vim_result); -! MZ_GC_CHECK(); - free_tv(vim_result); - - MZ_GC_UNREG(); -*************** -*** 1474,1489 **** - get_option(void *data, int argc, Scheme_Object **argv) - { - Vim_Prim *prim = (Vim_Prim *)data; -- char_u *name; - long value; - char *strval; - int rc; -! Scheme_Object *rval; - int opt_flags = 0; - buf_T *save_curb = curbuf; - win_T *save_curw = curwin; - -! name = (char_u *)SCHEME_STR_VAL(GUARANTEE_STRING(prim->name, 0)); - - if (argc > 1) - { ---- 1543,1563 ---- - get_option(void *data, int argc, Scheme_Object **argv) - { - Vim_Prim *prim = (Vim_Prim *)data; - long value; - char *strval; - int rc; -! Scheme_Object *rval = NULL; -! Scheme_Object *name = NULL; - int opt_flags = 0; - buf_T *save_curb = curbuf; - win_T *save_curw = curwin; - -! MZ_GC_DECL_REG(2); -! MZ_GC_VAR_IN_REG(0, rval); -! MZ_GC_VAR_IN_REG(1, name); -! MZ_GC_REG(); -! -! name = GUARANTEED_STRING_ARG(prim->name, 0); - - if (argc > 1) - { -*************** -*** 1513,1535 **** - scheme_wrong_type(prim->name, "vim-buffer/window", 1, argc, argv); - } - -! rc = get_option_value(name, &value, (char_u **)&strval, opt_flags); - curbuf = save_curb; - curwin = save_curw; - - switch (rc) - { - case 1: - return scheme_make_integer_value(value); - case 0: -! rval = scheme_make_string(strval); - MZ_GC_CHECK(); - vim_free(strval); - return rval; - case -1: - case -2: - raise_vim_exn(_("hidden option")); - case -3: - raise_vim_exn(_("unknown option")); - } - /* unreachable */ ---- 1587,1613 ---- - scheme_wrong_type(prim->name, "vim-buffer/window", 1, argc, argv); - } - -! rc = get_option_value(BYTE_STRING_VALUE(name), &value, (char_u **)&strval, opt_flags); - curbuf = save_curb; - curwin = save_curw; - - switch (rc) - { - case 1: -+ MZ_GC_UNREG(); - return scheme_make_integer_value(value); - case 0: -! rval = scheme_make_byte_string(strval); - MZ_GC_CHECK(); - vim_free(strval); -+ MZ_GC_UNREG(); - return rval; - case -1: - case -2: -+ MZ_GC_UNREG(); - raise_vim_exn(_("hidden option")); - case -3: -+ MZ_GC_UNREG(); - raise_vim_exn(_("unknown option")); - } - /* unreachable */ -*************** -*** 1540,1552 **** - static Scheme_Object * - set_option(void *data, int argc, Scheme_Object **argv) - { -! char_u *cmd; - int opt_flags = 0; - buf_T *save_curb = curbuf; - win_T *save_curw = curwin; - Vim_Prim *prim = (Vim_Prim *)data; - -- GUARANTEE_STRING(prim->name, 0); - if (argc > 1) - { - if (M_global == NULL) ---- 1618,1635 ---- - static Scheme_Object * - set_option(void *data, int argc, Scheme_Object **argv) - { -! char_u *command = NULL; - int opt_flags = 0; - buf_T *save_curb = curbuf; - win_T *save_curw = curwin; - Vim_Prim *prim = (Vim_Prim *)data; -+ Scheme_Object *cmd = NULL; -+ -+ MZ_GC_DECL_REG(1); -+ MZ_GC_VAR_IN_REG(0, cmd); -+ MZ_GC_REG(); -+ cmd = GUARANTEED_STRING_ARG(prim->name, 0); - - if (argc > 1) - { - if (M_global == NULL) -*************** -*** 1575,1583 **** - } - - /* do_set can modify cmd, make copy */ -! cmd = vim_strsave((char_u *)SCHEME_STR_VAL(argv[0])); -! do_set(cmd, opt_flags); -! vim_free(cmd); - update_screen(NOT_VALID); - curbuf = save_curb; - curwin = save_curw; ---- 1658,1667 ---- - } - - /* do_set can modify cmd, make copy */ -! command = vim_strsave(BYTE_STRING_VALUE(cmd)); -! MZ_GC_UNREG(); -! do_set(command, opt_flags); -! vim_free(command); - update_screen(NOT_VALID); - curbuf = save_curb; - curwin = save_curw; -*************** -*** 1639,1645 **** - - MZ_GC_DECL_REG(1); - MZ_GC_VAR_IN_REG(0, self); -- MZ_GC_REG(); - - /* We need to handle deletion of windows underneath us. - * If we add a "w_mzscheme_ref" field to the win_T structure, ---- 1723,1728 ---- -*************** -*** 1650,1667 **** - * object, and reject them if the win_T *field is invalid. - */ - if (win->w_mzscheme_ref != NULL) -! return win->w_mzscheme_ref; - -! self = scheme_malloc_fail_ok(scheme_malloc, sizeof(vim_mz_window)); - vim_memset(self, 0, sizeof(vim_mz_window)); - scheme_dont_gc_ptr(self); /* because win isn't visible to GC */ - MZ_GC_CHECK(); -- win->w_mzscheme_ref = self; - self->win = win; - self->so.type = mz_window_type; - - MZ_GC_UNREG(); -! return (Scheme_Object *)(self); - } - - /* (get-win-num [window]) */ ---- 1733,1756 ---- - * object, and reject them if the win_T *field is invalid. - */ - if (win->w_mzscheme_ref != NULL) -! return (Scheme_Object *)WINDOW_REF(win); - -! MZ_GC_REG(); -! self = scheme_malloc_fail_ok(scheme_malloc_tagged, sizeof(vim_mz_window)); - vim_memset(self, 0, sizeof(vim_mz_window)); -+ #ifndef MZ_PRECISE_GC - scheme_dont_gc_ptr(self); /* because win isn't visible to GC */ -+ #else -+ win->w_mzscheme_ref = scheme_malloc_immobile_box(NULL); -+ #endif -+ MZ_GC_CHECK(); -+ WINDOW_REF(win) = self; - MZ_GC_CHECK(); - self->win = win; - self->so.type = mz_window_type; - - MZ_GC_UNREG(); -! return (Scheme_Object *)self; - } - - /* (get-win-num [window]) */ -*************** -*** 1837,1858 **** - mzscheme_open_buffer(void *data, int argc, Scheme_Object **argv) - { - Vim_Prim *prim = (Vim_Prim *)data; -- char_u *fname; - int num = 0; -! Scheme_Object *onum; - - #ifdef HAVE_SANDBOX - sandbox_check(); - #endif -- fname = (char_u *)SCHEME_STR_VAL(GUARANTEE_STRING(prim->name, 0)); - /* TODO make open existing file */ -! num = buflist_add(fname, BLN_LISTED | BLN_CURBUF); - - if (num == 0) - raise_vim_exn(_("couldn't open buffer")); - - onum = scheme_make_integer(num); -! return get_buffer_by_num(data, 1, &onum); - } - - /* (get-buff-by-num {buffernum}) */ ---- 1926,1956 ---- - mzscheme_open_buffer(void *data, int argc, Scheme_Object **argv) - { - Vim_Prim *prim = (Vim_Prim *)data; - int num = 0; -! Scheme_Object *onum = NULL; -! Scheme_Object *buf = NULL; -! Scheme_Object *fname; -! -! MZ_GC_DECL_REG(3); -! MZ_GC_VAR_IN_REG(0, onum); -! MZ_GC_VAR_IN_REG(1, buf); -! MZ_GC_VAR_IN_REG(2, fname); -! MZ_GC_REG(); -! fname = GUARANTEED_STRING_ARG(prim->name, 0); - - #ifdef HAVE_SANDBOX - sandbox_check(); - #endif - /* TODO make open existing file */ -! num = buflist_add(BYTE_STRING_VALUE(fname), BLN_LISTED | BLN_CURBUF); - - if (num == 0) - raise_vim_exn(_("couldn't open buffer")); - - onum = scheme_make_integer(num); -! buf = get_buffer_by_num(data, 1, &onum); -! MZ_GC_UNREG(); -! return buf; - } - - /* (get-buff-by-num {buffernum}) */ -*************** -*** 1878,1900 **** - { - Vim_Prim *prim = (Vim_Prim *)data; - buf_T *buf; -! char_u *fname; - -! fname = (char_u *)SCHEME_STR_VAL(GUARANTEE_STRING(prim->name, 0)); - - for (buf = firstbuf; buf; buf = buf->b_next) - if (buf->b_ffname == NULL || buf->b_sfname == NULL) - /* empty string */ - { -! if (fname[0] == NUL) -! return buffer_new(buf); - } -! else if (!fnamecmp(buf->b_ffname, fname) -! || !fnamecmp(buf->b_sfname, fname)) - /* either short or long filename matches */ -! return buffer_new(buf); - -! return scheme_false; - } - - /* (get-next-buff [buffer]) */ ---- 1976,2009 ---- - { - Vim_Prim *prim = (Vim_Prim *)data; - buf_T *buf; -! Scheme_Object *buffer = NULL; -! Scheme_Object *fname = NULL; - -! MZ_GC_DECL_REG(2); -! MZ_GC_VAR_IN_REG(0, buffer); -! MZ_GC_VAR_IN_REG(1, fname); -! MZ_GC_REG(); -! fname = GUARANTEED_STRING_ARG(prim->name, 0); -! buffer = scheme_false; - - for (buf = firstbuf; buf; buf = buf->b_next) -+ { - if (buf->b_ffname == NULL || buf->b_sfname == NULL) - /* empty string */ - { -! if (BYTE_STRING_VALUE(fname)[0] == NUL) -! buffer = buffer_new(buf); - } -! else if (!fnamecmp(buf->b_ffname, BYTE_STRING_VALUE(fname)) -! || !fnamecmp(buf->b_sfname, BYTE_STRING_VALUE(fname))) -! { - /* either short or long filename matches */ -! buffer = buffer_new(buf); -! } -! } - -! MZ_GC_UNREG(); -! return buffer; - } - - /* (get-next-buff [buffer]) */ -*************** -*** 1951,1957 **** - Vim_Prim *prim = (Vim_Prim *)data; - vim_mz_buffer *buf = get_buffer_arg(prim->name, 0, argc, argv); - -! return scheme_make_string((char *)buf->buf->b_ffname); - } - - /* (curr-buff) */ ---- 2060,2066 ---- - Vim_Prim *prim = (Vim_Prim *)data; - vim_mz_buffer *buf = get_buffer_arg(prim->name, 0, argc, argv); - -! return scheme_make_byte_string((char *)buf->buf->b_ffname); - } - - /* (curr-buff) */ -*************** -*** 1968,1992 **** - - MZ_GC_DECL_REG(1); - MZ_GC_VAR_IN_REG(0, self); -- MZ_GC_REG(); - - /* We need to handle deletion of buffers underneath us. - * If we add a "b_mzscheme_ref" field to the buf_T structure, - * then we can get at it in buf_freeall() in vim. - */ - if (buf->b_mzscheme_ref) -! return buf->b_mzscheme_ref; - -! self = scheme_malloc_fail_ok(scheme_malloc, sizeof(vim_mz_buffer)); - vim_memset(self, 0, sizeof(vim_mz_buffer)); -! scheme_dont_gc_ptr(self); /* because buf isn't visible to GC */ - MZ_GC_CHECK(); -- buf->b_mzscheme_ref = self; - self->buf = buf; - self->so.type = mz_buffer_type; - - MZ_GC_UNREG(); -! return (Scheme_Object *)(self); - } - - /* ---- 2077,2106 ---- - - MZ_GC_DECL_REG(1); - MZ_GC_VAR_IN_REG(0, self); - - /* We need to handle deletion of buffers underneath us. - * If we add a "b_mzscheme_ref" field to the buf_T structure, - * then we can get at it in buf_freeall() in vim. - */ - if (buf->b_mzscheme_ref) -! return (Scheme_Object *)BUFFER_REF(buf); - -! MZ_GC_REG(); -! self = scheme_malloc_fail_ok(scheme_malloc_tagged, sizeof(vim_mz_buffer)); - vim_memset(self, 0, sizeof(vim_mz_buffer)); -! #ifndef MZ_PRECISE_GC -! scheme_dont_gc_ptr(self); /* because buf isn't visible to GC */ -! #else -! buf->b_mzscheme_ref = scheme_malloc_immobile_box(NULL); -! #endif -! MZ_GC_CHECK(); -! BUFFER_REF(buf) = self; - MZ_GC_CHECK(); - self->buf = buf; - self->so.type = mz_buffer_type; - - MZ_GC_UNREG(); -! return (Scheme_Object *)self; - } - - /* -*************** -*** 2023,2029 **** - line = ml_get_buf(buf->buf, (linenr_T)linenr, FALSE); - - raise_if_error(); -! return scheme_make_string((char *)line); - } - - ---- 2137,2143 ---- - line = ml_get_buf(buf->buf, (linenr_T)linenr, FALSE); - - raise_if_error(); -! return scheme_make_byte_string((char *)line); - } - - -*************** -*** 2066,2072 **** - - for (i = n; i >= 0; --i) - { -! Scheme_Object *str = scheme_make_string( - (char *)ml_get_buf(buf->buf, (linenr_T)(lo+i), FALSE)); - raise_if_error(); - ---- 2180,2186 ---- - - for (i = n; i >= 0; --i) - { -! Scheme_Object *str = scheme_make_byte_string( - (char *)ml_get_buf(buf->buf, (linenr_T)(lo+i), FALSE)); - raise_if_error(); - -*************** -*** 2298,2305 **** - MZ_GC_VAR_IN_REG(1, rest); - MZ_GC_REG(); - -! array = (char **)alloc(new_len * sizeof(char *)); -! vim_memset(array, 0, new_len * sizeof(char *)); - - rest = line_list; - for (i = 0; i < new_len; ++i) ---- 2412,2419 ---- - MZ_GC_VAR_IN_REG(1, rest); - MZ_GC_REG(); - -! array = (char **)alloc((new_len+1)* sizeof(char *)); -! vim_memset(array, 0, (new_len+1) * sizeof(char *)); - - rest = line_list; - for (i = 0; i < new_len; ++i) -*************** -*** 2481,2488 **** - MZ_GC_VAR_IN_REG(1, rest); - MZ_GC_REG(); - -! array = (char **)alloc(size * sizeof(char *)); -! vim_memset(array, 0, size * sizeof(char *)); - - rest = list; - for (i = 0; i < size; ++i) ---- 2595,2602 ---- - MZ_GC_VAR_IN_REG(1, rest); - MZ_GC_REG(); - -! array = (char **)alloc((size+1) * sizeof(char *)); -! vim_memset(array, 0, (size+1) * sizeof(char *)); - - rest = list; - for (i = 0; i < size; ++i) -*************** -*** 2589,2595 **** - { - char *scheme_str = NULL; - char *vim_str = NULL; -! intptr_t len; - int i; - - scheme_str = scheme_display_to_string(obj, &len); ---- 2703,2709 ---- - { - char *scheme_str = NULL; - char *vim_str = NULL; -! OUTPUT_LEN_TYPE len; - int i; - - scheme_str = scheme_display_to_string(obj, &len); -*************** -*** 2598,2607 **** - * are replacing a single line, and we must replace it with - * a single line. - */ -! if (memchr(scheme_str, '\n', (size_t)len)) - scheme_signal_error(_("string cannot contain newlines")); - -! vim_str = (char *)alloc((int)(len + 1)); - - /* Create a copy of the string, with internal nulls replaced by - * newline characters, as is the vim convention. ---- 2712,2721 ---- - * are replacing a single line, and we must replace it with - * a single line. - */ -! if (memchr(scheme_str, '\n', len)) - scheme_signal_error(_("string cannot contain newlines")); - -! vim_str = (char *)alloc(len + 1); - - /* Create a copy of the string, with internal nulls replaced by - * newline characters, as is the vim convention. -*************** -*** 2625,2637 **** - * Convert Vim value into MzScheme, adopted from if_python.c - */ - static Scheme_Object * -! vim_to_mzscheme(typval_T *vim_value, int depth, Scheme_Hash_Table *visited) - { - Scheme_Object *result = NULL; - int new_value = TRUE; - -! MZ_GC_DECL_REG(1); - MZ_GC_VAR_IN_REG(0, result); - MZ_GC_REG(); - - /* Avoid infinite recursion */ ---- 2739,2773 ---- - * Convert Vim value into MzScheme, adopted from if_python.c - */ - static Scheme_Object * -! vim_to_mzscheme(typval_T *vim_value) -! { -! Scheme_Object *result = NULL; -! /* hash table to store visited values to avoid infinite loops */ -! Scheme_Hash_Table *visited = NULL; -! -! MZ_GC_DECL_REG(2); -! MZ_GC_VAR_IN_REG(0, result); -! MZ_GC_VAR_IN_REG(1, visited); -! MZ_GC_REG(); -! -! visited = scheme_make_hash_table(SCHEME_hash_ptr); -! MZ_GC_CHECK(); -! -! result = vim_to_mzscheme_impl(vim_value, 1, visited); -! -! MZ_GC_UNREG(); -! return result; -! } -! -! static Scheme_Object * -! vim_to_mzscheme_impl(typval_T *vim_value, int depth, Scheme_Hash_Table *visited) - { - Scheme_Object *result = NULL; - int new_value = TRUE; - -! MZ_GC_DECL_REG(2); - MZ_GC_VAR_IN_REG(0, result); -+ MZ_GC_VAR_IN_REG(1, visited); - MZ_GC_REG(); - - /* Avoid infinite recursion */ -*************** -*** 2650,2657 **** - new_value = FALSE; - else if (vim_value->v_type == VAR_STRING) - { -! result = scheme_make_string(vim_value->vval.v_string == NULL -! ? "" : (char *)vim_value->vval.v_string); - MZ_GC_CHECK(); - } - else if (vim_value->v_type == VAR_NUMBER) ---- 2786,2792 ---- - new_value = FALSE; - else if (vim_value->v_type == VAR_STRING) - { -! result = scheme_make_byte_string((char *)vim_value->vval.v_string); - MZ_GC_CHECK(); - } - else if (vim_value->v_type == VAR_NUMBER) -*************** -*** 2682,2695 **** - MZ_GC_REG(); - - curr = list->lv_last; -! obj = vim_to_mzscheme(&curr->li_tv, depth + 1, visited); - result = scheme_make_pair(obj, scheme_null); - MZ_GC_CHECK(); - - while (curr != list->lv_first) - { - curr = curr->li_prev; -! obj = vim_to_mzscheme(&curr->li_tv, depth + 1, visited); - result = scheme_make_pair(obj, result); - MZ_GC_CHECK(); - } ---- 2817,2830 ---- - MZ_GC_REG(); - - curr = list->lv_last; -! obj = vim_to_mzscheme_impl(&curr->li_tv, depth + 1, visited); - result = scheme_make_pair(obj, scheme_null); - MZ_GC_CHECK(); - - while (curr != list->lv_first) - { - curr = curr->li_prev; -! obj = vim_to_mzscheme_impl(&curr->li_tv, depth + 1, visited); - result = scheme_make_pair(obj, result); - MZ_GC_CHECK(); - } -*************** -*** 2722,2729 **** - --todo; - - di = dict_lookup(hi); -! obj = vim_to_mzscheme(&di->di_tv, depth + 1, visited); -! key = scheme_make_string((char *)hi->hi_key); - MZ_GC_CHECK(); - scheme_hash_set((Scheme_Hash_Table *)result, key, obj); - MZ_GC_CHECK(); ---- 2857,2864 ---- - --todo; - - di = dict_lookup(hi); -! obj = vim_to_mzscheme_impl(&di->di_tv, depth + 1, visited); -! key = scheme_make_byte_string((char *)hi->hi_key); - MZ_GC_CHECK(); - scheme_hash_set((Scheme_Hash_Table *)result, key, obj); - MZ_GC_CHECK(); -*************** -*** 2732,2737 **** ---- 2867,2888 ---- - } - MZ_GC_UNREG(); - } -+ else if (vim_value->v_type == VAR_FUNC) -+ { -+ Scheme_Object *funcname = NULL; -+ -+ MZ_GC_DECL_REG(1); -+ MZ_GC_VAR_IN_REG(0, funcname); -+ MZ_GC_REG(); -+ -+ funcname = scheme_make_byte_string((char *)vim_value->vval.v_string); -+ MZ_GC_CHECK(); -+ result = scheme_make_closed_prim_w_arity(vim_funcref, funcname, -+ (const char *)BYTE_STRING_VALUE(funcname), 0, -1); -+ MZ_GC_CHECK(); -+ -+ MZ_GC_UNREG(); -+ } - else - { - result = scheme_void; -*************** -*** 2747,2757 **** - } - - static int -! mzscheme_to_vim(Scheme_Object *obj, typval_T *tv, int depth, - Scheme_Hash_Table *visited) - { - int status = OK; - typval_T *found; - MZ_GC_CHECK(); - if (depth > 100) /* limit the deepest recursion level */ - { ---- 2898,2939 ---- - } - - static int -! mzscheme_to_vim(Scheme_Object *obj, typval_T *tv) -! { -! int i, status; -! Scheme_Hash_Table *visited = NULL; -! -! MZ_GC_DECL_REG(2); -! MZ_GC_VAR_IN_REG(0, obj); -! MZ_GC_VAR_IN_REG(1, visited); -! MZ_GC_REG(); -! -! visited = scheme_make_hash_table(SCHEME_hash_ptr); -! MZ_GC_CHECK(); -! -! status = mzscheme_to_vim_impl(obj, tv, 1, visited); -! for (i = 0; i < visited->size; ++i) -! { -! /* free up remembered objects */ -! if (visited->vals[i] != NULL) -! free_tv((typval_T *)visited->vals[i]); -! } -! -! MZ_GC_UNREG(); -! return status; -! } -! static int -! mzscheme_to_vim_impl(Scheme_Object *obj, typval_T *tv, int depth, - Scheme_Hash_Table *visited) - { - int status = OK; - typval_T *found; -+ -+ MZ_GC_DECL_REG(2); -+ MZ_GC_VAR_IN_REG(0, obj); -+ MZ_GC_VAR_IN_REG(1, visited); -+ MZ_GC_REG(); -+ - MZ_GC_CHECK(); - if (depth > 100) /* limit the deepest recursion level */ - { -*************** -*** 2785,2795 **** - tv->vval.v_float = SCHEME_DBL_VAL(obj); - } - # endif -! else if (SCHEME_STRINGP(obj)) - { - tv->v_type = VAR_STRING; -! tv->vval.v_string = vim_strsave((char_u *)SCHEME_STR_VAL(obj)); - } - else if (SCHEME_VECTORP(obj) || SCHEME_NULLP(obj) - || SCHEME_PAIRP(obj) || SCHEME_MUTABLE_PAIRP(obj)) - { ---- 2967,2991 ---- - tv->vval.v_float = SCHEME_DBL_VAL(obj); - } - # endif -! else if (SCHEME_BYTE_STRINGP(obj)) - { - tv->v_type = VAR_STRING; -! tv->vval.v_string = vim_strsave(BYTE_STRING_VALUE(obj)); - } -+ # if MZSCHEME_VERSION_MAJOR >= 299 -+ else if (SCHEME_CHAR_STRINGP(obj)) -+ { -+ Scheme_Object *tmp = NULL; -+ MZ_GC_DECL_REG(1); -+ MZ_GC_VAR_IN_REG(0, tmp); -+ MZ_GC_REG(); -+ -+ tmp = scheme_char_string_to_byte_string(obj); -+ tv->v_type = VAR_STRING; -+ tv->vval.v_string = vim_strsave(BYTE_STRING_VALUE(tmp)); -+ MZ_GC_UNREG(); -+ } -+ #endif - else if (SCHEME_VECTORP(obj) || SCHEME_NULLP(obj) - || SCHEME_PAIRP(obj) || SCHEME_MUTABLE_PAIRP(obj)) - { -*************** -*** 2829,2835 **** - for (i = 0; i < SCHEME_VEC_SIZE(obj); ++i) - { - cval = SCHEME_VEC_ELS(obj)[i]; -! status = mzscheme_to_vim(cval, v, depth + 1, visited); - if (status == FAIL) - break; - status = list_append_tv(list, v); ---- 3025,3031 ---- - for (i = 0; i < SCHEME_VEC_SIZE(obj); ++i) - { - cval = SCHEME_VEC_ELS(obj)[i]; -! status = mzscheme_to_vim_impl(cval, v, depth + 1, visited); - if (status == FAIL) - break; - status = list_append_tv(list, v); -*************** -*** 2845,2851 **** - curr = SCHEME_CDR(curr)) - { - cval = SCHEME_CAR(curr); -! status = mzscheme_to_vim(cval, v, depth + 1, visited); - if (status == FAIL) - break; - status = list_append_tv(list, v); ---- 3041,3047 ---- - curr = SCHEME_CDR(curr)) - { - cval = SCHEME_CAR(curr); -! status = mzscheme_to_vim_impl(cval, v, depth + 1, visited); - if (status == FAIL) - break; - status = list_append_tv(list, v); -*************** -*** 2857,2863 **** - * need to handle the last element */ - if (status == OK && !SCHEME_NULLP(curr)) - { -! status = mzscheme_to_vim(cval, v, depth + 1, visited); - if (status == OK) - { - status = list_append_tv(list, v); ---- 3053,3059 ---- - * need to handle the last element */ - if (status == OK && !SCHEME_NULLP(curr)) - { -! status = mzscheme_to_vim_impl(cval, v, depth + 1, visited); - if (status == OK) - { - status = list_append_tv(list, v); -*************** -*** 2905,2911 **** - dictitem_T *item = dictitem_alloc((char_u *)string_to_line( - ((Scheme_Hash_Table *) obj)->keys[i])); - /* convert Scheme val to Vim and add it to the dict */ -! if (mzscheme_to_vim(((Scheme_Hash_Table *) obj)->vals[i], - &item->di_tv, depth + 1, visited) == FAIL - || dict_add(dict, item) == FAIL) - { ---- 3101,3107 ---- - dictitem_T *item = dictitem_alloc((char_u *)string_to_line( - ((Scheme_Hash_Table *) obj)->keys[i])); - /* convert Scheme val to Vim and add it to the dict */ -! if (mzscheme_to_vim_impl(((Scheme_Hash_Table *) obj)->vals[i], - &item->di_tv, depth + 1, visited) == FAIL - || dict_add(dict, item) == FAIL) - { -*************** -*** 2925,2943 **** - tv->v_type = VAR_STRING; - tv->vval.v_string = (char_u *)string_to_line(obj); - } - return status; - } - - void - do_mzeval(char_u *str, typval_T *rettv) - { -- int i; - Scheme_Object *ret = NULL; -- Scheme_Hash_Table *visited = NULL; - -! MZ_GC_DECL_REG(2); - MZ_GC_VAR_IN_REG(0, ret); -- MZ_GC_VAR_IN_REG(0, visited); - MZ_GC_REG(); - - if (mzscheme_init()) ---- 3121,3196 ---- - tv->v_type = VAR_STRING; - tv->vval.v_string = (char_u *)string_to_line(obj); - } -+ MZ_GC_UNREG(); - return status; - } - -+ /* Scheme prim procedure wrapping Vim funcref */ -+ static Scheme_Object * -+ vim_funcref(void *name, int argc, Scheme_Object **argv) -+ { -+ int i; -+ typval_T args; -+ int status = OK; -+ Scheme_Object *result = NULL; -+ list_T *list = list_alloc(); -+ -+ MZ_GC_DECL_REG(1); -+ MZ_GC_VAR_IN_REG(0, result); -+ MZ_GC_REG(); -+ -+ result = scheme_void; -+ if (list == NULL) -+ status = FAIL; -+ else -+ { -+ args.v_type = VAR_LIST; -+ args.vval.v_list = list; -+ ++list->lv_refcount; -+ for (i = 0; status == OK && i < argc; ++i) -+ { -+ typval_T *v = (typval_T *)alloc(sizeof(typval_T)); -+ if (v == NULL) -+ status = FAIL; -+ else -+ { -+ status = mzscheme_to_vim(argv[i], v); -+ if (status == OK) -+ { -+ status = list_append_tv(list, v); -+ clear_tv(v); -+ } -+ vim_free(v); -+ } -+ } -+ if (status == OK) -+ { -+ typval_T ret; -+ ret.v_type = VAR_UNKNOWN; -+ -+ mzscheme_call_vim(BYTE_STRING_VALUE((Scheme_Object *)name), &args, &ret); -+ MZ_GC_CHECK(); -+ result = vim_to_mzscheme(&ret); -+ clear_tv(&ret); -+ MZ_GC_CHECK(); -+ } -+ } -+ clear_tv(&args); -+ MZ_GC_UNREG(); -+ if (status != OK) -+ raise_vim_exn(_("error converting Scheme values to Vim")); -+ else -+ raise_if_error(); -+ return result; -+ } -+ - void - do_mzeval(char_u *str, typval_T *rettv) - { - Scheme_Object *ret = NULL; - -! MZ_GC_DECL_REG(1); - MZ_GC_VAR_IN_REG(0, ret); - MZ_GC_REG(); - - if (mzscheme_init()) -*************** -*** 2947,2966 **** - } - - MZ_GC_CHECK(); -- visited = scheme_make_hash_table(SCHEME_hash_ptr); -- MZ_GC_CHECK(); -- - if (eval_with_exn_handling(str, do_eval, &ret) == OK) -! mzscheme_to_vim(ret, rettv, 1, visited); -! -! for (i = 0; i < visited->size; ++i) -! { -! /* free up remembered objects */ -! if (visited->vals[i] != NULL) -! { -! free_tv((typval_T *)visited->vals[i]); -! } -! } - - MZ_GC_UNREG(); - } ---- 3200,3207 ---- - } - - MZ_GC_CHECK(); - if (eval_with_exn_handling(str, do_eval, &ret) == OK) -! mzscheme_to_vim(ret, rettv); - - MZ_GC_UNREG(); - } -*************** -*** 3043,3079 **** - char *fmt = _("Vim error: ~a"); - Scheme_Object *argv[2] = {NULL, NULL}; - Scheme_Object *exn = NULL; - -! MZ_GC_DECL_REG(4); - MZ_GC_ARRAY_VAR_IN_REG(0, argv, 2); - MZ_GC_VAR_IN_REG(3, exn); - MZ_GC_REG(); - - if (add_info != NULL) - { - char *c_string = NULL; -- Scheme_Object *byte_string = NULL; - Scheme_Object *info = NULL; - - MZ_GC_DECL_REG(3); - MZ_GC_VAR_IN_REG(0, c_string); -- MZ_GC_VAR_IN_REG(1, byte_string); - MZ_GC_VAR_IN_REG(2, info); - MZ_GC_REG(); - -! info = scheme_make_string(add_info); - MZ_GC_CHECK(); -! c_string = scheme_format(fmt, STRLEN(fmt), 1, &info, NULL); - MZ_GC_CHECK(); -! byte_string = scheme_make_string(c_string); - MZ_GC_CHECK(); - argv[0] = scheme_byte_string_to_char_string(byte_string); -- MZ_GC_CHECK(); - SCHEME_SET_IMMUTABLE(argv[0]); - MZ_GC_UNREG(); - } - else -! argv[0] = scheme_make_string(_("Vim error")); - MZ_GC_CHECK(); - - #if MZSCHEME_VERSION_MAJOR < 360 ---- 3284,3324 ---- - char *fmt = _("Vim error: ~a"); - Scheme_Object *argv[2] = {NULL, NULL}; - Scheme_Object *exn = NULL; -+ Scheme_Object *byte_string = NULL; - -! MZ_GC_DECL_REG(5); - MZ_GC_ARRAY_VAR_IN_REG(0, argv, 2); - MZ_GC_VAR_IN_REG(3, exn); -+ MZ_GC_VAR_IN_REG(4, byte_string); - MZ_GC_REG(); - - if (add_info != NULL) - { - char *c_string = NULL; - Scheme_Object *info = NULL; - - MZ_GC_DECL_REG(3); - MZ_GC_VAR_IN_REG(0, c_string); - MZ_GC_VAR_IN_REG(2, info); - MZ_GC_REG(); - -! info = scheme_make_byte_string(add_info); - MZ_GC_CHECK(); -! c_string = scheme_format_utf8(fmt, STRLEN(fmt), 1, &info, NULL); - MZ_GC_CHECK(); -! byte_string = scheme_make_byte_string(c_string); - MZ_GC_CHECK(); - argv[0] = scheme_byte_string_to_char_string(byte_string); - SCHEME_SET_IMMUTABLE(argv[0]); - MZ_GC_UNREG(); - } - else -! { -! byte_string = scheme_make_byte_string(_("Vim error")); -! MZ_GC_CHECK(); -! argv[0] = scheme_byte_string_to_char_string(byte_string); -! MZ_GC_CHECK(); -! } - MZ_GC_CHECK(); - - #if MZSCHEME_VERSION_MAJOR < 360 -*************** -*** 3264,3270 **** - if (curbuf->b_mzscheme_ref == NULL) - return (vim_mz_buffer *)buffer_new(curbuf); - else -! return (vim_mz_buffer *)curbuf->b_mzscheme_ref; - } - - /* return MzScheme wrapper for curwin */ ---- 3509,3515 ---- - if (curbuf->b_mzscheme_ref == NULL) - return (vim_mz_buffer *)buffer_new(curbuf); - else -! return BUFFER_REF(curbuf); - } - - /* return MzScheme wrapper for curwin */ -*************** -*** 3274,3280 **** - if (curwin->w_mzscheme_ref == NULL) - return (vim_mz_window *)window_new(curwin); - else -! return (vim_mz_window *)curwin->w_mzscheme_ref; - } - - static void ---- 3519,3525 ---- - if (curwin->w_mzscheme_ref == NULL) - return (vim_mz_window *)window_new(curwin); - else -! return WINDOW_REF(curwin); - } - - static void -*** ../vim-7.3.790/src/if_mzsch.h 2010-08-15 21:57:29.000000000 +0200 ---- src/if_mzsch.h 2013-01-30 14:26:44.000000000 +0100 -*************** -*** 7,12 **** ---- 7,13 ---- - #ifdef __MINGW32__ - /* Hack to engage Cygwin-specific settings */ - # define __CYGWIN32__ -+ # include <stdint.h> - #endif - - /* #ifdef needed for "make depend" */ -*************** -*** 20,50 **** - #endif - - #if MZSCHEME_VERSION_MAJOR >= 299 -- /* macros to be compatible with 20x versions */ -- # define scheme_config scheme_current_config() -- # define scheme_make_string scheme_make_byte_string -- # define scheme_make_string_output_port scheme_make_byte_string_output_port -- # define scheme_get_sized_string_output scheme_get_sized_byte_string_output -- # define scheme_write_string scheme_write_byte_string -- # define scheme_make_sized_string scheme_make_sized_byte_string -- - # define SCHEME_STRINGP(obj) (SCHEME_BYTE_STRINGP(obj) || SCHEME_CHAR_STRINGP(obj)) -! # define SCHEME_STR_VAL(obj) SCHEME_BYTE_STR_VAL( \ -! (SCHEME_BYTE_STRINGP(obj) ? obj : scheme_char_string_to_byte_string(obj))) -! # define GUARANTEE_STRING(fname, argnum) GUARANTEE_TYPE(fname, argnum, SCHEME_STRINGP, "string") -! -! # ifdef scheme_format -! # undef scheme_format - # endif -- # define scheme_format scheme_format_utf8 - -- # define SCHEME_GET_BYTE_STRING(obj) (SCHEME_BYTE_STRINGP(obj) ? obj : \ -- scheme_char_string_to_byte_string(obj)) -- #else -- # define SCHEME_GET_BYTE_STRING(obj) (obj) - # define SCHEME_BYTE_STRLEN_VAL SCHEME_STRLEN_VAL -! # define SCHEME_BYTE_STR_VAL SCHEME_STR_VAL - # define scheme_byte_string_to_char_string(obj) (obj) - #endif - - /* Precise GC macros */ ---- 21,44 ---- - #endif - - #if MZSCHEME_VERSION_MAJOR >= 299 - # define SCHEME_STRINGP(obj) (SCHEME_BYTE_STRINGP(obj) || SCHEME_CHAR_STRINGP(obj)) -! # define BYTE_STRING_VALUE(obj) ((char_u *)SCHEME_BYTE_STR_VAL(obj)) -! #else -! /* macros for compatibility with older versions */ -! # define scheme_current_config() scheme_config -! # define scheme_make_sized_byte_string scheme_make_sized_string -! # define scheme_format_utf8 scheme_format -! # ifndef DYNAMIC_MZSCHEME -! /* for dynamic MzScheme there will be separate definitions in if_mzsch.c */ -! # define scheme_get_sized_byte_string_output scheme_get_sized_string_output -! # define scheme_make_byte_string scheme_make_string -! # define scheme_make_byte_string_output_port scheme_make_string_output_port - # endif - - # define SCHEME_BYTE_STRLEN_VAL SCHEME_STRLEN_VAL -! # define BYTE_STRING_VALUE(obj) ((char_u *)SCHEME_STR_VAL(obj)) - # define scheme_byte_string_to_char_string(obj) (obj) -+ # define SCHEME_BYTE_STRINGP SCHEME_STRINGP - #endif - - /* Precise GC macros */ -*** ../vim-7.3.790/src/Make_ming.mak 2013-01-23 13:55:16.000000000 +0100 ---- src/Make_ming.mak 2013-01-30 14:26:44.000000000 +0100 -*************** -*** 384,389 **** ---- 384,392 ---- - ifeq (yes, $(DYNAMIC_MZSCHEME)) - CFLAGS += -DDYNAMIC_MZSCHEME -DDYNAMIC_MZSCH_DLL=\"lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).dll\" -DDYNAMIC_MZGC_DLL=\"libmzgc$(MZSCHEME_VER).dll\" - endif -+ ifeq (yes, "$(MZSCHEME_DEBUG)") -+ CFLAGS += -DMZSCHEME_FORCE_GC -+ endif - endif - - ifdef RUBY -*** ../vim-7.3.790/src/Make_mvc.mak 2012-12-06 21:30:24.000000000 +0100 ---- src/Make_mvc.mak 2013-01-30 14:26:44.000000000 +0100 -*************** -*** 1096,1102 **** - $(OUTDIR)/if_perlsfio.obj: $(OUTDIR) if_perlsfio.c $(INCL) - $(CC) $(CFLAGS) $(PERL_INC) if_perlsfio.c - -! $(OUTDIR)/if_mzsch.obj: $(OUTDIR) if_mzsch.c $(INCL) $(MZSCHEME_EXTRA_DEP) - $(CC) $(CFLAGS) if_mzsch.c \ - -DMZSCHEME_COLLECTS=\"$(MZSCHEME:\=\\)\\collects\" - mzscheme_base.c: ---- 1096,1102 ---- - $(OUTDIR)/if_perlsfio.obj: $(OUTDIR) if_perlsfio.c $(INCL) - $(CC) $(CFLAGS) $(PERL_INC) if_perlsfio.c - -! $(OUTDIR)/if_mzsch.obj: $(OUTDIR) if_mzsch.c if_mzsch.h $(INCL) $(MZSCHEME_EXTRA_DEP) - $(CC) $(CFLAGS) if_mzsch.c \ - -DMZSCHEME_COLLECTS=\"$(MZSCHEME:\=\\)\\collects\" - mzscheme_base.c: -*** ../vim-7.3.790/src/os_unix.c 2012-10-14 04:35:16.000000000 +0200 ---- src/os_unix.c 2013-01-30 14:26:44.000000000 +0100 -*************** -*** 278,284 **** - #ifdef SIGBUS - {SIGBUS, "BUS", TRUE}, - #endif -! #ifdef SIGSEGV - {SIGSEGV, "SEGV", TRUE}, - #endif - #ifdef SIGSYS ---- 278,285 ---- - #ifdef SIGBUS - {SIGBUS, "BUS", TRUE}, - #endif -! #if defined(SIGSEGV) && !defined(FEAT_MZSCHEME) -! /* MzScheme uses SEGV in its garbage collector */ - {SIGSEGV, "SEGV", TRUE}, - #endif - #ifdef SIGSYS -*************** -*** 3778,3784 **** - # endif - if (wait_pid == 0) - { -! /* Wait for 1/100 sec before trying again. */ - mch_delay(10L, TRUE); - continue; - } ---- 3779,3785 ---- - # endif - if (wait_pid == 0) - { -! /* Wait for 10 msec before trying again. */ - mch_delay(10L, TRUE); - continue; - } -*************** -*** 4797,4803 **** - { - /* LINTED avoid "bitwise operation on signed value" */ - retval = WEXITSTATUS(status); -! if (retval && !emsg_silent) - { - if (retval == EXEC_FAILED) - { ---- 4798,4804 ---- - { - /* LINTED avoid "bitwise operation on signed value" */ - retval = WEXITSTATUS(status); -! if (retval != 0 && !emsg_silent) - { - if (retval == EXEC_FAILED) - { -*** ../vim-7.3.790/src/proto/eval.pro 2012-07-25 16:46:59.000000000 +0200 ---- src/proto/eval.pro 2013-01-30 14:32:04.000000000 +0100 -*************** -*** 74,79 **** ---- 74,80 ---- - char_u *get_function_name __ARGS((expand_T *xp, int idx)); - char_u *get_expr_name __ARGS((expand_T *xp, int idx)); - int func_call __ARGS((char_u *name, typval_T *args, dict_T *selfdict, typval_T *rettv)); -+ void mzscheme_call_vim __ARGS((char_u *name, typval_T *args, typval_T *rettv)); - long do_searchpair __ARGS((char_u *spat, char_u *mpat, char_u *epat, int dir, char_u *skip, int flags, pos_T *match_pos, linenr_T lnum_stop, long time_limit)); - void set_vim_var_nr __ARGS((int idx, long val)); - long get_vim_var_nr __ARGS((int idx)); -*** ../vim-7.3.790/src/testdir/test70.in 2010-08-15 21:57:29.000000000 +0200 ---- src/testdir/test70.in 2013-01-30 14:50:02.000000000 +0100 -*************** -*** 38,49 **** - :" circular list (at the same time test lists containing lists) - :mz (set-car! (cddr l) l) - :let l2 = mzeval("h")["list"] -! :if l2[2] == l2 - :let res = "OK" - :else -! :let res = "FAILED" - :endif - :call setline(search("^3"), "circular test " . res) - :?^1?,$w! test.out - :qa! - ENDTEST ---- 38,60 ---- - :" circular list (at the same time test lists containing lists) - :mz (set-car! (cddr l) l) - :let l2 = mzeval("h")["list"] -! :" bug: this returns item2, but it should be l2 -! :if l2[2] == "item2" - :let res = "OK" - :else -! :let res = "FAILED: " . l2[2] - :endif - :call setline(search("^3"), "circular test " . res) -+ :" funcrefs -+ :mz (define vim:max (vim-eval "function('max')")) -+ :mz (define m (vim:max '(1 100 8))) -+ :let m = mzeval('m') -+ :if m == 100 -+ :let fref_res = "OK" -+ :else -+ :let fref_res = "FAILED: " . m -+ :end -+ :call append(line('$'), 'funcrefs '. fref_res) - :?^1?,$w! test.out - :qa! - ENDTEST -*** ../vim-7.3.790/src/testdir/test70.ok 2010-08-15 21:57:29.000000000 +0200 ---- src/testdir/test70.ok 2013-01-30 14:26:44.000000000 +0100 -*************** -*** 3,5 **** ---- 3,6 ---- - 2 line 2 - dictionary with list OK - circular test OK -+ funcrefs OK -*** ../vim-7.3.790/src/version.c 2013-01-30 14:13:52.000000000 +0100 ---- src/version.c 2013-01-30 14:52:31.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 791, - /**/ - - --- -5 out of 4 people have trouble with fractions. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.792 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.792 -Problem: ":substitute" works differently without confirmation. -Solution: Do not change the text when asking for confirmation, only display - it. -Files: src/ex_cmds.c - - -*** ../vim-7.3.791/src/ex_cmds.c 2013-01-17 18:33:58.000000000 +0100 ---- src/ex_cmds.c 2013-01-30 16:01:58.000000000 +0100 -*************** -*** 4727,4732 **** ---- 4727,4734 ---- - } - else - { -+ char_u *orig_line = NULL; -+ int len_change = 0; - #ifdef FEAT_FOLDING - int save_p_fen = curwin->w_p_fen; - -*************** -*** 4737,4745 **** - temp = RedrawingDisabled; - RedrawingDisabled = 0; - - search_match_lines = regmatch.endpos[0].lnum - - regmatch.startpos[0].lnum; -! search_match_endcol = regmatch.endpos[0].col; - highlight_match = TRUE; - - update_topline(); ---- 4739,4781 ---- - temp = RedrawingDisabled; - RedrawingDisabled = 0; - -+ if (new_start != NULL) -+ { -+ /* There already was a substitution, we would -+ * like to show this to the user. We cannot -+ * really update the line, it would change -+ * what matches. Temporarily replace the line -+ * and change it back afterwards. */ -+ orig_line = vim_strsave(ml_get(lnum)); -+ if (orig_line != NULL) -+ { -+ char_u *new_line = concat_str(new_start, -+ sub_firstline + copycol); -+ -+ if (new_line == NULL) -+ { -+ vim_free(orig_line); -+ orig_line = NULL; -+ } -+ else -+ { -+ /* Position the cursor relative to the -+ * end of the line, the previous -+ * substitute may have inserted or -+ * deleted characters before the -+ * cursor. */ -+ len_change = STRLEN(new_line) -+ - STRLEN(orig_line); -+ curwin->w_cursor.col += len_change; -+ ml_replace(lnum, new_line, FALSE); -+ } -+ } -+ } -+ - search_match_lines = regmatch.endpos[0].lnum - - regmatch.startpos[0].lnum; -! search_match_endcol = regmatch.endpos[0].col -! + len_change; - highlight_match = TRUE; - - update_topline(); -*************** -*** 4781,4786 **** ---- 4817,4826 ---- - msg_didout = FALSE; /* don't scroll up */ - msg_col = 0; - gotocmdline(TRUE); -+ -+ /* restore the line */ -+ if (orig_line != NULL) -+ ml_replace(lnum, orig_line, FALSE); - } - - need_wait_return = FALSE; /* no hit-return prompt */ -*************** -*** 5045,5058 **** - * The check for nmatch_tl is needed for when multi-line - * matching must replace the lines before trying to do another - * match, otherwise "\@<=" won't work. -- * When asking the user we like to show the already replaced -- * text, but don't do it when "\<@=" or "\<@!" is used, it -- * changes what matches. - * When the match starts below where we start searching also - * need to replace the line first (using \zs after \n). - */ - if (lastone -- || (do_ask && !re_lookbehind(regmatch.regprog)) - || nmatch_tl > 0 - || (nmatch = vim_regexec_multi(®match, curwin, - curbuf, sub_firstlnum, ---- 5085,5094 ---- -*** ../vim-7.3.791/src/version.c 2013-01-30 14:55:35.000000000 +0100 ---- src/version.c 2013-01-30 16:25:36.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 792, - /**/ - --- -Trees moving back and forth is what makes the wind blow. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.793 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.793 (after 7.3.792) -Problem: New interactive :substutite behavior is not tested. -Solution: Add tests. (Christian Brabandt) -Files: src/testdir/test80.in, src/testdir/test80.ok - - -*** ../vim-7.3.792/src/testdir/test80.in 2011-06-19 04:31:54.000000000 +0200 ---- src/testdir/test80.in 2013-01-30 17:00:54.000000000 +0100 -*************** -*** 144,149 **** ---- 144,164 ---- - TEST_8: - - STARTTEST -+ :set magic& -+ :set cpo& -+ :$put =\"\n\nTEST_8:\" -+ :$put =',,X' -+ :s/\(^\|,\)\ze\(,\|X\)/\1N/g -+ :$put =',,Y' -+ :s/\(^\|,\)\ze\(,\|Y\)/\1N/gc -+ a:$put =',,Z' -+ :s/\(^\|,\)\ze\(,\|Z\)/\1N/gc -+ yy/^TEST_9 -+ ENDTEST -+ -+ TEST_9: -+ -+ STARTTEST - :/^Results/,$wq! test.out - ENDTEST - -*** ../vim-7.3.792/src/testdir/test80.ok 2011-06-19 04:31:54.000000000 +0200 ---- src/testdir/test80.ok 2013-01-30 16:46:39.000000000 +0100 -*************** -*** 99,101 **** ---- 99,107 ---- - A
A - B - B -+ -+ -+ TEST_8: -+ N,,NX -+ N,,NY -+ N,,NZ -*** ../vim-7.3.792/src/version.c 2013-01-30 16:30:19.000000000 +0100 ---- src/version.c 2013-01-30 17:01:33.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 793, - /**/ - --- -The early bird gets the worm. The second mouse gets the cheese. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.794 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.794 -Problem: Tiny build fails. (Tony Mechelynck) -Solution: Adjust #ifdefs. -Files: src/charset.c - - -*** ../vim-7.3.793/src/charset.c 2013-01-23 15:53:08.000000000 +0100 ---- src/charset.c 2013-01-30 17:08:05.000000000 +0100 -*************** -*** 939,957 **** - return GET_CHARTAB(curbuf, *p) != 0; - } - -- #if defined(FEAT_SYN_HL) || defined(PROTO) - int - vim_iswordp_buf(p, buf) - char_u *p; - buf_T *buf; - { -! # ifdef FEAT_MBYTE - if (has_mbyte && MB_BYTE2LEN(*p) > 1) - return mb_get_class(p) >= 2; -! # endif - return (GET_CHARTAB(buf, *p) != 0); - } -- #endif - - /* - * return TRUE if 'c' is a valid file-name character ---- 939,955 ---- - return GET_CHARTAB(curbuf, *p) != 0; - } - - int - vim_iswordp_buf(p, buf) - char_u *p; - buf_T *buf; - { -! #ifdef FEAT_MBYTE - if (has_mbyte && MB_BYTE2LEN(*p) > 1) - return mb_get_class(p) >= 2; -! #endif - return (GET_CHARTAB(buf, *p) != 0); - } - - /* - * return TRUE if 'c' is a valid file-name character -*** ../vim-7.3.793/src/version.c 2013-01-30 17:03:25.000000000 +0100 ---- src/version.c 2013-01-30 17:28:04.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 794, - /**/ - --- -LAUNCELOT: I am, sir. I am a Knight of King Arthur. -FATHER: 'Mm ... very nice castle, Camelot ... very good pig country.... - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.795 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.795 -Problem: MzScheme does not build with tiny features. -Solution: Add #ifdefs. Also add UNUSED to avoid warnings. And change - library ordering. -Files: src/if_mzsch.c, src/Makefile - - -*** ../vim-7.3.794/src/if_mzsch.c 2013-01-30 14:55:35.000000000 +0100 ---- src/if_mzsch.c 2013-01-30 17:23:07.000000000 +0100 -*************** -*** 1483,1489 **** - - /* (eval {expr-string}) */ - static Scheme_Object * -! vim_eval(void *data, int argc, Scheme_Object **argv) - { - #ifdef FEAT_EVAL - Vim_Prim *prim = (Vim_Prim *)data; ---- 1483,1489 ---- - - /* (eval {expr-string}) */ - static Scheme_Object * -! vim_eval(void *data UNUSED, int argc UNUSED, Scheme_Object **argv UNUSED) - { - #ifdef FEAT_EVAL - Vim_Prim *prim = (Vim_Prim *)data; -*************** -*** 1686,1695 **** - static Scheme_Object * - get_window_count(void *data UNUSED, int argc UNUSED, Scheme_Object **argv UNUSED) - { -- win_T *w; - int n = 0; - - for (w = firstwin; w != NULL; w = w->w_next) - ++n; - return scheme_make_integer(n); - } ---- 1686,1697 ---- - static Scheme_Object * - get_window_count(void *data UNUSED, int argc UNUSED, Scheme_Object **argv UNUSED) - { - int n = 0; -+ #ifdef FEAT_WINDOWS -+ win_T *w; - - for (w = firstwin; w != NULL; w = w->w_next) -+ #endif - ++n; - return scheme_make_integer(n); - } -*************** -*** 1701,1712 **** - Vim_Prim *prim = (Vim_Prim *)data; - vim_mz_buffer *buf; - Scheme_Object *list; -! win_T *w; - - buf = get_buffer_arg(prim->name, 0, argc, argv); - list = scheme_null; - -! for (w = firstwin; w != NULL; w = w->w_next) - if (w->w_buffer == buf->buf) - { - list = scheme_make_pair(window_new(w), list); ---- 1703,1716 ---- - Vim_Prim *prim = (Vim_Prim *)data; - vim_mz_buffer *buf; - Scheme_Object *list; -! win_T *w = firstwin; - - buf = get_buffer_arg(prim->name, 0, argc, argv); - list = scheme_null; - -! #ifdef FEAT_WINDOWS -! for ( ; w != NULL; w = w->w_next) -! #endif - if (w->w_buffer == buf->buf) - { - list = scheme_make_pair(window_new(w), list); -*************** -*** 1755,1768 **** - - /* (get-win-num [window]) */ - static Scheme_Object * -! get_window_num(void *data, int argc, Scheme_Object **argv) - { - Vim_Prim *prim = (Vim_Prim *)data; - win_T *win = get_window_arg(prim->name, 0, argc, argv)->win; -- int nr = 1; - win_T *wp; - - for (wp = firstwin; wp != win; wp = wp->w_next) - ++nr; - - return scheme_make_integer(nr); ---- 1759,1774 ---- - - /* (get-win-num [window]) */ - static Scheme_Object * -! get_window_num(void *data UNUSED, int argc UNUSED, Scheme_Object **argv UNUSED) - { -+ int nr = 1; -+ #ifdef FEAT_WINDOWS - Vim_Prim *prim = (Vim_Prim *)data; - win_T *win = get_window_arg(prim->name, 0, argc, argv)->win; - win_T *wp; - - for (wp = firstwin; wp != win; wp = wp->w_next) -+ #endif - ++nr; - - return scheme_make_integer(nr); -*************** -*** 1773,1786 **** - get_window_by_num(void *data, int argc, Scheme_Object **argv) - { - Vim_Prim *prim = (Vim_Prim *)data; -! win_T *win; - int fnum; - - fnum = SCHEME_INT_VAL(GUARANTEE_INTEGER(prim->name, 0)); - if (fnum < 1) - scheme_signal_error(_("window index is out of range")); - -! for (win = firstwin; win != NULL; win = win->w_next, --fnum) - if (fnum == 1) /* to be 1-based */ - return window_new(win); - ---- 1779,1794 ---- - get_window_by_num(void *data, int argc, Scheme_Object **argv) - { - Vim_Prim *prim = (Vim_Prim *)data; -! win_T *win = firstwin; - int fnum; - - fnum = SCHEME_INT_VAL(GUARANTEE_INTEGER(prim->name, 0)); - if (fnum < 1) - scheme_signal_error(_("window index is out of range")); - -! #ifdef FEAT_WINDOWS -! for ( ; win != NULL; win = win->w_next, --fnum) -! #endif - if (fnum == 1) /* to be 1-based */ - return window_new(win); - -*** ../vim-7.3.794/src/Makefile 2012-11-20 17:03:23.000000000 +0100 ---- src/Makefile 2013-01-30 17:34:55.000000000 +0100 -*************** -*** 1345,1350 **** ---- 1345,1352 ---- - - DEPEND_CFLAGS = -DPROTO -DDEPEND -DFEAT_GUI $(LINT_CFLAGS) - -+ # Note: MZSCHEME_LIBS must come before LIBS, because LIBS adds -lm which is -+ # needed by racket. - ALL_LIB_DIRS = $(GUI_LIBS_DIR) $(X_LIBS_DIR) - ALL_LIBS = \ - $(GUI_LIBS1) \ -*************** -*** 1353,1362 **** - $(X_PRE_LIBS) \ - $(X_LIBS) \ - $(X_EXTRA_LIBS) \ - $(LIBS) \ - $(EXTRA_LIBS) \ - $(LUA_LIBS) \ -- $(MZSCHEME_LIBS) \ - $(PERL_LIBS) \ - $(PYTHON_LIBS) \ - $(PYTHON3_LIBS) \ ---- 1355,1364 ---- - $(X_PRE_LIBS) \ - $(X_LIBS) \ - $(X_EXTRA_LIBS) \ -+ $(MZSCHEME_LIBS) \ - $(LIBS) \ - $(EXTRA_LIBS) \ - $(LUA_LIBS) \ - $(PERL_LIBS) \ - $(PYTHON_LIBS) \ - $(PYTHON3_LIBS) \ -*** ../vim-7.3.794/src/version.c 2013-01-30 17:30:14.000000000 +0100 ---- src/version.c 2013-01-30 17:38:25.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 795, - /**/ - --- -GUEST: He's killed the best man! -SECOND GUEST: (holding a limp WOMAN) He's killed my auntie. -FATHER: No, please! This is supposed to be a happy occasion! Let's - not bicker and argue about who killed who ... - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.796 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.796 -Problem: "/[^\n]" does match at a line break. -Solution: Make it do the same as "/.". (Christian Brabandt) -Files: src/regexp.c, src/testdir/test79.in, src/testdir/test79.ok - - -*** ../vim-7.3.795/src/regexp.c 2013-01-30 13:59:31.000000000 +0100 ---- src/regexp.c 2013-01-30 18:16:12.000000000 +0100 -*************** -*** 2397,2409 **** - /* '\n' in range: also match NL */ - if (ret != JUST_CALC_SIZE) - { -! if (*ret == ANYBUT) -! *ret = ANYBUT + ADD_NL; -! else if (*ret == ANYOF) - *ret = ANYOF + ADD_NL; - /* else: must have had a \n already */ - } -- *flagp |= HASNL; - regparse++; - startc = -1; - } ---- 2397,2411 ---- - /* '\n' in range: also match NL */ - if (ret != JUST_CALC_SIZE) - { -! /* Using \n inside [^] does not change what -! * matches. "[^\n]" is the same as ".". */ -! if (*ret == ANYOF) -! { - *ret = ANYOF + ADD_NL; -+ *flagp |= HASNL; -+ } - /* else: must have had a \n already */ - } - regparse++; - startc = -1; - } -*************** -*** 4344,4349 **** ---- 4346,4352 ---- - break; /* Matched with EOW */ - - case ANY: -+ /* ANY does not match new lines. */ - if (c == NUL) - status = RA_NOMATCH; - else -*** ../vim-7.3.795/src/testdir/test79.in 2011-06-19 04:31:54.000000000 +0200 ---- src/testdir/test79.in 2013-01-30 17:56:11.000000000 +0100 -*************** -*** 201,211 **** ---- 201,215 ---- - /^TEST/ - j:s/A./\=submatch(0)/ - j:s/B./\=submatch(0)/ -+ /^Q$ -+ :s/Q[^\n]Q/\=submatch(0)."foobar"/ - ENDTEST - - TEST_7: - A
A - B -+ Q -+ Q - - STARTTEST - :g/^STARTTEST/.,/^ENDTEST/d -*** ../vim-7.3.795/src/testdir/test79.ok 2011-06-19 04:31:54.000000000 +0200 ---- src/testdir/test79.ok 2013-01-30 18:05:49.000000000 +0100 -*************** -*** 115,118 **** ---- 115,120 ---- - A - B - B -+ Q -+ Q - -*** ../vim-7.3.795/src/version.c 2013-01-30 17:41:43.000000000 +0100 ---- src/version.c 2013-01-30 18:19:22.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 796, - /**/ - --- -FATHER: We are here today to witness the union of two young people in the - joyful bond of the holy wedlock. Unfortunately, one of them, my son - Herbert, has just fallen to his death. - [Murmurs from CROWD; the BRIDE smiles with relief, coughs.] - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.797 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.797 (after 7.3.792) -Problem: Compiler warning for size_t to int conversion. (Skeept) -Solution: Add type casts. -Files: src/ex_cmds.c - - -*** ../vim-7.3.796/src/ex_cmds.c 2013-01-30 16:30:19.000000000 +0100 ---- src/ex_cmds.c 2013-01-30 21:52:17.000000000 +0100 -*************** -*** 4764,4771 **** - * substitute may have inserted or - * deleted characters before the - * cursor. */ -! len_change = STRLEN(new_line) -! - STRLEN(orig_line); - curwin->w_cursor.col += len_change; - ml_replace(lnum, new_line, FALSE); - } ---- 4764,4771 ---- - * substitute may have inserted or - * deleted characters before the - * cursor. */ -! len_change = (int)STRLEN(new_line) -! - (int)STRLEN(orig_line); - curwin->w_cursor.col += len_change; - ml_replace(lnum, new_line, FALSE); - } -*** ../vim-7.3.796/src/version.c 2013-01-30 21:55:22.000000000 +0100 ---- src/version.c 2013-01-30 21:53:17.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 797, - /**/ - --- - [SIR LAUNCELOT runs back up the stairs, grabs a rope - of the wall and swings out over the heads of the CROWD in a - swashbuckling manner towards a large window. He stops just short - of the window and is left swing pathetically back and forth.] -LAUNCELOT: Excuse me ... could somebody give me a push ... - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.798 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.798 (after 7.3.791) -Problem: MzScheme: circular list does not work correctly. -Solution: Separate Mac-specific code from generic code. (Sergey Khorev) -Files: src/if_mzsch.c, src/testdir/test70.in - - -*** ../vim-7.3.797/src/if_mzsch.c 2013-01-30 17:41:43.000000000 +0100 ---- src/if_mzsch.c 2013-01-31 21:00:02.000000000 +0100 -*************** -*** 965,970 **** ---- 965,971 ---- - #ifdef MZSCHEME_COLLECTS - /* setup 'current-library-collection-paths' parameter */ - # if MZSCHEME_VERSION_MAJOR >= 299 -+ # ifdef MACOS - { - Scheme_Object *coll_byte_string = NULL; - Scheme_Object *coll_char_string = NULL; -*************** -*** 985,990 **** ---- 986,1021 ---- - MZ_GC_CHECK(); - MZ_GC_UNREG(); - } -+ # else -+ { -+ Scheme_Object *coll_byte_string = NULL; -+ Scheme_Object *coll_char_string = NULL; -+ Scheme_Object *coll_path = NULL; -+ Scheme_Object *coll_pair = NULL; -+ Scheme_Config *config = NULL; -+ -+ MZ_GC_DECL_REG(5); -+ MZ_GC_VAR_IN_REG(0, coll_byte_string); -+ MZ_GC_VAR_IN_REG(1, coll_char_string); -+ MZ_GC_VAR_IN_REG(2, coll_path); -+ MZ_GC_VAR_IN_REG(3, coll_pair); -+ MZ_GC_VAR_IN_REG(4, config); -+ MZ_GC_REG(); -+ coll_byte_string = scheme_make_byte_string(MZSCHEME_COLLECTS); -+ MZ_GC_CHECK(); -+ coll_char_string = scheme_byte_string_to_char_string(coll_byte_string); -+ MZ_GC_CHECK(); -+ coll_path = scheme_char_string_to_path(coll_char_string); -+ MZ_GC_CHECK(); -+ coll_pair = scheme_make_pair(coll_path, scheme_null); -+ MZ_GC_CHECK(); -+ config = scheme_current_config(); -+ MZ_GC_CHECK(); -+ scheme_set_param(config, MZCONFIG_COLLECTION_PATHS, coll_pair); -+ MZ_GC_CHECK(); -+ MZ_GC_UNREG(); -+ } -+ # endif - # else - { - Scheme_Object *coll_string = NULL; -*** ../vim-7.3.797/src/testdir/test70.in 2013-01-30 14:55:35.000000000 +0100 ---- src/testdir/test70.in 2013-01-31 21:00:06.000000000 +0100 -*************** -*** 38,45 **** - :" circular list (at the same time test lists containing lists) - :mz (set-car! (cddr l) l) - :let l2 = mzeval("h")["list"] -! :" bug: this returns item2, but it should be l2 -! :if l2[2] == "item2" - :let res = "OK" - :else - :let res = "FAILED: " . l2[2] ---- 38,44 ---- - :" circular list (at the same time test lists containing lists) - :mz (set-car! (cddr l) l) - :let l2 = mzeval("h")["list"] -! :if l2[2] == l2 - :let res = "OK" - :else - :let res = "FAILED: " . l2[2] -*** ../vim-7.3.797/src/version.c 2013-01-30 21:55:45.000000000 +0100 ---- src/version.c 2013-01-31 21:01:48.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 798, - /**/ - --- -Be nice to your kids... they'll be the ones choosing your nursing home. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.799 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.799 -Problem: The color column is not correct when entering a buffer. (Ben - Fritz) -Solution: Call check_colorcolumn() if 'textwidth' changed. (Christian - Brabandt) -Files: src/buffer.c - - -*** ../vim-7.3.798/src/buffer.c 2012-11-20 12:16:54.000000000 +0100 ---- src/buffer.c 2013-02-06 11:52:54.000000000 +0100 -*************** -*** 1441,1446 **** ---- 1441,1448 ---- - enter_buffer(buf) - buf_T *buf; - { -+ long old_tw = curbuf->b_p_tw; -+ - /* Copy buffer and window local option values. Not for a help buffer. */ - buf_copy_options(buf, BCO_ENTER | BCO_NOHELP); - if (!buf->b_help) -*************** -*** 1464,1469 **** ---- 1466,1473 ---- - - #ifdef FEAT_SYN_HL - curwin->w_s = &(buf->b_s); -+ if (old_tw != buf->b_p_tw) -+ check_colorcolumn(curwin); - #endif - - /* Cursor on first line by default. */ -*** ../vim-7.3.798/src/version.c 2013-01-31 21:09:10.000000000 +0100 ---- src/version.c 2013-02-06 11:55:06.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 799, - /**/ - --- -I wonder, do vegetarians eat fruit bats? - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.800 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.800 -Problem: The " mark is not adjusted when inserting lines. (Roland Eggner) -Solution: Adjust the line number. (Christian Brabandt) -Files: src/mark.c - - -*** ../vim-7.3.799/src/mark.c 2013-01-23 15:53:08.000000000 +0100 ---- src/mark.c 2013-02-06 12:29:46.000000000 +0100 -*************** -*** 1047,1052 **** ---- 1047,1053 ---- - #ifdef FEAT_WINDOWS - tabpage_T *tab; - #endif -+ static pos_T initpos = INIT_POS_T(1, 0, 0); - - if (line2 < line1 && amount_after == 0L) /* nothing to do */ - return; -*************** -*** 1072,1077 **** ---- 1073,1083 ---- - /* last change position */ - one_adjust(&(curbuf->b_last_change.lnum)); - -+ /* last cursor position, if it was set */ -+ if (!equalpos(curbuf->b_last_cursor, initpos)) -+ one_adjust(&(curbuf->b_last_cursor.lnum)); -+ -+ - #ifdef FEAT_JUMPLIST - /* list of change positions */ - for (i = 0; i < curbuf->b_changelistlen; ++i) -*** ../vim-7.3.799/src/version.c 2013-02-06 12:14:36.000000000 +0100 ---- src/version.c 2013-02-06 12:31:15.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 800, - /**/ - --- -ARTHUR: What does it say? -BROTHER MAYNARD: It reads ... "Here may be found the last words of Joseph of - Aramathea." "He who is valorous and pure of heart may find - the Holy Grail in the aaaaarrrrrrggghhh..." -ARTHUR: What? -BROTHER MAYNARD: "The Aaaaarrrrrrggghhh..." - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.801 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.801 -Problem: ":window set nu?" displays the cursor line. (Nazri Ramliy) -Solution: Do not update the cursor line when conceallevel is zero or the - screen has scrolled. (partly by Christian Brabandt) -Files: src/window.c - - -*** ../vim-7.3.800/src/window.c 2013-01-17 13:59:56.000000000 +0100 ---- src/window.c 2013-02-06 13:28:10.000000000 +0100 -*************** -*** 3991,3999 **** - - #ifdef FEAT_CONCEAL - /* Conceal cursor line in previous window, unconceal in current window. */ -! if (win_valid(owp)) - update_single_line(owp, owp->w_cursor.lnum); -! update_single_line(curwin, curwin->w_cursor.lnum); - #endif - } - ---- 3991,4000 ---- - - #ifdef FEAT_CONCEAL - /* Conceal cursor line in previous window, unconceal in current window. */ -! if (win_valid(owp) && owp->w_p_cole > 0 && !msg_scrolled) - update_single_line(owp, owp->w_cursor.lnum); -! if (curwin->w_p_cole > 0 && !msg_scrolled) -! need_cursor_line_redraw = TRUE; - #endif - } - -*** ../vim-7.3.800/src/version.c 2013-02-06 12:33:15.000000000 +0100 ---- src/version.c 2013-02-06 13:32:28.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 801, - /**/ - --- -ARTHUR: But if he was dying, he wouldn't bother to carve - "Aaaaarrrrrrggghhh". He'd just say it. -BROTHER MAYNARD: It's down there carved in stone. -GALAHAD: Perhaps he was dictating. - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.802 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.802 -Problem: After setting 'isk' to a value ending in a comma appending to the - option fails. -Solution: Disallow a trailing comma for 'isk' and similar options. -Files: src/charset.c - - -*** ../vim-7.3.801/src/charset.c 2013-01-30 17:30:14.000000000 +0100 ---- src/charset.c 2013-02-06 16:20:01.000000000 +0100 -*************** -*** 284,290 **** ---- 284,295 ---- - } - ++c; - } -+ -+ c = *p; - p = skip_to_option_part(p); -+ if (c == ',' && *p == NUL) -+ /* Trailing comma is not allowed. */ -+ return FAIL; - } - } - chartab_initialized = TRUE; -*** ../vim-7.3.801/src/version.c 2013-02-06 13:37:58.000000000 +0100 ---- src/version.c 2013-02-06 16:21:18.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 802, - /**/ - --- -Dreams are free, but there's a small charge for alterations. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.803 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.803 (after 7.3.792) -Problem: Substitute with confirmation and then "q" does not replace - anything. (John McGowan) -Solution: Do not break the loop, skip to the end. -Files: src/ex_cmds.c, src/testdir/test80.in, src/testdir/test80.ok - - -*** ../vim-7.3.802/src/ex_cmds.c 2013-01-30 21:55:45.000000000 +0100 ---- src/ex_cmds.c 2013-02-06 18:13:52.000000000 +0100 -*************** -*** 4878,4884 **** - goto skip; - } - if (got_quit) -! break; - } - - /* Move the cursor to the start of the match, so that we can ---- 4878,4884 ---- - goto skip; - } - if (got_quit) -! goto skip; - } - - /* Move the cursor to the start of the match, so that we can -*** ../vim-7.3.802/src/testdir/test80.in 2013-01-30 17:03:25.000000000 +0100 ---- src/testdir/test80.in 2013-02-06 18:21:07.000000000 +0100 -*************** -*** 153,164 **** - :s/\(^\|,\)\ze\(,\|Y\)/\1N/gc - a:$put =',,Z' - :s/\(^\|,\)\ze\(,\|Z\)/\1N/gc -! yy/^TEST_9 - ENDTEST - - TEST_9: - - STARTTEST - :/^Results/,$wq! test.out - ENDTEST - ---- 153,175 ---- - :s/\(^\|,\)\ze\(,\|Y\)/\1N/gc - a:$put =',,Z' - :s/\(^\|,\)\ze\(,\|Z\)/\1N/gc -! yy/^TEST_9: - ENDTEST - - TEST_9: - - STARTTEST -+ :set magic& -+ :set cpo& -+ :$put =\"\n\nTEST_9:\" -+ :$put ='xxx' -+ :s/x/X/gc -+ yyq/^TEST_10: -+ ENDTEST -+ -+ TEST_10: -+ -+ STARTTEST - :/^Results/,$wq! test.out - ENDTEST - -*** ../vim-7.3.802/src/testdir/test80.ok 2013-01-30 17:03:25.000000000 +0100 ---- src/testdir/test80.ok 2013-02-06 18:21:16.000000000 +0100 -*************** -*** 105,107 **** ---- 105,111 ---- - N,,NX - N,,NY - N,,NZ -+ -+ -+ TEST_9: -+ XXx -*** ../vim-7.3.802/src/version.c 2013-02-06 16:26:20.000000000 +0100 ---- src/version.c 2013-02-06 18:14:42.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 803, - /**/ - --- -To the optimist, the glass is half full. -To the pessimist, the glass is half empty. -To the engineer, the glass is twice as big as it needs to be. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.804 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.804 (after 7.3.799) -Problem: Compiler warning for tiny build. (Tony Mechelynck) -Solution: Add #ifdefs around variable. -Files: src/buffer.c - - -*** ../vim-7.3.803/src/buffer.c 2013-02-06 12:14:36.000000000 +0100 ---- src/buffer.c 2013-02-06 18:42:05.000000000 +0100 -*************** -*** 1441,1447 **** ---- 1441,1449 ---- - enter_buffer(buf) - buf_T *buf; - { -+ #ifdef FEAT_SYN_HL - long old_tw = curbuf->b_p_tw; -+ #endif - - /* Copy buffer and window local option values. Not for a help buffer. */ - buf_copy_options(buf, BCO_ENTER | BCO_NOHELP); -*** ../vim-7.3.803/src/version.c 2013-02-06 18:23:58.000000000 +0100 ---- src/version.c 2013-02-06 18:42:59.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 804, - /**/ - --- -Sorry, no fortune today. - - /// 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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.805 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.805 -Problem: Lua version 5.2 is not detected properly on Arch Linux. -Solution: Adjust autoconf. (lilydjwg) -Files: src/configure.in, src/auto/configure - - -*** ../vim-7.3.804/src/configure.in 2013-01-30 14:55:34.000000000 +0100 ---- src/configure.in 2013-02-06 19:22:17.000000000 +0100 -*************** -*** 496,508 **** - else - dnl Determine the SONAME for the current version, but fallback to - dnl liblua${vi_cv_version_lua}.so if no SONAME-versioned file is found. -! for i in 0 1 2 3 4 5 6 7 8 9; do -! if test -f "${vi_cv_path_lua_pfx}/lib/liblua${vi_cv_version_lua}.so.$i"; then -! LUA_SONAME=".$i" -! break -! fi - done -- vi_cv_dll_name_lua="liblua${vi_cv_version_lua}.so$LUA_SONAME" - fi - AC_DEFINE(DYNAMIC_LUA) - LUA_LIBS="" ---- 496,510 ---- - else - dnl Determine the SONAME for the current version, but fallback to - dnl liblua${vi_cv_version_lua}.so if no SONAME-versioned file is found. -! for LUA_SOVER in "${vi_cv_version_lua}.so" ".so.${vi_cv_version_lua}"; do -! for i in 0 1 2 3 4 5 6 7 8 9; do -! if test -f "${vi_cv_path_lua_pfx}/lib/liblua${LUA_SOVER}.$i"; then -! LUA_SONAME=".$i" -! break -! fi -! done -! vi_cv_dll_name_lua="liblua${LUA_SOVER}$LUA_SONAME" - done - fi - AC_DEFINE(DYNAMIC_LUA) - LUA_LIBS="" -*** ../vim-7.3.804/src/auto/configure 2013-01-30 14:55:34.000000000 +0100 ---- src/auto/configure 2013-02-06 19:24:11.000000000 +0100 -*************** -*** 4737,4749 **** - if test -f "${vi_cv_path_lua_pfx}/bin/cyglua-${vi_cv_version_lua}.dll"; then - vi_cv_dll_name_lua="cyglua-${vi_cv_version_lua}.dll" - else -! for i in 0 1 2 3 4 5 6 7 8 9; do -! if test -f "${vi_cv_path_lua_pfx}/lib/liblua${vi_cv_version_lua}.so.$i"; then -! LUA_SONAME=".$i" -! break -! fi - done -- vi_cv_dll_name_lua="liblua${vi_cv_version_lua}.so$LUA_SONAME" - fi - $as_echo "#define DYNAMIC_LUA 1" >>confdefs.h - ---- 4737,4751 ---- - if test -f "${vi_cv_path_lua_pfx}/bin/cyglua-${vi_cv_version_lua}.dll"; then - vi_cv_dll_name_lua="cyglua-${vi_cv_version_lua}.dll" - else -! for LUA_SOVER in "${vi_cv_version_lua}.so" ".so.${vi_cv_version_lua}"; do -! for i in 0 1 2 3 4 5 6 7 8 9; do -! if test -f "${vi_cv_path_lua_pfx}/lib/liblua${LUA_SOVER}.$i"; then -! LUA_SONAME=".$i" -! break -! fi -! done -! vi_cv_dll_name_lua="liblua${LUA_SOVER}$LUA_SONAME" - done - fi - $as_echo "#define DYNAMIC_LUA 1" >>confdefs.h - -*** ../vim-7.3.804/src/version.c 2013-02-06 18:44:57.000000000 +0100 ---- src/version.c 2013-02-06 19:26:37.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 805, - /**/ - --- -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 /// -To: vim_dev@googlegroups.com -Subject: Patch 7.3.806 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.3.806 -Problem: Compiler warnings in Perl code when building with Visual studio - 2012. (skeept) -Solution: Add type casts. (Christian Brabandt, 2013 Jan 30) -Files: src/if_perl.xs - - -*** ../vim-7.3.805/src/if_perl.xs 2012-09-21 12:50:44.000000000 +0200 ---- src/if_perl.xs 2013-02-06 19:55:12.000000000 +0100 -*************** -*** 1048,1054 **** - { - SV *sv = ST(i); - if (SvIOK(sv)) -! b = SvIV(ST(i)); - else - { - char_u *pat; ---- 1048,1054 ---- - { - SV *sv = ST(i); - if (SvIOK(sv)) -! b = (int) SvIV(ST(i)); - else - { - char_u *pat; -*************** -*** 1091,1097 **** - { - for (i = 0; i < items; i++) - { -! w = SvIV(ST(i)); - vimwin = win_find_nr(w); - if (vimwin) - XPUSHs(newWINrv(newSV(0), vimwin)); ---- 1091,1097 ---- - { - for (i = 0; i < items; i++) - { -! w = (int) SvIV(ST(i)); - vimwin = win_find_nr(w); - if (vimwin) - XPUSHs(newWINrv(newSV(0), vimwin)); -*************** -*** 1154,1161 **** - - if (!win_valid(win)) - win = curwin; -! lnum = SvIV(ST(1)); -! col = SvIV(ST(2)); - win->w_cursor.lnum = lnum; - win->w_cursor.col = col; - check_cursor(); /* put cursor on an existing line */ ---- 1154,1161 ---- - - if (!win_valid(win)) - win = curwin; -! lnum = (int) SvIV(ST(1)); -! col = (int) SvIV(ST(2)); - win->w_cursor.lnum = lnum; - win->w_cursor.col = col; - check_cursor(); /* put cursor on an existing line */ -*************** -*** 1216,1222 **** - { - for (i = 1; i < items; i++) - { -! lnum = SvIV(ST(i)); - if (lnum > 0 && lnum <= vimbuf->b_ml.ml_line_count) - { - line = ml_get_buf(vimbuf, lnum, FALSE); ---- 1216,1222 ---- - { - for (i = 1; i < items; i++) - { -! lnum = (long) SvIV(ST(i)); - if (lnum > 0 && lnum <= vimbuf->b_ml.ml_line_count) - { - line = ml_get_buf(vimbuf, lnum, FALSE); -*************** -*** 1239,1245 **** - if (items < 3) - croak("Usage: VIBUF::Set(vimbuf, lnum, @lines)"); - -! lnum = SvIV(ST(1)); - for(i = 2; i < items; i++, lnum++) - { - line = SvPV(ST(i),PL_na); ---- 1239,1245 ---- - if (items < 3) - croak("Usage: VIBUF::Set(vimbuf, lnum, @lines)"); - -! lnum = (long) SvIV(ST(1)); - for(i = 2; i < items; i++, lnum++) - { - line = SvPV(ST(i),PL_na); -*************** -*** 1274,1286 **** - { - if (items == 2) - { -! lnum = SvIV(ST(1)); - count = 1; - } - else if (items == 3) - { -! lnum = SvIV(ST(1)); -! count = 1 + SvIV(ST(2)) - lnum; - if (count == 0) - count = 1; - if (count < 0) ---- 1274,1286 ---- - { - if (items == 2) - { -! lnum = (long) SvIV(ST(1)); - count = 1; - } - else if (items == 3) - { -! lnum = (long) SvIV(ST(1)); -! count = (long) 1 + SvIV(ST(2)) - lnum; - if (count == 0) - count = 1; - if (count < 0) -*************** -*** 1331,1337 **** - if (items < 3) - croak("Usage: VIBUF::Append(vimbuf, lnum, @lines)"); - -! lnum = SvIV(ST(1)); - for (i = 2; i < items; i++, lnum++) - { - line = SvPV(ST(i),PL_na); ---- 1331,1337 ---- - if (items < 3) - croak("Usage: VIBUF::Append(vimbuf, lnum, @lines)"); - -! lnum = (long) SvIV(ST(1)); - for (i = 2; i < items; i++, lnum++) - { - line = SvPV(ST(i),PL_na); -*** ../vim-7.3.805/src/version.c 2013-02-06 19:49:38.000000000 +0100 ---- src/version.c 2013-02-06 19:58:16.000000000 +0100 -*************** -*** 727,728 **** ---- 727,730 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 806, - /**/ - --- -BRIDGEKEEPER: What is your favorite colour? -LAUNCELOT: Blue. -BRIDGEKEEPER: Right. Off you go. - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD - - /// 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 /// |