From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: pjb@informatimago.com (Pascal J. Bourguignon) Newsgroups: gmane.emacs.help Subject: Re: variable's documentation string Date: Tue, 30 Jun 2009 23:37:36 +0200 Organization: Informatimago Message-ID: <877hyttnbz.fsf@galatea.local> References: <67ca21fb-4953-4699-b190-df74a1035228@r36g2000vbn.googlegroups.com> <2c6889fe-6935-41d6-8a8e-2b6a07761cd7@j19g2000vbp.googlegroups.com> <7cws6vjsug.fsf@pbourguignon.informatimago.com> <0a97f5cb-d434-4014-ba0b-dd5126095fbf@f10g2000vbf.googlegroups.com> <7ctz1yhzvp.fsf@pbourguignon.anevia.com> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Trace: ger.gmane.org 1246421576 17078 80.91.229.12 (1 Jul 2009 04:12:56 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 1 Jul 2009 04:12:56 +0000 (UTC) To: help-gnu-emacs@gnu.org Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Wed Jul 01 06:12:50 2009 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1MLrBh-0007Na-NL for geh-help-gnu-emacs@m.gmane.org; Wed, 01 Jul 2009 06:12:50 +0200 Original-Received: from localhost ([127.0.0.1]:47928 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MLrBg-00039K-WC for geh-help-gnu-emacs@m.gmane.org; Wed, 01 Jul 2009 00:12:49 -0400 Original-Path: news.stanford.edu!newsfeed.stanford.edu!goblin1!goblin.stu.neva.ru!fdn.fr!proxad.net!feeder1-2.proxad.net!cleanfeed2-a.proxad.net!nnrp17-2.free.fr!not-for-mail Original-Newsgroups: gnu.emacs.help Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwAQMAAABtzGvEAAAABlBMVEUAAAD///+l2Z/dAAAA oElEQVR4nK3OsRHCMAwF0O8YQufUNIQRGIAja9CxSA55AxZgFO4coMgYrEDDQZWPIlNAjwq9 033pbOBPtbXuB6PKNBn5gZkhGa86Z4x2wE67O+06WxGD/HCOGR0deY3f9Ijwwt7rNGNf6Oac l/GuZTF1wFGKiYYHKSFAkjIo1b6sCYS1sVmFhhhahKQssRjRT90ITWUk6vvK3RsPGs+M1RuR mV+hO/VvFAAAAABJRU5ErkJggg== X-Accept-Language: fr, es, en X-Disabled: X-No-Archive: no User-Agent: Gnus/5.1008 (Gnus v5.10.8) Emacs/22.3 (darwin) Cancel-Lock: sha1:OWQ2YjE2N2VjYzdjYjJkYmZlZGJjYjg2OWE2MGI2N2RmYzI4MjkzNQ== Original-Lines: 62 Original-NNTP-Posting-Date: 30 Jun 2009 23:37:39 MEST Original-NNTP-Posting-Host: 88.182.134.169 Original-X-Trace: 1246397859 news-4.free.fr 420 88.182.134.169:60055 Original-X-Complaints-To: abuse@proxad.net Original-Xref: news.stanford.edu gnu.emacs.help:170479 X-Mailman-Approved-At: Tue, 30 Jun 2009 23:54:29 -0400 X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.help:65701 Archived-At: TheFlyingDutchman writes: >> >> So if you want an error instead of nil, you have to ask it yourself: >> >> (defun variable-documentation (var) >>    (or (documentation-property var 'variable-documentation) >>        (error "Variable %S has no documentation" var))) >> >> (variable-documentation 'xyz) >> ==> Debugger entered--Lisp error: (error "Variable xyz has no documentation") >> >> (variable-documentation 'myVar) >> --> "This is the documentation string" >> >> -- >> __Pascal Bourguignon__ > > Thanks Pascal. What I was hoping for was not an error if documentation > is nil, but if the symbol name was invalid. But I guess in Emacs Lisp > there is no such thing as an invalid symbol name. So it would have to > be an error if the symbol was only created from a "read or use", not > from a setq or defvar, etc. Yes, that's the point. You could test for boundp, but nothing would prevent you to document variables that are not bound. Notice that in emacs lisp, you can define a variable without giving it an initial value: (defvar *strange*) (setf (documentation-property '*strange* 'variable-documentation) "A strange variable, with no value") (boundp '*strange*) --> nil (defun f () (list (boundp '*strange*) (documentation-property '*strange* 'variable-documentation))) (let ((*strange* 42)) (f)) --> (t "A strange variable, with no value") (f) --> (nil "A strange variable, with no value") In programs, it is often the case that the best way is to try to do something and see if there's a problem, rather than trying to see if doing something could pose a problem. Foremost because there is no reliable way to see if doing something could pose a problem, bar doing it. Here, if you want the documentation of a variable, the best way is to try to get it. And you cannot know when the documentation is not available, whether it's because the symbol doesn't name a variable of whether the variable has not been documented. -- __Pascal Bourguignon__