summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--etc/NEWS1
-rw-r--r--lisp/cedet/mode-local.el2
-rw-r--r--lisp/emacs-lisp/edebug.el3
-rw-r--r--lisp/help-fns.el2
-rw-r--r--lisp/subr.el3
-rw-r--r--src/data.c133
-rw-r--r--src/eval.c2
-rw-r--r--src/frame.c30
-rw-r--r--src/lisp.h7
-rw-r--r--src/widget.c10
-rw-r--r--test/src/data-tests.el1
11 files changed, 16 insertions, 178 deletions
diff --git a/etc/NEWS b/etc/NEWS
index 7338c0c6a70..8ea9a60ab00 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -669,6 +669,7 @@ before running. This is controlled by the 'grep-save-buffers'
variable.
** Some obsolete functions, variables, and faces have been removed:
+*** make-variable-frame-local. Variables cannot be frame-local any more.
*** From subr.el: window-dot, set-window-dot, read-input, show-buffer,
eval-current-buffer, string-to-int
*** All the default-FOO variables that hold the default value of the
diff --git a/lisp/cedet/mode-local.el b/lisp/cedet/mode-local.el
index 4f424313ab7..71e146880b1 100644
--- a/lisp/cedet/mode-local.el
+++ b/lisp/cedet/mode-local.el
@@ -31,7 +31,7 @@
;; This library permits the setting of override functions for tasks of
;; that nature, and also provides reasonable defaults.
;;
-;; There are buffer local variables, and frame local variables.
+;; There are buffer local variables (and there were frame local variables).
;; This library gives the illusion of mode specific variables.
;;
;; You should use a mode-local variable or override to allow extension
diff --git a/lisp/emacs-lisp/edebug.el b/lisp/emacs-lisp/edebug.el
index 66117b83316..04a493c826f 100644
--- a/lisp/emacs-lisp/edebug.el
+++ b/lisp/emacs-lisp/edebug.el
@@ -2170,8 +2170,7 @@ The purpose of this function is so you can properly undo
subsequent changes to the same binding, by passing the status
cons cell to `edebug-restore-status'. The status cons cell
has the form (LOCUS . VALUE), where LOCUS can be a buffer
-\(for a buffer-local binding), a frame (for a frame-local binding),
-or nil (if the default binding is current)."
+\(for a buffer-local binding), or nil (if the default binding is current)."
(cons (variable-binding-locus var)
(symbol-value var)))
diff --git a/lisp/help-fns.el b/lisp/help-fns.el
index 23dec896b81..6402f770927 100644
--- a/lisp/help-fns.el
+++ b/lisp/help-fns.el
@@ -863,8 +863,6 @@ it is displayed along with the global value."
((bufferp locus)
(princ (format "Local in buffer %s; "
(buffer-name buffer))))
- ((framep locus)
- (princ (format "It is a frame-local variable; ")))
((terminal-live-p locus)
(princ (format "It is a terminal-local variable; ")))
(t
diff --git a/lisp/subr.el b/lisp/subr.el
index 99b142993fc..89ceb9ba55f 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -1310,8 +1310,7 @@ be a list of the form returned by `event-start' and `event-end'."
(make-obsolete 'focus-frame "it does nothing." "22.1")
(defalias 'unfocus-frame 'ignore "")
(make-obsolete 'unfocus-frame "it does nothing." "22.1")
-(make-obsolete 'make-variable-frame-local
- "explicitly check for a frame-parameter instead." "22.2")
+
(set-advertised-calling-convention
'all-completions '(string collection &optional predicate) "23.1")
(set-advertised-calling-convention 'unintern '(name obarray) "23.3")
diff --git a/src/data.c b/src/data.c
index 6dd346bf8df..821fc379374 100644
--- a/src/data.c
+++ b/src/data.c
@@ -1176,9 +1176,7 @@ swap_in_symval_forwarding (struct Lisp_Symbol *symbol, struct Lisp_Buffer_Local_
tem1 = blv->where;
if (NILP (tem1)
- || (blv->frame_local
- ? !EQ (selected_frame, tem1)
- : current_buffer != XBUFFER (tem1)))
+ || current_buffer != XBUFFER (tem1))
{
/* Unload the previously loaded binding. */
@@ -1189,16 +1187,8 @@ swap_in_symval_forwarding (struct Lisp_Symbol *symbol, struct Lisp_Buffer_Local_
{
Lisp_Object var;
XSETSYMBOL (var, symbol);
- if (blv->frame_local)
- {
- tem1 = assq_no_quit (var, XFRAME (selected_frame)->param_alist);
- set_blv_where (blv, selected_frame);
- }
- else
- {
- tem1 = assq_no_quit (var, BVAR (current_buffer, local_var_alist));
- set_blv_where (blv, Fcurrent_buffer ());
- }
+ tem1 = assq_no_quit (var, BVAR (current_buffer, local_var_alist));
+ set_blv_where (blv, Fcurrent_buffer ());
}
if (!(blv->found = !NILP (tem1)))
tem1 = blv->defcell;
@@ -1266,7 +1256,7 @@ DEFUN ("set", Fset, Sset, 2, 2, 0,
}
/* Store the value NEWVAL into SYMBOL.
- If buffer/frame-locality is an issue, WHERE specifies which context to use.
+ If buffer-locality is an issue, WHERE specifies which context to use.
(nil stands for the current buffer/frame).
If BINDFLAG is SET_INTERNAL_SET, then if this symbol is supposed to
@@ -1322,15 +1312,10 @@ set_internal (Lisp_Object symbol, Lisp_Object newval, Lisp_Object where,
{
struct Lisp_Buffer_Local_Value *blv = SYMBOL_BLV (sym);
if (NILP (where))
- {
- if (blv->frame_local)
- where = selected_frame;
- else
- XSETBUFFER (where, current_buffer);
- }
+ XSETBUFFER (where, current_buffer);
+
/* If the current buffer is not the buffer whose binding is
- loaded, or if there may be frame-local bindings and the frame
- isn't the right one, or if it's a Lisp_Buffer_Local_Value and
+ loaded, or if it's a Lisp_Buffer_Local_Value and
the default binding is loaded, the loaded binding may be the
wrong one. */
if (!EQ (blv->where, where)
@@ -1347,9 +1332,7 @@ set_internal (Lisp_Object symbol, Lisp_Object newval, Lisp_Object where,
/* Find the new binding. */
XSETSYMBOL (symbol, sym); /* May have changed via aliasing. */
tem1 = assq_no_quit (symbol,
- (blv->frame_local
- ? XFRAME (where)->param_alist
- : BVAR (XBUFFER (where), local_var_alist)));
+ BVAR (XBUFFER (where), local_var_alist));
set_blv_where (blv, where);
blv->found = 1;
@@ -1376,9 +1359,6 @@ set_internal (Lisp_Object symbol, Lisp_Object newval, Lisp_Object where,
and load that binding. */
else
{
- /* local_if_set is only supported for buffer-local
- bindings, not for frame-local bindings. */
- eassert (!blv->frame_local);
tem1 = Fcons (symbol, XCDR (blv->defcell));
bset_local_var_alist
(XBUFFER (where),
@@ -1442,9 +1422,6 @@ set_symbol_trapped_write (Lisp_Object symbol, enum symbol_trapped_write trap)
struct Lisp_Symbol* sym = XSYMBOL (symbol);
if (sym->trapped_write == SYMBOL_NOWRITE)
xsignal1 (Qtrapping_constant, symbol);
- else if (sym->redirect == SYMBOL_LOCALIZED
- && SYMBOL_BLV (sym)->frame_local)
- xsignal1 (Qtrapping_frame_local, symbol);
sym->trapped_write = trap;
}
@@ -1784,7 +1761,6 @@ make_blv (struct Lisp_Symbol *sym, bool forwarded,
eassert (!(forwarded && KBOARD_OBJFWDP (valcontents.fwd)));
blv->fwd = forwarded ? valcontents.fwd : NULL;
set_blv_where (blv, Qnil);
- blv->frame_local = 0;
blv->local_if_set = 0;
set_blv_defcell (blv, tem);
set_blv_valcell (blv, tem);
@@ -1831,9 +1807,6 @@ The function `default-value' gets the default value and `set-default' sets it.
break;
case SYMBOL_LOCALIZED:
blv = SYMBOL_BLV (sym);
- if (blv->frame_local)
- error ("Symbol %s may not be buffer-local",
- SDATA (SYMBOL_NAME (variable)));
break;
case SYMBOL_FORWARDED:
forwarded = 1; valcontents.fwd = SYMBOL_FWD (sym);
@@ -1908,9 +1881,6 @@ Instead, use `add-hook' and specify t for the LOCAL argument. */)
forwarded = 0; valcontents.value = SYMBOL_VAL (sym); break;
case SYMBOL_LOCALIZED:
blv = SYMBOL_BLV (sym);
- if (blv->frame_local)
- error ("Symbol %s may not be buffer-local",
- SDATA (SYMBOL_NAME (variable)));
break;
case SYMBOL_FORWARDED:
forwarded = 1; valcontents.fwd = SYMBOL_FWD (sym);
@@ -2027,8 +1997,6 @@ From now on the default value will apply in this buffer. Return VARIABLE. */)
}
case SYMBOL_LOCALIZED:
blv = SYMBOL_BLV (sym);
- if (blv->frame_local)
- return variable;
break;
default: emacs_abort ();
}
@@ -2062,81 +2030,6 @@ From now on the default value will apply in this buffer. Return VARIABLE. */)
/* Lisp functions for creating and removing buffer-local variables. */
-/* Obsolete since 22.2. NB adjust doc of modify-frame-parameters
- when/if this is removed. */
-
-DEFUN ("make-variable-frame-local", Fmake_variable_frame_local, Smake_variable_frame_local,
- 1, 1, "vMake Variable Frame Local: ",
- doc: /* Enable VARIABLE to have frame-local bindings.
-This does not create any frame-local bindings for VARIABLE,
-it just makes them possible.
-
-A frame-local binding is actually a frame parameter value.
-If a frame F has a value for the frame parameter named VARIABLE,
-that also acts as a frame-local binding for VARIABLE in F--
-provided this function has been called to enable VARIABLE
-to have frame-local bindings at all.
-
-The only way to create a frame-local binding for VARIABLE in a frame
-is to set the VARIABLE frame parameter of that frame. See
-`modify-frame-parameters' for how to set frame parameters.
-
-Note that since Emacs 23.1, variables cannot be both buffer-local and
-frame-local any more (buffer-local bindings used to take precedence over
-frame-local bindings). */)
- (Lisp_Object variable)
-{
- bool forwarded;
- union Lisp_Val_Fwd valcontents;
- struct Lisp_Symbol *sym;
- struct Lisp_Buffer_Local_Value *blv = NULL;
-
- CHECK_SYMBOL (variable);
- sym = XSYMBOL (variable);
-
- start:
- switch (sym->redirect)
- {
- case SYMBOL_VARALIAS: sym = indirect_variable (sym); goto start;
- case SYMBOL_PLAINVAL:
- forwarded = 0; valcontents.value = SYMBOL_VAL (sym);
- if (EQ (valcontents.value, Qunbound))
- valcontents.value = Qnil;
- break;
- case SYMBOL_LOCALIZED:
- if (SYMBOL_BLV (sym)->frame_local)
- return variable;
- else
- error ("Symbol %s may not be frame-local",
- SDATA (SYMBOL_NAME (variable)));
- case SYMBOL_FORWARDED:
- forwarded = 1; valcontents.fwd = SYMBOL_FWD (sym);
- if (KBOARD_OBJFWDP (valcontents.fwd) || BUFFER_OBJFWDP (valcontents.fwd))
- error ("Symbol %s may not be frame-local",
- SDATA (SYMBOL_NAME (variable)));
- break;
- default: emacs_abort ();
- }
-
- if (SYMBOL_TRAPPED_WRITE_P (variable))
- error ("Symbol %s may not be frame-local", SDATA (SYMBOL_NAME (variable)));
-
- blv = make_blv (sym, forwarded, valcontents);
- blv->frame_local = 1;
- sym->redirect = SYMBOL_LOCALIZED;
- SET_SYMBOL_BLV (sym, blv);
- {
- Lisp_Object symbol;
- XSETSYMBOL (symbol, sym); /* In case `variable' is aliased. */
- if (let_shadows_global_binding_p (symbol))
- {
- AUTO_STRING (format, "Making %s frame-local while let-bound!");
- CALLN (Fmessage, format, SYMBOL_NAME (variable));
- }
- }
- return variable;
-}
-
DEFUN ("local-variable-p", Flocal_variable_p, Slocal_variable_p,
1, 2, 0,
doc: /* Non-nil if VARIABLE has a local binding in buffer BUFFER.
@@ -2168,10 +2061,7 @@ BUFFER defaults to the current buffer. */)
{
elt = XCAR (tail);
if (EQ (variable, XCAR (elt)))
- {
- eassert (!blv->frame_local);
- return Qt;
- }
+ return Qt;
}
return Qnil;
}
@@ -2230,7 +2120,6 @@ DEFUN ("variable-binding-locus", Fvariable_binding_locus, Svariable_binding_locu
1, 1, 0,
doc: /* Return a value indicating where VARIABLE's current binding comes from.
If the current binding is buffer-local, the value is the current buffer.
-If the current binding is frame-local, the value is the selected frame.
If the current binding is global (the default), the value is nil. */)
(register Lisp_Object variable)
{
@@ -3664,7 +3553,6 @@ syms_of_data (void)
DEFSYM (Qvoid_variable, "void-variable");
DEFSYM (Qsetting_constant, "setting-constant");
DEFSYM (Qtrapping_constant, "trapping-constant");
- DEFSYM (Qtrapping_frame_local, "trapping-frame-local");
DEFSYM (Qinvalid_read_syntax, "invalid-read-syntax");
DEFSYM (Qinvalid_function, "invalid-function");
@@ -3745,8 +3633,6 @@ syms_of_data (void)
"Attempt to set a constant symbol");
PUT_ERROR (Qtrapping_constant, error_tail,
"Attempt to trap writes to a constant symbol");
- PUT_ERROR (Qtrapping_frame_local, error_tail,
- "Attempt to trap writes to a frame local variable");
PUT_ERROR (Qinvalid_read_syntax, error_tail, "Invalid read syntax");
PUT_ERROR (Qinvalid_function, error_tail, "Invalid function");
PUT_ERROR (Qwrong_number_of_arguments, error_tail,
@@ -3876,7 +3762,6 @@ syms_of_data (void)
defsubr (&Smake_variable_buffer_local);
defsubr (&Smake_local_variable);
defsubr (&Skill_local_variable);
- defsubr (&Smake_variable_frame_local);
defsubr (&Slocal_variable_p);
defsubr (&Slocal_variable_if_set_p);
defsubr (&Svariable_binding_locus);
diff --git a/src/eval.c b/src/eval.c
index 1d397303393..1313093a533 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -3283,8 +3283,6 @@ specbind (Lisp_Object symbol, Lisp_Object value)
do_specbind (sym, specpdl_ptr - 1, value, SET_INTERNAL_BIND);
break;
case SYMBOL_LOCALIZED:
- if (SYMBOL_BLV (sym)->frame_local)
- error ("Frame-local vars cannot be let-bound");
case SYMBOL_FORWARDED:
{
Lisp_Object ovalue = find_symbol_value (symbol);
diff --git a/src/frame.c b/src/frame.c
index b1d89f396ec..652d58440fa 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -2478,28 +2478,6 @@ store_frame_param (struct frame *f, Lisp_Object prop, Lisp_Object val)
return;
}
- /* If PROP is a symbol which is supposed to have frame-local values,
- and it is set up based on this frame, switch to the global
- binding. That way, we can create or alter the frame-local binding
- without messing up the symbol's status. */
- if (SYMBOLP (prop))
- {
- struct Lisp_Symbol *sym = XSYMBOL (prop);
- start:
- switch (sym->redirect)
- {
- case SYMBOL_VARALIAS: sym = indirect_variable (sym); goto start;
- case SYMBOL_PLAINVAL: case SYMBOL_FORWARDED: break;
- case SYMBOL_LOCALIZED:
- { struct Lisp_Buffer_Local_Value *blv = sym->val.blv;
- if (blv->frame_local && blv_found (blv) && XFRAME (blv->where) == f)
- swap_in_global_binding (sym);
- break;
- }
- default: emacs_abort ();
- }
- }
-
/* The tty color needed to be set before the frame's parameter
alist was updated with the new value. This is not true any more,
but we still do this test early on. */
@@ -2709,13 +2687,7 @@ The meaningful parameters are acted upon, i.e. the frame is changed
according to their new values, and are also stored in the frame's
parameter list so that `frame-parameters' will return them.
PARMs that are not meaningful are still stored in the frame's parameter
-list, but are otherwise ignored.
-
-The value of frame parameter FOO can also be accessed
-as a frame-local binding for the variable FOO, if you have
-enabled such bindings for that variable with `make-variable-frame-local'.
-Note that this functionality is obsolete as of Emacs 22.2, and its
-use is not recommended. Explicitly check for a frame-parameter instead. */)
+list, but are otherwise ignored. */)
(Lisp_Object frame, Lisp_Object alist)
{
struct frame *f = decode_live_frame (frame);
diff --git a/src/lisp.h b/src/lisp.h
index 66e9bd56412..061cf179f96 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -2466,7 +2466,7 @@ struct Lisp_Buffer_Objfwd
};
/* struct Lisp_Buffer_Local_Value is used in a symbol value cell when
- the symbol has buffer-local or frame-local bindings. (Exception:
+ the symbol has buffer-local bindings. (Exception:
some buffer-local variables are built-in, with their values stored
in the buffer structure itself. They are handled differently,
using struct Lisp_Buffer_Objfwd.)
@@ -2494,9 +2494,6 @@ struct Lisp_Buffer_Local_Value
/* True means that merely setting the variable creates a local
binding for the current buffer. */
bool_bf local_if_set : 1;
- /* True means this variable can have frame-local bindings, otherwise, it is
- can have buffer-local bindings. The two cannot be combined. */
- bool_bf frame_local : 1;
/* True means that the binding now loaded was found.
Presumably equivalent to (defcell!=valcell). */
bool_bf found : 1;
@@ -3384,7 +3381,7 @@ make_symbol_constant (Lisp_Object sym)
XSYMBOL (sym)->trapped_write = SYMBOL_NOWRITE;
}
-/* Buffer-local (also frame-local) variable access functions. */
+/* Buffer-local variable access functions. */
INLINE int
blv_found (struct Lisp_Buffer_Local_Value *blv)
diff --git a/src/widget.c b/src/widget.c
index 59ed431e23b..97b4196f682 100644
--- a/src/widget.c
+++ b/src/widget.c
@@ -212,16 +212,6 @@ mark_shell_size_user_specified (Widget wmshell)
#endif
-/* Can't have static frame locals because of some broken compilers.
- Normally, initializing a variable like this doesn't work in emacs,
- but it's ok in this file because it must come after lastfile (and
- thus have its data not go into text space) because Xt needs to
- write to initialized data objects too.
- */
-#if 0
-static Boolean first_frame_p = True;
-#endif
-
static void
set_frame_size (EmacsFrame ew)
{
diff --git a/test/src/data-tests.el b/test/src/data-tests.el
index de0b8e68321..757522e399b 100644
--- a/test/src/data-tests.el
+++ b/test/src/data-tests.el
@@ -332,7 +332,6 @@ comparing the subr with a much slower lisp implementation."
;; defvar and defconst modify the local binding [ doesn't matter for us ]
;; various kinds of special internal forwarding objects
;; a couple examples in manual, not enough
-;; frame-local vars
;; variable aliases
;; Tests for watchpoints