[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Watchpoints for emacs lisp.

From: alin.s
Subject: Re: Watchpoints for emacs lisp.
Date: Sat, 15 May 2010 04:16:47 -0700 (PDT)

Stefan Monnier wrote:
>> I insert to the struct Lisp_Symbol a field :watched: .
> I think a good starting point is to use the existing `constant'
> field and just add a special WATCHED value to it (it already has 2bits
> but only uses 1, so you don't even need to make the field any larger).

Here is the symbol structure. Can you point your finger on the unused bit ?

/* In a symbol, the markbit of the plist is used as the gc mark bit */

struct Lisp_Symbol
  unsigned gcmarkbit : 1;

  /* Non-zero means symbol serves as a variable alias.  The symbol
     holding the real value is found in the value slot.  */
  unsigned indirect_variable : 1;

  /* Non-zero means symbol is constant, i.e. changing its value
     should signal an error.  */
  unsigned constant : 1;

  /* Interned state of the symbol.  This is an enumerator from
     enum symbol_interned.  */
  unsigned interned : 2;

  /* The symbol's name, as a Lisp string.

     The name "xname" is used to intentionally break code referring to
     the old field "name" of type pointer to struct Lisp_String.  */
  Lisp_Object xname;

  /* Value of the symbol or Qunbound if unbound.  If this symbol is a
     defvaralias, `value' contains the symbol for which it is an
     alias.  Use the SYMBOL_VALUE and SET_SYMBOL_VALUE macros to get
     and set a symbol's value, to take defvaralias into account.  */
  Lisp_Object value;

  /* Function value of the symbol or Qunbound if not fboundp.  */
  Lisp_Object function;

  /* The symbol's property list.  */
  Lisp_Object plist;

  /* Next symbol in obarray bucket, if the symbol is interned.  */
  struct Lisp_Symbol *next;

View this message in context: 
Sent from the Emacs - Dev mailing list archive at Nabble.com.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]