From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Lars Magne Ingebrigtsen Newsgroups: gmane.emacs.devel Subject: Re: defvar inside let-binding Date: Tue, 02 Aug 2011 21:56:45 +0200 Message-ID: References: <87sjq7pq14.fsf@yun.yagibdah.de> <1ztyanqxv5.fsf@fencepost.gnu.org> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: dough.gmane.org 1312315055 30732 80.91.229.12 (2 Aug 2011 19:57:35 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Tue, 2 Aug 2011 19:57:35 +0000 (UTC) Cc: emacs-devel@gnu.org To: Stefan Monnier Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Tue Aug 02 21:57:30 2011 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([140.186.70.17]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1QoL5h-0005HD-OX for ged-emacs-devel@m.gmane.org; Tue, 02 Aug 2011 21:57:25 +0200 Original-Received: from localhost ([::1]:43877 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QoL5h-0006Z6-CZ for ged-emacs-devel@m.gmane.org; Tue, 02 Aug 2011 15:57:25 -0400 Original-Received: from eggs.gnu.org ([140.186.70.92]:43647) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QoL5e-0006Yq-A6 for emacs-devel@gnu.org; Tue, 02 Aug 2011 15:57:23 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QoL5d-0001Lq-51 for emacs-devel@gnu.org; Tue, 02 Aug 2011 15:57:22 -0400 Original-Received: from hermes.netfonds.no ([80.91.224.195]:59854) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QoL5c-0001Lk-W9 for emacs-devel@gnu.org; Tue, 02 Aug 2011 15:57:21 -0400 Original-Received: from cm-84.215.51.58.getinternet.no ([84.215.51.58] helo=stories.gnus.org) by hermes.netfonds.no with esmtpsa (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.72) (envelope-from ) id 1QoL5U-0008DU-3g; Tue, 02 Aug 2011 21:57:12 +0200 In-Reply-To: (Stefan Monnier's message of "Tue, 02 Aug 2011 15:22:35 -0400") User-Agent: Gnus/5.110018 (No Gnus v0.18) Emacs/24.0.50 (gnu/linux) Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAElBMVEVBSUNKBAA4GhQxNTFG AAB7fnI+sgWTAAACb0lEQVQ4jV2US47jOgxFWRY0D13O3Ka9AJZVnkduvrk6Bve/lb5UChXgCfkI OiJ5+bGJ/7fqzz/hu7yPRzYeR5YOxh0nIoKNyGabLKPwBCDLL9hXMPniFxiXcS1aftew8MBGCLaQ u8fVfcW5FFmWHyDUktQJ/hIsVxkm62DM7uWLASjH8jachhjT2cF4Th3AbSNYWA3QXnHfYAKrd+xx RI06wLWPOpLx9HDyclBJCTZKCI/DCH5riEEdaKG0rpuF3GV6II/uAc4zwezbuJJtfIN4pQM/V+mR BqsMYH+iHprW3FQp1h7V7SDtqsWvoqopqe7jEqDO4UoVCkrSkIbK2w9YCyG7BFAG9AS6aNo4LDxW 62AzOwH4m+9aUIgDpAN7ARPO4d/zG2w1QGGiuA0CaR3IHq52vlPc9uKhIIWFCMAX37sbbwpZkbbJ vGMYlB/RhOwFxUCC3WJHgjv/l48W5UhRmfw0m30AULjSACnKDn3RUYApAHy0I9FVSm7O5v6ExQLg XVdzQst8k9zBZo8M/Y5kolfZZe6ubDtntACN0m6EfLITVI3yqdEoyEUm6UAl0eah0rl/dqFwQ72D CZaYf6p6i4xVD78uuCyRvUZr5ZY9OnQcLUWtcIkoQL1hCCN88ishfIqRiZ7HhKISqNdFiXKAsmN8 JkNx4SkfnqDo6GDjAMgDCWpWihwujPlUQxXbgyKgFmSnx5XEqURwsz/QjjFbWyPx5z77MwHEsCxc yvmwj4/pVPq++1Olg8fyiYCzIPdSjr/sfi0vIFHGeaWGh5D+8kivPKDCpL7fMrW/aQDYYv0C7Kt1 MOGJe4O+xecfv5e14EDmEisAAAAASUVORK5CYII= X-Now-Playing: Pixies's _Doolittle_: "Hey" X-MailScanner-ID: 1QoL5U-0008DU-3g MailScanner-NULL-Check: 1312919832.38268@IlScqZT8pPLkwu+3pkgBjg X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 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-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:142750 Archived-At: Stefan Monnier writes: > Yes. Tho the "next" step you suggested (to cause defvar to change the > outer let-binding) will require another such function and will make > symbol-let-bound-p unneeded. Let's see... ;; Use defvar to set the docstring as well as the special-variable-p flag. ;; FIXME: We should reproduce more of `defvar's behavior, such as the warning ;; when the var is currently let-bound. (if (not (default-boundp symbol)) ;; Don't use defvar to avoid setting a default-value when undesired. (when doc (put symbol 'variable-documentation doc)) (eval `(defvar ,symbol nil ,@(when doc (list doc))))) So what I would do here now would be to add (when (symbol-let-bound-p symbol) (message "Warning: let-bound etc")) now, and in Emacs 24.2, I'd change that to (when (symbol-let-bound-p symbol) (change-outer-let-binding symbol default)) Or something along those lines? -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/