changeset 28302:27ffe1e3b06d

(open_paren_in_column_0_is_defun_start): New variable. (find_defun_start): Consider an open parenthesis in column 0 a defun start only if open_paren_in_column_0_is_defun_start is set. (syms_of_syntax): New variable open-paren-in-column-0-is-defun-start.
author Gerd Moellmann <gerd@gnu.org>
date Fri, 24 Mar 2000 20:49:56 +0000
parents 88b4e08f3ac1
children 8bdd3f67b91a
files src/syntax.c
diffstat 1 files changed, 15 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/syntax.c	Fri Mar 24 20:46:12 2000 +0000
+++ b/src/syntax.c	Fri Mar 24 20:49:56 2000 +0000
@@ -53,6 +53,12 @@
    only very temporarily.  */
 Lisp_Object syntax_temp;
 
+/* Non-zero means an open parenthesis in column 0 is always considered
+   to be the start of a defun.  Zero means an open parenthesis in
+   column 0 has no special meaning.  */
+
+int open_paren_in_column_0_is_defun_start;
+
 /* This is the internal form of the parse state used in parse-partial-sexp.  */
 
 struct lisp_parse_state
@@ -370,11 +376,13 @@
   gl_state.use_global = 0;
   while (PT > BEGV)
     {
-      /* Open-paren at start of line means we found our defun-start.  */
+      /* Open-paren at start of line means we may have found our
+	 defun-start.  */
       if (SYNTAX (FETCH_CHAR (PT_BYTE)) == Sopen)
 	{
 	  SETUP_SYNTAX_TABLE (PT + 1, -1);	/* Try again... */
-	  if (SYNTAX (FETCH_CHAR (PT_BYTE)) == Sopen)
+	  if (SYNTAX (FETCH_CHAR (PT_BYTE)) == Sopen
+	      && open_paren_in_column_0_is_defun_start)
 	    break;
 	  /* Now fallback to the default value.  */
 	  gl_state.current_syntax_table = current_buffer->syntax_table;
@@ -2963,6 +2971,11 @@
     "Non-nil means `scan-sexps' treats all multibyte characters as symbol.");
   multibyte_syntax_as_symbol = 0;
 
+  DEFVAR_BOOL ("open-paren-in-column-0-is-defun-start",
+	       &open_paren_in_column_0_is_defun_start,
+    "Non-nil means an open paren in column 0 denotes the start of a defun.");
+  open_paren_in_column_0_is_defun_start = 1;
+
   defsubr (&Ssyntax_table_p);
   defsubr (&Ssyntax_table);
   defsubr (&Sstandard_syntax_table);