emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* Worg Tutorial error: using Emacs lisp as formulas
@ 2014-08-26 19:18 Ciaran Mulloy
  2014-08-27  2:52 ` Nick Dokos
  0 siblings, 1 reply; 8+ messages in thread
From: Ciaran Mulloy @ 2014-08-26 19:18 UTC (permalink / raw)
  To: org-mode

[-- Attachment #1: Type: text/plain, Size: 687 bytes --]

Hi!
I was fascinated to work through the examples provided in the 
org-tutorials sections under Worg and really see the power of using 
eLisp as spreadsheet formula: 
http://orgmode.org/worg/org-tutorials/org-spreadsheet-lisp-formulas.html

However the use of the mapconcat function always generated an error: 
Invalid regex "Regular expression too big", even with only a few terms 
in the formula.

The offending formula was:

#+TBLFM: @2$3='(mapconcat 'identity (delete-dups (list @2$1..@>$1 @2$2..@>$2)) " ")


I experimented with variations of the formula getting the same error 
every time.

I did a search of the org-mode forum without finding any solution.

Any thoughts?

Regard

[-- Attachment #2: Type: text/html, Size: 1687 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Worg Tutorial error: using Emacs lisp as formulas
  2014-08-26 19:18 Worg Tutorial error: using Emacs lisp as formulas Ciaran Mulloy
@ 2014-08-27  2:52 ` Nick Dokos
  2014-08-27  7:21   ` Ciaran Mulloy
  0 siblings, 1 reply; 8+ messages in thread
From: Nick Dokos @ 2014-08-27  2:52 UTC (permalink / raw)
  To: emacs-orgmode

Ciaran Mulloy <crmulloy@gmail.com> writes:

> Hi!
> I was fascinated to work through the examples provided in the org-tutorials sections under Worg and really see the power of using eLisp as spreadsheet formula: http://orgmode.org/worg/
> org-tutorials/org-spreadsheet-lisp-formulas.html
>
> However the use of the mapconcat function always generated an error: Invalid regex "Regular expression too big", even with only a few terms in the formula.
>
> The offending formula was:
>
> #+TBLFM: @2$3='(mapconcat 'identity (delete-dups (list @2$1..@>$1 @2$2..@>$2)) " ")
>
> I experimented with variations of the formula getting the same error every time.
>
> I did a search of the org-mode forum without finding any solution.
>
> Any thoughts?
>

I can't reproduce it - e.g. this

--8<---------------cut here---------------start------------->8---
| one | two | three         | four | five |
|-----+-----+---------------+------+------|
| a   | a   | a b c e f d g |      |      |
| a   | b   |               |      |      |
| b   | a   |               |      |      |
| c   | d   |               |      |      |
| e   | f   |               |      |      |
| f   | g   |               |      |      |
| a   | f   |               |      |      |
#+TBLFM: @2$3='(mapconcat 'identity (delete-dups (list @2$1..@>$1 @2$2..@>$2)) " ")
--8<---------------cut here---------------end--------------->8---

works fine for me. This is with more-or-less latest org.

Moreover, none of the functions used (mapconcat, identity, delete-dups
or list) use regexps at all. There is a chance that regexps are used by
the evaluator when building the ranges, but it's unlikely IMO, so the
regexp error seems like a red herring to me. How big a table did you
try? Did you try restarting emacs and redoing the evaluation? How about
starting emacs without any of your customizations and redoing the
evaluation? Something like this

  emacs -q -l /path/to/minimal/init /path/to/file/with/the/table

where the minimal init file just sets load-path if necessary and
initializes org.

-- 
Nick

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Worg Tutorial error: using Emacs lisp as formulas
  2014-08-27  2:52 ` Nick Dokos
