* org-agenda.el (org-agenda-show-clocking-issues): Fix regex
to prevent false-positive clocking issue detection.
Regex was missing a grouping to restrict the alternative \| to the
literal parentheses.
TINYCHANGE
* lisp/org-attach-git.el (org-attach-git-dir): New option to allow
using the attachment directory of the current node as a Git
repository, if correctly initialized.
(org-attach-git-use-annex, org-attach-git-annex-get-maybe)
(org-attach-git-commit): Use the new option.
* etc/ORG-NEWS: Announce the new option.
Link: https://orgmode.org/list/87y2g8rj7s.fsf@posteo.net/
* lisp/ox-latex.el (org-latex--inline-image)
(org-latex--decorate-table): Recognize arbitrary :float value.
* etc/ORG-NEWS: Announce new :float capability.
LaTeX users are able to define arbitrary float types.
This patch makes them accessible from Org mode.
* lisp/org-agenda.el (org-get-time-of-day): Use "09:00" instead
of " 9:00" when displaying as a string.
This makes the string more readable, especially for users reading
the agenda with a screen reader.
Reported-by: Sébastien Hinderer
* testing/lisp/test-org.el (test-org/with-electric-indent)
(test-org/without-electric-indent): Make sure
`org-adapt-indentation' is consistent with expected results.
* testing/lisp/test-org-element.el (test-org-element/cache-bugs): A
new test documenting a known bug:
1. Create initial file like:
P0
P1
| a | b |
<point>| c | d |
Note that second line of the table is not indented. Now,
org-element-at-point returns table-row.
2. Modify the file to test org-element-cache
P0
- item
P1
| a | b |
<point>| c | d |
Now, the first (indented) row of the table belongs to item. The
second row should be an individual table and org-element-at-point
returns table.
* lisp/org.el (org-up-heading-safe): Use buffer-local cache to store
positions of parent headings. The cache is invalidated when buffer
text is changed, according to `buffer-chars-modified-tick'.
(org--up-heading-cache): Buffer-local hash-table storing the cache.
(org--up-heading-cache-tick): The buffer modification state for
currently active `org--up-heading-cache'.
The optimisation is critical when running agenda or org-entry-get
queries using property/tag inheritance. In such scenarios
`org-up-heading-safe' can be called thousands of times. For example,
building todo agenda on large number of headings lead to the following
benchmark results:
Benchmark:
1. (elp-instrument-function #'org-up-heading-safe)
2. Run agenda
3. (elp-results) ;; function, # calls, total time, avg time
Without cache:
org-up-heading-safe 27555 8.4234025759 0.0003056941
With cache, first run:
org-up-heading-safe 23227 0.5300747539 2.282...e-05
With cache, second run on unchanged buffer:
org-up-heading-safe 23227 0.1447754880 6.233...e-06
The final speedup is 1-2 orders of magnitude (~15-56 times).
* testing/lisp/test-org-element.el (test-org-element/cache): Add
spaces to make the "abcd" table a single table. The old version uses
example org text with two tables and was passing because of another
bug in org-element-cache. Testing the old version with
org-element-use-cache set to nil would yield error, while it should
not.
* lisp/ol.el (org-link-make-regexps): Allow URLs with up to two
levels of nested brackets.
* lisp/org.el (org-link-plain-re): Update docstring.
* testing/lisp/test-ol.el: Add tests for the plain link regular
expression.
(org-link-plain-re): Update docstring. Now,
Now, URLs like [1] can be matched. The new regexp is based on [2].
The docstring of `org-link-plain-re' explicitly mentions that the
regexp must contain groups for the link type and the path.
[1] https://doi.org/10.1016/0160-791x(79)90023-x
[2] https://daringfireball.net/2010/07/improved_regex_for_matching_urls
* lisp/org-refile.el (org-refile-get-targets): Ensure that the
arguments of `file-name-nondirectory' and `file-truename' are not nil.
This prevents errors from being raised when calling `org-refile' in a
buffer that is not visiting a file.
TINYCHANGE
* lisp/org-agenda.el (org-agenda-highlight-todo): Skip formatting
the to-do keyword when `org-agenda-todo-keyword-format' is the
empty string.
TINYCHANGE
* lisp/org-attach-git.el (org-attach-git-dir): New option to allow
using the attachment directory of the current node as a Git
repository, if correctly initialized.
(org-attach-git-use-annex, org-attach-git-annex-get-maybe)
(org-attach-git-commit): Use the new option.
* etc/ORG-NEWS: Announce the new option.
Link: https://orgmode.org/list/87y2g8rj7s.fsf@posteo.net/
* lisp/ox-latex.el (org-latex--inline-image)
(org-latex--decorate-table): Recognize arbitrary :float value.
* etc/ORG-NEWS: Announce new :float capability.
LaTeX users are able to define arbitrary float types.
This patch makes them accessible from Org mode.
* lisp/org-agenda.el (org-get-time-of-day): Use "09:00" instead
of " 9:00" when displaying as a string.
This makes the string more readable, especially for users reading
the agenda with a screen reader.
Reported-by: Sébastien Hinderer
* testing/lisp/test-org.el (test-org/with-electric-indent)
(test-org/without-electric-indent): Make sure
`org-adapt-indentation' is consistent with expected results.
* testing/lisp/test-org-element.el (test-org-element/cache-bugs): A
new test documenting a known bug:
1. Create initial file like:
P0
P1
| a | b |
<point>| c | d |
Note that second line of the table is not indented. Now,
org-element-at-point returns table-row.
2. Modify the file to test org-element-cache
P0
- item
P1
| a | b |
<point>| c | d |
Now, the first (indented) row of the table belongs to item. The
second row should be an individual table and org-element-at-point
returns table.
* lisp/org.el (org-up-heading-safe): Use buffer-local cache to store
positions of parent headings. The cache is invalidated when buffer
text is changed, according to `buffer-chars-modified-tick'.
(org--up-heading-cache): Buffer-local hash-table storing the cache.
(org--up-heading-cache-tick): The buffer modification state for
currently active `org--up-heading-cache'.
The optimisation is critical when running agenda or org-entry-get
queries using property/tag inheritance. In such scenarios
`org-up-heading-safe' can be called thousands of times. For example,
building todo agenda on large number of headings lead to the following
benchmark results:
Benchmark:
1. (elp-instrument-function #'org-up-heading-safe)
2. Run agenda
3. (elp-results) ;; function, # calls, total time, avg time
Without cache:
org-up-heading-safe 27555 8.4234025759 0.0003056941
With cache, first run:
org-up-heading-safe 23227 0.5300747539 2.282...e-05
With cache, second run on unchanged buffer:
org-up-heading-safe 23227 0.1447754880 6.233...e-06
The final speedup is 1-2 orders of magnitude (~15-56 times).
* testing/lisp/test-org-element.el (test-org-element/cache): Add
spaces to make the "abcd" table a single table. The old version uses
example org text with two tables and was passing because of another
bug in org-element-cache. Testing the old version with
org-element-use-cache set to nil would yield error, while it should
not.