Mercurial > emacs
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);