...
original commit: 69a89f50d3661bb05754f31f0fccd91f34b8dadc
This commit is contained in:
parent
6abbf695a5
commit
a8c97f43f0
|
@ -310,69 +310,64 @@
|
||||||
(lambda (edit event)
|
(lambda (edit event)
|
||||||
(letrec ([find-nonwhite
|
(letrec ([find-nonwhite
|
||||||
(lambda (pos d offset)
|
(lambda (pos d offset)
|
||||||
(call/ec
|
(let/ec escape
|
||||||
(lambda (escape)
|
(let ([max (if (> offset 0)
|
||||||
(let ([max (if (> offset 0)
|
(send edit last-position)
|
||||||
(send edit last-position)
|
0)])
|
||||||
-1)])
|
(let loop ([pos pos])
|
||||||
(let loop ([pos pos])
|
(if (= pos max)
|
||||||
(if (= pos max)
|
(escape pos)
|
||||||
(escape pos)
|
(let ([_ (printf "get-char.1: ~s~n" (+ pos offset))]
|
||||||
(let ([c (send edit get-character
|
[c (send edit get-character (+ pos offset))])
|
||||||
(+ pos offset))])
|
(cond
|
||||||
(cond
|
[(char=? #\newline c)
|
||||||
[(char=? #\newline c)
|
(loop (+ pos d))
|
||||||
(loop (+ pos d))
|
(escape pos)]
|
||||||
(escape pos)]
|
[(char-whitespace? c)
|
||||||
[(char-whitespace? c)
|
(loop (+ pos d))]
|
||||||
(loop (+ pos d))]
|
[else pos])))))))])
|
||||||
[else pos]))))))))])
|
|
||||||
(let ([sel-start (send edit get-start-position)]
|
(let ([sel-start (send edit get-start-position)]
|
||||||
[sel-end (send edit get-end-position)])
|
[sel-end (send edit get-end-position)])
|
||||||
(if (= sel-start sel-end)
|
(when (= sel-start sel-end)
|
||||||
(let* ([pos-line
|
(let* ([pos-line (send edit position-line sel-start #f)]
|
||||||
(send edit position-line sel-start #f)]
|
[pos-line-start (send edit line-start-position pos-line)]
|
||||||
[pos-line-start
|
[pos-line-end (send edit line-end-position pos-line)]
|
||||||
(send edit line-start-position pos-line)]
|
|
||||||
[pos-line-end
|
|
||||||
(send edit line-end-position pos-line)]
|
|
||||||
|
|
||||||
[whiteline?
|
[whiteline?
|
||||||
(let loop ([pos pos-line-start])
|
(let loop ([pos pos-line-start])
|
||||||
(if (>= pos pos-line-end)
|
(if (>= pos pos-line-end)
|
||||||
#t
|
#t
|
||||||
(and (char-whitespace?
|
(and (char-whitespace? (send edit get-character pos))
|
||||||
(send edit get-character pos))
|
(loop (add1 pos)))))]
|
||||||
(loop (add1 pos)))))]
|
|
||||||
|
|
||||||
[start (find-nonwhite pos-line-start -1 -1)]
|
[start (find-nonwhite pos-line-start -1 -1)]
|
||||||
[end (find-nonwhite pos-line-end 1 0)]
|
[end (find-nonwhite pos-line-end 1 0)]
|
||||||
|
|
||||||
[start-line
|
[start-line
|
||||||
(send edit position-line start #f)]
|
(send edit position-line start #f)]
|
||||||
[start-line-start
|
[start-line-start
|
||||||
(send edit line-start-position start-line)]
|
(send edit line-start-position start-line)]
|
||||||
[end-line
|
[end-line
|
||||||
(send edit position-line end #f)]
|
(send edit position-line end #f)]
|
||||||
[end-line-start
|
[end-line-start
|
||||||
(send edit line-start-position (add1 end-line))])
|
(send edit line-start-position (add1 end-line))])
|
||||||
(cond
|
(cond
|
||||||
[(and whiteline?
|
[(and whiteline?
|
||||||
(= start-line pos-line)
|
(= start-line pos-line)
|
||||||
(= end-line pos-line))
|
(= end-line pos-line))
|
||||||
; Special case: just delete this line
|
; Special case: just delete this line
|
||||||
(send edit delete pos-line-start (add1 pos-line-end))]
|
(send edit delete pos-line-start (add1 pos-line-end))]
|
||||||
[(and whiteline? (< start-line pos-line))
|
[(and whiteline? (< start-line pos-line))
|
||||||
; Can delete before & after
|
; Can delete before & after
|
||||||
(send* edit
|
(send* edit
|
||||||
(begin-edit-sequence)
|
(begin-edit-sequence)
|
||||||
(delete (add1 pos-line-end) end-line-start)
|
(delete (add1 pos-line-end) end-line-start)
|
||||||
(delete start-line-start pos-line-start)
|
(delete start-line-start pos-line-start)
|
||||||
(end-edit-sequence))]
|
(end-edit-sequence))]
|
||||||
[else
|
[else
|
||||||
; Only delete after
|
; Only delete after
|
||||||
(send edit delete (add1 pos-line-end)
|
(send edit delete (add1 pos-line-end)
|
||||||
end-line-start)]))))))]
|
end-line-start)]))))))]
|
||||||
|
|
||||||
[open-line
|
[open-line
|
||||||
(lambda (edit event)
|
(lambda (edit event)
|
||||||
|
|
|
@ -893,7 +893,7 @@
|
||||||
(map-meta "c:down" "down-sexp")
|
(map-meta "c:down" "down-sexp")
|
||||||
(map-meta "s:down" "select-down-sexp")
|
(map-meta "s:down" "select-down-sexp")
|
||||||
(map "a:s:down" "select-down-sexp")
|
(map "a:s:down" "select-down-sexp")
|
||||||
(map-meta "s:c:down" "down-sexp")
|
(map-meta "s:c:down" "select-down-sexp")
|
||||||
|
|
||||||
(map-meta "right" "forward-sexp")
|
(map-meta "right" "forward-sexp")
|
||||||
(map "a:right" "forward-sexp")
|
(map "a:right" "forward-sexp")
|
||||||
|
|
|
@ -421,16 +421,8 @@
|
||||||
(define clever-file-format-mixin
|
(define clever-file-format-mixin
|
||||||
(mixin ((class->interface text%)) (clever-file-format<%>) args
|
(mixin ((class->interface text%)) (clever-file-format<%>) args
|
||||||
(inherit get-file-format set-file-format find-first-snip)
|
(inherit get-file-format set-file-format find-first-snip)
|
||||||
(rename [super-on-save-file on-save-file]
|
(rename [super-on-save-file on-save-file])
|
||||||
[super-after-save-file after-save-file])
|
|
||||||
|
|
||||||
(private [restore-file-format void])
|
|
||||||
|
|
||||||
(override
|
(override
|
||||||
[after-save-file
|
|
||||||
(lambda (success)
|
|
||||||
(restore-file-format)
|
|
||||||
(super-after-save-file success))]
|
|
||||||
[on-save-file
|
[on-save-file
|
||||||
(let ([all-string-snips
|
(let ([all-string-snips
|
||||||
(lambda ()
|
(lambda ()
|
||||||
|
@ -447,23 +439,15 @@
|
||||||
(or (eq? format 'same) (eq? format 'copy))
|
(or (eq? format 'same) (eq? format 'copy))
|
||||||
(eq? 'standard (get-file-format))
|
(eq? 'standard (get-file-format))
|
||||||
(or (not (preferences:get 'framework:verify-change-format))
|
(or (not (preferences:get 'framework:verify-change-format))
|
||||||
(gui-utils:get-choice "Save this file as plain text?" "No" "Yes")))
|
(gui-utils:get-choice
|
||||||
(set! restore-file-format
|
"Save this file as plain text?" "Yes" "No")))
|
||||||
(let ([ff (get-file-format)])
|
|
||||||
(lambda ()
|
|
||||||
(set! restore-file-format void)
|
|
||||||
(set-file-format ff))))
|
|
||||||
(set-file-format 'text)]
|
(set-file-format 'text)]
|
||||||
[(and (not all-strings?)
|
[(and (not all-strings?)
|
||||||
(or (eq? format 'same) (eq? format 'copy))
|
(or (eq? format 'same) (eq? format 'copy))
|
||||||
(eq? 'text (get-file-format))
|
(eq? 'text (get-file-format))
|
||||||
(or (not (preferences:get 'framework:verify-change-format))
|
(or (not (preferences:get 'framework:verify-change-format))
|
||||||
(gui-utils:get-choice "Save this file in drscheme-specific non-text format?" "No" "Yes")))
|
(gui-utils:get-choice
|
||||||
(set! restore-file-format
|
"Save this file in drscheme-specific non-text format?" "Yes" "No")))
|
||||||
(let ([ff (get-file-format)])
|
|
||||||
(lambda ()
|
|
||||||
(set! restore-file-format void)
|
|
||||||
(set-file-format ff))))
|
|
||||||
(set-file-format 'standard)]
|
(set-file-format 'standard)]
|
||||||
[else (void)]))
|
[else (void)]))
|
||||||
(super-on-save-file name format)))])
|
(super-on-save-file name format)))])
|
||||||
|
|
Loading…
Reference in New Issue
Block a user