* lisp/ob-python.el (org-babel-python-evaluate-session): Fix a few
related issues with :session :results value blocks, including broken
if-else statements, indented blocks with blank lines, and returning
the wrong value when underscore has been used.
(org-babel-python--eval-ast): New constant variable, a string
consisting of Python code to execute a source block using ast.
Previously, python blocks with parameters ":session :results value"
were entered line-by-line into the Python session, which could cause
issues around indentation and new lines. Now, such python blocks are
written to temp files, then the built-in ast python module is used to
parse and execute them, and to extract the last line separately to
return as a result. Introduces a change in behavior, requiring that
the last line must be a top-level expression statement if its result
is to be saved (otherwise, the result is None).
* lisp/org-agenda.el (org-agenda-get-blocks): When both dates
are of the same value, assume this is a time to display for
each date in the range.
Thanks to David Masterson for reporting this.
* lisp/org-table.el (org-table-eval-formula): Restore window
configuration when debugging table formula is done.
Thanks to Eric Fraga for reporting this.
Hi all,
This is a simple change that adds support for :epilogue in ob-scheme.
Best wishes,
Qian
==========
* lisp/ob-scheme.el (org-babel-expand-body:scheme): Add :epilogue
param support.
TINYCHANGE
* lisp/org-tempo.el (org-tempo-add-block): Remove the '>
element of the template to avoid editing the source block
while inserting it through tempo.
Thanks to Ihor and Bram for reporting this and suggesting
the proper fix.
* lisp/org-src.el (org-edit-src-code): Don't throw an error
when trying to find the source language in a non-interactive
call, typically when called for template expansion.
Thanks to Tyler Smith and Jack Kamm for reporting a related bug.
* lisp/org-agenda.el (org-agenda-mode-map): Remap
'move-end-of-line to 'org-agenda-end-of-line.
(org-agenda-end-of-line): New command.
This fixes this bug: when moving to the end of line, if the next
line is hidden, changing the timestamp of the current headline would
not display the new time. This is also safer when archiving subtrees
and when performing actions on agenda headlines in general.
* lisp/org-table.el (org-table-set-header-line-format): Skip
lines setting column widths with <[0-9]+>.
Thanks to Bernard Hugueney for suggesting this.
* lisp/org-table.el (org-table-row-get-visible-string): New
function.
(org-table-set-header-line-format): Use it to handle shrunk
columns. Also fix handling of `display-line-numbers-mode'.
* lisp/org.el (org-display-inline-images): Add inline remote image
display. Remote image display is controlled by the new option
`org-display-remote-inline-images'.
* lisp/org-table.el (org-table-header-line-p)
(org-table-header-line-mode): Replace
"org-table-electric-header" by "org-table-header-line".
* doc/org-manual.org (Miscellaneous): Ditto.
Thanks to Samuel Wales for suggesting this name.
* lisp/org-agenda.el (org-agenda-archive-with): Bind
`org-archive-from-agenda' to `t' when archiving from agenda.
* lisp/org-archive.el (org-archive-subtree-save-file-p): New option.
(org-archive-subtree): Use the new option.
* doc/org-manual.org (Moving a tree to an archive file):
Mention the new option.
Thanks to Russ Allbery for suggesting a similar idea.
* lisp/org.el (org-font-lock-add-priority-faces): Use
`org-priority-regexp'.
(org-priority-regexp): Match multiple characters.
* lisp/org-agenda.el (org-agenda-fontify-priorities): Use
`org-priority-regexp'.
This commit paves the way for more flexibility in priority handling.
For example, `org-priority-[up/down]' could deal with priorities as
numbers (e.g. [#1]) instead of letters.
* lisp/org.el (org-cycle-internal-local): When cycling visibility
on a subtree, don't take a list has a child.
These two subtrees should cycle the same way:
* A subtree
A Paragraph.
* A subtree
- A list.
Before the fix, the second subtree would cycle through three steps
instead of two.
Thanks to Samuel Wales for reporting this.
* lisp/org-table.el (org-table-temp-header-remapping): New variable.
(org-table-set-header-line-format): Scale the header line properly.
(org-table-electric-header-mode): Don't run outside `org-mode'.
* lisp/org-table.el (org-table-electric-header-p): New option.
(org-table-temp-header-line, org-table-electric-header-mode): New
variables.
(org-table-set-header-line-format)
(org-table-electric-header-mode): New minor mode to display the
table's current first row as the header line when this first row
is not visible anymore.
* doc/org-manual.org (Miscellaneous): Document
`org-table-electric-header-mode'.
* lisp/org-agenda.el (org-agenda-ctrl-c-ctrl-c): Don't try to
deactivate columns as `org-columns-toggle-or-columns-quit' is
already bound to `C-c C-c' when the column view is active.
* lisp/org.el (org-ctrl-c-ctrl-c): Update docstring.
* lisp/org-agenda.el (org-agenda-ctrl-c-ctrl-c): New function.
This is to unify and thereby harmonize the behavior of C-c C-c with
regard to Org files and columns.
* lisp/org.el (org-open-at-point): Don't forceably try ot open
attachments.
This commit fixes a bug: when trying to open links in a subtree with
no attachments, `org-open-at-point' would create an ID property with
no apparent reason.
* lisp/org-agenda.el (org-agenda-mode): Fix bug: don't prevent the
use of M-x text-scale-mode RET.
Before this fix, M-x text-scale-mode RET was only available after
the agenda buffer was redone once. Now it is available immediately.
This fixes commit 00c1184a0.
* lisp/org-src.el (org-src-switch-to-buffer): Add call to
quit-restore-window in org-src-switch-to-buffer when
org-src-window-setup is other-window so that the popped up window is
closed on exit.
* lisp/org-agenda.el (org-agenda-filter-make-matcher): Use `or'
for category filters, `and' for other filters.
For example, when using `org-agenda-category-filter-preset' set to
'("+cat1" "+cat2"), using `and' in the filter matcher results in
displaying 0 headline, since no headline can have two categories.
* doc/org-manual.org (Attachment options)
* etc/ORG-NEWS (New option in ~org-attach-store-link-p~)
* lisp/org-attach.el (org-attach-store-link-p)
(org-attach-attach): Add option to store a link to the attached file
with a file link.
* lisp/org-element.el (org-element-link-parser): Add info about
expanded attachment paths to the link parse tree export.
* lisp/org-attach.el Remove org-attach-open-link. Let attachment
links use the built in code that already is developed for file
links.
* lisp/ol.el (org-link-open): Add knowledge about attachment links to
the function opening links, so they can be opened exactly as file
links are opened.
* lisp/ox-texinfo.el (org-texinfo-link)
* lisp/ox-odt.el (org-odt-link)
* lisp/ox-md.el (org-md-link)
* lisp/ox-man.el (org-man-link)
* lisp/ox-latex.el (org-latex--inline-image, org-latex-link)
* lisp/ox-html.el (org-html-link)
* lisp/ox-ascii.el (org-ascii-link): Refactor to use property from
link parser instead of invoking attachment expansion in the
exporter.
* lisp/ox-texinfo.el (org-texinfo-link)
* lisp/ox-odt.el (org-odt-link)
* lisp/ox-md.el (org-md-link)
* lisp/ox-man.el (org-man-link)
* lisp/ox-latex.el (org-latex--inline-image, org-latex-link)
* lisp/ox-html.el (org-html-link)
* lisp/ox-ascii.el (org-ascii-link): Move point to the link for
org-attach-expand to know from which headline to expand the link.
* lisp/ox-html.el (org-html-link, org-html-inline-image-rules)
* lisp/ox-odt.el (org-odt-inline-image-rules)
* lisp/ox-texinfo.el (org-texinfo-link)
(org-texinfo-inline-image-rules): Make attachment links consistently
expand as relative to file and add attachment link type to
image rules for consistency among export backends.
Make attachment links export just as file links.
* lisp/ox-ascii.el
* lisp/ox-html.el
* lisp/ox-latex.el
* lisp/ox-man.el
* lisp/ox-md.el
* lisp/ox-texinfo.el
* lisp/org-attach.el: Move export functionality for attachment links
into the respective export backend, for feature parity with file
links.
* lisp/org-element.el (org-element--parse-elements): Only ignore parts
due to folding, not because of fontification.
* lisp/org-macs.el (org-invisible-p): Add an optional argument.
* testing/lisp/test-org-element.el (test-org-element/parse-buffer-visible):
Add tests.
* lisp/org-duration.el (org-duration-format): Add `compact' symbol.
(org-duration-set-regexps): Make white space between duration parts
optional
(org-duration-from-minutes): Handle `compact' symbol.
* testing/lisp/test-org-duration.el (test-org-duration/from-minutes):
(test-org-duration/p): Add tests.
* lisp/org-compat.el (org-file-properties): Prevent error at build
time about creating an alias for a local variable.
* lisp/org.el (org-keyword-properties): Slight change to docstring.
* lisp/org.el (org-fontify-todo-headline): Add new boolean customization to
toggle this behavior.
* lisp/org.el (org-set-font-lock-defaults): Apply face org-headline-todo to
lines starting with keywords in org-not-done-keywords.
* lisp/org-faces (org-headline-todo): New face.
TINYCHANGE
* lisp/ol.el (org-link-make-regexps): Update regexp to forbid any
un-escaped square bracket in the URI.
(org-link-escape):
(org-link-unescape):
* testing/lisp/test-ol.el (test-ol/escape):
(test-ol/unescape):
(test-ol/store-link):
* testing/lisp/test-org.el (test-org/custom-id):
(test-org/fuzzy-links):
* testing/lisp/test-ox.el (test-org-export/resolve-fuzzy-link): Adapt
to new syntax.
* doc/org-manual.org (Link Format): Update documentation.
The new syntax allowed un-escaped opening square brackets in the URI
part of bracket links. Unfortunately, it led to bug as described here:
<https://lists.gnu.org/archive/html/emacs-orgmode/2019-12/msg00312.html>
Now, we require to escape every square bracket in the URI.
* lisp/ox-odt.el (org-odt-template): The file `styles.xml' might be
copied from a location where it is read-only. Since we need to modify
it (and its copied under /tmp, so we can modify it), we need to ensure
we have write persmissions on it. Set mode to 600.
This is especially needed for projects like Guix, where all system
files are stored in a read-only location.
TINYCHANGE
* lisp/org.el (org-fontify-meta-lines-and-blocks-1): Enhance regex
for finding the end of blocks (i.e., `beg-of-endline') to detect
headlines (i.e., (rx bol (one-or-more "*") space) so that fontification
matches the behavior of org mode (i.e., that headlines are healines,
even in vertabim).
This change aligns the behavior and the visual appearance of verbatim
blocks that contain headlines. When `font-lock-mode' is enabled this
change makes situations like those in (info "(org) Literal Examples")
literally jump off the page.
Overview of new fontification
Source | fontification before | fontification after |
\#+BEGIN_EXAMPLE | org-block-begin-line | org-block-begin-line |
I look verbatim! | org-block | org-block |
* Org headers in | org-block | org-level-1 |
verbatim blocks | org-block | nil |
** highly accordingly | org-block | org-level-2 |
\#+END_EXAMPLE | org-block-end-line | org-meta-line |
This commit also makes some improvements to the reability of
org-fontify-meta-lines-and-blocks-1.
1. Use the `rx' macro for better readability. Note that the strings
below return with literal tabs when using `rx'. Expansion included for
reference here.
Begin regex.
old: "^\\([ \t]*#\\(\\(\\+[a-zA-Z]+:?\\| \\|$\\)\\(_\\([a-zA-Z]+\\)\\)?\\)[ \t]*\\(\\([^ \t\n]*\\)[ \t]*\\(.*\\)\\)\\)"
new: "^\\([[:blank:]]*#\\(\\(\\+[A-Za-z]+:?\\|[[:space:]]\\|$\\)\\(_\\([A-Za-z]+\\)\\)?\\)[[:blank:]]*\\(\\([^ \n ]*\\)[[:blank:]]*\\(.*\\)\\)\\)"
End regex. Note match-string call is stringified for documentation here.
old: (concat "^[ \t]*#\\+end" (match-string 4) "\\>.*")
new: "\\(?:\\(^\\(?:\\*+[[:space:]]\\|[[:blank:]]*#\\+end(match-string 4)\\>.*\\)\\)\\)"
Caption regex:
old: "\\([ \t]*#\\+caption\\(?:\\[.*\\]\\)?:\\)[ \t]*"
new: "\\([[:blank:]]*#\\+caption\\(?:\\[.*]\\)?:\\)[[:blank:]]*"
2. Refactor fontification of #+end blocks for readability and to reduce
the number of calls to point-max to one per branch.
TINYCHANGE
* lisp/org-element.el (org-element--current-element): Forbid
affiliated keywords for comments.
* testing/lisp/test-org-element.el (test-org-element/comment-parser):
Tiny refactoring.
The motivation is to avoid distinguishing between top-level comments,
which cannot have affiliated keywords, and other comments, which
could. Therefore, we keep a single type of comment.
* lisp/org-element.el (org-element-comment-parser): Top level comments
do not have affiliated keywords.
(org-element--current-element): Properly parse top-level comments and
top-level properties drawer.
(org-element--next-mode): Change signature.
(org-element--parse-elements): Apply signature change.
(org-element--parse-to): Apply signature change. Look for top-level
comments or properties drawer.
* testing/lisp/test-org-element.el (test-org-element/property-drawer-parser):
Add comment.
Initially, `org-element--current-element' would defer to
`org-get-property-block' to validate a property-drawer, which is the
wrong way to look at the low-level Org Element library. Also, it would
allow affiliated keywords, which is not possible.
* lisp/org.el (org-create-formula-image): Ensure user input ends
with a % character to remove trailing whitespace. Also, add %
characters between macros and newlines purely visual.
TINYCHANGE
* lisp/org-attach.el (org-attach-attach): Storing links using the new
attachment link type instead of file links.
* lisp/org-compat.el (org-attach-store-link, org-attach-expand-link):
Remove not needed functions and mark them as obsolete for easier
future reference.
* doc/org-manual.org: Add `:tree-type month' option for capture
templates.
* lisp/org-capture.el (org-capture-set-target-location): Add
`:tree-type month' option to capture templates to group entries by
month.
* lisp/org-datetree.el (org-datetree-find-month-create): Add
`org-datetree-find-month-create' function to add datetree entries
grouped by month.
* testing/lisp/test-org-datetree.el
(test-org-datetree/find-month-create): Add test for new function.
* lisp/ox.el (org-export--dispatch-action): Replace error with
user-error a user-error so that user can quit `org-export-dispatch'
without entering debugging mode.
Modified from a patch proposal by Takaaki Ishikawa.
<https://lists.gnu.org/archive/html/emacs-orgmode/2019-12/msg00071.html>
* lisp/org-agenda.el (org-agenda-filter): Fix unescaped literal ‘+’ in
regexp. Reported by Mattias Engdegård in:
https://lists.gnu.org/r/emacs-devel/2019-12/msg00215.html
* lisp/org.el (org-clone-subtree-with-time-shift): Fix a regexp typo
that mishandled strings like ‘\1d’, reported by the same email.
2019-12-05 regexp lint fixes
4c933077157ba409d645f4649c8a3a8e534d53d5
Paul Eggert
Thu Dec 5 19:32:12 2019 -0800
* lisp/org.el (org-mode): Add pcomplete-completions-at-point to capf.
This lets the normal `completion-at-point` and `complete-symbol`
use `pcomplete` for completion.
(org-mode-map): Leave M-TAB bound to the global default since
`pcomplete` is now obsolete.
5bc97ebceb54e0eb2804bef4c1bc32a40d8a2371
Stefan Monnier
Mon Nov 18 17:47:06 2019 -0500