Function: erc--assemble-toggle
erc--assemble-toggle is a byte-compiled function defined in
erc-common.el.gz.
Signature
(erc--assemble-toggle LOCALP NAME ABLSYM MODE VAL BODY)
Source Code
;; Defined in /usr/src/emacs/lisp/erc/erc-common.el.gz
(defun erc--assemble-toggle (localp name ablsym mode val body)
(let ((arg (make-symbol "arg")))
`(defun ,ablsym ,(if localp `(&optional ,arg) '())
,(erc--fill-module-docstring
(if val "Enable" "Disable")
" ERC " (symbol-name name) " mode" (and localp " locally") "."
(when localp
(concat "\nWhen called interactively,"
" do so in all buffers for the current connection.")))
(interactive ,@(when localp '("p")))
,@(if localp
`((when (derived-mode-p 'erc-mode)
(if ,arg
(erc-with-all-buffers-of-server erc-server-process nil
(,ablsym))
(setq ,mode ,val)
,@body)))
;; No need for `default-value', etc. because a buffer-local
;; `erc-modules' only influences the next session and
;; doesn't survive the major-mode reset that soon follows.
`((unless
(or erc--inside-mode-toggle-p
,@(let ((v `(memq ',(erc--normalize-module-symbol name)
erc-modules)))
`(,(if val v `(not ,v)))))
(let ((erc--inside-mode-toggle-p t))
(erc--favor-changed-reverted-modules-state
',name #',(if val 'cons 'delq))))
(setq ,mode ,val)
,@body)))))