aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Rudalics2011-07-02 12:36:48 +0200
committerMartin Rudalics2011-07-02 12:36:48 +0200
commit28545e04974fd13858eaff304cc09b562fd9f71f (patch)
tree65f178ee0e9cbbfd36d4fd0d02cb1785d8b31941
parenta9e2a8db83243a5ef0fd6e80593af3f2a1a9cf0c (diff)
downloademacs-28545e04974fd13858eaff304cc09b562fd9f71f.tar.gz
emacs-28545e04974fd13858eaff304cc09b562fd9f71f.zip
Remove clone-number support. Provide clone-of parameter in window states.
* window.h (window): Remove clone_number slot. * window.c (Fwindow_clone_number, Fset_window_clone_number): Remove. (make_parent_window, make_window, saved_window) (Fset_window_configuration, save_window_save): Don't deal with clone numbers. * buffer.c (Qclone_number): Remove declaration. (sort_overlays, overlay_strings): Don't deal with clone numbers. * window.el (window-state-get-1): Don't assign clone numbers. Add clone-of item to list of window parameters. (window-state-put-2): Don't process clone numbers. (display-buffer-alist): Fix doc-string.
-rw-r--r--lisp/ChangeLog7
-rw-r--r--lisp/window.el9
-rw-r--r--src/ChangeLog11
-rw-r--r--src/buffer.c23
-rw-r--r--src/window.c29
-rw-r--r--src/window.h4
6 files changed, 29 insertions, 54 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 25c3f48ded7..277131a13db 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,10 @@
12011-07-02 Martin Rudalics <rudalics@gmx.at>
2
3 * window.el (window-state-get-1): Don't assign clone numbers.
4 Add clone-of item to list of window parameters.
5 (window-state-put-2): Don't process clone numbers.
6 (display-buffer-alist): Fix doc-string.
7
12011-07-02 Stefan Monnier <monnier@iro.umontreal.ca> 82011-07-02 Stefan Monnier <monnier@iro.umontreal.ca>
2 9
3 * subr.el (remq): Don't allocate if it's not needed. 10 * subr.el (remq): Don't allocate if it's not needed.
diff --git a/lisp/window.el b/lisp/window.el
index 5cd5fca8b3c..64f4119027a 100644
--- a/lisp/window.el
+++ b/lisp/window.el
@@ -3542,7 +3542,6 @@ specific buffers."
3542 (window-list-no-nils 3542 (window-list-no-nils
3543 type 3543 type
3544 (unless (window-next-sibling window) (cons 'last t)) 3544 (unless (window-next-sibling window) (cons 'last t))
3545 (cons 'clone-number (window-clone-number window))
3546 (cons 'total-height (window-total-size window)) 3545 (cons 'total-height (window-total-size window))
3547 (cons 'total-width (window-total-size window t)) 3546 (cons 'total-width (window-total-size window t))
3548 (cons 'normal-height (window-normal-size window)) 3547 (cons 'normal-height (window-normal-size window))
@@ -3554,6 +3553,9 @@ specific buffers."
3554 (unless (memq (car parameter) 3553 (unless (memq (car parameter)
3555 window-state-ignored-parameters) 3554 window-state-ignored-parameters)
3556 (setq list (cons parameter list)))) 3555 (setq list (cons parameter list))))
3556 (unless (window-parameter window 'clone-of)
3557 ;; Make a clone-of parameter.
3558 (setq list (cons (cons 'clone-of window) list)))
3557 (when list 3559 (when list
3558 (cons 'parameters list))) 3560 (cons 'parameters list)))
3559 (when buffer 3561 (when buffer
@@ -3694,13 +3696,10 @@ value can be also stored on disk and read back in a new session."
3694 "Helper function for `window-state-put'." 3696 "Helper function for `window-state-put'."
3695 (dolist (item window-state-put-list) 3697 (dolist (item window-state-put-list)
3696 (let ((window (car item)) 3698 (let ((window (car item))
3697 (clone-number (cdr (assq 'clone-number item)))
3698 (splits (cdr (assq 'splits item))) 3699 (splits (cdr (assq 'splits item)))
3699 (nest (cdr (assq 'nest item))) 3700 (nest (cdr (assq 'nest item)))
3700 (parameters (cdr (assq 'parameters item))) 3701 (parameters (cdr (assq 'parameters item)))
3701 (state (cdr (assq 'buffer item)))) 3702 (state (cdr (assq 'buffer item))))
3702 ;; Put in clone-number.
3703 (when clone-number (set-window-clone-number window clone-number))
3704 (when splits (set-window-splits window splits)) 3703 (when splits (set-window-splits window splits))
3705 (when nest (set-window-nest window nest)) 3704 (when nest (set-window-nest window nest))
3706 ;; Process parameters. 3705 ;; Process parameters.
@@ -4100,7 +4099,7 @@ A list whose car is the symbol `function' specifies that the
4100function specified in the second element of the list is 4099function specified in the second element of the list is
4101responsible for displaying the buffer. `display-buffer' calls 4100responsible for displaying the buffer. `display-buffer' calls
4102this function with the buffer as first argument and the remaining 4101this function with the buffer as first argument and the remaining
4103elements of the list as the other arguments. 4102elements of the list as the second.
4104 4103
4105The function should choose or create a window, display the buffer 4104The function should choose or create a window, display the buffer
4106in it, and return the window. It is also responsible for giving 4105in it, and return the window. It is also responsible for giving
diff --git a/src/ChangeLog b/src/ChangeLog
index bb5c579d7fa..fff817118ea 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,14 @@
12011-07-02 Martin Rudalics <rudalics@gmx.at>
2
3 * window.h (window): Remove clone_number slot.
4 * window.c (Fwindow_clone_number, Fset_window_clone_number):
5 Remove.
6 (make_parent_window, make_window, saved_window)
7 (Fset_window_configuration, save_window_save): Don't deal with
8 clone numbers.
9 * buffer.c (Qclone_number): Remove declaration.
10 (sort_overlays, overlay_strings): Don't deal with clone numbers.
11
12011-07-02 Stefan Monnier <monnier@iro.umontreal.ca> 122011-07-02 Stefan Monnier <monnier@iro.umontreal.ca>
2 13
3 Add multiple inheritance to keymaps. 14 Add multiple inheritance to keymaps.
diff --git a/src/buffer.c b/src/buffer.c
index 328963be78c..006153b0424 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -146,7 +146,7 @@ static Lisp_Object Qoverlayp;
146 146
147Lisp_Object Qpriority, Qbefore_string, Qafter_string; 147Lisp_Object Qpriority, Qbefore_string, Qafter_string;
148 148
149static Lisp_Object Qclone_number, Qevaporate; 149static Lisp_Object Qevaporate;
150 150
151Lisp_Object Qmodification_hooks; 151Lisp_Object Qmodification_hooks;
152Lisp_Object Qinsert_in_front_hooks; 152Lisp_Object Qinsert_in_front_hooks;
@@ -2900,13 +2900,10 @@ sort_overlays (Lisp_Object *overlay_vec, ptrdiff_t noverlays, struct window *w)
2900 overlays that are limited to some other window. */ 2900 overlays that are limited to some other window. */
2901 if (w) 2901 if (w)
2902 { 2902 {
2903 Lisp_Object window, clone_number; 2903 Lisp_Object window;
2904 2904
2905 window = Foverlay_get (overlay, Qwindow); 2905 window = Foverlay_get (overlay, Qwindow);
2906 clone_number = Foverlay_get (overlay, Qclone_number); 2906 if (WINDOWP (window) && XWINDOW (window) != w)
2907 if (WINDOWP (window) && XWINDOW (window) != w
2908 && (! NUMBERP (clone_number)
2909 || XFASTINT (clone_number) != XFASTINT (w->clone_number)))
2910 continue; 2907 continue;
2911 } 2908 }
2912 2909
@@ -3035,7 +3032,7 @@ record_overlay_string (struct sortstrlist *ssl, Lisp_Object str,
3035EMACS_INT 3032EMACS_INT
3036overlay_strings (EMACS_INT pos, struct window *w, unsigned char **pstr) 3033overlay_strings (EMACS_INT pos, struct window *w, unsigned char **pstr)
3037{ 3034{
3038 Lisp_Object overlay, window, clone_number, str; 3035 Lisp_Object overlay, window, str;
3039 struct Lisp_Overlay *ov; 3036 struct Lisp_Overlay *ov;
3040 EMACS_INT startpos, endpos; 3037 EMACS_INT startpos, endpos;
3041 int multibyte = ! NILP (BVAR (current_buffer, enable_multibyte_characters)); 3038 int multibyte = ! NILP (BVAR (current_buffer, enable_multibyte_characters));
@@ -3054,12 +3051,8 @@ overlay_strings (EMACS_INT pos, struct window *w, unsigned char **pstr)
3054 if (endpos != pos && startpos != pos) 3051 if (endpos != pos && startpos != pos)
3055 continue; 3052 continue;
3056 window = Foverlay_get (overlay, Qwindow); 3053 window = Foverlay_get (overlay, Qwindow);
3057 clone_number = Foverlay_get (overlay, Qclone_number); 3054 if (WINDOWP (window) && XWINDOW (window) != w)
3058 if (WINDOWP (window) && XWINDOW (window) != w
3059 && (! NUMBERP (clone_number)
3060 || XFASTINT (clone_number) != XFASTINT (w->clone_number)))
3061 continue; 3055 continue;
3062
3063 if (startpos == pos 3056 if (startpos == pos
3064 && (str = Foverlay_get (overlay, Qbefore_string), STRINGP (str))) 3057 && (str = Foverlay_get (overlay, Qbefore_string), STRINGP (str)))
3065 record_overlay_string (&overlay_heads, str, 3058 record_overlay_string (&overlay_heads, str,
@@ -3086,10 +3079,7 @@ overlay_strings (EMACS_INT pos, struct window *w, unsigned char **pstr)
3086 if (endpos != pos && startpos != pos) 3079 if (endpos != pos && startpos != pos)
3087 continue; 3080 continue;
3088 window = Foverlay_get (overlay, Qwindow); 3081 window = Foverlay_get (overlay, Qwindow);
3089 clone_number = Foverlay_get (overlay, Qclone_number); 3082 if (WINDOWP (window) && XWINDOW (window) != w)
3090 if (WINDOWP (window) && XWINDOW (window) != w
3091 && (! NUMBERP (clone_number)
3092 || XFASTINT (clone_number) != XFASTINT (w->clone_number)))
3093 continue; 3083 continue;
3094 if (startpos == pos 3084 if (startpos == pos
3095 && (str = Foverlay_get (overlay, Qbefore_string), STRINGP (str))) 3085 && (str = Foverlay_get (overlay, Qbefore_string), STRINGP (str)))
@@ -5229,7 +5219,6 @@ syms_of_buffer (void)
5229 DEFSYM (Qinsert_behind_hooks, "insert-behind-hooks"); 5219 DEFSYM (Qinsert_behind_hooks, "insert-behind-hooks");
5230 DEFSYM (Qget_file_buffer, "get-file-buffer"); 5220 DEFSYM (Qget_file_buffer, "get-file-buffer");
5231 DEFSYM (Qpriority, "priority"); 5221 DEFSYM (Qpriority, "priority");
5232 DEFSYM (Qclone_number, "clone-number");
5233 DEFSYM (Qbefore_string, "before-string"); 5222 DEFSYM (Qbefore_string, "before-string");
5234 DEFSYM (Qafter_string, "after-string"); 5223 DEFSYM (Qafter_string, "after-string");
5235 DEFSYM (Qfirst_change_hook, "first-change-hook"); 5224 DEFSYM (Qfirst_change_hook, "first-change-hook");
diff --git a/src/window.c b/src/window.c
index dfd43ba07bf..154efe4a222 100644
--- a/src/window.c
+++ b/src/window.c
@@ -408,14 +408,6 @@ buffer of the selected window before each command. */)
408 return select_window (window, norecord, 0); 408 return select_window (window, norecord, 0);
409} 409}
410 410
411DEFUN ("window-clone-number", Fwindow_clone_number, Swindow_clone_number, 0, 1, 0,
412 doc: /* Return WINDOW's clone number.
413WINDOW can be any window and defaults to the selected one. */)
414 (Lisp_Object window)
415{
416 return decode_any_window (window)->clone_number;
417}
418
419DEFUN ("window-buffer", Fwindow_buffer, Swindow_buffer, 0, 1, 0, 411DEFUN ("window-buffer", Fwindow_buffer, Swindow_buffer, 0, 1, 0,
420 doc: /* Return the buffer that WINDOW is displaying. 412 doc: /* Return the buffer that WINDOW is displaying.
421WINDOW can be any window and defaults to the selected one. 413WINDOW can be any window and defaults to the selected one.
@@ -3087,18 +3079,6 @@ set_window_buffer (Lisp_Object window, Lisp_Object buffer, int run_hooks_p, int
3087 unbind_to (count, Qnil); 3079 unbind_to (count, Qnil);
3088} 3080}
3089 3081
3090DEFUN ("set-window-clone-number", Fset_window_clone_number, Sset_window_clone_number, 2, 2, 0,
3091 doc: /* Set WINDOW's clone number to CLONE-NUMBER.
3092WINDOW can be any window and defaults to the selected one. */)
3093 (Lisp_Object window, Lisp_Object clone_number)
3094{
3095 register struct window *w = decode_any_window (window);
3096
3097 CHECK_NUMBER (clone_number);
3098 w->clone_number = clone_number;
3099 return w->clone_number;
3100}
3101
3102DEFUN ("set-window-buffer", Fset_window_buffer, Sset_window_buffer, 2, 3, 0, 3082DEFUN ("set-window-buffer", Fset_window_buffer, Sset_window_buffer, 2, 3, 0,
3103 doc: /* Make WINDOW display BUFFER-OR-NAME as its contents. 3083 doc: /* Make WINDOW display BUFFER-OR-NAME as its contents.
3104WINDOW has to be a live window and defaults to the selected one. 3084WINDOW has to be a live window and defaults to the selected one.
@@ -3289,7 +3269,6 @@ make_parent_window (Lisp_Object window, int horflag)
3289 3269
3290 ++sequence_number; 3270 ++sequence_number;
3291 XSETFASTINT (p->sequence_number, sequence_number); 3271 XSETFASTINT (p->sequence_number, sequence_number);
3292 XSETFASTINT (p->clone_number, sequence_number);
3293 3272
3294 replace_window (window, parent, 1); 3273 replace_window (window, parent, 1);
3295 3274
@@ -3335,7 +3314,6 @@ make_window (void)
3335 XSETFASTINT (w->use_time, 0); 3314 XSETFASTINT (w->use_time, 0);
3336 ++sequence_number; 3315 ++sequence_number;
3337 XSETFASTINT (w->sequence_number, sequence_number); 3316 XSETFASTINT (w->sequence_number, sequence_number);
3338 XSETFASTINT (w->clone_number, sequence_number);
3339 w->temslot = w->last_modified = w->last_overlay_modified = Qnil; 3317 w->temslot = w->last_modified = w->last_overlay_modified = Qnil;
3340 XSETFASTINT (w->last_point, 0); 3318 XSETFASTINT (w->last_point, 0);
3341 w->last_had_star = w->vertical_scroll_bar = Qnil; 3319 w->last_had_star = w->vertical_scroll_bar = Qnil;
@@ -5348,8 +5326,7 @@ struct saved_window
5348{ 5326{
5349 struct vectorlike_header header; 5327 struct vectorlike_header header;
5350 5328
5351 Lisp_Object window, clone_number; 5329 Lisp_Object window, buffer, start, pointm, mark;
5352 Lisp_Object buffer, start, pointm, mark;
5353 Lisp_Object left_col, top_line, total_cols, total_lines; 5330 Lisp_Object left_col, top_line, total_cols, total_lines;
5354 Lisp_Object normal_cols, normal_lines; 5331 Lisp_Object normal_cols, normal_lines;
5355 Lisp_Object hscroll, min_hscroll; 5332 Lisp_Object hscroll, min_hscroll;
@@ -5568,7 +5545,6 @@ the return value is nil. Otherwise the value is t. */)
5568 } 5545 }
5569 } 5546 }
5570 5547
5571 w->clone_number = p->clone_number;
5572 /* If we squirreled away the buffer in the window's height, 5548 /* If we squirreled away the buffer in the window's height,
5573 restore it now. */ 5549 restore it now. */
5574 if (BUFFERP (w->total_lines)) 5550 if (BUFFERP (w->total_lines))
@@ -5851,7 +5827,6 @@ save_window_save (Lisp_Object window, struct Lisp_Vector *vector, int i)
5851 5827
5852 XSETFASTINT (w->temslot, i); i++; 5828 XSETFASTINT (w->temslot, i); i++;
5853 p->window = window; 5829 p->window = window;
5854 p->clone_number = w->clone_number;
5855 p->buffer = w->buffer; 5830 p->buffer = w->buffer;
5856 p->left_col = w->left_col; 5831 p->left_col = w->left_col;
5857 p->top_line = w->top_line; 5832 p->top_line = w->top_line;
@@ -6596,7 +6571,6 @@ function `window-nest' and altered by the function `set-window-nest'. */);
6596 defsubr (&Sset_frame_selected_window); 6571 defsubr (&Sset_frame_selected_window);
6597 defsubr (&Spos_visible_in_window_p); 6572 defsubr (&Spos_visible_in_window_p);
6598 defsubr (&Swindow_line_height); 6573 defsubr (&Swindow_line_height);
6599 defsubr (&Swindow_clone_number);
6600 defsubr (&Swindow_buffer); 6574 defsubr (&Swindow_buffer);
6601 defsubr (&Swindow_parent); 6575 defsubr (&Swindow_parent);
6602 defsubr (&Swindow_top_child); 6576 defsubr (&Swindow_top_child);
@@ -6646,7 +6620,6 @@ function `window-nest' and altered by the function `set-window-nest'. */);
6646 defsubr (&Sdelete_window_internal); 6620 defsubr (&Sdelete_window_internal);
6647 defsubr (&Sresize_mini_window_internal); 6621 defsubr (&Sresize_mini_window_internal);
6648 defsubr (&Sset_window_buffer); 6622 defsubr (&Sset_window_buffer);
6649 defsubr (&Sset_window_clone_number);
6650 defsubr (&Srun_window_configuration_change_hook); 6623 defsubr (&Srun_window_configuration_change_hook);
6651 defsubr (&Sselect_window); 6624 defsubr (&Sselect_window);
6652 defsubr (&Sforce_window_update); 6625 defsubr (&Sforce_window_update);
diff --git a/src/window.h b/src/window.h
index c3f59e4b116..485734e907e 100644
--- a/src/window.h
+++ b/src/window.h
@@ -165,10 +165,6 @@ struct window
165 /* Unique number of window assigned when it was created. */ 165 /* Unique number of window assigned when it was created. */
166 Lisp_Object sequence_number; 166 Lisp_Object sequence_number;
167 167
168 /* Sequence number of window this window was cloned from. Identic
169 to sequence number if window was not cloned. */
170 Lisp_Object clone_number;
171
172 /* No permanent meaning; used by save-window-excursion's 168 /* No permanent meaning; used by save-window-excursion's
173 bookkeeping. */ 169 bookkeeping. */
174 Lisp_Object temslot; 170 Lisp_Object temslot;