From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: "Robert Thorpe" Newsgroups: gmane.emacs.help Subject: Re: (read (current-buffer)) returns an integer in a buffer full of text? Date: 29 Nov 2006 06:17:44 -0800 Organization: http://groups.google.com Message-ID: <1164809864.480422.120420@80g2000cwy.googlegroups.com> References: <1164303070.530993.199230@k70g2000cwa.googlegroups.com> <1164724454.191296.147930@14g2000cws.googlegroups.com> NNTP-Posting-Host: main.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" X-Trace: sea.gmane.org 1164811261 21453 80.91.229.2 (29 Nov 2006 14:41:01 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Wed, 29 Nov 2006 14:41:01 +0000 (UTC) Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Wed Nov 29 15:41:00 2006 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by ciao.gmane.org with esmtp (Exim 4.43) id 1GpQcE-00009d-1T for geh-help-gnu-emacs@m.gmane.org; Wed, 29 Nov 2006 15:40:50 +0100 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1GpQcD-0003in-Ip for geh-help-gnu-emacs@m.gmane.org; Wed, 29 Nov 2006 09:40:49 -0500 Original-Path: shelby.stanford.edu!newsfeed.stanford.edu!postnews.google.com!80g2000cwy.googlegroups.com!not-for-mail Original-Newsgroups: gnu.emacs.help Original-Lines: 59 Original-NNTP-Posting-Host: 213.94.228.210 Original-X-Trace: posting.google.com 1164809870 1383 127.0.0.1 (29 Nov 2006 14:17:50 GMT) Original-X-Complaints-To: groups-abuse@google.com Original-NNTP-Posting-Date: Wed, 29 Nov 2006 14:17:50 +0000 (UTC) In-Reply-To: User-Agent: G2/1.0 X-HTTP-UserAgent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.10) Gecko/20050716 Firefox/1.0.6,gzip(gfe),gzip(gfe) X-HTTP-Via: 1.0 EMF3ASPROXY03 Complaints-To: groups-abuse@google.com Injection-Info: 80g2000cwy.googlegroups.com; posting-host=213.94.228.210; posting-account=hWoAPxMAAAAnBKSBz1ZivwUPPjEuve7bvVCHZQ8rhrluPfwcBJd92w Original-Xref: shelby.stanford.edu gnu.emacs.help:143492 Original-To: help-gnu-emacs@gnu.org 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:39095 Archived-At: Sebastian Tennant wrote: > Quoth "Robert Thorpe" : > > Kevin Rodgers wrote: > >> Robert Thorpe wrote: > >> > Sebastian Tennant wrote: > >> >> Hi everyone, > >> >> > >> >> If I execute the following code in *scratch* there's no problem: > >> >> > >> >> (with-temp-buffer > >> >> (insert "hello") > >> >> (backward-word) > >> >> (read (current-buffer))) > >> >> => hello > >> > > >> > The function with-temp-buffer creates a temp buffer for the duration of > >> > it's body. It does _not_ select that buffer as the current buffer. > >> > >> Why would that matter? The (read (current-buffer)) form is evaluated > >> while the temp buffer is current. Nothing depends on the temp buffer > >> still being current after that. > > > > You're right, my last sentence is 100% wrong. With-temp-buffer does > > set the temp buffer to be the current buffer. > > > > I have no idea why this code doesn't work, it works for me under > > similar conditions. > > (The only mistake is that (backward-word) should be (backward-word 1)) > > My error was in the location of point. If two words are separated by > a space, and point at the beginning of the second word, > '(backward-word 2)' is required to move point to the beginning of the > first word. > > However, why does this happen: > > (with-temp-buffer > (insert "586114704") > (backward-word) > (read (current-buffer))) > > => 49243792 > > Is there an integer limit relating to symbols somehow? The function "read" will read whatever type it finds. It will treat 586114704 as an integer. Try the following:- Type 586114704 into scratch and do C-x C-e straight afterwards. The echo area will display 49243792. This is because there is a limit on integers in Emacs, they are 26-bits long. This allows you to represent -67108865 to 67108864 I think. Emacs doesn't warn you when you exceed the limit unfortunately. Generally if you want to do numerical things with Lisp you should use another lisp such as Common Lisp.