home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #26 / NN_1992_26.iso / spool / alt / lucidem / bug / 351 < prev    next >
Encoding:
Text File  |  1992-11-13  |  4.0 KB  |  115 lines

  1. Path: sparky!uunet!know!hri.com!noc.near.net!news.Brown.EDU!qt.cs.utexas.edu!cs.utexas.edu!torn!nott!bnrgate!bmerh85!bmerh85!hamish
  2. From: Hamish.Macdonald@x400gate.bnr.ca (Hamish Macdonald)
  3. Newsgroups: alt.lucid-emacs.bug
  4. Subject: Re: Lucid Emacs inhibits deletion of the only *visible* screen
  5. Message-ID: <1992Nov13.181823.3157@bmerh85.bnr.ca>
  6. Date: 13 Nov 92 18:18:23 GMT
  7. References: <1992Nov10.234108.8655@bmerh85.bnr.ca> <9211110017.AA11808@thalidomide.lucid>
  8.     <1992Nov11.011212.9659@bmerh85.bnr.ca>
  9. Sender: news@bmerh85.bnr.ca (Usenet News)
  10. Organization: Bell Northern Research
  11. Lines: 101
  12. In-Reply-To: Hamish.Macdonald@x400gate.bnr.ca's message of Wed, 11 Nov 92 01:12:12 GMT
  13.  
  14. >>>>> On Wed, 11 Nov 92 01:12:12 GMT,
  15. >>>>> In message <1992Nov11.011212.9659@bmerh85.bnr.ca>,
  16. >>>>> I wrote:
  17.  
  18. Hamish> Yeah, I thought of all that, but can it at least be made an
  19. Hamish> option?
  20.  
  21. Hamish> I'm going to change it in our copy in any case.
  22.  
  23. Here are patches for screen.c and window.c that make this an option.
  24.  
  25. If the variable "delete-last-visible-screen" is nil, then the existing
  26. functionality (cannot delete last visible screen) is active.
  27.  
  28. If "delete-last-visible-screen" is non-nil, then the user can delete
  29. the last visible screen.
  30.  
  31. Deleting the last window on a screen using delete-window obeys these
  32. rules also.
  33.  
  34. *** screen.c.orig    Wed Nov 11 09:29:18 1992
  35. --- screen.c    Fri Nov 13 11:03:45 1992
  36. ***************
  37. *** 32,37 ****
  38. --- 32,38 ----
  39.   Lisp_Object Vscreen_list;
  40.   Lisp_Object Vterminal_screen;
  41.   Lisp_Object Vglobal_minibuffer_screen;
  42. + Lisp_Object Vdelete_last_visible_screen;
  43.   
  44.   extern Lisp_Object Vminibuffer_list;
  45.   extern Lisp_Object get_minibuffer ();
  46. ***************
  47. *** 487,494 ****
  48.       {
  49.         if (EQ (screen, next_screen (screen, 0, 0)))
  50.           error ("Attempt to delete the only screen");
  51. !       else
  52. !         error ("Attempt to delete the only visible screen");
  53.       }
  54.         Fselect_screen (next);
  55.       }
  56. --- 488,497 ----
  57.       {
  58.         if (EQ (screen, next_screen (screen, 0, 0)))
  59.           error ("Attempt to delete the only screen");
  60. !       else if (EQ (Vdelete_last_visible_screen, Qnil))
  61. !           error ("Attempt to delete the only visible screen");
  62. !         else
  63. !           next = next_screen (screen, 0, 0);
  64.       }
  65.         Fselect_screen (next);
  66.       }
  67. ***************
  68. *** 1176,1181 ****
  69. --- 1179,1189 ----
  70.   minibuffer of this screen.  It is up to you to create a suitable screen\n\
  71.   and store it in this variable.");
  72.     Vglobal_minibuffer_screen = Qnil;
  73. +   DEFVAR_LISP ("delete-last-visible-screen", &Vdelete_last_visible_screen,
  74. +  "If t, allows deletion of the last visible screen, if 1 or more invisible\n\
  75. + screens exist.  Defaults to nil.");
  76. +   Vdelete_last_visible_screen = Qnil;
  77.   
  78.     /* This is set in init_window_once. */
  79.     staticpro (&Vscreen_list);
  80. *** window.c.orig    Fri Nov 13 11:29:28 1992
  81. --- window.c    Fri Nov 13 11:29:59 1992
  82. ***************
  83. *** 576,581 ****
  84. --- 576,582 ----
  85.     register Lisp_Object tem, parent, sib;
  86.     register struct window *p;
  87.     register struct window *par;
  88. +   extern Lisp_Object Vdelete_last_visible_screen;
  89.   
  90.     if (NILP (window))
  91.       window = selected_window;
  92. ***************
  93. *** 592,600 ****
  94.       /* this screen isn't fully initialized yet; don't blow up. */
  95.       return Qnil;
  96.         if (EQ (p->screen, next_screen (p->screen, 0, 1)))
  97. !     error ((EQ (p->screen, next_screen (p->screen, 0, 0))) ?
  98. !            "Attempt to delete the only window on the only screen" :
  99. !            "Attempt to delete the only window on the only visible screen");
  100.         Fdelete_screen (p->screen);
  101.         return Qnil;
  102.       }
  103. --- 593,602 ----
  104.       /* this screen isn't fully initialized yet; don't blow up. */
  105.       return Qnil;
  106.         if (EQ (p->screen, next_screen (p->screen, 0, 1)))
  107. !         if (EQ (p->screen, next_screen (p->screen, 0, 0)))
  108. !           error ("Attempt to delete the only window on the only screen");
  109. !         else if (EQ (Vdelete_last_visible_screen, Qnil))
  110. !         error ("Attempt to delete the only window on the only visible screen");
  111.         Fdelete_screen (p->screen);
  112.         return Qnil;
  113.       }
  114.