emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* Bug: Table formula does not copy time interval correctly [8.2.10 (release_8.2.10 @ /usr/share/emacs/25.0.94/lisp/org/)]
@ 2016-07-04 16:28 Rares Vernica
  2016-07-07  6:52 ` Michael Brand
  0 siblings, 1 reply; 4+ messages in thread
From: Rares Vernica @ 2016-07-04 16:28 UTC (permalink / raw)
  To: emacs-orgmode


[-- Attachment #1.1: Type: text/plain, Size: 3430 bytes --]

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

     http://orgmode.org/manual/Feedback.html#Feedback

Your bug report will be posted to the Org-mode mailing list.
------------------------------------------------------------------------

In the following table:

| [2016-07-03 Sun]--[2016-07-04 Mon] | 1d | d   |
| [2016-07-03 Sun]--[2016-07-05 Tue] | 2d | 2 d |
#+TBLFM: $3=$2

The second column is computed by pressing C-u C-c C-y. This sequence
calculates the time difference between the time-stamps in the previous
column and inserts the difference in the current column. This is fine.

Now, for the third column, I insert the formula listed at the bottom of
the table. Once applied, the result of the formula for the fist row is
just "d" instead of "1d". So, it seems that the value is not copied
correctly.

This seems to work fine if the time-stamp range is greater than one
day. Also, for the second row, the value is copied correctly but there
is an extra " " inserted between the number and the "d" letter. This
might not be desirable.

Appending "D" at the end of the formula, yields the same result:

| [2016-07-03 Sun]--[2016-07-04 Mon] | 1d | d   |
| [2016-07-03 Sun]--[2016-07-05 Tue] | 2d | 2 d |
#+TBLFM: $3=$2;D

I also tried appending "T" at the end of the formula:

| [2016-07-03 Sun]--[2016-07-04 Mon] | 1d | 00:00:01 |
| [2016-07-03 Sun]--[2016-07-05 Tue] | 2d | 00:00:02 |
#+TBLFM: $3=$2;T

The numeric value is copied correctly but the days are now changed to
seconds.

I attached a dribble file which allows you to reproduce the first row in
the first table.

Emacs  : GNU Emacs 25.0.94.1 (x86_64-redhat-linux-gnu, GTK+ Version 3.20.4)
 of 2016-05-18
Package: Org-mode version 8.2.10 (release_8.2.10 @
/usr/share/emacs/25.0.94/lisp/org/)

current state:
==============
(setq
 org-tab-first-hook '(org-hide-block-toggle-maybe
              org-src-native-tab-command-maybe
              org-babel-hide-result-toggle-maybe
              org-babel-header-arg-expand)
 org-speed-command-hook '(org-speed-command-default-hook
              org-babel-speed-command-hook)
 org-occur-hook '(org-first-headline-recenter)
 org-metaup-hook '(org-babel-load-in-session-maybe)
 org-confirm-shell-link-function 'yes-or-no-p
 org-after-todo-state-change-hook '(org-clock-out-if-current)
 org-src-mode-hook '(org-src-babel-configure-edit-buffer
             org-src-mode-configure-edit-buffer)
 org-agenda-before-write-hook '(org-agenda-add-entry-text)
 org-babel-pre-tangle-hook '(save-buffer)
 org-mode-hook '(#[nil "\300\301\302\303\304$\207"
           [org-add-hook change-major-mode-hook org-show-block-all
            append local]
           5]
         #[nil "\300\301\302\303\304$\207"
           [org-add-hook change-major-mode-hook
            org-babel-show-result-all append local]
           5]
         org-babel-result-hide-spec org-babel-hide-all-hashes)
 org-ctrl-c-ctrl-c-hook '(org-babel-hash-at-point
              org-babel-execute-safely-maybe)
 org-cycle-hook '(org-cycle-hide-archived-subtrees org-cycle-hide-drawers
          org-cycle-hide-inline-tasks org-cycle-show-empty-lines
          org-optimize-window-after-visibility-change)
 org-confirm-elisp-link-function 'yes-or-no-p
 org-metadown-hook '(org-babel-pop-to-session-maybe)
 org-clock-out-hook '(org-clock-remove-empty-clock-drawer)
 )

[-- Attachment #1.2: Type: text/html, Size: 4089 bytes --]

[-- Attachment #2: org-copy-bug.dribble --]
[-- Type: application/octet-stream, Size: 107 bytes --]

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

* Re: Bug: Table formula does not copy time interval correctly [8.2.10 (release_8.2.10 @ /usr/share/emacs/25.0.94/lisp/org/)]
  2016-07-04 16:28 Bug: Table formula does not copy time interval correctly [8.2.10 (release_8.2.10 @ /usr/share/emacs/25.0.94/lisp/org/)] Rares Vernica
@ 2016-07-07  6:52 ` Michael Brand
  2016-07-08  4:06   ` Rares Vernica
  0 siblings, 1 reply; 4+ messages in thread
From: Michael Brand @ 2016-07-07  6:52 UTC (permalink / raw)
  To: Rares Vernica; +Cc: Org Mode

Hi Rares

On Mon, Jul 4, 2016 at 6:28 PM, Rares Vernica <rvernica@gmail.com> wrote:

> | [2016-07-03 Sun]--[2016-07-04 Mon] | 1d | d   |
> | [2016-07-03 Sun]--[2016-07-05 Tue] | 2d | 2 d |
> #+TBLFM: $3=$2

A Calc formula interprets field values as a symbolic expressions to
calculate with. To copy literally one needs a Lisp formula:

| [2016-07-03 Sun]--[2016-07-04 Mon] | 1d | 1d |
| [2016-07-03 Sun]--[2016-07-05 Tue] | 2d | 2d |
#+TBLFM: $3 = '(identity $2)

Michael

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

* Re: Bug: Table formula does not copy time interval correctly [8.2.10 (release_8.2.10 @ /usr/share/emacs/25.0.94/lisp/org/)]
  2016-07-07  6:52 ` Michael Brand
