- 25 Apr, 2016 3 commits
-
-
Benno Schulenberg authored
The function edit_update() is called by edit_refresh() itself, so it is silly that the first sets 'edit_refresh_needed' to TRUE. This setting is needed only in a few cases -- in the others it's not needed because the screen does not need to be refreshed (it was just about positioning the cursor), or 'edit_refresh_needed' has already been set by a call to goto_line_posx(). So, just set the flag in the five places that need it and spare the other four calls.
-
Benno Schulenberg authored
Since commit 41ed6907, cancelling a prompt after tabbing would sometimes leave the list of file names on the screen. When testing this first, it worked fine -- I was fooled again by 'edit_refresh_needed' already being TRUE when nano has just started up and sits waiting for the first key stroke. I have to hunt this down and kill it.
-
Benno Schulenberg authored
Since commit dac0aa1d, nano would leave edittop at current after reading data from standard input, meaning that everything that had been read in was invisible, "scrolled off" the top of the screen. Correct this by explicitly setting edittop. The above does not happen for ^R (^X) because it has a special mechanism to save and restore edittop. Nor does it happen for ^R ^X M-F because it sets current to the top of the file and refreshing the screen will make edittop follow, or -- in case just one unterminated line was read in -- edittop will already be equal to current.
-
- 24 Apr, 2016 4 commits
-
-
Benno Schulenberg authored
-
Benno Schulenberg authored
Names could be strings of multibyte characters, so they could be more than COLS - 1 bytes long and still be less than COLS - 1 columns wide.
-
Benno Schulenberg authored
-
Benno Schulenberg authored
Also unwrap or improve some comments.
-
- 23 Apr, 2016 6 commits
-
-
Benno Schulenberg authored
A normal lock file is apparently 1024 bytes in size, so the second attempt at reading bytes from the file would try to read 8192 more bytes into a buffer that has room for only 7168 left. According to valgrind, the read() function doesn't like that -- and true: if for some reason the lock file had suddenly expanded, the buffer would overflow. This fixes https://savannah.gnu.org/bugs/?47156.
-
Benno Schulenberg authored
When a tilde is used in the name given at the ^R or ^O prompts, nano expands it, but /not/ when a tilde is given on the command line (in such a way that the shell leaves it as is). Correct that asymmetry. This fixes https://savannah.gnu.org/bugs/?44929 and fixes https://savannah.gnu.org/bugs/?47702 and fixes https://savannah.gnu.org/bugs/?47771.
-
Benno Schulenberg authored
Commit 36ec76a5 made the wrong change: after a tab that did not list any file names on the screen, a refresh /is/ needed, because a previous tab might have listed things on the screen. But at the end of the prompt, it is not necessary to refresh the edit window if things were listed, because the window will be refreshed anyway after reading in a file.
-
Benno Schulenberg authored
Use 'slash' to point at a possible slash, use 'filename' just to point at the real file name, and use 'wasdirname' just to point at the dir's name before expanding it in order to be able to free it. Also, remove two superfluous asserts: 'dirname' cannot be NULL because it has just been mallocstrcpy'd, and checking 'num_matches' is pointless as it would crash on the next statement anyway.
-
Benno Schulenberg authored
-
Benno Schulenberg authored
-
- 17 Apr, 2016 10 commits
-
-
Mike Frysinger authored
-
Benno Schulenberg authored
This is a remnant from 2001, when things were different. Now, there is no need to refresh the edit window when tabbing produced no list. When it did produce a list, it is cleared off later.
-
Benno Schulenberg authored
If for some reason opening the spell-checked or formatted file fails, don't throw away the current contents of the buffer. (It should also give proper feedback about the failure, but we'll leave that for some other time.)
-
Benno Schulenberg authored
Because it is a little clearer, and it is what Pico does too. This partly fixes https://savannah.gnu.org/bugs/?47721.
-
Benno Schulenberg authored
This fixes https://savannah.gnu.org/bugs/?47720.
-
Benno Schulenberg authored
Also, store the input character earlier, so we don't have to use len - 1. Furthermore, len increments in steps of 1, so it cannot pass the value of bufx unnoticed, so use a comparison for equality.
-
Benno Schulenberg authored
Just let read_line() zero-terminate the intermediate buffer when the line is complete.
-
Benno Schulenberg authored
Most of the time NO_CONVERT will not be set, the number of lines will not be zero, and the format of the file will be zero. Rearrange the conditions so that they will evaluate as FALSE as soon as possible.
-
Benno Schulenberg authored
Index i follows almost synchronously the value of len. Since we're adding characters to the intermediate buffer always only at the end, just use len as the index.
-
Benno Schulenberg authored
Until now (when not leaving files unconverted), nano would fumble and drop the final carriage return of a Mac file, and would thus treat the last line of such a file as an unterminated line and prepend it to the current line of the buffer. Correct that, and delete the dead piece of code that was meant to do this. This fixes https://savannah.gnu.org/bugs/?47716.
-
- 16 Apr, 2016 6 commits
-
-
Benno Schulenberg authored
When we don't set edittop in read_line(), we don't need to readjust it in read_file(), because in that particular case it will still be pointing at current. And since fileptr is a new, freshly created line, it can never be equal to filebot, so there is no point in comparing them. If more than one line was inserted at the beginning of the file, leave it up to the screen handling to set edittop to what it should be. Move the setting of fileage a bit down, to its sister setting: the line at current gets "connected" either to the top-of-file pointer or to the last line of the inserted file.
-
Benno Schulenberg authored
-
Benno Schulenberg authored
-
Benno Schulenberg authored
-
Benno Schulenberg authored
-
Benno Schulenberg authored
Also don't zero-terminate the matches in order to compare them, but just limit the length of the comparison.
-
- 15 Apr, 2016 3 commits
-
-
Benno Schulenberg authored
The number of lines to scroll is: the y position of the start of the current line, plus the extra lines that this line occupies, plus the extra lines that the next line occupies, plus one, minus the y position of the last window line. The y position of the start of the current line is current_y - xplustabs() / COLS, the extra lines are strlenpt(data) / COLS, and the y position of the last window line is editwinrows - 1. Note that we first compute the amount to scroll before actually moving to the next line, because we need the current value of current_x, not the one that it will have in the next line. The placewewant value is not good either, because it might be beyond where we actually are. This fixes https://savannah.gnu.org/bugs/?47665.
-
Benno Schulenberg authored
(This change will be made superfluous when we start using gnulib.) This prevents getcwd() from failing on Android and thus completes the fix for https://savannah.gnu.org/bugs/index.php?47659 . Reported-by:
Chris Renshaw <osm0sis@outlook.com> Signed-off-by:
Benno Schulenberg <bensberg@justemail.net>
-
Benno Schulenberg authored
Doing a chdir("..") will not fail when the root directory is reached, and when getcwd() keeps failing too, we have no way of knowing when to stop. So, simply limit the number of attempted chdirs, to avoid getting into an endless loop. This avoids the hang in https://savannah.gnu.org/bugs/index.php?47659 . Reported-by:
Chris Renshaw <osm0sis@outlook.com> Signed-off-by:
Benno Schulenberg <bensberg@justemail.net>
-
- 13 Apr, 2016 5 commits
-
-
Benno Schulenberg authored
If nano has less than four columns available, it will die, so there will always be room for at least four characters.
-
Benno Schulenberg authored
Also, don't force a full refresh of the edit window simply because the current line needs to be horizontally scrolled. And further, when the adjustment of edittop has determined that a full refresh is needed, get out and don't bother scrolling some lines first.
-
Benno Schulenberg authored
When in softwrap mode and scrolling down a line, and thus going to do a full refresh, get out and don't bother redrawing the current and prior lines first.
-
Benno Schulenberg authored
When moving the cursor up or down one line, redraw the new current line only when the target column (placewewant) is beyond the screen, or when the mark is on. (This still redraws the current and prior lines unnecessarily when they are in fact shorter than the screen is wide and the mark is off, but we'll let that pass for now.) Also, when softwrap is on, we don't have have to redraw the current and prior lines at all (when the mark is off): they are in full view, there is nothing to show or hide.
-
Benno Schulenberg authored
When scrolling down a line, a full refresh of the edit window is only needed when softwrap is on, because only then the movement is irregular. When each file line takes up just one screen line (softwrap is off), edit_scroll() is perfectly able to scroll and redraw only the necessary lines. (But... when doing a full refresh anyway with softwrap, why bother scrolling at all? Why not just adjust edittop and call refresh?)
-
- 12 Apr, 2016 2 commits
-
-
Mike Frysinger authored
These are formats used by binutils/glibc/gdb/gcc.
-
Benno Schulenberg authored
-
- 11 Apr, 2016 1 commit
-
-
Benno Schulenberg authored
The old_current line needs to be redrawn only if it differs from current, and if it wasn't drawn already by the iteration for when the mark is on. Also make the conditions involving horizontal scrolling more precise.
-