fix bug in detecting the name of the language

(encoding problems)

Also, Rackety
This commit is contained in:
Robby Findler 2012-10-22 11:49:14 -05:00
parent 7355c59fb1
commit b61f1789c7

View File

@ -145,15 +145,17 @@
(inherit get-language-name) (inherit get-language-name)
(define/public (get-users-language-name defs-text) (define/public (get-users-language-name defs-text)
(let* ([defs-port (open-input-text-editor defs-text)] (define defs-port (open-input-text-editor defs-text))
[read-successfully? (port-count-lines! defs-port)
(define read-successfully?
(with-handlers ((exn:fail? (λ (x) #f))) (with-handlers ((exn:fail? (λ (x) #f)))
(read-language defs-port (λ () #f)) (read-language defs-port (λ () #f))
#t)]) #t))
(cond (cond
[read-successfully? [read-successfully?
(let* ([str (send defs-text get-text 0 (file-position defs-port))] (define-values (_line _col port-pos) (port-next-location defs-port))
[pos (regexp-match-positions #rx"#(?:!|lang )" str)]) (define str (send defs-text get-text 0 (- port-pos 1)))
(define pos (regexp-match-positions #rx"#(?:!|lang )" str))
(cond (cond
[(not pos) [(not pos)
(get-language-name)] (get-language-name)]
@ -165,9 +167,9 @@
;; so be it. ;; so be it.
(regexp-replace* #rx"[\r\n]+" (regexp-replace* #rx"[\r\n]+"
(substring str (cdr (car pos)) (string-length str)) (substring str (cdr (car pos)) (string-length str))
" ")]))] " ")])]
[else [else
(get-language-name)]))) (get-language-name)]))
(define/override (use-namespace-require/copy?) #f) (define/override (use-namespace-require/copy?) #f)