@ 2016-07-08  4:06   ` Rares Vernica
  2016-07-10 14:38     ` Michael Brand
  0 siblings, 1 reply; 4+ messages in thread
From: Rares Vernica @ 2016-07-08  4:06 UTC (permalink / raw)
  To: Michael Brand; +Cc: Org Mode

Michael Brand <michael.ch.brand@gmail.com> writes:

> Hi Rares
>
> On Mon, Jul 4, 2016 at 6:28 PM, Rares Vernica <rvernica@gmail.com> wrote:
>
>> | [2016-07-03 Sun]--[2016-07-04 Mon] | 1d | d   |
>> | [2016-07-03 Sun]--[2016-07-05 Tue] | 2d | 2 d |
>> #+TBLFM: $3=$2
>
> A Calc formula interprets field values as a symbolic expressions to
> calculate with. To copy literally one needs a Lisp formula:
>
> | [2016-07-03 Sun]--[2016-07-04 Mon] | 1d | 1d |
> | [2016-07-03 Sun]--[2016-07-05 Tue] | 2d | 2d |
>
> #+TBLFM: $3 = '(identity $2)

That did the trick, thanks!

Just to clarify, how would you fix this:

| [2016-07-05 Tue]--[2016-07-06 Wed] | 1d | vsum(d) |
| [2016-07-06 Wed]--[2016-07-07 Thu] | 1d | 2 d     |
#+TBLFM: $3=vsum(@1$-1..@0$-1)

Notice the "vsum(d)" instead of the expected "1 d". How would you add
"identity" here?

Thanks!
Rares

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

* Re: Bug: Table formula does not copy time interval correctly [8.2.10 (release_8.2.10 @ /usr/share/emacs/25.0.94/lisp/org/)]
  2016-07-08  4:06   ` Rares Vernica
@ 2016-07-10 14:38     ` Michael Brand
  0 siblings, 0 replies; 4+ messages in thread
From: Michael Brand @ 2016-07-10 14:38 UTC (permalink / raw)
  To: Rares Vernica; +Cc: Org Mode

Hi Rares

On Fri, Jul 8, 2016 at 6:06 AM, Rares Vernica <rvernica@gmail.com> wrote:

> Just to clarify, how would you fix this:
>
> | [2016-07-05 Tue]--[2016-07-06 Wed] | 1d | vsum(d) |
> | [2016-07-06 Wed]--[2016-07-07 Thu] | 1d | 2 d     |
> #+TBLFM: $3=vsum(@1$-1..@0$-1)
>
> Notice the "vsum(d)" instead of the expected "1 d".

Depending on the number of fields in a range Org builds just a value
or a Calc vector of values. This is due to the comparison of r1/r2 and
c1/c2 which are the row and column beginning and end of the range in
the function org-table-get-range:

    (if (and (not corners-only)
             (or (not rangep) (and (= r1 r2) (= c1 c2))))
        ;; Just one field.
        [...]
      ;; A range, return a vector.
      [...])

I can not think of any use case where this should be more useful than
substituting ~(and (= r1 r2) (= c1 c2))~ with ~nil~. But since this
substitution could break existing usage I suggest to add ~vec~ to the
Calc formula:

| [2016-07-05 Tue]--[2016-07-06 Wed] | 1d | d      | [d]      | d   |
| [2016-07-06 Wed]--[2016-07-07 Thu] | 1d | [d, d] | [[d, d]] | 2 d |
#+TBLFM: $3 = @1$2..@0$2 :: $4 = vec(@1$2..@0$2) :: $5 = vsum(vec(@1$2..@0$2))

Michael

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

end of thread, other threads:[~2016-07-10 14:39 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-07-04 16:28 Bug: Table formula does not copy time interval correctly [8.2.10 (release_8.2.10 @ /usr/share/emacs/25.0.94/lisp/org/)] Rares Vernica
2016-07-07  6:52 ` Michael Brand
2016-07-08  4:06   ` Rares Vernica
2016-07-10 14:38     ` Michael Brand

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).