Function: local-variable-if-set-p

local-variable-if-set-p is a function defined in data.c.

Signature

(local-variable-if-set-p VARIABLE &optional BUFFER)

Documentation

Non-nil if VARIABLE is local in buffer BUFFER when set there.

BUFFER defaults to the current buffer.

More precisely, return non-nil if either VARIABLE already has a local value in BUFFER, or if VARIABLE is automatically buffer-local (see make-variable-buffer-local).

View in manual

Source Code

// Defined in /usr/src/emacs/src/data.c
{
  struct Lisp_Symbol *sym;

  CHECK_SYMBOL (variable);
  sym = XSYMBOL (variable);

 start:
  switch (sym->u.s.redirect)
    {
    case SYMBOL_VARALIAS: sym = indirect_variable (sym); goto start;
    case SYMBOL_PLAINVAL: return Qnil;
    case SYMBOL_LOCALIZED:
      {
	struct Lisp_Buffer_Local_Value *blv = SYMBOL_BLV (sym);
	if (blv->local_if_set)
	  return Qt;
	XSETSYMBOL (variable, sym); /* Update in case of aliasing.  */
	return Flocal_variable_p (variable, buffer);
      }
    case SYMBOL_FORWARDED:
      /* All BUFFER_OBJFWD slots become local if they are set.  */
      return (BUFFER_OBJFWDP (SYMBOL_FWD (sym)) ? Qt : Qnil);
    default: emacs_abort ();
    }
}