* lisp/org.el (org-adaptive-fill-function): Look for a fill prefix at
the beginning of the paragraph and subsquently on its second line
instead of the current line.
* testing/lisp/test-org.el: Add test
* lisp/org.el (org-ctrl-c-ctrl-c): 'C-c C-c' on a link is usually a
no-op. If that link is in a headline, act as if the 'C-c C-c' was
called on the headline, not the link.
* lisp/org.el (org-bookmark-names-plist): New user option.
(org-set-regexps-and-options-for-tags): Use `org-bookmark-names-plist'.
(org-refile): Use `org-bookmark-names-plist'.
* lisp/org-capture.el (org-capture-bookmark-last-stored-position): Use
`org-bookmark-names-plist'.
Patch modified from a proposal by Oleh.
* lisp/org.el (org-insert-heading): Rewritten from scratch.
(org-N-empty-lines-before-current): New function
(org-insert-heading-respect-content): Set the correct argument to
force a heading even in lists.
* lisp/org.el (org-adaptive-fill-function, org-fill-paragraph): Add
support for `adaptive-fill-regexp' in paragraphs and comments.
* testing/lisp/test-org.el: Add tests.
* org.el (org-set-regexps-and-options-for-tags): Fix
concatenation of the tags list.
Thanks to Nick for reporting this bug and to Rainer for confirming the fix.
* lisp/org.el (org-fill-paragraph): Use empty commented lines as
separators when filling comments. This mimics default behaviour
from "newcomment.el", which is not used in Org.
* testing/lisp/test-org.el: Add tests.
* lisp/org.el (org-fill-paragraph): Do not mix consecutive comments
when filling any of them.
* testing/lisp/test-org.el: Add test.
Thanks to Samuel Wales for reporting it.
* org.el (org-refile): With a numeric prefix argument of `3',
emulate (setq org-refile-keep t) and copy the subtree to the
target location, don't delete it.
* org.texi (Refile and copy): Document `C-3 C-c C-w' and add
an index entry for `org-refile-keep'.
* org.el (org-set-regexps-and-options-for-tags): Fix the
setting of tag groups when relying on `org-tag-alist', not on
tags directly set in the buffer with the #+TAGS option.
Thanks to Maurice for reporting this.
* org.el (org-forward-element, org-backward-element): Throw a
message instead of an error when trying to move from a
position where there is no element.
* lisp/ox.el (org-export--registered-backends): Renamed from
`org-export-registered-backends'.
(org-export-invisible-backends): Removed variable.
(org-export-get-backend, org-export-get-all-transcoders
org-export-get-all-options, org-export-get-all-filters): New
functions. It replaces `org-export-backend-translate-table'.
(org-export-barf-if-invalid-backend, org-export-derived-backend-p,
org-export-define-backend, org-export-define-derived-backend):
Rewrite functions using new representation.
(org-export-backend-translate-table): Remove function.
(org-export-get-environment): Use new function.
(org-export--get-subtree-options, org-export--parse-option-keyword,
org-export--get-inbuffer-options, org-export--get-global-options,
org-export-to-buffer org-export-to-file, org-export-string-as
org-export-replace-region-by): Update docstring.
(org-export-data-with-translations): Remove function. Use
`org-export-data-with-backend' with a temporary back-end instead.
(org-export-data-with-backend, org-export-as): Reflect new definition
for back-ends.
(org-export--dispatch-action, org-export--dispatch-ui): Reflect new
definition for back-ends and variable removal. Refactoring.
(org-export-filter-apply-functions): Call functions with
current back-end's name, not full back-end.
* lisp/org.el (org-export-backends, org-create-formula--latex-header):
Use new structure and variables.
* testing/lisp/test-ox.el: Update tests.
This patch separates back-end definition from its registration. Thus,
it allows to use anonymous or unregistered back-ends.
* org.el (org-set-regexps-and-options-for-tags): Enhance
docstring.
(org-set-regexps-and-options): Make sure not to add
`org-tag-alist' twice when setting this variable through et
#+setupfile: directive.
Thanks to Anupam Sengupta for reporting this.
* org.el (org-set-regexps-and-options): Don't set font-lock
defaults here.
(org-mode): Set font-lock defaults here.
This fixes the bug reported here:
http://article.gmane.org/gmane.emacs.orgmode/73429
* org.el (org-mode-map): Remap `forward-paragraph' and
`backward-paragraph' to `org-forward-element' and
`org-backward-element'.
Thanks to Samuel for raising this.
* lisp/org.el (org-setup-filling): Set `paragraph-start' and
`paragraph-separate'.
(org-fill-paragraph-separate-nobreak-p): Remove function.
(org-mode): Do not set `paragraph-start'.
* lisp/org.el (org-re-property): Re-implement using full regex for
`org-re-property'. Add optional argument LITERAL to flag when
PROPERTY should to be regex-quoted. Move before definition of
`org-re-property'. (org-re-property-keyword): Remove, functionality
is subsumed by `org-re-property'. (org-property-re): Define using
`org-re-property'. (org-entry-get, org-property-values): Adjust
match number for PROPVAL. (org-entry-put): Use `org-re-property'
instead of `org-re-property-keyword'
This completes the refactoring started in 3c933adaf6.
* lisp/org.el (org-latex-default-packages-alist): Load "ulem" package
by default. Use "[normalem]" option to preserve \emph definition.
* lisp/ox-latex.el (org-latex-text-markup-alist): Use "\uline" and
"\sout" commands from "ulem" package.
* lisp/org.el (org-latex-default-packages-alist): Document need for
"soul" package.
* lisp/ox-latex.el (org-latex-text-markup-alist): Use \ul (from "soul"
package) instead of \underline for underline text.
* lisp/org.el (org-property-re): Improve definition so that this regex
can be used in all situations. Extend docstring with explanation of
matching groups.
(org-at-property-p): Implement using `org-element-at-point'.
(org-entry-properties, org-buffer-property-keys, org-indent-line):
Use `org-property-re' and adjust match group numbers accordingly.
* lisp/org-element.el (org-element-node-property-parser): Use
`org-property-re' and adjust match group numbers accordingly. Move
`looking-at' out of the let clause to not rely on the unspecified
evaluation order inside the let.
* org.el (org-set-regexps-and-options-for-tags): Return a list
with tag-related variables.
(org-set-regexps-and-options): Append tags from a setup file
to the local tags of the file.
(org-agenda-prepare-buffers): Set tags from a setup file by
calling `org-set-regexps-and-options' when necessary.
Thanks to Anupam Sengupta for reporting this.
* org.el (org-set-regexps-and-options): Fix
`org-deadline-time-hour-regexp' and
`org-scheduled-time-hour-regexp'.
Thanks to Nick Daly for reporting this.
* org.el (org-refresh-properties): Put the text property on
the whole subtree, not just on the headline.
Thanks to Ivan Kanis for reporting this and to Miguel Ruiz for confirming
the bug.
* lisp/org.el (org-table-clean-did-remove-column),
lisp/org-table.el (org-table-clean-did-remove-column): Move defvar,
this dynamic variable is only used in org-table.
* lisp/org-table.el (org-table-colgroup-info): Remove unused defvar
for `org-table-colgroup-info'.
(org-table-clean-before-export): Let-bind regular expression strings
and remove unused matching group. Use
`org-table-clean-did-remove-column' in cond statement rather than
branching via if to avoid code duplication. Remove the code
associated with the removed `org-table-colgroup-info'.
(orgtbl-export): Remove unused internal function.
orgstruct++-mode when the context around point is an item-body.
* org.el (orgstruct-make-binding): Execute org-insert-heading
and org-insert-heading-respect-content when the context around
point is an item-body.
Escape double quotes in URL passed to browse-url
* lisp/org.el (org-link-escape-chars-browser): Add char double quote.
* lisp/org.el (org-open-at-point): Make use of the constant
`org-link-escape-chars-browser'.
* testing/lisp/test-org.el
(test-org/org-link-unescape-ascii-extended-char): Fill paragraph.
(test-org/org-link-escape-url-with-escaped-char): Fill paragraph and
typo.
(test-org/org-link-escape-chars-browser): New test.
This is to make work to open the Org link
[[http://some.host.com/search?q="Org mode"]] in a browser.
From 28726bcc7b7c440d70e2d95ea5a61d0cd5f084ea Mon Sep 17 00:00:00 2001
From: Michael Brand <michael.ch.brand@gmail.com>
Date: Sun, 5 May 2013 17:02:18 +0200
Subject: [PATCH] Escape double quotes in URL passed to browse-url
* lisp/org.el (org-link-escape-chars-browser): Add char double quote.
* lisp/org.el (org-open-at-point): Make use of the constant
`org-link-escape-chars-browser'.
* testing/lisp/test-org.el
(test-org/org-link-unescape-ascii-extended-char): Fill paragraph.
(test-org/org-link-escape-url-with-escaped-char): Fill paragraph and
typo.
(test-org/org-link-escape-chars-browser): New test.
This is to make work to open the Org link
[[http://some.host.com/search?q="Org mode"]] in a browser.
* lisp/org.el (org-preview-latex-fragment)
(org-display-inline-images): Detect whether a graphic display is
available before inlining images to prevent an error.
Thanks to Rick Frankel for the report and the solution.
> `org-startup-with-inline-images' is a customizable variable. The
> problem is that if an org file is visited in a non-graphics buffer (or
> batch), `org-display-inline-images' is called an throws an error
> ("Non-X frame used").
>
> This problem also occurs when e.g., `org-babel-after-execute-hook' is
> set to 'org-display-inline-images (which can be mitigated by not
> setting the hook in a non-x frame).
>
> Since the startup variable is a customization, and causes problems if
> not set programatically, IMHO, the best solution would be to wrap the
> `org-display-inline-images' function in a test so that is is a no-op
> on non graphic displays:
* lisp/org.el (org-fill-paragraph): Move to table beginning before
aligning the table when M-q is called from an affiliated keyword.
* testing/lisp/test-org.el: Add test.
* org.el (org-insert-heading): Fix case when there the first
heading starts at the beginning of the buffer.
In this case, `org-backward-heading-same-level' will throw an error in
the let form, and the error would fall back on "*" instead of falling
back on the correct number of stars to add.
Thanks to Jisang Yoo and John Hendy who reported this bug.
* org.el (org-agenda-prepare-buffers): Add tags defined in
org-tag-persistent-alist to org-tag-alist-for-agenda.
This makes tag hotkeys defined in `org-tag-persistent-alist' appear when
the user invokes `org-agenda-filter-by-tag-refine'.
TINYCHANGE
* org.el (org-read-date-minibuffer-local-map): Check if we are
at the beginning of the prompt, not if we are after a whitespace.
Bind C-. to `calendar-goto-today'.
* org.el (org-read-date-minibuffer-local-map): Call
`calendar-goto-today' only if there is a space before point in
the minibuffer prompt.
Thanks to Michael Brand and others who asked for this regression to be fixed.
* org.el (org-insert-heading): Reveal context when called
interactively. Fix bug about wrong conversion of lines with
:END: or #+end_ into headlines.
(org-in-drawer-p): New function.
(org-meta-return): Use `org-catch-invisible-edits' and the
`org-in-drawer-p' to check whether we are within a drawer.
Thanks to Muchenxuan Tong and John Hendy who reported these errors.
* lisp/org.el (org-insert-heading): Check for checkbox at the
beginning of the item, not just at the beginning of the line.
Without this fix, M-RET in numbered lists would create a checkboxed
item because it was using match data from a previous match. Now we
make sure we go back to the beginning of the item, so that the match
really tells us if there was a checkbox there.
* org.el (org-clone-subtree-with-time-shift): Unconditionally
ask for a time shift if there is a time-stamp. Don't ask for
a time shift when called with a universal prefix argument.
Thanks to Ingmar Meissner for raising this issue again.
* org.el (org-store-link): Don't add a search string when
storing a link from a radio target.
(org-open-at-point): Jump to the radio link (<<<radio>>>), not
to the simple target (<<target>>).
* lisp/ox-latex.el (org-latex--script-size): Use \text command for
subscript and superscript. This is far superior to \mathrm, but it
requires "amstext" package. In particular, accented characters are
now allowed within sub/superscript.
* lisp/org.el (org-latex-default-packages-alist): Add "amstext"
package.
* org.el (org-shifttab): Show the correct number of empty
headlines when called with a numeric prefix argument. Enhance
docstring.
Thanks to Michael Crouch for reporting this bug and providing the fix.
* org.el (org-adaptive-fill-function, org-fill-paragraph):
Throw a useful error message when parse an element fails in
the current buffer.
This can happen for example in a `message-mode' buffer when using
orgstruct-mode. If you insert a line like:
SCHEDULED: <2013-04-13 Sat> is blablabla
then org-element-at-point will fail and the user will get an error
he cannot understand.
* lisp/org.el (org-read-date-get-relative): Handle positive and
negative weekday specifications so that they don't return today.
If today is Friday, "fri" should mean next Friday. This changes
the previous behavior, which required you to specify "+2fri" in
order to mean next Friday if today was Friday. If you want to
schedule something for today, you can use ".".
* doc/org.texi (The date/time prompt): Update the documentation
to reflect the new way `org-read-date-get-relative' handles
weekdays.
TINYCHANGE
* org.el (org-make-tags-matcher, org-change-tag-in-region):
Add buffer's tags to the tags completion table.
(org-tags-expand): Prevent circular replacement of group tags.
Tiny docstring formatting.
(org-uniquify): Make a defsubst. Use `delete-dups' instead of
`add-to-list'.
Thanks to Christian Moe for reporting the bug about group tags.
* org.el (org-forward-heading-same-level): Fix bug when
forwarding to a hidden subtree of the same level.
Thanks to Bernt Hansen for reporting this bug.
* org.el (org-emphasis-regexp-components): Make a defvar.
This used to be a defcustom (Org <8.0) but allowing the users to
set this option proved cumbersome. See this message/thread:
http://article.gmane.org/gmane.emacs.orgmode/68681
* org.el (org-insert-heading-respect-content): Fix docstring.
(org-insert-heading): When in a non-empty non-headline line,
convert the current line into a headline.
Thanks to Bernt Hansen for reporting this issue.
* org.el (org-minutes-to-clocksum-string): Round fractions of
minutes.
When adding efforts values in the column view, "0:20" will first be
converted as 0.333333333 hour. When converting the final sum, we
now round the final sum of minutes (e.g. 99.999999999) to get the
correct hour displa (i.e. 1:40 instead of 1:39).
* org.el (org-ctrl-o): New command to insert a new row in
tables (like `M-S-<down>' does) and open a line elsewhere.
(org-mode-map): Bind the new command to `C-o'.
* org.el (org-ctrl-c-ctrl-c): Fix bug wrt updating checkboxes:
the list beginning should be stored using a marker so that
updating [%0] to [%50] will not throw an error.
* org-table.el (org-calc-current-TBLFM): New function to
re-calculate the table by applying the #+TBLFM in the line
where the point is.
* org.el (org-ctrl-c-ctrl-c): Call `org-calc-current-TBLFM' when
point is in the #+TBLFM line.
* testing/lisp/test-org-table.el: Add test.
* org.el (org-babel-load-file): Move `org-babel-load-file'
from ob-tangle.el to here so that it is correctly autoloaded
by Emacs before Org is required.
Thanks to Eric Schulte for feedback about this.
* lisp/org.el (org-store-link, org-link-search, org-options-keywords):
Remove reference to TARGET keyword.
* lisp/ox.el (org-export-resolve-fuzzy-link, org-export-get-ordinal):
Do not use TARGET as a destination for links anymore.
* testing/lisp/test-ox.el: Update tests.
* testing/lisp/test-org.el: Update tests.
Its specifications were not useful enough to keep maintaining this
feature.
* lisp/ox-org.el (org): Add a menu entry for the back-end.
(org-org-export-as-org, org-org-export-to-org): New functions.
* lisp/org.el (org-export-backends): Accept `org' as a loadable
back-end.
* org.el (org-cycle-internal-local): Fix invalid search bound
when `org-cycle-include-plain-lists' is set to 'integrate.
Thanks to James Harkins for reporting this.
* org.el (org-agenda-prepare-buffers): Fix bugs: don't
let-bind `org-tag-alist' to nil and don't append duplicate
tags to `org-tag-alist-for-agenda'.
Thanks to Toby Cubitt for reporting this.
* org.el (org-store-link): Storing multiple links in the
active region now requires a triple prefix argument.
Thanks to Matt Lundin for reporting bugs in this area.
* org.el (org-mode-flyspell-verify): Require 'org-element so
that `org-element-affiliated-keywords' is defined.
Thanks to Matt Lundin for reporting this.
* org.el (org-toggle-tags-groups): Correctly highlight group
tags.
(org-tags-expand): Expand tags as words, with characters ?@
and ?_ being considered words constituents.
* org.el (org-set-regexps-and-options): Don't read setup files
from read-only buffers.
(org-file-contents): When no-error is non-nil, throw a less
intrusive message.
This commit prevents Gnus to try reading arbitrary files on your machine
when opening a message with #+SETUPFILE keyword.
In general, it prevents reading a setup file from any read-only buffer.
Thanks to Eric Abrahamsen and Andreas Leha for reporting this.
* org-agenda.el (org-tags-view): Set the matcher after
preparing the agenda, as `org-tag-groups-alist-for-agenda'
might be needed.
(org-agenda-filter-make-matcher): New parameter `filter' and
`type'. Handle group tags.
(org-agenda-filter-expand-tags): New function.
(org-agenda-filter-apply): Handle group tags.
* org.el (org-blank-before-new-entry): Tiny docstring fix.
(org-tag-alist-for-agenda): Add docstring.
(org-tag-groups-alist-for-agenda): New global variable.
(org-tag-groups-alist): New buffer-local variable.
(org-tag-alist, org-tag-persistent-alist): Handle :grouptags.
(org-group-tags): New option.
(org-toggle-group-tags): New command.
(org-mode-map): Bind `org-toggle-group-tags' to `C-c C-x q'.
(org-set-regexps-and-options-for-tags): New function, factored
out from `org-set-regexps-and-options'.
(org-set-regexps-and-options): Don't handle tags, they are now
handled separately by `org-set-regexps-and-options-for-tags'.
(org-assign-fast-keys): Handle :grouptags.
(org-mode): Use `org-set-regexps-and-options-for-tags' on top
of `org-set-regexps-and-options'.
(org-fontify-meta-lines-and-blocks-1): Fontify group tags.
(org-make-tags-matcher): Expand group tags in the matcher.
(org-tags-expand): New function.
(org-tags-completion-function): Tiny code clean up.
(org-set-current-tags-overlay): Add a docstring.
(org-fast-tag-selection): Highlight group tags.
(org-agenda-prepare-buffers): Set `org-tag-alist-for-agenda'
and `org-tag-groups-alist-for-agenda'. Don't uniquify
`org-tag-alist-for-agenda' as we may need the grouping
information for filtering in the agenda buffer.
(org-uniquify-alist): New function.
* org-pcomplete.el (pcomplete/org-mode/file-option/tags):
Handle :grouptags.
* org-faces.el (mode-line): New face for group tags.
* org.el (org-entry-add-to-multivalued-property): Add the new
value by appending it at the end of the line.
Thanks to Thorsten Jolitz for a preliminary patch for this.
* org.el (org-set-regexps-and-options): Use
`org-table-set-constants'.
* org-table.el (org-table-set-constants): New function.
(orgtbl-ctrl-c-ctrl-c): Use it.
Thanks to Oliver Večerník for reporting problems here.
* org.el (org-store-link): When there is an active region,
store each line as a separate link.
(org-insert-all-links): Use a default description when links
do not have one already.
* org-agenda.el (org-agenda-redo): Fix typo in code.
* org.el (org-clone-subtree-with-time-shift): Only prompt for
a time shift when the entry at point has a time stamp and when
the command is called with a universal prefix argument.
* org.el (org-deadline-time-hour-regexp)
(org-scheduled-time-hour-regexp): New buffer local variables.
(org-set-regexps-and-options): Set the new variables.
* org-agenda.el (org-agenda-custom-commands-local-options):
Add :deadline* and :scheduled* to the list of possible agenda
entry types.
(org-agenda): Implement a new agenda type agenda* with :scheduled*
and :deadline* replacing :scheduled and :deadline respectively in
agenda entry types. In such agenda, only scheduled and deadline
items with a time specification [h]h:mm will be considered.
(org-agenda-entry-types): Document the new agenda entry types
:scheduled* and :deadline*.
(org-agenda-list): New parameter `with-hour'. Use :scheduled* and
:deadline*.
(org-agenda-get-day-entries): Handle :scheduled* and :deadline*.
(org-agenda-get-deadlines, org-agenda-get-scheduled): New
parameter `with-hour'. Use `org-deadline-time-hour-regexp' or
`org-scheduled-time-hour-regexp' as the search string if needed.
(org-agenda-to-appt): Use :scheduled* and :deadline* by default,
as other scheduled and deadline items don't have a time spec and
cannot be turned into appointments. Trim bracket links and use
only the description as the appointment text.
(org-agenda-get-restriction-and-command): Add
default description for the agenda* view.
(org-agenda-run-series): Handle agenda* views.
* org.el (org-insert-heading): DTRT when in a narrowed region.
* org-compat.el (org-buffer-narrowed-p): New compatibility
function.
Thanks to Samuel Wales for reporting this problem.
* org.el (orgstruct-heading-prefix-regexp): Change default
value to nil.
(orgstruct-error): Use user-error if available.
(orgstruct-setup): Disable bindings of {pro,de}motion commands
if orgstruct-heading-prefix-regexp is non-nil. Always use
org-outline-level.
(orgstruct-make-binding): New argument
DISABLE-WHEN-HEADING-PREFIX.
* org.el (org-toggle-item): Convert all normal lines as items when
there is a region, and only convert the first line when called
with a universal prefix argument. This is consistent with the
behavior of `org-toggle-heading'.
(org-toggle-heading): When the region contains only normal lines,
a universal prefix arg will only convert the first line. This is
more consistent with `org-toggle-item'.
* lisp/ox-latex.el (latex): Introduce new buffer keyword.
(org-latex-template): Use new keyword.
* lisp/ox-beamer.el (org-beamer-template): Use new keyword.
* lisp/org.el (org-create-formula--latex-header): Use new keyword.
* contrib/lisp/ox-koma-letter.el (org-koma-letter-template): Use new
keyword.
Previewing of LaTeX snippets takes account of LATEX_HEADER keywords.
LATEX_HEADER_EXTRA keyword allows to specify some header lines that
will not be used for building snippets.
* org.el (org-time-clocksum-use-effort-durations): Don't set to t
by default as it will change many clocktables out there. Let the
user decides whether she wants to turn this on.
* org.el (org-agenda-inhibit-startup): Revert to nil as the default.
* org-agenda.el (org-agenda-dim-blocked-tasks): Revert to t as the
default.
The reason for this reversion is that that users expect the agenda to
DTRT by default, and that it's better not to change the previous default
in general. Also, users who need to speed up their agenda are probably
long time users with big and numerous agenda files, and it's easier for
them to find these variables than it is for newbies to find out why the
agenda does not DTRT.
If users want to speed up their agenda, they can now read advice here:
http://orgmode.org/worg/agenda-optimization.html