treat backspacing better (PR8662)

svn: r6209
This commit is contained in:
Eli Barzilay 2007-05-12 06:27:52 +00:00
parent 7a4292cb69
commit 05022c082d

View File

@ -517,6 +517,7 @@
(define last-text-start 0) (define last-text-start 0)
(define last-text-end 0) (define last-text-end 0)
(define last-text-completed? #f) ; is the last region a completion? (define last-text-completed? #f) ; is the last region a completion?
(define completion-disabled? #f) ; are we allowed to insert completions?
(define (reset-last-text-state) (define (reset-last-text-state)
(set! last-text-value "") (set! last-text-value "")
@ -535,7 +536,8 @@
(set! last-text-value value) (set! last-text-value value)
(set! last-text-start start) (set! last-text-start start)
(set! last-text-end end) (set! last-text-end end)
(set! last-text-completed? #f)) (set! last-text-completed? #f)
(set! completion-disabled? #f))
(set! nonstring-path #f) (set! nonstring-path #f)
(when change? (when change?
;; if entered an existing directory, go there ;; if entered an existing directory, go there
@ -571,17 +573,16 @@
(set! last-text-start start)) (set! last-text-start start))
(set! change? #f)] (set! change? #f)]
[;; a b c d [;; a b c d
;; a b c => removed text ;; a b c => backspaced some text
(and last-text-completed? (prefix? value last-text-value #t)) (and (= start end len) (prefix? value last-text-value #t))
;; => disable pending completions if any ;; filter as usual, but disallow completion text
(send completion-timer stop) ;; (otherwise it will pop up again, annoyingly)
(restore-path-list-state) (send completion-timer reset)
(set-state!)] (set-state!)
[;; a b c (set! completion-disabled? #t)]
;; any...| => typed some new text [;; a b c
(and (= start end len) ;; any...| => typed some new text
(not (prefix? value last-text-value))) (and (= start end len) change?)
;; => complete in a while
(send completion-timer reset) (send completion-timer reset)
(set-state!)] (set-state!)]
[;; something else changed? => stopped completing [;; something else changed? => stopped completing
@ -652,7 +653,7 @@
(member (pname-nulstring p) options)) (member (pname-nulstring p) options))
pnames)) pnames))
(set! temp-paths? #t)) (set! temp-paths? #t))
(unless (= start end) (unless (or completion-disabled? (= start end))
(send text set-value found) (send text set-value found)
(send text* set-position start end #f #f 'local) (send text* set-position start end #f #f 'local)
(set! last-text-value found) (set! last-text-value found)