403Webshell
Server IP : 217.160.0.212  /  Your IP : 216.73.216.71
Web Server : Apache
System : Linux www 6.18.52-i1-ampere #1203 SMP Mon Sep 14 18:29:59 CEST 2026 aarch64
User : sws1073854427 ( 1073854427)
PHP Version : 8.4.23
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /usr/share/emacs/28.2/lisp/emacs-lisp/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/share/emacs/28.2/lisp/emacs-lisp/gv.elc
;ELC
;;; Compiled
;;; in Emacs version 28.2
;;; with all optimizations.



(byte-code "\300\301!\210\302\303\304\"\207" [require macroexp define-error gv-invalid-place "%S is not a valid place expression"] 3)
#@455 Build the code that applies DO to PLACE.
PLACE must be a valid generalized variable.
DO must be a function; it will be called with 2 arguments: GETTER and SETTER,
where GETTER is a (copyable) Elisp expression that returns the value of PLACE,
and SETTER is a function which returns the code to set PLACE when called
with a (not necessarily copyable) Elisp expression that returns the value to
set it to.
DO must return an Elisp expression.

(fn PLACE DO)
(defalias 'gv-get #[514 "9\203
\211\301\302\"\"\207:\204\303\304C\"\207@\305\306\307#\211\203+\310A#\207\311\"\211=\203F\312N\203F\310\312N\211A#\262\211=\203_\313!\203_K9\203_KAB\262\211=\203\2059\203u\314N\203u\315\316\"\207\317!\320\301\321\"	A$\207\322\"\207" [macroexpand-all-environment make-closure #[257 "\301\300E\207" [V0 setq] 4 "\n\n(fn V)"] signal gv-invalid-place function-get gv-expander autoload apply macroexpand-1 compiler-macro fboundp setf-method error "Incompatible place needs recompilation: %S" gv-setter gv--defsetter #[128 "\300B\207" [V0] 3 "\n\n(fn &rest ARGS)"] gv-get] 11 (#$ . 219)])
#@79 Return the symbol where the (setf NAME) function should be placed.

(fn NAME)
(defalias 'gv-setter #[257 "\211\300N\203\301\302\"\210\303\304\305\"!\207" [gv-expander error "gv-expander conflicts with (setf %S)" intern format "(setf %s)"] 5 (#$ . 1344)])
#@512 Build the code manipulating the generalized variable PLACE.
GETTER will be bound to a copyable expression that returns the value
of PLACE.
SETTER will be bound to a function that takes an expression V and returns
a new expression that sets PLACE to V.
BODY should return some Elisp expression E manipulating PLACE via GETTER
and SETTER.
The returned value will then be an Elisp expression that first evaluates
all the parts of PLACE that can be evaluated and then runs E.

(fn (GETTER SETTER) PLACE &rest BODY)
(defalias 'gv-letplace '(macro . #[642 "\300\301BBE\207" [gv-get lambda] 8 (#$ . 1610)]))
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put gv-letplace lisp-indent-function 2 put edebug-form-spec (sexp form def-body)] 5)
#@266 Use HANDLER to handle NAME as a generalized var.
NAME is a symbol: the name of a function, macro, or special form.
HANDLER is a function which takes an argument DO followed by the same
arguments as NAME.  DO is a function as defined in `gv-get'.

(fn NAME HANDLER)
(defalias 'gv-define-expander '(macro . #[514 "\300\301D\302F\207" [function-put quote 'gv-expander] 6 (#$ . 2368)]))
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put gv-define-expander lisp-indent-function 1 put edebug-form-spec (sexp form)] 5)
#@47 

(fn SYMBOL NAME ARGS HANDLER &optional FIX)
(defalias 'gv--defun-declaration #[1284 "\300\301\302B\211:\203&\211\242\211\303\267\202\243\211:\203|\211\242\211\304=\203q\243\211:\203f\211\242\211:\203Z\211\242\243\211\204N\243\305\304BBBE\262\266\202\202a\"\266\202\202a\f\"\262\202l
\"\262\202w\f\n\"\262\202\222\2119\203\214\305\n\306\nDE\202\222	\"\262\202\243\211:\203\376\211\242\211\304=\203\363\243\211:\203\350\211\242\211:\203\334\211\242\243\211\204\320\243\307BBBB\262\266\202\202\343\"\266\202\202\343\f\"\262\202\356
\"\262\202\371\f\n\"\262\202\2119\203\310\n		F\202	\"\262\202\n\"\262\266\202\202.	\"\266\202E\207" [progn :autoload-end #[514 "\300\301#\210\302\207" [message "Unknown %s declaration %S" nil] 6 "\n\n(fn SYMBOL HANDLER)"] #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (gv-expander 20 gv-setter 151)) lambda gv-define-expander function gv-define-setter gv-define-simple-setter] 22 (#$ . 2904)])
#@19 

(fn &rest ARGS)
(defalias 'gv--expander-defun-declaration #[128 "\300\301\302#\207" [apply gv--defun-declaration gv-expander] 5 (#$ . 4002)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put gv--expander-defun-declaration speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@19 

(fn &rest ARGS)
(defalias 'gv--setter-defun-declaration #[128 "\300\301\302#\207" [apply gv--defun-declaration gv-setter] 5 (#$ . 4309)])
(byte-code "\302\303\304\305#\306\303\307\310#\210\311\236\204\311\312D\211	B\211B\210\313\236\204)\313\303DB\314\315N\306\311\315#\210\306\313\315#\210\207" [defun-declarations-alist macro-declarations-alist function-put gv--setter-defun-declaration speed -1 put byte-optimizer byte-compile-inline-expand gv-expander gv--expander-defun-declaration gv-setter compiler-macro edebug-declaration-spec] 6)
#@317 Helper function used by code generated by `gv-define-setter'.
NAME is the name of the getter function.
SETTER is a function that generates the code for the setter.
NAME accept ARGS as arguments and SETTER accepts (NEWVAL . ARGS).
VARS is used internally for recursive calls.

(fn NAME SETTER DO ARGS &optional VARS)
(defalias 'gv--defsetter #[1284 "\204\211\237B\300\301#\"\207@\302!\203\211\202\"\303\304!\305AB%=\2038\207\306DC\"\207" [make-closure #[257 "\302\300\301#\207" [V0 V1 apply] 5 "\n\n(fn V)"] macroexp-const-p make-symbol "v" gv--defsetter macroexp-let*] 14 (#$ . 4871)])
#@629 Define a setter method for generalized variable NAME.
This macro is an easy-to-use substitute for `gv-define-expander' that works
well for simple place forms.
Assignments of VAL to (NAME ARGS...) are expanded by binding the argument
forms (VAL ARGS...) according to ARGLIST, then executing BODY, which must
return a Lisp form that does the assignment.
The first arg in ARGLIST (the one that receives VAL) receives an expression
which can do arbitrary things, whereas the other arguments are all guaranteed
to be pure and copyable.  Example use:
  (gv-define-setter aref (v a i) \=`(aset ,a ,i ,v))

(fn NAME ARGLIST &rest BODY)
(defalias 'gv-define-setter '(macro . #[642 "\300\301\302\303\304\305	D\301		BB\306BBBFE\207" [gv-define-expander lambda (do &rest args) (declare-function gv--defsetter "gv" (name setter do args &optional vars)) gv--defsetter quote (do args)] 13 (#$ . 5497)]))
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put gv-define-setter lisp-indent-function 2 put edebug-form-spec (&define [&name symbolp "@gv-setter"] sexp def-body)] 5)
#@533 Define a simple setter method for generalized variable NAME.
This macro is an easy-to-use substitute for `gv-define-expander' that works
well for simple place forms.  Assignments of VAL to (NAME ARGS...) are
turned into calls of the form (SETTER ARGS... VAL).

If FIX-RETURN is non-nil, then SETTER is not assumed to return VAL and
instead the assignment is turned into something equivalent to
  (let ((temp VAL))
    (SETTER ARGS... temp)
    temp)
so as to preserve the semantics of `setf'.

(fn NAME SETTER &optional FIX-RETURN)
(defalias 'gv-define-simple-setter '(macro . #[770 "\242\300=\203\f\301\302\"\210\303\304\203,\305\306\307\310\311\312\313\314\fDCB\315B\316BBCB\257\2028\311\313\314DCB\317BCBF\207" [lambda message "Use `gv-define-setter' or name %s's setter function" gv-define-setter (val &rest args) macroexp-let2 nil v val \` progn \, quote ((\,@ args) (\, v)) ((\, v)) ((\,@ args) (\, val))] 15 (#$ . 6581)]))
(put 'gv-define-simple-setter 'edebug-form-spec '(sexp (&or symbolp lambda-expr) &optional sexp))
#@321 Set each PLACE to the value of its VAL.
This is a generalized version of `setq'; the PLACEs may be symbolic
references such as (car x) or (aref x i), as well as plain symbols.
For example, (setf (cadr x) y) is equivalent to (setcar (cdr x) y).
The return value is the last VAL in the list.

(fn PLACE VAL PLACE VAL ...)
(defalias 'setf '(macro . #[128 "\300G\301\"\302U\204\303\304\305GD\"\210\211\203,\211AA\204,\211A\262\242@\306\307\310\"\"\207\311\203F\305\211A\262\242\211A\262\242EB\262\202-\312\237B\207" [logand 1 0 signal wrong-number-of-arguments setf gv-get make-closure #[514 "\211\300!\207" [V0] 4 "\n\n(fn GETTER SETTER)"] nil progn] 8 (#$ . 7627)]))
(byte-code "\300\301\302\303#\210\304\305\306\"\210\300\307\310\311#\210\312\313\310\314#\312\315\310\316#\312\317\310\320#\312\321\310\322#\312\323\310\324#\312\325\310\326#\312\327\310\330#\312\331\310\332#\312\333\310\334#\312\335\310\336#\312\337\310\340#\300\341\310\342#\210\312\343\310\344#\312\345\310\346#\312\347\310\350#\300\351\310\352#\210\312\353\310\354#\312\355\310\356#\312\357\310\360#\312\361\310\362#\312\363\310\364#\312\365\310\366#\312\367\310\370#\312\371\310\372#\312\373\310\374#\312\375\310\376#\312\377\310\201@#\312\201A\310\201B#\312\201C\310\201D#\312\201E\310\201F#\312\201G\310\201H#\312\201I\310\201J#\312\201K\310\201L#\312\201M\310\201N#\312\201O\310\201P#\312\201Q\310\201R#\312\201S\310\201T#\312\201U\310\201V#\300\201W\310\201X#\210\201Y\300\201Z\310\201Z!#\210\300\201[\310\201[!#\266\300\201\\\310\201]#\210\300\201^\310\201_#\210\300\201`\310\201a#\207" [put setf edebug-form-spec (&rest [gv-place form]) def-edebug-elem-spec gv-place (form) edebug-after gv-expander #[1028 "\300\301\302$\"\207" [gv-get make-closure #[514 "\300\303\301\302F\304\305\301\302$\"\207" [V0 V1 V2 edebug-after make-closure #[257 "\303\300\301\302!F\207" [V0 V1 V2 edebug-after] 6 "\n\n(fn STORE)"]] 9 "\n\n(fn GETTER SETTER)"]] 11 "\n\n(fn DO BEFORE INDEX PLACE)"] function-put aref #[385 "\300\301\302$\207" [gv--defsetter aref #[385 "\300\301C\"B\207" [aset append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] char-table-range #[385 "\300\301\302$\207" [gv--defsetter char-table-range #[385 "\300\301C\"B\207" [set-char-table-range append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] car #[385 "\300\301\302$\207" [gv--defsetter car #[385 "\300\301C\"B\207" [setcar append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] cdr #[385 "\300\301\302$\207" [gv--defsetter cdr #[385 "\300\301C\"B\207" [setcdr append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] caar #[385 "\300\301\302$\207" [gv--defsetter caar #[514 "\300\301DE\207" [setcar car] 5 "\n\n(fn VAL X)"]] 7 "\n\n(fn DO &rest ARGS)"] cadr #[385 "\300\301\302$\207" [gv--defsetter cadr #[514 "\300\301DE\207" [setcar cdr] 5 "\n\n(fn VAL X)"]] 7 "\n\n(fn DO &rest ARGS)"] cdar #[385 "\300\301\302$\207" [gv--defsetter cdar #[514 "\300\301DE\207" [setcdr car] 5 "\n\n(fn VAL X)"]] 7 "\n\n(fn DO &rest ARGS)"] cddr #[385 "\300\301\302$\207" [gv--defsetter cddr #[514 "\300\301DE\207" [setcdr cdr] 5 "\n\n(fn VAL X)"]] 7 "\n\n(fn DO &rest ARGS)"] elt #[385 "\300\301\302$\207" [gv--defsetter elt #[771 "\300\301D\302\303EE\304FF\207" [if listp setcar nthcdr aset] 10 "\n\n(fn STORE SEQ N)"]] 7 "\n\n(fn DO &rest ARGS)"] get #[385 "\300\301\302$\207" [gv--defsetter get #[385 "\300\301C\"B\207" [put append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] gethash #[385 "\300\301\302$\207" [gv--defsetter gethash #[1027 "\300F\207" [puthash] 8 "\n\n(fn VAL K H &optional D)"]] 7 "\n\n(fn DO &rest ARGS)"] nth #[771 "\300E\301!\203\211\202\302\303!\304D\305\306\"\"=\203!\207\307DC\"\207" [nthcdr macroexp-const-p make-symbol "c" car make-closure #[257 "\301\300E\207" [V0 setcar] 4 "\n\n(fn V)"] macroexp-let*] 10 "\n\n(fn DO IDX LIST)"] symbol-function #[385 "\300\301\302$\207" [gv--defsetter symbol-function #[385 "\300\301C\"B\207" [fset append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] symbol-plist #[385 "\300\301\302$\207" [gv--defsetter symbol-plist #[385 "\300\301C\"B\207" [setplist append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] symbol-value #[385 "\300\301\302$\207" [gv--defsetter symbol-value #[385 "\300\301C\"B\207" [set append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] nthcdr #[771 "\300!\203\n\202
\301\302!\303\304\305#\"=\203\207\306DC\"\207" [macroexp-const-p make-symbol "idx" gv-get make-closure #[514 "\300\302\301E\303\304\301$\"\207" [V0 V1 nthcdr make-closure #[257 "\303\304\300\305BB\302!\306\307\310\300D\301EEF\207" [V0 V1 V2 if <= (0) setcdr nthcdr 1-] 8 "\n\n(fn V)"]] 9 "\n\n(fn GETTER SETTER)"] macroexp-let*] 10 "\n\n(fn DO N PLACE)"] default-value #[385 "\300\301\302$\207" [gv--defsetter default-value #[385 "\300\301C\"B\207" [set-default append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] frame-parameter #[385 "\300\301\302$\207" [gv--defsetter frame-parameter #[385 "\300!\203\n\202
\301\302!\303\304\305C\"BE=\203\207\306DC\"\207" [macroexp-const-p make-symbol #1="v" progn set-frame-parameter append macroexp-let*] 8 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] terminal-parameter #[385 "\300\301\302$\207" [gv--defsetter terminal-parameter #[385 "\300\301C\"B\207" [set-terminal-parameter append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] keymap-parent #[385 "\300\301\302$\207" [gv--defsetter keymap-parent #[385 "\300\301C\"B\207" [set-keymap-parent append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] match-data #[385 "\300\301\302$\207" [gv--defsetter match-data #[385 "\300!\203\n\202
\301\302!\303\304\305C\"BE=\203\207\306DC\"\207" [macroexp-const-p make-symbol #1# progn set-match-data append macroexp-let*] 8 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] overlay-get #[385 "\300\301\302$\207" [gv--defsetter overlay-get #[385 "\300\301C\"B\207" [overlay-put append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] overlay-start #[385 "\300\301\302$\207" [gv--defsetter overlay-start #[514 "\300\301\302DFE\207" [progn move-overlay overlay-end] 8 "\n\n(fn STORE OV)"]] 7 "\n\n(fn DO &rest ARGS)"] overlay-end #[385 "\300\301\302$\207" [gv--defsetter overlay-end #[514 "\300\301\302DFE\207" [progn move-overlay overlay-start] 7 "\n\n(fn STORE OV)"]] 7 "\n\n(fn DO &rest ARGS)"] process-buffer #[385 "\300\301\302$\207" [gv--defsetter process-buffer #[385 "\300\301C\"B\207" [set-process-buffer append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] process-filter #[385 "\300\301\302$\207" [gv--defsetter process-filter #[385 "\300\301C\"B\207" [set-process-filter append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] process-sentinel #[385 "\300\301\302$\207" [gv--defsetter process-sentinel #[385 "\300\301C\"B\207" [set-process-sentinel append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] process-get #[385 "\300\301\302$\207" [gv--defsetter process-get #[385 "\300\301C\"B\207" [process-put append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] window-parameter #[385 "\300\301\302$\207" [gv--defsetter window-parameter #[385 "\300\301C\"B\207" [set-window-parameter append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] window-buffer #[385 "\300\301\302$\207" [gv--defsetter window-buffer #[513 "\300!\203\n\202
\301\302!\303\304EE=\203\207\305DC\"\207" [macroexp-const-p make-symbol #1# progn set-window-buffer macroexp-let*] 7 "\n\n(fn V &optional W)"]] 7 "\n\n(fn DO &rest ARGS)"] window-display-table #[385 "\300\301\302$\207" [gv--defsetter window-display-table #[513 "\300!\203\n\202
\301\302!\303\304EE=\203\207\305DC\"\207" [macroexp-const-p make-symbol #1# progn set-window-display-table macroexp-let*] 7 "\n\n(fn V &optional W)"]] 7 "\n\n(fn DO &rest ARGS)"] window-dedicated-p #[385 "\300\301\302$\207" [gv--defsetter window-dedicated-p #[513 "\300E\207" [set-window-dedicated-p] 5 "\n\n(fn V &optional W)"]] 7 "\n\n(fn DO &rest ARGS)"] window-hscroll #[385 "\300\301\302$\207" [gv--defsetter window-hscroll #[513 "\300E\207" [set-window-hscroll] 5 "\n\n(fn V &optional W)"]] 7 "\n\n(fn DO &rest ARGS)"] window-point #[385 "\300\301\302$\207" [gv--defsetter window-point #[513 "\300E\207" [set-window-point] 5 "\n\n(fn V &optional W)"]] 7 "\n\n(fn DO &rest ARGS)"] window-start #[385 "\300\301\302$\207" [gv--defsetter window-start #[513 "\300E\207" [set-window-start] 5 "\n\n(fn V &optional W)"]] 7 "\n\n(fn DO &rest ARGS)"] buffer-local-value #[385 "\300\301\302$\207" [gv--defsetter buffer-local-value #[771 "\300!\203\n\202
\301\302!\303\304\305DEE=\203\207\306DC\"\207" [macroexp-const-p make-symbol #1# with-current-buffer set make-local-variable macroexp-let*] 9 "\n\n(fn VAL VAR BUF)"]] 7 "\n\n(fn DO &rest ARGS)"] alist-get #[1539 "\300!\203\n\202
\301\302!\303\304\305\n&\"=\203&\207\306DC\"\207" [macroexp-copyable-p make-symbol "k" gv-get make-closure #[514 "\305\306\303\307\310\303\311BBDE\312\304\303F\313\304EF\314!\203 \211\202#\315\316!\300\301\204.\317D\2025\305\317D\301F\320\321\301\302\304\n\n	&\"=\203J\207\322DC\"\207" [V0 V1 V2 V3 V4 if and not eq ('eq) assoc assq macroexp-const-p make-symbol #2="p" cdr make-closure #[257 "\306!\203\n\211\202
\307\310!\311\305\312\305E\304\313\314\305\313\302	EE\303E!F\315\301\204*\202i\316\300\"\204J\242\317=\203V\300\242\317=\203V\316A@\300A@\"\203V\311\305\304\320\305\303E!E\202i\321\322\316\300EDD\305\304\320\305\303E!DEE\262=\203t\207\323DC\"\207" [V0 V1 V2 V3 V4 V5 macroexp-const-p make-symbol #1# if setcdr cons setq progn eql quote delq cond not macroexp-let*] 12 "\n\n(fn V)"] macroexp-let*] 14 "\n\n(fn GETTER SETTER)"] macroexp-let*] 16 "\n\n(fn DO KEY ALIST &optional DEFAULT REMOVE TESTFN)"] plist-get #[771 "\300!\203\n\211\202
\301\302!\303\304\305#\"=\203\207\306DC\"\207" [macroexp-copyable-p make-symbol "key" gv-get make-closure #[514 "\302\303\301ED\304!\203\211\202\305\306!\300\307D\310\311\301%\"=\203)\207\312DC\"\207" [V0 V1 cdr plist-member macroexp-const-p make-symbol #2# car make-closure #[257 "\304\303\305\303E\302\306\300\306\301EE!F\207" [V0 V1 V2 V3 if setcar cons] 10 "\n\n(fn VAL)"] macroexp-let*] 12 "\n\n(fn GETTER SETTER)"] macroexp-let*] 10 "\n\n(fn DO PLIST PROP)"] progn #[385 "\300!\301!@\204\302\"\207\303\304\302\"C\"B\207" [butlast last gv-get progn append] 10 "\n\n(fn DO &rest EXPS)"] #[257 "\300\301\"\207" [make-closure #[642 "\300\301\302\303!\"!BB\207" [V0 macroexp-unprogn gv-get macroexp-progn] 9 "\n\n(fn DO BINDINGS &rest BODY)"]] 4 "\n\n(fn LETSYM)"] let let* if #[899 "\203
\301\302\303\"!\203\"\304\305\"\306\305\307!	\"!BBB\207\310\311!\304\305\312\313\"\"\305\307!\312\314\"\"F\315!\203E\211\202H\316\317!\320\321DD\312\322\"\"=\203[\207\323DC\"\207" [lexical-binding macroexp-small-p dummy #[257 "\300\207" [dummy] 2 "\n\n(fn _)"] if gv-get macroexp-unprogn macroexp-progn gensym "v" make-closure #[514 "\301\302\303E\302\300C\300!EE\207" [V0 cons lambda nil] 8 "\n\n(fn GETTER SETTER)"] #[514 "\301\302\303E\302\300C\300!EE\207" [V0 cons lambda nil] 8 "\n\n(fn GETTER SETTER)"] macroexp-const-p make-symbol #3="gv" funcall car #[257 "\301\302\300DE\207" [V0 funcall cdr] 4 "\n\n(fn V)"] macroexp-let*] 13 "\n\n(fn DO TEST THEN &rest ELSE)"] cond #[385 "\203
\301\302\303\"!\203\304\305\306\307\"\"B\207\310\311!\304\305\306\312\"\"B\313!\203-\211\2020\314\315!\316\317DD\306\320\"\"=\203B\207\321DC\"\207" [lexical-binding macroexp-small-p dummy #[257 "\300\207" [dummy] 2 "\n\n(fn _)"] cond mapcar make-closure #[257 "\211A\203\211@\301\302\303A!\300\"!B\207\302@\300\"\207" [V0 macroexp-unprogn gv-get macroexp-progn] 6 "\n\n(fn BRANCH)"] gensym "v" #[257 "\211A\203\211@\301\302\303A!\304\305\300\"\"!B\207\302@\304\306\300\"\"\207" [V0 macroexp-unprogn gv-get macroexp-progn make-closure #[514 "\301\302\303E\302\300C\300!EE\207" [V0 cons lambda nil] 8 "\n\n(fn GETTER SETTER)"] #[514 "\301\302\303E\302\300C\300!EE\207" [V0 cons lambda nil] 8 "\n\n(fn GETTER SETTER)"]] 8 "\n\n(fn BRANCH)"] macroexp-const-p make-symbol #3# funcall car #[257 "\301\302\300DE\207" [V0 funcall cdr] 4 "\n\n(fn V)"] macroexp-let*] 10 "\n\n(fn DO &rest BRANCHES)"] error #[385 "\300B\301\302\"\"\207" [error make-closure #[257 "\301\302\300BE\207" [V0 progn error] 5 "\n\n(fn V)"]] 7 "\n\n(fn DO &rest ARGS)"]] 42)
#@278 Special place described by its setter and getter.
GETTER and SETTER (typically obtained via `gv-letplace') get and
set that place.  I.e. This macro allows you to do the "reverse" of what
`gv-letplace' does.
This macro only makes sense when used in a place.

(fn GETTER SETTER)
(defalias 'gv-synthetic-place '(macro . #[514 "\207" [] 3 (#$ . 20443)]))
(byte-code "\300\301\302\303#\300\207" [function-put gv-synthetic-place gv-expander funcall] 4)
#@310 Special place which delays the `gv-invalid-place' error to run-time.
It behaves just like PLACE except that in case PLACE is not a valid place,
the `gv-invalid-place' error will only be signaled at run-time when (and if)
we try to use the setter.
This macro only makes sense when used in a place.

(fn PLACE)
(defalias 'gv-delay-error '(macro . #[257 "\207" [] 2 (#$ . 20898)]))
(byte-code "\300\301\302\303#\304\305\302\306#\210\304\307\302\310#\207" [function-put gv-delay-error gv-expander #[514 "\3001\n\301\"0\207\302\303\"\"\207" [(gv-invalid-place) gv-get make-closure #[257 "\301\302\300@D\302\300ADE\207" [V0 signal quote] 5 "\n\n(fn _)"]] 8 "\n\n(fn DO PLACE)"] put cons #[771 "\300\301\302#\"\207" [gv-get make-closure #[514 "\302\301\303\304\300$\"\207" [V0 V1 gv-get make-closure #[514 "\300\303\301E\304\305\302#\"\207" [V0 V1 V2 cons make-closure #[257 "\302!\203\n\211\202
\303\304!\305\300\306D!\301\307D!F=\203!\207\310DC\"\207" [V0 V1 macroexp-const-p make-symbol #1="v" progn car cdr macroexp-let*] 7 "\n\n(fn V)"]] 8 "\n\n(fn DGETTER DSETTER)"]] 9 "\n\n(fn AGETTER ASETTER)"]] 9 "\n\n(fn DO A D)"] logand #[642 "\300\301\302#\"\207" [gv-get make-closure #[514 "\301A\203\302\301B\202
\301@\303!\203\211\202\304\305!\300\302E\306\307$\"=\2030\207\310DC\"\207" [V0 V1 logand macroexp-copyable-p make-symbol "mask" make-closure #[257 "\303!\203\n\211\202
\304\305!\306\301\307\310\302E\310\300\311\302DEE!E=\203%\207\312DC\"\207" [V0 V1 V2 macroexp-const-p make-symbol #1# progn logior logand lognot macroexp-let*] 10 "\n\n(fn V)"] macroexp-let*] 11 "\n\n(fn GETTER SETTER)"]] 9 "\n\n(fn DO PLACE &rest MASKS)"]] 5)
#@258 Return a reference to PLACE.
This is like the `&' operator of the C language.
Note: this only works reliably with lexical binding mode, except for very
simple PLACEs such as (symbol-function \='foo) which will also work in dynamic
binding mode.

(fn PLACE)
(defalias 'gv-ref '(macro . #[257 "\301\302\"\204\211\242\303=\203\207\304\305\"\207" [lexical-binding gv-get #[514 "\300\301\302E\301\303\304!EE\207" [cons lambda nil (gv--val) gv--val] 8 "\n\n(fn GETTER SETTER)"] cons macroexp-warn-and-return "Use of gv-ref probably requires lexical-binding"] 5 (#$ . 22604)]))
#@163 Dereference REF, returning the referenced value.
This is like the `*' operator of the C language.
REF must have been previously obtained with `gv-ref'.

(fn REF)
(defalias 'gv-deref #[257 "\211@ \207" [] 2 (#$ . 23191)])
(byte-code "\300\301\302\303#\304\301\305\306#\210\300\301\307\310#\300\311\307\312#\300\313\307\314#\300\315\307\316#\300\317\307\320#\300\321\307\322#\300\323\307\324#\300\325\307\326#\300\327\307\330#\300\331\307\332#\300\333\307\334#\300\335\307\336#\300\337\307\340#\300\341\307\342#\300\343\307\344#\300\345\307\346#\300\347\307\350#\300\351\307\352#\300\353\307\354#\300\355\307\356#\300\357\307\360#\300\361\307\362#\300\363\307\364#\300\365\307\366#\300\367\307\370#\300\371\307\372#\300\373\307\374#\300\375\307\376#\300\377\307\201@#\300\201A\307\201B#\300\201C\307\201D#\300\201E\307\201F#\300\201G\307\201H#\300\201I\307\201J#\300\201K\307\201L#\300\201M\307\201N#\300\201O\307\201P#\300\201Q\307\201R#\300\201S\307\201T#\300\201U\307\201V#\300\201W\307\201X#\300\201Y\307\201Z#\300\201[\307\201\\#\300\201]\307\201^#\300\201_\307\201`#\300\201a\307\201b#\300\201c\307\201d#\300\201e\307\201f#\300\201g\307\201h#\300\201i\307\201j#\201k\201l!\207" [function-put gv-deref speed -1 put byte-optimizer byte-compile-inline-expand gv-expander #[385 "\300\301\302$\207" [gv--defsetter gv-deref #[514 "\300\301DE\207" [funcall cdr] 5 "\n\n(fn V REF)"]] 7 "\n\n(fn DO &rest ARGS)"] buffer-file-name #[385 "\300\301\302$\207" [gv--defsetter buffer-file-name #[385 "\300!\203\n\202
\301\302!\303\304\305C\"BE=\203\207\306DC\"\207" [macroexp-const-p make-symbol #1="v" progn set-visited-file-name append macroexp-let*] 8 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] buffer-modified-p #[385 "\300\301\302$\207" [gv--defsetter buffer-modified-p #[513 "\300\301BB\302!\203\211\202\303\304!\305\306DE=\203 \207\307DC\"\207" [or ((current-buffer)) macroexp-const-p make-symbol "buffer" with-current-buffer set-buffer-modified-p macroexp-let*] 8 "\n\n(fn FLAG &optional BUF)"]] 7 "\n\n(fn DO &rest ARGS)"] buffer-name #[385 "\300\301\302$\207" [gv--defsetter buffer-name #[385 "\300!\203\n\202
\301\302!\303\304\305C\"BE=\203\207\306DC\"\207" [macroexp-const-p make-symbol #1# progn rename-buffer append macroexp-let*] 8 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] buffer-string #[385 "\300\301\302$\207" [gv--defsetter buffer-string #[257 "\300\301\302BBD\207" [insert prog1 ((erase-buffer))] 5 "\n\n(fn STORE)"]] 7 "\n\n(fn DO &rest ARGS)"] buffer-substring #[385 "\300\301\302$\207" [gv--defsetter buffer-substring #[385 "\300\301C\"B\207" [cl--set-buffer-substring append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] current-buffer #[385 "\300\301\302$\207" [gv--defsetter current-buffer #[385 "\300\301C\"B\207" [set-buffer append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] current-column #[385 "\300\301\302$\207" [gv--defsetter current-column #[385 "\300!\203\n\202
\301\302!\303\304\305C\"BE=\203\207\306DC\"\207" [macroexp-const-p make-symbol #1# progn move-to-column append macroexp-let*] 8 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] current-global-map #[385 "\300\301\302$\207" [gv--defsetter current-global-map #[385 "\300!\203\n\202
\301\302!\303\304\305C\"BE=\203\207\306DC\"\207" [macroexp-const-p make-symbol #1# progn use-global-map append macroexp-let*] 8 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] current-input-mode #[385 "\300\301\302$\207" [gv--defsetter current-input-mode #[257 "\300\301\302EE\207" [progn apply #'set-input-mode] 5 "\n\n(fn STORE)"]] 7 "\n\n(fn DO &rest ARGS)"] current-local-map #[385 "\300\301\302$\207" [gv--defsetter current-local-map #[385 "\300!\203\n\202
\301\302!\303\304\305C\"BE=\203\207\306DC\"\207" [macroexp-const-p make-symbol #1# progn use-local-map append macroexp-let*] 8 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] current-window-configuration #[385 "\300\301\302$\207" [gv--defsetter current-window-configuration #[385 "\300!\203\n\202
\301\302!\303\304\305C\"BE=\203\207\306DC\"\207" [macroexp-const-p make-symbol #1# progn set-window-configuration append macroexp-let*] 8 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] default-file-modes #[385 "\300\301\302$\207" [gv--defsetter default-file-modes #[385 "\300!\203\n\202
\301\302!\303\304\305C\"BE=\203\207\306DC\"\207" [macroexp-const-p make-symbol #1# progn set-default-file-modes append macroexp-let*] 8 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] documentation-property #[385 "\300\301\302$\207" [gv--defsetter documentation-property #[385 "\300\301C\"B\207" [put append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] face-background #[385 "\300\301\302$\207" [gv--defsetter face-background #[770 "\300F\207" [set-face-background] 7 "\n\n(fn X F &optional S)"]] 7 "\n\n(fn DO &rest ARGS)"] face-background-pixmap #[385 "\300\301\302$\207" [gv--defsetter face-background-pixmap #[770 "\300F\207" [set-face-background-pixmap] 7 "\n\n(fn X F &optional S)"]] 7 "\n\n(fn DO &rest ARGS)"] face-font #[385 "\300\301\302$\207" [gv--defsetter face-font #[770 "\300F\207" [set-face-font] 7 "\n\n(fn X F &optional S)"]] 7 "\n\n(fn DO &rest ARGS)"] face-foreground #[385 "\300\301\302$\207" [gv--defsetter face-foreground #[770 "\300F\207" [set-face-foreground] 7 "\n\n(fn X F &optional S)"]] 7 "\n\n(fn DO &rest ARGS)"] face-underline-p #[385 "\300\301\302$\207" [gv--defsetter face-underline-p #[770 "\300F\207" [set-face-underline] 7 "\n\n(fn X F &optional S)"]] 7 "\n\n(fn DO &rest ARGS)"] file-modes #[385 "\300\301\302$\207" [gv--defsetter file-modes #[385 "\300!\203\n\202
\301\302!\303\304\305C\"BE=\203\207\306DC\"\207" [macroexp-const-p make-symbol #1# progn set-file-modes append macroexp-let*] 8 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] frame-height #[385 "\300\301\302$\207" [gv--defsetter frame-height #[513 "\300\301\302BBE\207" [set-frame-height or ((selected-frame))] 6 "\n\n(fn X &optional FRAME)"]] 7 "\n\n(fn DO &rest ARGS)"] frame-parameters #[385 "\300\301\302$\207" [gv--defsetter frame-parameters #[385 "\300!\203\n\202
\301\302!\303\304\305C\"BE=\203\207\306DC\"\207" [macroexp-const-p make-symbol #1# progn modify-frame-parameters append macroexp-let*] 8 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] frame-visible-p #[385 "\300\301\302$\207" [gv--defsetter frame-visible-p #[385 "\300\301C\"B\207" [cl--set-frame-visible-p append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] frame-width #[385 "\300\301\302$\207" [gv--defsetter frame-width #[513 "\300\301\302BBE\207" [set-frame-width or ((selected-frame))] 6 "\n\n(fn X &optional FRAME)"]] 7 "\n\n(fn DO &rest ARGS)"] getenv #[385 "\300\301\302$\207" [gv--defsetter getenv #[385 "\300!\203\n\202
\301\302!\303\304\305C\"BE=\203\207\306DC\"\207" [macroexp-const-p make-symbol #1# progn setenv append macroexp-let*] 8 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] get-register #[385 "\300\301\302$\207" [gv--defsetter get-register #[385 "\300\301C\"B\207" [set-register append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] global-key-binding #[385 "\300\301\302$\207" [gv--defsetter global-key-binding #[385 "\300\301C\"B\207" [global-set-key append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] local-key-binding #[385 "\300\301\302$\207" [gv--defsetter local-key-binding #[385 "\300\301C\"B\207" [local-set-key append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] mark #[385 "\300\301\302$\207" [gv--defsetter mark #[385 "\300!\203\n\202
\301\302!\303\304\305C\"BE=\203\207\306DC\"\207" [macroexp-const-p make-symbol #1# progn set-mark append macroexp-let*] 8 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] mark-marker #[385 "\300\301\302$\207" [gv--defsetter mark-marker #[385 "\300!\203\n\202
\301\302!\303\304\305C\"BE=\203\207\306DC\"\207" [macroexp-const-p make-symbol #1# progn set-mark append macroexp-let*] 8 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] marker-position #[385 "\300\301\302$\207" [gv--defsetter marker-position #[385 "\300!\203\n\202
\301\302!\303\304\305C\"BE=\203\207\306DC\"\207" [macroexp-const-p make-symbol #1# progn set-marker append macroexp-let*] 8 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] mouse-position #[385 "\300\301\302$\207" [gv--defsetter mouse-position #[514 "\300\301D\302D\303D\257\207" [set-mouse-position car cadr cddr] 8 "\n\n(fn STORE SCR)"]] 7 "\n\n(fn DO &rest ARGS)"] point #[385 "\300\301\302$\207" [gv--defsetter point #[385 "\300\301C\"B\207" [goto-char append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] point-marker #[385 "\300\301\302$\207" [gv--defsetter point-marker #[385 "\300!\203\n\202
\301\302!\303\304\305C\"BE=\203\207\306DC\"\207" [macroexp-const-p make-symbol #1# progn goto-char append macroexp-let*] 8 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] point-max #[385 "\300\301\302$\207" [gv--defsetter point-max #[257 "\300\301\302EE\207" [progn narrow-to-region (point-min)] 5 "\n\n(fn STORE)"]] 7 "\n\n(fn DO &rest ARGS)"] point-min #[385 "\300\301\302$\207" [gv--defsetter point-min #[257 "\300\301\302BBE\207" [progn narrow-to-region ((point-max))] 5 "\n\n(fn STORE)"]] 7 "\n\n(fn DO &rest ARGS)"] read-mouse-position #[385 "\300\301\302$\207" [gv--defsetter read-mouse-position #[514 "\300\301D\302DF\207" [set-mouse-position car cdr] 7 "\n\n(fn STORE SCR)"]] 7 "\n\n(fn DO &rest ARGS)"] screen-height #[385 "\300\301\302$\207" [gv--defsetter screen-height #[385 "\300!\203\n\202
\301\302!\303\304\305C\"BE=\203\207\306DC\"\207" [macroexp-const-p make-symbol #1# progn set-screen-height append macroexp-let*] 8 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] screen-width #[385 "\300\301\302$\207" [gv--defsetter screen-width #[385 "\300!\203\n\202
\301\302!\303\304\305C\"BE=\203\207\306DC\"\207" [macroexp-const-p make-symbol #1# progn set-screen-width append macroexp-let*] 8 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] selected-window #[385 "\300\301\302$\207" [gv--defsetter selected-window #[385 "\300\301C\"B\207" [select-window append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] selected-screen #[385 "\300\301\302$\207" [gv--defsetter selected-screen #[385 "\300\301C\"B\207" [select-screen append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] selected-frame #[385 "\300\301\302$\207" [gv--defsetter selected-frame #[385 "\300\301C\"B\207" [select-frame append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] standard-case-table #[385 "\300\301\302$\207" [gv--defsetter standard-case-table #[385 "\300\301C\"B\207" [set-standard-case-table append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] syntax-table #[385 "\300\301\302$\207" [gv--defsetter syntax-table #[385 "\300\301C\"B\207" [set-syntax-table append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] visited-file-modtime #[385 "\300\301\302$\207" [gv--defsetter visited-file-modtime #[385 "\300!\203\n\202
\301\302!\303\304\305C\"BE=\203\207\306DC\"\207" [macroexp-const-p make-symbol #1# progn set-visited-file-modtime append macroexp-let*] 8 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] window-height #[385 "\300\301\302$\207" [gv--defsetter window-height #[257 "\300\301\302\303BBDE\207" [progn enlarge-window - ((window-height))] 6 "\n\n(fn STORE)"]] 7 "\n\n(fn DO &rest ARGS)"] window-width #[385 "\300\301\302$\207" [gv--defsetter window-width #[257 "\300\301\302\303BB\304BBE\207" [progn enlarge-window - ((window-width)) (t)] 6 "\n\n(fn STORE)"]] 7 "\n\n(fn DO &rest ARGS)"] x-get-secondary-selection #[385 "\300\301\302$\207" [gv--defsetter x-get-secondary-selection #[385 "\300!\203\n\202
\301\302!\303\304\305C\"BE=\203\207\306DC\"\207" [macroexp-const-p make-symbol #1# progn x-own-secondary-selection append macroexp-let*] 8 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] eq #[771 "\300\301\302#\"\207" [gv-get make-closure #[514 "\301\302!\203\211\202\303\304!\300\305E\306\307$\"=\203$\207\310DC\"\207" [V0 V1 macroexp-const-p make-symbol "val" eq make-closure #[257 "\303\301\302!D\304\300\302E\301\305\302D!DE\207" [V0 V1 V2 cond eq not] 7 "\n\n(fn V)"] macroexp-let*] 11 "\n\n(fn GETTER SETTER)"]] 9 "\n\n(fn DO PLACE VAL)"] substring #[1027 "\300\301\302$\"\207" [gv-get make-closure #[514 "\301\303!\203\211\202\304\305!\302\303!\203\211\202\304\306!\300\307F\310\311		%\"=\203;\211\266\203\202D\312DC\"\266\203=\203K\207\312DC\"\207" [V0 V1 V2 macroexp-const-p make-symbol "start" "end" substring make-closure #[257 "\304!\203\n\211\202
\305\306!\307\301\310\300\302\303\257!E=\203!\207\311DC\"\207" [V0 V1 V2 V3 macroexp-const-p make-symbol #1# progn cl--set-substring macroexp-let*] 9 "\n\n(fn V)"] macroexp-let*] 14 "\n\n(fn GETTER SETTER)"]] 11 "\n\n(fn DO PLACE FROM &optional TO)"] provide gv] 54)

Youez - 2016 - github.com/yon3zu
LinuXploit