treat backspacing better (PR8662)
svn: r6209
This commit is contained in:
parent
7a4292cb69
commit
05022c082d
|
@ -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)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user