From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Michael Heerdegen Newsgroups: gmane.emacs.help Subject: Re: replacing a function with another one Date: Wed, 12 Mar 2014 00:40:18 +0100 Message-ID: <874n34ticd.fsf@web.de> References: <87vbvofsi6.fsf@yun.yagibdah.de> <87bnxgs4r9.fsf@web.de> <87lhwj1cfz.fsf@yun.yagibdah.de> <87zjkz6vd5.fsf@web.de> <8738ir161u.fsf@yun.yagibdah.de> <87eh2b6nfm.fsf@web.de> <87r46anab5.fsf@yun.yagibdah.de> <87wqg2u77k.fsf@web.de> <87pplugjh6.fsf@yun.yagibdah.de> <8738ipd2kh.fsf@web.de> <87y50gj1uf.fsf@yun.yagibdah.de> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Trace: ger.gmane.org 1394581257 21791 80.91.229.3 (11 Mar 2014 23:40:57 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Tue, 11 Mar 2014 23:40:57 +0000 (UTC) To: help-gnu-emacs@gnu.org Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Wed Mar 12 00:41:02 2014 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1WNWI6-00087w-QW for geh-help-gnu-emacs@m.gmane.org; Wed, 12 Mar 2014 00:40:58 +0100 Original-Received: from localhost ([::1]:57919 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WNWI6-0000yi-FM for geh-help-gnu-emacs@m.gmane.org; Tue, 11 Mar 2014 19:40:58 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:59103) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WNWHo-0000wx-OL for help-gnu-emacs@gnu.org; Tue, 11 Mar 2014 19:40:46 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WNWHi-0001n7-AG for help-gnu-emacs@gnu.org; Tue, 11 Mar 2014 19:40:40 -0400 Original-Received: from plane.gmane.org ([80.91.229.3]:48720) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WNWHh-0001mj-UP for help-gnu-emacs@gnu.org; Tue, 11 Mar 2014 19:40:34 -0400 Original-Received: from list by plane.gmane.org with local (Exim 4.69) (envelope-from ) id 1WNWHg-0007ni-Ra for help-gnu-emacs@gnu.org; Wed, 12 Mar 2014 00:40:32 +0100 Original-Received: from ip-90-187-149-152.web.vodafone.de ([90.187.149.152]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Wed, 12 Mar 2014 00:40:32 +0100 Original-Received: from michael_heerdegen by ip-90-187-149-152.web.vodafone.de with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Wed, 12 Mar 2014 00:40:32 +0100 X-Injected-Via-Gmane: http://gmane.org/ Original-Lines: 49 Original-X-Complaints-To: usenet@ger.gmane.org X-Gmane-NNTP-Posting-Host: ip-90-187-149-152.web.vodafone.de User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) Cancel-Lock: sha1:i6HMjmjNNtQEw8KnS3H9USvi8d0= X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 80.91.229.3 X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Original-Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.help:96436 Archived-At: lee writes: > > Note that the advice FUNCTION will be called with an additional (the > > first) argument, which will be bound to the original function when the > > advice is called. > > The documentation doesn´t say that. It does say it: `:around' (lambda (&rest r) (apply FUNCTION OLDFUN r)) ^^^^^^ > > This way, you have direct access to the original function through that > > binding in your advice, and you can call it with funcall or apply. > > This "mechanism" is the replacement for the old ad-do-it. > > Why doesn´t the documentation just say that? Because it's trivial. > How does that go along with the documentation? The documentation says > "(lambda (&rest r) (apply FUNCTION OLDFUN r))", whatever that means. > You have (f) instead of (&rest r), and "(apply FUNCTION OLDFUN r)" is > missing. I think I understand now what you are missing. (lambda (&rest r) (apply FUNCTION OLDFUN r)) is _not_ a template of how you would write your advice. In this line, FUNCTION means your piece of advice, the function you specify as advice. The above line describes the semantic of the advised function, i.e., how the advice will be constructed that will combine the original function with your advice. > What if you want to use one of the arguments? Use an according argument list in FUNCTION, and refer to the arguments in the function body. > What when you use find-file-noselect and the file cannot be visited? > The documentation only says it returns the buffer, not what it returns > when it fails. It will raise an error when the file doesn't exist or can't be read, so you must check that yourself if you need to - see `file-exists-p', `file-readable-p'. Michael.