summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2015-01-22 12:50:18 +0100
committerAndy Wingo <wingo@pobox.com>2015-01-22 12:50:18 +0100
commit678995ff79be5c705c752ed2687c616c06da3a40 (patch)
treec3143db2a29f3a9f6c1d6cfcc5ac6ea4eb9e2666
parent24d4f029bfdfe547c2a4598163c5c753d8796cfb (diff)
parent5af307de43e4b65eec7f235b48a8908f2a00f134 (diff)
downloadguile-678995ff79be5c705c752ed2687c616c06da3a40.tar.gz
Merge commit '5af307de43e4b65eec7f235b48a8908f2a00f134'
Conflicts: test-suite/tests/reader.test
-rw-r--r--doc/ref/api-data.texi8
-rw-r--r--libguile/read.c7
-rw-r--r--test-suite/tests/reader.test9
3 files changed, 18 insertions, 6 deletions
diff --git a/doc/ref/api-data.texi b/doc/ref/api-data.texi
index 23f3bfc73..3f787b1c9 100644
--- a/doc/ref/api-data.texi
+++ b/doc/ref/api-data.texi
@@ -1,7 +1,7 @@
@c -*-texinfo-*-
@c This is part of the GNU Guile Reference Manual.
-@c Copyright (C) 1996, 1997, 2000, 2001, 2002, 2003, 2004, 2006, 2007,
-@c 2008, 2009, 2010, 2011, 2012, 2013, 2014 Free Software Foundation, Inc.
+@c Copyright (C) 1996, 1997, 2000-2004, 2006-2014
+@c Free Software Foundation, Inc.
@c See the file guile.texi for copying conditions.
@node Simple Data Types
@@ -3003,6 +3003,10 @@ Backspace character (ASCII 8).
@item @nicode{\0}
NUL character (ASCII 0).
+@item @nicode{\(}
+Open parenthesis. This is intended for use at the beginning of lines in
+multiline strings to avoid confusing Emacs lisp modes.
+
@item @nicode{\} followed by newline (ASCII 10)
Nothing. This way if @nicode{\} is the last character in a line, the
string will continue with the first character from the next line,
diff --git a/libguile/read.c b/libguile/read.c
index c2d50afdf..ecf27ff6e 100644
--- a/libguile/read.c
+++ b/libguile/read.c
@@ -1,5 +1,5 @@
-/* Copyright (C) 1995, 1996, 1997, 1999, 2000, 2001, 2003, 2004, 2006,
- * 2007, 2008, 2009, 2010, 2011, 2012, 2014 Free Software Foundation, Inc.
+/* Copyright (C) 1995-1997, 1999-2001, 2003, 2004, 2006-2012, 2014
+ * Free Software Foundation, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
@@ -640,6 +640,9 @@ scm_read_string_like_syntax (int chr, SCM port, scm_t_read_opts *opts)
goto str_eof;
case '|':
case '\\':
+ case '(': /* Accept "\(" for use at the beginning of lines
+ in multiline strings to avoid confusing emacs
+ lisp modes. */
break;
case '\n':
if (opts->hungry_eol_escapes_p)
diff --git a/test-suite/tests/reader.test b/test-suite/tests/reader.test
index d9cb1c883..5eb368d9b 100644
--- a/test-suite/tests/reader.test
+++ b/test-suite/tests/reader.test
@@ -1,7 +1,8 @@
;;;; reader.test --- Reader test. -*- coding: iso-8859-1; mode: scheme -*-
;;;;
-;;;; Copyright (C) 1999, 2001, 2002, 2003, 2007, 2008, 2009, 2010, 2011,
-;;;; 2013, 2014 Free Software Foundation, Inc.
+;;;; Copyright (C) 1999, 2001-2003, 2007-2011, 2013-2015
+;;;; Free Software Foundation, Inc.
+;;;;
;;;; Jim Blandy <jimb@red-bean.com>
;;;;
;;;; This library is free software; you can redistribute it and/or
@@ -77,6 +78,10 @@
"a|b"
(read-string "\"a\\|b\""))
+ (pass-if-equal "'(' in string literals"
+ "a(b"
+ (read-string "\"a\\(b\""))
+
(pass-if-equal "#\\escape"
'(a #\esc b)
(read-string "(a #\\escape b)"))