You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
beautiful-racket/beautiful-racket-lib/br/get-info.rkt

35 lines
1.7 KiB
Racket

#lang racket
(require racket/class)
(provide (all-defined-out))
(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"
"pattern-case"
"pattern-case-filter") 'lambda]
[("define-macro"
"define-macro-cases"
"define-cases"
"while"
"until") 'define]
[else #f])))))
(define (br-get-info key default-value proc)
(define (fallback) (if proc (proc key default-value) default-value))
(define (try-dynamic-require lib export)
(with-handlers ([exn:missing-module?
(λ (x) (case key
[(drracket:indentation) indenter]
[else (fallback)]))])
(dynamic-require lib export)))
(case key
[(color-lexer)
(try-dynamic-require 'syntax-color/scribble-lexer 'scribble-lexer)]
[(drracket:indentation)
(try-dynamic-require 'scribble/private/indentation 'determine-spaces)]
[(drracket:keystrokes)
(try-dynamic-require 'scribble/private/indentation 'keystrokes)]
[else (fallback)]))