• Stefan Monnier's avatar
    Add classes as run-time descriptors of cl-structs. · 872481d9
    Stefan Monnier authored
    * lisp/emacs-lisp/cl-preloaded.el (cl--struct-get-class): New function.
    (cl--make-slot-desc): New constructor.
    (cl--plist-remove, cl--struct-register-child): New functions.
    (cl-struct-define): Rewrite.
    (cl-structure-class, cl-structure-object, cl-slot-descriptor)
    (cl--class): New structs.
    (cl--struct-default-parent): Initialize it here.
    * lisp/emacs-lisp/cl-macs.el (cl--find-class): New macro.
    (cl-defsubst, cl--defsubst-expand, cl--sublis): Move before first use.
    (cl--struct-default-parent): New var.
    (cl-defstruct): Adjust to new representation of classes; add
    default parent.  In accessors, signal `wrong-type-argument' rather than
    a generic error.
    (cl-struct-sequence-type, cl-struct-slot-info)
    (cl-struct-slot-offset): Rewrite.
    * lisp/emacs-lisp/cl-generic.el (cl--generic-struct-specializers)
    (cl-generic-generalizers): Rewrite.
    * src/alloc.c (purecopy): Handle hash-tables.
    
    * lisp/emacs-lisp/debug.el (debug--implement-debug-on-entry):
    Bind inhibit-debug-on-entry here...
    (debug): Instead of here.
    
    * lisp/emacs-lisp/macroexp.el (macroexp--debug-eager): New var.
    (internal-macroexpand-for-load): Use it.
    
    * lwlib/xlwmenu.c (pop_up_menu): Remove debugging code.
    872481d9
xlwmenu.c 78.6 KB