To: vim-dev@vim.org Subject: Patch 7.1.247 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit ------------ Patch 7.1.247 Problem: When using Netbeans backspacing in Insert mode skips a character now and then. (Ankit Jain) Solution: Avoid calling netbeans_removed(), it frees the line pointer. (partly by Dominique Pelle). Files: src/misc1.c *** ../vim-7.1.246/src/misc1.c Sat Jan 19 15:55:51 2008 --- src/misc1.c Wed Feb 13 10:56:16 2008 *************** *** 2270,2282 **** /* * If the old line has been allocated the deletion can be done in the * existing line. Otherwise a new line has to be allocated */ - was_alloced = ml_line_alloced(); /* check if oldp was allocated */ #ifdef FEAT_NETBEANS_INTG ! if (was_alloced && usingNetbeans) ! netbeans_removed(curbuf, lnum, col, count); ! /* else is handled by ml_replace() */ #endif if (was_alloced) newp = oldp; /* use same allocated memory */ else --- 2270,2285 ---- /* * If the old line has been allocated the deletion can be done in the * existing line. Otherwise a new line has to be allocated + * Can't do this when using Netbeans, because we would need to invoke + * netbeans_removed(), which deallocates the line. Let ml_replace() take + * care of notifiying Netbeans. */ #ifdef FEAT_NETBEANS_INTG ! if (usingNetbeans) ! was_alloced = FALSE; ! else #endif + was_alloced = ml_line_alloced(); /* check if oldp was allocated */ if (was_alloced) newp = oldp; /* use same allocated memory */ else *************** *** 3978,3984 **** /* remove trailing path separator */ #ifndef MACOS_CLASSIC /* With MacOS path (with colons) the final colon is required */ ! /* to avoid confusion between absoulute and relative path */ if (pend > p && after_pathsep(p, pend)) --pend; #endif --- 3981,3987 ---- /* remove trailing path separator */ #ifndef MACOS_CLASSIC /* With MacOS path (with colons) the final colon is required */ ! /* to avoid confusion between absolute and relative path */ if (pend > p && after_pathsep(p, pend)) --pend; #endif *************** *** 5689,5695 **** else if (lookfor_ctor_init || class_or_struct) { /* we have something found, that looks like the start of ! * cpp-base-class-declaration or contructor-initialization */ cpp_base_class = TRUE; lookfor_ctor_init = class_or_struct = FALSE; *col = 0; --- 5692,5698 ---- else if (lookfor_ctor_init || class_or_struct) { /* we have something found, that looks like the start of ! * cpp-base-class-declaration or constructor-initialization */ cpp_base_class = TRUE; lookfor_ctor_init = class_or_struct = FALSE; *col = 0; *************** *** 6146,6152 **** pos_T our_paren_pos; char_u *start; int start_brace; ! #define BRACE_IN_COL0 1 /* '{' is in comumn 0 */ #define BRACE_AT_START 2 /* '{' is at start of line */ #define BRACE_AT_END 3 /* '{' is at end of line */ linenr_T ourscope; --- 6149,6155 ---- pos_T our_paren_pos; char_u *start; int start_brace; ! #define BRACE_IN_COL0 1 /* '{' is in column 0 */ #define BRACE_AT_START 2 /* '{' is at start of line */ #define BRACE_AT_END 3 /* '{' is at end of line */ linenr_T ourscope; *************** *** 6369,6375 **** if (curwin->w_cursor.lnum > 1) { /* If the start comment string matches in the previous ! * line, use the indent of that line pluss offset. If * the middle comment string matches in the previous * line, use the indent of that line. XXX */ look = skipwhite(ml_get(curwin->w_cursor.lnum - 1)); --- 6372,6378 ---- if (curwin->w_cursor.lnum > 1) { /* If the start comment string matches in the previous ! * line, use the indent of that line plus offset. If * the middle comment string matches in the previous * line, use the indent of that line. XXX */ look = skipwhite(ml_get(curwin->w_cursor.lnum - 1)); *************** *** 8222,8228 **** if (*that && *that != ';') /* not a comment line */ { ! /* test *that != '(' to accomodate first let/do * argument if it is more than one line */ if (!vi_lisp && *that != '(' && *that != '[') firsttry++; --- 8225,8231 ---- if (*that && *that != ';') /* not a comment line */ { ! /* test *that != '(' to accommodate first let/do * argument if it is more than one line */ if (!vi_lisp && *that != '(' && *that != '[') firsttry++; *** ../vim-7.1.246/src/version.c Wed Feb 13 10:27:28 2008 --- src/version.c Wed Feb 13 10:56:42 2008 *************** *** 668,669 **** --- 668,671 ---- { /* Add new patch number below this line */ + /**/ + 247, /**/ -- 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/ \\\ \\\ download, build and distribute -- http://www.A-A-P.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///