- 26 Mar, 2017 1 commit
-
-
Benno Schulenberg authored
Mention the ability to use <Tab> in the search history, the ability to restore the cursor position when reopening a file, the ability to read output of a command, and the lack of file-managing commands in the file browser.
-
- 24 Mar, 2017 4 commits
-
-
Benno Schulenberg authored
-
David Lawrence Ramsey authored
-
David Lawrence Ramsey authored
-
Benno Schulenberg authored
The "./" is a shorthand for "current working directory". It is better to specify it, because it differs from what Pico does: reading always from the user's home directory no matter where the editor was started.
-
- 23 Mar, 2017 5 commits
-
-
Benno Schulenberg authored
-
Benno Schulenberg authored
Only use the "from" thing when an operating directory is in effect, because /only/ then the indicated directory can be something other than "./". Also, make it so that there is no space before the colon.
-
Benno Schulenberg authored
And slightly change the existing one for normal users.
-
Benno Schulenberg authored
"Q" is a pretty standard key to exit from something, and "X" is fairly mnemonic -- better than "E" at least.
-
Benno Schulenberg authored
Put all the movement keys together, in order of ascending stride. Also, move the Undo/Redo keystrokes further up, so that, when the user has a somewhat wider terminal than the usual 80 characters, these keystrokes will be shown -- they are far more interesting than the ^Y and ^V ones, for which PgUp and PgDn can be used.
-
- 22 Mar, 2017 30 commits
-
-
Benno Schulenberg authored
But apparently none of these cases occur, because I can't trigger them.
-
Benno Schulenberg authored
-
Benno Schulenberg authored
This could happen when a tab or a double-width character straddles the boundary between two softwrapped chunks.
-
David Lawrence Ramsey authored
If the number of columns in the edit window changes (which currently only happens in two places: in regenerate_screen(), called when the window is resized; and in main(), when line numbering mode is toggled), the display will break if we're in softwrap mode and firstcolumn is nonzero. This is because the column width of softwrapped chunks has changed, and firstcolumn is no longer the starting column of a chunk, an assumption that all code using firstcolumn relies on. To fix this problem, add a new function, ensure_firstcolumn_is_aligned(), to adjust firstcolumn to the starting column of the chunk it's on, and use it when the number of columns in the edit window changes. (Note that this function uses the simplest possible fix, and could probably be made more sophisticated.)
-
David Lawrence Ramsey authored
In do_replace(), replacing text may change firstcolumn if the next match is offscreen, and replacing text after that will not change it back. In order to keep the viewport unchanged, we have to save and restore not just edittop, but firstcolumn as well.
-
David Lawrence Ramsey authored
In do_int_spell_fix(), spell-checking text may change firstcolumn if the next match is offscreen, and spell-checking text after that will not change it back. In order to keep the viewport unchanged, we have to save and restore not just edittop, but firstcolumn as well.
-
David Lawrence Ramsey authored
In do_justify(), justifying text may change firstcolumn if the paragraph ends offscreen, and unjustifying the text again will not change it back. In order to keep the viewport unchanged, we have to save and restore not just edittop, but firstcolumn as well.
-
David Lawrence Ramsey authored
Copying text involves first cutting it and then quickly pasting it back. However, cutting the text may change firstcolumn if the mark is offscreen. To keep the viewport unchanged, copy_text() has to save and restore not just edittop, but firstcolumn as well.
-
David Lawrence Ramsey authored
Now that we can add text to the bottom right corner of the screen without scrolling the full line onscreen, do_output() needs to refresh the screen in that case, since it would put the cursor offscreen otherwise. Accomplish this by borrowing logic from do_right().
-
David Lawrence Ramsey authored
In do_up() when scroll_only is TRUE, if we're at the top of the screen in softwrap mode, it's not enough to check that edittop is on fileage. We also need to check that firstcolumn is zero. In do_up() when scroll_only is FALSE, if we're at the top of the screen in softwrap mode, current_y should be zero. This is equivalent to how, in do_down() when scroll_only is FALSE, current_y is (editwinrows - 1) at the bottom of the screen in softwrap mode. Since edittop can now be partially scrolled off the screen even when it takes up the entire screen, checking for edittop's being equal to openfile->current->next there no longer applies.
-
David Lawrence Ramsey authored
The new function, update_softwrapped_line(), is called from inside update_line() when softwrap mode is on, so that existing calls remain unchanged. It takes no index, instead displaying edittop from column firstcolumn, and all other lines from column zero. If current is on edittop, it's displayed using the edittop rules, but this is not a problem: if current[current_x] is above edittop at column firstcolumn, it's offscreen, and that should be handled before calling update_line() anyway. Together with the preceding bunch of changes, this fixes https://savannah.gnu.org/bugs/?47667.
-
David Lawrence Ramsey authored
When counting rows in softwrap mode, reset_cursor() should compensate for the number of softwrapped chunks that edittop takes up before firstcolumn.
-
David Lawrence Ramsey authored
Make current_is_above_screen() check for current[current_x] being above edittop at column firstcolumn, and make current_is_below_screen() start counting down from edittop at column firstcolumn instead of edittop at column zero. This means that both functions now account for softwrapped chunks properly.
-
David Lawrence Ramsey authored
Actually enable scrolling edittop partially off the screen by making edit_scroll() and adjust_viewport() use firstcolumn properly when iterating through softwrapped chunks in softwrap mode, or lines in non-softwrap mode. In non-softwrap mode, firstcolumn should still always be zero, because it's initially set to that, and because passing it through the iterators will maintain it at that. This fixes https://savannah.gnu.org/bugs/?49100 . Reported-by:
David Lawrence Ramsey <pooka109@gmail.com>
-
David Lawrence Ramsey authored
We want to be able to scroll the line at edittop partially off the screen. For this to be possible, the new variable firstcolumn stores the starting column of the viewport -- the starting column in the line that edittop points to. Since firstcolumn is used by go_back_chunks() and go_forward_chunks(), it can't be completely #ifdefed out when NANO_TINY is set, but outside of softwrap mode it should always be zero. Currently firstcolumn is initialized to zero, reset to zero when toggling softwrap mode off, and reset to zero when switching buffers while softwrap mode is off. It's otherwise unused, but its uses are forthcoming.
-
David Lawrence Ramsey authored
Since all lines can be partially scrolled off the screen now (except for the top line of the edit window, which is forthcoming), ensure_line_is_visible() is no longer needed.
-
David Lawrence Ramsey authored
Since all lines can be partially scrolled off the screen now (except for edittop, which is forthcoming), the maxlines global variable and its computation mechanism are no longer needed.
-
David Lawrence Ramsey authored
Use go_back_chunks() and go_forward_chunks() to move a screenful of lines or chunks up or down, instead of using special computations in the softwrap case.
-
David Lawrence Ramsey authored
Use go_back_chunks() and go_forward_chunks() in do_up() and do_down() (instead of using a special and complicated computation in do_down()) so that they now properly move vertically to the previous/next chunk in softwrap mode. This also means that do_left() and do_right() will now properly move vertically at actual line boundaries.
-
David Lawrence Ramsey authored
Use the new "unclever" functionality of Home and End to make do_left() and do_right() move properly to the end of the previous chunk or to the start of the next chunk in softwrap mode when crossing a line boundary. (Furthermore, doing Up plus End, or Down plus Home, does all needed screen updates, which simplifies the code.) The do_left() and do_right() functions don't yet properly move vertically at line boundaries, but that will be fixed once do_up() and do_down() are updated for softwrap mode, which is forthcoming. This fixes https://savannah.gnu.org/bugs/?49384.
-
David Lawrence Ramsey authored
Add the parameter be_clever to both functions. When be_clever is FALSE, smart home and dynamic home are disabled in do_home(), and dynamic end is disabled in do_end(), so that these functions only move to the beginning or end of the current line or chunk. This simple home and end functionality is needed to improve do_left() and do_right()'s horizontal behavior with softwrapped chunks, which is forthcoming.
-
David Lawrence Ramsey authored
Make do_end() more useful in softwrap mode: let it move to the end of the current chunk instead of the end of the line; only when already at the end of a chunk, let it move to the end of the line. This is "dynamic end".
-
David Lawrence Ramsey authored
Make do_home() more useful in softwrap mode: let it move to the beginning of the current chunk instead of to the beginning of the whole line; only when already at the beginning of a chunk, let it move to the beginning of the line. This is called "dynamic home'. The above rules are ignored when --smarthome is in effect and the cursor is somewhere in the leading whitespace of a line -- then the cursor is moved to the first non-whitespace character of the line.
-
David Lawrence Ramsey authored
These improvements will eventually make do_home() and do_end() take parameters. Since the global function lists can hold only functions without parameters, preemptively add do_home_void() and do_end_void(), and make the global function lists use them.
-
David Lawrence Ramsey authored
Use go_back_chunks() and go_forward_chunks() to move from the row current_y is on to the row mouse_row is on. Now softwrap mode and non-softwrap mode will behave the same way when we can scroll edittop partially off the screen, which is forthcoming. Accordingly, remove the call to ensure_line_is_visible(), as it no longer applies. The old code did work, but it behaved differently between softwrap mode (which counted down from edittop) and non-softwrap mode (which counted up or down from current_y to take less time, and used a double loop to keep current from going to NULL). The new code counts up or down from current_y in both softwrap mode and non-softwrap mode. In non-softwrap mode, it also avoids the double loop, since go_back_chunks() and go_forward_chunks() keep the filestructs they operate on from going to NULL.
-
David Lawrence Ramsey authored
Use go_back_chunks() to adjust edittop, instead of special casing the computation of goal when softwrapping. Now softwrap mode and non-softwrap mode will behave the same way when edittop can be partially scrolled off the screen, which is forthcoming. (Note that the top line of the screen can't be partially scrolled yet, so we have to work around that for now.)
-
David Lawrence Ramsey authored
Use go_back_chunks() and go_forward_chunks() to adjust edittop and to move up or down to the scrolled region before updating the rows there. Now softwrap mode and non-softwrap mode will behave the same way when we can scroll the top line of the screen partially off the screen, which is forthcoming. (Note that the top line of the screen can't be partially scrolled yet, so we have to work around that for now.)
-
David Lawrence Ramsey authored
Not drawing a line on a row if we're on the top row and scrolled down, or if we're on the bottom row and scrolled up, will only work properly if the line on that row takes up only that row. The latter might not be the case in softwrap mode: if the line occupies multiple chunks and begins on that row -- in that case none of the chunks would be drawn.
-
David Lawrence Ramsey authored
The old name made it sound as if it didn't apply in softwrap mode. But it does: in softwrap mode a line needs updating when the mark is on.
-
David Lawrence Ramsey authored
In softwrap mode, nano doesn't horizontally scroll lines at all, so in this case get_page_start() should always return zero.
-