🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: gnu.emacs.bug
Article #87921

certain frame positions cause redisplay failure in 19.25

#87921
From: Karl Fogel
Date: Thu, 11 Aug 1994 21:41
140 lines
8998 bytes
        This recipe is necessarily verbose, because I've discovered
that insufficient finicky-ness can result in the bug not showing
itself.  Sorry about this; I hope no one has a difficult time getting
it to work at their site.

        Anyway, to reproduce, do the following:

   0) Start up Emacs 19.25 under X windows.  Make your initial frame
      be 80 columns wide and 56 lines tall (at least, within +/- 3 of
      56 lines tall).

   1) Take the text between the "snip" lines below and place it in a
      Lisp Interaction buffer (in that initial frame).  It is
      important that the entire text of the buffer be visible in the
      window, and that the window be the only one on the frame.

------------- snip ---------- snip --------- snip --------- snip -------------
(let ((foo
       (make-frame '((name . "foo") (height . 10) (width . 50)))))
  ;; Edit the position parameters below such that the frame pops up
  ;; with its top half covering the bottom of the text below, and its
  ;; bottom half sitting in the empty space below that.  Horizontally,
  ;; the frame should be centered with respect to the text lines.
  (set-frame-position foo 95 600)
  (error "remove me when ready") (sit-for 2)
  (goto-char (point-min))
  (search-forward "1*this*" nil nil 2) ; avoid this occurence
  (forward-line -1)
  (mapcar
   (lambda (line-number)
     (save-excursion
       (search-forward (number-to-string line-number))
       (beginning-of-line)
       (let ((kill-whole-line t))
         (kill-line))))
   (list 2 3 12 13 14 21 22 23 26)))

1*this*is*a*nonsense*line*--*the*quick*brown*fox*jumped*over*the*revolutionary
2*this*is*a*nonsense*line*--*the*quick*brown*fox*jumped*over*the*revolutionary
3*this*is*a*nonsense*line*--*the*quick*brown*fox*jumped*over*the*revolutionary
4*this*is*a*nonsense*line*--*the*quick*brown*fox*jumped*over*the*revolutionary
5*this*is*a*nonsense*line*--*the*quick*brown*fox*jumped*over*the*revolutionary
6*this*is*a*nonsense*line*--*the*quick*brown*fox*jumped*over*the*revolutionary
7*this*is*a*nonsense*line*--*the*quick*brown*fox*jumped*over*the*revolutionary
8*this*is*a*nonsense*line*--*the*quick*brown*fox*jumped*over*the*revolutionary
9*this*is*a*nonsense*line*--*the*quick*brown*fox*jumped*over*the*revolutionary
10this*is*a*nonsense*line*--*the*quick*brown*fox*jumped*over*the*revolutionary
11this*is*a*nonsense*line*--*the*quick*brown*fox*jumped*over*the*revolutionary
12this*is*a*nonsense*line*--*the*quick*brown*fox*jumped*over*the*revolutionary
13this*is*a*nonsense*line*--*the*quick*brown*fox*jumped*over*the*revolutionary
14this*is*a*nonsense*line*--*the*quick*brown*fox*jumped*over*the*revolutionary
15this*is*a*nonsense*line*--*the*quick*brown*fox*jumped*over*the*revolutionary
16this*is*a*nonsense*line*--*the*quick*brown*fox*jumped*over*the*revolutionary
17this*is*a*nonsense*line*--*the*quick*brown*fox*jumped*over*the*revolutionary
18this*is*a*nonsense*line*--*the*quick*brown*fox*jumped*over*the*revolutionary
19this*is*a*nonsense*line*--*the*quick*brown*fox*jumped*over*the*revolutionary
20this*is*a*nonsense*line*--*the*quick*brown*fox*jumped*over*the*revolutionary
21this*is*a*nonsense*line*--*the*quick*brown*fox*jumped*over*the*revolutionary
22this*is*a*nonsense*line*--*the*quick*brown*fox*jumped*over*the*revolutionary
23this*is*a*nonsense*line*--*the*quick*brown*fox*jumped*over*the*revolutionary
24this*is*a*nonsense*line*--*the*quick*brown*fox*jumped*over*the*revolutionary
25this*is*a*nonsense*line*--*the*quick*brown*fox*jumped*over*the*revolutionary
26this*is*a*nonsense*line*--*the*quick*brown*fox*jumped*over*the*revolutionary
27this*is*a*nonsense*line*--*the*quick*brown*fox*jumped*over*the*revolutionary
------------- snip ---------- snip --------- snip --------- snip -------------


   2) In the top-level `let' expression of the lisp, change the
      parameters of the `set-frame-position' call as the comment
      indicates.  You'll have to experiment a little, to get the frame
      to pop up as described.  If you have your initial frame tucked
      up in the upper-left corner of your display, with say ten pixels
      or so of padding above and on the side, then things might work
      right out of the box.

      When you have the right parameters, you'll be able to tell,
      because the new frame will pop up centered horizontally in the
      text, and it will cover text vertically starting from the line
      that starts "23this*".  The top sliver of the characters on line
      "23this*" itself will be visible over the title bar of the new
      frame, ideally, but I doubt that such precision is necessary.

      Pictorially, the approximate area that the frame should be
      covering when it pops up is depicted below (I can't show the
      character fragments that will be peeking around the edges, of
      course):

1*this*is*a*nonsense*line*--*the*quick*brown*fox*jumped*over*the*revolutionary
2*this*is*a*nonsense*line*--*the*quick*brown*fox*jumped*over*the*revolutionary
3*this*is*a*nonsense*line*--*the*quick*brown*fox*jumped*over*the*revolutionary
4*this*is*a*nonsense*line*--*the*quick*brown*fox*jumped*over*the*revolutionary
5*this*is*a*nonsense*line*--*the*quick*brown*fox*jumped*over*the*revolutionary
6*this*is*a*nonsense*line*--*the*quick*brown*fox*jumped*over*the*revolutionary
7*this*is*a*nonsense*line*--*the*quick*brown*fox*jumped*over*the*revolutionary
8*this*is*a*nonsense*line*--*the*quick*brown*fox*jumped*over*the*revolutionary
9*this*is*a*nonsense*line*--*the*quick*brown*fox*jumped*over*the*revolutionary
10this*is*a*nonsense*line*--*the*quick*brown*fox*jumped*over*the*revolutionary
11this*is*a*nonsense*line*--*the*quick*brown*fox*jumped*over*the*revolutionary
12this*is*a*nonsense*line*--*the*quick*brown*fox*jumped*over*the*revolutionary
13this*is*a*nonsense*line*--*the*quick*brown*fox*jumped*over*the*revolutionary
14this*is*a*nonsense*line*--*the*quick*brown*fox*jumped*over*the*revolutionary
15this*is*a*nonsense*line*--*the*quick*brown*fox*jumped*over*the*revolutionary
16this*is*a*nonsense*line*--*the*quick*brown*fox*jumped*over*the*revolutionary
17this*is*a*nonsense*line*--*the*quick*brown*fox*jumped*over*the*revolutionary
18this*is*a*nonsense*line*--*the*quick*brown*fox*jumped*over*the*revolutionary
19this*is*a*nonsense*line*--*the*quick*brown*fox*jumped*over*the*revolutionary
20this*is*a*nonsense*line*--*the*quick*brown*fox*jumped*over*the*revolutionary
21this*is*a*nonsense*line*--*the*quick*brown*fox*jumped*over*the*revolutionary
22this*is*a*nonsense*line*--*the*quick*brown*fox*jumped*over*the*revolutionary
23this*is*a*no                                                   revolutionary
24this*is*a*no                                                   revolutionary
25this*is*a*no                                                   revolutionary
26this*is*a*no                                                   revolutionary
27this*is*a*no                                                   revolutionary
             |                                                   |
             |                                                   |
             |                                                   |
             |                                                   |
             |                                                   |
             |                                                   |
             |                                                   |
              ---------------------------------------------------


   3) Once you've got the frame popping up in the right place, remove
      the call to `error' (but not the `sit-for' following it on the
      same line).

   4) Okay, evaluate the whole `let' (I place the cursor at the end of
      the expression and hit C-x C-e).  Give it a few seconds, because
      of the sit-for and the time it takes to create a new frame.

      The redisplay problem should be glaringly obvious; if you don't
      see it, then I need to come up with a better recipe.


         Assuming you succeeded, any ideas as to what's going on?

Best,
Karl
Technical Details
Message-ID: <199408112018.AA14884@phylo.life.uiuc.edu>
Path: arc1-ca.pugleaf.net!bga.com!news.sprintlink.net!primenet!netnews.asu.edu !asuvax!cs.utexas.edu!convex!news.duke.edu!news-feed-1.peachnet.edu!gatech!howland.reston.ans.net!math.ohio-state.edu!cis.ohio-state.edu!phylo.life.uiuc.edu!kfogel

Show Full Headers
Complete Article Headers
X-Google-Language: ENGLISH,ASCII-7-bit
X-Google-Thread: fb2f1,defe5d1fd8a7cb89,start
X-Google-Attributes: gidfb2f1,public
X-Google-ArrivalTime: 1994-08-11 20:03:01 PST
Path: arc1-ca.pugleaf.net!bga.com!news.sprintlink.net!primenet!netnews.asu.edu      !asuvax!cs.utexas.edu!convex!news.duke.edu!news-feed-1.peachnet.edu!gatech!howland.reston.ans.net!math.ohio-state.edu!cis.ohio-state.edu!phylo.life.uiuc.edu!kfogel
From: kfogel@phylo.life.uiuc.edu (Karl Fogel)
Newsgroups: gnu.emacs.bug
Subject: certain frame positions cause redisplay failure in 19.25
Date: 11 Aug 1994 17:41:21 -0400
Organization: GNUs Not Usenet
Lines: 141
Sender: daemon@cis.ohio-state.edu
Approved: bug-gnu-emacs@prep.ai.mit.edu
Distribution: gnu
Message-ID: <199408112018.AA14884@phylo.life.uiuc.edu>