Function: js--make-merged-item
js--make-merged-item is a byte-compiled function defined in js.el.gz.
Signature
(js--make-merged-item ITEM CHILD NAME-PARTS)
Documentation
Helper function for js--splice-into-items.
Return a new item that is the result of merging CHILD into ITEM. NAME-PARTS is a list of parts of the name of CHILD that we haven't consumed yet.
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/js.el.gz
(defun js--make-merged-item (item child name-parts)
"Helper function for `js--splice-into-items'.
Return a new item that is the result of merging CHILD into
ITEM. NAME-PARTS is a list of parts of the name of CHILD
that we haven't consumed yet."
(js--debug "js--make-merged-item: {%s} into {%s}"
(js--pitem-format child)
(js--pitem-format item))
;; If the item we're merging into isn't a class, make it into one
(unless (consp (js--pitem-type item))
(js--debug "js--make-merged-item: changing dest into class")
(setq item (make-js--pitem
:children (list item)
;; Use the child's class-style if it's available
:type (if (atom (js--pitem-type child))
js--dummy-class-style
(js--pitem-type child))
:name (js--pitem-strname item))))
;; Now we can merge either a function or a class into a class
(cons (cond
((cdr name-parts)
(js--debug "js--make-merged-item: recursing")
;; if we have more name-parts to go before we get to the
;; bottom of the class hierarchy, call the merger
;; recursively
(js--splice-into-items (car item) child
(cdr name-parts)))
((atom (js--pitem-type child))
(js--debug "js--make-merged-item: straight merge")
;; Not merging a class, but something else, so just prepend
;; it
(cons child (car item)))
(t
;; Otherwise, merge the new child's items into those
;; of the new class
(js--debug "js--make-merged-item: merging class contents")
(append (car child) (car item))))
(cdr item)))