diff --git a/doc/ref/api-data.texi b/doc/ref/api-data.texi index c1dd7610f..d98c93862 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 @@ -2999,6 +2999,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 419ad1276..60a40d9d8 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 @@ -635,6 +635,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 18c0293b8..9055e3b67 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, -;;;; 2014 Free Software Foundation, Inc. +;;;; Copyright (C) 1999, 2001-2003, 2007-2011, 2014 +;;;; Free Software Foundation, Inc. +;;;; ;;;; Jim Blandy ;;;; ;;;; This library is free software; you can redistribute it and/or @@ -78,6 +79,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)"))