bugGNU nano - Bugs: bug #56562, when the tail of a line reaches...

 
 

You are not allowed to post comments on this tracker with your current authentication level.

bug #56562: when the tail of a line reaches the right edge, the next row gets cleared

Submitter:  Benno Schulenberg <bens>
Submitted:  Fri 28 Jun 2019 09:32:58 AM UTC
   
 
Severity:  5 - Blocker Status:  Fixed
Assigned to:  bens Open/Closed:  Closed

Fri 28 Jun 2019 07:26:49 PM UTC, comment #3: 

And closing, because unreleased.

(The changes made since 4.3 have reduced the time it takes to do an edit_refresh() with 0.30 milliseconds.  A full edit_refresh() on my typical terminal now takes somewhere between 0.97 and 2.20 milliseconds, depending on the syntax.)

Benno Schulenberg <bens>
Group administrator
Fri 28 Jun 2019 07:08:00 PM UTC, comment #2: 

Fixed in git, commit 44d38815.  Not by reverting commit 44d38815, but by letting display_string() report back whether there is anything to clear, so that draw_row() can avoid calling clrtoeol() when this would do the wrong thing.

(Now display_string() must be made to report back also when the converted string overshoots the allotted space and a ">" needs to be printed, so that update_line() can avoid calling breadth().  This call of breadth() is a pure waste of time, because display_string() already determined whether a ">" is needed or not.  Not doing this call of breadth() will save one microsecond per average row of sixty characters.  The mechanism of reporting back is ugly, but it saves real CPU cycles.)

Benno Schulenberg <bens>
Group administrator
Fri 28 Jun 2019 09:39:42 AM UTC, comment #1: 

The bug is more general: whenever a line gets drawn that exactly fills up the width of the screen, the next row gets cleared.

To reproduce this, run on an 80-column terminal:

  src/nano --ignore +6 README

Then type x until the word "the" at the end of the line reaches the edge of the screen.  See how the next row becomes clear.

Okay, so commit 699cacf7 needs to be reverted: we need to clear each row beforehand in order to avoid clearing /beyond/ the end of the row (that is: the next row).

Benno Schulenberg <bens>
Group administrator
Fri 28 Jun 2019 09:32:58 AM UTC, original submission:  

To reproduce, make your terminal 67 columns wide and run:

  src/nano --ignore +10,14 README

Then type <Shift+Down>.  See how the row below the cursor (the one that starts with "were not included") has disappeared.  Press ^L.  The row reappears.  :|

Apparently the clrtoeol() function has an unwanted effect when the mark is on.

Benno Schulenberg <bens>
Group administrator

 

(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

No files currently attached

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -email is unavailable- added by bens (Submitted the item)
  •  

    There are 0 votes so far. Votes easily highlight which items people would like to see resolved in priority, independently of the priority of the item set by tracker managers.

     

    Follow 5 latest changes.

    Date Changed by Updated Field Previous Value => Replaced by
    2019-06-28 bens Open/ClosedOpen Closed
    2019-06-28 bens StatusIn Progress Fixed
    2019-06-28 bens Severity4 - Important 5 - Blocker
        StatusNone In Progress
        Summarywhen marking part of a line that just fits, the next row gets cleared when the tail of a line reaches the right edge, the next row gets cleared

    Back to the top

    Powered by Savane 3.13-758e.
    Corresponding source code