;ELC ;;; Compiled ;;; in Emacs version 27.1 ;;; with all optimizations. ;;; This file uses dynamic docstrings, first added in Emacs 19.29. ;;; This file does not contain utf-8 non-ASCII characters, ;;; and so can be loaded in Emacs versions earlier than 23. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (provide 'backquote) #@123 Like `list' but the last argument is the tail of the new list. For example (backquote-list* \='a \='b \='c) => (a b . c) (defalias 'backquote-list*-function #[(first &rest list) "\203*\n\305B\211 A\203\"\f @\305B\241\210\fA A\211\202 \f @\241\210 +\207\n\207" [list rest first newlist last nil] 4 (#$ . 430)]) #@123 Like `list' but the last argument is the tail of the new list. For example (backquote-list* \='a \='b \='c) => (a b . c) (defalias 'backquote-list*-macro '(macro . #[(first &rest list) " B\237\211@ A\211\203. @ A\305\nE \203+\305 @\fE A\211\204\f+\207\207" [first list second rest newlist cons] 4 (#$ . 758)])) (byte-code "\300\301\302K\"\207" [defalias backquote-list* backquote-list*-macro] 3) #@59 Symbol used to represent a backquote or nested backquote. (defconst backquote-backquote-symbol '\` (#$ . 1176)) #@57 Symbol used to represent an unquote inside a backquote. (defconst backquote-unquote-symbol '\, (#$ . 1294)) #@55 Symbol used to represent a splice inside a backquote. (defconst backquote-splice-symbol '\,@ (#$ . 1408)) #@500 Argument STRUCTURE describes a template to build. The whole structure acts as if it were quoted except for certain places where expressions are evaluated and inserted or spliced in. For example: b => (ba bb bc) ; assume b has this value \=`(a b c) => (a b c) ; backquote acts like quote \=`(a ,b c) => (a (ba bb bc) c) ; insert the value of b \=`(a ,@b c) => (a ba bb bc c) ; splice in the value of b Vectors work just like lists. Nested backquotes are permitted. (defalias 'backquote '(macro . #[(structure) "\301!A\207" [structure backquote-process] 2 (#$ . 1521)])) (byte-code "\300\301\302K\"\207" [defalias \` backquote] 3) #@92 Process a (un|back|splice)quote inside a backquote. This simply recurses through the body. (defalias 'backquote-delay-process #[(s level) "\303\304\305@DBC\306A \"\"\211\242\305=\203\304\202\307\n)B\207" [s level exp backquote-listify 0 quote backquote-process 1] 6 (#$ . 2192)]) #@441 Process the body of a backquote. S is the body. Returns a cons cell whose cdr is piece of code which is the macro-expansion of S, and whose car is a small integer whose value can either indicate that the code is constant (0), or not (1), or returns a list which should be spliced into its environment (2). LEVEL is only used internally and indicates the nesting level: 0 (the default) is for the toplevel nested inside a single backquote. (defalias 'backquote-process #[(s &optional level) "\204\306\307 !\203W\310\311 \312\"\"\211@\306U\203!\306 B\202U\313\nA<\204/\314\nAD\202T\nA@\315=\203?\316\nAAB\202T\nA@\311=\203O\314\nAAB\202T\317\320\nAEB)\207 :\204u\306 \203l \321=\204l 9\204p \202s\322 DB\207 @ =\203\247\306X\203\241 G\323V\203\216\324\325 \"\207 A@\242\322=\203\233\306\202\234\313 A@B\207\326 S\"\207 @\f=\203\314\306X\203\306 G\323V\203\300\324\327 \"\207\323 A@B\207\326 S\"\207 @ =\203\331\326 T\"\207 \312\211\211\211\211 \211:\203H@ =\204H@ =\204H\310@\"\211@\323U\2038\204 \312  \203*\330 \331\"BAB\312 \202? B A\211\202\354\204R \203`\330 \310\"\"BA\204o@\242\f=\203w\311\237B\202z@\203\213\330\313B\"\242\322=\203\227\306\202\230\313.B\207" [level s n backquote-unquote-symbol backquote-splice-symbol backquote-backquote-symbol 0 vectorp backquote-process append nil 1 vconcat list vector apply #'vector t quote 2 error "Multiple args to , are not supported: %S" backquote-delay-process "Multiple args to ,@ are not supported: %S" backquote-listify (0) expression lists firstlist item rest] 7 (#$ . 2486)]) (defalias 'backquote-listify #[(list old-tail) "\306A \306@\307U\203\310\f!\306 :\203B @ A \2040\2040\n@\307U\2048\nA B\202\310\nA!\fB\202\f\203|\204N\311\fD \203x A\206c @:\205c @@ =\211\203m\312\202n\313\314 \fC\")B\202\f\202\301 B,\207" [old-tail list item list-tail tail heads nil 0 eval quote backquote-list* cons append backquote-splice-symbol use-list*] 5]) (byte-code "\300\301\302\303#\210\300\301\304\305#\210\300\306\302\307#\210\300\306\304\305#\207" [put \, function-documentation "See `\\=`' (also `pcase') for the usage of `,'." reader-construct t \,@ "See `\\=`' for the usage of `,@'."] 4)