aboutsummaryrefslogtreecommitdiffstats
path: root/src/lisp.h
diff options
context:
space:
mode:
authorNoam Postavsky2016-07-20 20:15:14 -0400
committerNoam Postavsky2016-07-22 23:55:23 -0400
commit66f95e0dabf750e9d2eff59b2bb6e593618cd48a (patch)
treea8cd27828bfef2459b70e446cdf1de346327fc3e /src/lisp.h
parent52cf0d5d98c51c3591ca5d376fd4e85cd9b72d7f (diff)
downloademacs-66f95e0dabf750e9d2eff59b2bb6e593618cd48a.tar.gz
emacs-66f95e0dabf750e9d2eff59b2bb6e593618cd48a.zip
Adjust match data before calling after-change-funs
It's important to adjust the match data in between calling before-change-functions and after-change-functions, so that buffer change hooks will always see match-data consistent with buffer content. (Bug #23917) * src/insdel.c (replace_range): Add new parameter ADJUST_MATCH_DATA, if true call update_search_regs. Update all callers (except Freplace_match) to pass 0 for the new parameter. * src/search.c (update_search_regs): New function, extracted from Freplace_match. (Freplace_match): Remove match data adjustment code, pass 1 for ADJUST_MATCH_DATA to replace_range instead.
Diffstat (limited to 'src/lisp.h')
-rw-r--r--src/lisp.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/lisp.h b/src/lisp.h
index 6a98adbda9c..25f811e06ef 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -3516,7 +3516,7 @@ extern void adjust_after_insert (ptrdiff_t, ptrdiff_t, ptrdiff_t,
3516 ptrdiff_t, ptrdiff_t); 3516 ptrdiff_t, ptrdiff_t);
3517extern void adjust_markers_for_delete (ptrdiff_t, ptrdiff_t, 3517extern void adjust_markers_for_delete (ptrdiff_t, ptrdiff_t,
3518 ptrdiff_t, ptrdiff_t); 3518 ptrdiff_t, ptrdiff_t);
3519extern void replace_range (ptrdiff_t, ptrdiff_t, Lisp_Object, bool, bool, bool); 3519extern void replace_range (ptrdiff_t, ptrdiff_t, Lisp_Object, bool, bool, bool, bool);
3520extern void replace_range_2 (ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t, 3520extern void replace_range_2 (ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t,
3521 const char *, ptrdiff_t, ptrdiff_t, bool); 3521 const char *, ptrdiff_t, ptrdiff_t, bool);
3522extern void syms_of_insdel (void); 3522extern void syms_of_insdel (void);
@@ -3994,6 +3994,8 @@ extern Lisp_Object make_temp_name (Lisp_Object, bool);
3994/* Defined in search.c. */ 3994/* Defined in search.c. */
3995extern void shrink_regexp_cache (void); 3995extern void shrink_regexp_cache (void);
3996extern void restore_search_regs (void); 3996extern void restore_search_regs (void);
3997extern void update_search_regs (ptrdiff_t oldstart,
3998 ptrdiff_t oldend, ptrdiff_t newend);
3997extern void record_unwind_save_match_data (void); 3999extern void record_unwind_save_match_data (void);
3998struct re_registers; 4000struct re_registers;
3999extern struct re_pattern_buffer *compile_pattern (Lisp_Object, 4001extern struct re_pattern_buffer *compile_pattern (Lisp_Object,