aboutsummaryrefslogtreecommitdiffstats
path: root/src/buffer.c
diff options
context:
space:
mode:
authorJuri Linkov2019-09-05 22:27:42 +0300
committerJuri Linkov2019-09-05 22:27:42 +0300
commit2a0164753456d0f788aa026bdd903ac76519d6ab (patch)
treecd1d607d81b73ebba8edcaa9c829cbc1fda2b1a8 /src/buffer.c
parent7970c89c770f475ab67a8de84223e45c5bb23d8c (diff)
downloademacs-2a0164753456d0f788aa026bdd903ac76519d6ab.tar.gz
emacs-2a0164753456d0f788aa026bdd903ac76519d6ab.zip
Don't use hook pre-redisplay-functions. Set buffer-local tab-line-format.
* lisp/tab-line.el (tab-line-format): Move to C. (tab-line-update-window-parameter): Remove function. (global-tab-line-mode): Set the default value of tab-line-format. * src/buffer.c (syms_of_buffer): Define buffer-local variable tab-line-format. * src/buffer.h (struct buffer): Add tab_line_format_. * src/window.c (window_wants_tab_line): * src/xdisp.c (pos_visible_p, display_mode_lines): Check for buffer-local tab_line_format.
Diffstat (limited to 'src/buffer.c')
-rw-r--r--src/buffer.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/buffer.c b/src/buffer.c
index ad9feee92a4..233a95c2597 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -249,6 +249,11 @@ bset_header_line_format (struct buffer *b, Lisp_Object val)
249 b->header_line_format_ = val; 249 b->header_line_format_ = val;
250} 250}
251static void 251static void
252bset_tab_line_format (struct buffer *b, Lisp_Object val)
253{
254 b->tab_line_format_ = val;
255}
256static void
252bset_indicate_buffer_boundaries (struct buffer *b, Lisp_Object val) 257bset_indicate_buffer_boundaries (struct buffer *b, Lisp_Object val)
253{ 258{
254 b->indicate_buffer_boundaries_ = val; 259 b->indicate_buffer_boundaries_ = val;
@@ -5188,6 +5193,7 @@ init_buffer_once (void)
5188 XSETFASTINT (BVAR (&buffer_local_flags, scroll_up_aggressively), idx); ++idx; 5193 XSETFASTINT (BVAR (&buffer_local_flags, scroll_up_aggressively), idx); ++idx;
5189 XSETFASTINT (BVAR (&buffer_local_flags, scroll_down_aggressively), idx); ++idx; 5194 XSETFASTINT (BVAR (&buffer_local_flags, scroll_down_aggressively), idx); ++idx;
5190 XSETFASTINT (BVAR (&buffer_local_flags, header_line_format), idx); ++idx; 5195 XSETFASTINT (BVAR (&buffer_local_flags, header_line_format), idx); ++idx;
5196 XSETFASTINT (BVAR (&buffer_local_flags, tab_line_format), idx); ++idx;
5191 XSETFASTINT (BVAR (&buffer_local_flags, cursor_type), idx); ++idx; 5197 XSETFASTINT (BVAR (&buffer_local_flags, cursor_type), idx); ++idx;
5192 XSETFASTINT (BVAR (&buffer_local_flags, extra_line_spacing), idx); ++idx; 5198 XSETFASTINT (BVAR (&buffer_local_flags, extra_line_spacing), idx); ++idx;
5193 XSETFASTINT (BVAR (&buffer_local_flags, cursor_in_non_selected_windows), idx); ++idx; 5199 XSETFASTINT (BVAR (&buffer_local_flags, cursor_in_non_selected_windows), idx); ++idx;
@@ -5233,6 +5239,7 @@ init_buffer_once (void)
5233 /* real setup is done in bindings.el */ 5239 /* real setup is done in bindings.el */
5234 bset_mode_line_format (&buffer_defaults, build_pure_c_string ("%-")); 5240 bset_mode_line_format (&buffer_defaults, build_pure_c_string ("%-"));
5235 bset_header_line_format (&buffer_defaults, Qnil); 5241 bset_header_line_format (&buffer_defaults, Qnil);
5242 bset_tab_line_format (&buffer_defaults, Qnil);
5236 bset_abbrev_mode (&buffer_defaults, Qnil); 5243 bset_abbrev_mode (&buffer_defaults, Qnil);
5237 bset_overwrite_mode (&buffer_defaults, Qnil); 5244 bset_overwrite_mode (&buffer_defaults, Qnil);
5238 bset_case_fold_search (&buffer_defaults, Qt); 5245 bset_case_fold_search (&buffer_defaults, Qt);
@@ -5504,6 +5511,13 @@ syms_of_buffer (void)
5504 Fput (Qprotected_field, Qerror_message, 5511 Fput (Qprotected_field, Qerror_message,
5505 build_pure_c_string ("Attempt to modify a protected field")); 5512 build_pure_c_string ("Attempt to modify a protected field"));
5506 5513
5514 DEFVAR_PER_BUFFER ("tab-line-format",
5515 &BVAR (current_buffer, tab_line_format),
5516 Qnil,
5517 doc: /* Analogous to `mode-line-format', but controls the tab line.
5518The tab line appears, optionally, at the top of a window;
5519the mode line appears at the bottom. */);
5520
5507 DEFVAR_PER_BUFFER ("header-line-format", 5521 DEFVAR_PER_BUFFER ("header-line-format",
5508 &BVAR (current_buffer, header_line_format), 5522 &BVAR (current_buffer, header_line_format),
5509 Qnil, 5523 Qnil,