From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Stefan Monnier Newsgroups: gmane.emacs.devel Subject: Re: about "assignment to free variable" Date: Tue, 05 Feb 2019 10:02:50 -0500 Message-ID: References: <87munaelia.fsf@mugno.i-did-not-set--mail-host-address--so-tickle-me> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="208527"; mail-complaints-to="usenet@blaine.gmane.org" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Tue Feb 05 16:04:23 2019 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1gr2Gt-000s6i-8T for ged-emacs-devel@m.gmane.org; Tue, 05 Feb 2019 16:04:23 +0100 Original-Received: from localhost ([127.0.0.1]:33352 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gr2Gr-0004hf-49 for ged-emacs-devel@m.gmane.org; Tue, 05 Feb 2019 10:04:21 -0500 Original-Received: from eggs.gnu.org ([209.51.188.92]:50136) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gr2Fg-0004e7-Uq for emacs-devel@gnu.org; Tue, 05 Feb 2019 10:03:14 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gr2Fg-0005LM-29 for emacs-devel@gnu.org; Tue, 05 Feb 2019 10:03:08 -0500 Original-Received: from [195.159.176.226] (port=50090 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gr2Ff-0005KG-RZ for emacs-devel@gnu.org; Tue, 05 Feb 2019 10:03:08 -0500 Original-Received: from list by blaine.gmane.org with local (Exim 4.89) (envelope-from ) id 1gr2Fc-000qEy-Ox for emacs-devel@gnu.org; Tue, 05 Feb 2019 16:03:04 +0100 X-Injected-Via-Gmane: http://gmane.org/ Cancel-Lock: sha1:BhmZu65aE8DTexNFw6zVSka10O0= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:232996 Archived-At: >> When i compile a piece of code the byte-compiler reports a warning >> telling me that i'm trying to assign to a free variable: >> But the variable in question is, atleast i think, referred to a local >> variable because it is an argument of the function. > I think your "at least I think" is in error. But you'd have to show me > the relevant code. Looking at the current greader.el in your `master` branch, I suspect you're talking about the warning In greader-change-backend: greader.el:203:18:Warning: assignment to free variable ‘backend’ where the problem is that this use of `backend` is within the interactive spec: while the interactive spec is textually within the definition of the function, it is code that's run outside of the function (it's executed in order to build the list of arguments needed to call the function). So maybe the patch below would be the fix to this warning. Stefan diff --git a/greader.el b/greader.el index b854e0fa9..9491ac521 100644 --- a/greader.el +++ b/greader.el @@ -195,11 +195,12 @@ For example, if you specify a function that gets a sentence, you should specify (funcall greader-actual-backend command))) (defun greader-change-backend (&optional backend) - "changes back-end. if backend is specified, it changes to backend, else it cycles throwgh available back-ends." + "Change back-end. +If BACKEND is specified, change to it, else cycle through available back-ends." (interactive (list (if current-prefix-arg - (setq backend (read-from-minibuffer "backend: "))))) + (read-from-minibuffer "backend: ")))) (if (functionp backend) (if (memq backend greader-backends) (setq greader-actual-backend backend)