aboutsummaryrefslogtreecommitdiffstats
path: root/src/frame.c
diff options
context:
space:
mode:
authorKaroly Lorentey <[email protected]>2005-12-20 21:35:03 +0000
committerKaroly Lorentey <[email protected]>2005-12-20 21:35:03 +0000
commita18b8cb5070a81da0659275bef52f77f925644c8 (patch)
tree4edd0aa560de4dc08c6e10e649909505b0e9f59f /src/frame.c
parente93b29568add51c918892153759a1fcd440e85be (diff)
Implement full support for frame-local `next-buffer' and `previous-buffer'.
* frame.h (frame): New field `buried_buffer_list'. * alloc.c (mark_object): Mark it. * frame.c (make_frame): Initialize it. * frame.h (Qburied_buffer_list): New symbol declaration. * buffer.c (Fbuffer_list): Handle the buried-buffer-list frame parameter. * buffer.c (record_buffer): Delete the buffer from the buried_buffer_list. * buffer.c (Fbury_buffer): Add buffer to buried_buffer_list. * frame.c (Qburied_buffer_list): New symbol. (syms_of_frame): Initialize and staticpro it. (frames_discard_buffer): Also remove buffer from buried-buffer-list. (store_frame_param): Handle `buried-buffer-list' specially. (Fframe_parameters): Handle `buried-buffer-list' specially. * simple.el (last-buffer): Don't look at buried-buffer-list, rely on `buffer-list' doing that for us. (next-buffer): Simplify. (previous-buffer): Simplify. git-archimport-id: [email protected]/emacs--multi-tty--0--patch-455
Diffstat (limited to 'src/frame.c')
-rw-r--r--src/frame.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/frame.c b/src/frame.c
index 8d45ddc33f..9c83f96126 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -107,7 +107,7 @@ Lisp_Object Qtitle, Qname;
Lisp_Object Qunsplittable;
Lisp_Object Qmenu_bar_lines, Qtool_bar_lines;
Lisp_Object Qleft_fringe, Qright_fringe;
-Lisp_Object Qbuffer_predicate, Qbuffer_list;
+Lisp_Object Qbuffer_predicate, Qbuffer_list, Qburied_buffer_list;
Lisp_Object Qtty_color_mode;
Lisp_Object Qtty, Qtty_type;
Lisp_Object Qwindow_system;
@@ -303,6 +303,7 @@ make_frame (mini_p)
f->menu_bar_items_used = 0;
f->buffer_predicate = Qnil;
f->buffer_list = Qnil;
+ f->buried_buffer_list = Qnil;
f->namebuf = 0;
f->title = Qnil;
f->menu_bar_window = Qnil;
@@ -2134,7 +2135,7 @@ set_frame_buffer_list (frame, list)
XFRAME (frame)->buffer_list = list;
}
-/* Discard BUFFER from the buffer-list of each frame. */
+/* Discard BUFFER from the buffer-list and buried-buffer-list of each frame. */
void
frames_discard_buffer (buffer)
@@ -2146,6 +2147,8 @@ frames_discard_buffer (buffer)
{
XFRAME (frame)->buffer_list
= Fdelq (buffer, XFRAME (frame)->buffer_list);
+ XFRAME (frame)->buried_buffer_list
+ = Fdelq (buffer, XFRAME (frame)->buried_buffer_list);
}
}
@@ -2233,13 +2236,18 @@ store_frame_param (f, prop, val)
{
register Lisp_Object old_alist_elt;
- /* The buffer-alist parameter is stored in a special place and is
- not in the alist. */
+ /* The buffer-list parameters are stored in a special place and not
+ in the alist. */
if (EQ (prop, Qbuffer_list))
{
f->buffer_list = val;
return;
}
+ if (EQ (prop, Qburied_buffer_list))
+ {
+ f->buried_buffer_list = val;
+ return;
+ }
/* If PROP is a symbol which is supposed to have frame-local values,
and it is set up based on this frame, switch to the global
@@ -2379,6 +2387,7 @@ If FRAME is omitted, return information on the currently selected frame. */)
: FRAME_MINIBUF_WINDOW (f)));
store_in_alist (&alist, Qunsplittable, (FRAME_NO_SPLIT_P (f) ? Qt : Qnil));
store_in_alist (&alist, Qbuffer_list, frame_buffer_list (frame));
+ store_in_alist (&alist, Qburied_buffer_list, XFRAME (frame)->buried_buffer_list);
/* I think this should be done with a hook. */
#ifdef HAVE_WINDOW_SYSTEM
@@ -4199,6 +4208,8 @@ syms_of_frame ()
staticpro (&Qbuffer_predicate);
Qbuffer_list = intern ("buffer-list");
staticpro (&Qbuffer_list);
+ Qburied_buffer_list = intern ("buried-buffer-list");
+ staticpro (&Qburied_buffer_list);
Qdisplay_type = intern ("display-type");
staticpro (&Qdisplay_type);
Qbackground_mode = intern ("background-mode");