@ 2014-08-27  7:21   ` Ciaran Mulloy
  2014-08-27  9:20     ` ciaran_mulloy
  2014-08-27 11:52     ` Nick Dokos
  0 siblings, 2 replies; 8+ messages in thread
From: Ciaran Mulloy @ 2014-08-27  7:21 UTC (permalink / raw)
  To: emacs-orgmode

On 27/08/14 03:52, Nick Dokos wrote:
> Ciaran Mulloy <crmulloy@gmail.com> writes:
>
>> Hi!
>> I was fascinated to work through the examples provided in the org-tutorials sections under Worg and really see the power of using eLisp as spreadsheet formula: http://orgmode.org/worg/
>> org-tutorials/org-spreadsheet-lisp-formulas.html
>>
>> However the use of the mapconcat function always generated an error: Invalid regex "Regular expression too big", even with only a few terms in the formula.
>>
>> The offending formula was:
>>
>> #+TBLFM: @2$3='(mapconcat 'identity (delete-dups (list @2$1..@>$1 @2$2..@>$2)) " ")
>>
>> I experimented with variations of the formula getting the same error every time.
>>
>> I did a search of the org-mode forum without finding any solution.
>>
>> Any thoughts?
>>
> I can't reproduce it - e.g. this
>
> --8<---------------cut here---------------start------------->8---
> | one | two | three         | four | five |
> |-----+-----+---------------+------+------|
> | a   | a   | a b c e f d g |      |      |
> | a   | b   |               |      |      |
> | b   | a   |               |      |      |
> | c   | d   |               |      |      |
> | e   | f   |               |      |      |
> | f   | g   |               |      |      |
> | a   | f   |               |      |      |
> #+TBLFM: @2$3='(mapconcat 'identity (delete-dups (list @2$1..@>$1 @2$2..@>$2)) " ")
> --8<---------------cut here---------------end--------------->8---
>
> works fine for me. This is with more-or-less latest org.
>
> Moreover, none of the functions used (mapconcat, identity, delete-dups
> or list) use regexps at all. There is a chance that regexps are used by
> the evaluator when building the ranges, but it's unlikely IMO, so the
> regexp error seems like a red herring to me. How big a table did you
> try? Did you try restarting emacs and redoing the evaluation? How about
> starting emacs without any of your customizations and redoing the
> evaluation? Something like this
>
>    emacs -q -l /path/to/minimal/init /path/to/file/with/the/table
>
> where the minimal init file just sets load-path if necessary and
> initializes org.
>
Hi Nick,
Many thanks for your input.

The table I was trying was the example in the tutorial shown as follows 
(not big) and no hint of a regex!:

| Col1 | Col2 | Col3 | Col4 | Col5 |
|------+------+------+------+------|
| a    | a    | :='(mapconcat 'identity (delete-dups (list @2$1..@>$1 
@2$2..@>$2)) " ") | b    |      |
| b    | a    |      |      |      |
| c    | d    |      |      |      |
#+TBLFM: @2$3='(mapconcat 'identity (delete-dups (list @2$1..@>$1 
@2$2..@>$2)) " ")


I did as you suggested and ran emacs -q -l ~/.emacs ~/path_to_file and 
got the same result as above:

org-table-eval-formula: Invalid regexp: "Regular expression too big"

The .emacs file is blank.

The version of emacs is GNU Emacs 24.3.1 (x86_64-pc-linux-gnu, ) of 
2013-07-27 on roseapple, modified by Debian
Org-mode version 7.9.3f (release_7.9.3f-17-g7524ef @ 
/usr/share/emacs/24.3/lisp/org/)

Using Mint 17 Xfce.

I don't think I'm doing something silly here but am at a loss to figure 
out the problem.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Worg Tutorial error: using Emacs lisp as formulas
  2014-08-27  7:21   ` Ciaran Mulloy
