From f4c5fd9a8d49f6c1be66c2fddd3f506dcc92d547 Mon Sep 17 00:00:00 2001 From: polair Date: Tue, 14 Sep 2021 10:12:14 -0600 Subject: [PATCH 21/21] add new variable for optional character to end of line-numbers line --- lisp/cus-start.el | 6 ++++++ lisp/frame.el | 1 + src/xdisp.c | 16 ++++++++++++++++ 3 files changed, 23 insertions(+) diff --git a/lisp/cus-start.el b/lisp/cus-start.el index 1a3e5682bba..c755aaa41cf 100644 --- a/lisp/cus-start.el +++ b/lisp/cus-start.el @@ -740,6 +740,12 @@ minibuffer-prompt-properties--setter (const :tag "Visually relative line numbers" :value visual)) "26.1") + (display-line-numbers-separator-character + display-line-numbers + (character :tag "Character to separate numbers from buffer") + :safe (lambda (value) (or (characterp value) (null value))) + "28.05") + ;:safe (lambda (value) (or (characterp value) (null value)))) (display-line-numbers-width display-line-numbers (choice diff --git a/lisp/frame.el b/lisp/frame.el index 60234fc2ae9..c6975a71cf2 100644 --- a/lisp/frame.el +++ b/lisp/frame.el @@ -2876,6 +2876,7 @@ set-frame-property--interactive header-line-format tab-line-format display-line-numbers + display-line-numbers-separator-character display-line-numbers-width display-line-numbers-current-absolute display-line-numbers-widen diff --git a/src/xdisp.c b/src/xdisp.c index d30a68570f0..92225af685a 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -23296,6 +23296,15 @@ maybe_produce_line_number (struct it *it) } } + /* if last character in string, and separator is set, draw separator glyph */ + if (FIXNATP (Vdisplay_line_numbers_separator_character)) + { + tem_it.c = tem_it.char_to_display = XFIXNAT (Vdisplay_line_numbers_separator_character); + tem_it.len = 1; + SET_TEXT_POS (tem_it.position, -1, -1); + PRODUCE_GLYPHS (&tem_it); + } + inhibit_free_realized_faces = save_free_realized_faces; /* Record the width in pixels we need for the line number display. */ @@ -35509,6 +35518,13 @@ syms_of_xdisp (void) DEFSYM (Qrelative, "relative"); DEFSYM (Qvisual, "visual"); + DEFVAR_LISP ("display-line-numbers-separator-character", Vdisplay_line_numbers_separator_character, + doc: /* Character to draw between line numbers and buffer when non-nil. Some interesting +options are: ├, ╞, │, ┃, ║, ▶, ⧽, and ⟫ */); + Vdisplay_line_numbers_separator_character = Qnil; + DEFSYM (Qdisplay_line_numbers_separator_character, "display-line-numbers-separator-character"); + //Fmake_variable_buffer_local (Qdisplay_line_numbers_separator_character); + DEFVAR_LISP ("display-line-numbers-width", Vdisplay_line_numbers_width, doc: /* Minimum width of space reserved for line number display. A positive number means reserve that many columns for line numbers, -- 2.33.0