aboutsummaryrefslogtreecommitdiffstats
path: root/src/buffer.c
diff options
context:
space:
mode:
authorRichard M. Stallman1998-05-22 20:05:56 +0000
committerRichard M. Stallman1998-05-22 20:05:56 +0000
commit773fbdb9c834c05939f1e236e3a78416296278a1 (patch)
tree89cb7fe921a42619aed2736758f1ab1906d56a1d /src/buffer.c
parent98ce16221ecdc66fe440a0ccc61d05fab1c71748 (diff)
downloademacs-773fbdb9c834c05939f1e236e3a78416296278a1.tar.gz
emacs-773fbdb9c834c05939f1e236e3a78416296278a1.zip
(Fother_buffer): New arg FRAME. Calls changed.
Pass it to frame_buffer_list, frame_buffer_predicate. (record_buffer): Pass selected frame to them and to set_frame_buffer_list.
Diffstat (limited to 'src/buffer.c')
-rw-r--r--src/buffer.c35
1 files changed, 21 insertions, 14 deletions
diff --git a/src/buffer.c b/src/buffer.c
index b5e9318c10b..ddca5e7bc16 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -890,26 +890,29 @@ This does not change the name of the visited file (if any).")
890 return current_buffer->name; 890 return current_buffer->name;
891} 891}
892 892
893DEFUN ("other-buffer", Fother_buffer, Sother_buffer, 0, 2, 0, 893DEFUN ("other-buffer", Fother_buffer, Sother_buffer, 0, 3, 0,
894 "Return most recently selected buffer other than BUFFER.\n\ 894 "Return most recently selected buffer other than BUFFER.\n\
895Buffers not visible in windows are preferred to visible buffers,\n\ 895Buffers not visible in windows are preferred to visible buffers,\n\
896unless optional second argument VISIBLE-OK is non-nil.\n\ 896unless optional second argument VISIBLE-OK is non-nil.\n\
897If no other buffer exists, the buffer `*scratch*' is returned.\n\ 897If no other buffer exists, the buffer `*scratch*' is returned.\n\
898If BUFFER is omitted or nil, some interesting buffer is returned.") 898If BUFFER is omitted or nil, some interesting buffer is returned.")
899 (buffer, visible_ok) 899 (buffer, visible_ok, frame)
900 register Lisp_Object buffer, visible_ok; 900 register Lisp_Object buffer, visible_ok, frame;
901{ 901{
902 Lisp_Object Fset_buffer_major_mode (); 902 Lisp_Object Fset_buffer_major_mode ();
903 register Lisp_Object tail, buf, notsogood, tem, pred, add_ons; 903 register Lisp_Object tail, buf, notsogood, tem, pred, add_ons;
904 notsogood = Qnil; 904 notsogood = Qnil;
905 905
906 if (NILP (frame))
907 frame = Fselected_frame ();
908
906 tail = Vbuffer_alist; 909 tail = Vbuffer_alist;
907 pred = frame_buffer_predicate (); 910 pred = frame_buffer_predicate (frame);
908 911
909 /* Consider buffers that have been seen in the selected frame 912 /* Consider buffers that have been seen in the selected frame
910 before other buffers. */ 913 before other buffers. */
911 914
912 tem = frame_buffer_list (); 915 tem = frame_buffer_list (frame);
913 add_ons = Qnil; 916 add_ons = Qnil;
914 while (CONSP (tem)) 917 while (CONSP (tem))
915 { 918 {
@@ -1111,7 +1114,7 @@ with SIGHUP.")
1111 and give up if so. */ 1114 and give up if so. */
1112 if (b == current_buffer) 1115 if (b == current_buffer)
1113 { 1116 {
1114 tem = Fother_buffer (buf, Qnil); 1117 tem = Fother_buffer (buf, Qnil, Qnil);
1115 Fset_buffer (tem); 1118 Fset_buffer (tem);
1116 if (b == current_buffer) 1119 if (b == current_buffer)
1117 return Qnil; 1120 return Qnil;
@@ -1219,6 +1222,8 @@ record_buffer (buf)
1219 Lisp_Object buf; 1222 Lisp_Object buf;
1220{ 1223{
1221 register Lisp_Object link, prev; 1224 register Lisp_Object link, prev;
1225 Lisp_Object frame;
1226 frame = Fselected_frame ();
1222 1227
1223 prev = Qnil; 1228 prev = Qnil;
1224 for (link = Vbuffer_alist; CONSP (link); link = XCONS (link)->cdr) 1229 for (link = Vbuffer_alist; CONSP (link); link = XCONS (link)->cdr)
@@ -1242,7 +1247,8 @@ record_buffer (buf)
1242 /* Now move this buffer to the front of frame_buffer_list also. */ 1247 /* Now move this buffer to the front of frame_buffer_list also. */
1243 1248
1244 prev = Qnil; 1249 prev = Qnil;
1245 for (link = frame_buffer_list (); CONSP (link); link = XCONS (link)->cdr) 1250 for (link = frame_buffer_list (frame); CONSP (link);
1251 link = XCONS (link)->cdr)
1246 { 1252 {
1247 if (EQ (XCONS (link)->car, buf)) 1253 if (EQ (XCONS (link)->car, buf))
1248 break; 1254 break;
@@ -1254,15 +1260,16 @@ record_buffer (buf)
1254 if (CONSP (link)) 1260 if (CONSP (link))
1255 { 1261 {
1256 if (NILP (prev)) 1262 if (NILP (prev))
1257 set_frame_buffer_list (XCONS (frame_buffer_list ())->cdr); 1263 set_frame_buffer_list (frame,
1264 XCONS (frame_buffer_list (frame))->cdr);
1258 else 1265 else
1259 XCONS (prev)->cdr = XCONS (XCONS (prev)->cdr)->cdr; 1266 XCONS (prev)->cdr = XCONS (XCONS (prev)->cdr)->cdr;
1260 1267
1261 XCONS (link)->cdr = frame_buffer_list (); 1268 XCONS (link)->cdr = frame_buffer_list (frame);
1262 set_frame_buffer_list (link); 1269 set_frame_buffer_list (frame, link);
1263 } 1270 }
1264 else 1271 else
1265 set_frame_buffer_list (Fcons (buf, frame_buffer_list ())); 1272 set_frame_buffer_list (frame, Fcons (buf, frame_buffer_list (frame)));
1266} 1273}
1267 1274
1268DEFUN ("set-buffer-major-mode", Fset_buffer_major_mode, Sset_buffer_major_mode, 1, 1, 0, 1275DEFUN ("set-buffer-major-mode", Fset_buffer_major_mode, Sset_buffer_major_mode, 1, 1, 0,
@@ -1317,7 +1324,7 @@ the window-buffer correspondences.")
1317 error ("Cannot switch buffers in a dedicated window"); 1324 error ("Cannot switch buffers in a dedicated window");
1318 1325
1319 if (NILP (buffer)) 1326 if (NILP (buffer))
1320 buf = Fother_buffer (Fcurrent_buffer (), Qnil); 1327 buf = Fother_buffer (Fcurrent_buffer (), Qnil, Qnil);
1321 else 1328 else
1322 { 1329 {
1323 buf = Fget_buffer (buffer); 1330 buf = Fget_buffer (buffer);
@@ -1355,7 +1362,7 @@ do not put this buffer at the front of the list of recently selected ones.")
1355{ 1362{
1356 register Lisp_Object buf; 1363 register Lisp_Object buf;
1357 if (NILP (buffer)) 1364 if (NILP (buffer))
1358 buf = Fother_buffer (Fcurrent_buffer (), Qnil); 1365 buf = Fother_buffer (Fcurrent_buffer (), Qnil, Qnil);
1359 else 1366 else
1360 { 1367 {
1361 buf = Fget_buffer (buffer); 1368 buf = Fget_buffer (buffer);
@@ -1621,7 +1628,7 @@ selected window if it is displayed there.")
1621 XSETBUFFER (buffer, current_buffer); 1628 XSETBUFFER (buffer, current_buffer);
1622 1629
1623 /* If we're burying the current buffer, unshow it. */ 1630 /* If we're burying the current buffer, unshow it. */
1624 Fswitch_to_buffer (Fother_buffer (buffer, Qnil), Qnil); 1631 Fswitch_to_buffer (Fother_buffer (buffer, Qnil, Qnil), Qnil);
1625 } 1632 }
1626 else 1633 else
1627 { 1634 {