@ 2014-08-27  9:20     ` ciaran_mulloy
  2014-08-27 17:17       ` Andrea Rossetti
  2014-08-27 11:52     ` Nick Dokos
  1 sibling, 1 reply; 8+ messages in thread
From: ciaran_mulloy @ 2014-08-27  9:20 UTC (permalink / raw)
  To: emacs-orgmode

On 27/08/14 08:21, Ciaran Mulloy wrote:
> On 27/08/14 03:52, Nick Dokos wrote:
>> Ciaran Mulloy <crmulloy@gmail.com> writes:
>>
>>> Hi!
>>> I was fascinated to work through the examples provided in the
>>> org-tutorials sections under Worg and really see the power of using
>>> eLisp as spreadsheet formula: http://orgmode.org/worg/
>>> org-tutorials/org-spreadsheet-lisp-formulas.html
>>>
>>> However the use of the mapconcat function always generated an error:
>>> Invalid regex "Regular expression too big", even with only a few
>>> terms in the formula.
>>>
>>> The offending formula was:
>>>
>>> #+TBLFM: @2$3='(mapconcat 'identity (delete-dups (list @2$1..@>$1
>>> @2$2..@>$2)) " ")
>>>
>>> I experimented with variations of the formula getting the same error
>>> every time.
>>>
>>> I did a search of the org-mode forum without finding any solution.
>>>
>>> Any thoughts?
>>>
>> I can't reproduce it - e.g. this
>>
>> --8<---------------cut here---------------start------------->8---
>> | one | two | three         | four | five |
>> |-----+-----+---------------+------+------|
>> | a   | a   | a b c e f d g |      |      |
>> | a   | b   |               |      |      |
>> | b   | a   |               |      |      |
>> | c   | d   |               |      |      |
>> | e   | f   |               |      |      |
>> | f   | g   |               |      |      |
>> | a   | f   |               |      |      |
>> #+TBLFM: @2$3='(mapconcat 'identity (delete-dups (list @2$1..@>$1
>> @2$2..@>$2)) " ")
>> --8<---------------cut here---------------end--------------->8---
>>
>> works fine for me. This is with more-or-less latest org.
>>
>> Moreover, none of the functions used (mapconcat, identity, delete-dups
>> or list) use regexps at all. There is a chance that regexps are used by
>> the evaluator when building the ranges, but it's unlikely IMO, so the
>> regexp error seems like a red herring to me. How big a table did you
>> try? Did you try restarting emacs and redoing the evaluation? How about
>> starting emacs without any of your customizations and redoing the
>> evaluation? Something like this
>>
>>    emacs -q -l /path/to/minimal/init /path/to/file/with/the/table
>>
>> where the minimal init file just sets load-path if necessary and
>> initializes org.
>>
> Hi Nick,
> Many thanks for your input.
> 
> The table I was trying was the example in the tutorial shown as follows
> (not big) and no hint of a regex!:
> 
> | Col1 | Col2 | Col3 | Col4 | Col5 |
> |------+------+------+------+------|
> | a    | a    | :='(mapconcat 'identity (delete-dups (list @2$1..@>$1
> @2$2..@>$2)) " ") | b    |      |
> | b    | a    |      |      |      |
> | c    | d    |      |      |      |
> #+TBLFM: @2$3='(mapconcat 'identity (delete-dups (list @2$1..@>$1
> @2$2..@>$2)) " ")
> 
> 
> I did as you suggested and ran emacs -q -l ~/.emacs ~/path_to_file and
> got the same result as above:
> 
> org-table-eval-formula: Invalid regexp: "Regular expression too big"
> 
> The .emacs file is blank.
> 
> The version of emacs is GNU Emacs 24.3.1 (x86_64-pc-linux-gnu, ) of
> 2013-07-27 on roseapple, modified by Debian
> Org-mode version 7.9.3f (release_7.9.3f-17-g7524ef @
> /usr/share/emacs/24.3/lisp/org/)
> 
> Using Mint 17 Xfce.
> 
> I don't think I'm doing something silly here but am at a loss to figure
> out the problem.
> 
> 
> 
Hi,
Further to my earlier posting, tried calculating the table on my PC in
work and it worked!

So I'm a little puzzled at what the differences are.


Configurations as follows:
GNU Emacs 24.3.1 (x86_64-pc-linux-gnu, GTK+ Version 3.10.7) of
2014-03-07 on lamiak, modified by Debian
Org-mode version 7.9.3f (release_7.9.3f-17-g7524ef @
/usr/share/emacs/24.3/lisp/org/)
Cinnamon Mint 64 bit version 17

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Worg Tutorial error: using Emacs lisp as formulas
  2014-08-27  7:21   ` Ciaran Mulloy
  2014-08-27  9:20     ` ciaran_mulloy
@ 2014-08-27 11:52     ` Nick Dokos
  2014-08-27 23:29       ` Ciaran Mulloy
  1 sibling, 1 reply; 8+ messages in thread
From: Nick Dokos @ 2014-08-27 11:52 UTC (permalink / raw)
  To: emacs-orgmode

Ciaran Mulloy <crmulloy@gmail.com> writes:

> Hi Nick,
> Many thanks for your input.
>
> The table I was trying was the example in the tutorial shown as follows 
> (not big) and no hint of a regex!:
>
> | Col1 | Col2 | Col3 | Col4 | Col5 |
> |------+------+------+------+------|
> | a    | a    | :='(mapconcat 'identity (delete-dups (list @2$1..@>$1 
> @2$2..@>$2)) " ") | b    |      |
> | b    | a    |      |      |      |
> | c    | d    |      |      |      |
>
> #+TBLFM: @2$3='(mapconcat 'identity (delete-dups (list @2$1..@>$1 
> @2$2..@>$2)) " ")
>
>

I'm not sure where you got this: the tutorial's table does not have a
field formula afaict. If you eliminate the field formula, the example
works - just do C-c C-c on the #+TBLFM: line:

--8<---------------cut here---------------start------------->8---
| Col1 | Col2 | Col3    | Col4 | Col5 |
|------+------+---------+------+------|
| a    | a    |         | b    |      |
| b    | a    |         |      |      |
| c    | d    |         |      |      |
#+TBLFM: @2$3='(mapconcat 'identity (delete-dups (list @2$1..@>$1 @2$2..@>$2)) " ")
--8<---------------cut here---------------end--------------->8---

I don't know why the field formula fails.

>
> The version of emacs is GNU Emacs 24.3.1 (x86_64-pc-linux-gnu, ) of 
> 2013-07-27 on roseapple, modified by Debian
> Org-mode version 7.9.3f (release_7.9.3f-17-g7524ef @ 
> /usr/share/emacs/24.3/lisp/org/)
>

-- 
Nick

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Worg Tutorial error: using Emacs lisp as formulas
  2014-08-27  9:20     ` ciaran_mulloy
