Turns out the native TAB/Backtab/RET functionality in org already does
what I've replaced them with (somewhat).
Also, I discovered that the canonical way to modify TAB behavior was
through org-tab-first-hook. So, instead of replacing native
functionality, I've rewritten these keybinds to leverage them.
+ Fix frame-spawning when calling bin/org-capture
+ Integrate counsel-org-capture into bin/org-capture workflow
+ Ensure frame is closed if counsel-org-capture is cancelled
+ Ensure org-capture buffer closes the associated frame
+ Add transient frame property for org-capture frames
If you are using a tiling window manager, you'll need to add a rule for
a window named "org-capture" in order to make a floating window.
The ob-C.el library takes care of C, C++ and D. This modifies the babel
lazy-loader to take this into account. Name => library mappings are
defined in +org-babel-mode-alist.
Removes +org-babel-languages and no longer eagerly loads babel
libraries. If an ob-*.el exists for the language, it will be loaded once
you execute its src block.
Warning: this may interfere with tangling. An unloaded library can't
register a language extension in org-babel-tangle-lang-exts (if any).
This means babel won't be able to figure out the correct file extension
for certain src blocks.
Either load the package explicitly or provide a filename + extension for
the TARGET-FILE argument:
(require 'ob-rust)
(org-babel-tangle-file "notes.org")
;; or
(org-babel-tangle-file "notes.org" "notes.rs")
Originally, I built the load-path with site-lisp paths first, then
packages. There was a modest ~10% startup boost doing this, because
there were considerably more site packages loaded at startup than
plugins.
However, this meant built-in packages would get precedence over plugins,
which is undesirable. In org's case, I simply modified the load-path
in lang/org/init.el. However, this issue has cropped up again in #340.
Evidently, that 10% boost may not be worth the risk it imposes, so I've
rearranged the load-path with packages first.
lang/org's initialization process is now split up into hooks on
org-load-hook. This approach is cleaner and easier to customize. I also
removed the escape binding in org-agenda-mode-map, as the popup system
makes it redundant.
Previously, Doom would forget lang/org's modification of the load-path
if you call doom//reload-load-path (which is called when you do package
management with an open Emacs session).
No more!
During runtime, the new version of org (installed via ELPA) is added to
load-path, but this doesn't happen during compile-time. Wrap it in
eval-and-compile and that changes.
Now that the org ELPA archive has https support, we can add it to
package-archives. This fixes some 'org is unavailable' errors when
installing org packages that have declared earlier versions of org as
a dependency.
This also makes installing a newer version of org-mode much simpler.
Woo!