Alexander-Miller/company-shell@HEAD -> Alexander-Miller/company-shell@52f3bf2 FStarLang/fstar-mode.el@HEAD -> FStarLang/fstar-mode.el@aaaf256 JuliaEditorSupport/julia-emacs@5238f9a -> JuliaEditorSupport/julia-emacs@1c122f1 Kungsgeten/org-brain@6b7fced -> Kungsgeten/org-brain@cae8e22 OVYA/php-cs-fixer@6540006 -> OVYA/php-cs-fixer@95eace9 ProofGeneral/PG@2a17093 -> ProofGeneral/PG@9196749 aaronjensen/eslintd-fix@98c669e -> aaronjensen/eslintd-fix@0c43114 abicky/nodejs-repl.el@8b90948 -> abicky/nodejs-repl.el@6fad7d7 abo-abo/org-download@3c48102 -> abo-abo/org-download@b96fd7b agda/agda@74d9fd5 -> agda/agda@ff9173e alf/ob-restclient.el@c5c22e6 -> alf/ob-restclient.el@f7449b2 ananthakumaran/tide@1878a09 -> ananthakumaran/tide@3b45610 bastibe/org-journal@9d40f62 -> bastibe/org-journal@664c08e brotzeit/rustic@373f5a1 -> brotzeit/rustic@61032ea clojure-emacs/cider@7437c67 -> clojure-emacs/cider@52dcc60 clojure-emacs/clj-refactor.el@e24ba62 -> clojure-emacs/clj-refactor.el@92d3723 cpitclaudel/company-coq@6e8bc2e -> cpitclaudel/company-coq@f9dba9d cython/cython@f6bf6aa -> cython/cython@48dc1f0 defunkt/coffee-mode@86ab8aa -> defunkt/coffee-mode@35a41c7 dgutov/robe@8190cb7 -> dgutov/robe@68503b3 diml/utop@7c99d8c -> diml/utop@30c77ce dzop/emacs-jupyter@d4b06c5 -> dzop/emacs-jupyter@de7af25 emacs-ess/ESS@a2be8cb -> emacs-ess/ESS@625041a emacs-lsp/lsp-haskell@6d481f9 -> emacs-lsp/lsp-haskell@582fa27 emacs-lsp/lsp-java@dbeeee9 -> emacs-lsp/lsp-java@6efb741 emacs-php/php-mode@cade4ce -> emacs-php/php-mode@b5d9988 emacs-php/phpactor.el@5ccf65d -> emacs-php/phpactor.el@31fe2ea emacs-php/phpactor.el@5ccf65d) -> emacs-php/phpactor.el@31fe2ea) emacs-straight/csv-mode@fbf942e -> emacs-straight/csv-mode@6353374 emacs-straight/org-mode@0a8faec -> emacs-straight/org-mode@ba68555 emacs-typescript/typescript.el@a0f2c3e -> emacs-typescript/typescript.el@102587e emacsorphanage/gnuplot@a406143 -> emacsorphanage/gnuplot@f0001c3 erlang/otp@c15eb5f -> erlang/otp@3065fbf factor/factor@a62ea78 -> factor/factor@497d649 felipeochoa/rjsx-mode@014c760 -> felipeochoa/rjsx-mode@0061587 fxbois/web-mode@d1b6660 -> fxbois/web-mode@b0bb4ab greghendershott/racket-mode@5f396fa -> greghendershott/racket-mode@bd4c8cf haskell/haskell-mode@4a87d72 -> haskell/haskell-mode@7032966 jaor/geiser@645e477 -> jaor/geiser@83ad875 joaotavora/sly@cfecd21 -> joaotavora/sly@1382bda jorgenschaefer/emacs-buttercup@178c795 -> jorgenschaefer/emacs-buttercup@b360e35 leanprover/lean-mode@f26e40d -> leanprover/lean-mode@65b55b1 leanprover/lean-mode@f26e40d -> leanprover/lean-mode@65b55b1 ledger/ledger-mode@a514953 -> ledger/ledger-mode@7d78645 mgyucht/jsonnet-mode@2b90b4e -> mgyucht/jsonnet-mode@d8b486c necaris/conda.el@814439d -> necaris/conda.el@335474e nonsequitur/inf-ruby@e4ae089 -> nonsequitur/inf-ruby@41e5ed3 ocaml-ppx/ocamlformat@dba4487 -> ocaml-ppx/ocamlformat@5282e04 ocaml/dune@f3df7ab -> ocaml/dune@1944d0f ocaml/merlin@f6954e9 -> ocaml/merlin@37e38e4 polymode/poly-R@0443c89 -> polymode/poly-R@51ffeb6 polymode/polymode@3eab3c9 -> polymode/polymode@44265e3 purcell/flycheck-ledger@2065bea -> purcell/flycheck-ledger@628e25b purescript-emacs/psc-ide-emacs@2a93944 -> purescript-emacs/psc-ide-emacs@7fc2b84 s-kostyaev/ivy-erlang-complete@7d60ed1 -> s-kostyaev/ivy-erlang-complete@c443dba seagle0128/grip-mode@1a61bb7 -> seagle0128/grip-mode@9615c47 skeeto/skewer-mode@123215d -> skeeto/skewer-mode@e5bed35 tpapp/julia-repl@b11a572 -> tpapp/julia-repl@5fa04de wwwjfy/emacs-fish@688c82d -> wwwjfy/emacs-fish@db257db xuchunyang/elisp-demos@bec206b -> xuchunyang/elisp-demos@0d74766 yjwen/org-reveal@0d947cb -> yjwen/org-reveal@ea8b502
lang/org
Description
This module adds org-mode support to Doom Emacs, along with a number of adjustments, extensions and reasonable defaults to make it more performant and intuitive out of the box:
- A custom, centralized attachment system that stores files in one place, rather
than in the same directory as the input file(s) (only applies to attachments
from files in/under
org-directory
). - Executable code blocks with support for a variety of languages and tools (depending on what :lang modules are enabled).
- Supports an external org-capture workflow through the
bin/org-capture
shell script and+org-capture/open-frame
. - A configuration for using org-mode for slide-show presentations or exporting org files to reveal.js slideshows.
- Drag-and-drop support for images (with inline preview) and media files (drops
a file icon and a short link) (requires
+dragndrop
flag). - Integration with pandoc, ipython, jupyter, reveal.js, beamer, and others (requires flags).
- Export-to-clipboard functionality, for copying text into formatted html,
markdown or rich text to the clipboard (see
+org/export-to-clipboard
and+org/export-to-clipboard-as-rich-text
).
Org is a system for writing plain text notes with syntax highlighting, code execution, task scheduling, agenda management, and many more. The whole idea is that you can write notes and mix them with references to things like articles, images, and example code combined with the output of that code after it is executed.
https://www.mfoot.com/blog/2015/11/22/literate-emacs-configuration-with-org-mode/
Module Flags
+brain
Enables org-brain integration.+dragndrop
Enables drag-and-drop support for images and files; inserts inline previews for images and an icon+link for other media types.+gnuplot
Installs gnuplot & gnuplot-mode, which enables rendering images from gnuplot src blocks or plotting tables withorg-plot/gnuplot
(bound toSPC m b p
, by default).+hugo
Enables integration with hugo to export from Emacs well-formed (blackfriday) markdown.+ipython
(DEPRECATED) Enables ipython integration for babel.+journal
Enables org-journal integration.+jupyter
Enables Jupyter integration for babel.+pandoc
Enables pandoc integration into the Org exporter.+pomodoro
Enables a pomodoro timer for clocking time on tasks.+present
Enables integration with reveal.js, beamer and org-tree-slide, so Emacs can be used for presentations.
Plugins
- htmlize
- ob-async
- org-bookmark-heading
- org-bullets
- org-cliplink
- orgit
- org-plus-contrib
- org-yt
- ox-clip
- toc-org
-
:lang crystal
-
:lang go
-
:lang nim
-
:lang racket
-
:lang rest
-
:lang rust
-
:editor evil
-
:tools pdf
-
+dragndrop
-
+gnuplot
-
+ipython
-
+jupyter
-
+pandoc
-
+pomodoro
-
+present
-
+hugo
Hacks
- The window is recentered when following links.
- The breadcrumbs displayed in eldoc when hovering over an org headline has been reworked to strip out link syntax and normalize font-size disparities.
- If
:ui workspaces
is enabled, persp-mode won't register org agenda buffers that are temporarily opened in the background. - Temporary org agenda files aren't added to recentf.
file:
links are highlighted with theerror
face if they are broken.-
TAB was changed to toggle only the visibility state of the current subtree, rather than cycle through it recursively. This can be reversed with:
(after! evil-org (remove-hook 'org-tab-first-hook #'+org-cycle-only-current-subtree-h))
- (Evil users) Nearby tables are formatted when exiting insert or replace mode
(see
+org-enable-auto-reformat-tables-h
). - Statistics cookies are updated when saving the buffer of exiting insert mode
(see
+org-enable-auto-update-cookies-h
). - Org-protocol has been lazy loaded (see
+org-init-protocol-lazy-loader-h
); loaded when the server receives a request for an org-protocol:// url. - Babel and babel plugins are now lazy loaded (see
+org-init-babel-lazy-loader-h
); loaded when a src block is executed. No need to useorg-babel-do-load-languages
in your config, just install your babel packages to extend language support (and ensure itsorg-babel-execute:*
function is autoloaded). - If a variable is used as a file path in
org-capture-template
, it will be resolved relative toorg-directory
, instead ofdefault-directory
(see+org-capture-expand-variable-file-a
).
Prerequisites
Org has a few soft dependencies that you will need to make use of Org's more esoteric features:
- For inline LaTeX previews, you need
latex
anddvipng
. - For rendering GNUPlot images (with
+gnuplot
flag) you need thegnuplot
program installed. - To run babel code blocks, you need whatever dependencies those languages need.
It is recommended you enable the associated
:lang
module and ensure its dependencies are met, e.g. install theruby
executable for ruby support.
MacOS
brew cask install mactex
brew install gnuplot
Arch Linux
pacman -S texlive-core texlive-bin texlive-science
pacman -S gnuplot
NixOS
environment.systemPackages = with pkgs; [
# any less than medium isn't guaranteed to work
texlive.combined.scheme-medium
];
TODO Windows
Features
Invoking the org-capture frame from outside Emacs
The simplest way to use the org-capture frame is through the bin/org-capture
script. I'd recommend binding a shortcut key to it. If Emacs isn't running, it
will spawn a temporary daemon for you.
Alternatively, you can call +org-capture/open-frame
directly, e.g.
emacsclient --eval '(+org-capture/open-frame INTIAL-INPUT KEY)'
Built-in custom link types
This module defines a number of custom link types in +org-init-custom-links-h
.
They are (with examples):
doom-docs:news/2.1.0
(~/.emacs.d/docs/%s
)doom-modules:editor/evil/README.org
(~/.emacs.d/modules/%s
)doom-repo:issues
(https://github.com/hlissner/doom-emacs/%s
)doom:core/core.el
(~/.emacs.d/%s
)duckduckgo:search terms
gimages:search terms
(Google Images)github:hlissner/doom-emacs
gmap:Toronto, Ontario
(Google Maps)google:search terms
org:todo.org
({org-directory}/%s
)wolfram:sin(x^3)
youtube:P196hEuA_Xc
(link only)yt:P196hEuA_Xc
(likeyoutube
, but includes an inline preview of the video)
Configuration
Changing org-directory
To modify org-directory
it must be set before org
has loaded:
;; ~/.doom.d/config.el
(setq org-directory "~/new/org/location/")