From 09f0968e85dad6587e6a3abce674ef7ddc399ed3 Mon Sep 17 00:00:00 2001 From: Robby Findler Date: Tue, 6 Apr 1999 13:36:43 +0000 Subject: [PATCH] ... original commit: 4183b2b3b0d61aa80a98cd7fb81471908ffa6088 --- collects/framework/finder.ss | 19 ++++++-- collects/framework/frameworks.ss | 1 + collects/framework/text.ss | 79 +++++++++++++++----------------- 3 files changed, 52 insertions(+), 47 deletions(-) diff --git a/collects/framework/finder.ss b/collects/framework/finder.ss index 82a800ee..e351aef2 100644 --- a/collects/framework/finder.ss +++ b/collects/framework/finder.ss @@ -46,7 +46,18 @@ (lambda (dir) (let-values ([(base _1 _2) (split-path dir)]) (or base dir)))) - + + (define default-extension + (let ([val #f]) + (case-lambda + [() val] + [(x) + (unless (or (string? x) + (not x)) + (error 'finder:default-extension + "expected a string or #f, got: ~e" + x)) + (set! val x)]))) ; the finder-dialog% class controls the user interface for dialogs @@ -652,7 +663,8 @@ parent-win directory name - ".ss")]) + (default-extension))]) + (if (or (not f) (and filter (not (filter-match? filter @@ -712,6 +724,3 @@ [(std) std-get-file] [(common) common-get-file])]) (apply actual-fun args))))) - - - diff --git a/collects/framework/frameworks.ss b/collects/framework/frameworks.ss index a48bff23..90f76ae6 100644 --- a/collects/framework/frameworks.ss +++ b/collects/framework/frameworks.ss @@ -78,6 +78,7 @@ (define-signature framework:finder^ (dialog-parent-parameter + default-extension common-put-file common-get-file std-put-file diff --git a/collects/framework/text.ss b/collects/framework/text.ss index cb53330d..47a18c53 100644 --- a/collects/framework/text.ss +++ b/collects/framework/text.ss @@ -470,49 +470,44 @@ (define clever-file-format-mixin (mixin (text<%>) (clever-file-format<%>) args - (inherit get-file-format set-file-format find-first-snip) - (rename [super-on-save-file on-save-file] - [super-after-save-file after-save-file]) - - (private [restore-file-format void]) - - (override - [after-save-file - (lambda (success) - (restore-file-format) - (super-after-save-file success))] - [on-save-file - (let ([has-non-string-snips - (lambda () - (let loop ([s (find-first-snip)]) - (cond - [(not s) #f] - [(is-a? s original:string-snip%) - (loop (send s next))] - [else #t])))]) - (lambda (name format) - (when (and (or (eq? format 'same) - (eq? format 'copy)) - (not (eq? (get-file-format) - 'standard))) + (inherit get-file-format set-file-format find-first-snip) + (rename [super-on-save-file on-save-file] + [super-after-save-file after-save-file]) + + (private [restore-file-format void]) + + (override + [after-save-file + (lambda (success) + (restore-file-format) + (super-after-save-file success))] + [on-save-file + (let ([all-string-snips + (lambda () + (let loop ([s (find-first-snip)]) (cond - [(eq? format 'copy) - (set! restore-file-format - (let ([f (get-file-format)]) - (lambda () - (set! restore-file-format void) - (set-file-format f)))) - (set-file-format 'standard)] - [(and (has-non-string-snips) - (or (not (preferences:get 'framework:verify-change-format)) - (gui-utils:get-choice "Save this file as plain text?" "No" "Yes"))) - (set-file-format 'standard)] - [else (void)])) - (or (super-on-save-file name format) - (begin - (restore-file-format) - #f))))]) - (sequence (apply super-init args)))) + [(not s) #t] + [(is-a? s original:string-snip%) + (loop (send s next))] + [else #f])))]) + (lambda (name format) + (when (and (or (eq? format 'same) (eq? format 'copy)) + (eq? (get-file-format) 'standard)) + (cond + [(and (all-string-snips) + (eq? 'standard (get-file-format)) + (or (not (preferences:get 'framework:verify-change-format)) + (gui-utils:get-choice "Save this file as plain text?" "No" "Yes"))) + (set! restore-file-format + (let ([ff (get-file-format)]) + (lambda () + (set! restore-file-format void) + (set-file-format ff)))) + (set-file-format 'text)] + [else (void)])) + (super-on-save-file name format)))]) + (sequence + (apply super-init args)))) (define basic% (basic-mixin (editor:basic-mixin text%))) (define -keymap% (editor:keymap-mixin basic%))