[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: (read (current-buffer)) returns an integer in a buffer full of text?
From: |
Robert Thorpe |
Subject: |
Re: (read (current-buffer)) returns an integer in a buffer full of text? |
Date: |
29 Nov 2006 06:17:44 -0800 |
User-agent: |
G2/1.0 |
Sebastian Tennant wrote:
> Quoth "Robert Thorpe" <rthorpe@realworldtech.com>:
> > 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.
- Re: (read (current-buffer)) returns an integer in a buffer full of text?, Robert Thorpe, 2006/11/24
- Re: (read (current-buffer)) returns an integer in a buffer full of text?, Kevin Rodgers, 2006/11/27
- Message not available
- Re: (read (current-buffer)) returns an integer in a buffer full of text?, Robert Thorpe, 2006/11/28
- Re: (read (current-buffer)) returns an integer in a buffer full of text?, Sebastian Tennant, 2006/11/29
- Message not available
- Re: (read (current-buffer)) returns an integer in a buffer full of text?,
Robert Thorpe <=
- Re: (read (current-buffer)) returns an integer in a buffer full of text?, Kevin Rodgers, 2006/11/29
- Message not available
- Re: (read (current-buffer)) returns an integer in a buffer full of text?, Robert Thorpe, 2006/11/29
- Re: (read (current-buffer)) returns an integer in a buffer full of text?, Peter Dyballa, 2006/11/29
- Message not available
- Re: (read (current-buffer)) returns an integer in a buffer full of text?, Robert Thorpe, 2006/11/30
- Re: (read (current-buffer)) returns an integer in a buffer full of text?, Sebastian Tennant, 2006/11/30