@ 2014-08-27 17:17       ` Andrea Rossetti
  0 siblings, 0 replies; 8+ messages in thread
From: Andrea Rossetti @ 2014-08-27 17:17 UTC (permalink / raw)
  To: ciaran_mulloy; +Cc: emacs-orgmode

Hello Ciaran,

  given your example:

> | Col1 | Col2 | Col3 | Col4 | Col5 |
> |------+------+------+------+------|
> | a    | a    | :='(mapconcat 'identity (delete-dups (list @2$1..@>$1 @2$2..@>$2)) " ") | b    |      |
> | b    | a    |      |      |      |
> | c    | d    |      |      |      |
> #+TBLFM: @2$3='(mapconcat 'identity (delete-dups (list @2$1..@>$1 @2$2..@>$2)) " ")

  I confirm I see your same hitting C-c C-c in the cell containing the
  formula. My setup is:

  - Org 8.2.7c
  - GNU Emacs 24.3.1 (i386-mingw-nt6.1.7600) of 2013-03-17 on MARVIN
  - Win 7

  Further observations I collected are:

  1) if I use "II-1" instead of ">" in the formula
     (though it's not exactly the same) it works properly.

  2) I tried to reduce the test case to a simpler formula:
     for example :='(length (list @2$1..@>$1)) gave me
     another, maybe more helpful error message:

     user-error: Spreadsheet error: invalid reference
     "'(length (list @2$1..@>$1))"

toggle-debug-on-error did not work for case 2) because
it's a "catched" error condition. Some random debugging 
made me think the problem lies in (or around) function
`org-table-get-range'. 

  Kindest regards,

  Andrea
     
  

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Worg Tutorial error: using Emacs lisp as formulas
  2014-08-27 11:52     ` Nick Dokos
@ 2014-08-27 23:29       ` Ciaran Mulloy
  2014-08-28  0:05         ` Andrea Rossetti
  0 siblings, 1 reply; 8+ messages in thread
From: Ciaran Mulloy @ 2014-08-27 23:29 UTC (permalink / raw)
  To: emacs-orgmode

On 27/08/14 12:52, Nick Dokos wrote:
> Ciaran Mulloy <crmulloy@gmail.com> writes:
>
>> Hi Nick,
>> Many thanks for your input.
>>
>> The table I was trying was the example in the tutorial shown as follows
>> (not big) and no hint of a regex!:
>>
>> | Col1 | Col2 | Col3 | Col4 | Col5 |
>> |------+------+------+------+------|
>> | a    | a    | :='(mapconcat 'identity (delete-dups (list @2$1..@>$1
>> @2$2..@>$2)) " ") | b    |      |
>> | b    | a    |      |      |      |
>> | c    | d    |      |      |      |
>>
>> #+TBLFM: @2$3='(mapconcat 'identity (delete-dups (list @2$1..@>$1
>> @2$2..@>$2)) " ")
>>
>>
> I'm not sure where you got this: the tutorial's table does not have a
> field formula afaict. If you eliminate the field formula, the example
> works - just do C-c C-c on the #+TBLFM: line:
>
> --8<---------------cut here---------------start------------->8---
> | Col1 | Col2 | Col3    | Col4 | Col5 |
> |------+------+---------+------+------|
> | a    | a    |         | b    |      |
> | b    | a    |         |      |      |
> | c    | d    |         |      |      |
> #+TBLFM: @2$3='(mapconcat 'identity (delete-dups (list @2$1..@>$1 @2$2..@>$2)) " ")
> --8<---------------cut here---------------end--------------->8---
>
> I don't know why the field formula fails.
>
>> The version of emacs is GNU Emacs 24.3.1 (x86_64-pc-linux-gnu, ) of
>> 2013-07-27 on roseapple, modified by Debian
>> Org-mode version 7.9.3f (release_7.9.3f-17-g7524ef @
>> /usr/share/emacs/24.3/lisp/org/)
>>
Hi Guys,
Some definite strangeness that I'd love to get to the bottom of, if only 
to preserve my sanity and understanding of how Org-Mode works!

The following is the example given in the excellent Worg tutorial on 
using Emacs Lisp in spreadsheet formulas: 
http://orgmode.org/worg/org-tutorials/org-spreadsheet-lisp-formulas.html


| Col1 | Col2 | Col3 | Col4 | Col5 |
|------+------+------+------+------|
| a    | a    |      | d    |      |
| a    | b    |      |      |      |
| b    | a    |      |      |      |
| c    | d    |      |      |      |


Inserting the following as a field formula in location @2$3:   
:='(mapconcat 'identity (delete-dups (list @2$1..@>$1 @2$2..@>$2)) " ") 
and doing a C-c or a C-u-C-c C-c generates an 'Invalid regexp: "Regular 
expression too big"' error.

I used the formula debug option C-{ to enable formula debugging and got 
the following result:


With the debugging formula on, when the debugger asks whether to 
continue on the newly entered formula I get the following output and the 
error is resolved and formula properly calculated as shown below.

This is the output provided by the formula debugger:

Substitution history of formula
Orig:   '(mapconcat 'identity (delete-dups (list @2$1..@5$1 @2$2..@5$2)) 
" ")
$xyz->  '(mapconcat 'identity (delete-dups (list @2$1..@5$1 @2$2..@5$2)) 
" ")
@r$c->  '(mapconcat 'identity (delete-dups (list #("a" 0 1 (fontified 
nil org-category "spreadsheets" face org-table)) #("a" 0 1 (fontified t 
org-category "spreadsheets" face org-table)) #("b" 0 1 (fontified t 
org-category "spreadsheets" face org-table)) #("c" 0 1 (fontified t 
org-category "spreadsheets" face org-table)) #("a" 0 1 (fontified nil 
org-category "spreadsheets" face org-table)) #("b" 0 1 (fontified t 
org-category "spreadsheets" face org-table)) #("a" 0 1 (fontified t 
org-category "spreadsheets" face org-table)) #("d" 0 1 (fontified t 
org-category "spreadsheets" face org-table)))) " ")
$1->    '(mapconcat 'identity (delete-dups (list #("a" 0 1 (fontified 
nil org-category "spreadsheets" face org-table)) #("a" 0 1 (fontified t 
org-category "spreadsheets" face org-table)) #("b" 0 1 (fontified t 
org-category "spreadsheets" face org-table)) #("c" 0 1 (fontified t 
org-category "spreadsheets" face org-table)) #("a" 0 1 (fontified nil 
org-category "spreadsheets" face org-table)) #("b" 0 1 (fontified t 
org-category "spreadsheets" face org-table)) #("a" 0 1 (fontified t 
org-category "spreadsheets" face org-table)) #("d" 0 1 (fontified t 
org-category "spreadsheets" face org-table)))) " ")
Result: a b c d
Format: NONE
Final:  a b c d



After The formula was correctly resolved and  shows the following result 
correctly:
| Col1 | Col2 | Col3    | Col4 | Col5 |
|------+------+---------+------+------|
| a    | a    | a b c d | d    |      |
| a    | b    |         |      |      |
| b    | a    |         |      |      |
| c    | d    |         |      |      |
#+TBLFM: @2$3='(mapconcat 'identity (delete-dups (list @2$1..@>$1 
@2$2..@>$2)) " ")


The output in the messages file is as follows:
Loading 00debian-vars...done
Loading /etc/emacs/site-start.d/50dictionaries-common.el (source)...
Loading debian-ispell...
Loading /var/cache/dictionaries-common/emacsen-ispell-default.el 
(source)...done
Loading debian-ispell...done
Loading /var/cache/dictionaries-common/emacsen-ispell-dicts.el 
(source)...done
Loading /etc/emacs/site-start.d/50dictionaries-common.el (source)...done
For information about GNU Emacs and the GNU system, type C-h C-a.
Loading vc-git...done
Formula debugging has been turned on
Re-applying formulas to full table...
Re-applying formula to field: @2$3
Re-applying formulas to full table...(line 3)
Re-applying formula to field: @2$3
Debugging Formula.  Continue to next? (y or n)  n
user-error: Abort
byte-code: Beginning of buffer [10 times]
Auto-saving...done
Mark set
org-table-eval-formula: Invalid regexp: "Regular expression too big" [2 
times]
Re-applying formulas to full table...
Re-applying formula to field: @2$3
Re-applying formula to field: @3$3
Re-applying formulas to full table...(line 3)
Re-applying formula to field: @2$3
Debugging Formula.  Continue to next? (y or n)  y
Re-applying formula to field: @3$3
Debugging Formula.  Continue to next? (y or n)  y
Re-applying formulas to 3 lines...done
Re-applying formulas...done [2 times]
Mark set
org-table-eval-formula: Invalid regexp: "Regular expression too big" [2 
times]
byte-code: End of buffer
Re-applying formulas to full table...
Re-applying formula to field: @2$3
Re-applying formula to field: @3$3
Re-applying formula to field: @4$3
Re-applying formulas to full table...(line 3)
Re-applying formula to field: @2$3
Debugging Formula.  Continue to next? (y or n)  y
Re-applying formula to field: @3$3
Debugging Formula.  Continue to next? (y or n)  y
Re-applying formula to field: @4$3
Debugging Formula.  Continue to next? (y or n)  y
Re-applying formulas to 3 lines...done
Re-applying formulas...done [2 times]
Auto-saving...done
Mark set
org-table-eval-formula: Invalid regexp: "Regular expression too big"
Auto-saving...
byte-code: End of buffer
Re-applying formulas to full table...
Re-applying formula to field: @2$3
Re-applying formula to field: @2$5
Re-applying formula to field: @3$3
Re-applying formula to field: @4$3
Re-applying formulas to full table...(line 3)
Re-applying formula to field: @2$3
Debugging Formula.  Continue to next? (y or n)  y
Re-applying formula to field: @2$5
Debugging Formula.  Continue to next? (y or n)  y
Re-applying formula to field: @3$3
Debugging Formula.  Continue to next? (y or n)  y
Re-applying formula to field: @4$3
Debugging Formula.  Continue to next? (y or n)  y
Re-applying formulas to 3 lines...done
Re-applying formulas...done [2 times]
Mark set
org-table-eval-formula: Invalid regexp: "Regular expression too big" [2 
times]
Formula debugging has been turned off
Formula debugging has been turned on
Formula debugging has been turned off
Formula debugging has been turned on
Mark set [2 times]
org-table-eval-formula: Invalid regexp: "Regular expression too big"
Formula debugging has been turned off
Formula debugging has been turned on
Re-applying formulas to full table...
Re-applying formula to field: @2$3
Re-applying formulas to full table...(line 4)
Re-applying formula to field: @2$3
Debugging Formula.  Continue to next? (y or n)  n
user-error: Abort
Mark set [4 times]
Auto-saving...
Mark set
Visual-Line mode enabled
Re-applying formulas to full table...
Re-applying formula to field: @2$3
Re-applying formulas to full table...(line 4)
Re-applying formula to field: @2$3
Debugging Formula.  Continue to next? (y or n)  y
Re-applying formulas to 4 lines...done
Re-applying formulas...done [2 times]
Auto-saving...
Mark set
org-table-eval-formula: Invalid regexp: "Regular expression too big" [2 
times]
call-interactively: No recursive edit is in progress
Formula debugging has been turned off
Formula debugging has been turned on
Saving file /home/crmulloy/.emacs.d/init.el...
Wrote /home/crmulloy/.emacs.d/init.el [2 times]
File added to front of agenda file list
Formula debugging has been turned off
Formula debugging has been turned on
Re-applying formulas to full table...
Re-applying formula to field: @2$3
Re-applying formula to field: @3$3
Re-applying formulas to full table...(line 4)
Re-applying formula to field: @2$3
Debugging Formula.  Continue to next? (y or n)  y
Re-applying formula to field: @3$3
Debugging Formula.  Continue to next? (y or n)  y
Re-applying formulas to 4 lines...done
Re-applying formulas...done [2 times]
byte-code: Beginning of buffer [5 times]
Auto-saving...done
Mark set
Auto-saving...done
Tables Row/Column numbers display turned on
Auto-saving...done
byte-code: End of buffer
Mark set
org-table-eval-formula: Invalid regexp: "Regular expression too big"
Re-applying formulas to full table...
Re-applying formula to field: @2$3
Re-applying formulas to full table...(line 4)
Re-applying formula to field: @2$3
Debugging Formula.  Continue to next? (y or n)  y
Re-applying formulas to 4 lines...done
Re-applying formulas...done [2 times]
Auto-saving...done
Mark set [2 times]
org-table-eval-formula: Invalid regexp: "Regular expression too big" [2 
times]
Re-applying formulas to full table...
Re-applying formula to field: @2$3
Re-applying formulas to full table...(line 4)
Re-applying formula to field: @2$3
Debugging Formula.  Continue to next? (y or n)  y
Re-applying formulas to 4 lines...done
Re-applying formulas...done [2 times]
Auto-saving...
byte-code: End of buffer [3 times]
byte-code: Beginning of buffer [8 times]
byte-code: Beginning of buffer


It seems that I can reliably reproduce a bug that I haven't been able to 
find on forums and that most other people have difficulty replicating. 
If I've done something to my installation of emacs I'd love to find out 
what has caused the problem.

Is there a way of determining what could be my issue?

Many thanks for your help!
Ciaran

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Worg Tutorial error: using Emacs lisp as formulas
  2014-08-27 23:29       ` Ciaran Mulloy
