# HG changeset patch # User jwe # Date 811544889 0 # Node ID b44fe7cf2a6b329830742f09bb157dcf922550fa # Parent f18c5b5db882ac222a0397e230faaf597e6233b2 [project @ 1995-09-19 21:06:07 by jwe] diff --git a/readline/parens.c b/readline/parens.c --- a/readline/parens.c +++ b/readline/parens.c @@ -28,6 +28,16 @@ #include "rlconf.h" +#if defined (HAVE_STRING_H) +# include +#else /* !HAVE_STRING_H */ +# include +#endif /* !HAVE_STRING_H */ + +/* List of characters treated as string delimiters if doing paren + matching. By default this is "'\"". */ +char *rl_paren_string_delimiters = "'\""; + #if !defined (PAREN_MATCHING) rl_insert_close (count, invoking_key) @@ -131,10 +141,13 @@ for (i = from; i > -1; i--) { + char *match = 0; + if (delimiter && (string[i] == delimiter)) delimiter = 0; - else if ((string[i] == '\'') || (string[i] == '"')) - delimiter = rl_line_buffer[i]; + else if (rl_paren_string_delimiters + && (match = strchr (rl_paren_string_delimiters, string[i]))) + delimiter = *match; else if (!delimiter && (string[i] == closer)) level++; else if (!delimiter && (string[i] == opener)) diff --git a/readline/readline.h b/readline/readline.h --- a/readline/readline.h +++ b/readline/readline.h @@ -172,6 +172,10 @@ Nothing is added if this is '\0'. */ extern char rl_completion_append_character; +/* List of characters treated as string delimiters if doing paren + matching. By default this is "'\"". */ +extern char *rl_paren_string_delimiters; + /* List of characters that are word break characters, but should be left in TEXT when it is passed to the completion function. The shell uses this to help determine what kind of completing to do. */ diff --git a/src/input.cc b/src/input.cc --- a/src/input.cc +++ b/src/input.cc @@ -945,6 +945,11 @@ rl_add_defun ("operate-and-get-next", (Function *) operate_and_get_next, CTRL ('O')); + + // Don't treat single quotes as string delimiters when doing paren + // matching. + + rl_paren_string_delimiters = "\""; } static int