doom-etc-dir will be renamed to doom-data-dir, to better reflect its
purpose, and align it with XDG_DATA_HOME (where it will be moved to in
v3, where Doom will begin to obey XDG directory conventions more
closely).
- Deprecates the doom-private-dir variable in favor of doom-user-dir.
- Renames the pseudo category for the user's module: :private -> :user.
- Renames the doom-private-error error type to doom-user-error.
Emacs uses the term "user" to refer to the "things" in user space (e.g.
user-init-file, user-emacs-directory, user-mail-address, xdg-user-dirs,
package-user-dir, etc), and I'd like to be consistent with that. It also
has the nice side-effect of being slightly shorter. I also hope
'doom-user-error' will be less obtuse to beginners than
'doom-private-error'.
featurep! will be renamed modulep! in the future, so it's been
deprecated. They have identical interfaces, and can be replaced without
issue.
featurep! was never quite the right name for this macro. It implied that
it had some connection to featurep, which it doesn't (only that it was
similar in purpose; still, Doom modules are not features). To undo such
implications and be consistent with its namespace (and since we're
heading into a storm of breaking changes with the v3 release anyway),
now was the best opportunity to begin the transition.
`org-persist-write:index' does not recursively create
`org-persist-directory', causing `make-directory` to throw a
file-missing if a parent directory is missing.
Fix: #6635
Ref: bzg/org-mode@edd7f2962f
I've omitted docs/*.org from this merge, as there is still work left to
do there, but I am pushing the module docs early so folks can benefit
from the new docs sooner.
A more elegant solution will have to wait until the CLI rewrite (where
modules can supply patches for its packages, then I could hoist
org-protocol-check-filename-for-protocol into the autoloads file using
autoload cookie magic).
Fix: #6481Fix: #5997
First, removal of the old org-protocol advice needed to be updated,
because org-protocol-detect-protocol-server was renamed to
org--protocol-detect-protocol-server upstream.
Second, I only noticed now that our lazy loader for org-protocol wasn't
active until Org was loaded, which was far too late, and meant
org-protocol wasn't working out of the box. This fixes that.
Added new keybinds for easy removal of RESULTS blocks in org-mode.
SPC m k - delete RESULTS block under cursor
SPC m K - delete all RESULTS blocks under cursor
SPC u SPC m K - delete all RESULTS blocks in buffer
Doom sets jump points before following most org links. This allows you
to jump back to where you were afterwards using
C-o (better-jumper-jump-backward) or forward with
C-i (better-jumper-jump-forward). It does this by setting a jump point
on the org-open-at-point-functions hook.
However, not all org links' :follow handlers trigger this hook (like id:
or roam: links), and you can get around it by triggering link opener
handlers directly (with M-x org-goto). Most of these link openers use
org-mark-ring-push to record jump points in org's own jumplist, so
advising it to call better-jumper-set-jump should address more of these
fringe cases.
Fix: #6098
org-babel-result-end can return the wrong position if cursor is in a src
block (which is where it will be when org-babel-after-execute-hook
triggers).
Amend: 451be94fb8
A regression caused by 6934014, due to
org-babel-where-is-src-block-result returning a position after
org-babel-result-end.
Fix: #6046
Amend: 69340149f9
Also limits the scope of org-display-inline-images to the current src
block. org-display-inline-images was previously used on the entire
subtree, which was slower than it needed to be (especially while
exporting/tangling org).
- Defer citar-org, since citar autoloads it.
- Add introducing PR to #+SINCE and use new calver scheme.
- Move <localleader> @ keybind to :lang org
Ref: #5810
Fewer links means less confusion.
- Merge doom-issue and doom-commit links into doom-ref (for auto-linking
Issue/PR/commit references).
- Merge doom-module-source and doom-docs-source links into doom-source.
- Rename doom-report-issue to doom-report.
- Use '!' as the icon for module issues link.
- Remove doom-repo (replaced with "doom:*" in :lang org module).
- Add doomdir and emacsdir links to :lang org module.
These two modes exist to provide a nicer reading experience while
viewing Doom's org documentation from within Emacs; they hide
meta-lines, comments, markup, and more.
They also enable our docs to use IDs for links and keep our ID db
separate from any user ID dbs.
From now on Doom will enforce two conventions for its org files for
consistency's sake:
- Lower-case meta-lines in org files, like #+begin_src, #+name, or
#+end_quote (only exception are the top-level ones, like #+TITLE and
#+STARTUP).
- Use 'emacs-lisp' as the lang specifier for elisp blocks rather than
'elisp'. Emacs doesn't natively recognize the latter.
This will be reflected in our rewritten docs/*.org and module
README.org's.
Headings beyond 6 are excessive in almost any org document, and only
muddy (and slow down) imenu search results, so I'm reducing it to the
number of available HTML headings.
Here's the problem:
1. Org's link system unconditionally calls *all* link :store handlers
when you call `org-store-link`, and all :export handlers when you
export an Org file.
2. The org-pdftools package works by defining a custom pdf: link with
custom :store and :export handlers.
3. Those handlers do not perform error handling before using pdftool's
API.
4. pdf-tools fails loudly and ungracefully with a
"pdf-info-epdfinfo-program is not executable" error when its API is
used and epdfinfo isn't installed.
TL;DR org-pdftools effectively breaks storing/exporting in org-mode
until pdf-tools-install is executed to install epdfinfo. This is awful
UX, so let's suppress the error.
- #+STARTUP: inlinegifs = play inline gif previews when point is on
them.
- #+STARTUP: playgifs = play all gifs in the visible buffer (super,
super slow; use at your own risk).
- Add +org-startup-with-animated-gifs for changing the global
default (nil). Can be set to 'at-point (inlinegifs) or t (playgifs)
#+STARTUP: showNlevels
This tells org to expand N levels at startup, but it only partially
unfolds headings, so show2levels gets you:
* A [...]
** X [...]
** Y [...]
** Z [...]
Instead of (what I think is expected):
* A
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua.
** X [...]
** Y [...]
** Z [...]
Perhaps this should be upstreamed?
ob-comint (included with org) added native :async support. It only works
for python currently, but unlike ob-async supports :session for :async
python blocks. In fact, it *requires* :session, so we still fall back to
ob-async in its absence, failing that, it ultimately falls back to
synchronous execution.