diff options
| author | Juri Linkov | 2019-09-05 22:27:42 +0300 |
|---|---|---|
| committer | Juri Linkov | 2019-09-05 22:27:42 +0300 |
| commit | 2a0164753456d0f788aa026bdd903ac76519d6ab (patch) | |
| tree | cd1d607d81b73ebba8edcaa9c829cbc1fda2b1a8 /src/buffer.c | |
| parent | 7970c89c770f475ab67a8de84223e45c5bb23d8c (diff) | |
| download | emacs-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.c | 14 |
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 | } |
| 251 | static void | 251 | static void |
| 252 | bset_tab_line_format (struct buffer *b, Lisp_Object val) | ||
| 253 | { | ||
| 254 | b->tab_line_format_ = val; | ||
| 255 | } | ||
| 256 | static void | ||
| 252 | bset_indicate_buffer_boundaries (struct buffer *b, Lisp_Object val) | 257 | bset_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. | ||
| 5518 | The tab line appears, optionally, at the top of a window; | ||
| 5519 | the 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, |