* [BUG] org-table-eval-formula mishandles semicolons in formulas [9.7-pre (release_9.6.14-1019-g5092ec @ /home/nick/src/emacs/org/org-mode/lisp/)] @ 2024-01-12 23:34 Nick Dokos 2024-01-13 12:53 ` Ihor Radchenko 0 siblings, 1 reply; 4+ messages in thread From: Nick Dokos @ 2024-01-12 23:34 UTC (permalink / raw) To: emacs-orgmode Remember to cover the basics, that is, what you expected to happen and what in fact did happen. You don't know how to make a good report? See https://orgmode.org/manual/Feedback.html#Feedback Your bug report will be posted to the Org mailing list. ------------------------------------------------------------------------ `org-table-eval-formula' interprets *any* semicolon in a formula as the beginning of a format specifier. So if the formula contains a literal semicolon that is not a format specifier #+TBLFM: $3='(concat "COMMENT ON public.layout_forms." $1 " IS " (rc-sq $2) ";") The problem is that `org-table-eval-formula' decides that the semicolon is the beginning of a format specifier very early in the function and splits off the "specifier" from the rest of the formula, leading to errors when the truncated formula is evaluated later. ThHere is a semi-reasonable workaround in that the regexp matches the *last* semicolon, so we can add a semicolon at the end of the formula, specifying an empty format, but the formula is not truncated any longer. If it is decided that the code must not be changed, then maybe the workaround could be added to the documentation (perhaps as a footnote to section "Emacs Lisp forms as formulas"). This was reported by user `vfclists' on Emacs SE: https://emacs.stackexchange.com/questions/80062/is-it-because-this-org-table-formula-contains-double-quotes-it-doesnt-work Emacs : GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.38, cairo version 1.17.8) of 2023-12-28 Package: Org mode version 9.7-pre (release_9.6.14-1019-g5092ec @ /home/nick/src/emacs/org/org-mode/lisp/) -- Nick ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [BUG] org-table-eval-formula mishandles semicolons in formulas [9.7-pre (release_9.6.14-1019-g5092ec @ /home/nick/src/emacs/org/org-mode/lisp/)] 2024-01-12 23:34 [BUG] org-table-eval-formula mishandles semicolons in formulas [9.7-pre (release_9.6.14-1019-g5092ec @ /home/nick/src/emacs/org/org-mode/lisp/)] Nick Dokos @ 2024-01-13 12:53 ` Ihor Radchenko 2024-05-19 11:12 ` Ihor Radchenko 0 siblings, 1 reply; 4+ messages in thread From: Ihor Radchenko @ 2024-01-13 12:53 UTC (permalink / raw) To: Nick Dokos; +Cc: emacs-orgmode Nick Dokos <ndokos@gmail.com> writes: > `org-table-eval-formula' interprets *any* semicolon in a formula as the > beginning of a format specifier. So if the formula contains a literal > semicolon that is not a format specifier > > #+TBLFM: $3='(concat "COMMENT ON public.layout_forms." $1 " IS " (rc-sq $2) ";") > > The problem is that `org-table-eval-formula' decides that the semicolon > is the beginning of a format specifier very early in the function and > splits off the "specifier" from the rest of the formula, leading to > errors when the truncated formula is evaluated later. Confirmed. Important. > ThHere is a semi-reasonable workaround in that the regexp matches the > *last* semicolon, so we can add a semicolon at the end of the formula, > specifying an empty format, but the formula is not truncated any longer. > If it is decided that the code must not be changed, then maybe the > workaround could be added to the documentation (perhaps as a footnote to > section "Emacs Lisp forms as formulas"). > > This was reported by user `vfclists' on Emacs SE: > https://emacs.stackexchange.com/questions/80062/is-it-because-this-org-table-formula-contains-double-quotes-it-doesnt-work We should eventually fix this bug. I do not think that we should add workarounds into the manual. The problem is that org-table.el code is fragile. A proper fix would require rewriting formula parsing code to something more reliable. -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at <https://orgmode.org/>. Support Org development at <https://liberapay.com/org-mode>, or support my work at <https://liberapay.com/yantar92> ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [BUG] org-table-eval-formula mishandles semicolons in formulas [9.7-pre (release_9.6.14-1019-g5092ec @ /home/nick/src/emacs/org/org-mode/lisp/)] 2024-01-13 12:53 ` Ihor Radchenko @ 2024-05-19 11:12 ` Ihor Radchenko 2024-05-21 9:28 ` Ihor Radchenko 0 siblings, 1 reply; 4+ messages in thread From: Ihor Radchenko @ 2024-05-19 11:12 UTC (permalink / raw) To: Nick Dokos; +Cc: emacs-orgmode Ihor Radchenko <yantar92@posteo.net> writes: > Nick Dokos <ndokos@gmail.com> writes: > >> `org-table-eval-formula' interprets *any* semicolon in a formula as the >> beginning of a format specifier. So if the formula contains a literal >> semicolon that is not a format specifier >> >> #+TBLFM: $3='(concat "COMMENT ON public.layout_forms." $1 " IS " (rc-sq $2) ";") >> >> The problem is that `org-table-eval-formula' decides that the semicolon >> is the beginning of a format specifier very early in the function and >> splits off the "specifier" from the rest of the formula, leading to >> errors when the truncated formula is evaluated later. > > Confirmed. > Important. Fixed, on main. https://git.savannah.gnu.org/cgit/emacs/org-mode.git/commit/?id=5af062511 -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at <https://orgmode.org/>. Support Org development at <https://liberapay.com/org-mode>, or support my work at <https://liberapay.com/yantar92> ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [BUG] org-table-eval-formula mishandles semicolons in formulas [9.7-pre (release_9.6.14-1019-g5092ec @ /home/nick/src/emacs/org/org-mode/lisp/)] 2024-05-19 11:12 ` Ihor Radchenko @ 2024-05-21 9:28 ` Ihor Radchenko 0 siblings, 0 replies; 4+ messages in thread From: Ihor Radchenko @ 2024-05-21 9:28 UTC (permalink / raw) To: Nick Dokos; +Cc: emacs-orgmode Ihor Radchenko <yantar92@posteo.net> writes: >>> #+TBLFM: $3='(concat "COMMENT ON public.layout_forms." $1 " IS " (rc-sq $2) ";") > ... > Fixed, on main. > https://git.savannah.gnu.org/cgit/emacs/org-mode.git/commit/?id=5af062511 Alas. We cannot restrict what to put after ";" in formulas, because it can be interpreted as format spec for `format': | a | b | percent of a in b | |----+----+-------------------| | 10 | 20 | #ERROR | | 20 | 30 | #ERROR | #+TBLFM: $3=($1/$2)*100;%.2f%% So, your example #+TBLFM: $3='(concat "COMMENT ON public.layout_forms." $1 " IS " (rc-sq $2) ";") is actually ambiguous - it may also be interpreted as ") format specifier. You can solve the problem by putting an extra ; at the end of the formula: #+TBLFM: $3='(concat "COMMENT ON public.layout_forms." $1 " IS " (rc-sq $2) ";"); I added an example explaining this caveat to the manual. https://git.savannah.gnu.org/cgit/emacs/org-mode.git/commit/?id=6799350a8 | 1 | 1; | #+tblfm: $2='(concat $1 ";"); | 1 | ") | #+tblfm: $2='(concat $1 ";") -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at <https://orgmode.org/>. Support Org development at <https://liberapay.com/org-mode>, or support my work at <https://liberapay.com/yantar92> ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2024-05-21 9:27 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2024-01-12 23:34 [BUG] org-table-eval-formula mishandles semicolons in formulas [9.7-pre (release_9.6.14-1019-g5092ec @ /home/nick/src/emacs/org/org-mode/lisp/)] Nick Dokos 2024-01-13 12:53 ` Ihor Radchenko 2024-05-19 11:12 ` Ihor Radchenko 2024-05-21 9:28 ` Ihor Radchenko
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).