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^
|
||||
(add-mode
|
||||
get-modes
|
||||
(struct mode (name surrogate repl-submit matches-language)
|
||||
(struct mode (name
|
||||
surrogate
|
||||
repl-submit
|
||||
matches-language
|
||||
intended-to-edit-programs?)
|
||||
#:omit-constructor)))
|
||||
(define-signature drracket:modes/int^ extends drracket:modes^
|
||||
(add-initial-modes))
|
||||
|
|
|
@ -57,7 +57,8 @@
|
|||
;; mode changing definitions text mixin
|
||||
(define-local-member-name
|
||||
maybe-change-language
|
||||
change-mode-to-match)
|
||||
change-mode-to-match
|
||||
get-current-mode)
|
||||
|
||||
|
||||
(provide (struct-out drracket:language-configuration:language-settings))
|
||||
|
@ -80,4 +81,4 @@
|
|||
|
||||
|
||||
(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,18 +15,21 @@
|
|||
(define mode-surrogate drracket:modes:mode-surrogate)
|
||||
(define mode-repl-submit drracket:modes:mode-repl-submit)
|
||||
(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 modes (list))
|
||||
|
||||
(define (get-modes) modes)
|
||||
|
||||
(define (add-mode name surrogate repl-submit matches-language)
|
||||
(let ([new-mode (drracket:modes:mode name
|
||||
(define (add-mode name surrogate repl-submit matches-language
|
||||
#:intended-to-edit-programs? [intended-to-edit-programs? #t])
|
||||
(define new-mode
|
||||
(drracket:modes:mode name
|
||||
surrogate
|
||||
repl-submit
|
||||
matches-language)])
|
||||
matches-language
|
||||
intended-to-edit-programs?))
|
||||
(for ([old-mode (in-list modes)])
|
||||
(when (equal? (mode-name old-mode) name)
|
||||
(raise-argument-error
|
||||
|
@ -35,7 +38,7 @@
|
|||
0
|
||||
name surrogate repl-submit matches-language)))
|
||||
(set! modes (cons new-mode modes))
|
||||
new-mode))
|
||||
new-mode)
|
||||
|
||||
(define (not-a-language-language? l)
|
||||
(and (not (null? l))
|
||||
|
@ -66,4 +69,5 @@
|
|||
(λ (l)
|
||||
(and 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
|
||||
(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)
|
||||
module-language<%>)
|
||||
(drracket:modes:mode-intended-to-edit-programs? mode)
|
||||
(drracket:language-configuration:language-settings-settings settings)))
|
||||
|
||||
(define (initialize-prefs-panel)
|
||||
|
@ -2635,6 +2638,7 @@
|
|||
|
||||
(define current-mode #f)
|
||||
|
||||
(define/public (get-current-mode) current-mode)
|
||||
(define/public (set-current-mode mode)
|
||||
(set! current-mode 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
|
||||
fraction-style show-sharing
|
||||
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 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
|
||||
drracket:modes:add-mode
|
||||
(-> string?
|
||||
(->* (string?
|
||||
(or/c #f (is-a?/c mode:surrogate-text<%>))
|
||||
(-> (is-a?/c drracket:rep:text%) number? boolean?)
|
||||
(-> (or/c #f (listof string?)) boolean?)
|
||||
(-> (or/c #f (listof string?)) boolean?))
|
||||
(#:intended-to-edit-programs? boolean?)
|
||||
drracket:modes:mode?)
|
||||
(name surrogate repl-submit matches-language)
|
||||
((name surrogate repl-submit matches-language)
|
||||
([intended-to-edit-programs? #t]))
|
||||
@{Adds a mode to DrRacket. Returns a mode value
|
||||
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
|
||||
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
|
||||
added. That is, the last mode to be added gets tested
|
||||
first when the filename changes or when the language
|
||||
changes.
|
||||
|
||||
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
|
||||
drracket:modes:mode
|
||||
([name string?]
|
||||
[surrogate (or/c #f (is-a?/c mode:surrogate-text<%>))]
|
||||
[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
|
||||
@{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
|
||||
drracket:modes:struct:mode
|
||||
|
|
|
@ -57,3 +57,5 @@
|
|||
(define pkg-desc "The DrRacket programming environment")
|
||||
|
||||
(define pkg-authors '(robby))
|
||||
|
||||
(define version "1.1")
|
||||
|
|
Loading…
Reference in New Issue
Block a user