What I want to do: have the function `evil-delete` do one more task after its usual code. (I'm presuming that `evil-delete` is the underlying workhorse that is called by `evil-delete-line` and about five other functions.) `evil-delete` takes optional parameters. In a scheme, I'd write: ````scheme (define original-evil-delete evil-delete) ; capture the original binding (define (evil-delete-then-gui-set-selection . args) "Delete, and copy deleted-text into the OS clipboard." (prog1 (apply original-evil-delete args) (gui-set-selection 'CLIPBOARD (current-kill 0)))) (set! evil-delete evil-delete-then-gui-set-selection) ; I want this "new" binding to be used in other functions that call `evil-delete`. ```` But between lisp's defvar-vs-defun distinction, possibly-dynamic scoping, and forwarding optional-args, I'm having a bit of trouble translating this scheme to elisp. Any help appreciated. (I don't think I need to worry about "interactive", at least?) Also, if there is a better way of doing this -- e.g. some hook available -- then I'd appreciate hearing that too. Finally, it's not out-of-question that I instead make new versions of the ~dozen "wrapper" functions and re-bind all the keys to use these new versions, thereby avoiding most issues except forwarding-default-args.