From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Barry Margolin Newsgroups: gmane.emacs.help Subject: Re: How to shadow a function temporarily? (flet and cl-flet) Date: Sun, 26 Jan 2014 14:36:21 -0500 Organization: A noiseless patient Spider Message-ID: References: NNTP-Posting-Host: plane.gmane.org X-Trace: ger.gmane.org 1390765215 17830 80.91.229.3 (26 Jan 2014 19:40:15 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sun, 26 Jan 2014 19:40:15 +0000 (UTC) To: help-gnu-emacs@gnu.org Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Sun Jan 26 20:40:21 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 1W7VZ5-0001Lp-89 for geh-help-gnu-emacs@m.gmane.org; Sun, 26 Jan 2014 20:40:19 +0100 Original-Received: from localhost ([::1]:56112 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1W7VZ4-0006gK-Ju for geh-help-gnu-emacs@m.gmane.org; Sun, 26 Jan 2014 14:40:18 -0500 Original-Path: usenet.stanford.edu!news.kjsl.com!feeder.erje.net!eu.feeder.erje.net!eternal-september.org!feeder.eternal-september.org!news.eternal-september.org!barmar.motzarella.org!.POSTED!not-for-mail Original-Newsgroups: gnu.emacs.help Original-Lines: 30 Injection-Info: barmar.motzarella.org; posting-host="2be9e9f5dd9af768b8861af71b85fc28"; logging-data="9809"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18bk1SuC/P4g9LK+jF+VwmS" User-Agent: MT-NewsWatcher/3.5.3b3 (Intel Mac OS X) Cancel-Lock: sha1:xV0jLCkBLVGbYPCVzvX695kMmO8= Original-Xref: usenet.stanford.edu gnu.emacs.help:203409 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:95678 Archived-At: In article , Alex Kost wrote: > Hello, I have 2 questions. > > 1. The main question is: how can I override a function with another > compatible function (with the same args) temporarily? > > I want something like this: > > (let-shadow ((+ '-)) > (+ 3 2)) ; should return 1, not 5 > > 2. If there is no such macro, I can use `flet' for my purposes, but it > is obsolete and `cl-flet' doesn't do what I need (see attached example). > > According to (info "(cl) Obsolete Macros"), `flet' makes a dynamic > binding (unlike `cl-flet'). So the second question is: how can I avoid > using obsolete `flet` if I need a dynamic binding? Use `letf' of `symbol-function': (letf ((symbol-function 'function-name) (symbol-function 'other-function)) ...) -- Barry Margolin, barmar@alum.mit.edu Arlington, MA *** PLEASE post questions in newsgroups, not directly to me ***