Files
doomemacs/modules/lang/org
Henrik Lissner 0fa93a089f Bump :lang
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
2020-03-27 16:57:56 -04:00
..
2020-03-27 16:57:56 -04:00
2020-02-16 02:53:27 -05:00

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 with org-plot/gnuplot (bound to SPC 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

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 the error 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 use org-babel-do-load-languages in your config, just install your babel packages to extend language support (and ensure its org-babel-execute:* function is autoloaded).
  • If a variable is used as a file path in org-capture-template, it will be resolved relative to org-directory, instead of default-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 and dvipng.
  • For rendering GNUPlot images (with +gnuplot flag) you need the gnuplot 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 the ruby 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 (like youtube, 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/")