Fix backspace with cursors - holymoly - A tor enabled gopher client written in CHICKEN scheme
 (HTM) git clone git://vernunftzentrum.de/holymoly.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 5f6abb19963fae3735af7db225352db2a2239f05
 (DIR) parent 60a070c2f512570c3a5e7e61d6584f3aa0a36d2d
 (HTM) Author: Christian Kellermann <ckeen@pestilenz.org>
       Date:   Mon, 10 Sep 2018 12:17:40 +0200
       
       Fix backspace with cursors
       
       I am not pleased at all with the current cursor handling, I need to fix
       this.
       
       Diffstat:
         holymoly.scm                        |      27 +++++++++------------------
       
       1 file changed, 9 insertions(+), 18 deletions(-)
       ---
 (DIR) diff --git a/holymoly.scm b/holymoly.scm
       @@ -104,30 +104,21 @@
                             (use-cursor (next-cursor! cursor) pos)
                             (else (if (= pos nlines) pos (set! pos (add1 pos))))))
                           ((#x106) (when use-cursor (set! cursor (list->cursor selectables))) (set! pos 0)) ; HOME
       -                   ((#x168) (when use-cursor #;
       -(set! cursor (sub1 (length dlines)))) (set! pos (max pos (- nlines pos rows)))) ; end
       +                   ((#x168) (set! pos (max pos (- nlines pos rows)))) ; end
                           ((260) (k 'back))
                           ((32)
                            (set! pos (if (> (+ pos rows) nlines) pos (+ pos (sub1 rows))))
                            (when use-cursor
       -                          (let adjust-cursor! ()
       -                            (cond ((> pos (current-cursor cursor))
       -                                   (next-cursor! cursor)
       -                                   (adjust-cursor!))
       -                                  ((< (+ pos (length dlines)) (current-cursor cursor))
       -                                   (prev-cursor! cursor)
       -                                   (adjust-cursor!)))))
       +                      (let adjust-cursor! ()
       +                        (cond ((> pos (current-cursor cursor))
       +                               (next-cursor! cursor)
       +                               (adjust-cursor!))
       +                              ((< (+ pos (length dlines)) (current-cursor cursor))
       +                               (prev-cursor! cursor)
       +                               (adjust-cursor!)))))
                            pos)         ; space
                           ((10 261) (when use-cursor (k (list-ref lines (current-cursor cursor)))) pos)
       -                   ((#x107) (set! pos (if (< (- pos rows) 0) 0 (- pos (sub1 rows))))
       -                    (when use-cursor
       -                          (let adjust-cursor! ()
       -                            (cond ((> pos (current-cursor cursor))
       -                                   (next-cursor! cursor)
       -                                   (adjust-cursor!))
       -                                  ((< (+ pos (length dlines)) (current-cursor cursor))
       -                                   (prev-cursor! cursor)
       -                                   (adjust-cursor!)))))) ; backspace
       +                   ((263) (set! pos (if (< (- pos rows) 0) 0 (- pos (sub1 rows))))) ; backspace
                           ((113) (k 'quit)) ; q
                           ((#x47 #x67) (k (uristring->entry (get-user-input "New uri:" (entry->string (current-page))))) pos) ; G
                           (else pos)))))))))