..
original commit: 9964c9245621e6dc72c554c4aa324c7f3d487072
This commit is contained in:
parent
2801b152ee
commit
aa77427238
|
@ -277,6 +277,7 @@
|
|||
(define-signature framework:text-class^
|
||||
(basic<%>
|
||||
hide-caret/selection<%>
|
||||
nbsp->space<%>
|
||||
delegate<%>
|
||||
searching<%>
|
||||
return<%>
|
||||
|
@ -285,6 +286,7 @@
|
|||
|
||||
basic%
|
||||
hide-caret/selection%
|
||||
nbsp->space%
|
||||
1-pixel-string-snip%
|
||||
1-pixel-tab-snip%
|
||||
delegate%
|
||||
|
@ -299,6 +301,7 @@
|
|||
|
||||
basic-mixin
|
||||
hide-caret/selection-mixin
|
||||
nbsp->space-mixin
|
||||
delegate-mixin
|
||||
searching-mixin
|
||||
return-mixin
|
||||
|
|
|
@ -356,6 +356,31 @@
|
|||
(define (after-set-position)
|
||||
(hide-caret (= (get-start-position) (get-end-position))))
|
||||
(super-instantiate ())))
|
||||
|
||||
(define nbsp->space<%> (interface ((class->interface text%))))
|
||||
(define nbsp->space-mixin
|
||||
(mixin ((class->interface text%)) (nbsp->space<%>)
|
||||
(field [rewriting #f])
|
||||
(inherit begin-edit-sequence end-edit-sequence delete insert get-character)
|
||||
(rename [super-on-insert on-insert]
|
||||
[super-after-insert after-insert])
|
||||
(define/override (on-insert start len)
|
||||
(begin-edit-sequence)
|
||||
(super-on-insert start len))
|
||||
(define/override (after-insert start len)
|
||||
(unless rewriting
|
||||
(set! rewriting #t)
|
||||
(let loop ([pos start])
|
||||
(when (<= pos (+ start len))
|
||||
(let ([char (get-character pos)])
|
||||
(when (char=? char (integer->char 160))
|
||||
(delete pos (+ pos 1) #f)
|
||||
(insert " " pos pos #f))
|
||||
(loop (+ pos 1))))
|
||||
(set! rewriting #f)))
|
||||
(super-after-insert start len)
|
||||
(end-edit-sequence))
|
||||
(super-instantiate ())))
|
||||
|
||||
(define searching<%> (interface (editor:keymap<%> basic<%>)))
|
||||
(define searching-mixin
|
||||
|
@ -721,7 +746,7 @@
|
|||
(let ([frame (send canvas get-top-level-window)])
|
||||
(when (is-a? frame frame:text-info<%>)
|
||||
(call-method frame))))))
|
||||
|
||||
|
||||
(override set-anchor set-overwrite-mode after-set-position after-insert after-delete)
|
||||
(define (set-anchor x)
|
||||
(super-set-anchor x)
|
||||
|
@ -761,52 +786,53 @@
|
|||
(maybe-queue-editor-position-update))
|
||||
(super-instantiate ())))
|
||||
|
||||
(define clever-file-format<%> (interface ((class->interface text%))))
|
||||
|
||||
(define clever-file-format-mixin
|
||||
(mixin ((class->interface text%)) (clever-file-format<%>)
|
||||
(inherit get-file-format set-file-format find-first-snip)
|
||||
(rename [super-on-save-file on-save-file])
|
||||
(define (all-string-snips)
|
||||
(let loop ([s (find-first-snip)])
|
||||
(cond
|
||||
[(not s) #t]
|
||||
[(is-a? s string-snip%)
|
||||
(loop (send s next))]
|
||||
[else #f])))
|
||||
(define/override (on-save-file name format)
|
||||
(let ([all-strings? (all-string-snips)])
|
||||
(cond
|
||||
[(and all-strings?
|
||||
(eq? format 'same)
|
||||
(eq? 'standard (get-file-format))
|
||||
(or (not (preferences:get 'framework:verify-change-format))
|
||||
(gui-utils:get-choice
|
||||
(string-constant save-as-plain-text)
|
||||
(string-constant yes)
|
||||
(string-constant no))))
|
||||
(set-file-format 'text)]
|
||||
[(and (not all-strings?)
|
||||
(eq? format 'same)
|
||||
(eq? 'text (get-file-format))
|
||||
(or (not (preferences:get 'framework:verify-change-format))
|
||||
(gui-utils:get-choice
|
||||
(string-constant save-in-drs-format)
|
||||
(string-constant yes)
|
||||
(string-constant no))))
|
||||
(set-file-format 'standard)]
|
||||
[else (void)]))
|
||||
(super-on-save-file name format))
|
||||
(super-instantiate ())))
|
||||
|
||||
(define basic% (basic-mixin (editor:basic-mixin text%)))
|
||||
(define hide-caret/selection% (hide-caret/selection-mixin basic%))
|
||||
(define delegate% (delegate-mixin basic%))
|
||||
(define -keymap% (editor:keymap-mixin basic%))
|
||||
(define return% (return-mixin -keymap%))
|
||||
(define autowrap% (editor:autowrap-mixin -keymap%))
|
||||
(define file% (editor:file-mixin autowrap%))
|
||||
(define clever-file-format% (clever-file-format-mixin file%))
|
||||
(define backup-autosave% (editor:backup-autosave-mixin clever-file-format%))
|
||||
(define searching% (searching-mixin backup-autosave%))
|
||||
(define info% (info-mixin (editor:info-mixin searching%))))))
|
||||
(define clever-file-format<%> (interface ((class->interface text%))))
|
||||
|
||||
(define clever-file-format-mixin
|
||||
(mixin ((class->interface text%)) (clever-file-format<%>)
|
||||
(inherit get-file-format set-file-format find-first-snip)
|
||||
(rename [super-on-save-file on-save-file])
|
||||
(define (all-string-snips)
|
||||
(let loop ([s (find-first-snip)])
|
||||
(cond
|
||||
[(not s) #t]
|
||||
[(is-a? s string-snip%)
|
||||
(loop (send s next))]
|
||||
[else #f])))
|
||||
(define/override (on-save-file name format)
|
||||
(let ([all-strings? (all-string-snips)])
|
||||
(cond
|
||||
[(and all-strings?
|
||||
(eq? format 'same)
|
||||
(eq? 'standard (get-file-format))
|
||||
(or (not (preferences:get 'framework:verify-change-format))
|
||||
(gui-utils:get-choice
|
||||
(string-constant save-as-plain-text)
|
||||
(string-constant yes)
|
||||
(string-constant no))))
|
||||
(set-file-format 'text)]
|
||||
[(and (not all-strings?)
|
||||
(eq? format 'same)
|
||||
(eq? 'text (get-file-format))
|
||||
(or (not (preferences:get 'framework:verify-change-format))
|
||||
(gui-utils:get-choice
|
||||
(string-constant save-in-drs-format)
|
||||
(string-constant yes)
|
||||
(string-constant no))))
|
||||
(set-file-format 'standard)]
|
||||
[else (void)]))
|
||||
(super-on-save-file name format))
|
||||
(super-instantiate ())))
|
||||
|
||||
(define basic% (basic-mixin (editor:basic-mixin text%)))
|
||||
(define hide-caret/selection% (hide-caret/selection-mixin basic%))
|
||||
(define nbsp->space% (nbsp->space-mixin basic%))
|
||||
(define delegate% (delegate-mixin basic%))
|
||||
(define -keymap% (editor:keymap-mixin basic%))
|
||||
(define return% (return-mixin -keymap%))
|
||||
(define autowrap% (editor:autowrap-mixin -keymap%))
|
||||
(define file% (editor:file-mixin autowrap%))
|
||||
(define clever-file-format% (clever-file-format-mixin file%))
|
||||
(define backup-autosave% (editor:backup-autosave-mixin clever-file-format%))
|
||||
(define searching% (searching-mixin backup-autosave%))
|
||||
(define info% (info-mixin (editor:info-mixin searching%))))))
|
||||
|
|
Loading…
Reference in New Issue
Block a user