From 24259edb8b1d70dfa968d9182e835013ec1cdb9f Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Fri, 1 Oct 2010 10:20:54 +0200 Subject: [PATCH] remove elisp-strings and elisp-vectors read options * libguile/private-options.h (SCM_ELISP_VECTORS_P, SCM_ESCAPED_PARENS_P): * libguile/read.c (scm_read_opts): Remove unused elisp-vectors option, and the elisp-strings option (which allowed \( and \) escapes in strings). (scm_read_string): Remove the elisp-strings case. * doc/ref/api-options.texi (Reader options): Update, and update wording of the case-insensitive bit. --- doc/ref/api-options.texi | 22 +++++++++++++--------- libguile/private-options.h | 8 +++----- libguile/read.c | 9 --------- 3 files changed, 16 insertions(+), 23 deletions(-) diff --git a/doc/ref/api-options.texi b/doc/ref/api-options.texi index 0c5edd4eb..3c25b196d 100644 --- a/doc/ref/api-options.texi +++ b/doc/ref/api-options.texi @@ -495,18 +495,22 @@ Here is the list of reader options generated by typing values. @smalllisp -keywords #f Style of keyword recognition: #f, 'prefix or 'postfix -case-insensitive no Convert symbols to lower case. -positions yes Record positions of source code expressions. -copy no Copy source code expressions. -r6rs-hex-escapes no Use R6RS-style string hex escapes +copy no Copy source code expressions. +positions yes Record positions of source code expressions. +case-insensitive no Convert symbols to lower case. +keywords #f Style of keyword recognition: #f, 'prefix or 'postfix. +r6rs-hex-escapes no Use R6RS variable-length character and string hex escapes. +square-brackets yes Treat `[' and `]' as parentheses, for R6RS compatibility. @end smalllisp -Notice that while Standard Scheme is case insensitive, to ease -translation of other Lisp dialects, notably Emacs Lisp, into Guile, -Guile is case-sensitive by default. +Historically, many Scheme implementations have been case-insensitive, +treating @code{foo} and @code{FOO} as the same symbol. Guile has always +defaulted to case-sensitivity, as allowed since the R4RS and codified in +the R6RS. -To make Guile case insensitive, you can type +Guile also has a reader option to fold all symbols to their lower +case. To enable this option, perhaps for compatibility with older Scheme +code, you can enter @lisp (read-enable 'case-insensitive) diff --git a/libguile/private-options.h b/libguile/private-options.h index 3357b27bc..543c4dad0 100644 --- a/libguile/private-options.h +++ b/libguile/private-options.h @@ -61,11 +61,9 @@ SCM_API scm_t_option scm_read_opts[]; #define SCM_RECORD_POSITIONS_P scm_read_opts[1].val #define SCM_CASE_INSENSITIVE_P scm_read_opts[2].val #define SCM_KEYWORD_STYLE scm_read_opts[3].val -#define SCM_ELISP_VECTORS_P scm_read_opts[4].val -#define SCM_ESCAPED_PARENS_P scm_read_opts[5].val -#define SCM_R6RS_ESCAPES_P scm_read_opts[6].val -#define SCM_SQUARE_BRACKETS_P scm_read_opts[7].val +#define SCM_R6RS_ESCAPES_P scm_read_opts[4].val +#define SCM_SQUARE_BRACKETS_P scm_read_opts[5].val -#define SCM_N_READ_OPTIONS 8 +#define SCM_N_READ_OPTIONS 6 #endif /* PRIVATE_OPTIONS */ diff --git a/libguile/read.c b/libguile/read.c index 49df1e379..118b9ccfa 100644 --- a/libguile/read.c +++ b/libguile/read.c @@ -71,10 +71,6 @@ scm_t_option scm_read_opts[] = { "Convert symbols to lower case."}, { SCM_OPTION_SCM, "keywords", (unsigned long) SCM_BOOL_F, "Style of keyword recognition: #f, 'prefix or 'postfix."}, - { SCM_OPTION_BOOLEAN, "elisp-vectors", 0, - "Support Elisp vector syntax, namely `[...]'."}, - { SCM_OPTION_BOOLEAN, "elisp-strings", 0, - "Support `\\(' and `\\)' in strings."}, { SCM_OPTION_BOOLEAN, "r6rs-hex-escapes", 0, "Use R6RS variable-length character and string hex escapes."}, { SCM_OPTION_BOOLEAN, "square-brackets", 1, @@ -515,11 +511,6 @@ scm_read_string (int chr, SCM port) case '"': case '\\': break; - case '(': - case ')': - if (SCM_ESCAPED_PARENS_P) - break; - goto bad_escaped; case '\n': continue; case '0': -- 2.20.1