Mercurial > vim
diff src/edit.c @ 15062:3a94f7918980 v8.1.0542
patch 8.1.0542: shiftwidth() does not take 'vartabstop' into account
commit https://github.com/vim/vim/commit/f951416a8396a54bbbe21de1a8b16716428549f2
Author: Bram Moolenaar <Bram@vim.org>
Date: Thu Nov 22 03:08:29 2018 +0100
patch 8.1.0542: shiftwidth() does not take 'vartabstop' into account
Problem: shiftwidth() does not take 'vartabstop' into account.
Solution: Use the cursor position or a position explicitly passed.
Also make >> and << work better with 'vartabstop'. (Christian
Brabandt)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Thu, 22 Nov 2018 03:15:10 +0100 |
parents | 4ebda55537a5 |
children | 9df130fd5e0d |
line wrap: on
line diff
--- a/src/edit.c +++ b/src/edit.c @@ -262,7 +262,6 @@ static int ins_ctrl_ey(int tc); #ifdef FEAT_SMARTINDENT static void ins_try_si(int c); #endif -static colnr_T get_nolist_virtcol(void); #if defined(FEAT_EVAL) static char_u *do_insert_char_pre(int c); #endif @@ -10681,9 +10680,14 @@ ins_try_si(int c) * Get the value that w_virtcol would have when 'list' is off. * Unless 'cpo' contains the 'L' flag. */ - static colnr_T + colnr_T get_nolist_virtcol(void) { + // check validity of cursor in current buffer + if (curwin->w_buffer == NULL + || curwin->w_buffer->b_ml.ml_mfp == NULL + || curwin->w_cursor.lnum > curwin->w_buffer->b_ml.ml_line_count) + return 0; if (curwin->w_p_list && vim_strchr(p_cpo, CPO_LISTWM) == NULL) return getvcol_nolist(&curwin->w_cursor); validate_virtcol();