add drracket:default-filters and drracket:default-extension support
This commit is contained in:
parent
70a70166d1
commit
e8bfd42d36
|
@ -34,7 +34,8 @@
|
|||
(define-local-member-name
|
||||
set-lang-toolbar-buttons
|
||||
get-lang-toolbar-buttons
|
||||
get-online-expansion-monitor-pcs)
|
||||
get-online-expansion-monitor-pcs
|
||||
with-language-specific-default-extensions-and-filters)
|
||||
|
||||
(define tab-mixin
|
||||
(mixin (drracket:unit:tab<%>) (drracket:module-language-tools:tab<%>)
|
||||
|
@ -83,6 +84,12 @@
|
|||
(send toolbar-button-panel change-children
|
||||
(λ (l) (send new-tab get-lang-toolbar-buttons)))
|
||||
(sort-toolbar-buttons-panel)))
|
||||
|
||||
(define/override (file-menu:open-callback menu evt)
|
||||
(send (get-definitions-text) with-language-specific-default-extensions-and-filters
|
||||
(λ ()
|
||||
(super file-menu:open-callback menu evt))))
|
||||
|
||||
(super-new)
|
||||
(inherit get-button-panel)
|
||||
(set! toolbar-button-panel (new panel:horizontal-discrete-sizes%
|
||||
|
@ -217,6 +224,22 @@
|
|||
(send (send (get-tab) get-ints) set-lang-wants-big-defs/ints-labels?
|
||||
lang-wants-big-defs/ints-labels?)
|
||||
|
||||
(set! extra-default-filters
|
||||
(if info-result
|
||||
(or (ctc-on-info-proc-result
|
||||
(or/c #f (listof (list/c string? string?)))
|
||||
(info-proc 'drracket:default-filters #f))
|
||||
'())
|
||||
'()))
|
||||
|
||||
(set! default-extension
|
||||
(if info-result
|
||||
(or (ctc-on-info-proc-result
|
||||
(or/c #f (and/c string? (not/c #rx"[.]")))
|
||||
(info-proc 'drracket:default-extension #f))
|
||||
"")
|
||||
""))
|
||||
|
||||
(when info-result
|
||||
(register-new-buttons
|
||||
(ctc-on-info-proc-result
|
||||
|
@ -324,6 +347,25 @@
|
|||
(is-a? (drracket:language-configuration:language-settings-language settings)
|
||||
drracket:module-language:module-language<%>))
|
||||
(inner (void) after-set-next-settings settings))
|
||||
|
||||
(define/override (put-file dir default-name)
|
||||
(with-language-specific-default-extensions-and-filters
|
||||
(λ ()
|
||||
(super put-file dir default-name))))
|
||||
(define/override (get-file dir)
|
||||
(with-language-specific-default-extensions-and-filters
|
||||
(λ ()
|
||||
(super get-file dir))))
|
||||
|
||||
(define extra-default-filters '())
|
||||
(define default-extension "")
|
||||
(define/public (with-language-specific-default-extensions-and-filters t)
|
||||
(parameterize ([finder:default-extension default-extension]
|
||||
[finder:default-filters
|
||||
(append extra-default-filters (finder:default-filters))])
|
||||
(t)))
|
||||
|
||||
|
||||
(super-new)
|
||||
(set! in-module-language?
|
||||
(is-a? (drracket:language-configuration:language-settings-language (get-next-settings))
|
||||
|
|
|
@ -239,6 +239,8 @@ as the @racket[_key] argument to the @racket[_get-info] function to do so:
|
|||
@itemize[@item{@language-info-ref[drracket:toolbar-buttons]}
|
||||
@item{@language-info-ref[drracket:opt-out-toolbar-buttons]}
|
||||
@item{@language-info-ref[definitions-text-surrogate]}
|
||||
@item{@language-info-ref[drracket:default-filters]}
|
||||
@item{@language-info-ref[drracket:default-extension]}
|
||||
@item{@language-info-ref[color-lexer]}]
|
||||
|
||||
If the call to @racket[read-language] raises an error, DrRacket logs the
|
||||
|
@ -262,6 +264,21 @@ The recognized token styles (specified implicitly via @method[color:text<%> star
|
|||
@item{@indexed-racket['other]}]
|
||||
These precise colors for these identifiers are controlled by the preferences dialog in DrRacket.
|
||||
|
||||
@language-info-def[drracket:default-filters]{
|
||||
When a language's @racket[_get-info] procedure responds to
|
||||
@racket['drracket:default-filters], it is expected to return
|
||||
@racket[(listof (list/c string? string?))].}
|
||||
These results are added as a prefix to @racket[finder:default-filters],
|
||||
extending the default that DrRacket normally uses, namely:
|
||||
@racketblock[`(["Racket Sources" "*.rkt;*.scrbl;*.rktl;*.rktd;*.ss;*.scm"]
|
||||
["Any" "*.*"])]
|
||||
|
||||
@language-info-def[drracket:default-extension]{
|
||||
When a language's @racket[_get-info] procedure responds to @racket['drracket:default-extension],
|
||||
it is expected to return @racket[(and/c string? (not/c #rx"[.]"))]; the result is used
|
||||
as the default extension when saving files by setting @racket[finder:default-extension].
|
||||
}
|
||||
|
||||
@subsection{Adding Module-based Languages to DrRacket}
|
||||
|
||||
For backwards compatibility, DrRacket also supports
|
||||
|
|
Loading…
Reference in New Issue
Block a user