guard against missing scribble and syntax-color libraries
we don't want an actual dependency from at-exp-lib to those libraries, so when they aren't present, don't just crash, but instead fall back to the defaults passed to the get-info procs
This commit is contained in:
parent
0e12201c4d
commit
a5118f7525
|
@ -28,15 +28,15 @@
|
||||||
(lambda (proc)
|
(lambda (proc)
|
||||||
(lambda (key defval)
|
(lambda (key defval)
|
||||||
(define (fallback) (if proc (proc key defval) defval))
|
(define (fallback) (if proc (proc key defval) defval))
|
||||||
(define (try-dynamic-require mod export)
|
(define (try-dynamic-require lib export)
|
||||||
(or (with-handlers ([exn:fail? (λ (x) #f)])
|
(with-handlers ([exn:missing-module?
|
||||||
(dynamic-require mod export))
|
(λ (x) (fallback))])
|
||||||
(fallback)))
|
(dynamic-require lib export)))
|
||||||
(case key
|
(case key
|
||||||
[(color-lexer)
|
[(color-lexer)
|
||||||
(try-dynamic-require 'syntax-color/scribble-lexer 'scribble-lexer)]
|
(try-dynamic-require 'syntax-color/scribble-lexer 'scribble-lexer)]
|
||||||
[(drracket:indentation)
|
[(drracket:indentation)
|
||||||
(dynamic-require 'scribble/private/indentation 'determine-spaces)]
|
(try-dynamic-require 'scribble/private/indentation 'determine-spaces)]
|
||||||
[(drracket:keystrokes)
|
[(drracket:keystrokes)
|
||||||
(dynamic-require 'scribble/private/indentation 'keystrokes)]
|
(try-dynamic-require 'scribble/private/indentation 'keystrokes)]
|
||||||
[else (fallback)])))))
|
[else (fallback)])))))
|
||||||
|
|
|
@ -23,13 +23,17 @@
|
||||||
;; Settings that apply just to the surface syntax:
|
;; Settings that apply just to the surface syntax:
|
||||||
(define (scribble-base-reader-info)
|
(define (scribble-base-reader-info)
|
||||||
(lambda (key defval default)
|
(lambda (key defval default)
|
||||||
|
(define (try-dynamic-require lib export)
|
||||||
|
(with-handlers ([exn:missing-module?
|
||||||
|
(λ (x) (default key defval))])
|
||||||
|
(dynamic-require lib export)))
|
||||||
(case key
|
(case key
|
||||||
[(color-lexer)
|
[(color-lexer)
|
||||||
(dynamic-require 'syntax-color/scribble-lexer 'scribble-inside-lexer)]
|
(try-dynamic-require 'syntax-color/scribble-lexer 'scribble-inside-lexer)]
|
||||||
[(drracket:indentation)
|
[(drracket:indentation)
|
||||||
(dynamic-require 'scribble/private/indentation 'determine-spaces)]
|
(try-dynamic-require 'scribble/private/indentation 'determine-spaces)]
|
||||||
[(drracket:keystrokes)
|
[(drracket:keystrokes)
|
||||||
(dynamic-require 'scribble/private/indentation 'keystrokes)]
|
(try-dynamic-require 'scribble/private/indentation 'keystrokes)]
|
||||||
[(drracket:default-extension) "scrbl"]
|
[(drracket:default-extension) "scrbl"]
|
||||||
[else (default key defval)])))
|
[else (default key defval)])))
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user