Commit f4ed767f authored by Gerd Moellmann's avatar Gerd Moellmann

(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.
parent 79c70818
......@@ -53,6 +53,12 @@ int multibyte_syntax_as_symbol;
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 @@ find_defun_start (pos, pos_byte)
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 @@ relevant only for open/close type.");
"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);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment