* src/window.c (Fset_window_configuration): Deactivate the mark before

unsetting the mark.
(set_window_buffer): Ignore window_initialized.
(window_initialized): Remove.
* src/keyboard.c (Qdeactivate_mark): Not static any more.
* src/buffer.c (buffer_local_value): Rename from buffer_local_value_1.
Update all callers.
This commit is contained in:
Stefan Monnier 2014-04-23 23:59:19 -04:00
parent 9b233997f4
commit 8917710efd
6 changed files with 34 additions and 24 deletions

View file

@ -1,3 +1,13 @@
2014-04-24 Stefan Monnier <monnier@iro.umontreal.ca>
* window.c (Fset_window_configuration): Deactivate the mark before
unsetting the mark.
(set_window_buffer): Ignore window_initialized.
(window_initialized): Remove.
* keyboard.c (Qdeactivate_mark): Not static any more.
* buffer.c (buffer_local_value): Rename from buffer_local_value_1.
Update all callers.
2014-04-23 Paul Eggert <eggert@cs.ucla.edu>
* conf_post.h (ADDRESS_SANITIZER_WORKAROUND): Port to GCC 4.9.0

View file

@ -1158,10 +1158,10 @@ DEFUN ("buffer-local-value", Fbuffer_local_value,
Sbuffer_local_value, 2, 2, 0,
doc: /* Return the value of VARIABLE in BUFFER.
If VARIABLE does not have a buffer-local binding in BUFFER, the value
is the default binding of the variable. */)
is the default binding of the variable. */)
(register Lisp_Object variable, register Lisp_Object buffer)
{
register Lisp_Object result = buffer_local_value_1 (variable, buffer);
register Lisp_Object result = buffer_local_value (variable, buffer);
if (EQ (result, Qunbound))
xsignal1 (Qvoid_variable, variable);
@ -1174,7 +1174,7 @@ is the default binding of the variable. */)
locally unbound. */
Lisp_Object
buffer_local_value_1 (Lisp_Object variable, Lisp_Object buffer)
buffer_local_value (Lisp_Object variable, Lisp_Object buffer)
{
register struct buffer *buf;
register Lisp_Object result;

View file

@ -1079,7 +1079,7 @@ extern ptrdiff_t overlay_strings (ptrdiff_t, struct window *, unsigned char **);
extern void validate_region (Lisp_Object *, Lisp_Object *);
extern void set_buffer_internal_1 (struct buffer *);
extern void set_buffer_temp (struct buffer *);
extern Lisp_Object buffer_local_value_1 (Lisp_Object, Lisp_Object);
extern Lisp_Object buffer_local_value (Lisp_Object, Lisp_Object);
extern void record_buffer (Lisp_Object);
extern void fix_overlays_before (struct buffer *, ptrdiff_t, ptrdiff_t);
extern void mmap_set_vars (bool);

View file

@ -228,14 +228,14 @@ static Lisp_Object Qbackward_char;
Lisp_Object Qundefined;
static Lisp_Object Qtimer_event_handler;
/* read_key_sequence stores here the command definition of the
/* `read_key_sequence' stores here the command definition of the
key sequence that it reads. */
static Lisp_Object read_key_sequence_cmd;
static Lisp_Object read_key_sequence_remapped;
static Lisp_Object Qinput_method_function;
static Lisp_Object Qdeactivate_mark;
Lisp_Object Qdeactivate_mark;
Lisp_Object Qrecompute_lucid_menubar, Qactivate_menubar_hook;

View file

@ -119,9 +119,6 @@ static Lisp_Object Qtemp_buffer_show_hook;
/* Incremented for each window created. */
static int sequence_number;
/* Nonzero after init_window_once has finished. */
static int window_initialized;
/* Hook to run when window config changes. */
static Lisp_Object Qwindow_configuration_change_hook;
@ -3439,14 +3436,10 @@ set_window_buffer (Lisp_Object window, Lisp_Object buffer,
wset_redisplay (w);
w->update_mode_line = true;
/* We must select BUFFER for running the window-scroll-functions. */
/* We can't check ! NILP (Vwindow_scroll_functions) here
because that might itself be a local variable. */
if (window_initialized)
{
record_unwind_current_buffer ();
Fset_buffer (buffer);
}
/* We must select BUFFER to run the window-scroll-functions and to look up
the buffer-local value of Vwindow_point_insertion_type. */
record_unwind_current_buffer ();
Fset_buffer (buffer);
XMARKER (w->pointm)->insertion_type = !NILP (Vwindow_point_insertion_type);
@ -6267,6 +6260,15 @@ the return value is nil. Otherwise the value is t. */)
set_marker_restricted (w->start, p->start, w->contents);
set_marker_restricted (w->pointm, p->pointm,
w->contents);
if (MARKERP (p->mark) && !XMARKER (p->mark)->buffer
&& !NILP (BVAR (XBUFFER (w->contents), mark_active)))
{
struct buffer *old = current_buffer;
extern Lisp_Object Qdeactivate_mark;
set_buffer_internal (XBUFFER (w->contents));
call0 (Qdeactivate_mark);
set_buffer_internal (old);
}
Fset_marker (BVAR (XBUFFER (w->contents), mark),
p->mark, w->contents);
@ -6619,7 +6621,7 @@ save_window_save (Lisp_Object window, struct Lisp_Vector *vector, int i)
else
p->pointm = Fcopy_marker (w->pointm, Qnil);
XMARKER (p->pointm)->insertion_type
= !NILP (buffer_local_value_1 /* Don't signal error if void. */
= !NILP (buffer_local_value /* Don't signal error if void. */
(Qwindow_point_insertion_type, w->contents));
p->start = Fcopy_marker (w->start, Qnil);
@ -7138,8 +7140,6 @@ init_window_once (void)
Vterminal_frame = selected_frame;
minibuf_window = f->minibuffer_window;
selected_window = f->selected_window;
window_initialized = 1;
}
void

View file

@ -23422,7 +23422,7 @@ calc_pixel_width_or_height (double *res, struct it *it, Lisp_Object prop,
return OK_PIXELS (WINDOW_SCROLL_BAR_AREA_WIDTH (it->w));
}
prop = buffer_local_value_1 (prop, it->w->contents);
prop = buffer_local_value (prop, it->w->contents);
if (EQ (prop, Qunbound))
prop = Qnil;
}
@ -23474,7 +23474,7 @@ calc_pixel_width_or_height (double *res, struct it *it, Lisp_Object prop,
return OK_PIXELS (pixels);
}
car = buffer_local_value_1 (car, it->w->contents);
car = buffer_local_value (car, it->w->contents);
if (EQ (car, Qunbound))
car = Qnil;
}
@ -28543,8 +28543,8 @@ note_mode_line_or_margin_highlight (Lisp_Object window, int x, int y,
else if (area == ON_MODE_LINE)
{
Lisp_Object default_help
= buffer_local_value_1 (Qmode_line_default_help_echo,
w->contents);
= buffer_local_value (Qmode_line_default_help_echo,
w->contents);
if (STRINGP (default_help))
{