1. 01 May, 2017 4 commits
  2. 30 Apr, 2017 1 commit
  3. 28 Apr, 2017 3 commits
  4. 25 Apr, 2017 2 commits
  5. 17 Apr, 2017 2 commits
  6. 09 Apr, 2017 2 commits
  7. 06 Apr, 2017 1 commit
    • Benno Schulenberg's avatar
      bindings: make ^Home and ^End go to top and tail of buffer · cb0806b2
      Benno Schulenberg authored
      On some terminal emulators, Ctrl+Home and Ctrl+End produce special
      keycodes, distinct from plain Home and End.  Make the users of those
      emulators (and of the Linux console) glad by making ^Home and ^End
      do the obvious thing, and the combinations with Shift too.
      cb0806b2
  8. 04 Apr, 2017 2 commits
  9. 22 Mar, 2017 10 commits
    • David Lawrence Ramsey's avatar
      softwrap: adjust firstcolumn when the window width changes · 0389a1d9
      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.)
      0389a1d9
    • David Lawrence Ramsey's avatar
      softwrap: move the updating of a softwrapped line to a new function · 2f6c8987
      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.
      2f6c8987
    • David Lawrence Ramsey's avatar
      weeding: remove ensure_line_is_visible() · 80b3a301
      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.
      80b3a301
    • David Lawrence Ramsey's avatar
      weeding: remove maxlines and related code · 812ecaeb
      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.
      812ecaeb
    • David Lawrence Ramsey's avatar
      tweaks: add a parameter to do_home() and do_end() · a5e106d7
      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.
      a5e106d7
    • David Lawrence Ramsey's avatar
      tweaks: prepare for improvements to do_home() and do_end() · d8189703
      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.
      d8189703
    • David Lawrence Ramsey's avatar
      tweaks: rename need_horizontal_scroll() to line_needs_update() · eb369c0e
      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.
      eb369c0e
    • David Lawrence Ramsey's avatar
      softwrap: account for softwrap when checking whether current is offscreen · 380ad30a
      David Lawrence Ramsey authored
      Add the new functions current_is_above_screen() (which doesn't account
      for softwrapped chunks yet, but will when we can scroll edittop partially
      off the screen, which is forthcoming), current_is_below_screen() (which
      determines whether current[current_x] is past the softwrapped chunk at
      the bottom of the screen), and current_is_offscreen() (the union of the
      previous two functions).
      
      edit_redraw() and edit_refresh() now use current_is_offscreen() to check
      whether they should adjust the viewport, and adjust_viewport() now uses
      current_is_above_screen() to determine whether current is on or below
      the screen in FLOWING mode.
      380ad30a
    • David Lawrence Ramsey's avatar
      softwrap: count softwrapped chunks properly in do_uncut_text() · 4f9c563e
      David Lawrence Ramsey authored
      Add the new function less_than_a_screenful() to accomplish this.
      It uses go_back_chunks() to count the number of softwrapped chunks
      between the end point and the starting point of the paste.
      
      Now softwrap mode and non-softwrap mode behave the same way when
      uncutting fewer than editwinrows rows of text.  Accordingly, remove
      the call to ensure_line_is_visible(), as it no longer applies.
      4f9c563e
    • David Lawrence Ramsey's avatar
      softwrap: add two chunk-iterator functions · 456d66b9
      David Lawrence Ramsey authored
      These functions, go_back_chunks() and go_forward_chunks(), take a number
      of softwrapped chunks (screen rows) to move, a pointer to a buffer, and
      a location (specifically, a starting column of a softwrapped chunk).  If
      they move successfully, they will update the buffer pointer and location
      to point to the beginning of the softwrapped chunk they moved to.
      
      Since non-softwrap mode is effectively just a subset of softwrap mode
      in which every line takes up one chunk, these functions also work in
      non-softwrap mode.  In this case, their starting column will always be
      zero, as it would be in softwrap mode on a line that takes up one chunk.
      
      Nothing uses these functions yet, but that is forthcoming.
      456d66b9
  10. 20 Mar, 2017 1 commit
  11. 06 Mar, 2017 5 commits
  12. 28 Feb, 2017 2 commits
    • David Lawrence Ramsey's avatar
      speller: fix replacing marked text in the alternate spell checker · 234bd9c9
      David Lawrence Ramsey authored
      With read_file() revamped, it now uses partition_filestruct() indirectly
      via ingraft_buffer(), so we can't use partition_filestruct() to replace
      marked text in the alternate spell checker anymore without segfaulting.
      
      Add the new function replace_marked_buffer() to accomplish this instead.
      Based on replace_buffer(), it uses extract_buffer() to throw away the
      marked un-spell-checked text, and then uses read_file() to insert the
      spell-checked text at the position where the mark was.
      
      Accordingly, remove unneeded partitioning and related stuff from
      do_alt_speller().  Besides pasting the file into the buffer at
      current[current_x], ingraft_buffer() also deals with renumbering,
      updating totsize, and handling a magicline, so do_alt_speller()
      doesn't need to do those anymore.
      234bd9c9
    • David Lawrence Ramsey's avatar
      files: revamp the insertion of a file, to be more like pasting text · 86f7bc18
      David Lawrence Ramsey authored
      Move buffer handling and '\r' stripping from read_line() to read_file(),
      so that the file gets its format determined and gets stored in its own
      buffer entirely in one function.  Then use ingraft_buffer() to insert
      this new buffer into the current one.
      
      In addition to pasting the file at current[current_x], ingraft_buffer()
      also deals with renumbering, the updating of totsize, and the handling
      of a magicline, so read_file() doesn't need to do those anymore.
      
      Note that all this makes read_file() depend on the position of
      current[current_x] to know where to insert the file.  Accordingly,
      set current_x to zero in initialize_buffer_text() instead of in
      make_new_buffer(), so that replace_buffer() keeps working properly.
      86f7bc18
  13. 24 Feb, 2017 2 commits
  14. 17 Feb, 2017 3 commits