in text mode, don't do "The Racket Language"-specific things
closes PR 14590
This commit is contained in:
parent
95ccac8a5c
commit
b234e22413
|
@ -46,7 +46,11 @@
|
||||||
(define-signature drracket:modes^ extends drracket:modes-cm^
|
(define-signature drracket:modes^ extends drracket:modes-cm^
|
||||||
(add-mode
|
(add-mode
|
||||||
get-modes
|
get-modes
|
||||||
(struct mode (name surrogate repl-submit matches-language)
|
(struct mode (name
|
||||||
|
surrogate
|
||||||
|
repl-submit
|
||||||
|
matches-language
|
||||||
|
intended-to-edit-programs?)
|
||||||
#:omit-constructor)))
|
#:omit-constructor)))
|
||||||
(define-signature drracket:modes/int^ extends drracket:modes^
|
(define-signature drracket:modes/int^ extends drracket:modes^
|
||||||
(add-initial-modes))
|
(add-initial-modes))
|
||||||
|
|
|
@ -57,7 +57,8 @@
|
||||||
;; mode changing definitions text mixin
|
;; mode changing definitions text mixin
|
||||||
(define-local-member-name
|
(define-local-member-name
|
||||||
maybe-change-language
|
maybe-change-language
|
||||||
change-mode-to-match)
|
change-mode-to-match
|
||||||
|
get-current-mode)
|
||||||
|
|
||||||
|
|
||||||
(provide (struct-out drracket:language-configuration:language-settings))
|
(provide (struct-out drracket:language-configuration:language-settings))
|
||||||
|
@ -80,4 +81,4 @@
|
||||||
|
|
||||||
|
|
||||||
(provide (struct-out drracket:modes:mode))
|
(provide (struct-out drracket:modes:mode))
|
||||||
(struct drracket:modes:mode (name surrogate repl-submit matches-language))
|
(struct drracket:modes:mode (name surrogate repl-submit matches-language intended-to-edit-programs?))
|
||||||
|
|
|
@ -15,27 +15,30 @@
|
||||||
(define mode-surrogate drracket:modes:mode-surrogate)
|
(define mode-surrogate drracket:modes:mode-surrogate)
|
||||||
(define mode-repl-submit drracket:modes:mode-repl-submit)
|
(define mode-repl-submit drracket:modes:mode-repl-submit)
|
||||||
(define mode-matches-language drracket:modes:mode-matches-language)
|
(define mode-matches-language drracket:modes:mode-matches-language)
|
||||||
|
(define mode-intended-to-edit-programs? drracket:modes:mode-intended-to-edit-programs?)
|
||||||
(define struct:mode struct:drracket:modes:mode)
|
(define struct:mode struct:drracket:modes:mode)
|
||||||
|
|
||||||
|
|
||||||
(define modes (list))
|
(define modes (list))
|
||||||
|
|
||||||
(define (get-modes) modes)
|
(define (get-modes) modes)
|
||||||
|
|
||||||
(define (add-mode name surrogate repl-submit matches-language)
|
(define (add-mode name surrogate repl-submit matches-language
|
||||||
(let ([new-mode (drracket:modes:mode name
|
#:intended-to-edit-programs? [intended-to-edit-programs? #t])
|
||||||
surrogate
|
(define new-mode
|
||||||
repl-submit
|
(drracket:modes:mode name
|
||||||
matches-language)])
|
surrogate
|
||||||
(for ([old-mode (in-list modes)])
|
repl-submit
|
||||||
(when (equal? (mode-name old-mode) name)
|
matches-language
|
||||||
(raise-argument-error
|
intended-to-edit-programs?))
|
||||||
'drracket:modes:add-mode
|
(for ([old-mode (in-list modes)])
|
||||||
"name that is not already used by any other mode"
|
(when (equal? (mode-name old-mode) name)
|
||||||
0
|
(raise-argument-error
|
||||||
name surrogate repl-submit matches-language)))
|
'drracket:modes:add-mode
|
||||||
(set! modes (cons new-mode modes))
|
"name that is not already used by any other mode"
|
||||||
new-mode))
|
0
|
||||||
|
name surrogate repl-submit matches-language)))
|
||||||
|
(set! modes (cons new-mode modes))
|
||||||
|
new-mode)
|
||||||
|
|
||||||
(define (not-a-language-language? l)
|
(define (not-a-language-language? l)
|
||||||
(and (not (null? l))
|
(and (not (null? l))
|
||||||
|
@ -66,4 +69,5 @@
|
||||||
(λ (l)
|
(λ (l)
|
||||||
(and l
|
(and l
|
||||||
(or (not-a-language-language? l)
|
(or (not-a-language-language? l)
|
||||||
(ormap (λ (x) (regexp-match #rx"Algol" x)) l))))))
|
(ormap (λ (x) (regexp-match #rx"Algol" x)) l))))
|
||||||
|
#:intended-to-edit-programs? #f))
|
||||||
|
|
|
@ -2537,9 +2537,12 @@
|
||||||
|
|
||||||
;; in-module-language : tab -> module-language-settings or #f
|
;; in-module-language : tab -> module-language-settings or #f
|
||||||
(define (tab-in-module-language tab)
|
(define (tab-in-module-language tab)
|
||||||
(define settings (send (send tab get-defs) get-next-settings))
|
(define defs (send tab get-defs))
|
||||||
|
(define settings (send defs get-next-settings))
|
||||||
|
(define mode (send defs get-current-mode))
|
||||||
(and (is-a? (drracket:language-configuration:language-settings-language settings)
|
(and (is-a? (drracket:language-configuration:language-settings-language settings)
|
||||||
module-language<%>)
|
module-language<%>)
|
||||||
|
(drracket:modes:mode-intended-to-edit-programs? mode)
|
||||||
(drracket:language-configuration:language-settings-settings settings)))
|
(drracket:language-configuration:language-settings-settings settings)))
|
||||||
|
|
||||||
(define (initialize-prefs-panel)
|
(define (initialize-prefs-panel)
|
||||||
|
@ -2635,6 +2638,7 @@
|
||||||
|
|
||||||
(define current-mode #f)
|
(define current-mode #f)
|
||||||
|
|
||||||
|
(define/public (get-current-mode) current-mode)
|
||||||
(define/public (set-current-mode mode)
|
(define/public (set-current-mode mode)
|
||||||
(set! current-mode mode)
|
(set! current-mode mode)
|
||||||
(define surrogate (drracket:modes:mode-surrogate mode))
|
(define surrogate (drracket:modes:mode-surrogate mode))
|
||||||
|
|
|
@ -105,7 +105,7 @@ all of the names in the tools library, for use defining keybindings
|
||||||
(language:simple-settings #t case-sensitive printing-style
|
(language:simple-settings #t case-sensitive printing-style
|
||||||
fraction-style show-sharing
|
fraction-style show-sharing
|
||||||
insert-newlines annotations)
|
insert-newlines annotations)
|
||||||
(modes:mode #t name surrogate repl-submit matches-language))
|
(modes:mode #t name surrogate repl-submit matches-language intended-to-edit-programs?))
|
||||||
|
|
||||||
(provide-signature-elements drracket:tool-cm^) ;; provide all of the classes & interfaces
|
(provide-signature-elements drracket:tool-cm^) ;; provide all of the classes & interfaces
|
||||||
(provide-signature-elements drscheme:tool-cm^) ;; provide the classes & interfaces w/ drscheme: prefix
|
(provide-signature-elements drscheme:tool-cm^) ;; provide the classes & interfaces w/ drscheme: prefix
|
||||||
|
@ -1066,12 +1066,14 @@ all of the names in the tools library, for use defining keybindings
|
||||||
|
|
||||||
(proc-doc/names
|
(proc-doc/names
|
||||||
drracket:modes:add-mode
|
drracket:modes:add-mode
|
||||||
(-> string?
|
(->* (string?
|
||||||
(or/c #f (is-a?/c mode:surrogate-text<%>))
|
(or/c #f (is-a?/c mode:surrogate-text<%>))
|
||||||
(-> (is-a?/c drracket:rep:text%) number? boolean?)
|
(-> (is-a?/c drracket:rep:text%) number? boolean?)
|
||||||
(-> (or/c #f (listof string?)) boolean?)
|
(-> (or/c #f (listof string?)) boolean?))
|
||||||
drracket:modes:mode?)
|
(#:intended-to-edit-programs? boolean?)
|
||||||
(name surrogate repl-submit matches-language)
|
drracket:modes:mode?)
|
||||||
|
((name surrogate repl-submit matches-language)
|
||||||
|
([intended-to-edit-programs? #t]))
|
||||||
@{Adds a mode to DrRacket. Returns a mode value
|
@{Adds a mode to DrRacket. Returns a mode value
|
||||||
that identifies the mode.
|
that identifies the mode.
|
||||||
|
|
||||||
|
@ -1103,22 +1105,35 @@ all of the names in the tools library, for use defining keybindings
|
||||||
that correspond to the names of the language in the
|
that correspond to the names of the language in the
|
||||||
language dialog.
|
language dialog.
|
||||||
|
|
||||||
|
The @racket[intended-to-edit-programs?] boolean indicates
|
||||||
|
if this mode is intended to be for editing programs
|
||||||
|
(as opposed to some other kind of file content). If it is
|
||||||
|
@racket[#f], online expansion is disabled and DrRacket
|
||||||
|
won't look for @tt{(module} at the front of the buffer
|
||||||
|
to try to guess the intended filename.
|
||||||
|
|
||||||
Modes are tested in the opposite order that they are
|
Modes are tested in the opposite order that they are
|
||||||
added. That is, the last mode to be added gets tested
|
added. That is, the last mode to be added gets tested
|
||||||
first when the filename changes or when the language
|
first when the filename changes or when the language
|
||||||
changes.
|
changes.
|
||||||
|
|
||||||
See also
|
See also
|
||||||
@racket[drracket:modes:get-modes].})
|
@racket[drracket:modes:get-modes].
|
||||||
|
|
||||||
|
@history[#:changed "1.1" @list{Added the @racket[intended-to-edit-programs?] argument.}]
|
||||||
|
})
|
||||||
|
|
||||||
(struct-doc
|
(struct-doc
|
||||||
drracket:modes:mode
|
drracket:modes:mode
|
||||||
([name string?]
|
([name string?]
|
||||||
[surrogate (or/c #f (is-a?/c mode:surrogate-text<%>))]
|
[surrogate (or/c #f (is-a?/c mode:surrogate-text<%>))]
|
||||||
[repl-submit (-> (is-a?/c drracket:rep:text%) number? boolean?)]
|
[repl-submit (-> (is-a?/c drracket:rep:text%) number? boolean?)]
|
||||||
[matches-language (-> (or/c #f (listof string?)) boolean?)])
|
[matches-language (-> (or/c #f (listof string?)) boolean?)]
|
||||||
|
[intended-to-edit-programs? boolean?])
|
||||||
#:omit-constructor
|
#:omit-constructor
|
||||||
@{See @racket[drracket:modes:add-mode] for details on modes.})
|
@{See @racket[drracket:modes:add-mode] for details on modes.
|
||||||
|
|
||||||
|
@history[#:changed "1.1" @list{Added the @racket[intended-to-edit-programs?] field.}]})
|
||||||
|
|
||||||
(thing-doc
|
(thing-doc
|
||||||
drracket:modes:struct:mode
|
drracket:modes:struct:mode
|
||||||
|
|
|
@ -57,3 +57,5 @@
|
||||||
(define pkg-desc "The DrRacket programming environment")
|
(define pkg-desc "The DrRacket programming environment")
|
||||||
|
|
||||||
(define pkg-authors '(robby))
|
(define pkg-authors '(robby))
|
||||||
|
|
||||||
|
(define version "1.1")
|
||||||
|
|
Loading…
Reference in New Issue
Block a user