[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: (goto-char ...) error
From: |
ken |
Subject: |
Re: (goto-char ...) error |
Date: |
Tue, 22 Feb 2011 14:22:58 -0500 |
User-agent: |
Thunderbird 2.0.0.24 (X11/20101213) |
On 02/22/2011 01:45 PM Deniz Dogan wrote:
> 2011/2/22 ken <gebser@mousecar.com>:
>> On 02/22/2011 12:31 PM Deniz Dogan wrote:
>>> 2011/2/22 ken <gebser@mousecar.com>:
>>>> ....
>>>
>> My understanding is that the 4th arg to re-search-forward is to repeat
>> the search, so I set that to nil.
>>
>> I get the same error whether the 3rd arg is t or nil (!?):
>>
>> (setq ptname (re-search-forward "REGEXP" endpt t nil))
>> (if ptname
>> ((goto-char (- ptname 1))
>> ....
>>
>> The error line in *Messages* says:
>>
>> if: Invalid function: (goto-char (- begin-name-value 1))
>>
>>
>
> You have one pair of parentheses too many.
>
> Change:
>
> ((goto-char (- ptname 1))
>
> to:
>
> (goto-char (- ptname 1))
>
> The error is telling you that "(goto-char (- ptname 1))" is an invalid
> function, which could potentially be confusing, but it really makes
> sense. You call a function named `foo' like (foo ...), but if you do
> "((foo ...))" you're trying to call a function named "(foo ...)" which
> is not a valid function.
>
> From the documentation of `if':
>
> (if COND THEN ELSE...)
> If COND yields non-nil, do THEN, else do ELSE...
>
> This means that your THEN clause must be a single expression.
> Everything starting with the third argument to `if' is considered part
> of the ELSE clause.
>
> If you want to multiple expressions in the THEN clause, use `progn' as
> such:
>
> (if (= x y)
> (progn
> (message "They're equal")
> (message "Hooray!"))
> (message "They're not equal.")
> (message "Too bad, bro."))
>
> I hope that helps!
Yeah, I think it should. Thanks.
Just to be clear about one more thing I'll be addressing subsequently,
i.e., another "if" nested inside the first:
(if (= x y)
(progn
(message "They're equal")
(message "Hooray!")
(if (= x z)
(progn
(message "The next one's equal too.")
(message "Hooray++!")))) ; enuf )s to match up to 1st progn
(message "They're not equal.")
(message "Too bad, bro."))
elisp is weird.
Thanks again!
Message not available