I started from the 78ec8e commit then cherry-picked and squashed
commits that have been done in master since then, except the bad
commits that overwrote the tree (in master) with the tree in maint.
This commit also bumps the version number to 7.8.06.
The only "fix" that was made between 78ec8e and the previous commit
is e0072f which has been reported to break stuff.
This fixes a wrong merge that should not have happened:
commit 7e903a merges the master branch into the maint branch,
while we really want to keep the maint branch a bugfix-only
branch.
This commit reverts back the maint branch to its state before
merging the master branch. From there, we will fix remaining
problems with the maint branch (e.g. copyright issues) then
release this maint branch as Org-mode 7.8.05.
Format for fields which contain the result of a formula.
For example, using \"~%s~\" will display the result within tilde
characters. Beware that modifying the display can prevent the
field from being used in another formula.
Based on an idea of Dov Grobgeld.
* lisp/org-table.el (org-table-formula-handle-first/last-rc): Do not
expand pointers to first/last row/column that are inside a call
to `remote'.
(org-table-get-remote-range): Expand pointers to first/last
row/column.
Wu Feng writes:
> Hello,
>
> First, please check below simple example, I defined two tables (T1 and
> T2). In table-2, I remotely refer to the @>$1 (last row, column 1) and
> $LR2 (last row, column 2) of T1.
>
> #+TBLNAME: T1
> | 11 | 12 |
> | 21 | 22 |
> | 31 | 32 |
>
> #+TBLNAME: T2
> | xxx | xxx | xxx | xxx |
> | # | 21 | 32 | |
> #+TBLFM: @>$3=remote(T1,$LR2)::@>$2=remote(T1,@>$1)
>
> Obviously, the expected results are:
>
> - remote(T1,@>$1) is replaced by 31
> - remote(T1,$LR2) is replaced by 32
>
> But I got 21 for remote(T1,@>$1). The $LR version works perfectly
> (though the manual says $LR is out-dated)
>
> Below are debug info when evaluating remote(T1,@>$1). Looks like @> in
> the remote reference is mapped to the last row of the current table, not
> of the remote table.
>
> Substitution history of formula
> Orig: remote(T1,@2$1)
> $xyz-> remote(T1,@2$1)
> @r$c-> (21)
> $1-> (21)
> Result: 21
> Format: NONE
> Final: 21
>
> Emacs : GNU Emacs 23.3.1 (i686-pc-linux-gnu, GTK+ Version 2.24.6)
> of 2011-09-13 on shirley
> Package: Org-mode version 7.7
Additionally, replace one
(or (org-mode-p) (derived-mode-p 'org-mode))
with
(derived-mode-p 'org-mode)
cause that is reflexive anyway (returns true, if the current mode is
org-mode).
Delete one check testing for org-mode or org derived mode
* lisp/org-table.el (org-table-fix-formulas): Throw error when changing
formula leads to an invalid formula.
This fix catches at least one case, the one described by Nicolas:
> | 1 | 2 | 3 |
> | 1 | 2 | 3 |
> #+TBLFM: @2$1..@2$3=@1
> If I remove the second column (M-S-Left), the formula is correctly
> updated. But when I remove the last column, the formula gets partly
> deleted and becomes:
>
> #+TBLFM: @2$1..
>
* org-table.el (org-table-get-specials): Allow the use of the
underscore character in column names.
(org-table-get-specials): Allow the use of the underscore
character in field names.
Thanks to András Major for bringing this up and to Nick Dokos
for a suggested fix.
Also remove blank lines before the ";;; org*el ends here" declarations.
Having a "Version" header forced us to update every file when releasing a
new version of Org; it also forced us to update every file when merging Org
with Emacs trunk, thus cluttering the diffs between the previously merged
version and the new one with useless information.
Glenn Morris suggested this in emacs-devel:
http://lists.gnu.org/archive/html/emacs-devel/2011-08/msg00322.html
* org-table.el (org-table-eval-formula): Fix missing variable
in let construct.
(org-table-time-string-to-seconds): Fix missing variable in
let construct.
Thanks to John Wiegley for pointing at this.
This allows to display the output of duration computations
as a fraction of days, hours, minutes or seconds.
Thanks to Daniel E. Doherty for bringing up this need.
* org-table.el (org-table-duration-custom-format): New
defcustom to select output format of durations computations.
(org-table-time-seconds-to-string): Use the new variable.
(org-table-eval-formula): Allow `t' as a flag, on top of `T'.
`t' will use the custom output format defined in
`org-table-duration-custom-format.
* org-table.el (org-table-eval-formula): Fix bug when a
formula "range" is just one cell.
(org-table-time-string-to-seconds): don't check whether
we manipulate a string.
* org-table.el (org-table-time-string-to-seconds): match
either HH:MM:SS or HH:MM (instead of MM:SS).
Thanks to Gustav Wikström for suggesting this change.
* org-table.el (org-table-eval-formula): Throw an error when
trying to replace complex range with invalid references.
Thanks to Ken Williams for pointing this out.
* install/git/org-mode/lisp/org-table.el
(org-table-time-seconds-to-string): use `org-format-seconds'
instead of `format-seconds'.
* install/git/org-mode/lisp/org-macs.el (org-format-seconds):
handle case where `format-seconds' does not exist.
* install/git/org-mode/lisp/org-table.el
(org-table-time-string-to-seconds)
(org-table-time-seconds-to-string): New functions.
(org-table-eval-formula): Implement the "T" (time) flag for
computing durations.
* lisp/ob.el (org-babel-sha1-hash): Adding optional argument KIND to
all org-called-interactively-p function invocations.
* lisp/org-agenda.el (org-agenda-redo): Adding optional argument KIND to
all org-called-interactively-p function invocations.
(org-agenda-show-1): Adding optional argument KIND to all
org-called-interactively-p function invocations.
(org-agenda-set-tags): Adding optional argument KIND to all
org-called-interactively-p function invocations.
* lisp/org-ascii.el (org-export-as-latin1): Adding optional argument
KIND to all org-called-interactively-p function invocations.
(org-export-as-latin1-to-buffer): Adding optional argument KIND to
all org-called-interactively-p function invocations.
(org-export-as-utf8-to-buffer): Adding optional argument KIND to all
org-called-interactively-p function invocations.
(org-export-region-as-ascii): Adding optional argument KIND to all
org-called-interactively-p function invocations.
* lisp/org-docbook.el (org-export-region-as-docbook): Adding optional
argument KIND to all org-called-interactively-p function
invocations.
* lisp/org-html.el (org-export-region-as-html): Adding optional
argument KIND to all org-called-interactively-p function
invocations.
* lisp/org-latex.el (org-export-region-as-latex): Adding optional
argument KIND to all org-called-interactively-p function
invocations.
* lisp/org-table.el (org-table-blank-field): Adding optional argument
KIND to all org-called-interactively-p function invocations.
(org-table-current-column): Adding optional argument KIND to all
org-called-interactively-p function invocations.
(org-table-current-dline): Adding optional argument KIND to all
org-called-interactively-p function invocations.
(org-table-sort-lines): Adding optional argument KIND to all
org-called-interactively-p function invocations.
(org-table-sum): Adding optional argument KIND to all
org-called-interactively-p function invocations.
(org-table-rotate-recalc-marks): Adding optional argument KIND to
all org-called-interactively-p function invocations.
(org-table-eval-formula): Adding optional argument KIND to all
org-called-interactively-p function invocations.
(orgtbl-send-table): Adding optional argument KIND to all
org-called-interactively-p function invocations.
* lisp/org.el (org-mode): Adding optional argument KIND to all
org-called-interactively-p function invocations.
(org-copy-subtree): Adding optional argument KIND to all
org-called-interactively-p function invocations.
(org-paste-subtree): Adding optional argument KIND to all
org-called-interactively-p function invocations.
(org-store-link): Adding optional argument KIND to all
org-called-interactively-p function invocations.
(org-todo): Adding optional argument KIND to all
org-called-interactively-p function invocations.
(org-occur): Adding optional argument KIND to all
org-called-interactively-p function invocations.
Interactive-p is an obsolete function as of Emacs 23.2.
`org-called-interactively-p' takes care of the current (x)Emacs
version and use either `interactive-p' (for XEmacs and Emacs<23.2)
or `called-interactively-p'.
* lisp/org-agenda.el (org-agenda-redo): Replacing call to now-defunct
function `interactive-p'.
(org-agenda-show-1): Replacing call to now-defunct function
`interactive-p'.
(org-agenda-set-tags): Replacing call to now-defunct function `interactive-p'.
* lisp/org-ascii.el: Replacing call to now-defunct function
`interactive-p'.
(org-export-as-latin1): Replacing call to now-defunct function
`interactive-p'.
(org-export-as-latin1-to-buffer): Replacing call to now-defunct
function `interactive-p'.
(org-export-as-utf8): Replacing call to now-defunct function
`interactive-p'.
(org-export-as-utf8-to-buffer): Replacing call to now-defunct function
`interactive-p'.
(org-export-region-as-ascii): Replacing call to now-defunct function
`interactive-p'.Replacing call to now-defunct function `interactive-p'.
* lisp/org-docbook.el: Replacing call to now-defunct function
`interactive-p'.
(org-export-region-as-docbook): Replacing call to now-defunct function
`interactive-p'.Replacing call to now-defunct function `interactive-p'.
* lisp/org-html.el: Replacing call to now-defunct function
`interactive-p'.
(org-export-region-as-html): Replacing call to now-defunct function
`interactive-p'.Replacing call to now-defunct function `interactive-p'.
* lisp/org-latex.el: Replacing call to now-defunct function
`interactive-p'.
(org-export-region-as-latex): Replacing call to now-defunct function
`interactive-p'.Replacing call to now-defunct function `interactive-p'.
* lisp/org-macs.el: Replacing call to now-defunct function
`interactive-p'.
(org-called-interactively-p): Replacing call to now-defunct function
`interactive-p'.Replacing call to now-defunct function `interactive-p'.
* lisp/org-table.el: Replacing call to now-defunct function
`interactive-p'.
(org-table-blank-field): Replacing call to now-defunct function
`interactive-p'.
(org-table-current-column): Replacing call to now-defunct function
`interactive-p'.Replacing call to now-defunct function
`interactive-p'.
(org-table-current-dline): Replacing call to now-defunct function
`interactive-p'.Replacing call to now-defunct function
`interactive-p'.
(org-table-sort-lines): Replacing call to now-defunct function
`interactive-p'.
(org-table-sum): Replacing call to now-defunct function
`interactive-p'.
(org-table-rotate-recalc-marks): Replacing call to now-defunct
function `interactive-p'.
(org-table-eval-formula): Replacing call to now-defunct function
`interactive-p'.
(orgtbl-send-table): Replacing call to now-defunct function `interactive-p'.
* lisp/org.el: Replacing call to now-defunct function `interactive-p'.
(org-mode): Replacing call to now-defunct function `interactive-p'.
(org-copy-subtree): Replacing call to now-defunct function
`interactive-p'.
(org-paste-subtree): Replacing call to now-defunct function
`interactive-p'.
(org-store-link): Replacing call to now-defunct function
`interactive-p'.
(org-todo): Replacing call to now-defunct function `interactive-p'.
(org-occur): Replacing call to now-defunct function `interactive-p'.
* org.el (org-self-insert-command): Use `delete-char' instead of
`delete-backward-char'.
* org-table.el (orgtbl-self-insert-command): Dto.
According to the doc string `delete-backward-char' "is meant for
interactive use only; from Lisp, better use `delete-char' with a
negated argument."