emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Orgmode] [PATCH]: Fix to spreadsheet ranges in A1 style


From: Bake Timmons
Subject: Re: [Orgmode] [PATCH]: Fix to spreadsheet ranges in A1 style
Date: Mon, 20 Aug 2007 09:42:13 -0400
User-agent: Gnus/5.11 (Gnus v5.11) Emacs/22.1.50 (gnu/linux)

Carsten Dominik <address@hidden> writes:

> On Aug 20, 2007, at 4:46, Bake Timmons wrote:
>>        (concat "[" (mapconcat
>>                 (lambda (x)
>> @@ -9131,8 +9132,11 @@
>>         ((match-end 3)
>>      ;; format match, just advance
>>      (setq start (match-end 0)))
>> -       ((and (> (match-beginning 0) 0)
>> -         (equal ?. (aref s (max (1- (match-beginning 0)) 0))))
>> +       ((let ((pos (match-beginning 0)))
>> +      (and (> pos 0)
>> +           (equal ?. (aref s (1- pos)))
>> +           ;; not using .. for a range reference
>> +           (or (< pos 2) (not (equal ?. (aref s (1- pos)))))))
>>      ;; 3.e5 or something like this.  FIXME: is this ok????
>>      (setq start (match-end 0)))
>>         (t
>
> Could you please explain this part of the patch to me?
> Thanks.

After fixing the mapconcat bug, I reloaded the code and observed an
erroneous conversion of a range in an elisp formula.  E.g., during
formula debugging A1..B1 becomes @1$1..B1 instead of @address@hidden  More
debugging showed that A1 match correctly takes the final branch of the
cond within the org-table-convert-refs-to-rc function and is
converted, but that the match for B1 erroneously matched the second
condition of the cond form, i.e., it is treated as something in
scientific notation and is incorrectly skipped over.  Thus, I changed
the test to ensure that no additional "." is adjacent to the already
recognized ".".  Moreover, I eliminated the max function call, since a
positive number minus one is already nonnegative.  Thanks.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]