diff options
author | Robin Templeton <robin@terpri.org> | 2014-06-19 23:37:36 -0400 |
---|---|---|
committer | Ricardo Wurmus <rekado@elephly.net> | 2020-04-04 16:24:21 +0200 |
commit | 95b0565332f6f79ea6f1a33f396928cb2b37d6fb (patch) | |
tree | 1e74bac4a49410d9fcb6e438bbf8db5a7f0055da | |
parent | e139accb530c970c989b3d53d5a8a22fd75437fc (diff) |
read nil/t as #nil/#t
(Best-ability ChangeLog annotation added by Christopher Allan Webber.)
* module/language/elisp/lexer.scm (lex): Update to handle #nil / #t.
-rw-r--r-- | module/language/elisp/lexer.scm | 30 |
1 files changed, 18 insertions, 12 deletions
diff --git a/module/language/elisp/lexer.scm b/module/language/elisp/lexer.scm index 8152a1182..826f6df87 100644 --- a/module/language/elisp/lexer.scm +++ b/module/language/elisp/lexer.scm @@ -370,18 +370,24 @@ (lambda (type str) (case type ((symbol) - ;; str could be empty if the first character is already - ;; something not allowed in a symbol (and not escaped)! - ;; Take care about that, it is an error because that - ;; character should have been handled elsewhere or is - ;; invalid in the input. - (if (zero? (string-length str)) - (begin - ;; Take it out so the REPL might not get into an - ;; infinite loop with further reading attempts. - (read-char port) - (error "invalid character in input" c)) - (return 'symbol (string->symbol str)))) + (cond + ((equal? str "nil") + (return 'symbol #nil)) + ((equal? str "t") + (return 'symbol #t)) + (else + ;; str could be empty if the first character is already + ;; something not allowed in a symbol (and not escaped)! + ;; Take care about that, it is an error because that + ;; character should have been handled elsewhere or is + ;; invalid in the input. + (if (zero? (string-length str)) + (begin + ;; Take it out so the REPL might not get into an + ;; infinite loop with further reading attempts. + (read-char port) + (error "invalid character in input" c)) + (return 'symbol (string->symbol str)))))) ((integer) ;; In elisp, something like "1." is an integer, while ;; string->number returns an inexact real. Thus we need |