+2003-05-17 Richard M. Stallman <rms@gnu.org>
+
+ * syntax.c (find_defun_start):
+ When open_paren_in_column_0_is_defun_start,
+ return beginning of buffer.
+
+ * lisp.h (map_char_table): Declare added arg.
+
+ * fns.c (map_char_table): New arg TABLE gets the master table.
+ All calls changed.
+ Process default and inheritance, resorting to Faref if necessary.
+
+ * keymap.c (Fset_keymap_parent, map_keymap, Fcopy_keymap)
+ (Faccessible_keymaps): Pass new arg to map_char_table.
+
+ * fontset.c (Ffontset_info): Pass new arg to map_char_table.
+
+ * casetab.c (set_case_table): Pass new arg to map_char_table.
+
+ * data.c (let_shadows_buffer_binding_p): Make target of p volatile.
+
+ * lisp.h (specbinding_func): New typedef.
+ (struct specbinding): Use specbinding_func, to put the `volatile'
+ in the right place.
+
+ * alloc.c (Fgarbage_collect): Cast pointers into specpdl
+ to avoid GCC warning.
+
2003-05-16 Ralph Schleicher <rs@nunatak.allgaeu.org> (tiny change)
* fileio.c (Fdelete_file): Handle symlinks pointing to
It should be the last one before POS, or nearly the last.
When open_paren_in_column_0_is_defun_start is nonzero,
- the beginning of every line is treated as a defun-start.
+ only the beginning of the buffer is treated as a defun-start.
We record the information about where the scan started
and what its result was, so that another call in the same area
{
int opoint = PT, opoint_byte = PT_BYTE;
+ if (!open_paren_in_column_0_is_defun_start)
+ {
+ find_start_value_byte = BEGV_BYTE;
+ return BEGV;
+ }
+
/* Use previous finding, if it's valid and applies to this inquiry. */
if (current_buffer == find_start_buffer
/* Reuse the defun-start even if POS is a little farther on.
syntax-tables. */
gl_state.current_syntax_table = current_buffer->syntax_table;
gl_state.use_global = 0;
- if (open_paren_in_column_0_is_defun_start)
+ while (PT > BEGV)
{
- while (PT > BEGV)
+ /* Open-paren at start of line means we may have found our
+ defun-start. */
+ if (SYNTAX (FETCH_CHAR (PT_BYTE)) == Sopen)
{
- /* Open-paren at start of line means we may have found our
- defun-start. */
+ SETUP_SYNTAX_TABLE (PT + 1, -1); /* Try again... */
if (SYNTAX (FETCH_CHAR (PT_BYTE)) == Sopen)
- {
- SETUP_SYNTAX_TABLE (PT + 1, -1); /* Try again... */
- if (SYNTAX (FETCH_CHAR (PT_BYTE)) == Sopen)
- break;
- /* Now fallback to the default value. */
- gl_state.current_syntax_table = current_buffer->syntax_table;
- gl_state.use_global = 0;
- }
- /* Move to beg of previous line. */
- scan_newline (PT, PT_BYTE, BEGV, BEGV_BYTE, -2, 1);
+ break;
+ /* Now fallback to the default value. */
+ gl_state.current_syntax_table = current_buffer->syntax_table;
+ gl_state.use_global = 0;
}
+ /* Move to beg of previous line. */
+ scan_newline (PT, PT_BYTE, BEGV, BEGV_BYTE, -2, 1);
}
/* Record what we found, for the next try. */