remove elisp-strings and elisp-vectors read options
authorAndy Wingo <wingo@pobox.com>
Fri, 1 Oct 2010 08:20:54 +0000 (10:20 +0200)
committerAndy Wingo <wingo@pobox.com>
Fri, 1 Oct 2010 08:20:54 +0000 (10:20 +0200)
* 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
libguile/private-options.h
libguile/read.c

index 0c5edd4..3c25b19 100644 (file)
@@ -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)
index 3357b27..543c4da 100644 (file)
@@ -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 */ 
index 49df1e3..118b9cc 100644 (file)
@@ -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':