Function: add-to-list--anon-cmacro

add-to-list--anon-cmacro is a function defined in subr.el.gz.

Signature

(add-to-list--anon-cmacro EXP LIST-VAR ELEMENT &optional APPEND COMPARE-FN)

Source Code

;; Defined in /usr/src/emacs/lisp/subr.el.gz
;; Could not find source code, showing raw function object.
#[(exp list-var element &optional append compare-fn)
  ((ignore list-var element append compare-fn)
   (if
       (or (not (eq 'quote (car-safe list-var)))
	   (special-variable-p (cadr list-var))
	   (not (macroexp-const-p append)))
       exp
     (let*
	 ((sym (cadr list-var)) (append (eval append lexical-binding))
	  (msg
	   (format-message
	    "`add-to-list' can't use lexical var `%s'; use `push' or `cl-pushnew'"
	    sym))
	  (warnfun
	   (lambda nil
	     (when (assq sym byte-compile--lexical-environment)
	       (byte-compile-report-error msg :fill))))
	  (code
	   (macroexp-let2 macroexp-copyable-p x element
	     `(if
		  ,(if compare-fn
		       (progn
			 (require 'cl-lib)
			 `(cl-member ,x ,sym :test ,compare-fn))
		     `(member ,x ,sym))
		  ,sym
		,(if append `(setq ,sym (append ,sym (list ,x)))
		   `(push ,x ,sym))))))
       (if (not (macroexp-compiling-p)) code
	 `(progn (macroexp--funcall-if-compiled ',warnfun) ,code)))))
  (t)]