Thanks to Greg Minshall for suggesting these changes.
* lisp/ob-awk.el (org-babel-expand-body:awk): Simply return the body
unmodified.
(org-babel-execute:awk): Assign variables on the command line using
the `-v' command line option to awk.
* lisp/ob-exp.el (org-babel-exp-in-export-file): Instead of using the
headline text use the headline ID when one is present. This fixes a
bug in the resolution of code block headers in properties during
export when multiple headlines with the same name are present.
* lisp/ox.el (org-export--get-inbuffer-options): Return the empty
string instead of nil when TITLE keywords has no value.
(org-export--get-buffer-attributes): Do not set :title property
early.
(org-export--get-global-options): Do not ignore anymore nil values.
Small refactoring.
(org-export-as): Correctly set :title here.
Thanks to Nicolas Richard for reporting it.
http://permalink.gmane.org/gmane.emacs.orgmode/87149
* org.el (org-property-re): Also match null properties by
default.
(org-entry-delete): Also delete null properties.
(org-read-property-value): Allow the empty string as a new
value.
(org-delete-property): Throw a message when there is not
property to delete.
Thanks to Andrea Rossetti for reporting this.
* lisp/org.el: Forward declare `org-clock-sum',
`org-table-end-of-field', `org-element-cache-refresh'.
These have been introduced with b5554077cb, b76071f2b6 and 6eb940a8dc.
* lisp/org-compat.el: Provide compatibility definition for
`font-lock-ensure' falling back to `font-lock-fontify-buffer' via an
alias.
This fallback fixes f36b19eef6. Using a simple alias means we can't
use the optional arguments for `font-lock-ensure' or would have to
provide a macro if we ever want to use them.
* org-footnote.el (org-footnote-new): When point is at a
position where no footnote can be inserted, offer the menu
from `org-footnote-action' instead.
(org-footnote-inline-footnotes): New command.
(org-footnote-action): Make the new command accessible through
the menu.
Thanks to Leonard Randall for the suggestion.
* org.el (org-re-property): New parameter `allow-null' to
match property with a null value.
(org-entry-put): Correctly update a property with a null
value.
Thanks to Andrea Rossetti for reporting this and suggesting a fix.
* org.el: Send a warning when org-loaddefs.el could not be
found in the directory where this org.el file is loaded from.
* ox-org.el (org-org-publish-to-org):
* ox-odt.el (org-odt-do-format-code):
* ox-html.el (org-html-fontify-code):
* org.el (org-fontify-like-in-org-mode):
* org-src.el (org-src-font-lock-fontify-block):
* org-clock.el (org-clock-get-clocktable): Use
`font-lock-ensure' instead of `font-lock-fontify-buffer'.
* org.el (org-outline-level, org-copy-subtree)
(org-sort-entries, orgstruct-setup, org-show-context)
(org-create-formula-image-with-dvipng)
(org-create-formula-image-with-imagemagick)
(org-goto-sibling, org-goto-first-child, org-show-entry): Use
`ignore-errors' instead of (condition-case nil ... (error nil)).
People trying to load org.el when org-loaddefs.el is not available
has been a major cause of trouble when installing Org. The warning
tells them what they need to do.
* ox-md.el (org-md-headline): When exporting with a HTML table
of contents, add HTML anchors to Markdown headlines.
Thanks to Marko Dimjašević for reporting this.
* org.el (org-shiftmetaup, org-shiftmetadown): Don't move the
subtree or list item at point up or down, as this feature is
already accessible through `org-metaup' and `org-metadown'.
Update the docstrings to reflect the new behavior.
* lisp/ox-ascii.el:
* lisp/ox-beamer.el:
* lisp/ox-html.el:
* lisp/ox-latex.el:
* lisp/ox-man.el:
* lisp/ox-md.el:
* lisp/ox-odt.el:
* lisp/ox-org.el:
* lisp/ox-texinfo.el: All defcustoms are defined as options in the
back-end.
* lisp/ox-icalendar.el (icalendar): Ditto. Also rename :with-vtodo
property to :icalendar-include-todo.
* doc/org.texi (Publishing options): Update back-end specific
properties. Remove @vindex entries so as not to clobber variables
index.
This change allows to change default value for any defcustom on the
fly when publishing. It also normalizes how to choose and name what
variables to define as back-end options.
* lisp/ob-core.el: Add comment to forward declaration of
'org-src-preserve-indentations'.
* lisp/ob-exp.el: Require org-src to import
'org-src-preserve-indentations'.
* lisp/ob-haskell.el, lisp/ob-python.el: Remove superfluous forward
declaration of 'org-src-preserve-indentations', since it gets
imported by other requires.
* lisp/ox.el (org-export-get-parent): Move definition of
'org-export-get-parent' before first use. Leave comment at original
place of definition.
* lisp/org.el (org-uniquify): Move definition of 'org-uniquify' before
first use. Leave comment at original place of definition.
* org-agenda.el (org-agenda-custom-commands-local-options):
Add `org-agenda-effort-filter-preset'.
(org-agenda-filter-effort-default-operator): Delete.
(org-agenda-local-vars): Add `org-agenda-effort-filter'.
(org-agenda-mode-map): Use "_" to filter by effort.
(org-agenda-effort-filter, org-agenda-effort-filter-preset):
New variables.
(org-agenda-prepare-window, org-agenda-prepare)
(org-agenda-finalize, org-agenda-redo)
(org-agenda-filter-remove-all, org-agenda-filter-apply)
(org-agenda-set-mode-name, org-agenda-reapply-filters): Handle
effort filter.
(org-agenda-finalize-entries): Use
`org-sort-agenda-noeffort-is-high'.
(org-agenda-limit-entries): Get the property from the correct
location.
(org-agenda-limit-interactively): Throw a user error on wrong
input.
(org-agenda-filter-by-effort): New command.
(org-agenda-filter-by-tag): Don't filter by effort.
(org-agenda-filter-make-matcher): Handle effort filter.
(org-agenda-compare-effort): Don't handle the "?" operator.
(org-agenda-filter-show-all-effort): New command.
Note: This calls for some refactoring in the filter area.
* org.el (org-refresh-property): New function.
(org-refresh-properties, org-set-effort)
(org-property-next-allowed-value): Use it.
* org-timer.el (org-timer-set-timer): Get the correct number
of minutes from text properties, both in an `org-mode' and
`org-agenda-mode' buffer.
* org-agenda.el (org-agenda-finalize-entries): Remove spurious
variable in the (let ...) construct.
(org-agenda-limit-interactively): Allow to remove the
limitation by passing a universal prefix argument. Enhance
the prompt.
* org.el (org-open-link-in-comment-or-property): New function.
(org-open-at-point): Use it.
See http://thread.gmane.org/gmane.emacs.orgmode/84300/focus=84300 for
the follow-up of a discussion on whether links should be supported in
comments and properties.
* org.el (org-fontify-entities): Use `org-at-comment-p'.
(org-in-commented-line): Delete.
(org-in-indented-comment-line): Delete.
(org-at-comment-p): Also match indented comments and save
match data.
* org-footnote.el (org-footnote-in-valid-context-p): Use
`org-at-comment-p'.
* org-agenda.el (org-agenda-prepare-window): New parameter
`filter-alist' to set the filters correctly when
`org-agenda-persistent-filter' is on.
(org-agenda-prepare): Use the new parameter for
`org-agenda-prepare-window'.
Thanks to Thomas Morgan for reporting this.
* org-compat.el (org-in-invisibility-spec-p): Tiny code
cleanup.
(org-move-to-column): Only remove '(org-filtered) from
`buffer-invisibility-spec'.
* org-agenda.el (org-agenda-mode): Add buffer invisibility
specs.
(org-agenda-filter-hide-line, org-agenda-remove-filter): Set
the 'invisible text property to 'org-filtered.
(org-agenda-show-new-time): Add the default face to avoid the
foreground of the last character on the line to leak into the
timestamp notification.
Thanks to Thomas Morgan for reporting this.
* org.el (org-sort-entries): When sorting by TODO keywords,
put TODO entries first, then entries without a TODO keyword,
then DONE entries.
Thanks to Eric Abrahamsen for triggering this.
org-table.el (org-table-align): Use `org-string-width'.
This aims at better guessing how wide a narrowed table column should
actually be. This won't work perfectly with variable-width scripts,
as it still only narrows in full-column increments, but it's better
than before.
org-table.el (org-table-justify-field-maybe): Use
`org-string-width' instead of `length' to calculate the visual
width of table cells.
This is useful for e.g. double-width charsets.
* org-agenda.el (org-agenda-set-restriction-lock): Remove
restriction lock before setting it.
This fixes a small bug: when restriction lock is active on a subtree
and C-c C-x < before the first headline, the new restriction is set to
the entire file, but the old one was still present.
* org-agenda.el (org-agenda-format-item): Don't add the
'effort and 'effort-minutes text properties as they are
already accessible through the 'txt property of agenda lines.
* org-clock.el (org-clock-in): Refresh both the 'effort and
'effort-minutes text properties.
* org-rmail.el (rmail, rmail-file-name): Silent byte-compiler.
* org.el (org-refresh-properties): Allow to set several text
properties by passing an alist to the TPROP argument.
(org-set-effort, org-property-next-allowed-value): Use 'effort
instead of 'org-effort.
(org-agenda-prepare-buffers): Update both 'effort and
'effort-minutes.
(org-mark-jump-unhide): Move up to silent the byte-compiler.
* org.el (org-refresh-category-properties): Don't put the
'org-category-position property.
(org-refresh-stats-properties): New function.
(org-agenda-ignore-properties): Rename from
`org-agenda-ignore-drawer-properties', which is now obsolete.
Allow to use 'stats.
(org-agenda-prepare-buffers): Check stats properties.
(org-get-at-bol): Make a defsubst.
(org-get-at-eol): New function.
* org-agenda.el (org-entries-lessp): Sort by statistic
cookies.
(org-search-view, org-agenda-get-todos)
(org-agenda-get-timestamps, org-agenda-get-sexps)
(org-agenda-get-progress, org-agenda-get-deadlines)
(org-agenda-get-scheduled, org-agenda-get-blocks): Don't set
the 'org-category and 'org-category-pos text properties.
'org-category-pos is useless and 'org-category is set through
`org-agenda-format-item'.
(org-agenda-format-item): Remove useless code.
(org-cmp-priority): Delete.
(org-cmp-values): New function to compare text properties
values.
(org-cmp-effort, org-agenda-to-appt): Check against the end of
the line.
(org-agenda-filter-by-category, org-agenda-filter-apply)
(org-agenda-change-all-lines): Use `org-get-at-eol'.
* org-capture.el (org-capture-steal-local-variables): Don't
steal `mark-active', which should be nil in the target buffer.
Thanks to Alex Kosorukoff for raising this issue.
* org.el (org-move-subtree-down): Use `org-end-of-subtree'
instead of `outline-end-of-subtree'.
(outline-end-of-subtree): Remove advice.
* org-mouse.el (org-mouse-move-tree, org-mouse-do-remotely):
Use `org-end-of-subtree' instead of `outline-end-of-subtree'.
* org.el (org-cycle-internal-local): Don't show a trailing
character when cycling a subtree that ends with a non-newline
character at the end of the buffer or the narrowed region.
* lisp/ox-ascii.el
(org-ascii--justify-lines): New function. Renamed from
`org-ascii--justify-string'.
(org-ascii--justify-element, org-ascii--current-justification): New
functions.
(org-ascii-verse-block, org-ascii-table-cell, org-ascii-table
org-ascii-src-block, org-ascii-property-drawer, org-ascii-planning,
org-ascii-paragraph, org-ascii-paragraph,
org-ascii-latex-environment, org-ascii-keyword,
org-ascii-horizontal-rule, org-ascii-fixed-width,
org-ascii-export-block, org-ascii-example-block, org-ascii-clock,
org-ascii-template--document-title,
org-ascii-template--document-title): Use new functions.
(org-ascii-center-block): Do not process contents anymore since they
are already justified.
* doc/org.texi (ASCII/Latin-1/UTF-8 export): Document new feature.
Also document `org-ascii-text-width' since this is closely related.
This patches also fixes centering of tables.
* org-agenda.el (org-agenda-local-vars): Add
`org-agenda-top-headline-filter'.
(org-agenda-filter-by-category): Fix syntax.
(org-agenda-filter-show-all-top-filter): New function.
(org-agenda-filter-by-top-headline)
(org-agenda-filter-remove-all): Use the new function.
(org-agenda-filter-top-headline-apply): Use a dedicated symbol
`top-headline'.
Thanks to Greg Troxel who provided a preliminary patch.
* ob-scheme.el (org-babel-scheme-capture-current-message)
(org-babel-scheme-execute-with-geiser): Capture scheme code results
via `current-message' both in interactive mode and non interactive
mode.
`org-babel-scheme-execute-with-geiser' uses `current-message' to get
the results of scheme code blocks, but `current-message' always
returns nil in batch mode, and this patch fixes this.
* org.el (org-entry-properties): Ensure the special property
is not commented out when matched.
Other an agenda view like (tags "DEADLINE<\"<+0d>\"" ...) will
wrongly list an entry with a commented out DEADLINE line, because
org-agenda-skip only skip commented out stuff on the current line,
with is the headline itself when using "tags" agenda.
Thanks to Sébastien for reporting this.
* org-agenda.el (org-agenda-write): Code cleanup.
(org-agenda-mark-filtered-text)
(org-agenda-unmark-filtered-text)
(org-agenda-fix-tags-filter-overlays-at): Delete.
(org-agenda-remove-marked-text): Use the `property' argument
instead of hard-coding 'org-filtered.
(org-agenda-filter-remove-all): Use `org-agenda-finalize'.
(org-agenda-filter-hide-line): Rewrite using text properties
instead of overlays.
(org-agenda-remove-filter): New function.
(org-agenda-filter-show-all-tag)
(org-agenda-filter-show-all-cat)
(org-agenda-filter-show-all-re): Rewrite using
`org-agenda-remove-filter'.
* org-attach.el (org-attach-dir): When the property is
"inherited" from a variable outside of the file, do not use
`org-entry-property-inherited-from' to find the attachment
position, assume we need to go back to the current headline.
* lisp/ox-org.el (org-org-headline): Ignore footnote sections.
(org-org-section): New function.
Some footnote definitions may be outside of the scope of the export
and, therefore, do not appear in the generated output. This patch
ensures that all footnote definitions appear at the end of the section
they belong to.
Thanks to Leonard Randall for reporting it.
http://permalink.gmane.org/gmane.emacs.orgmode/86558
* ob-core.el (org-babel-insert-result): Test all list elements against
listp and (eq element 'hline) instead of checking just the first.
org-babel table output uses different formatting for a list of lists,
but detects it incorrectly causing an error. An example of a block
causing an error is an emacs lisp source block containing just 1 line:
'((1) 2)
* org.el (org-offer-links-in-entry): Use global variable
`org-any-link-re' instead of defining a string-equal local variable.
The `re' variable defined in function `org-offer-links-in-entry' is
string-equal to `org-any-link-re' and is hence replaced by the latter.
TINYCHANGE
* org.el (org-set-regexps-and-options): Allow
`org-complex-heading-regexp-format' to match [/] and [%]
cookies when they are both before and after the heading.
Thanks to Nicolas Bercher for reporting this.
* ob-core.el (org-babel-demarcate-block): Upcase or downcase
the inserted #+begin_src and #+end_src depending on the
current case of #+begin_src and #+end_src.
Thanks to Alexander Baier for reporting this.
* org-table.el (org-table-copy-increment): Use a number as a
way to force a fixed increment value.
(org-table-copy-down): Increment by the difference between the
current field and the field in the row above. This is the
default behavior. To go back to the previous behavior (to
always increment by 1 unit), set `org-table-copy-increment'
to 1.
Thanks to Michael Brand for suggesting this.
* lisp/org.el (org-indent-line): Indent source block contents
according to line above when `org-src-tab-acts-natively' is nil.
* testing/lisp/test-org.el (test-org/indent-line): Update test.
* lisp/ox-ascii.el (org-ascii-indented-line-width): Update docstring.
(org-ascii-paragraph): Do not apply indentation to the very first line
of a section.
* lisp/ox-html.el (org-html-standalone-image-p): Ensure paragraph
contains at least a link before return a non-nil value. Clarify
docstring.
Thanks to Fabrice Popineau for reporting it.
http://permalink.gmane.org/gmane.emacs.orgmode/86314
* lisp/ob-core.el (org-babel-generate-file-param): New function.
(org-babel-get-src-block-info): Use it.
(org-babel-merge-params): Handle :file-ext.
(org-babel-graphical-output-file): error if no :file or :file-ext.
* testing/lisp/test-ob.el (test-org-babel/file-ext-and-output-dir):
New test.
* doc/org.texi (Specific header arguments): Add doc for :file-ext and
:output-dir header args.
* lisp/ob-R.el (org-babel-expand-body:R): Don’t calculate
graphics-file.
(org-babel-execute:R): Only look for a graphics-file if needed.
* lisp/org.el (org-indent-region): Update function according to recent
`org-indent-line' change. Optimize it.
* testing/lisp/test-org.el (test-org/indent-region): New test.
* lisp/org.el (org--get-expected-indentation,
org--align-node-property): New functions.
(org-indent-line): Use new function. Also merge functionalities with
`org-src-native-tab-command-maybe'.
* lisp/org-src.el (org-src-native-tab-command-maybe): Remove function.
* testing/lisp/test-org.el (test-org/indent-line): New test.
* lisp/org.el (org-find-exact-heading-in-directory): Use full path for
files.
When the path is not included, `org-find-exact-heading-in-directory'
will fail when the current value of `default-directory' is different
from the argument DIR.
TINYCHANGE
* org-capture.el (org-capture-fill-template): Deactivate
region while trying to align tags on the current headline.
Thanks to Alex Kosorukoff for reporting this.
lisp/org-bbdb.el (org-bbdb-complete-link): Fix link completion with
newer versions of BBDB.
Newer versions of BBDB seem to be returning atomic values from
`bbdb-completing-read-record', we should be prepared for both atoms
and lists.
* lisp/org.el (org-flag-drawer): Do not flag drawer when point is on
an empty line after it. When hiding the drawer away, make sure
point always stays in a visible part of the buffer.
* testing/lisp/test-org.el (test-org/flag-drawer): Add tests.
* lisp/ob-maxima.el (org-babel-execute:maxima): Correct a stray
occurence of setting `org-babel-maxima-graphical-output-file´ to
`org-babel-graphical-output-file´.
* lisp/ox-icalendar.el (org-icalendar-entry): Use
`org-icalendar-with-timestamps'.
We cannot simply rely on ignored timestamps in communication channels,
as regular `org-export-with-timestamps' only applies to isolated
timestamps.
Thanks to Greg Troxel for reporting it.
http://permalink.gmane.org/gmane.emacs.orgmode/85387
* lisp/ob-core.el (org-babel-graphical-output-file): New generic function.
* lisp/ob-R.el (org-babel-R-graphical-output-file): Delete specific version.
(org-babel-expand-body:R): Use generic version.
* lisp/ob-maxima.el (org-babel-maxima-graphical-output-file): Delete
specific version.
(org-babel-maxima-expand): Use generic version.
* lisp/ob-octave.el (org-babel-octave-graphical-output-file): Delete
specific version
(org-babel-execute:octave): Use generic version.
* org.el (org-insert-heading): Fix behavior when point is at
the beginning of a heading or a list item. Enhance docstring.
Thanks to York Zhao for reporting this.
* ox-html.el (org-html-infojs-install-script): Don't install
infojs scripts when #+INFOJS_OPT: is empty.
Thanks to Diez B. Roggisch for reporting this.
* org.el (org-mode): Use `org-back-to-heading' and
`org-end-of-subtree' for C-M-a and C-M-e.
This partially reverts commit 76fa97922.
Thanks to Leo Liu for reporting this.
* org-clock.el (org-clock-sum-today): Use `headline-filter'.
Remove interactive form.
(org-clock-display): Change the meaning of prefix argument:
one prefix arg shows today's time; two prefix args show clocks
from a custom range; three prefix args show the total time in
the echo area.
(org-clock-sum-custom): New function.
(org-clock-sum): Remove interactive form.
* org.el (org-check-before-invisible-edit): Don't just cycle,
show the subtree, as cycling may leave the current heading
folded.
Thanks to Paul Stansell for reporting this.
* lisp/org-element.el (org-element--cache-remove): New function.
(org-element--cache-process-request): Use new function.
(org-element-cache-reset): Do not rely on a weak hash table to handle
objects cache.
Elements used as keys in object cache cannot be garbage collected
since they appear in the :parent hierarchy in objects. Instead we
remove entries from the objects cache whenever an element is removed
from the element cache.
* lisp/org-element.el (org-element-cache-refresh): New function.
* lisp/org.el (org-update-radio-target-regexp): Make it standalone.
Also refresh fontification only when necessary.
(org-all-targets, org-make-target-link-regexp): Remove functions.
* testing/lisp/test-org.el (test-org/update-radio-target-regexp): New
test
(test-org/all-targets): Remove test.
We need to manually reset cache on radio links as re-fontification
doesn't trigger a buffer change, and, as a consequence, a cache reset.
* org-bibtex.el (org-bibtex-headline): Don't throw an error
when trying to add a keyword field to a BibTeX entry that is
not known by BibTeX or defined by the user.
Thanks to Leonard Randall for reporting this and suggesting a fix.
* org-bibtex.el (org-bibtex-tags-are-keywords): Enhance
docstring.
(org-bibtex-inherit-tags): New option.
(org-bibtex-headline): Use the new option.
TINYCHANGE
* org.el (org-trim): Rewrite and make a defsubst.
* org-bibtex.el (org-bibtex-get): Use `org-trim' instead of
`org-babel-trim'.
* ob-core.el (org-babel-trim): Delete and alias to `org-trim'.
(org-babel-chomp): Delete and alias to `org-trim-trailing'.
(org-trim-trailing): New defsubst.
(org-babel-examplize-region): Fix version.
* lisp/org.el (org-link-mailto-program): Remove variable.
(org-open-at-point): Delegate "mailto" links handling to `browse-url'
and `browse-url-mailto-function'.
This patch allows to use regular URI syntax and deprecates old Org
specific syntax: mailto:user@domain::Title.
http://permalink.gmane.org/gmane.emacs.orgmode/85007
* lisp/org-element.el (org-element-context): Fix infloop. Be more
cautious when point is at the end of buffer.
* testing/lisp/test-org-element.el (test-org-element/context): Add
test.
* ox.el (org-export-dictionary): Add "References".
* contrib/lisp/ox-bibtex.el (org-bibtex-process-bib-files):
Translate "References" according to the export language.
Thanks to Julian Gehring for suggesting this.
* ox-latex.el (org-latex-src-block): Fix wrong propagation of
labels and captions when using the listings environment.
Thanks to Dominik Ernst for reporting this:
http://article.gmane.org/gmane.emacs.orgmode/84932
* lisp/ox-latex.el (org-latex-link):
* lisp/ox-html.el (org-html-link): Do not expand absolute file names
and do not try to fix hierarchy part, as it is already taken care of
at the parser level.
* lisp/ox-md.el (org-md-link): Ditto. Also fix absolute file names.
* lisp/ox-odt.el (org-odt-link):
* lisp/ox-man.el (org-man-link):
* lisp/ox-texinfo.el (org-texinfo-link):
* contrib/lisp/ox-groff.el (org-groff-link): Ditto. Do not prepend
scheme part to relative file names either.
* contrib/lisp/ox-deck.el (org-deck-link): Small refactoring.
* lisp/org-element.el (org-element-link-parser): Fix ill-defined
"file" type links. Expand absolute file names in the process.
Org accepts invalid URI syntax for absolute "file" links, e.g.,
file:/home/user/file.txt. This patch normalizes them.
* org-faces.el (org-clock-overlay): Use a gray background and
don't inherit the foreground.
* org-clock.el (org-clock-put-overlay): Don't add the stars.
* org.el (org-update-dblock): Use `save-excursion' instead of
`save-window-excursion' so that blocks can edit other windows and
change the window layout.
Thanks to Martin for reporting this.
* ob-core.el (org-babel-remove-result-one-or-many): New function.
* ob-keys.el (org-babel-key-bindings): Add a keybinding for the
new function `org-babel-remove-result-one-or-many'.
TINYCHANGE
* lisp/ox-html.el (org-html-format-list-item): Add the appropriate
class `on', `off' or `trans' (the tri-state checkbox types) to the
list elements in checkbox lists.
* org-agenda.el (org-agenda-mode): Disable `indent-tabs-mode'.
(org-agenda-dim-blocked-tasks): Make overlays intangible.
(org-agenda-show-new-time): Fix bug when deleting a timestamp
right after changing it.
(org-agenda-check-for-timestamp-as-reason-to-ignore-todo-item)
(org-agenda-get-sexps, org-agenda-filter-by-regexp)
(org-agenda-filter-top-headline-apply): Fix indentation.
Thanks to Fletcher Charest and Nick Dokos for reporting issues
in this area.
There is one bug left: in a filtered agenda, changing a timestamp
will not always correctly display the warning. This happens when
the headline at point is followed by hidden headlines, because
`org-agenda-show-new-time' tries to set a text property at a
point where there is an overlay that hides then text. Because
the overlay is now intangible, the warning text will be displayed
too far on the right, and may be outside of the window.
* org-clock.el (org-clocktable-write-default): New parameter
":sort" to sort a column by a sorting type. E.g., a value of
:sort (1 . ?a) will sort the first column alphabetically. The
sorting line is the third one, table-wise, which is usually
the first line that contains user data.
* org.texi (The clock table): Document the new :sort
parameter.
* org.el (org-do-sort): Recognize [H]H:MM strings as time
values and allow sort-by-time to process them.
* org-table.el (org-table-sort-lines): Mention that sorting by
time also recognize [H]H:MM time values.
* lisp/ob-shell.el: added support to serialize vars as arrays or associative arrays as appropriate if it is using bash.
* testing/examples/ob-shell-test.org: a file containing a few code blocks both illustrating the use of arrays as well as serving as test for the new export functionality.
* testing/lisp/test-ob-shell.el: added a few unit tests that verify that this new logic only triggers for bash and no other shell at this time.
When variables are defined in a 'sh' code block, they are exported as strings. when the variable itself is an array or a table, then we simply get a shell variable that contains the list of all values in a non-structured form.
When calling the code block with bash, however, it will now export the list as an array, the table as an associative array. A scalar is exported the same way as before.
Signed-off-by: Pascal Fleury <fleury@google.com>
* lisp/ox-html.el (org-html-link):
* lisp/ox-latex.el (org-latex-link):
* lisp/ox-man.el (org-man-link):
* lisp/ox-odt.el (org-odt-link):
* contrib/lisp/ox-groff.el (org-groff-link): "mailto" URI do not have
an authority part, we do not append "//".
* lisp/ox-html.el (org-html-link):
* lisp/ox-latex.el (org-latex-link):
* lisp/ox-man.el (org-man-link):
* lisp/ox-odt.el (org-odt-link):
* lisp/ox-texinfo.el (org-texinfo-link): Append "//" after some link
types.
* lisp/ox-md.el (org-md-link):
* contrib/lisp/ox-groff.el (org-groff-link): Ditto. Also remove some
unused code, as search options are already stripped out link's path.
Since 3589f64e42, Org ignores "//" in
a link type so it has to be re-introduced upon exporting.
* lisp/org.el (org-make-target-link-regexp): Change regexp so
alphanumeric characters cannot be found next to a radio link.
(org-activate-target-links): Apply changes to radio link regexp.
* lisp/org-element.el (org-element--object-lex,
org-element-link-parser): Apply changes to radio link regexp.
* testing/lisp/test-org-element.el (test-org-element/link-parser):
Update test.
Patch suggested by Daniel Clemente.
http://permalink.gmane.org/gmane.emacs.orgmode/84461
* lisp/org-agenda.el (org-refile): Flip logic to allow instead of
prohibit the use of `org-refile' with the goto flat from non
org-mode buffers.
In commit 49da67d the condition was changed from only
`(unless goto ...)` to `(unless (and goto (listp arg)) ...)`
where the `and` condition is only true for non-empty lists, so that
calling `(org-refile t)` complains about not being inside an org-mode
buffer.
With this patch org-refile can be used (again) from anywhere when
passed the goto flag to jump to the chosen task.
TINYCHANGE
* lisp/ox-latex.el (org-latex-known-warnings): New variable.
(org-latex-known-errors): Remove variable.
(org-latex-compile): Report correctly when pdf file was not produced.
Catch all errors from process. Report some warnings.
(org-latex--collect-warnings): New function.
(org-latex--collect-errors): Remove function.
http://permalink.gmane.org/gmane.emacs.orgmode/77552
* lisp/org.el (org-make-link-regexps): Allow optional double slashes
after type. Small refactoring.
* testing/lisp/test-org-element.el (test-org-element/link-parser):
Update test.
This patch allows to write both [[file:/file.org]] and [[file:///file.org]].
See bug#16751.
* lisp/org.el (org-set-font-lock-defaults): Fix headline fontification
when keywords are stacked.
(org-toggle-comment): Properly toggle COMMENT keyword when a regular
keyword is already present.
(org-todo, org-agenda-prepare-buffers): Correctly match a commented
heading.
* lisp/org-colview.el (org-columns-capture-view): Correctly match
a commented heading.
* testing/lisp/test-org.el (test-org/toggle-comment): New test.
* lisp/ob-clojure.el (org-babel-expand-body:clojure): Don't handle
output here, since the result becomes double quoted with current
cider. Move to `org-babel-execute:clojure' instead.
(org-babel-execute:clojure): Use `nrepl-send-string-sync' instead
of `cider-eval-sync', which was removed.
* lisp/org-element.el (org-element-table-cell-parser,
org-element-table-cell-successor): Recognize cell even when last
vertical bar is missing.
* testing/lisp/test-org-element.el (test-org-element/table-cell-parser):
Add test.
Thanks to Thorsten Jolitz for reporting it.
http://permalink.gmane.org/gmane.emacs.orgmode/84713
* lisp/ox-latex.el (org-latex-export-to-latex): Downcase the language
name when using minted highlighting for src block exports.
Minted, by convention, uses all lowercase names for languages. This
will handle mappings like "R" to "r" or "Python" to "python"
automatically. More complex renamings still need to be handled by
customizing `org-latex-minted-langs'.
Note that the `downcase' is only applied when using the "automatic"
name. Names in `org-latex-minted-langs' still need to be lower-case.
TINYCHANGE
* lisp/ox-latex.el (org-latex--inline-image): support a 'sideways
option for the float, and add case to handle it with a \sideaysfigure
in the export.
(org-latex--org-table): support "sideways" instead of deprecated
"sidewaystable". The latter is still handled for backward
compatibility.
* doc/org.texi (Tables in LaTeX export): Document use of :float
sideways.
(Images in LaTeX export): Document use of :float sideways.
This patch provides consistent :float sideways support for LaTeX
export of both figures and tables.
http://permalink.gmane.org/gmane.emacs.orgmode/84618
TINYCHANGE
* lisp/org.el (org-radio-target-regexp): Radio targets cannot begin or
end with whitespace.
(org-target-regexp): Update syntax according to previous rule.
(org-any-target-regexp): Fix fontification bug.
* testing/lisp/test-org-element.el (test-org-element/radio-target-parser):
Add test.
Variables are turned into defconst to emphasize the fact that they are
not subject to change.
Thanks to Daniel Clemente for reporting it.
http://permalink.gmane.org/gmane.emacs.orgmode/84461
* lisp/org-element.el (org-element--cache-objects):
(org-element-context): Simplify structure of object cache.
This change avoids relying on buffer positions and artificial keys.
* ob-ocaml.el (org-babel-execute:ocaml): Capture the output, type, and
value when evaluating ocaml blocks. Return the one requested by
`results'.
(org-babel-ocaml-parse-output): Change the signature to take a type
and a value. Make the parsing of the type more robust.
* lisp/ox-publish.el (org-publish-find-title):
Fix (invalid-read-syntax "#").
Since 8e1386cead,
`org-element-interpret-data' no longer trims text properties attached
to strings. We need to remove them before writing the title into the
cache, as text properties are not readable.
* lisp/org-element.el (org-element-all-successors,
org-element-object-successor-alist): Remove variables.
(org-element-object-restrictions): Update value.
(org-element-bold-parser, org-element-code-parser,
org-element-entity-parser, org-element-export-snippet-parser,
org-element-footnote-reference-parser,
org-element-inline-babel-call-parser,
org-element-inline-src-block-parser, org-element-italic-parser,
org-element-latex-fragment-parser, org-element-line-break-parser,
org-element-link-parser, org-element-macro-parser,
org-element-radio-target-parser, org-element-statistics-cookie-parser,
org-element-strike-through-parser, org-element-subscript-parser,
org-element-superscript-parser, org-element-target-parser,
org-element-timestamp-parser, org-element-underline-parser,
org-element-verbatim-parser): Return nil when syntax at point is not
of the expected type.
(org-element-text-markup-successor,
org-element-latex-or-entity-successor,
org-element-export-snippet-successor,
org-element-footnote-reference-successor,
org-element-inline-babel-call-successor,
org-element-inline-src-block-successor,
org-element-line-break-successor, org-element-link-successor,
org-element-macro-successor, org-element-radio-target-successor,
org-element-statistics-cookie-successor,
org-element-sub/superscript-successor,
org-element-table-cell-successor, org-element-target-successor,
org-element-timestamp-successor,
org-element--get-next-object-candidates): Remove functions.
(org-element-timestamp-regexp, org-element--object-regexp): New
variables.
(org-element--object-lex): New function.
(org-element--parse-objects, org-element-context): Make use of new
tools.
This patch simplifies a lot object parsing and should improve
significantly `org-element-context''s speed.
http://permalink.gmane.org/gmane.emacs.orgmode/83872
* lisp/ox-html.el (org-html-htmlize-output-type): Add `nil'
option (no htmlization).
(org-html-fontify-code): Return plain text if
`org-html-htmlize-output-type' is `nil'.
* org-agenda.el (org-agenda-show-new-time): Don't use
`move-beginning-of-line' as it is slower and not needed.
Thanks to Matt Lundin for reporting this.
* lisp/ob-sh.el (org-babel-variable-assignments:sh): Check for
":hlines yes" and use header arg :hlines-string if
defined (default to "hline") and add this to the call of
`org-babel-sh-var-to-sh'.
(org-babel-sh-var-to-sh, org-babel-sh-var-to-string): Add additional
optional string argument `hline' and use it for the :hline parameter
in the call to `orgtbl-to-generic'.
* lisp/ob-lob.el (org-babel-lob-execute): Do not use defun subseq from
cl at runtime. Replace concatenation of sub-sequences by splicing
the modified params list into a copy of info (pre-must info be
preserved).
* lisp/ob-gnuplot.el (org-babel-gnuplot-process-vars):
`org-babel-gnuplot-table-to-data´ expects a table, so we need to
construct one when Babel hands us a vector.
Thanks to Eric Fraga for reporting the bug.
http://permalink.gmane.org/gmane.emacs.orgmode/84072
* lisp/org.el (org-make-target-link-regexp): Allow radio links after
an apostrophe and mid-word. Small refactoring.
* testing/lisp/test-ox.el (test-org-export/resolve-radio-link): Add
test.
See http://permalink.gmane.org/gmane.emacs.orgmode/84108.
* lisp/ox-publish.el (org-publish-cache-file-needs-publishing):
Correctly extract filename.
This bug was introduced in 6062f9ea72.
Thanks to steckerhalter for reporting it.
* lisp/org.el (org-in-commented-heading-p): New function.
* lisp/ob-tangle.el (org-babel-under-commented-heading-p): Remove
function.
(org-babel-tangle-collect-blocks): Use new function.
* lisp/ob-exp.el (org-babel-exp-process-buffer): Use new function.
* testing/lisp/test-org.el (test-org/in-commented-heading-p): New
test.
* lisp/org-element.el (org-element-all-successors,
org-element-object-restrictions): Prioritize `link' over other
successors in order to find radio links starting with another syntax
object (e.g., an entity). Also allow text markup within radio
targets.
(org-element-link-parser): Add contents to radio targets.
* lisp/org.el (org-make-target-link-regexp): Fix regexp so it can
match targets starting with an Org object (e.g., an entity).
(org-ctrl-c-ctrl-c): Fix function when applied on an object contained
within a radio target.
* testing/lisp/test-org-element.el (test-org-element/radio-target-parser): Add test.
* testing/lisp/test-ox.el (test-org-export/resolve-radio-link): Add test.
* lisp/org.el (org-mode): Change "\" and "~" characters syntax from
`punctuation' to `symbol' so they are on par with other characters used
in Org syntax (e.g., "/", "*"...).
This change is needed to correctly find radio links starting with an
entity:
<<<\alpha-test>>> \alpha-test
* lisp/ox-beamer.el (org-beamer-publish-to-pdf):
* lisp/ox-latex.el (org-latex-publish-to-pdf): Ensure ".tex" file is
generated in the same directory as the ".org" file.
Thanks to Rafael for reporting it. See
http://permalink.gmane.org/gmane.emacs.orgmode/84095.
* lisp/ox-latex.el (org-latex-headline): Hard-code "\underline" in
sections because "\uline" ("ulem" package) returns an error and
"\ul" ("soul" package) doesn't support chinese characters.
See http://permalink.gmane.org/gmane.emacs.orgmode/83962 for the
related thread.
* org-src.el (org-edit-src-exit): Place an undo boundary before
writing changes back to parent buffer.
The previous code attempted to preserve the undo information in the
indirect buffer editing the source code, but this interacts poorly
with the undo system, and can lead to undo operations scrambling the
buffer. The new approach means that edits made in the indirect buffer
cannot be undone piece-by-piece (instead, all changes made in the
indirect buffer constitute one “change” from the point of view of
undo), but the misbehavior of undo is (hopefully) now avoided.
* ox-latex.el (org-latex-text-markup-alist): Use \ul{...} for
underlining instead of \uline{...} as requiring the hyperref
package makes \uline{...} unusable on headline.
* org.el (org-latex-default-packages-alist): Add the "soul"
package.
Thanks to Konstantin Kliakhandler for reporting this.
* lisp/org.el (org-open-at-point): Correctly open fuzzy links when
path is hexified.
* testing/lisp/test-org.el (test-org/coderef): New test.
(test-org/fuzzy-links): Add test.
* org.el (org-refresh-properties): Don't add the property to
the whole subtree, only to the part between the beginning of
the headline and the end of the "content", before any other
headline. This fix a bug about properties displayed as
inherited in the agenda, where Org properties are checked
against text properties.
Thanks to Sébastien Vauban for reporting this.
* org-agenda.el (org-agenda-filter-hide-line): Hide from the
beginning of the line to the beginning of the next line.
(org-agenda-show-new-time): Use `move-beginning-of-line' and
`move-end-of-line'.
(org-agenda-drag-line-forward): Adapt to the new definition of
hidden filtered lines.
Thanks to Igor Sosa Mayor for reporting this bug and to Nick Dokos
and Matt Lundin for providing further information.
* org-compat.el (org-move-to-column): Always ignore invisible
text in agenda buffer, and when there is both a bracket link
and '(org-link) as a member of `buffer-invisibility-spec'.
Add a docstring.
* org.el (org-align-tags-here): Add docstring and remove
useless arguments when calling `org-move-to-column'.
* org-table.el (org-table-copy-down)
(org-table-find-dataline, org-table-move-row)
(org-table-insert-hline, org-table-kill-row):
* org-agenda.el (org-agenda-next-item)
(org-agenda-previous-item, org-agenda-todo)
(org-agenda-priority, org-agenda-show-new-time)
(org-agenda-clock-in, org-agenda-clock-out): Remove useless
arguments when calling `org-move-to-column'.
This fixes the issue about S-RET not placing the cursor in the right
table field when M-x org-toggle-link-display RET removed '(org-link)
from `buffer-invisibility-spec' and some other discrepancies (like
S-M-<up> not restoring point correctly when there is a bracket link
before point, or M-x org-clock-display RET not aligning overlays
correctly, etc.
Thanks to Matt Lundin and Michael Brand for tracking issues
about this.
* lisp/ob-core.el (org-babel-exp-reference-buffer): New variable, as
a replacement for `org-current-export-file'.
(org-babel-check-confirm-evaluate): Use new variable.
* lisp/ob-exp.el (org-babel-exp-in-export-file): Use new variable.
(org-babel-exp-get-export-buffer): Remove function.
(org-babel-exp-process-buffer): Change signature.
* lisp/ob-ref.el (org-babel-ref-resolve): Use new variable during
export in order to properly resolve references.
* lisp/ox.el (org-export-execute-babel-code): Use new variable.
* contrib/lisp/org-wikinodes.el (org-wikinodes-process-links-for-export):
Remove a cond branch as it is always
false (`org-current-export-file' couldn't be a string).
* testing/lisp/test-ob-lob.el (test-ob-lob/export-lob-lines): Update
test.
* testing/lisp/test-ob.el (test-ob/eval-header-argument): Update test.
* testing/lisp/test-ob-exp.el (ob-export/reference-in-post-header):
New test.
During export, Babel executes sequentially all blocks in the buffer
being exported. This can lead to modifications preventing some
references from being resolved. As a workaround, Babel stores
a pristine copy of the buffer in a variable so it can always find
needed references.
Before this patch, the variable storing this copy was
`org-current-export-file' and was dynamically bound in "ox.el". It
was used to resolve noweb references (`org-babel-expand-noweb-references')
but not regular references (`org-babel-ref-resolve').
Now, the variable is `org-babel-exp-reference-buffer' and it is bound
from `org-babel-exp-process-buffer'. It is used to resolve all
references. In particular, this allows to use references in :post
header.
Thanks to Jarmo Hurri for reporting it.
* org.el (org-refile): Rename first argument to arg, as its
use goes beyond is now more general. Only keep bracket links
descriptions in the displayed heading. Enhance docstring.
* org-clock.el (org-clock-get-table-data): When :link is `t'
in the clocktable parameters, bracket links in the clocktable
should only contain their description, other C-c C-o will try
to open the bracket link at point instead of the headline.
Thanks to Alexey Lebedeff for providing a preliminary patch for this.
* lisp/org-capture.el (org-capture-place-table-line): If the value of
`:table-line-pos' is a function name, used its return value to set the
position inside the table. The return value must be a string like
"II-3". Else `:table-line-pos' is 'eval'ed.
TINYCHANGE
* org-agenda.el (org-agenda-todo): Always restore the window
state after `org-agenda-change-all-lines' has been called.
`org-agenda-change-all-lines' is narrowing to the line it needs to
update. In the narrowed state, `org-agenda-finalize' is called,
which may lead to a change in the way the window is displayed. We
use `save-window-excursion' to ensure the window state is restored
correctly.
Thanks to Francesco Pizzolante for reporting this with a
detailed recipe.
* org-agenda.el (org-agenda-open-link): Don't throw an error
when trying to open a link when the point is on a place that
is not associated with a buffer.
* org-attach.el (org-attach-sync, org-attach-file-list): Allow
to attach files starting with a dot.
Thanks to Oleh for requesting this and providing a patch.
* org.el (org-entry-get): Only try to combine file properties
with local properties when the property drawer contains such
local property, not when the property drawer exists.
Before the fix, `org-entry-get' behavior was inconsistent,
returning `nil' when looking for a property in a subtree with
no property drawer, and returning the global properties in a
subtree with a property drawer, independantly of whether this
property drawer contained a reference to the property we are checking
against or not.
As a side-effect, inheritance was broken for the case that
Ilya reported in commit 475f2f53, because `org-entry-get' returned
a value (with the global properties of the file) too early.
Thanks to Ilya for raising this bug and to Achim for pointing
out that the previous fix was wrong.
* lisp/org-element.el (org-element-link-parser): "radio" links have
their path downcased to avoid introducing case mismatch with their
relative radio target. With this change it is also necessary to add
contents to them, since `:path' property no longer matches real
value of the link.
(org-element-radio-target-parser): Downcase value as explained above.
Store the initial value in a new `:raw-value' property.
* ox-latex.el (org-latex-link):
* ox-html.el (org-html-link):
* ox-beamer.el (org-beamer-link): Fix links to radio targets.
* ox-ascii.el (org-ascii-link): For links to a radio target,
use the link, not the target.
Thanks to Noah Slater for reporting this.
* org.el (org-store-link): Check `dired-mode' through
`derived-mode-p' to allow storing links from derived modes
like `sr-mode'.
Thanks to Thomas Holst for the idea.
* lisp/ob-exp.el (org-babel-exp-process-buffer): Skip code under
a commented headline.
* testing/lisp/test-ob-exp.el (ob-export/export-under-commented-headline):
New test.
* lisp/org.el (org-open-at-point): Unescape optional part in file
links.
This patch allows to handle properly links like:
[[file:somefile.org::*headline%20with%20spaces]]
Thanks to Thomas Holst for reporting it.
* org-timer.el (org-timer-cancel-timer, org-timer-stop):
Enhance message.
(org-timer-set-timer): Use the number of minutes in the Effort
property as the default timer value. Three prefix arguments
will ignore the Effort value property.
* lisp/org-agenda.el (org-agenda-get-scheduled): If
`org-agenda-skip-scheduled-if-deadline-is-shown' is set to
'repeated-after-deadline, still show tasks without any deadline
The problem was that the check for the deadline seems to return a
default time even if no deadline is set for the task. This adds a
check if there is a deadline at all, if there is none, the task is
shown in the agenda, otherwise the old semantics apply.
TINYCHANGE
* lisp/org.el (org-entry-get-with-inheritance): Temporarily
let-bind `org-file-properties', `org-global-properties' and
`org-global-properties-fixed' to nil before calling `org-entry-get'
on entries up the hierarchy from the queried entry.
Problem was that when org-entry-get-with-inheritance went up the
hierarchy of entries from a given entry, checking whether the property
has been set in any of the entries, it was calling org-entry-get,
which always looks at file-scope and global-scope properties. So if
our property was set file-wide or system-wide, and somewhere up the
hierarchy there was an entry which set some properties _other_ than
the one we're looking up but did not set ours, org-entry-get would
fill in the global property value and report that our property was in
fact set in that entry. The search would stop, and if the property
was actually set further up the hierarchy (which should override
file-wide or system-wide settings), we would never get to that
up-the-hierarchy setting.
Illustration of fixed problem:
#+PROPERTY: myprop aaa
* headline A
:PROPERTIES:
:myprop: bbb
:END:
*** headline B
:PROPERTIES:
:otherprop: ccc
:END:
#+BEGIN_SRC emacs-lisp
(message (org-entry-get-with-inheritance "myprop"))
#+END_SRC
#+RESULTS:
: aaa
Result should be bbb, which it is after the fix.
* org.el (org-store-link): Fall back on an empty string when
no description is available.
This fixes a bug about tangling a source block outside of any
subtree when `org-id-link-to-org-use-id' is `t'.
Thanks to Sean Allred for reporting this.
* lisp/org-plot.el (org-plot-quote-tsv-field): Dump data as is when
`timeind' is set.
* lisp/org-plot.el (org-plot/gnuplot): By-pass type checking when
either `textind' or `timeind' is set.
The current org-plot relies on `org-table-number-regexp' and
`org-ts-regexp3' to check the index type. However, we already have
`timeind' to indicate that the index is the datatype of date/time.
By-pass the type checking in `org-plot/gnuplot' when either `textind'
or `timeind' is set. The whole point of the check is to determine the
type. We do not need that when we already know.
Also dump the date/time data with `org-plot-quote-tsv-field' as is,
without double quotes, when `timeind' is set. So that we can use
`timefmt' to read what we have. Currently we do not have a good way
to specify `timefmt' with the double quotes.
TINYCHANGE
* org.el (org-refresh-category-properties)
(org-complete-expand-structure-template)
(org-buffer-property-keys, org-context):
* org-mouse.el (org-mouse-context-menu):
* org-list.el (org-list-send-list):
* org-element.el (org-element--list-struct):
* org-archive.el (org-all-archive-files): Allow spaces before
any option keyword.
* org.el (org-fontify-meta-lines-and-blocks-1): Fix
fontification of all option keywords.
Thanks to Alan Schmitt for raising the problem with fontification.
* org-capture.el (org-capture-finalize): Ensure to widen the
buffer when the target buffer is not initially narrowed.
Thanks to Adam Spiers and Thomas Proschinger for reporting this bug.
* org-capture.el (org-capture-finalize): Ensure to widen the
buffer when the target buffer is not initially narrowed.
Thanks to Adam Spiers and Thomas Proschinger for reporting this bug.
* lisp/org-archive.el (org-get-local-archive-location): Ignore
identation for ARCHIVE keywords.
* lisp/org-colview.el (org-columns-store-format): Ignore indentation
for COLUMNS keywords.
* lisp/org.el (org-mode): Keywords can start at any column.
(org-reftex-citation): Ignore indentation for BIBLIOGRAPHY keywords.
(org-make-options-regexp): Ignore indentation for all keywords.
* org-compat.el (org-move-to-column): Fix bug about ignoring
bracket links visibility status in tables with S-RET.
Thanks to Michael Brand for reporting this.
* org.el (org-delete-property): Don't suggest to delete the
CATEGORY property when the category is not explicitely set in
the property drawer. Also enforce matching when completing.
Thanks to Oleh for providing a preliminary patch for this.
* org.el (org-insert-heading): Fix regression: with two
universal prefixes, insert heading at the end of the subtree.
(org-insert-todo-heading): Bugfix: only enforce the first TODO
state when arg is '(4).