@ 2014-08-28  0:05         ` Andrea Rossetti
  0 siblings, 0 replies; 8+ messages in thread
From: Andrea Rossetti @ 2014-08-28  0:05 UTC (permalink / raw)
  To: Ciaran Mulloy; +Cc: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 1222 bytes --]

Ciaran Mulloy <crmulloy@gmail.com> writes:
> Inserting the following as a field formula in location @2$3:   
> :='(mapconcat 'identity (delete-dups (list @2$1..@>$1 @2$2..@>$2)) " ") 
> and doing a C-c or a C-u-C-c C-c generates an 'Invalid regexp: "Regular 
> expression too big"' error.
> ....
> It seems that I can reliably reproduce a bug that I haven't been able to 
> find on forums and that most other people have difficulty replicating. 
> If I've done something to my installation of emacs I'd love to find out 
> what has caused the problem.
>
> Is there a way of determining what could be my issue?

Hello Ciaran,

  long story short: digging in org-table.el I noticed
that functions f1=`org-table-formula-handle-first/last-rc'
and f2=`org-table-formula-substitute-names' were used
sometimes like this: (f2 (f1 x)), and sometimes
like this: (f2 x). 

  I conjecture it should always be (f2 (f1 x)), so I applied
to my org-table.el, reloaded its definitions with `eval-buffer'
and... it worked! 

  File formula.diff attached here shows the exact changes
