in text mode, don't do "The Racket Language"-specific things

closes PR 14590
This commit is contained in:
Robby Findler 2014-06-22 08:36:33 -05:00
parent 95ccac8a5c
commit b234e22413
6 changed files with 60 additions and 30 deletions

View File

@ -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))

View File

@ -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?))

View File

@ -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))

View File

@ -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))

View File

@ -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

View File

@ -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")