|
|
|
#lang racket/base
|
|
|
|
(require racket/provide racket/list racket/string racket/format racket/match racket/port
|
|
|
|
br/define br/syntax br/datum br/debug br/conditional racket/function
|
|
|
|
(for-syntax racket/base racket/syntax br/syntax br/debug br/define))
|
|
|
|
(provide (except-out (all-from-out racket/base) define)
|
|
|
|
(all-from-out racket/list racket/string racket/format racket/match racket/port
|
|
|
|
br/syntax br/datum br/debug br/conditional racket/function)
|
|
|
|
(for-syntax (all-from-out racket/base racket/syntax br/syntax br/debug))
|
|
|
|
(for-syntax caller-stx shared-syntax with-shared-id with-calling-site-id) ; from br/define
|
|
|
|
(filtered-out
|
|
|
|
(λ (name)
|
|
|
|
(let ([pat (regexp "^br:")])
|
|
|
|
(and (regexp-match? pat name)
|
|
|
|
(regexp-replace pat name ""))))
|
|
|
|
(combine-out (all-from-out br/define))))
|
|
|
|
|
|
|
|
;; todo: activate at-exp reader by default
|
|
|
|
|
|
|
|
(define (remove-blank-lines strs)
|
|
|
|
(filter (λ(str) (regexp-match #px"\\S" str)) strs))
|
|
|
|
|
|
|
|
(provide remove-blank-lines)
|
|
|
|
|
|
|
|
|
|
|
|
(module reader syntax/module-reader
|
|
|
|
#:language 'br
|
|
|
|
#:info my-get-info
|
|
|
|
|
|
|
|
(require racket/class)
|
|
|
|
(define (indenter t pos)
|
|
|
|
(with-handlers ([exn:fail? (λ(exn) #f)]) ; this function won't work until gui-lib 1.26
|
|
|
|
(send t compute-racket-amount-to-indent pos (λ(x)
|
|
|
|
(case x
|
|
|
|
[("with-pattern" "with-shared-id") 'lambda]
|
|
|
|
[("define-macro") 'define]
|
|
|
|
[else #f])))))
|
|
|
|
|
|
|
|
(define (my-get-info key default default-filter)
|
|
|
|
(case key
|
|
|
|
#;[(color-lexer)
|
|
|
|
(dynamic-require 'syntax-color/default-lexer 'default-lexer)]
|
|
|
|
[(drracket:indentation) indenter]
|
|
|
|
[else
|
|
|
|
(default-filter key default)])))
|