that I applied on my org-table.el. (if you try formula.diff
and it works for you, beware that you need to remove or recompile
the old org-table.elc file). 


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: formula.diff --]
[-- Type: text/x-patch, Size: 1838 bytes --]

diff -c "-L" "c:/Users/andrea/AppData/Roaming/.emacs.d/elpa/org-20140804/org-table.el" "-L" "#<buffer org-table.el>" "c:/Users/andrea/AppData/Roaming/.emacs.d/elpa/org-20140804/org-table.el" "c:/Users/andrea/AppData/Local/Temp/buffer-content-3236IUh"
*** c:/Users/andrea/AppData/Roaming/.emacs.d/elpa/org-20140804/org-table.el
--- #<buffer org-table.el>
***************
*** 2600,2606 ****
  	    (unless (string-match "\\S-" fmt)
  	      (setq fmt nil))))
        (if (and (not suppress-const) org-table-formula-use-constants)
! 	  (setq formula (org-table-formula-substitute-names formula)))
        (setq orig (or (get-text-property 1 :orig-formula formula) "?"))
        (while (> ndown 0)
  	(setq fields (org-split-string
--- 2600,2606 ----
  	    (unless (string-match "\\S-" fmt)
  	      (setq fmt nil))))
        (if (and (not suppress-const) org-table-formula-use-constants)
! 	  (setq formula (org-table-formula-substitute-names (org-table-formula-handle-first/last-rc formula))))
        (setq orig (or (get-text-property 1 :orig-formula formula) "?"))
        (while (> ndown 0)
  	(setq fields (org-split-string
***************
*** 3767,3773 ****
        (if (eq what 'name) (setq var (substring match 1)))
        (when (eq what 'range)
  	(or (equal (string-to-char match) ?@) (setq match (concat "@" match)))
! 	(setq match (org-table-formula-substitute-names match)))
        (unless local
  	(save-excursion
  	  (end-of-line 1)
--- 3767,3773 ----
        (if (eq what 'name) (setq var (substring match 1)))
        (when (eq what 'range)
  	(or (equal (string-to-char match) ?@) (setq match (concat "@" match)))
! 	(setq match (org-table-formula-substitute-names (org-table-formula-handle-first/last-rc match))))
        (unless local
  	(save-excursion
  	  (end-of-line 1)

Diff finished.  Thu Aug 28 01:17:44 2014

[-- Attachment #3: Type: text/plain, Size: 59 bytes --]


  Hope it may be of some help, kindest regards.

  Andrea

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2014-08-28  0:05 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-08-26 19:18 Worg Tutorial error: using Emacs lisp as formulas Ciaran Mulloy
2014-08-27  2:52 ` Nick Dokos
2014-08-27  7:21   ` Ciaran Mulloy
2014-08-27  9:20     ` ciaran_mulloy
2014-08-27 17:17       ` Andrea Rossetti
2014-08-27 11:52     ` Nick Dokos
2014-08-27 23:29       ` Ciaran Mulloy
2014-08-28  0:05         ` Andrea Rossetti

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).