Re: [O] 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-10 Thread Michael Brand
Hi Rares

On Fri, Jul 8, 2016 at 6:06 AM, Rares Vernica  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



Re: [O] 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 Thread Rares Vernica
Michael Brand  writes:

> Hi Rares
>
> On Mon, Jul 4, 2016 at 6:28 PM, Rares Vernica  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



Re: [O] 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 Thread Michael Brand
Hi Rares

On Mon, Jul 4, 2016 at 6:28 PM, Rares Vernica  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



[O] 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-06 Thread Rares Vernica
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)
 )


org-copy-bug.dribble
Description: Binary data