diff options
| author | Eli Zaretskii | 2017-06-30 16:37:57 +0300 |
|---|---|---|
| committer | Eli Zaretskii | 2017-06-30 16:37:57 +0300 |
| commit | 7a762fbbfc1c05be8de3d253251f5e7b32da2c73 (patch) | |
| tree | 6025b799826bec0371bd0a38d1bb4f536b773e4a /src | |
| parent | 0e4f2e01af1f4c51b958057d86e28c04cdefddb4 (diff) | |
| download | emacs-7a762fbbfc1c05be8de3d253251f5e7b32da2c73.tar.gz emacs-7a762fbbfc1c05be8de3d253251f5e7b32da2c73.zip | |
Support displaying zero as the number of the current line
* src/xdisp.c (syms_of_xdisp)
<display-line-numbers-current-absolute>: New variable.
<display-line-numbers>: Doc fix.
(maybe_produce_line_number): Support nil value of
display-line-numbers-current-absolute.
* lisp/cus-start.el (standard): Add customization form for
display-line-numbers-current-absolute.
* etc/NEWS: Document recently introduced features.
Diffstat (limited to 'src')
| -rw-r--r-- | src/xdisp.c | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/src/xdisp.c b/src/xdisp.c index 5c6aea19697..7851487e74e 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -20874,7 +20874,13 @@ maybe_produce_line_number (struct it *it) | |||
| 20874 | matrix. */ | 20874 | matrix. */ |
| 20875 | ptrdiff_t max_lnum; | 20875 | ptrdiff_t max_lnum; |
| 20876 | 20876 | ||
| 20877 | if (EQ (Vdisplay_line_numbers, Qvisual)) | 20877 | if (NILP (Vdisplay_line_numbers_current_absolute) |
| 20878 | && (EQ (Vdisplay_line_numbers, Qrelative) | ||
| 20879 | || EQ (Vdisplay_line_numbers, Qvisual))) | ||
| 20880 | /* We subtract one more because the current line is always | ||
| 20881 | zero in this mode. */ | ||
| 20882 | max_lnum = it->w->desired_matrix->nrows - 2; | ||
| 20883 | else if (EQ (Vdisplay_line_numbers, Qvisual)) | ||
| 20878 | max_lnum = it->pt_lnum + it->w->desired_matrix->nrows - 1; | 20884 | max_lnum = it->pt_lnum + it->w->desired_matrix->nrows - 1; |
| 20879 | else | 20885 | else |
| 20880 | max_lnum = this_line + it->w->desired_matrix->nrows - 1 - it->vpos; | 20886 | max_lnum = this_line + it->w->desired_matrix->nrows - 1 - it->vpos; |
| @@ -20889,11 +20895,12 @@ maybe_produce_line_number (struct it *it) | |||
| 20889 | lnum_offset = 0; | 20895 | lnum_offset = 0; |
| 20890 | 20896 | ||
| 20891 | /* Under 'relative', display the absolute line number for the | 20897 | /* Under 'relative', display the absolute line number for the |
| 20892 | current line, as displaying zero gives zero useful information. */ | 20898 | current line, unless the user requests otherwise. */ |
| 20893 | ptrdiff_t lnum_to_display = eabs (this_line - lnum_offset); | 20899 | ptrdiff_t lnum_to_display = eabs (this_line - lnum_offset); |
| 20894 | if ((EQ (Vdisplay_line_numbers, Qrelative) | 20900 | if ((EQ (Vdisplay_line_numbers, Qrelative) |
| 20895 | || EQ (Vdisplay_line_numbers, Qvisual)) | 20901 | || EQ (Vdisplay_line_numbers, Qvisual)) |
| 20896 | && lnum_to_display == 0) | 20902 | && lnum_to_display == 0 |
| 20903 | && !NILP (Vdisplay_line_numbers_current_absolute)) | ||
| 20897 | lnum_to_display = it->pt_lnum + 1; | 20904 | lnum_to_display = it->pt_lnum + 1; |
| 20898 | /* In L2R rows we need to append the blank separator, in R2L | 20905 | /* In L2R rows we need to append the blank separator, in R2L |
| 20899 | rows we need to prepend it. But this function is usually | 20906 | rows we need to prepend it. But this function is usually |
| @@ -32557,8 +32564,10 @@ To add a prefix to continuation lines, use `wrap-prefix'. */); | |||
| 32557 | 32564 | ||
| 32558 | DEFVAR_LISP ("display-line-numbers", Vdisplay_line_numbers, | 32565 | DEFVAR_LISP ("display-line-numbers", Vdisplay_line_numbers, |
| 32559 | doc: /* Non-nil means display line numbers. | 32566 | doc: /* Non-nil means display line numbers. |
| 32560 | Line numbers are displayed before each non-continuation line, i.e. | 32567 | By default, line numbers are displayed before each non-continuation |
| 32561 | after each newline that comes from buffer text. */); | 32568 | line that displays buffer text, i.e. after each newline that came |
| 32569 | from buffer text. However, if the value is `visual', every screen | ||
| 32570 | line will have a number. */); | ||
| 32562 | Vdisplay_line_numbers = Qnil; | 32571 | Vdisplay_line_numbers = Qnil; |
| 32563 | DEFSYM (Qdisplay_line_numbers, "display-line-numbers"); | 32572 | DEFSYM (Qdisplay_line_numbers, "display-line-numbers"); |
| 32564 | Fmake_variable_buffer_local (Qdisplay_line_numbers); | 32573 | Fmake_variable_buffer_local (Qdisplay_line_numbers); |
| @@ -32575,6 +32584,13 @@ Any other value is treated as nil. */); | |||
| 32575 | DEFSYM (Qdisplay_line_number_width, "display-line-number-width"); | 32584 | DEFSYM (Qdisplay_line_number_width, "display-line-number-width"); |
| 32576 | Fmake_variable_buffer_local (Qdisplay_line_number_width); | 32585 | Fmake_variable_buffer_local (Qdisplay_line_number_width); |
| 32577 | 32586 | ||
| 32587 | DEFVAR_LISP ("display-line-numbers-current-absolute", | ||
| 32588 | Vdisplay_line_numbers_current_absolute, | ||
| 32589 | doc: /* Non-nil means display absolute number of current line. | ||
| 32590 | This variable has effect only when `display-line-numbers' is | ||
| 32591 | either `relative' or `visual'. */); | ||
| 32592 | Vdisplay_line_numbers_current_absolute = Qt; | ||
| 32593 | |||
| 32578 | DEFVAR_BOOL ("inhibit-eval-during-redisplay", inhibit_eval_during_redisplay, | 32594 | DEFVAR_BOOL ("inhibit-eval-during-redisplay", inhibit_eval_during_redisplay, |
| 32579 | doc: /* Non-nil means don't eval Lisp during redisplay. */); | 32595 | doc: /* Non-nil means don't eval Lisp during redisplay. */); |
| 32580 | inhibit_eval_during_redisplay = false; | 32596 | inhibit_eval_during_redisplay = false; |