* lisp/org-compat.el (org-find-library-dir): rename
org-find-library-name (misleading) and implement with a function
that exists identically in Emacs/XEmacs.
* UTILITIES/org-fixup.el: change calls to org-find-library-dir.
Simplify invocations of git, use the same arguments as in targets.mk
and use only functions that work the same in EMacs and XEmacs.
* lisp/org-exp-blocks.el: change calls to org-find-library-dir.
* lisp/org.el: change calls to org-find-library-dir. Make require for
noutline fail silently because it is missing from XEmacs.
* UTILITIES/org-fixup.el (org-make-org-version): change defconst to
defun for org-release and org-git-version and close over those
variables (do not make them global anymore).
* UTILITIES/org-fixup.el (org-fixup): check for org-version.el or try
to use git to get the version from the worktree (code uses parts of
the former implementation from org.el).
* lisp/org.el (org-version): use functions instead of global variables
to get the version strings and remove the defvaralias to
org-version. Warn when encountering a mixed installation (org and
org-install.el should be found in the same directory).
Supported use-cases:
1) Org uninstalled (and possibly uncompiled) from Git or tarball.
1a) No org-version.el or org-install.el exists in worktree. Partially
supported configuration, org version is determined from git if
possible via UTILITIES/org-fixup.el. However, Emacs versions
delivered with orgmode will provide autoloads that may or may not work
with that version of org (mixed installation). If such a situation is
encountered, warn the user. It can work if the autoloads from the
installation match the ones that would be generated for the worktree,
which generelly is only the case if there is a relatively recent
installation in site-lisp.
1b) Autoload file org-install.el exists in worktree. Fully supported
configuration, org version is determined from git if possible via
UTILITIES/org-fixup.el.
1c) Both org-version.el or org-install.el exist in worktree.
Recommended configuration for 1), org version is taken from
org-version.el (git never gets invoked).
2) Org installed. Both org-version.el and org-install.el must exist
in install directory. Only supported configuration for 2), org
version is taken from org-version.el (git never gets invoked since
UTILITIES/org-fixup.el is not available).
Any unsupported configuration should still yield a version string, but
it will contain "N/A" to alert the user about a botched org
installation.
* lisp/Makefile: remove stop targets, make autoloads depend on source
files again (not .PHONY). Keep autoload files around after compile,
but make sure to re-create them before installation and compile.
Remove autoload files before re-creating them to avoid errors from
Emacs when saving the buffer.
* targets.mk: remove stop targets and the mess that was necessary to
support them.
* default.mk: must use $(CURDIR) not $(PWD), $(PWD) is not well
defined when using sudo.
* UTILITIES/org-fixup.el: new file, has functions to create
org-version.el and org-install.el, now use by the build system.
* lisp/Makefile: delete said definitions, now sourced from toplevel
make. "clean" and "cleanall" should do the same thing here, make
them aliases, ditto for "all" and "compile". Both autoload files
must be .PHONY and depend only on each other for correct ordering.
Make "compile-dirty" actually do that again (i.e. no implied
"clean", but "cleanauto"). Remove autoload files directly after
install, so that they will only be present when explicitly requested
by "autoloads". Create "org-version.el" before compilation as it is
mandatory. Remove $(ORG_MAKE_INSTALL) and $(ORG_MAKE_VERSION),
source from default.mk/local.mk.
* default.mk: move definitions for $(ORG_MAKE_INSTALL) and
$(ORG_MAKE_VERSION) here so that they can be more easily configured.
Remove definition of "org-release" from $(BATCH) and $(BTEST), now
sourced from "org-version.el".
* targets.mk: target reorganization, introduce "stop" targets to
prevent cleaning of org-version.el. Use new targets for "oldorg" to
make it more robust in case of errors. New target "cleanutils" to
remove any "*.elc" files that may have been produced there and add
this target to "cleanall". Do the same in cleancontrib.
* lisp/org.el: add with-no-warning to defvar for two unprefixed global
variables from calendar.el (there's nothing else we can do inside
org until it is fixed in calendar.el).
* org-latex.el
(org-export-latex-link-with-unknown-path-format): New option.
(org-export-latex-links): Use it.
Thanks to Sébastien Vauban for a preliminary patch for this.
* org-agenda.el (org-agenda-get-timestamps): Remove any
active timestamp from the headline text, not only those for
the current date.
Thanks to SW, Nick Dokos, Samuel Wales and Brian van den Broek
for inputs about this.
* org.el (org-allow-promoting-top-level-subtree): New option
to allow promoting a top-level subtree.
(org-called-with-limited-levels): New variable, dynamically
bound within the `org-with-limited-levels' macro.
(org-promote): Use the new option to allow promoting a
top-level subtree.
* org-macs.el (org-with-limited-levels): Let-bind
`org-called-interactively-p' to t.
Promoting a top-level subtree can be useful but should not be allowed by
default, as this restructuring is only reversible with M-x undo RET.
* org.el (org-create-formula-image-with-dvipng)
(org-create-formula-image-with-imagemagick): Make sure a file
exists before trying to delete it.
Thanks to Benjamin Motz for this idea.
* lisp/org-footnote.el (org-footnote-new): Don't call
org-footnote-unique-label if org-footnote-auto-label is set to
random.
Calling org-footnote-unique-label calls org-footnote-all-labels, which
can dramatically slow down footnote creation in a buffer with many
footnotes. This is unecessary if org-footnote-auto-label is set to
random.
* org-table.el (org-table-time-string-to-seconds): Return the
empty string if provided.
(org-table-eval-formula): When assigning a duration string,
handle it correctly -- i.e. don't make any computation on it,
except the one to insert it using the correct duration format.
Thanks to Sébastien Vauban for spotting this.
* org.el (org-indent-line-function): Fix bug.
Don't fall back systematically on `org-fb-vars' to do
the indentation. Only fall back at then end, when no
modification has been done by indenting a la Org. In
that case, use `indent-according-to-mode' instead of
using `indent-line-function' to avoid a possible loop.
Thanks to Eric Fraga, Christopher Schmidt and Nicolas
Goaziou who reported problems with this.
* org-clock.el (org-frame-title-format-backup): New variable
to store the value of `frame-title-format' before `org-clock'
might replace it by `org-clock-frame-title-format'.
(org-clock-frame-title-format): New option.
(org-frame-title-string): Delete.
(org-clock-update-mode-line): Minor code reformatting.
(org-clock-in, org-clock-out, org-clock-cancel): Use
`org-clock-frame-title-format'.
See http://thread.gmane.org/gmane.emacs.orgmode/55477
Trying to update `frame-title-format' is tricky and error-prone, since
users can set up this variable in many different ways. AFAIK there is
no equivalent to `global-mode-string' for setting the frame title, we
would use it otherwise.
The user can still configure `org-clock-frame-title-format' the way he
wants.
* org.el (org-toggle-heading): Allow `C-u C-c *' to mark the
list at point before converting items to headings. With a
simple universal-argument, set `current-prefix-arg' to 1,
otherwise keep the numeric value.
* org-agenda.el (org-agenda-mode-map): New keybinding ̀*' to
mark all entries for bulk action.
(org-agenda-menu): New menu item for marking all entries.
(org-agenda-bulk-mark-all): New function to mark all entries.
(org-agenda-bulk-mark-regexp): Minor docstring fix.
(org-agenda-bulk-unmark): With a prefix argument, unmark all.
Also send a better message.
(org-agenda-bulk-remove-all-marks): Rename to
`org-agenda-bulk-unmark-all'. Check against
`org-agenda-bulk-marked-entries' before trying to unmark
entries. Minor docstring fix.
(org-agenda-bulk-unmark-all): Renamed from
̀org-agenda-bulk-remove-all-marks'.
* org.el (org-src-prevent-auto-filling): New option to prevent
auto-filling in src blocks. This defaults to nil to avoid people
being surprised that no auto-fill occurs in Org buffers where they
use `auto-fill-mode'.
(org-auto-fill-function): Use the new option.
Thanks to Ken Williams for this feature request and to Charles
C. Berry for a preliminary patch for this.