* org-table.el (org-table-sort-lines): Fix case sensitive sorting,
improve docstring.
* test-org-table.el (test-org-table/sort-lines): Enforce C locale when
testing alphabetic sorting.
‘sort-subr’ ignores ‘sort-fold-case’ when a predicate is provided. To
correctly handle case-sensitivity, we now bake it into the predicate.
Since we are now sorting according to the user’s locale, WITH-CASE
will not make a difference in most instances, since most locales
always sort case-insensitively (cf. how GNU sort ignores the ‘-f’
switch). We now mention this in the function docstring.
In order to meaningfully test case-sensitive sorting, we now enforce
the C locale in the respective unit test.
* lisp/org-list.el (org-toggle-item): Delete headings'
metadata before turning them into list items.
* lisp/org.el (org-log-drawer-start-re): New variable.
(org-log-drawer-end-re, org-log-drawer-re): New constants.
(org-heading-delete-metadata): New function.
(org-setting-tags): Fix comment.
* lisp/org-clock.el (org-clock--mode-line-heading): Strip
links from the heading.
This restores the previous behavior before commit 66554298.
Thanks to Matt Lundin for reporting this.
* lisp/org-gnus.el (org-gnus-store-link): Fix storing link from an
article when point in the summary buffer does not match the article.
Reported-by: Kevin Brubeck Unhammer <unhammer@fsfe.org>
<http://lists.gnu.org/r/emacs-orgmode/2018-03/msg00037.html>
* lisp/org.el (org-paste-subtree): Never split a section. Instead
always insert tree before the headline after point. Use `org-yank'
to split the section.
* testing/lisp/test-org.el (test-org/paste-subtree): New test.
* lisp/org.el (org-paste-subtree): Use `org-outline-regexp-bol'.
The function cannot detect the proper level when a headline around
point contains spurious white spaces after the stars.
* org-babel-groovy-evaluate: replace '-' by '_' in temp file names.
Apparently, the JVM uses file names in the construction of names of internal
objects and dashes are illegal in that context. See
https://stackoverflow.com/questions/48893994/groovy-in-org-mode-babel
for an example.
* lisp/org-agenda.el (org-agenda-mode): Only set `org-agenda-show-log'
and `org-agenda-clock-report-mode' to their default values when
constructing an agenda buffer, and not when redoing it.
* lisp/org-agenda.el (org-agenda-log-mode,
org-agenda-clockreport-mode): Do not set the global default value
`org-agenda-start-with-log-mode' (respectively
`org-agenda-start-with-clockreport-mode') with the current value of
`org-agenda-log-mode' (respectively `org-agenda-clockreport-mode'),
which, with sticky agendas is even buffer local.
`org-agenda-show-log' indicates if the the current agenda buffer has
log-mode enabled. When building a new agenda buffer, it gets its
value from `org-agenda-start-with-log-mode'. It is is semantically a
buffer local variable: when creating a new agenda buffer you expect it
to be set to the value in `org-agenda-start-with-log-mode'. However,
2e9c2d71 while fixing an issue with sticky agendas rendered the
variable `org-agenda-log-mode' effectively global: toggling log mode
in a given agenda buffer modifies the global default for all agenda
buffers. The same reasoning holds for clockreport mode.
This change ensures that a log or clockreport mode change made in one
agenda buffer does not propagate to other agenda buffers, existing or
new. The change is however preserved on org-agenda-redo in the
initial agenda buffer, whether using sticky agendas or not.
TINYCHANGE
* lisp/org-capture.el (org-capture-finalize): Refresh clock mode line.
* lisp/org-clock.el (org-clock--mode-line-heading): New function.
(org-clock-get-clock-string): Small refactoring.
(org-clock-update-mode-line): Add optional argument. Use new function.
(org-clock-in): Use new function.
* lisp/ox-publish.el (org-publish-org-to):
(org-publish-collect-index):
(org-publish--store-crossrefs):
(org-publish-resolve-external-link): Use `file-truename' instead of
`expand-file-name'.
Do not preserve symbolic links when a unique identifier is needed,
e.g., when storing or retrieving file properties from cache.
* lisp/org-table.el (org-table--shrunk-field): Fix function when on
a hline.
* testing/lisp/test-org-table.el (test-org-table/shrunk-columns): Add
tests.
Reported-by: Kaushal Modi <kaushal.modi@gmail.com>
<http://lists.gnu.org/r/emacs-orgmode/2018-02/msg00231.html>
* org.el (org-sort-entries): Use collated sorting.
(org-tags-sort-function): Use collated sorting.
(org-string-collate-greaterp): Add helper-function to use as defcustom
option, since there is no ‘string-collate-greaterp’ in Emacs.
* org-compat.el (org-string-collate-lessp): Add proxy to fall-back on
string-lessp when string-collate-lessp is missing (Emacs ≤ 24).
* test-org.el (test-org/string-collate-lessp): Add test.
(test-org/sort-entries): Add regression test for non-ASCII inputs.
‘org-sort-entries’ and ‘org-tags-sort-function’ advertise alphabetic
sorting, but actually sort based only on character code. This
produces non-alphabetic orderings of strings in non-ASCII locales.
E. g., German Umlauts “Ä Ü Ö” are alphabetically sorted as if they
were “A U O”, whereas sorting based on character-code will place them
after “Z”, which is unexpected.
* lisp/org-macs.el (org-completing-read): Use `define-key' instead of
`org-defkey'.
For bootstrapping reasons, "org-macs.el" isn't expected to require
functions from "org.el". Besides, minibuffer isn't supposed to depend
of `org-disputed-keys' either.
* lisp/org-clock.el: When the org-mode is called for the very first time
any functionality that requires the org-clock-sum-today used to fail.
(e.g. a column that calculates CLOCKSUM_T)
TINYCHANGE
* lisp/org-element.el (org-element-macro-parser): Ignore
non-meaningful spaces (e.g., indentation).
(org-element-macro-interpreter): Do not interpret macro from its raw
value. Instead, build it again from its parsed contents.
* lisp/org-table.el (org-table-with-shrunk-field): New macro.
(org-table-get-field):
(org-table-toggle-column-width): Use new macro.
(org-table--shrunk-field): Update function.
(org-table--shrink-field): When there is a width cookie, leave first
characters editable.
* lisp/org.el (org-self-insert-command):
(org-delete-backward-char):
(org-delete-char): Small refactoring. Handle shrink overlays.
* testing/lisp/test-org-table.el (test-org-table/toggle-column-width):
Update tests.
* lisp/org-table.el (org-table-current-column): Return a meaningful
value also on hlines.
(org-table-toggle-column-width): Use `org-table-current-column'
instead of re-inventing wheel.
* testing/lisp/test-org-table.el (test-org-table/current-column): New
test.
* org-clock.el (org-clock-special-range): Set `untilnow' to use the
year -50000, rather than the earliest representable date.
(org-clock--oldest-date): Remove.
The `untilnow' range relied on the constant `org-clock--oldest-date`
to find the earliest representable date, which caused delays when
loading `org-clock' on systems where `most-negative-fixnum' is large.
This change removes that constant in favor of a simpler hack to
produce a range between the current time and before the dawn of human
civilization. If this breaks your workflow, please report to the Time
Police.
TINYCHANGE
* lisp/org-compat.el (org-calendar-to-agenda-key):
(org-calendar-insert-diary-entry-key): Moved from "org.el".
(org--setup-calendar-bindings): New function.
Fixes: Bug#10289
* lisp/org.el (org-store-link): Fix parameter to `completing-read',
which expects a string, not a symbol.
Reported-by: "Stefan-W. Hahn" <stefan.hahn@s-hahn.de>
* lisp/ox-html.el (org-html--wrap-latex-environment): New function.
(org-html--math-environment-p): New function.
(org-html-latex-environment): Use `org-html--wrap-latex-environment' to
wrap equation in HTML container (non-MathJax modes). Make latex
environment unnumbered when compiling equations to images. Insert latex
label in environment in MathJax mode.
(org-html-link): Calculate equation number limiting counter to equation
environments. Use eqref for link when using MathJax
(org-html--make-unlabelled-latex-environment): New function.
* lisp/org-list.el (org-toggle-checkbox): When called with a prefix
argument, ignore all drawers after planning info line. Fix
docstring.
Reported-by: Samuel Wales <samologist@gmail.com>
<http://lists.gnu.org/r/emacs-orgmode/2018-01/msg00278.html>
* lisp/org-clock.el (org-clock-find-position): Use a faster call to hide
clock drawer.
* lisp/org.el (org-log-beginning): Make sure logbook drawer is folded as
soon as inserted.
(org-store-log-note): Remove unnecessary call to
`org-cycle-hide-drawers'.
* lisp/org.el (org-mode): Add special invisibility spec for drawers.
(org-show-set-visibility): Handle new invisibility spec.
(org-clean-visibility-after-subtree-move): Fix argument for
`org-cycle-hide-drawers'. `overview' is a no-op.
(org-cycle-hook):
(org-cycle-internal-local):
(org-flag-drawer):
(org-move-subtree-down):
(org-show-entry):
* lisp/org-agenda.el (org-agenda-clock-in):
* lisp/org-clock.el (org-clock-goto):
* lisp/org-feed.el (org-feed-update):
* lisp/org-inlinetask.el (org-inlinetask-toggle-visibility): Do not hide
drawers when expanding a headline.
Drawers and headlines visibility are now unrelated. As a consequence,
there is no need to hide drawers every time a headline is expanded.