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^
(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))

View File

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

View File

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

View File

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

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

View File

@ -57,3 +57,5 @@
(define pkg-desc "The DrRacket programming environment")
(define pkg-authors '(robby))
(define version "1.1")