From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Marcin Borkowski Newsgroups: gmane.emacs.help Subject: Re: Dynamically constructing advice behaves strangely Date: Sun, 14 Feb 2016 21:58:46 +0100 Message-ID: <87egcf2em1.fsf@mbork.pl> References: <87io1r2v89.fsf@mbork.pl> <87ziv39u0s.fsf@web.de> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1455483566 17329 80.91.229.3 (14 Feb 2016 20:59:26 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sun, 14 Feb 2016 20:59:26 +0000 (UTC) Cc: help-gnu-emacs@gnu.org To: Michael Heerdegen Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Sun Feb 14 21:59:14 2016 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 1aV3lA-0003ox-2f for geh-help-gnu-emacs@m.gmane.org; Sun, 14 Feb 2016 21:59:12 +0100 Original-Received: from localhost ([::1]:53627 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aV3l9-0000dL-G1 for geh-help-gnu-emacs@m.gmane.org; Sun, 14 Feb 2016 15:59:11 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:42868) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aV3ks-0000Xv-W2 for help-gnu-emacs@gnu.org; Sun, 14 Feb 2016 15:58:55 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aV3kp-0002um-Qv for help-gnu-emacs@gnu.org; Sun, 14 Feb 2016 15:58:54 -0500 Original-Received: from mail.mojserwer.eu ([2a01:5e00:2:52::8]:51520) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aV3kp-0002ui-KN for help-gnu-emacs@gnu.org; Sun, 14 Feb 2016 15:58:51 -0500 Original-Received: from localhost (localhost [127.0.0.1]) by mail.mojserwer.eu (Postfix) with ESMTP id 005B99D2002; Sun, 14 Feb 2016 21:58:51 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at mail.mojserwer.eu Original-Received: from mail.mojserwer.eu ([127.0.0.1]) by localhost (mail.mojserwer.eu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id k3rYWQwkvemF; Sun, 14 Feb 2016 21:58:47 +0100 (CET) Original-Received: from localhost (unknown [109.232.24.28]) by mail.mojserwer.eu (Postfix) with ESMTPSA id 3F4849D2001; Sun, 14 Feb 2016 21:58:47 +0100 (CET) User-agent: mu4e 0.9.13; emacs 25.1.50.2 In-reply-to: <87ziv39u0s.fsf@web.de> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2a01:5e00:2:52::8 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:109170 Archived-At: On 2016-02-14, at 16:44, Michael Heerdegen wrote: > Marcin Borkowski writes: > >> (defun add-constructed-advice (fun) >> "Add a constructed advice to function foo." >> (let* ((fun-name (symbol-name fun)) >> (length-sym >> (make-symbol (concat "length-of-" fun-name))) >> (piece-of-advice-sym >> (make-symbol (concat "advice-for-" fun-name))) >> (piece-of-advice (lambda (orig-fun &rest args) >> (apply orig-fun args) >> (message "This function's name had length %s." >> (symbol-value length-sym))))) > > Also, `length-sym' doesn't have to be an uninterned symbol here. You > use lexical-binding anyway (by referring to the value of the (interned!) > symbol named "length-sym". You don't even have to use a symbol with a > unique name. Just use a simple (lexical) variable for the length, > e.g. `advice-length', and > > (message "This function's name had length %s." advice-length) > > etc. (your piece of advice is a closure!). I know, and in fact I'm making use of lexical binding in my "real" code. This was just a trimmed-down version for the sake of asking here. > Michael. Best, -- Marcin Borkowski http://octd.wmi.amu.edu.pl/en/Marcin_Borkowski Faculty of Mathematics and Computer Science Adam Mickiewicz University