To: vim_dev@googlegroups.com Subject: Patch 9.0.0124 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 9.0.0124 Problem: Code has more indent than needed. Solution: Use continue and return statements. (closes #10824) Files: src/arglist.c, src/diff.c, src/edit.c, src/help.c, src/normal.c, src/syntax.c, src/window.c *** ../vim-9.0.0123/src/arglist.c 2022-02-03 13:02:32.000000000 +0000 --- src/arglist.c 2022-07-31 18:25:09.865852240 +0100 *************** *** 1241,1272 **** for (idx = 0; idx < ARGCOUNT; ++idx) { p = alist_name(&ARGLIST[idx]); ! if (p != NULL) { ! if (len > 0) ! { ! // insert a space in between names ! if (retval != NULL) ! retval[len] = ' '; ! ++len; ! } ! for ( ; *p != NUL; ++p) ! { ! if (*p == ' ' #ifndef BACKSLASH_IN_FILENAME ! || *p == '\\' #endif ! || *p == '`') ! { ! // insert a backslash ! if (retval != NULL) ! retval[len] = '\\'; ! ++len; ! } if (retval != NULL) ! retval[len] = *p; ++len; } } } --- 1241,1271 ---- for (idx = 0; idx < ARGCOUNT; ++idx) { p = alist_name(&ARGLIST[idx]); ! if (p == NULL) ! continue; ! if (len > 0) { ! // insert a space in between names ! if (retval != NULL) ! retval[len] = ' '; ! ++len; ! } ! for ( ; *p != NUL; ++p) ! { ! if (*p == ' ' #ifndef BACKSLASH_IN_FILENAME ! || *p == '\\' #endif ! || *p == '`') ! { ! // insert a backslash if (retval != NULL) ! retval[len] = '\\'; ++len; } + if (retval != NULL) + retval[len] = *p; + ++len; } } *** ../vim-9.0.0123/src/diff.c 2022-07-28 18:44:24.225873426 +0100 --- src/diff.c 2022-07-31 18:29:41.098241306 +0100 *************** *** 678,711 **** need_diff_redraw = FALSE; FOR_ALL_WINDOWS(wp) // when closing windows or wiping buffers skip invalid window ! if (wp->w_p_diff && buf_valid(wp->w_buffer)) ! { ! redraw_win_later(wp, SOME_VALID); ! if (wp != curwin) ! wp_other = wp; #ifdef FEAT_FOLDING ! if (dofold && foldmethodIsDiff(wp)) ! foldUpdateAll(wp); #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; ! if (wp == curwin) ! used_max_fill_curwin = TRUE; ! else if (wp_other != NULL) ! used_max_fill_other = TRUE; ! } ! check_topfill(wp, FALSE); } } if (wp_other != NULL && curwin->w_p_scb) { --- 678,713 ---- need_diff_redraw = FALSE; FOR_ALL_WINDOWS(wp) + { // when closing windows or wiping buffers skip invalid window ! if (!wp->w_p_diff || !buf_valid(wp->w_buffer)) ! continue; ! ! redraw_win_later(wp, SOME_VALID); ! if (wp != curwin) ! wp_other = wp; #ifdef FEAT_FOLDING ! if (dofold && foldmethodIsDiff(wp)) ! foldUpdateAll(wp); #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; ! if (wp == curwin) ! used_max_fill_curwin = TRUE; ! else if (wp_other != NULL) ! used_max_fill_other = TRUE; } + check_topfill(wp, FALSE); } + } if (wp_other != NULL && curwin->w_p_scb) { *** ../vim-9.0.0123/src/edit.c 2022-07-25 18:13:33.046580756 +0100 --- src/edit.c 2022-07-31 18:29:23.386226946 +0100 *************** *** 3749,3799 **** static int ins_start_select(int c) { ! if (km_startsel) ! switch (c) ! { ! case K_KHOME: ! case K_KEND: ! case K_PAGEUP: ! case K_KPAGEUP: ! case K_PAGEDOWN: ! case K_KPAGEDOWN: # ifdef MACOS_X ! case K_LEFT: ! case K_RIGHT: ! case K_UP: ! case K_DOWN: ! case K_END: ! case K_HOME: # endif ! if (!(mod_mask & MOD_MASK_SHIFT)) ! break; ! // FALLTHROUGH ! case K_S_LEFT: ! case K_S_RIGHT: ! case K_S_UP: ! case K_S_DOWN: ! case K_S_END: ! case K_S_HOME: ! // Start selection right away, the cursor can move with ! // CTRL-O when beyond the end of the line. ! start_selection(); ! // Execute the key in (insert) Select mode. ! stuffcharReadbuff(Ctrl_O); ! if (mod_mask) ! { ! char_u buf[4]; ! buf[0] = K_SPECIAL; ! buf[1] = KS_MODIFIER; ! buf[2] = mod_mask; ! buf[3] = NUL; ! stuffReadbuff(buf); ! } ! stuffcharReadbuff(c); ! return TRUE; ! } return FALSE; } --- 3749,3800 ---- static int ins_start_select(int c) { ! if (!km_startsel) ! return FALSE; ! switch (c) ! { ! case K_KHOME: ! case K_KEND: ! case K_PAGEUP: ! case K_KPAGEUP: ! case K_PAGEDOWN: ! case K_KPAGEDOWN: # ifdef MACOS_X ! case K_LEFT: ! case K_RIGHT: ! case K_UP: ! case K_DOWN: ! case K_END: ! case K_HOME: # endif ! if (!(mod_mask & MOD_MASK_SHIFT)) ! break; ! // FALLTHROUGH ! case K_S_LEFT: ! case K_S_RIGHT: ! case K_S_UP: ! case K_S_DOWN: ! case K_S_END: ! case K_S_HOME: ! // Start selection right away, the cursor can move with CTRL-O when ! // beyond the end of the line. ! start_selection(); ! // Execute the key in (insert) Select mode. ! stuffcharReadbuff(Ctrl_O); ! if (mod_mask) ! { ! char_u buf[4]; ! buf[0] = K_SPECIAL; ! buf[1] = KS_MODIFIER; ! buf[2] = mod_mask; ! buf[3] = NUL; ! stuffReadbuff(buf); ! } ! stuffcharReadbuff(c); ! return TRUE; ! } return FALSE; } *** ../vim-9.0.0123/src/help.c 2022-07-30 12:03:12.835558826 +0100 --- src/help.c 2022-07-31 18:25:09.865852240 +0100 *************** *** 1220,1257 **** for (i = 0; i < filecount; ++i) { len = (int)STRLEN(files[i]); ! if (len > 4) { ! if (STRICMP(files[i] + len - 4, ".txt") == 0) ! { ! // ".txt" -> language "en" ! lang[0] = 'e'; ! lang[1] = 'n'; ! } ! else if (files[i][len - 4] == '.' ! && ASCII_ISALPHA(files[i][len - 3]) ! && ASCII_ISALPHA(files[i][len - 2]) ! && TOLOWER_ASC(files[i][len - 1]) == 'x') ! { ! // ".abx" -> language "ab" ! lang[0] = TOLOWER_ASC(files[i][len - 3]); ! lang[1] = TOLOWER_ASC(files[i][len - 2]); ! } ! else ! continue; ! // Did we find this language already? ! for (j = 0; j < ga.ga_len; j += 2) ! if (STRNCMP(lang, ((char_u *)ga.ga_data) + j, 2) == 0) ! break; ! if (j == ga.ga_len) ! { ! // New language, add it. ! if (ga_grow(&ga, 2) == FAIL) ! break; ! ((char_u *)ga.ga_data)[ga.ga_len++] = lang[0]; ! ((char_u *)ga.ga_data)[ga.ga_len++] = lang[1]; ! } } } --- 1220,1257 ---- for (i = 0; i < filecount; ++i) { len = (int)STRLEN(files[i]); ! if (len <= 4) ! continue; ! ! if (STRICMP(files[i] + len - 4, ".txt") == 0) ! { ! // ".txt" -> language "en" ! lang[0] = 'e'; ! lang[1] = 'n'; ! } ! else if (files[i][len - 4] == '.' ! && ASCII_ISALPHA(files[i][len - 3]) ! && ASCII_ISALPHA(files[i][len - 2]) ! && TOLOWER_ASC(files[i][len - 1]) == 'x') { ! // ".abx" -> language "ab" ! lang[0] = TOLOWER_ASC(files[i][len - 3]); ! lang[1] = TOLOWER_ASC(files[i][len - 2]); ! } ! else ! continue; ! // Did we find this language already? ! for (j = 0; j < ga.ga_len; j += 2) ! if (STRNCMP(lang, ((char_u *)ga.ga_data) + j, 2) == 0) ! break; ! if (j == ga.ga_len) ! { ! // New language, add it. ! if (ga_grow(&ga, 2) == FAIL) ! break; ! ((char_u *)ga.ga_data)[ga.ga_len++] = lang[0]; ! ((char_u *)ga.ga_data)[ga.ga_len++] = lang[1]; } } *** ../vim-9.0.0123/src/normal.c 2022-07-30 16:54:01.863698294 +0100 --- src/normal.c 2022-07-31 18:25:09.865852240 +0100 *************** *** 1916,1960 **** FOR_ALL_WINDOWS(curwin) { curbuf = curwin->w_buffer; ! // skip original window and windows with 'noscrollbind' ! if (curwin != old_curwin && curwin->w_p_scb) { - // do the vertical scroll - if (want_ver) - { #ifdef FEAT_DIFF ! if (old_curwin->w_p_diff && curwin->w_p_diff) ! { ! diff_set_topline(old_curwin, curwin); ! } ! else #endif ! { ! curwin->w_scbind_pos += topline_diff; ! topline = curwin->w_scbind_pos; ! if (topline > curbuf->b_ml.ml_line_count) ! topline = curbuf->b_ml.ml_line_count; ! if (topline < 1) ! topline = 1; ! ! y = topline - curwin->w_topline; ! if (y > 0) ! scrollup(y, FALSE); ! else ! scrolldown(-y, FALSE); ! } ! redraw_later(VALID); ! cursor_correct(); ! curwin->w_redr_status = TRUE; } ! // do the horizontal scroll ! if (want_hor && curwin->w_leftcol != tgt_leftcol) ! { ! curwin->w_leftcol = tgt_leftcol; ! leftcol_changed(); ! } } } --- 1916,1960 ---- FOR_ALL_WINDOWS(curwin) { curbuf = curwin->w_buffer; ! // skip original window and windows with 'noscrollbind' ! if (curwin == old_curwin || !curwin->w_p_scb) ! continue; ! ! // do the vertical scroll ! if (want_ver) { #ifdef FEAT_DIFF ! if (old_curwin->w_p_diff && curwin->w_p_diff) ! { ! diff_set_topline(old_curwin, curwin); ! } ! else #endif ! { ! curwin->w_scbind_pos += topline_diff; ! topline = curwin->w_scbind_pos; ! if (topline > curbuf->b_ml.ml_line_count) ! topline = curbuf->b_ml.ml_line_count; ! if (topline < 1) ! topline = 1; ! y = topline - curwin->w_topline; ! if (y > 0) ! scrollup(y, FALSE); ! else ! scrolldown(-y, FALSE); } ! redraw_later(VALID); ! cursor_correct(); ! curwin->w_redr_status = TRUE; ! } ! ! // do the horizontal scroll ! if (want_hor && curwin->w_leftcol != tgt_leftcol) ! { ! curwin->w_leftcol = tgt_leftcol; ! leftcol_changed(); } } *** ../vim-9.0.0123/src/syntax.c 2022-06-19 12:25:47.000000000 +0100 --- src/syntax.c 2022-07-31 18:32:22.394318774 +0100 *************** *** 1485,1542 **** reg_extmatch_T *six, *bsx; // First a quick check if the stacks have the same size end nextlist. ! if (sp->sst_stacksize == current_state.ga_len ! && sp->sst_next_list == current_next_list) ! { ! // Need to compare all states on both stacks. ! if (sp->sst_stacksize > SST_FIX_STATES) ! bp = SYN_STATE_P(&(sp->sst_union.sst_ga)); ! else ! bp = sp->sst_union.sst_stack; ! for (i = current_state.ga_len; --i >= 0; ) { ! // If the item has another index the state is different. ! if (bp[i].bs_idx != CUR_STATE(i).si_idx) ! break; ! if (bp[i].bs_extmatch != CUR_STATE(i).si_extmatch) { ! // When the extmatch pointers are different, the strings in ! // them can still be the same. Check if the extmatch ! // references are equal. ! bsx = bp[i].bs_extmatch; ! six = CUR_STATE(i).si_extmatch; ! // If one of the extmatch pointers is NULL the states are ! // different. ! if (bsx == NULL || six == NULL) break; ! for (j = 0; j < NSUBEXP; ++j) ! { ! // Check each referenced match string. They must all be ! // equal. ! if (bsx->matches[j] != six->matches[j]) ! { ! // If the pointer is different it can still be the ! // same text. Compare the strings, ignore case when ! // the start item has the sp_ic flag set. ! if (bsx->matches[j] == NULL ! || six->matches[j] == NULL) ! break; ! if ((SYN_ITEMS(syn_block)[CUR_STATE(i).si_idx]).sp_ic ! ? MB_STRICMP(bsx->matches[j], ! six->matches[j]) != 0 ! : STRCMP(bsx->matches[j], six->matches[j]) != 0) ! break; ! } ! } ! if (j != NSUBEXP) break; } } ! if (i < 0) ! return TRUE; } ! return FALSE; } /* --- 1485,1534 ---- reg_extmatch_T *six, *bsx; // First a quick check if the stacks have the same size end nextlist. ! if (sp->sst_stacksize != current_state.ga_len ! || sp->sst_next_list != current_next_list) ! return FALSE; ! ! // Need to compare all states on both stacks. ! if (sp->sst_stacksize > SST_FIX_STATES) ! bp = SYN_STATE_P(&(sp->sst_union.sst_ga)); ! else ! bp = sp->sst_union.sst_stack; ! for (i = current_state.ga_len; --i >= 0; ) ! { ! // If the item has another index the state is different. ! if (bp[i].bs_idx != CUR_STATE(i).si_idx) ! break; ! if (bp[i].bs_extmatch == CUR_STATE(i).si_extmatch) ! continue; ! // When the extmatch pointers are different, the strings in them can ! // still be the same. Check if the extmatch references are equal. ! bsx = bp[i].bs_extmatch; ! six = CUR_STATE(i).si_extmatch; ! // If one of the extmatch pointers is NULL the states are different. ! if (bsx == NULL || six == NULL) ! break; ! for (j = 0; j < NSUBEXP; ++j) { ! // Check each referenced match string. They must all be equal. ! if (bsx->matches[j] != six->matches[j]) { ! // If the pointer is different it can still be the same text. ! // Compare the strings, ignore case when the start item has the ! // sp_ic flag set. ! if (bsx->matches[j] == NULL || six->matches[j] == NULL) break; ! if ((SYN_ITEMS(syn_block)[CUR_STATE(i).si_idx]).sp_ic ! ? MB_STRICMP(bsx->matches[j], six->matches[j]) != 0 ! : STRCMP(bsx->matches[j], six->matches[j]) != 0) break; } } ! if (j != NSUBEXP) ! break; } ! return i < 0 ? TRUE : FALSE; } /* *** ../vim-9.0.0123/src/window.c 2022-07-30 19:10:03.569318597 +0100 --- src/window.c 2022-07-31 18:33:21.670326536 +0100 *************** *** 2004,2035 **** next_curwin_size = -1; FOR_ALL_FRAMES(fr, topfr->fr_child) { ! // If 'winfixwidth' set keep the window width if ! // possible. // Watch out for this window being the next_curwin. ! if (frame_fixed_width(fr)) { ! n = frame_minwidth(fr, NOWIN); ! new_size = fr->fr_width; ! if (frame_has_win(fr, next_curwin)) ! { ! room += p_wiw - p_wmw; ! next_curwin_size = 0; ! if (new_size < p_wiw) ! new_size = p_wiw; ! } ! else ! // These windows don't use up room. ! totwincount -= (n + (fr->fr_next == NULL ! ? extra_sep : 0)) / (p_wmw + 1); ! room -= new_size - n; ! if (room < 0) ! { ! new_size += room; ! room = 0; ! } ! fr->fr_newwidth = new_size; } } if (next_curwin_size == -1) { --- 2004,2033 ---- next_curwin_size = -1; FOR_ALL_FRAMES(fr, topfr->fr_child) { ! if (!frame_fixed_width(fr)) ! continue; ! // If 'winfixwidth' set keep the window width if possible. // Watch out for this window being the next_curwin. ! n = frame_minwidth(fr, NOWIN); ! new_size = fr->fr_width; ! if (frame_has_win(fr, next_curwin)) { ! room += p_wiw - p_wmw; ! next_curwin_size = 0; ! if (new_size < p_wiw) ! new_size = p_wiw; } + else + // These windows don't use up room. + totwincount -= (n + (fr->fr_next == NULL + ? extra_sep : 0)) / (p_wmw + 1); + room -= new_size - n; + if (room < 0) + { + new_size += room; + room = 0; + } + fr->fr_newwidth = new_size; } if (next_curwin_size == -1) { *************** *** 2145,2176 **** next_curwin_size = -1; FOR_ALL_FRAMES(fr, topfr->fr_child) { // If 'winfixheight' set keep the window height if // possible. // Watch out for this window being the next_curwin. ! if (frame_fixed_height(fr)) { ! n = frame_minheight(fr, NOWIN); ! new_size = fr->fr_height; ! if (frame_has_win(fr, next_curwin)) ! { ! room += p_wh - p_wmh; ! next_curwin_size = 0; ! if (new_size < p_wh) ! new_size = p_wh; ! } ! else ! // These windows don't use up room. ! totwincount -= (n + (fr->fr_next == NULL ! ? extra_sep : 0)) / (p_wmh + 1); ! room -= new_size - n; ! if (room < 0) ! { ! new_size += room; ! room = 0; ! } ! fr->fr_newheight = new_size; } } if (next_curwin_size == -1) { --- 2143,2173 ---- next_curwin_size = -1; FOR_ALL_FRAMES(fr, topfr->fr_child) { + if (!frame_fixed_height(fr)) + continue; // If 'winfixheight' set keep the window height if // possible. // Watch out for this window being the next_curwin. ! n = frame_minheight(fr, NOWIN); ! new_size = fr->fr_height; ! if (frame_has_win(fr, next_curwin)) { ! room += p_wh - p_wmh; ! next_curwin_size = 0; ! if (new_size < p_wh) ! new_size = p_wh; } + else + // These windows don't use up room. + totwincount -= (n + (fr->fr_next == NULL + ? extra_sep : 0)) / (p_wmh + 1); + room -= new_size - n; + if (room < 0) + { + new_size += room; + room = 0; + } + fr->fr_newheight = new_size; } if (next_curwin_size == -1) { *************** *** 3752,3787 **** for (wp = firstwin; win_valid(wp); wp = nextwp) { nextwp = wp->w_next; ! if (wp != curwin) // don't close current window ! { ! // Check if it's allowed to abandon this window ! r = can_abandon(wp->w_buffer, forceit); ! if (!win_valid(wp)) // autocommands messed wp up ! { ! nextwp = firstwin; ! continue; ! } ! if (!r) ! { #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG) ! if (message && (p_confirm ! || (cmdmod.cmod_flags & CMOD_CONFIRM)) && p_write) { ! dialog_changed(wp->w_buffer, FALSE); ! if (!win_valid(wp)) // autocommands messed wp up ! { ! nextwp = firstwin; ! continue; ! } ! } ! if (bufIsChanged(wp->w_buffer)) ! #endif continue; } ! win_close(wp, !buf_hide(wp->w_buffer) ! && !bufIsChanged(wp->w_buffer)); } } if (message && !ONE_WINDOW) --- 3749,3782 ---- for (wp = firstwin; win_valid(wp); wp = nextwp) { nextwp = wp->w_next; ! if (wp == curwin) // don't close current window ! continue; ! // Check if it's allowed to abandon this window ! r = can_abandon(wp->w_buffer, forceit); ! if (!win_valid(wp)) // autocommands messed wp up ! { ! nextwp = firstwin; ! continue; ! } ! if (!r) ! { #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG) ! if (message && (p_confirm ! || (cmdmod.cmod_flags & CMOD_CONFIRM)) && p_write) ! { ! dialog_changed(wp->w_buffer, FALSE); ! if (!win_valid(wp)) // autocommands messed wp up { ! nextwp = firstwin; continue; + } } ! if (bufIsChanged(wp->w_buffer)) ! #endif ! continue; } + win_close(wp, !buf_hide(wp->w_buffer) && !bufIsChanged(wp->w_buffer)); } if (message && !ONE_WINDOW) *************** *** 5708,5713 **** --- 5703,5709 ---- if (curfrp->fr_parent == NULL) { + // topframe: can only change the command line if (height > ROWS_AVAIL) // If height is greater than the available space, try to create // space for the frame by reducing 'cmdheight' if possible, while *** ../vim-9.0.0123/src/version.c 2022-07-31 18:03:54.347103073 +0100 --- src/version.c 2022-07-31 18:27:07.926070060 +0100 *************** *** 737,738 **** --- 737,740 ---- { /* Add new patch number below this line */ + /**/ + 124, /**/ -- hundred-and-one symptoms of being an internet addict: 212. Your Internet group window has more icons than your Accessories window. /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// \\\ \\\ sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///