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
|
(define-local-member-name
|
||||||
set-lang-toolbar-buttons
|
set-lang-toolbar-buttons
|
||||||
get-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
|
(define tab-mixin
|
||||||
(mixin (drracket:unit:tab<%>) (drracket:module-language-tools:tab<%>)
|
(mixin (drracket:unit:tab<%>) (drracket:module-language-tools:tab<%>)
|
||||||
|
@ -83,6 +84,12 @@
|
||||||
(send toolbar-button-panel change-children
|
(send toolbar-button-panel change-children
|
||||||
(λ (l) (send new-tab get-lang-toolbar-buttons)))
|
(λ (l) (send new-tab get-lang-toolbar-buttons)))
|
||||||
(sort-toolbar-buttons-panel)))
|
(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)
|
(super-new)
|
||||||
(inherit get-button-panel)
|
(inherit get-button-panel)
|
||||||
(set! toolbar-button-panel (new panel:horizontal-discrete-sizes%
|
(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?
|
(send (send (get-tab) get-ints) set-lang-wants-big-defs/ints-labels?
|
||||||
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
|
(when info-result
|
||||||
(register-new-buttons
|
(register-new-buttons
|
||||||
(ctc-on-info-proc-result
|
(ctc-on-info-proc-result
|
||||||
|
@ -324,6 +347,25 @@
|
||||||
(is-a? (drracket:language-configuration:language-settings-language settings)
|
(is-a? (drracket:language-configuration:language-settings-language settings)
|
||||||
drracket:module-language:module-language<%>))
|
drracket:module-language:module-language<%>))
|
||||||
(inner (void) after-set-next-settings settings))
|
(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)
|
(super-new)
|
||||||
(set! in-module-language?
|
(set! in-module-language?
|
||||||
(is-a? (drracket:language-configuration:language-settings-language (get-next-settings))
|
(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]}
|
@itemize[@item{@language-info-ref[drracket:toolbar-buttons]}
|
||||||
@item{@language-info-ref[drracket:opt-out-toolbar-buttons]}
|
@item{@language-info-ref[drracket:opt-out-toolbar-buttons]}
|
||||||
@item{@language-info-ref[definitions-text-surrogate]}
|
@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]}]
|
@item{@language-info-ref[color-lexer]}]
|
||||||
|
|
||||||
If the call to @racket[read-language] raises an error, DrRacket logs the
|
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]}]
|
@item{@indexed-racket['other]}]
|
||||||
These precise colors for these identifiers are controlled by the preferences dialog in DrRacket.
|
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}
|
@subsection{Adding Module-based Languages to DrRacket}
|
||||||
|
|
||||||
For backwards compatibility, DrRacket also supports
|
For backwards compatibility, DrRacket also supports
|
||||||
|
|
Loading…
Reference in New Issue
Block a user