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: Dynamically constructing advice behaves strangely Date: Sun, 14 Feb 2016 15:59:50 +0100 Message-ID: <87io1r2v89.fsf@mbork.pl> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1455462023 19897 80.91.229.3 (14 Feb 2016 15:00:23 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sun, 14 Feb 2016 15:00:23 +0000 (UTC) To: Help Gnu Emacs mailing list Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Sun Feb 14 16:00:16 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 1aUy9o-0004Vf-A0 for geh-help-gnu-emacs@m.gmane.org; Sun, 14 Feb 2016 16:00:16 +0100 Original-Received: from localhost ([::1]:51224 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aUy9n-0007RW-9s for geh-help-gnu-emacs@m.gmane.org; Sun, 14 Feb 2016 10:00:15 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:34882) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aUy9c-0007Py-KK for help-gnu-emacs@gnu.org; Sun, 14 Feb 2016 10:00:05 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aUy9X-0006wT-NG for help-gnu-emacs@gnu.org; Sun, 14 Feb 2016 10:00:04 -0500 Original-Received: from mail.mojserwer.eu ([2a01:5e00:2:52::8]:48290) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aUy9X-0006wN-G0 for help-gnu-emacs@gnu.org; Sun, 14 Feb 2016 09:59:59 -0500 Original-Received: from localhost (localhost [127.0.0.1]) by mail.mojserwer.eu (Postfix) with ESMTP id 5CAA59D2002 for ; Sun, 14 Feb 2016 15:59:58 +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 H18jAMDqZa0E for ; Sun, 14 Feb 2016 15:59:55 +0100 (CET) Original-Received: from localhost (unknown [109.232.24.28]) by mail.mojserwer.eu (Postfix) with ESMTPSA id CB3EE9D2001 for ; Sun, 14 Feb 2016 15:59:54 +0100 (CET) User-agent: mu4e 0.9.13; emacs 25.1.50.2 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:109163 Archived-At: Hi list, I want to be able to construct advice dynamically. Here is a "minimal example": --8<---------------cut here---------------start------------->8--- ;;; -*- lexical-binding: t; -*- (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))))) (set length-sym (length (symbol-name fun))) (fset piece-of-advice-sym piece-of-advice) (advice-add fun :around piece-of-advice-sym))) (defun foo-fun () "" (message "Function foo-fun run.")) (add-constructed-advice 'foo-fun) --8<---------------cut here---------------end--------------->8--- This works (i.e., M-: foo-fun properly runs the advice), but I expected the symbol `advice-for-foo-fun' to have this piece of advice in its function cell - and it does not. Why? TIA, -- Marcin Borkowski http://octd.wmi.amu.edu.pl/en/Marcin_Borkowski Faculty of Mathematics and Computer Science Adam Mickiewicz University