* lisp/org-table.el (org-table-range-regexp):
Omit or rewrite useless repetitions that risk being very slow in
the backtracking regexp engine in Emacs.
Omit/rewrite useless regexp repetitions
7ddd08bd3ebc48998062a7d29274cf080256a48f
Paul Eggert
Fri Apr 12 19:43:41 2019 -0700
* lisp/org-capture.el (org-capture-place-item): When there is no list
to augment, insert new list after planning info and properties
drawers.
* testing/lisp/test-org-capture.el (test-org-capture/item): Add tests.
Reported-by: Allen Li <darkfeline@felesatra.moe>
<http://lists.gnu.org/r/emacs-orgmode/2019-04/msg00060.html>
* lisp/org-src.el (org-src-get-lang-mode): New function.
(org-src--get-lang-mode): Rename to `org-src-get-lang-mode'.
(org-src-font-lock-fontify-block):
(org-edit-latex-environment):
(org-edit-export-block):
(org-edit-src-code):
(org-edit-inline-src-code): Use new function.
* lisp/org-eshell.el (org-eshell-open):
* lisp/org.el (org-deadline-time-hour-regexp)
(org-scheduled-time-hour-regexp):
Avoid attempts to chain ranges, as this can be confusing.
For example, instead of [0-9-_.], use [0-9_.-].
Improve regexp advice again, and unchain ranges
f9ff60e0d7288e30cdbd1e43225059f1374441f1
Paul Eggert
Tue Apr 2 15:01:34 2019 -0700
* lisp/org-capture.el (org-capture-fill-template): Prevent raising an
error when template is an empty entry.
* testing/lisp/test-org-capture.el (test-org-caputre/entry): Add test.
Reported-by: Roland Everaert <reveatwork@gmail.com>
<http://lists.gnu.org/r/emacs-orgmode/2019-04/msg00019.html>
* lisp/org-datetree.el (org-datetree--find-create):
* lisp/org-pcomplete.el (org-thing-at-point):
Fix regular expression and similar syntax.
More minor regex cleanup
e14c0d748efe35afc653151ff18c4dd93dcc456e
Paul Eggert
Tue Mar 19 18:47:53 2019 -0700
Nicolas Goaziou <mail@nicolasgoaziou.fr> writes:
> Could you provide a commit message for your patch?
* lisp/ob-core.el (org-babel-make-language-alias): Add edit-prep to
the list of defalias'ed functions.
* lisp/org-agenda.el (org-agenda-breadcrumbs-separator): New variable.
(org-agenda-format-item): Use org-agenda-breadcrumbs-separator
* etc/ORG-NEWS (New variable: ~org-agenda-breadcrumbs-separator~): New variable.
* lisp/ob-abc.el (org-babel-expand-body:abc, org-babel-execute:abc):
* lisp/ob-forth.el (org-babel-forth-session-execute):
Add backslash in regexp for correctness.
* lisp/org-list.el (org-plain-list-ordered-item-terminator):
Add backslash in doc comment so that it appears as intended.
Fix some ineffective backslashes in string literals
8832cc5f91a420db6bea65f381a3fb3597eb7523
Mattias Engdegård
Sat Mar 16 11:38:58 2019 -0700
* lisp/org-agenda.el (org-agenda):
* lisp/org-clock.el (org-clock-out, org-clock-display):
* lisp/org.el (org-refile):
Don’t trust arbitrary strings to not contain "%" or "`" in
(message (concat STRING1 STRING2 ...)).
Be safer about "%" in message formats
3739d51ef3b935b30e40ba4534fe362bc685865f
Paul Eggert
Thu Mar 7 09:05:56 2019 -0800
* lisp/org-lint.el (org-lint-non-existent-setupfile-parameter): Do not
warn when setup file is a URL.
* testing/lisp/test-org-lint.el (test-org-lint/non-existent-setupfile-parameter):
Add test.
Reported-by: Dominik Schrempf <dominik.schrempf@gmail.com>
<http://lists.gnu.org/r/emacs-orgmode/2019-03/msg00169.html>
* lisp/ob-emacs-lisp.el (org-babel-execute:emacs-lisp,
org-babel-emacs-lisp-lexical): Factor out the conversion of the
:lexical source block argument to a form that is appropriate for
`lexical-binding' and the LEXICAL argument to `eval'.
* lisp/ob-emacs-lisp.el (org-babel-edit-prep:emacs-lisp): Set
`lexical-binding'.
* lisp/ob-emacs-lisp.el (org-babel-default-header-args:emacs-lisp):
Update docstring.
* lisp/ox-texinfo.el (org-texinfo-plain-list): Support counter in the
first item of the list.
Mid-list counters are not supported, per Texinfo limitation.
* lisp/org-clock.el (org-dblock-write:clocktable): Test every scope
combination before trying to call a function.
Reported-by: Nikolay Kudryavtsev <nikolay.kudryavtsev@gmail.com>
<http://lists.gnu.org/r/emacs-orgmode/2019-03/msg00034.html>
* lisp/org-lint.el (org-lint--checkers): Add new linter.
(org-lint-percent-encoding-link-escape): New function.
* testing/lisp/test-org-lint.el (test-org-lint/percenc-encoding-link-escape):
New test.
* lisp/ol.el (org-link-re-with-space):
(org-link-re-with-space2):
(org-link-re-with-space3): Remove variables.
(org-link-make-regexps): Do not set removed variables.
These variables are not accurate. They are not used throughout the
code base either.
* lisp/ob-tangle.el (org-babel-detangle):
(org-babel-tangle-jump-to-org): Use `org-link-bracket-re'.
* lisp/ol.el (org-link-analytic-bracket-re): Remove variable.
(org-link-make-regexps): Do not set it.
(org-link-display-format): Use `org-link-bracket-re'
(org-link-trim-scheme): New function.
(org-store-link): Remove code duplication.
* lisp/org-protocol.el (org-protocol-parse-parameters): Un-escape
extracted link as it is url-encoded externally.
Reported-by: Pierre Téchoueyres <pierre.techoueyres@free.fr>
<http://lists.gnu.org/r/emacs-orgmode/2019-03/msg00081.html>
* lisp/ob-core.el (org-babel-execute-src-block): Make directory if
":dir path" does not exist when ":mkdirp yes" exist.
* doc/org-manual.org (Header arguments): Document it.
* testing/lisp/test-ob.el: Add a specific testing file for ob-core.el,
and add a testing for ":mkdir yes" work with :dir header argument
usage.
* lisp/org-clock.el (org-clock-clocktable-default-properties):
Remove :scope.
The :scope value is handled specially in `org-clock-report'. Setting
it here would override the special mechanism there.
Reported-by: Nikolay Kudryavtsev <nikolay.kudryavtsev@gmail.com>
<http://lists.gnu.org/r/emacs-orgmode/2019-03/msg00034.html>
* lisp/org-clock.el (org-clock-out):
* lisp/org.el (org-evaluate-time-range):
Avoid double-rounding of time-related values. Simplify.
* lisp/org-clock.el (org-resolve-clocks-if-idle):
Use time-since instead of open-coding most of it.
* lisp/org-agenda.el (org-agenda-show-clocking-issues):
* lisp/org-capture.el (org-capture-set-target-location):
* lisp/org-table.el (org-table-sum):
* lisp/org.el (org-babel-load-file, org-2ft, org-time-stamp)
(org-read-date-analyze, org-time-stamp-to-now):
Simplify.
Note(km): Many of the changes from 476066e89 have been dropped for
compatibility with older Emacsen.
Avoid some double-rounding of Lisp timestamps
476066e89d6f0bb87220da690b8a476bf9655b80
Paul Eggert
Fri Feb 22 18:33:57 2019 -0800
* lisp/ox-publish.el (org-publish-sitemap):
Simplify and remove assumptions about timestamp format.
Don’t assume that current-time and plain encode-time return
timestamps in (HI LO US PS) format.
Remove some timestamp format assumptions
eba66c1eafeef6512259c9b46face2b03c7433b8
Paul Eggert
Fri Feb 22 13:31:01 2019 -0800
* lisp/org-id.el: Update RFC citations.
Update citations of Internet RFCs
b5e66f46a6f33f9d633e6cc3e0770a566bdfcf6b
Paul Eggert
Sat Feb 16 12:00:02 2019 -0800
* lisp/org.el (org-update-radio-target-regexp): Let radio target works well with Chinese.
There is no need to force split words with the help
of space for Chinese, this change let the below
example works well.
<<<天空>>>
我爱天空和大地
^^^^
* doc/org-manual.org (Using Column View in the Agenda): Updated
reference to variable.
* lisp/org-agenda.el (org-agenda-finalize): Set buffer local variable
instead.
* lisp/org-colview.el (org-overriding-columns-format): Renamed.
(org-agenda-overriding-columns-format): Renamed.
(org-local-columns-format): New buffer local variable.
(org-columns-edit-value): Updated reference to variable.
(org-columns-next-allowed-value): Updated reference to variable.
(org-agenda-columns): Updated reference to variable.
Setting org-agenda-overriding-columns-format as a buffer local value
interferes with how it is used as a dynamically scoped var, so use a
separate variable for buffer local setting.
* lisp/org-archive.el (org-get-local-archive-location):
(org-extract-archive-file):
(org-extract-archive-heading): Remove function.
(org-all-archive-files): Fix function.
(org-archive--compute-location): New function.
* lisp/org-archive.el (org-archive-subtree): Use new function.
Do not look for multiple ARCHIVE keywords. This is already taken care
of in `org-set-regexps-and-options', through `org-archive-location'
buffer-local variable.
* lisp/org-agenda.el (org-agenda-get-restriction-and-command):
when no matcher was specified there is no point in showing
a trailing colon (and space).
* lisp/org.el (org-display-inline-images): Even though Org syntax
doesn't support nested links, display an image when the function is
called on a link that contains a single file name in its
description.
Reported-by: "Dietrich Foethke" <foethke@web.de>
<http://lists.gnu.org/r/emacs-orgmode/2019-02/msg00280.html>
* lisp/ox-icalendar.el (org-icalendar-blocked-headline-p): Only
consider children when looking for blocked entries, not the headline
itself.
Reported-by: Duane Farnsworth <dfarnsworth@clarion.edu>
<http://lists.gnu.org/r/emacs-orgmode/2019-02/msg00275.html>
* lisp/org-list.el (org-list-struct-indent): Match case-sensitively
against current bullet in order the tell the difference between "a."
and "A.".
* testing/lisp/test-org-list.el (test-org-list/indent-item): Add test.
* lisp/org-table.el (org-table--make-shrinking-overlay): Take care of
concatenating `org-table-separator-space' and
`org-table-shrunk-column-indicator'.
(org-table--shrink-field): Change signature to include column's
alignment. Improve algorithm.
(org-table--shrink-columns): Apply signature change.
* lisp/org-clock.el (org-clock-out-if-current): Autoload function.
* lisp/org.el (org-todo): Do not call `org-clock-out-if-current' if
`org-clock' is not loaded yet.
* lisp/org-clock.el (org-clock-out-if-current): Ignore narrowing.
* lisp/org.el (org-todo): Call directly previous function instead of
relying on a hook.
Reported-by: Leo Vivier <leo.vivier@gmail.com>
<http://lists.gnu.org/r/emacs-orgmode/2019-02/msg00132.html>
* lisp/org.el (org-open-at-point): On a tag open a tags view for just
the tag at point. Recent behavior for multiple tags was to open a
tags view for the complete tag string.
* lisp/ox-publish.el (org-publish-cache-file-needs-publishing):
(org-publish-cache-ctime-of-src): Use internal time format for
timestamps.
Reported-by: Colin Baxter <m43cap@yandex.com>
<http://lists.gnu.org/r/emacs-orgmode/2019-02/msg00072.html>
* lisp/org-colview.el (org-columns-compute-all):
* lisp/org-timer.el (org-timer-start):
(org-timer-pause-or-continue):
(org-timer-seconds):
* lisp/org.el (org-read-date-analyze): Favor nil argument to
explicitly passing current-time result to float-time and decode-time.
Most of these "(current-time) => nil" changes were made in the Emacs
codebase, but we stayed with the original state because we relied on
explicitly overriding current-time in the tests. As of the last
commit, we no longer need to do this and can use org-test-at-time
instead.
* lisp/org-macs.el (org-preserve-local-variables): When file local
variables are preserved and located in a folded section, make sure
to hide them again.
Reported-by: Scott Randby <srandby@gmail.com>
<http://lists.gnu.org/r/emacs-orgmode/2019-02/msg00105.html>
* lisp/ox.el (org-export--update-included-link): New function.
(org-export--prepare-file-contents): Use new function. Also check
possible file links within link's description.
* testing/lisp/test-ox.el (test-org-export/expand-include/links): Fix
prefix. Add tests.
Reported-by: "Dietrich Foethke" <foethke@web.de>
<http://lists.gnu.org/r/emacs-orgmode/2019-02/msg00103.html>
* lisp/ox-publish.el (org-publish-cache-file-needs-publishing):
(org-publish-cache-ctime-of-src): Use internal time format for
timestamps.
Reported-by: Colin Baxter <m43cap@yandex.com>
<http://lists.gnu.org/r/emacs-orgmode/2019-02/msg00072.html>
* lisp/org-habit.el (org-habit-build-graph): Display the date also for
day when the task has not been marked done. If the task has been
marked done the string "DONE" appears in the display.
Hint: With { M-x tooltip-mode } the date appears in a tooltip
* lisp/org-agenda.el (org-agenda-get-scheduled): Use the face.
This has the effect that if you just did the habit, it is "greyed out"
in the agenda.
TINYCHANGE
* lisp/org-habit.el (org-habit-scheduled-past-days): New variable
* lisp/org-agenda.el (org-agenda-get-scheduled): override
`org-scheduled-past-days' for habits if
`org-habit-scheduled-past-days` is not nil
TINYCHANGE
* lisp/org-attach.el (org-attach-dired-to-subtree): Autoload.
A code snippet in the manual suggests binding this command in
dired-mode-map. Autoload it so that the snippet works without an
implicit (require 'org-attach).
* lisp/ob-lua.el (org-babel-lua-var-to-lua): Support multi-line :var
input using Lua's [=[ ... ]=] syntax instead of the syntactically
invalid and pythonesque """.
TINYCHANGE
* lisp/org.el (org-repeat-re): Repeaters are for active timestamps
only.
* testing/lisp/test-org.el (test-org/auto-repeat-maybe): Update test.
Reported-by: cesar mena <cesar.mena@gmail.com>
<http://lists.gnu.org/r/emacs-orgmode/2019-01/msg00095.html>
* ox-beamer.el (org-beamer-headline): Pass overlay specification to
beamer `\note{}' command.
This is useful for animating multiple slides within a single frame and
displaying only relevant note for each step.
TINYCHANGE
* lisp/org.el (org-clone-subtree-with-time-shift): Accept a negative
value to shift the timestamp backward in time.
* testing/lisp/test-org.el (test-org/clone-with-time-shift): Add test.
Reported-by: Scott Randby <srandby@gmail.com>
<http://lists.gnu.org/r/emacs-orgmode/2019-01/msg00151.html>
Signed-off-by: Yasushi SHOJI <yasushi.shoji@gmail.com>
* lisp/ob-exp.el (org-babel-exp-results): Use :eval instead of :export
since the function is used to evaluate a source block before
exporting it.
Reported-by: Alexandre Duret-Lutz <adl@lrde.epita.fr>
<http://lists.gnu.org/r/emacs-orgmode/2019-01/msg00226.html>
* lisp/org-capture.el (org-capture-place-table-line): Remove
unnecessary call to `org-table-align', which could insert a spurious
newline character.
Reported-by: Thomas Holst <Thomas_Holst@gmx.de>
<http://lists.gnu.org/r/emacs-orgmode/2019-01/msg00233.html>
* lisp/org-protocol.el (org-protocol-flatten):
Rewrite as top-level alias, as per Stefan’s suggestion,
to avoid compiler warnings.
Make org-protocol-flatten always an alias
c5e02f2bce28f3b1f2006ce1f208f4a92ca05ed9
Paul Eggert
Mon Dec 17 13:32:52 2018 -0800
* lisp/org-protocol.el (org-protocol-flatten): Make it an alias for
flatten-tree if available.
Some more flatten-tree aliases
ef144113f3473f39d3df3e96e780c832e0d5420e
Paul Eggert
Mon Dec 17 10:26:15 2018 -0800
* lisp/org-compat.el (org-current-time-as-list): New function for
compatibility with Emacsen before 27.1.
This is a follow-up to the backport of Emacs's 93fe42094.
This follows on a suggestion by Stefan Monnier in:
https://lists.gnu.org/r/emacs-devel/2018-08/msg00991.html
(Bug#32902).
* lisp/org-id.el (org-id-uuid, org-id-time-to-b36):
Don't assume timestamps default to list form.
New (TICKS . HZ) timestamp format
93fe420942c08111a6048af7c4d7807c61d80a09
Paul Eggert
Sat Oct 6 23:31:04 2018 -0700
* lisp/org-compat.el (file-attribute-modification-time,
file-attribute-size): New functions for compatibility with Emacsen
before 26.1.
This is a follow-up to the backport of Emacs's 662bee7d7.
* lisp/org.el:
* lisp/ox-publish.el:
Prefer ash to lsh when either will do.
Audit use of lsh and fix glitches
f18af6cd5cb7dbbf7420ec2d3efed4e202c4f0dd
Paul Eggert
Tue Aug 21 13:44:32 2018 -0700
* lisp/org-compat.el (proper-list-p): New function for compatibility
with Emacsen before 27.1.
This is a follow-up to the backport of Emacs's 2fde6275b.
* lisp/org-colview.el (org-columns-compute-all):
* lisp/org-timer.el (org-timer-start):
(org-timer-pause-or-continue):
(org-timer-seconds):
(org-timer-set-timer):
* lisp/org.el (org-read-date-analyze): Restore use of `current-time`
for testing purposes.
In these spots, we call (current-time) so that it can be overriden in
tests. Add a comment about this in the cases that don't have one.
* lisp/org-agenda.el (org-agenda-to-appt):
* lisp/org-clock.el (org-clock-resolve-clock)
(org-clock-resolve, org-resolve-clocks-if-idle):
* lisp/org-colview.el (org-columns-edit-value, org-columns)
(org-agenda-columns):
* lisp/org-element.el (org-element--cache-interrupt-p)
(org-element--cache-sync):
* lisp/org-habit.el (org-habit-get-faces)
(org-habit-insert-consistency-graphs):
* lisp/org-indent.el (org-indent-add-properties):
* lisp/org-timer.el ((org-timer-show-remaining-time):
* lisp/org.el (org-babel-load-file, org-current-time)
(org-today, org-auto-repeat-maybe)
(org-small-year-to-year, org-goto-calendar):
* lisp/ox.el (org-export-insert-default-template):
Use nil instead of (current-time) where either will do, as nil is
a bit more efficient and should have less timing error.
Prefer nil to (current-time) when either works
c75f505dea6a560b825384cf3d277690f86840bf
Paul Eggert
Fri Oct 20 19:42:23 2017 -0700
Note(km): The changes that will reverted in the next commit have been
dropped from the ChangeLog entries above.
* lisp/org-macs.el (org-parse-time-string): Document matching of
YYYY-MM-DD substring.
org-clock-special-range used to pass in <-50001-11-30 Tue 00:00> with
the expectation that the year would be parsed as -50001, not 0001.
Mention this YYYY-MM-DD format assumption in the docstring to help
avoid such cases.
* lisp/org-clock.el (org-clock-special-range): Use nil to represent
`untilnow'.
* lisp/org-clock.el (org-clocktable-steps): For `untilnow' block, set
set timestamp to 2003.
* doc/org-manual.org (The clock table): Document `untilnow' floor when
used with :step.
For `untilnow', org-clock-special-range sets the start to
"<-50001-11-30 Tue 00:00>", but org-parse-time-string actually assumes
a YYYY-MM-DD format and parses the year as 0001. By chance, this is
still a really old date, so no one noticed. However, with the port of
Emacs's fde99c729c (Port recent org-clock fix to POSIX time_t,
2018-03-28), test-org-clock/clocktable/ranges would fail if the system
supports the oldest date tried, "<-67715-09-22 Tue 17:51>".
But this "encode-time -> format-time-string -> org-parse-time-string"
dance is mostly unnecessary. All the current org-clock-special-range
callers except for org-clocktable-steps (1) explicitly check if the
starting time is nil, (2) don't use the starting time, or (3) pass it
directly to org-clock-sum, which handles nil values. And
org-clock-sum executes the same codepath when nil is passed instead of
"really old date".
Update org-clocktable-steps to use 2003 (the year Org was created) as
the starting point when org-clock-special-range returns nil for the
starting time. This is more efficient because we don't needlessly
calculate steps over a large chunk of time that almost certainly
doesn't have any clocked time. And it won't run into the portability
issues like Emacs's fde99c729c. 2003 _should_ be an appropriate
effective starting date, since we don't expect clocked time before the
existence of Org. If this turns out to be an issue (e.g., someone
converted reports from a pre-Org and still makes clock tables that
include those times), we can make this value configurable.
* lisp/org-clock.el (org-clock-resolve-clock): Store heading location
as marker instead of raw position to ensure that org-clock-in is
called in the correct buffer.
This fixes a regression introduced by 503ede74b (org-clock: Fix
resolving clocks, 2018-12-06).
* lisp/org.el (org-get-tags): Now org-get-tags returns tags list with
tags from #+filetags in the beginning.
* testing/lisp/test-org.el (test-org/get-tags): Add test.
Fixes regression caused by commit
<5e27b2fd32>.
Bug reported in
<https://lists.gnu.org/r/emacs-orgmode/2019-01/msg00052.html>.
* lisp/org.el (org-align-tags): Move point to the beginning of the
visible buffer first before attempting to look for Org headline
tags.
* testing/lisp/test-org.el (test-org/tag-align): Add test.
Fixes a regression in
1615261cdc.
Bug reported in
<https://lists.gnu.org/r/emacs-orgmode/2019-01/msg00051.html>.
* lisp/org.el: add a 'native value to org-highlight-latex-and-related
that allows to use tex native font locking by means of
org-src-font-lock-fontify-block.
* etc/ORG-NEWS: add note about new feature.