[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
patch for optional inhibit of delete-other-windows(IDE feature)
From: |
joakim |
Subject: |
patch for optional inhibit of delete-other-windows(IDE feature) |
Date: |
Sat, 26 Apr 2008 00:35:15 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/23.0.60 (gnu/linux) |
As discussed in the IDE threads, it would be desirable to be able to
optionally change certain window operations.
This patch makes it possible to disable delete-other-windows for a
window.
Its only lightly tested, and I offer it here mostly to discuss the
interface.
To test:
- make several windows
- (set-window-operation-behaviour-flags (window-at 0 0) '(delete-other-windows
t))
The topmost window now wont go away even if you do c-x 1 in the other windows.
If the windows plist window-operation-behaviour-flags
delete-other-windows is t, the window is not electable for deletion when
delete-other-windows is run.
I chose this interface mostly for ease of implementation, but I think
its ok in other regards as well.
Next task is to do the same for other-window.
=== modified file 'src/window.c'
--- src/window.c 2008-04-03 02:15:43 +0000
+++ src/window.c 2008-04-25 22:10:09 +0000
@@ -55,6 +55,7 @@
Lisp_Object Qwindowp, Qwindow_live_p, Qwindow_configuration_p;
Lisp_Object Qscroll_up, Qscroll_down;
+Lisp_Object Qdelete_other_windows;
Lisp_Object Qwindow_size_fixed;
extern Lisp_Object Qleft_margin, Qright_margin;
@@ -275,6 +276,7 @@
p->frame = Qnil;
p->display_table = Qnil;
p->dedicated = Qnil;
+ p->window_operation_behaviour_flags = Qnil;
p->pseudo_window_p = 0;
bzero (&p->cursor, sizeof (p->cursor));
bzero (&p->last_cursor, sizeof (p->last_cursor));
@@ -1325,6 +1327,32 @@
return w->dedicated;
}
+DEFUN ("window-operation-behaviour-flags", Fwindow_operation_behaviour_flags,
Swindow_operation_behaviour_flags,
+ 1, 1, 0,
+ doc: /* Return WINDOW's window_operation_behaviour_flags.
+ returns nil or a plist where keys are
+ window operations, values flags that might modify the operation
behaviour'. */)
+ (window)
+ Lisp_Object window;
+{
+ return decode_window (window)->window_operation_behaviour_flags;
+}
+
+
+DEFUN ("set-window-operation-behaviour-flags",
Fset_window_operation_behaviour_flags,
+ Sset_window_operation_behaviour_flags, 2, 2, 0,
+ doc: /* set window operation flags */)
+ (window, arg)
+ Lisp_Object window, arg;
+{
+ register struct window *w = decode_window (window);
+
+ w->window_operation_behaviour_flags = arg;
+
+ return w->window_operation_behaviour_flags;
+}
+
+
DEFUN ("window-display-table", Fwindow_display_table, Swindow_display_table,
0, 1, 0,
doc: /* Return the display-table that WINDOW is using.
@@ -2209,7 +2237,10 @@
break;
case DELETE_OTHER_WINDOWS:
- if (!EQ (window, obj))
+ //
+ if ((!EQ (window, obj)) && //obj is not the current window
+ //current window doesnt have delete_other_windows disabled (t
inhibits)
+ (NILP(Fplist_get (w->window_operation_behaviour_flags,
Qdelete_other_windows))))
Fdelete_window (window);
break;
@@ -7398,6 +7429,10 @@
void
syms_of_window ()
{
+
+ Qdelete_other_windows = intern ("delete-other-windows");
+ staticpro (&Qdelete_other_windows);
+
Qscroll_up = intern ("scroll-up");
staticpro (&Qscroll_up);
@@ -7714,6 +7749,9 @@
defsubr (&Sset_window_vscroll);
defsubr (&Scompare_window_configurations);
defsubr (&Swindow_list);
+ defsubr (&Swindow_operation_behaviour_flags);
+ defsubr (&Sset_window_operation_behaviour_flags);
+
}
void
=== modified file 'src/window.h'
--- src/window.h 2008-01-29 02:05:10 +0000
+++ src/window.h 2008-04-25 15:53:53 +0000
@@ -229,6 +229,9 @@
enlarged. */
Lisp_Object orig_total_lines, orig_top_line;
+ /* a plist with flags that modifies behaviour of certain window
operations*/
+ Lisp_Object window_operation_behaviour_flags;
+
/* No Lisp data may follow below this point without changing
mark_object in alloc.c. The member current_matrix must be the
first non-Lisp member. */
--
Joakim Verona
- patch for optional inhibit of delete-other-windows(IDE feature),
joakim <=
- Re: patch for optional inhibit of delete-other-windows(IDE feature), Stefan Monnier, 2008/04/25
- Re: patch for optional inhibit of delete-other-windows(IDE feature), joakim, 2008/04/26
- Re: patch for optional inhibit of delete-other-windows(IDE feature), Stefan Monnier, 2008/04/27
- Re: patch for optional inhibit of delete-other-windows(IDE feature), joakim, 2008/04/28
- Re: patch for optional inhibit of delete-other-windows(IDE feature), Miles Bader, 2008/04/28
- Re: patch for optional inhibit of delete-other-windows(IDE feature), joakim, 2008/04/28
- Re[2]: patch for optional inhibit of delete-other-windows(IDE feature), Eric M. Ludlam, 2008/04/28
- Re: patch for optional inhibit of delete-other-windows(IDE feature), Stefan Monnier, 2008/04/28
- Re: patch for optional inhibit of delete-other-windows(IDE feature), joakim, 2008/04/28
- RE: patch for optional inhibit of delete-other-windows(IDE feature), klaus.berndl, 2008/04/28