diff --git a/7.3.1115 b/7.3.1115 new file mode 100644 index 0000000..fa75d99 --- /dev/null +++ b/7.3.1115 @@ -0,0 +1,284 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.1115 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.1115 +Problem: Many users don't like the cursor line number when 'relativenumber' + is set. +Solution: Have four combinations with 'number' and 'relativenumber'. + (Christian Brabandt) +Files: runtime/doc/options.txt, src/option.c, src/screen.c, + src/testdir/test89.in, src/testdir/test89.ok + + +*** ../vim-7.3.1114/runtime/doc/options.txt 2013-03-19 16:46:59.000000000 +0100 +--- runtime/doc/options.txt 2013-06-04 22:01:35.000000000 +0200 +*************** +*** 5077,5084 **** + number. + When a long, wrapped line doesn't start with the first character, '-' + characters are put before the number. +! See |hl-LineNr| for the highlighting used for the number. +! When setting this option, 'relativenumber' is reset. + + *'numberwidth'* *'nuw'* + 'numberwidth' 'nuw' number (Vim default: 4 Vi default: 8) +--- 5130,5149 ---- + number. + When a long, wrapped line doesn't start with the first character, '-' + characters are put before the number. +! See |hl-LineNr| and |hl-CursorLineNr| for the highlighting used for +! the number. +! *number_relativenumber* +! The 'relativenumber' option changes the displayed number to be +! relative to the cursor. Together with 'number' there are these +! four combinations (cursor in line 3): +! +! 'nonu' 'nu' 'nonu' 'nu' +! 'nornu' 'nornu' 'rnu' 'rnu' +! +! |apple | 1 apple | 2 apple | 2 apple +! |pear | 2 pear | 1 pear | 1 pear +! |nobody | 3 nobody | 0 nobody |3 nobody +! |there | 4 there | 1 there | 1 there + + *'numberwidth'* *'nuw'* + 'numberwidth' 'nuw' number (Vim default: 4 Vi default: 8) +*************** +*** 5484,5491 **** + number. + When a long, wrapped line doesn't start with the first character, '-' + characters are put before the number. +! See |hl-LineNr| for the highlighting used for the number. +! When setting this option, 'number' is reset. + + *'remap'* *'noremap'* + 'remap' boolean (default on) +--- 5556,5567 ---- + number. + When a long, wrapped line doesn't start with the first character, '-' + characters are put before the number. +! See |hl-LineNr| and |hl-CursorLineNr| for the highlighting used for +! the number. +! +! The number in front of the cursor line also depends on the value of +! 'number', see |number_relativenumber| for all combinations of the two +! options. + + *'remap'* *'noremap'* + 'remap' boolean (default on) +*** ../vim-7.3.1114/src/option.c 2013-05-21 22:38:14.000000000 +0200 +--- src/option.c 2013-06-04 21:52:13.000000000 +0200 +*************** +*** 7647,7681 **** + } + #endif + +- /* If 'number' is set, reset 'relativenumber'. */ +- /* If 'relativenumber' is set, reset 'number'. */ +- else if ((int *)varp == &curwin->w_p_nu && curwin->w_p_nu) +- { +- curwin->w_p_rnu = FALSE; +- +- /* Only reset the global value if the own value is set globally. */ +- if (((opt_flags & (OPT_LOCAL | OPT_GLOBAL)) == 0)) +- curwin->w_allbuf_opt.wo_rnu = FALSE; +- } +- else if ((int *)varp == &curwin->w_p_rnu && curwin->w_p_rnu) +- { +- curwin->w_p_nu = FALSE; +- +- /* Only reset the global value if the own value is set globally. */ +- if (((opt_flags & (OPT_LOCAL | OPT_GLOBAL)) == 0)) +- curwin->w_allbuf_opt.wo_nu = FALSE; +- } +- else if ((int *)varp == &curwin->w_allbuf_opt.wo_nu +- && curwin->w_allbuf_opt.wo_nu) +- { +- curwin->w_allbuf_opt.wo_rnu = FALSE; +- } +- else if ((int *)varp == &curwin->w_allbuf_opt.wo_rnu +- && curwin->w_allbuf_opt.wo_rnu) +- { +- curwin->w_allbuf_opt.wo_nu = FALSE; +- } +- + else if ((int *)varp == &curbuf->b_p_ro) + { + /* when 'readonly' is reset globally, also reset readonlymode */ +--- 7647,7652 ---- +*** ../vim-7.3.1114/src/screen.c 2013-05-06 04:21:35.000000000 +0200 +--- src/screen.c 2013-06-04 22:04:39.000000000 +0200 +*************** +*** 2329,2343 **** + if (len > w + 1) + len = w + 1; + +! 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 "; + } +--- 2329,2345 ---- + if (len > w + 1) + len = w + 1; + +! if (wp->w_p_nu && !wp->w_p_rnu) +! /* 'number' + 'norelativenumber' */ + num = (long)lnum; + else + { + /* 'relativenumber', don't use negative numbers */ + num = labs((long)get_cursor_rel_lnum(wp, lnum)); +! if (num == 0 && wp->w_p_nu && wp->w_p_rnu) + { ++ /* 'number' + 'relativenumber': cursor line shows absolute ++ * line number */ + num = lnum; + fmt = "%-*ld "; + } +*************** +*** 3499,3513 **** + 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 "; + } +--- 3501,3516 ---- + long num; + char *fmt = "%*ld "; + +! if (wp->w_p_nu && !wp->w_p_rnu) +! /* 'number' + 'norelativenumber' */ + num = (long)lnum; + else + { + /* 'relativenumber', don't use negative numbers */ + num = labs((long)get_cursor_rel_lnum(wp, lnum)); +! if (num == 0 && wp->w_p_nu && wp->w_p_rnu) + { ++ /* 'number' + 'relativenumber' */ + num = lnum; + fmt = "%-*ld "; + } +*************** +*** 10260,10266 **** + 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; +--- 10263,10274 ---- + int n; + linenr_T lnum; + +! if (wp->w_p_rnu && !wp->w_p_nu) +! /* cursor line shows "0" */ +! lnum = wp->w_height; +! else +! /* cursor line shows absolute line number */ +! lnum = wp->w_buffer->b_ml.ml_line_count; + + if (lnum == wp->w_nrwidth_line_count) + return wp->w_nrwidth_width; +*** ../vim-7.3.1114/src/testdir/test89.in 2013-04-24 15:47:11.000000000 +0200 +--- src/testdir/test89.in 2013-06-04 21:59:01.000000000 +0200 +*************** +*** 1,4 **** +--- 1,6 ---- + Some tests for setting 'number' and 'relativenumber' ++ This is not all that useful now that the options are no longer reset when ++ setting the other. + + STARTTEST + :so small.vim +*** ../vim-7.3.1114/src/testdir/test89.ok 2013-03-13 20:42:28.000000000 +0100 +--- src/testdir/test89.ok 2013-06-04 21:58:09.000000000 +0200 +*************** +*** 1,9 **** + results: + +! nonumber + relativenumber + +! nonumber + relativenumber + :setlocal must NOT reset the other global value + +--- 1,9 ---- + results: + +! number + relativenumber + +! number + relativenumber + :setlocal must NOT reset the other global value + +*************** +*** 12,22 **** + relativenumber + :setglobal MUST reset the other global value + +! nonumber + +! norelativenumber + :set MUST reset the other global value + +! nonumber + +! norelativenumber +--- 12,22 ---- + relativenumber + :setglobal MUST reset the other global value + +! number + +! relativenumber + :set MUST reset the other global value + +! number + +! relativenumber +*** ../vim-7.3.1114/src/version.c 2013-06-04 21:42:19.000000000 +0200 +--- src/version.c 2013-06-04 22:11:05.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 1115, + /**/ + +-- +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 ///