From Bram@moolenaar.net Tue Jul 11 22:37:42 2006 Date: Tue, 11 Jul 2006 22:39:03 +0200 From: Bram Moolenaar To: Subject: Patch 7.0.036 Patch 7.0.036 Problem: Can't compile with small features and syntax highlighting or the diff feature. Solution: Define LINE_ATTR whenever syntax highlighting or the diff feature is enabled. Files: src/screen.c *** ../vim-7.0.035/src/screen.c Fri May 5 23:13:04 2006 --- src/screen.c Tue Jul 11 21:33:53 2006 *************** *** 2612,2618 **** #ifdef FEAT_LINEBREAK int need_showbreak = FALSE; #endif ! #if defined(FEAT_SIGNS) || (defined(FEAT_QUICKFIX) && defined(FEAT_WINDOWS)) # define LINE_ATTR int line_attr = 0; /* atrribute for the whole line */ #endif --- 2612,2619 ---- #ifdef FEAT_LINEBREAK int need_showbreak = FALSE; #endif ! #if defined(FEAT_SIGNS) || (defined(FEAT_QUICKFIX) && defined(FEAT_WINDOWS)) \ ! || defined(FEAT_SYN_HL) || defined(FEAT_DIFF) # define LINE_ATTR int line_attr = 0; /* atrribute for the whole line */ #endif *************** *** 2626,2632 **** int prev_c = 0; /* previous Arabic character */ int prev_c1 = 0; /* first composing char for prev_c */ #endif ! #if defined(FEAT_DIFF) || defined(LINE_ATTR) int did_line_attr = 0; #endif --- 2627,2633 ---- int prev_c = 0; /* previous Arabic character */ int prev_c1 = 0; /* first composing char for prev_c */ #endif ! #if defined(LINE_ATTR) int did_line_attr = 0; #endif *************** *** 4116,4132 **** --ptr; /* put it back at the NUL */ } #endif ! #if defined(FEAT_DIFF) || defined(LINE_ATTR) else if (( # ifdef FEAT_DIFF ! diff_hlf != (hlf_T)0 ! # ifdef LINE_ATTR ! || ! # endif # endif - # ifdef LINE_ATTR line_attr != 0 - # endif ) && ( # ifdef FEAT_RIGHTLEFT wp->w_p_rl ? (col >= 0) : --- 4117,4128 ---- --ptr; /* put it back at the NUL */ } #endif ! #if defined(LINE_ATTR) else if (( # ifdef FEAT_DIFF ! diff_hlf != (hlf_T)0 || # endif line_attr != 0 ) && ( # ifdef FEAT_RIGHTLEFT wp->w_p_rl ? (col >= 0) : *************** *** 4237,4243 **** * At end of the text line or just after the last character. */ if (c == NUL ! #if defined(FEAT_DIFF) || defined(LINE_ATTR) || did_line_attr == 1 #endif ) --- 4233,4239 ---- * At end of the text line or just after the last character. */ if (c == NUL ! #if defined(LINE_ATTR) || did_line_attr == 1 #endif ) *************** *** 4258,4264 **** || prevcol == (long)match_hl[0].startcol || prevcol == (long)match_hl[1].startcol || prevcol == (long)match_hl[2].startcol) ! # if defined(FEAT_DIFF) || defined(LINE_ATTR) && did_line_attr <= 1 # endif ) --- 4254,4260 ---- || prevcol == (long)match_hl[0].startcol || prevcol == (long)match_hl[1].startcol || prevcol == (long)match_hl[2].startcol) ! # if defined(LINE_ATTR) && did_line_attr <= 1 # endif ) *** ../vim-7.0.035/src/version.c Fri Jun 23 21:36:49 2006 --- src/version.c Tue Jul 11 21:36:50 2006 *************** *** 668,669 **** --- 668,671 ---- { /* Add new patch number below this line */ + /**/ + 36, /**/ -- Every engineer dreams about saving the universe and having sex with aliens. This is much more glamorous than the real life of an engineer, which consists of hiding from the universe and having sex without the participation of other life forms. (Scott Adams - The Dilbert principle) /// 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 /// From Bram@moolenaar.net Tue Jul 11 22:40:27 2006 Date: Tue, 11 Jul 2006 22:41:46 +0200 From: Bram Moolenaar To: Subject: Patch 7.0.037 Patch 7.0.037 Problem: Crash when resizing the GUI window vertically when there is a line that doesn't fit. Solution: Don't redraw while the screen data is invalid. Files: src/screen.c *** ../vim-7.0.036/src/screen.c Tue Jul 11 22:36:19 2006 --- src/screen.c Tue Jul 11 21:33:53 2006 *************** *** 7129,7134 **** --- 7129,7140 ---- return; entered = TRUE; + /* + * Note that the window sizes are updated before reallocating the arrays, + * thus we must not redraw here! + */ + ++RedrawingDisabled; + win_new_shellsize(); /* fit the windows in the new sized shell */ comp_col(); /* recompute columns for shown command and ruler */ *************** *** 7363,7368 **** --- 7369,7375 ---- #endif entered = FALSE; + --RedrawingDisabled; #ifdef FEAT_AUTOCMD if (starting == 0) *** ../vim-7.0.036/src/version.c Tue Jul 11 22:36:19 2006 --- src/version.c Tue Jul 11 22:38:39 2006 *************** *** 668,669 **** --- 668,671 ---- { /* Add new patch number below this line */ + /**/ + 37, /**/ -- 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/ \\\ \\\ download, build and distribute -- http://www.A-A-P.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org /// From Bram@moolenaar.net Wed Jul 12 21:48:17 2006 Date: Wed, 12 Jul 2006 21:49:36 +0200 From: Bram Moolenaar To: Subject: Patch 7.0.038 Patch 7.0.038 Problem: When calling complete() from an Insert mode expression mapping text could be inserted in an improper way. Solution: Make undo_allowed() global and use it in complete(). Files: src/undo.c, src/proto/undo.pro, src/eval.c *** ../vim-7.0.037/src/undo.c Sat Apr 22 00:01:05 2006 --- src/undo.c Mon Jul 3 22:23:22 2006 *************** *** 84,90 **** static void u_unch_branch __ARGS((u_header_T *uhp)); static u_entry_T *u_get_headentry __ARGS((void)); static void u_getbot __ARGS((void)); - static int undo_allowed __ARGS((void)); static int u_savecommon __ARGS((linenr_T, linenr_T, linenr_T)); static void u_doit __ARGS((int count)); static void u_undoredo __ARGS((int undo)); --- 84,89 ---- *************** *** 196,202 **** * Return TRUE when undo is allowed. Otherwise give an error message and * return FALSE. */ ! static int undo_allowed() { /* Don't allow changes when 'modifiable' is off. */ --- 195,201 ---- * Return TRUE when undo is allowed. Otherwise give an error message and * return FALSE. */ ! int undo_allowed() { /* Don't allow changes when 'modifiable' is off. */ *** ../vim-7.0.037/src/proto/undo.pro Mon Apr 10 16:38:50 2006 --- src/proto/undo.pro Mon Jul 3 22:25:07 2006 *************** *** 4,9 **** --- 4,10 ---- extern int u_savesub __ARGS((linenr_T lnum)); extern int u_inssub __ARGS((linenr_T lnum)); extern int u_savedel __ARGS((linenr_T lnum, long nlines)); + extern int undo_allowed __ARGS((void)); extern void u_undo __ARGS((int count)); extern void u_redo __ARGS((int count)); extern void undo_time __ARGS((long step, int sec, int absolute)); *** ../vim-7.0.037/src/eval.c Thu Jun 22 21:01:19 2006 --- src/eval.c Mon Jul 10 23:03:13 2006 *************** *** 8252,8257 **** --- 8252,8263 ---- EMSG(_("E785: complete() can only be used in Insert mode")); return; } + + /* Check for undo allowed here, because if something was already inserted + * the line was already saved for undo and this check isn't done. */ + if (!undo_allowed()) + return; + if (argvars[1].v_type != VAR_LIST || argvars[1].vval.v_list == NULL) { EMSG(_(e_invarg)); *** ../vim-7.0.037/src/version.c Tue Jul 11 22:59:04 2006 --- src/version.c Wed Jul 12 20:31:49 2006 *************** *** 668,669 **** --- 668,671 ---- { /* Add new patch number below this line */ + /**/ + 38, /**/ -- 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/ \\\ \\\ download, build and distribute -- http://www.A-A-P.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org /// From Bram@moolenaar.net Wed Jul 12 22:01:10 2006 Date: Wed, 12 Jul 2006 22:02:07 +0200 From: Bram Moolenaar To: Subject: Patch 7.0.039 Patch 7.0.039 Problem: Calling inputdialog() with a third argument in the console doesn't work. Solution: Make a separate function for input() and inputdialog(). (Yegappan Lakshmanan) Files: src/eval.c *** ../vim-7.0.038/src/eval.c Wed Jul 12 21:48:56 2006 --- src/eval.c Mon Jul 10 23:03:13 2006 *************** *** 11321,11334 **** static int inputsecret_flag = 0; /* ! * "input()" function ! * Also handles inputsecret() when inputsecret is set. */ static void ! f_input(argvars, rettv) typval_T *argvars; typval_T *rettv; { char_u *prompt = get_tv_string_chk(&argvars[0]); char_u *p = NULL; --- 11321,11339 ---- static int inputsecret_flag = 0; + static void get_user_input __ARGS((typval_T *argvars, typval_T *rettv, int inputdialog)); + /* ! * This function is used by f_input() and f_inputdialog() functions. The third ! * argument to f_input() specifies the type of completion to use at the ! * prompt. The third argument to f_inputdialog() specifies the value to return ! * when the user cancels the prompt. */ static void ! get_user_input(argvars, rettv, inputdialog) typval_T *argvars; typval_T *rettv; + int inputdialog; { char_u *prompt = get_tv_string_chk(&argvars[0]); char_u *p = NULL; *************** *** 11378,11384 **** if (defstr != NULL) stuffReadbuffSpec(defstr); ! if (argvars[2].v_type != VAR_UNKNOWN) { char_u *xp_name; int xp_namelen; --- 11383,11389 ---- if (defstr != NULL) stuffReadbuffSpec(defstr); ! if (!inputdialog && argvars[2].v_type != VAR_UNKNOWN) { char_u *xp_name; int xp_namelen; *************** *** 11413,11418 **** --- 11418,11435 ---- } /* + * "input()" function + * Also handles inputsecret() when inputsecret is set. + */ + static void + f_input(argvars, rettv) + typval_T *argvars; + typval_T *rettv; + { + get_user_input(argvars, rettv, FALSE); + } + + /* * "inputdialog()" function */ static void *************** *** 11452,11458 **** } else #endif ! f_input(argvars, rettv); } /* --- 11469,11475 ---- } else #endif ! get_user_input(argvars, rettv, TRUE); } /* *** ../vim-7.0.038/src/version.c Wed Jul 12 21:48:56 2006 --- src/version.c Wed Jul 12 21:56:30 2006 *************** *** 668,669 **** --- 668,671 ---- { /* Add new patch number below this line */ + /**/ + 39, /**/ -- 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/ \\\ \\\ download, build and distribute -- http://www.A-A-P.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///