* 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).
* lisp/org-element.el (org-element--cache-put): Do not store objects
within headlines in cache as headlines are not cached, and,
therefore, never removed. This prevents adding the same object in
cache multiple times without ever garbage collecting it.
* lisp/org-element.el (org-element-context): Fix parsing of bold
objects at the beginning of a headline.
* testing/lisp/test-org-element.el (test-org-element/context): Add
test.
* lisp/org-capture.el (org-capture-goto-last-stored): Use
`org-bookmark-names-plist'.
* lisp/org.el (org-refile-goto-last-stored): Use
`org-bookmark-names-plist'.
* lisp/org.el (org-open-at-point): Open "docview"-type links
correctly, i.e., without adding "file+" first.
(org-open-file-with-system, org-open-file-with-emacs): Change
signature. Deprecate functions.
* lisp/org-docview.el (org-docview-open): Open file even when no file
number is specified.
This change removes "file+emacs" and "file+sys" types from
`org-link-protocols', since they are not hard-coded in
`org-open-at-point'.
* org.el (org-emphasis-alist): Use `org-verbatim' for =text=
and `org-code' for ~text~.
* org.texi (Emphasis and monospace): Document the use of
=verbatim= and ~code~ to be consistent with
`org-element-text-markup-successor'.
Thanks to Yasushi for reporting this.
* ob-clojure.el (org-babel-execute:clojure): Don't use
`cider-current-ns' to set the current namespace.
Thanks to Volker Strobel for reporting this issue.
* lisp/org.el (org-open-at-point): White spaces after an object are
usually ignored by the function. Though, when point is right after
the object, still activate it.
* testing/lisp/test-org.el (test-org/custom-id): Fix test.
* lisp/org.el (org-open-at-point): On an unsupported object nested
within another object, try to open the parent object.
This should correctly open the following link, with point on the
verbatim object:
[[http://orgmode.org][=verbatim=]]
* lisp/org.el (org-open-at-point): Do not do anything when point is on
white spaces after an object.
* testing/lisp/test-org.el (test-org/custom-id): Modify test.
* lisp/ox-beamer.el (org-beamer-item): Insert the export snippet right
after the first \item, not all of them.
Thanks to Andreas Leha for reporting it.
* lisp/org-bibtex.el (org-bibtex-read): Check string length before
using aref.
If a field in a bibtex entry is empty:
@article(test,
description = "")
the function org-bibtex-read throws an exception because of
using aref on this empty string.
The solution is to check the length of the string before.
TINYCHANGE
Signed-off-by: Stefan-W. Hahn <stefan.hahn@s-hahn.de>
* lisp/org.el (org-open-at-point): Allow options when using
applications in links with options.
(org-open-file-with-system, org-open-file-with-emacs): Change
signature to be compatible with `org-open-file'
* lisp/org.el (org-open-at-point): Rewrite function using Element
parser.
(org-link-types): Add "help" type.
* testing/lisp/test-org-open-at-point.el: Remove file. Two tests are
not supported anymore (namely bracket-link-before and
plain-link-before) and the other tests are wrong (mixing id and
custom-id links).
* testing/examples/open-at-point.org: Remove file.
* testing/lisp/test-org.el (test-org/custom-id): Add test.
Unlike to the previous implementation, this one will only open links
under point or just before point, not links on the same line but
before point.
* lisp/org-element.el (org-element-context): If function is called at
the end of buffer, return any object that ends there.
* testing/lisp/test-org-element.el (test-org-element/context): Add
test.
* lisp/ox-latex.el (org-latex-custom-id-as-label): New variable.
(org-latex-headline): Optionally generate label keys based on
CUSTOM_ID, depending on value of :latex-custom-id-labels option
(org-latex-link): Optionally generate refs based on CUSTOM_ID,
depending on value of :latex-custom-id-labels option.
This change was discussed in the following thread:
http://thread.gmane.org/gmane.emacs.orgmode/82392
* lisp/org-element.el (org-element--parse-to): Fix cache parsing when
the next element to shift is at the contents beginning of its
parent. Refactor function.
* lisp/org-element.el (org-element-cache-sync-idle-time): Change
default value.
(org-element-cache-sync-duration, org-element-cache-sync-break,
org-element--cache-sync-requests, org-element--cache-sync-timer,
org-element--cache-sync-keys, org-element--cache-default-key,
org-element--cache-change-warning): New variables.
(org-element-cache-merge-changes-threshold,
org-element--cache-status): Removed variables.
(org-element--cache-key, org-element--cache-generate-key,
org-element--cache-key-less-p, org-element--cache-find,
org-element--cache-set-timer, org-element--cache-process-request,
org-element--cache-submit-request, org-element--parse-to,
org-element--cache-interrupt-p, org-element--cache-put,
org-element--cache-active-p): New functions.
(org-element--cache-compare): Adapt to new keys in AVL tree.
(org-element--cache-pending-changes-p,
org-element--cache-cancel-changes, org-element--cache-mapc,
org-element-cache-get, org-element-cache-put): Removed functions.
(org-element--cache-before-change): Use new variables.
(org-element--cache-after-change): Renamed from
`org-element--cache-record-change'.
(org-element-cache-get): Change signature.
(org-element-cache-put): Rewrite function. Use new tools.
(org-element-cache-reset): Adapt to new variables.
(org-element--cache-sync): Rewrite function.
* lisp/ox.el (org-export--generate-copy-script): Do not copy through
new cache-related variables.
(org-export-ignored-local-variables): New variable.
* testing/lisp/test-org-element.el (test-org-element/cache): New test.
Now only the part of the cache that needs to be accessed is updated
synchronously. Otherwise, it happens on idle time.
* lisp/org.el (org-link-escape-chars): Extend docstring.
(org-link-escape-chars-browser): Mention in docstring that it will
become a candidate for removal.
(org-link-escape-browser): Mention in docstring that it will become a
candidate for removal.
(org-open-at-point): Move `url-encode-url' and comments into
`org-link-escape-browser'.
* lisp/ox-html.el (org-html-link): Make use of
`org-link-escape-browser' like `org-open-at-point'.
* testing/lisp/test-org.el (test-org/org-link-escape-chars-browser):
Mention in docstring that it will become a candidate for removal.
* lisp/org-element.el (org-element-inlinetask-parser): Fix parsing
when regular and degenerate inlinetasks are mixed in the section.
* testing/lisp/test-org-element.el (test-org-element/inlinetask-parser):
Add tests.
Thanks to Anders Johansson for reporting it.
* org-colview.el (org-columns-display-here): Fix the column
view for numbers with a format specifier (e.g. {+; %5.1f}).
Thanks to OSiUX and Michael Brand for reporting this.
* lisp/ob-shell.el (org-babel-execute:shell): Pass the cmdline header
argument to `org-babel-sh-evaluate'.
(org-babel-sh-evaluate): Pass the cmdline header argument to
`call-process-shell-command'.
* org-src.el (org-edit-src-code): Throw a warning instead of
an error when loading the mode fails, otherwise the user is
left with unusable buffers.
Thanks to Florian Beck for suggesting this.
* lisp/org-element.el (org-element-normalize-contents): Do not ignore
empty lines when an object follows.
* testing/lisp/test-org-element.el (test-org-element/normalize-contents):
Add test.
* ob-core.el (org-babel-insert-result): Use `org-babel-examplify-region'.
(org-babel-capitalize-examplize-region-markers): Rename to
`org-babel-capitalize-example-region-markers'.
(org-babel-examplize-region): Mark obsolete and rename to
`org-babel-examplify-region'.
* lisp/org.el (org-toggle-fixed-width): New function.
* testing/lisp/test-org.el (test-org/toggle-fixed-with): New test.
This replaces the old implementation removed in commit
6a00c96541.
* org-table.el (org-table-copy-down)
(org-table-find-dataline, org-table-move-row)
(org-table-insert-hline, org-table-kill-row): Use
`org-move-to-column' with the IGNORE-INVISIBLE arg set to `t',
so that abbreviated rows don't interfer with setting the
cursor back at the correct position.
Thanks to Jason Lewis for reporting one of these bugs.
* lisp/org.el (org-hide-macro-markers): new option
(org-fontify-macros): new function
(org-set-font-lock-defaults): call `org-fontify-macros'
* doc/org.texi: Document user option `org-hide-macro-markers'
TINYCHANGE
* org-agenda.el (org-agenda-find-same-or-today-or-agenda): Use
`org-agenda-backward-block'.
(org-agenda-backward-block): Renamed and rewritten from
`org-agenda-goto-block-beginning'.
(org-agenda-forward-block): New command.
(org-agenda-mode-map): Remap `backward-paragraph' and
`forward-paragraph' to `org-agenda-backward-block' and
`org-agenda-forward-block' respectively.
Thanks to Bart Bunting for raising this.
* lisp/org-element.el (org-element-interpret-data): Do not remove
properties by side-effect when interpreting a string, as it also
removes them from the parse tree, making the string unusable without
its :parent property.
If text properties get in the way, it is also possible to use
`substring-no-properties' but then, a compatibility function would be
required for XEmacs.
* lisp/ob-exp.el (org-babel-exp-process-buffer): Also check
`org-src-preserve-indentation' to know when to preserve indentation.
* testing/lisp/test-ob-exp.el (ob-export/export-and-indentation): New
test.
Thanks to John Hendy for reporting it.
* ob-clojure.el (org-babel-execute:clojure): Use
`org-babel-result-cond' to create the correct output.
Thanks to Soapy Smith who reported this and to Eric Schulte for providing the fix.
* lisp/ob-exp.el (org-babel-exp-code-template): Include switches in
template.
(org-babel-exp-code): Provide %switches placeholder.
* testing/lisp/test-ob-exp.el (ob-export/export-src-block-with-switches):
New test.
(ob-export/export-src-block-with-flags): Fix indentation.
This fixes dde6af3a62. The confusion
came from the fact that "flags" placeholder had two meanings:
the :flags value and the block's switches (e.g., "-n"). This patch
separates these two meanings.
* lisp/org-element.el (org-element-quote-section-parser,
org-element-quote-section-interpreter): Remove functions.
(org-element--current-element, org-element--parse-elements): Do not
handle quote sections at all.
* testing/lisp/test-org-element.el (test-org-element/quote-section-parser):
Remove test.
* lisp/ob-R.el (org-babel-expand-body:R): Added the opening of the
tryCatch() wrapper
* lisp/ob-R.el (org-babel-R-construct-graphics-device-call): Added
closing of the wrapper containing the error function.
Added tryCatch() wrapper around the execution of the source block so
that if an error occurs
- the R graphic device is closed even when an error occurs
- a graph containing the error message is created
- the error message is printed in the R session in the form
ERROR : the error message
TINYCHANGE
* lisp/ox-latex.el (org-latex-plain-list): Do not automatically
enclose value for :options attribute within square brackets.
Instead, append them verbatim next to the block name, as special
blocks do.
* doc/org.texi (@LaTeX{} specific attributes): Update manual.
* lisp/ob-ref.el (org-babel-ref-parse): If
`org-babel-current-src-block-location' is a marker, it can be from
another buffer, use marker-position instead in this case.
Introduced with r114064 on Emacs trunk. Not sure if this is a bug in
Org or Emacs, but the patch restores the previous behaviour.
* lisp/ox-beamer.el: Be more cautious about the order in which options
are defined, at this order will be the same when creating an export
template (see `org-export-insert-default-template').
* lisp/ox-html.el: Ditto.
* lisp/ox-latex.el: Ditto.
* lisp/ox.el: Ditto.
* lisp/ox.el (org-export-insert-default-template): Do not hard-code
alphabetical order for keywords in templates. Instead, follow order
specified in back-ends or `org-export-options-alist' for the default
case.
* org-compat.el (org-set-transient-map): Alias pointing at
`set-transient-map' if defined, at `set-temporary-overlay-map'
otherwise.
Thanks to Eric Abrahamsen for reporting this.
* lisp/org-element.el (org-element--cache-mapc): New function.
(org-element--cache-sync): Use new function.
`avl-tree-mapc' exists in Emacs 24's "avl-tree" but not in Emacs
23's. The new function implements it.
* org-agenda.el (org-agenda-next-item)
(org-agenda-previous-item, org-agenda-toggle-archive-tag)
(org-agenda-todo, org-agenda-priority, org-agenda-clock-in)
(org-agenda-clock-out): Put the cursor back on the correct
column, when possible.
(org-agenda-todo): When `org-clock-out-when-done' is `t', also
remove the current clock overlay.
* lisp/org-element.el (org-element--cache-sync): Call
`avl-tree-delete' with 2 arguments only as a 4-arguments call is
only compatible with Emacs 24.1 and later.
* org.el (org-provide-todo-statistics): Allow to set to a list
of two lists, one with TODO keywords, the other one with DONE
keywords.
(org-update-parent-todo-statistics): Correctly handle
`org-provide-todo-statistics' when it is set as a list of two
lists, for TODO and DONE keywords.
Thanks to Fletcher Charest for reporting this and requesting
this feature.
* org.el (org-insert-all-links): New parameters `pre' and
`post' to specify a string to preprend and append.
(org-insert-last-stored-link): New command.
(org-mode-map): Bind the new command to `C-c M-l'.
Thanks to Sébastien Vauban for requesting this and to Nick
Dokos for testing and fixing the patch.
* lisp/ob-exp.el (org-babel-exp-code): Fix export of src blocks with
flags.
* testing/lisp/test-ob-exp.el (ob-export/export-src-block-with-flags):
New test.
Thanks to Giuseppe Lipari for reporting it.
* org.el (org-outline-overlay-data): Set the insertion-type of end
bound marker of the function to t (means marker advances when you
insert text at it)
This is to conserve outline visibility property when changes are made
at the end bound of the data.
For example: try `org-babel-execute-subtree' on a folded outline:
The new result will be shown after the folded part of the outline
whereas the outline body should not be visible.
TINYCHANGE
* ox.el (org-export--get-subtree-options): When using the
headline as a title for a subtree export, only take the true
heading, no TODO keyword, no priority cookie, no tag.
Thanks to Robert Klein for reporting this.
* lisp/org-element.el (org-element-at-point): Do not call
`outline-next-heading' when an element at top level contains point.
This is particularly important when the current section ends way
after the point.
* lisp/ob-core.el (org-babel-current-result-hash): Additional info
argument so that named call line results may be found.
(org-babel-set-current-result-hash): Additional info argument so
that named call line results may be found.
* lisp/ob-lob.el (org-babel-lob-execute): Passing info to hash finding
functions so that named results may be found.
* lisp/ob-exp.el (org-babel-exp-process-buffer): Make processing more
robust when results are inserted before source block or when source
block is followed by multiple blank lines.
* testing/lisp/test-ob-exp.el (ob-export/export-with-results-before-block):
Add test.
* lisp/ox.el (org-export-insert-default-template): Only insert
keywords and options relatives to the selected back-end. Ignore
those relatives to its parent in the case of a derived back-end.
* lisp/ox-ascii.el (org-ascii--current-text-width): Convert `length'
to `string-width'.
(org-ascii--build-title, org-ascii--build-toc)
(org-ascii--list-listings, org-ascii--list-tables)
(org-ascii-template--document-title)
(org-ascii-inner-template, org-ascii-format-inlinetask-default)
(org-ascii-format-inlinetask-default, org-ascii-item
(org-ascii--table-cell-width, org-ascii-table-cell)
(org-ascii--current-text-width): Likewise.
I've checked all occurrences of the function `length' in ox-ascii.el.
It turns out that the most of them are calculating the width of given
string. To support fullwidth characters, we better use `string-width'
instead of `length'.
Some characters in UCS are categorized as "East Asian Ambiguous"[1].
The return value of `string-width' with those characters depends on
how Emacs is setup. We leave those ambiguous character handling to
Emacs.
Two usages of `length' in `ox-ascii.el' were left as-is, because those
were used for:
- bullet depth calculation in `org-ascii-headline', and
- cell position calculation in `org-ascii--table-cell-width'.
[1]: http://www.unicode.org/reports/tr11/#Ambiguous
* lisp/ox-latex.el (org-latex-headline, org-latex-item): Fix items
starting with a square bracket.
Thanks to Jon Degenhardt, Vladimir Lomov and Eric S Fraga for
contributing to the discussion.
* org.el (org-demote): Ignore invisible text when aligning
tags.
(org-set-tags): When JUST-ALIGN is 'ignore-column, ignore
invisible text when restoring the cursor to the correct
column.
This fixes a bug about demoting hidden headlines.
If org-move-to-column temporarily ignore visibility
specs, this will prevent org-demote to work correctly
in hidden regions.
Thanks to Susan Cragin for reporting this bug.
* lisp/org-table.el (org-table-remote-reference-indirection): Change
the local variable START to a value that will be still valid after
`replace-match'.
* lisp/org.el (org-toggle-item): Do not call `org-list-struct' twice
and fix checkboxes after modifying one of them.
This patch is relative to 213c2a6aa0.
* ob-python.el (org-babel-python-var-to-python): Bugfix: Strip
properties before formatting the results.
Thanks to Daniel Gerber for reporting this and providing a fix,
and to others who contributed.
* org-agenda.el (org-agenda-regexp-filter-preset): Fix
typo in docstring.
(org-agenda-reapply-filters): New function.
(org-agenda-drag-line-forward): Rewrite to fix a bug when used
in filtered agendas.
(org-agenda-drag-line-backward): Rewrite using
`org-agenda-drag-line-forward'.
Thanks to Thomas Morgan for reporting this.
* lisp/org-table.el (org-table-remote-reference-indirection): Use the
optional arg START of `string-match' to improve performance and to
avoid endless loop on user error.
* doc/org.texi (References): Add description for indirection of
NAME-OR-ID.
* lisp/org-table.el (org-table-eval-formula): Make use of
`org-table-remote-reference-indirection'.
(org-table-remote-reference-indirection): New function.
* testing/lisp/test-org-table.el
(test-org-table/remote-reference-indirect): Change to use remote
reference indirection.
* lisp/org.el (org-match-substring-regexp): Simplify syntax when not
using braces. Also make the variable a defconst.
(org-match-substring-with-braces-regexp): Make the variable a defconst
and remove a useless group in regexp.
* lisp/org-element.el (org-element-subscript-parser,
org-element-superscript-parser): Adapt to group changes.
* lisp/org-element.el (org-element--cache-root): New function.
(org-element--cache-sync, org-element-cache-get): Use new function.
This is a workaround for `avl-tree--root' bug before Emacs 24. Thanks
to Daniel Clemente for reporting it.
* lisp/org.el (org-get-previous-line-level): Do not call
`org-current-level' twice unless necessary. Also, avoid using
`line-number-at-pos' when the information needed is to know if point
is in the first line of the visible part of the buffer.
* lisp/ox-html.el (org-html-checkbox-types): Fix docstring.
(org-html-checkbox-type): Use symbols instead of strings. It avoids
to rely on `intern' later on. Modify docstring so its first line
contains only a complete sentence.
(org-html-checkbox): Use `assq' instead of `assoc'.
This fixes 2c782da801.
(org-html-checkbox-types): New constant. Contains unicode, ascii and html
checkbox alists.
(org_html_checkbox_type): New customzation variable can be set to one
of the above choices. Defaults to "ascii"
(org-html-checkbox): Use the appropriate set of checkboxes as
specified in `org-html-checkbox-type'.
* org-entities.el (org-entities-help): Prevent the display of
pretty entities, as this help buffer is meant to list literal
strings, not utf-8 representations.
Thanks to Brice Waegenire for reporting this.
* lisp/ox-beamer.el (org-beamer-select-environment): Function doesn't
work if fast tag selection is disabled, so make sure it is always
on, independently on user's configuration.
Reported-by: Anders Johansson <mejlaandersj@gmail.com>
* lisp/org-element.el (org-element-at-point, org-element-cache-get,
org-element-cache-put, org-element--cache-sync): Complete rewrite to
use new data structure.
(org-element-context, org-element-cache-reset): Slight change in order
to use new tools to access cached data.
(org-element-cache-merge-changes-threshold): Renamed from
`org-element--cache-merge-changes-threshold'.
(org-element-cache-sync-idle-time): Renamed from
`org-element--cache-sync-idle-time'.
(org-element--cache-objects): New variable.
Now elements are stored in AVL tree and objects in a hash table. Also
moved functions relative to cache into a specific section of the file.
* lisp/ox.el (org-export-with-fixed-width, org-export-with-tables):
Change docstring to reflect new meaning.
(org-export--skip-p): Completely ignore tables and fixed-width areas
if appropriate option is nil.
* testing/lisp/test-ox.el (test-org-export/handle-options): Add tests.
* org.el (org-refile-get-location): Check for a refile
position when the position is not nil, otherwise allow to
create the parent node if the user requests it.
Thanks to Li Zhuo for reporting this bug and for providing
a preliminary patch.
* lisp/ox-icalendar.el (org-icalendar--combine-files): Make sure
anniversaries do not end up in *Message* buffer instead of the ICS
file.
Patch-by: Thomas Baumann <tbaumann@tum.de>
* org.el (org-shiftcontrolup, org-shiftcontroldown): When
`org-support-shift-select' is not `nil', let-bind it to nil
if point is on a clock log. Otherwise throw an error.
* org-agenda.el (org-cmp-ts): Fix bug: interpret `late' as
`later than any date' instead of `later than today'.
Thank to Michael Crouch for reporting this and to Michael Hoffman for
providing the fix.
* org.el (org-do-emphasis-faces): Handle false positives by
restarting the re-search one char after the beginning of the
match, not one char before its ending.
Before this fix, consider this buffer
** Headline
- *Bold* non-bold
- *Bold* non-bold
The first false positive is "** Headline\n - *Bold*"
Starting the search again from the last "*" will skip
the "*Bold*" string. Starting again at "* Headline" will
find it.
* lisp/ox.el (org-export-dictionary): Add new Japanese translation
strings.
A few strings in `org-export-dictionary' didn't have Japanese
translations. So, I just added.
* lisp/ox.el (org-export-dictionary): Convert all Japanese translation
from utf-8 to default.
There shouldn't be much need for exporters and users to worry about
the coding system of the final output. If one wants to export a
"Japanese" document, he should already have the document with Japanese
capable coding system. In that case, Emacs should be able to handle
the coding system conversion form the translation table to the
designated file coding system.
There are two cases which I can think don't work:
- all words in the document are written in romaji, and one wants
romaji translations
- the documents are writ en in a language which does not support
Japanese character set, ie English or French, and one wants to use
Japanese for non-content strings, ie TOC.
These cases are too rare that we can ignore for now.
* lisp/ob-J.el (org-babel-J-interleave-echos): Change '' to ','.
(org-babel-J-interleave-echos-except-functions): Improve regexp
and change '' to ','.
(org-babel-J-strip-whitespace): Change '' to ','.
(obj-get-string-alignment): New function.
(org-babel-J-print-block): Accomodate left- and right-aligned tables.
(obj-match-second-space): Rename.
(obj-match-second-space-left): Renamed from `obj-match-second-space'.
(obj-match-second-space-right): New function.
* lisp/org-element.el (org-element--cache-sync): Fix cache update when
a only contents of an element are modified.
(org-element--cache-shift-positions): Add optional argument allowing
partial shifting.
* ox-html.el (org-html-style-default): New classes
caption.t-above and caption.t-bottom.
(org-html-table): Use new classes.
TINYCHANGE
Signed-off-by: Vladimir Lomov <lomov.vl@gmail.com>
* ox-html.el (org-html-style-default): New classes
caption.t-above and caption.t-bottom.
(org-html-table): Use new classes.
Signed-off-by: Vladimir Lomov <lomov.vl@gmail.com>
* lisp/ox.el (org-export-remove-uninterpreted-data): Renamed from
`org-export--remove-uninterpreted'.
(org-export--remove-uninterpreted-data-1): New function.
(org-export-as): Use new function.
* testing/lisp/test-ox.el (test-org-export/uninterpreted): Add test.
* lisp/ox-latex.el (org-latex--wrap-latex-math-block): Change
signature.
(org-latex-math-block-tree-filter,
org-latex-math-block-options-filter): New functions.
This patch fixes 68fda96c06, where
changes to inline math export were not propagated to document
properties.
* lisp/ox-latex.el (org-latex-pseudo-objects): New variable.
(org-latex--wrap-latex-math-block): New function.
(org-latex-table, org-latex--math-table): declare pseudo objects.
This patch provides support for constructs like:
\alpha_b
which should be translated as
$\alpha_{\text{b}}$
instead of
$\alpha$$_{\text{b}}$
* lisp/ox.el (org-export-data): Do not check for uninterpreted
elements or objects. These are removed from parse tree anyway.
(org-export--remove-uninterpreted): New function.
(org-export--interpret-p): Removed function.
(org-export-as): Handle uninterpreted elements and objects.
* lisp/org.el (org-set-font-lock-defaults): use a shy regex for
identifying macros to fontify
Before this change, the xxx in the following text would be erroneously
fontified with the macro face:
{{{macro1()}}} xxx {{{macro2()}}}
* lisp/ob-sh.el (org-babel-sh-command): Now set from
`shell-file-name'.
(org-babel-shell-names): List of specific shells known to Org mode
shell code blocks.
(org-babel-execute:shell): New generic shell execution function.
* lisp/org-element.el (org-element-at-point): Simplify opportunistic
shortcut by looking only for blank lines and headlines or
inlinetasks. Since regexp is simpler, we can afford to make more
searches.
* lisp/org-element.el (org-element--cache-stable-types): New variable.
(org-element--cache-sync): Do not store elements with missing parents
in cache.
The bug was introduced in 71c8474ae9.
Parsing doesn't always start from beginning of section, which means
that missing parents aren't always repaired while moving to the
current element. Therefore, we need to remove any element from cache
with an invalid parent property.
The bulk of the new code in org-babel-sha1-hash is borrowed from
org-babel-expand-src-block.
* lisp/ob-core.el (org-babel-sha1-hash): Expanded noweb references
when calculating hashes.
* org.el (org-self-insert-command)
(orgtbl-self-insert-command): Change the value of the
`delete-selection' property to allow other commands like
`electric-pair-will-use-region' to be run before deletion.
Thanks to Harald Hanche-Olsen for reporting this.
* org.el (org-babel-do-in-edit-buffer): Declare.
(org-babel-load-file, org-insert-comment)
(org-comment-or-uncomment-region): Don't require 'ob-core.
(org-mode-map): Remap `comment-dwim' to `org-comment-dwim'.
(org-comment-dwim): New command.
* ob-core.el (org-babel-do-in-edit-buffer): Make an autoload.
See http://lists.gnu.org/archive/html/emacs-devel/2013-12/msg00154.html
for a discussion about this bug.
* lisp/org.el (org-ctrl-c-ctrl-c): When point is on an unsupported
object, look for something to do at a higher level instead of
bailing out.
For example, C-c C-c should toggle checkbox in the following example
even though X point is technically on a subscript.
- [ ] a_Xb
* lisp/ox-publish.el (org-publish-after-publishing-hook): New variable.
(org-publish-file): Call hook with file name and output file name as
arguments. Small refactoring.
(org-publish-attachment): Return output file.
* lisp/ox-html.el (org-html-format-latex): Add an argument. Ensure
latex header is the same as specified in the original buffer when
exporting a LaTeX fragment or environment.
(org-html-latex-environment, org-html-latex-fragment): Apply signature
change.
* lisp/org-element.el (org-element-secondary-p): New function.
* lisp/ox.el (org-export-get-previous-element,
org-export-get-next-element): Use new function.
* testing/lisp/test-org-element.el (test-org-element/secondary-p): New
test.
* lisp/org.el (org-mode-restart): Check for derived-mode-p instead of
"org-mode" exactly. This covers a situation normal-mode already
instantiates a derived mode (e.g. via file local variables).
* lisp/org.el (org-mode-restart): Call normal-mode,
instead of org-mode. This will set the mode but it
will also set file local variables properly.
Reported by Tom Dye: C-c C-c on e.g an #+OPTIONS line
would lose file local variable settings.
The original fix (commit 5ea0228) was incorrect: if the
local variable was a mode setting, then we ended up in an
"infinite" recursion. Problem found, reported and a reproducer
provided by York Zhao.
* lisp/org-element.el (org-element-at-point): Rewrite function. Remove
optional argument.
Include an opportunistic search at the beginning of the function. It
drastically improves speed on large sections for a small overhead on
small ones.
* lisp/org-capture.el (org-capture-place-entry): Set :exact-position
before doing other stuff, to allow function with other target settings
TINYCHANGE
Assuming file "test.org" has a single headline "* Level 1" (ended with
newline character), when trying to use function type capture target in
an org-capture template, as shown in the example:
(setq org-capture-templates
`(("t"
"Test function type target"
entry
(function
(lambda ()
(set-buffer (org-capture-target-buffer "test.org"))
(goto-char (point-max))))
"* Level 2")))
When this template gets filled, file "test.org" becomes:
* Level 1
* Level 2
Instead of:
* Level 1
** Level 2
This is because when using function type target, `:exact-position' is
used to store buffer position returned by user's function (the lambda
function here), and function `org-capture-place-entry' will never
insert template as a child of current entry when `:exact-position' is
used.
The problem is addressed by not special casing for `:exact-position'
in function `org-capture-place-entry'.
York
* lisp/ox-publish.el (org-publish-cache-ctime-of-src): Return an error
when publishing a non-existent file.
Suggested-by: Arne Babenhauserheide <arne_bab@web.de>
* lisp/org.el (org-mode-flyspell-verify): Rewrite function using
Org parser. As a consequence, Org is more cautious about areas
where checks are allowed.
(org-fontify-meta-lines-and-blocks-1, org-activate-footnote-links): Be
subtler when removing flyspell overlays.
(org-unfontify-region): Remove reference to unused `org-no-flyspell'
property.
(org-fontify-drawers): New function.
(org-set-font-lock-defaults): Use new function to fontify drawers.
* contrib/lisp/org-wikinodes.el (org-wikinodes-activate-links): Remove
reference to unused `org-no-flyspell' property.
* lisp/ob-C.el (org-remove-indentation): Declare function to appease
compiler.
* lisp/ob-core.el (org-remove-indentation): Declare function to
appease compiler.
* lisp/ob-fortran.el (org-remove-indentation): Declare function to
appease compiler.
* lisp/ob-C.el (org-babel-C-execute): Remove common indentation when
trimming.
* lisp/ob-core.el (org-babel-read-result): Remove common indentation
when trimming.
(org-babel-update-block-body): Remove common indentation when
trimming.
* lisp/ob-fortran.el (org-babel-execute:fortran): Remove common
indentation when trimming.
* lisp/ob-tangle.el (org-babel-process-comment-text): Better default
to process tangled comments.
* lisp/ob-core.el (org-babel-execute-src-block): Set location info
parameter for inline src blocks.
(org-babel-get-src-block-info): Set location info parameter for
inline src blocks.
* lisp/org.el (org-entry-get): Widen buffer in order to retrieve
properties, as `org-entry-properties' and
`org-entry-get-with-inheritance' already do.
* lisp/org.el (org-entry-get): Widen buffer in order to retrieve
a property, as both `org-entry-properties' and
`org-entry-get-with-inheritance' already do.
* lisp/org.el (org-mode): Call `hack-local-variables'
at the end of `org-mode' to set file local variables.
Cribbed from `normal-mode'.
Reported by Tom Dye: C-c C-c on e.g an #+OPTIONS line
would lose file local variable settings.
* org-crypt.el (org-encrypt-string, org-encrypt-entry)
(org-decrypt-entry): Fix warning.
TINYCHANGE
epg-context is let-bounded in org-crypt and then epg local set it in
this context. It should just be set as local var instead of being let
bounded.
See http://debbugs.gnu.org/cgi/bugreport.cgi?bug=15081
* lisp/ob-lisp.el (org-babel-execute:lisp): The car/cadr are now taken
previously in the function and need not be taken within the call to
`org-babel-result-cond'.
* lisp/org.el (org-clock-string, org-closed-string)
(org-deadline-string, org-scheduled-string)
(org-archive-tag, org-comment-string, org-quote-string)
(org-effort-property, org-latex-regexps): Turn variables into
constants.
* testing/lisp/test-org-element.el: Update tests.
* testing/lisp/test-ox.el: Update tests.
Also collect all syntax related constants in the same part of the
file.
* lisp/org-element.el (org-element-timestamp-interpreter):
Ignore :raw-value and build timestamp from numeric properties
instead.
* testing/lisp/test-org-element.el: Update tests.
* testing/lisp/test-ox.el: Update tests.
This change allow to modify and update a timestamp easily without
requiring to reset :raw-value first, which was not intuitive.
* lisp/org-element.el (org-element--cache-sync): Properly remove from
cache last element in a plain list when blank lines at the end of
that list are modified.
* lisp/ob-C.el, lisp/ob-clojure.e: Require 'cl at compile-time.
* lisp/ob-tangle.el: Do not require 'cl at compile time.
* lisp/org-agenda.el: Declare function `org-columns-remove-overlays´.
* lisp/org.el: Declare functions `org-clocktable-shift´,
`org-clock-update-time-maybe´, `org-clock-remove-overlays´,
`org-babel-tangle-file´, `org-table-blank-field´,
`org-table-insert-row´, `org-add-archive-files´, `org-table-begin´,
`org-table-end´. Move defsubst `org-uniquify´ before its many uses.
* lisp/ox.el: Move defsubst `org-export-get-parent´ before its many
uses.
* org-macs.el (org-autoload): Delete.
* org-docview.el ("docview"): Fix declarations and require
doc-view directly.
* org-id.el (org-id-copy)
(org-id-get-with-outline-path-completion)
(org-id-get-with-outline-drilling, org-id-new):
* org-colview.el:
(org-colview-initial-truncate-line-value)
(org-columns-open-link, org-string-to-number):
* org-clock.el:
(org-clock-put-overlay, org-count-quarter, org-clock-loaded):
* org-archive.el (org-get-local-archive-location):
* org-agenda.el (org-agenda-todo-custom-ignore-p):
Autoload.
Those functions were autoloaded from within calls to `org-autoload'
in org.el, we now autoload them from where they live.
* ox.el (org-export-async-init-file): Use :set to set the
default value.
* ox-texinfo.el (org-texinfo-filename): Fix default value.
(org-texinfo-format-headline-function): Use 'ignore as the
default value.
(org-texinfo-format-drawer-function): Use a function as the
default value. Update docstring.
(org-texinfo-drawer): Always use
`org-texinfo-format-drawer-function' as it is now a function
by default.
(org-texinfo-headline): Compare
`org-texinfo-format-headline-function' against 'ignore.
(org-texinfo-inlinetask): Compare
`org-texinfo-format-inlinetask-function' against 'ignore.
* ox-odt.el (org-odt-format-drawer-function): Use a function
as the default value. Update docstring.
(org-odt-format-headline-function)
(org-odt-format-inlinetask-function): Fix default value.
(org-odt-with-latex): Use :set to set the default value.
(org-odt-drawer): Always use `org-odt-format-drawer-function'
as it is now a function by default.
(org-odt-format-headline--wrap): Compare
`org-odt-format-headline-function' against 'ignore.
* ox-latex.el (org-latex-format-drawer-function): Use a
function as the default value. Update docstring.
(org-latex-format-inlinetask-function): Fix default value.
(org-latex-drawer): Always use
`org-latex-format-drawer-function' as it is now a function by
default.
(org-latex-inlinetask): Compare
`org-latex-format-inlinetask-function' against 'ignore.
* ox-html.el (org-html-format-drawer-function): Use a
function as the default value. Update docstring.
(org-html-format-headline-function)
(org-html-format-inlinetask-function): Fix default value.
(org-html-with-latex): Use :set to set the default value.
(org-html--format-toc-headline)
(org-html-format-headline--wrap): Compare
`org-html-format-headline-function' against 'ignore.
(org-html-inlinetask): Compare
`org-html-format-inlinetask-function' against 'ignore.
* ox-ascii.el (org-ascii-format-drawer-function): Use a
function as the default value. Update docstring.
(org-ascii-drawer): Always use
`org-ascii-format-drawer-function' as it is now a function by
default.
(org-ascii-format-inlinetask-default): New function.
(org-ascii-format-inlinetask-function): Use
`org-ascii-format-inlinetask-default' as the default.
* org.el (org-mouse-1-follows-link): Use :set to set the
default value. Update custom type.
(org-log-note-headings): Fix order or list items in the custom
type.
(orgstruct-heading-prefix-regexp): Use an empty string as the
default value. Use 'regexp as the custom type.
(orgstruct-make-binding): Tiny docstring enhancement. Assume
`orgstruct-heading-prefix-regexp' is a string.
* org-agenda.el (org-agenda-search-view-max-outline-level):
Set default value to 0. Update docstring.
(org-agenda-deadline-leaders): Fix custom type.
(org-search-view): Assume
`org-agenda-search-view-max-outline-level' is a number.
* ob-ruby.el (org-babel-ruby-nil-to): Fix custom type.
* ob-python.el (org-babel-python-mode): Use :set to set the
default value.
(org-babel-python-None-to): Fix custom type.
* ob-plantuml.el (org-plantuml-jar-path): Fix default value.
(org-babel-execute:plantuml): Assume `org-plantuml-jar-path'
is a string.
* ob-latex.el (org-babel-latex-htlatex): Fix default value.
(org-babel-latex-htlatex-packages): Fix custom type.
(org-babel-execute:latex): Assume `org-babel-latex-htlatex' is
a string.
Thanks to Glenn Morris for reporting this.
This fixes a bug noticed by Rick Frankel in which two subsequent
#+call: lines will both update the same results. Before this commit
both of the following call lines would update the same result.
#+name: call-me
#+BEGIN_SRC emacs-lisp :var v="nil"
v
#+END_SRC
#+call: call-me("one")
#+call: call-me(v="two")
#+RESULTS:
: one
Now both lines are given their own result.
#+name: call-me
#+BEGIN_SRC emacs-lisp :var v="nil"
v
#+END_SRC
#+call: call-me("one")
#+RESULTS:
: one
#+call: call-me(v="two")
#+RESULTS:
: two
* lisp/ob-ref.el (org-babel-ref-parse): If
`org-babel-current-src-block-location' is a marker, it can be from
another buffer, use marker-position instead in this case.
Introduced with r114064 on Emacs trunk. Not sure if this is a bug in
Org or Emacs, but the patch restores the previous behaviour.
* org.el (org-get-indirect-buffer): New optional argument
`heading'. Use it to name the indirect buffer after the
heading the subtree, if any.
(org-tree-to-indirect-buffer): Use the new argument.
Thanks to Karl Voit for suggesting this.
* org.el (org-cancel-repeater): New function.
(org-todo): Use the new function to cancel a repeater when
called with a numeric arg of -1.
Thanks to Kenneth Jacker for requesting a similar feature.
* ox-html.el (org-html-format-drawer-function)
(org-html-format-headline-function)
(org-html-format-inlinetask-function)
(org-html-creator-string): Add version and package-version.
Thanks to Jambunathan for reporting problems in this area.
* lisp/org-element.el (org-element-interpret-data): Change signature.
One can now define pseudo elements and objects types.
(org-element--interpret-data-1): New function.
* testing/lisp/test-org-element.el: Add tests.
* testing/lisp/test-ox.el: Update tests.
A pseudo element or object is a new element or object type that is
created and treated locally within an export back-end. The back-end
provides a translator for it and it is ignored when interpreted back
into Org syntax.
* lisp/ox-texinfo.el (org-texinfo-supported-coding-systems): New
variable.
(org-texinfo-template): Find appropriate encoding among those
supported.
Reported-by: Suvayu Ali <fatkasuvayu+linux@gmail.com>
* lisp/ox.el (org-export-get-previous-element,
org-export-get-next-element): Fix return value for non plain text
objects in a secondary string.
* testing/lisp/test-ox.el: Add tests.
* lisp/org-element.el (org-element-comment-parser): Fix infloop when
a non-empty blank line follows a comment at the end of the buffer.
* testing/lisp/test-org-element.el: Add test.
* lisp/org-element.el (org-element-headline-interpreter): Take into
consideration `org-odd-levels-only' when building a headline.
* lisp/ox-org.el (org-org-headline): Correctly set transcoded headline
level during subtree export.
* org-capture.el (org-capture): Store :return-to-wconf
earlier.
(org-capture-place-template): Don't store :return-to-wconf
when called from a capture template using `function', rely on
the early :return-to-wconf value store from `org-capture'.
Thanks to Brett Viren for raising this issue.
* org-agenda.el (org-agenda-show-new-time): Ignore invisible
text when inserting the new time as a text property.
* org-compat.el (org-move-to-column): New argument
`ignore-invisible' to turn on `buffer-invisibility-spec'.
Thanks to Marcin Borkowski and Karl Voit for reporting this.
* org-agenda.el (org-agenda-filter-make-matcher): When
filtering tags and hitting space, filter out entries with
tags, only keep those without tags.
Thanks to Serguei Son for reporting this regression.
* ox-odt.el (org-odt-table-style-format): Use %s for inserting
the rel-width property as a string.
(org-odt-template): Fall back on a string for :rel-width.
Thanks to Derek Feichtinger for reporting this bug.
* org.el (org-directory, org-default-notes-file)
(org-reverse-note-order): Don't use the `org-remember'
customization group.
(org-require-autoloaded-modules): Don't require
`org-remember'.
* org-capture.el: Update commentary section to reflect the
fact that org-remember.el is not used anymore.
* org.el (org-open-file): Reveal context around point when
opening a link to an Org file with a line number.
Thanks to François Pinard for suggesting this.
* org-agenda.el (org-agenda-drag-line-forward)
(org-agenda-drag-line-backward): Fix bugs: don't drag lines
without text and don't drag lines before/after hidden lines.
Thanks to Thomas Morgan for reporting bugs in this area.
* lisp/org.el (org-insert-comment, org-comment-or-uncomment-region):
Use `org-element-at-point' instead of `org-in-src-block-p' to check
if we're within a source block.
* testing/lisp/test-org.el: Add test.
* lisp/org.el (org-set-tags): Width of strings presenting on a buffer
should be calculated with `string-width' instead of `length'.
This fixes unaligned tags for the languages with multi-width
characters.
TINYCHANGE
* org.el (org-sort-entries): Mention the
`org-after-sorting-entries-or-items-hook' hook in the
docstring.
Thanks to Andreas Röhler for suggesting this.
* lisp/org.el (org-insert-comment, org-comment-or-uncomment-region):
use the relevant language’s major mode comment function if called from
within a source block.
This patch makes it easier to (un)comment lines of babel source. Now
M-; in a soucre code block should Just Work.
The modification to ‘org-insert-comment’ also fixes a bug, whereby the
function would eat blank lines after it. The first block, where ! is
the point, would lead to the second instead of the third:
#+name: orig
#+begin_src org
xxxxxxx
!
yyyyyy
#+end_src
#+name: bad
#+begin_src org
xxxxxxx
#
yyyyyy
#+end_src
#+name: desired
#+begin_src org
xxxxxxx
#
yyyyyy
#+end_src
Also, the ‘org-comment-or-uncomment-region’ change results in an
undesirably move of the point after the comment is created. This is
because ‘comment-region’ wraps the call to ‘comment-region-function’
in a ‘save-excursion’. The org mode code deletes and reinserts the
whole babel block, which confuses save-excursion. Org carefully puts
the point back in the proper place, but comment-region’s
save-excursion then substitutes its own erroneous placement.
* org.el (org-babel-load-file): Set `exported-file' correctly,
in case the file as been tangled using a buffer-local value.
* ob-tangle.el (org-babel-tangle-file): Return the list of
tangled files.
Thanks to Sam Flint for reporting this.