Configuring org-lsp
Everything that can be set, in one place: the server's options, which are the same in every editor, and each editor's own settings. The page of each editor (Neovim, Vim, VS Code, Sublime Text, Zed, Helix) shows a short example in its own syntax and points here for the rest.
Nothing has to be set. Without configuration the agenda is built from the Org files of the workspace (or the ones that are open), and every option is Org's default.
The server's options#
The server's options are Org's variables: TODO keywords, agenda files, capture templates, logging and the rest. They come from three places, each over the one before:
- Org's defaults;
- the shared configuration file, which the server reads itself;
- the options the editor passes when it starts the server (Neovim's
settings, VS Code'sorg-lsp.settings, Helix'sconfig…).
So the options can be set once, in the shared file, for every editor, and
an editor can still change any of them for itself. A file's own #+TODO:
and #+PRIORITIES: lines apply to that file, over all three.
Names#
An option is named after the Org variable it stands for, with _ for -:
org-agenda-files is org_agenda_files, org-log-done is org_log_done.
Org's own spelling, org-agenda-files, works as well (TOML and JSON allow
it; in Lua it needs ['org-agenda-files']). The values are Org's, written
as JSON: 'time is "time", nil is false, a list is a list.
Options the server has and Org does not have plain names without org_
(auto_save, config_file, emacs_config). The keys inside an option
are the keywords Org uses there, as a refile target's maxlevel and a
capture template's empty_lines (:empty-lines).
The names options had before (agendaFiles, agenda.span …) still work;
the server says which to use instead.
The shared configuration file#
The server reads the first of these that is named, or there:
- the file the editor names with the
config_fileoption (see below); - the file named by
$ORG_LSP_CONFIG; config.tomlorconfig.jsonin$XDG_CONFIG_HOME/org-lsp;config.tomlorconfig.jsonin~/.config/org-lsp(on Windows,%APPDATA%\org-lsp).
A file named by config_file or $ORG_LSP_CONFIG that is not there is a
problem the server, org-lsp agenda and org-lsp mcp report; the others
may be missing.
Write it in TOML or in JSON, whichever you prefer. With both there, the
server reads config.toml and says that it leaves config.json out. A file
named by config_file or $ORG_LSP_CONFIG is JSON if its name ends in
.json, and TOML otherwise.
In TOML:
org_agenda_files = ["~/org"]
org_todo_keywords = ["TODO(t)", "NEXT(n)", "WAIT(w@/!)", "|", "DONE(d!)", "CANCELLED(c@)"]
org_log_done = "time"
org_log_into_drawer = true
org_refile_targets = [{ files = "agenda", maxlevel = 2 }]
org_agenda_span = "day"
org_agenda_start_on_weekday = 0
[[org_capture_templates]]
key = "t"
description = "Task"
target = ["file+headline", "~/org/inbox.org", "Tasks"]
template = "* TODO %?\n %U"
[[org_capture_templates]]
key = "n"
description = "Note"
target = ["file", "~/org/notes.org"]
template = ["* %^{Title}", "%U", "", "%?"]The same in JSON, which may have comments and trailing commas, as VS
Code's settings.json does, so that options can be copied from there as
they are:
{
"org_agenda_files": ["~/org"],
"org_todo_keywords": ["TODO(t)", "NEXT(n)", "WAIT(w@/!)", "|", "DONE(d!)", "CANCELLED(c@)"],
"org_log_done": "time",
"org_log_into_drawer": true,
"org_refile_targets": [{ "files": "agenda", "maxlevel": 2 }],
"org_agenda_span": "day",
"org_agenda_start_on_weekday": 0,
"org_capture_templates": [
{ "key": "t", "description": "Task", "target": ["file+headline", "~/org/inbox.org", "Tasks"], "template": "* TODO %?\n %U" },
// Notes, in a file of their own.
{ "key": "n", "description": "Note", "target": ["file", "~/org/notes.org"], "template": ["* %^{Title}", "%U", "", "%?"] },
],
}TOML is easier to write by hand: templates can go over several lines, and there are no braces to balance. JSON is easier to copy settings into from VS Code. The end of this page has every option, each under its own heading, with its default; config.toml is the whole file with every option at its default and what it means, to copy and change.
org-lsp config shows which file the server reads, anything wrong with
it, and the options it comes to; with --options, it puts an editor's
options on top, as the server would
(org-lsp config --options '{"org_agenda_span": "day"}'):
$ org-lsp config
Configuration file: /home/me/.config/org-lsp/config.toml
Options:
{
"org_agenda_files": [
"~/org"
],
"org_log_done": "time"
}Completion and checking#
config.schema.json is the JSON Schema of the file, written from the
server's own table of options. An editor that knows JSON Schema completes
and checks the options with it, and flags a misspelt name. In JSON, name
it with $schema:
{
"$schema": "https://raw.githubusercontent.com/kristijanhusak/org-lsp/main/docs/config.schema.json",
"org_log_done": "time"
}In TOML, editors that use Taplo (VS Code's Even Better TOML, Helix,
Neovim's taplo server) read a #:schema comment at the top of the file:
#:schema https://raw.githubusercontent.com/kristijanhusak/org-lsp/main/docs/config.schema.json
org_log_done = "time"The editors check the options they pass too: the Neovim plugin's options
have types for lua-language-server, and VS Code completes and checks
org-lsp.settings (see their sections below).
An editor's options on top#
An editor's options go on top of the file's:
- an option the editor sets replaces the file's;
- an object, such as
org_agenda_prefix_formatoremacs_options, is merged key by key, the value of each key it has replacing the file's whole; - a list, such as
org_capture_templatesororg_agenda_files, is replaced whole.
With the file above, this Neovim configuration shows a week in the agenda, and keeps everything else from the file:
require('org-lsp').setup({ settings = { org_agenda_span = 'week' } })A list replaces the default list whole too: with org_capture_templates
set, its templates are the only ones, and Org's default one is gone.
Leaving the file out, or using another#
config_file is an option only an editor gives. It says which file to
read:
false: none; the editor's options alone count;- a path: that file instead (
~/is the home directory). It must exist: the server says so when it cannot read it.
-- Neovim: no shared file.
require('org-lsp').setup({ settings = { config_file = false } })// VS Code: the work configuration.
{ "org-lsp.settings": { "config_file": "~/work/org-lsp.toml" } }Custom agenda commands#
org_agenda_custom_commands is Emacs's org-agenda-custom-commands: views
of your own in the agenda menu (C-c a, <Leader>oa), next to a (the
agenda), t (the TODO list) and m or M (a tags search, asked for). A
command is one view, or a block agenda: several views one after the other,
with a line of = between them.
[[org_agenda_custom_commands]]
key = "n"
description = "Next actions"
type = "todo"
match = "NEXT|WAIT"
[[org_agenda_custom_commands]]
key = "w"
description = "Work, open"
type = "tags-todo"
match = "work-email"
# A prefix key: the menu then offers the commands under it.
[[org_agenda_custom_commands]]
key = "d"
description = "Daily"
[[org_agenda_custom_commands]]
key = "dd"
description = "Today, then what is waiting"
blocks = [
{ type = "agenda", settings = { org_agenda_span = "day" } },
{ type = "tags-todo", match = "PRIORITY=\"A\"", header = "Urgent" },
{ type = "todo", match = "WAIT", header = "Waiting for" },
]
# Tomorrow's deadlines, the earliest first.
[[org_agenda_custom_commands]]
key = "D"
description = "Due tomorrow"
type = "tags-todo"
match = "DEADLINE>=\"<+1d>\"&DEADLINE<\"<+2d>\""
settings = { org_agenda_sorting_strategy = ["deadline-up", "urgency-down"] }
# Open TODO entries the agenda does not show yet: nothing scheduled, no
# deadline in its warning period.
[[org_agenda_custom_commands]]
key = "u"
description = "Not planned"
type = "alltodo"
settings = { org_agenda_todo_ignore_scheduled = "all", org_agenda_todo_ignore_deadlines = "near" }The views:
type | Shows | match |
|---|---|---|
agenda | the day or week agenda | |
alltodo | every open TODO entry | |
todo | entries with these keywords | NEXT¦WAIT |
tags | entries the match string matches | work-home |
tags-todo | the same, open TODO entries only | work-home |
search | entries with these words | meeting |
stuck | stuck projects |
(In the table, ¦ stands for |, which an Org table cannot hold.)
A match string is Org's: tags joined with + (and), - (not) and |
(or), as in work+urgent-home|@phone; a regexp in braces, {^proj};
properties, as in OWNER="alice", EFFORT>2, PRIORITY="A", LEVEL>1,
TODO="NEXT", SCHEDULED<"<today>" (a * after the operator, as in
EFFORT<*3, also requires the property); and, after a slash, keywords:
work/NEXT|WAIT, or work/! for any open one.
header replaces a view's header, and an empty one leaves it out.
settings holds agenda options for a command or a block, as Org's
settings list does: org_agenda_span, org_agenda_start_day (-1d,
2026-10-01), org_deadline_warning_days, org_agenda_use_time_grid,
org_agenda_sorting_strategy (one list, for the block's kind of view),
org_agenda_max_entries and the others. A block's settings go over its
command's, which go over the options'.
In a block agenda, f, b, ., j and the span keys move the agenda
block the cursor is in, as in Emacs.
Plugins#
org-super-agenda, org-roam and org-journal, Emacs packages built on Org, are there too, off until turned on: plugins.org says how they work and what they differ in.
org-protocol URLs#
Bookmarklets that store a link to a page or capture it, and links that
open a page's source, reach org-lsp through org-lsp protocol URL:
org-protocol.org says how to set it up. Its options are Org's
(below): org_protocol_default_template_key, the template of a capture
whose URL names none; org_protocol_data_separator, for old-style URLs;
org_protocol_project_alist, where the files of published pages are, for
open-source; and org-lsp's own org_protocol_editor, the editor to start
when none runs, which only the shared file can give, as no editor runs
then:
org_protocol_default_template_key = "w"
org_protocol_editor = "code"
[[org_protocol_project_alist]]
name = "Worg"
base_url = "https://orgmode.org/worg/"
working_directory = "~/org/worg/"
online_suffix = ".html"
working_suffix = ".org"Export, Babel and other work in Emacs#
What only Emacs can do, the server has Emacs do, when Emacs (with Org 9.6
or newer) is installed: export (C-c C-e, <Leader>oe in Vim and Neovim),
evaluating code blocks (C-c C-c on a block, C-c C-v b for the file's),
LaTeX previews, encryption and a few others. The server starts Emacs the
first time and keeps it running. Moving rows in column view
(org-columns-move-row-up, M-<up>) needs a newer Org than the 9.6.15
that Emacs 29 comes with.
Org's options for these go in emacs_options, by their names in Org, with
values as the other options have them: true is t, false is nil, a
string is a symbol where the option takes one ("mv" is mv), and a table
is an association list.
# ~/.config/org-lsp/config.toml
[emacs_options]
org-attach-method = "mv"
org-attach-id-dir = "~/org/data/"
org-export-with-toc = false
org-export-backends = ["ascii", "html", "icalendar", "latex", "md", "odt"]
org-babel-load-languages = { emacs-lisp = true, python = true }Emacs sets each, as Customize would, when it loads the library the option
is in (org-attach for org-attach-method), and checks it against the
option's type: a value the option does not take is left out, with a
message saying what it takes. The options are those Emacs reads:
emacs-options.org lists each, with Org's documentation of it, its default
and its type. For the others the server says why it leaves them out: most
are settings of the server, and a function or a hook is Lisp.
Lisp goes in a file Emacs loads before Org, or inline. Emacs loads
emacs_config_file, then evaluates emacs_config, then sets
emacs_options, which so win over both:
# ~/.config/org-lsp/config.toml
emacs_config_file = "~/.config/org-lsp/export.el"
emacs_config = '''
(add-to-list 'load-path "~/src/org-mode/lisp")
(setq org-html-format-drawer-function #'my-drawer)
(add-hook 'org-export-before-processing-functions #'my-before-export)
'''Emacs asks before it evaluates code, and the editor shows the question.
When something is wrong#
The server never refuses to start because of its options:
- a file that is not valid TOML or JSON is left out whole, and the server shows a message naming the file and the line;
- an option with a value of the wrong type is left out on its own, with a message; the other options apply;
- an option the server does not know is named in a message, which catches a misspelt name.
The messages also go to the editor's LSP log (:checkhealth vim.lsp in
Neovim shows where it is; the Output panel's Org Language Server in VS
Code; :log-open in Helix).
The server reads its options when it starts. After changing them, restart
it: :lsp restart in Neovim 0.12, Org: Restart Language Server in VS
Code (which restarts it by itself when org-lsp.settings changes),
:lsp-restart in Helix, LSP: Restart Servers in Sublime Text.
Each editor's own settings#
Besides passing the server's options, each editor has settings of its own: where the server comes from, the keys, how windows open, what is shown.
Neovim#
Set vim.g.org_lsp before the plugin loads (before vim.pack.add(), or
in lazy.nvim's init), or call require('org-lsp').setup() at any time; calling it more
than once merges each call into what was there. What you set is merged
into the defaults, so you only write what you want to change. These are
the defaults:
require('org-lsp').setup({
-- The server command. Unset, the plugin uses the server it built
-- (target/release/org-lsp in the plugin's directory), `org-lsp` from
-- PATH, or the one it downloaded.
cmd = nil,
-- When no server is found, download the build of `release` for this
-- platform into stdpath('data')/org-lsp (needs curl and tar), then
-- start it. `:OrgLspDownload` downloads it again, to update it.
download = true,
-- The release to download: 'nightly' (built from the latest main), or
-- a version tag such as 'v0.2.0'.
release = 'nightly',
-- The server's options, passed to it as they are.
settings = {},
-- How a newly opened file is folded: 'showeverything' (everything
-- open) or 'overview' (every fold closed). Unset, the server's
-- `org_startup_folded`, the file's `#+STARTUP:` and its `VISIBILITY`
-- properties decide, as in Emacs.
startup_folded = nil,
-- Fold with the server's folding ranges.
folding = true,
-- Turn off the syntax for Org once the server's highlighting arrives.
-- The plugin's syntax colors what a pattern finds as the server does
-- (see Neovim's page), and colors what you type before the server
-- answers.
replace_syntax = false,
-- Highlight the code of source and export blocks (`#+begin_src python`,
-- `#+begin_export html`) and of inline source blocks (`src_python{…}`),
-- where the server says it is, with the tree-sitter parser of its
-- language and its highlight query, as Emacs's
-- `org-src-fontify-natively` does; a language without a parser (Emacs
-- Lisp) with its Vim syntax file, in regions of the buffer's own syntax.
-- A language with neither stays as it is.
src_highlight = true,
-- Conceal what the server marks hidden: link brackets and targets
-- (`org_link_descriptive`), emphasis markers (`org_hide_emphasis_markers`).
-- Sets 'conceallevel' 2 in Org windows (a level set before, as by a
-- `FileType` autocommand, stays); the cursor line shows everything.
conceal = true,
-- Indent as Org does, with the server: new lines through 'indentexpr'
-- (`org-indent-line`, as on RET), and `=` re-indents the lines it moves
-- over (`org-indent-region`). `gq` still wraps text. How far text goes
-- follows `org_adapt_indentation`.
indent = true,
-- Show files with `org-indent-mode` (`org_startup_indented`, `#+STARTUP:
-- indent`) indented by level, without changing them, and hide leading
-- stars (`org_hide_leading_stars`, `#+STARTUP: hidestars`; needs
-- `conceal`). A line that wraps goes on under its own text, a
-- headline's title, an item's text ('breakindent'), as Org's
-- `wrap-prefix`, but without the prefix: Neovim cannot repeat it there.
virtual_indent = true,
-- How the agenda and capture buffers open, and how big; see below.
win_split_mode = 'split',
win_split_size = nil,
-- Where the date prompt's calendar opens: 'bottom', 'float', 'cursor';
-- see below. And the border of a floating calendar.
calendar_win_mode = 'bottom',
calendar_border = 'rounded',
-- Previews of links to images and of LaTeX (`<Leader>oxv`, `<Leader>oxl`),
-- drawn with `vim.ui.img` (Neovim 0.13): the most lines an image takes
-- (and columns, `max_width`, on top of `org_image_max_width`), or false
-- for none. See below.
images = { max_height = 20 },
-- Keys by scope; see docs/keys/neovim.org. `false` sets no keys at all.
mappings = {
global = {
['org.agenda.dispatch'] = '<Leader>oa',
['org.capture'] = '<Leader>oc',
['org.clock.goto'] = '<Leader>oxj',
['org.journal.new.entry'] = '<Leader>jj',
},
org = { cycle = '<Tab>', global_cycle = '<S-Tab>' },
agenda = { quit = 'q' },
},
})mappings lists only the keys the plugin needs before the server has
started. The other keys come from the server; keys/neovim.org lists them
all and shows how to change them.
The plugin's options and the server's have types for lua-language-server
(org_lsp.Config, org_lsp.Settings, written from the server's own table
of options into lua/org-lsp/types.lua), so with the plugin in its library
they are completed and checked. setup() is annotated already; annotate
vim.g.org_lsp yourself:
---@type org_lsp.Config
vim.g.org_lsp = {
settings = { org_log_done = 'time', org_agenda_span = 'day' },
}:checkhealth org-lsp shows which server the plugin found, where it came
from, and the agenda files.
Where the agenda and capture buffers open#
win_split_mode says how a window is opened for the agenda and for a
capture buffer. One that is already shown is used again.
| Value | Opens it |
|---|---|
'split' | in a horizontal split (the default) |
'vsplit' | in a vertical split |
'float' | in a floating window in the middle of the editor |
'current' | in the current window |
| another Ex command | with that command, such as 'botright split', 'topleft vsplit' or 'tabnew' |
| a function | with the function, which is given the buffer and returns the window it opened |
require('org-lsp').setup({ win_split_mode = 'float' })
-- A float of your own size.
require('org-lsp').setup({
win_split_mode = function(bufnr)
return vim.api.nvim_open_win(bufnr, true, {
relative = 'editor', row = 2, col = 4, width = vim.o.columns - 8, height = vim.o.lines - 6, border = 'single',
})
end,
})win_split_size says how big that window is: lines for a split, columns
for a vertical one ('vsplit', or a command with vsplit, vnew or
vertical), or, below 1, that part of the editor. A float takes the part
for both its sides (0.8 unset), or the lines for its height. Unset, a
split takes half of the window it splits. A function opens its own size.
-- The agenda below, 15 lines high.
require('org-lsp').setup({ win_split_mode = 'botright split', win_split_size = 15 })
-- Beside, a third of the editor wide.
require('org-lsp').setup({ win_split_mode = 'vsplit', win_split_size = 0.33 })Closing the agenda (q) or finishing a capture closes the window that was
opened for it; with 'current', the window goes back to the buffer it
showed before. Going to an entry from the agenda opens the entry's file in
the agenda's window, or, from a floating window, in the window under it.
The window the agenda or a capture buffer was opened from starts with the
same line again when they close, as in Emacs.
Where the calendar opens#
Commands that ask for a date (org.deadline, org.schedule, cid …) show
the calendar Emacs shows with the prompt. calendar_win_mode says where.
| Value | Opens it |
|---|---|
'bottom' | in a split along the bottom, as high as the calendar, as Emacs does (the default); from a floating window, in a floating window along the bottom |
'float' | in a floating window in the middle of the editor |
'cursor' | in a floating window below the cursor, or above it when there is no room below |
| another Ex command | with that command, such as 'topleft split' |
| a function | with the function, which is given the buffer and returns the window it opened |
calendar_border is the border of the floating window ('float',
'cursor'), as nvim_open_win() takes it: 'rounded' unset, 'none' for
none.
The calendar shows three months, as Emacs's does (Emacs has no other
number); the server's calendar_months option set to 1 shows the month of
the selected day alone, which suits a floating window. Under one month the
prompt is on a line of its own and the answer below it
(10:00 => <2026-10-07 Wed 10:00>), so the window is not much wider than
the month. Its weeks start on Sunday;
calendar_week_start_day set to 1 starts them on Monday, as Emacs's
calendar-week-start-day does:
require('org-lsp').setup({
calendar_win_mode = 'cursor',
calendar_border = 'single',
settings = { calendar_months = 1, calendar_week_start_day = 1 },
})Picking a time, the minutes move by org_time_stamp_rounding_minutes (5),
going first to a multiple of it, as S-<up> on a timestamp does: from
12:44, up is 12:45, then 12:50; down is 12:40.
Once the calendar closes, the window it was asked from shows what it showed before: the same first line and the cursor on the same text, moved down with it when the date went in above, as in Emacs, whatever 'scrolloff' and 'splitkeep' are.
The clock and the timer in the statusline#
While a clock runs, require('org-lsp').clock_status() returns what
Emacs's mode line shows: the time clocked on the entry, its effort, and its
headline, as in [0:25/1:00] (Write the report). While the relative timer
or a countdown is on, its value follows (<0:05:23>). With neither it
returns an empty string. The plugin redraws the statusline every minute
while a clock runs, every second while a timer runs, and fires the
User OrgLspClock autocommand when the clock starts or stops.
vim.o.statusline = '%f %h%m%r%=%{v:lua.require("org-lsp").clock_status()} %l,%c'
-- lualine
require('lualine').setup({
sections = { lualine_x = { function() return require('org-lsp').clock_status() end } },
})Highlighting#
The server's highlighting arrives as semantic tokens, which Neovim shows
with the groups @lsp.type.<token>.org and
@lsp.typemod.<token>.<modifier>.org; protocol.org lists the tokens
and modifiers. The plugin links them to nvim-orgmode's @org.* groups by
default, so a colorscheme that styles those applies here too. Like any
group, they can be set in your configuration:
vim.api.nvim_set_hl(0, '@lsp.type.todoKeyword.org', { fg = '#ff6c6b', bold = true })
vim.api.nvim_set_hl(0, '@lsp.typemod.todoKeyword.done.org', { fg = '#98be65', bold = true })With org_fontify_whole_heading_line, a headline's whole line, to the
edge of the window, takes the group of its level,
@lsp.typemod.headline.level1.org and on: give those a background for it
to show, as Org's org-level-N faces need one.
Images and LaTeX#
Neovim 0.13 draws images in the terminal (vim.ui.img, with the Kitty
graphics protocol: Kitty, Ghostty, WezTerm). There the previews of Org
show, as Emacs shows them:
<Leader>oxv(org-link-preview,C-c C-x C-v) shows the images of the links to image files in the current section, or toggles the one of the link at the cursor. With a count of 1 links with a description count too; 4 takes them away; 16 (or 11) shows those of the whole file, 64 takes them all away. A file with#+STARTUP: inlineimages(ororg_startup_with_link_previews) opens with them.<Leader>oxl(org-latex-preview,C-c C-x C-l) shows the LaTeX fragments as images, made by Emacs (latexanddvipng, as Org makes them, intoltximg/beside the file), with the same counts. A file with#+STARTUP: latexpreview(ororg_startup_with_latex_preview) opens with them.
An image shows below the line of its link or fragment, in lines kept free
for it, from where the line's text starts, and follows it as the window
scrolls; it goes when its text does. PNG images show as they are; others
are made PNG with ImageMagick (magick or convert) when it is
installed: read as their extension says (a .gif file as a GIF), in at
most ten seconds. Older versions of Neovim say that they cannot show
images.
An image keeps its proportions: it shows as wide as
org_image_actual_width says (its own width, a number of pixels, or the
:width of the paragraph's #+ATTR_ORG:, 300, 50% or 0.5 of the
window's text), at most org_image_max_width when at its own width (70
columns, Emacs's fill-column), and one larger than max_width or
max_height (in cells) allows is given only the width or the height it may
take, the terminal working out the other. The lines
kept free below it are those it takes, by the size of the terminal's cells
in pixels, which the terminal tells (Kitty, Ghostty and WezTerm do). Where
it does not (some multiplexers), cells are taken as 10 by 20 pixels; set
their size if images overlap the text below them or leave a gap:
require('org-lsp').setup({ images = { cell = { width = 9, height = 19 } } })Vim#
Set g:org_lsp before the plugin loads; every key may be left out, and
what you set is merged into the defaults.
| Option | Default | Meaning |
|---|---|---|
cmd | found | The server command, as a list. Unset: the build in the checkout (target/release), org-lsp on PATH, or the downloaded one. |
download | 1 | When no server is found, download the build of release for this platform into ~/.local/share/vim/org-lsp (with curl and tar) and start it. :OrgLspDownload downloads it again, to update it. |
release | 'nightly' | The release to download: 'nightly' (built from the latest main), or a version tag such as 'v0.2.0'. |
settings | {} | The server's options, passed to it as they are. |
client | 'auto' | The LSP client: 'lsp' (yegappan/lsp), 'coc', 'vim-lsp' or 'ale'. 'auto' takes the first of these that is installed. |
folding | 1 | Fold with the server's folding ranges, and cycle with <Tab> and <S-Tab>. |
startup_folded | '' | 'overview' opens files with every fold closed, 'showeverything' with every fold open. Empty: the server's org_startup_folded, the file's #+STARTUP: and its VISIBILITY properties decide, as in Emacs. |
highlight | 1 | Highlight with the server's tokens. |
indent | 1 | Indent as Org does, with the server: new lines through 'indentexpr' (org-indent-line), and = (org-indent-region), following org_adapt_indentation. |
virtual_indent | 1 | Show files with org-indent-mode (org_startup_indented, #+STARTUP: indent) indented by level without changing them, and their hidden leading stars in the color of the background, as Org's org-hide face does. Needs Vim 9.0.0067 or later. |
conceal | 1 | Hide what Org hides (link brackets and targets, emphasis markers with org_hide_emphasis_markers), and show what stands in for hidden text: entities as their characters, the bullets of org_bullets_mode, shrunk table fields. Sets 'conceallevel' 2 in Org windows (a level set before stays); the cursor's line shows everything. Needs Vim 9.0.0067 or later. |
src_highlight | 1 | Highlight the code of source and export blocks and of inline source blocks with the syntax file of its language, where the server says it is, as Emacs's org-src-fontify-natively does. |
win_split_mode | 'split' | How the agenda and capture buffers open: 'split', 'vsplit', 'current', or an Ex command that opens a window ('botright split', 'tabnew'). |
win_split_size | 0 | How big that window is: lines for a split, columns for a vertical one (vsplit, vnew, vertical), or below 1 that part of the editor. 0 leaves it as the command makes it. |
calendar | 1 | Pick dates in Org's calendar, as Emacs shows it while it asks for a date; i there types the date. 0 asks for the date as text only. |
calendar_win_mode | 'botright split' | The Ex command that opens the calendar's window ('topleft split', 'botright vsplit'). A split is as high as the calendar. |
mappings | the server's | Keys by scope (global, org, agenda, capture, calendar, columns); see keys/vim.org. |
In a file shown indented (virtual_indent), a line that wraps goes on
under its own text, a headline's title, an item's text ('breakindent', as
Org's wrap-prefix), but without the prefix before it: Vim cannot repeat
virtual text there.
For the clock in the statusline, and the relative timer or the countdown
while one is on ([0:25] (Write the report) <0:05:23>):
set statusline=%f\ %=%{org_lsp#clock_status()}User OrgLspClock fires when the clock starts or stops.
Leave the LSP client's own semantic highlighting and folding off for Org files (they are off by default in all four clients): the plugin does both.
With org_fontify_whole_heading_line, a headline's whole line takes the
group of its level (OrgLsp_headline_level1 and on), through a sign
without text, as the agenda's clocked line does: the sign column shows for
them.
VS Code#
The settings go in settings.json (Preferences: Open User Settings
(JSON)), or in a workspace's .vscode/settings.json for that folder only.
The Settings UI shows them under Extensions › Org (org-lsp). In
settings.json the server's options under org-lsp.settings are
completed, described on hover and checked, as the extension knows them all
with their types and defaults.
| Setting | Default | Meaning |
|---|---|---|
org-lsp.settings | {} | The server's options, passed to it as they are. |
org-lsp.server.path | "" | The server binary. Empty: the one bundled with the extension, or else org-lsp from PATH. |
org-lsp.keys | "emacs" | Which keys are bound: "emacs" (Emacs's but those VS Code uses for text), "emacs_full" (all of Emacs's), "vim" (the Neovim plugin's, for VSCodeVim) or "custom" (none); see keys/vscode.org. |
org-lsp.conceal | true | Hide what Org hides: link brackets and targets (org_link_descriptive), emphasis markers (org_hide_emphasis_markers). The line with the cursor shows everything. |
org-lsp.images | true | Show images in place of links to image files and of LaTeX fragments (C-c C-x C-v, C-c C-x C-l, #+STARTUP: inlineimages, latexpreview). VS Code cannot leave lines free for an image, so an image is as high as a line; hover over it to see it whole. |
org-lsp.headlineLevelColors | false | Color each level of headlines in a color of the theme, as Emacs's outline-N faces; see Headline levels in colors. |
org-lsp.latexForeground | "" | The color LaTeX previews are drawn in, such as "#d4d4d4". Empty: black on a light theme, light gray on a dark one. |
org-lsp.winSplitMode | "split" | Where the agenda and capture buffers open: "split" in an editor group below the current one, "vsplit" beside it, "float" in a window of its own, "current" in the current group. A group that already has it is used again. |
org-lsp.messages | "notification" | How Org's messages show (Priority of current item set to A): "notification" in the corner of the window, "statusBar" in the status bar for a few seconds. Errors always show as notifications. |
When org-lsp.settings or org-lsp.server.path changes, the extension
restarts the server, so the change applies at once. In a workspace VS Code
does not trust (restricted mode), these two come from the user's settings
only: a folder's .vscode/settings.json could otherwise name a program for
the server to run (emacs, a capture template's function). They follow
the folder's settings again once it is trusted. While a clock runs,
the status bar shows it as Emacs's mode line does, such as
[0:25/1:00] (Write the report); clicking it goes to the entry.
The extension also sets editor defaults for Org files, the agenda and the date prompt. Org files get semantic highlighting, and the light bulb and bracket pair colours are off. The agenda and the date prompt also lose line numbers, wrapping, folding and indentation guides. Any of these can be set back for the language as usual:
{
"[org]": { "editor.lightbulb.enabled": "on" },
"[org-agenda]": { "editor.lineNumbers": "on" }
}The extension's colours go in workbench.colorCustomizations:
org.agendaClockingBackground, the agenda's line of the clocked entry, and
org.headlineLevel1Background to org.headlineLevel8Background, the
background of a headline's line from edge to edge with
org_fontify_whole_heading_line (none by default, as Org's org-level-N
faces have none; a theme's token colours cannot give one):
{
"workbench.colorCustomizations": { "org.headlineLevel1Background": "#2a3a4a" }
}Sublime Text#
The package's settings are under Preferences › Package Settings › LSP ›
Servers › LSP-org, or Preferences: LSP-org Settings in the Command
Palette, which opens the defaults beside your own
Packages/User/LSP-org.sublime-settings.
| Setting | Meaning |
|---|---|
command | The server command. By default the package finds the server or downloads it; see sublime.org. |
initializationOptions | The server's options, passed to it as they are. |
org_keys | The keys: "emacs" (the default: Emacs's but those Sublime Text uses for text), "emacs_full" (all of Emacs's), "vim" (for Vintage and NeoVintageous, in command mode) or "custom" (none); see keys/sublime.org. |
org_images | Whether images show below the lines of links to image files and of LaTeX fragments (C-c C-x C-v, C-c C-x C-l, #+STARTUP: inlineimages, latexpreview): true (the default) or false. PNG, JPEG and GIF only. |
org_messages | How Org's messages show: "popup" (the default), at the cursor for a few seconds and in the status bar, or "status", in the status bar only. |
semantic_tokens | The scopes of the server's tokens; written from the server. |
LSP draws the server's colors with "semantic_highlighting": true in its
own settings (Preferences › Package Settings › LSP › Settings), and the
time clocked and the … of shrunk columns with "show_inlay_hints": true.
Zed#
The settings go in Zed's settings (zed: open settings):
{
"languages": {
"Org": {
"semantic_tokens": "combined",
"document_folding_ranges": "on",
"inlay_hints": { "enabled": true }
}
},
"lsp": {
"org-lsp": {
"binary": { "path": "/path/to/org-lsp" },
"initialization_options": { "org_agenda_files": ["~/org"] }
}
}
}semantic_tokens: Zed asks a language server for semantic tokens only when a language'ssemantic_tokenssays so.combinedcolors Org files with the tree-sitter grammar and the server's tokens on top;fulluses the server's tokens alone. Source and export blocks show their code in its language's colors through the grammar's injections, withcombinedonly. The grammar has no node for inline source blocks (src_python{…}), so their code is not colored.document_folding_ranges: Zed asks the server for its folds (headlines, drawers, blocks) only withon; without it, an Org file has no folds at all.inlay_hints: files withorg-indent-mode(org_startup_indented,#+STARTUP: indent) show indented by level, without being changed, through inlay hints of blanks before their lines. The leading stars still show; Zed cannot hide them. Withsoft_wrap, a line that wraps goes on under those blanks and its own indentation, not under a headline's title or an item's text as in Org. Pretty entities (\alphaasα) and the clock's times are inlay hints too.lsp.org-lsp.binary.path: a server binary of your own. Without it, the extension starts the oneinstall.shput beside it,org-lspfrom PATH, or else downloads the nightly build for your platform once.lsp.org-lsp.initialization_options: the server's options, passed to it as they are.
Helix#
Helix passes the config table under the server in languages.toml to it
as it is, as the server's options. Two of them tell the server what Helix
does without announcing it, as editors/helix/languages.toml sets them:
show_document = true: Helix opens the documents the server asks it to show (window/showDocument): the agenda, a capture buffer, an entry's file.message_requests = false: Helix shows no list for a server (window/showMessageRequest), so a question's choices come first in the code actions (Space a).
Inlay hints show the indentation of org-indent-mode, the time clocked and
the … of shrunk columns:
[editor.lsp]
display-inlay-hints = trueEvery option, at its default#
Every option of the server, each under its own heading: what it means, the Org option it stands for, the values it takes and its default, in JSON and as a line of the shared configuration file. You would never write them all out: set only what you want different. The names and values are the same in every editor; only the syntax changes (above, and on each editor's page). config.toml has them all in one file, at their defaults, each with what it means.
TODO keywords and logging#
org_todo_keywords#
The TODO sequence, written like Org's #+TODO: line. | separates the states
that count as done; without it the last keyword is the only done state.
TODO(t) gives a keyword a key for fast selection, and WAIT(w@/!) makes it
log a note (@) or the time (!) on entering and leaving it. Several
sequences go in a list of lists,
[["TODO", "|", "DONE"], ["REPORT", "|", "FIXED"]]; cycling stays in the
sequence of the entry, and C-S-<right> switches to the next. A list that
starts with type is a type sequence (#+TYP_TODO:): each of its keywords
goes straight to done. A file's own #+TODO: lines take precedence.
- Org's option
org-todo-keywords- Type
- string[] | string[][]
- Default
["TODO", "|", "DONE"]
org_todo_keywords = ["TODO", "|", "DONE"]org_todo_interpretation#
What a list of keywords alone in org_todo_keywords is (Org's old syntax): a
sequence, or types, each going straight to done. A list that starts with
sequence or type says it itself.
- Org's option
org-todo-interpretation- Type
- "sequence", "type"
- Default
"sequence"
org_todo_interpretation = "sequence"org_todo_keyword_faces#
Faces for particular TODO keywords: a color, { "WAIT": "orange" }, or
attributes written as Org writes them,
{ "CANCELLED": ":foreground gray :slant italic :strike-through t" }
(:foreground, :background, :weight bold, :slant italic,
:underline t, :strike-through t). Shown in Org files and in the agenda by
Neovim, Vim and VS Code.
- Org's option
org-todo-keyword-faces- Type
- { [keyword]: string }
- Default
{}
org_todo_keyword_faces = {}org_log_done#
Write CLOSED: with the time when an entry is done, and with note ask for a
note too. A file's #+STARTUP: words logdone, lognotedone and nologdone
change it there; an entry's LOGGING property (inherited) says what its state
changes log instead: those words, logrepeat and its relatives, and keywords
with what they log (WAIT(@/!)), or nil for nothing.
- Org's option
org-log-done- Type
- false, "time", "note"
- Default
false
org_log_done = falseorg_log_repeat#
Record when a repeating entry is done and moves to its next date. #+STARTUP:
logrepeat, lognoterepeat and nologrepeat change it in a file, and the
LOGGING property in an entry.
- Org's option
org-log-repeat- Type
- false, "time", "note"
- Default
"time"
org_log_repeat = "time"org_treat_S_cursor_todo_selection_as_state_change#
S-<left> and S-<right> on a headline change its TODO state as any change
does: logged, and blocked by its dependencies. Off, they change it with
nothing logged and nothing in the way.
- Org's option
org-treat-S-cursor-todo-selection-as-state-change- Type
- boolean
- Default
true
org_treat_S_cursor_todo_selection_as_state_change = trueorg_treat_insert_todo_heading_as_state_change#
The keyword of a heading org.insert.todo.heading (M-S-RET) makes is set as a
TODO change: logged as the keyword says (a note wanted is a time only), with
its tag triggers.
- Org's option
org-treat-insert-todo-heading-as-state-change- Type
- boolean
- Default
false
org_treat_insert_todo_heading_as_state_change = falseorg_track_ordered_property_with_tag#
A tag that org.ordered.toggle (C-c C-x o) puts on the headline with the
ORDERED property and takes off without it: true for ORDERED, or a tag of
your own. Only the property orders the subtasks.
- Org's option
org-track-ordered-property-with-tag- Type
- boolean, string
- Default
false
org_track_ordered_property_with_tag = falseorg_enforce_todo_dependencies#
An entry cannot be done while a child is not, or, under a parent with the
ORDERED property, while an earlier sibling is not: the change is refused
with what blocks it.
- Org's option
org-enforce-todo-dependencies- Type
- boolean
- Default
false
org_enforce_todo_dependencies = falseorg_enforce_todo_checkbox_dependencies#
An entry cannot be done while it has an unchecked box.
- Org's option
org-enforce-todo-checkbox-dependencies- Type
- boolean
- Default
false
org_enforce_todo_checkbox_dependencies = falseorg_log_refile#
Record when an entry is refiled (Refiled on [2026-05-18 Mon 10:30]), with
note asking for a note too. #+STARTUP: logrefile, lognoterefile and
nologrefile change it in the file refiled to.
- Org's option
org-log-refile- Type
- false, "time", "note"
- Default
false
org_log_refile = falseorg_log_reschedule#
Record when a scheduled date changes or is removed
(Rescheduled from "[2026-05-18 Mon]" on …), with note asking for a note
too. #+STARTUP: logreschedule, lognotereschedule and nologreschedule
change it in a file.
- Org's option
org-log-reschedule- Type
- false, "time", "note"
- Default
false
org_log_reschedule = falseorg_log_redeadline#
Record when a deadline changes or is removed (New deadline from …), with
note asking for a note too. #+STARTUP: logredeadline,
lognoteredeadline and nologredeadline change it in a file.
- Org's option
org-log-redeadline- Type
- false, "time", "note"
- Default
false
org_log_redeadline = falseorg_log_into_drawer#
Put state changes and notes into a drawer: true for LOGBOOK, or the name
of a drawer. #+STARTUP: logdrawer and nologdrawer change it in a file;
an entry's LOG_INTO_DRAWER property (inherited) says which drawer for it
(t for LOGBOOK, nil for none).
- Org's option
org-log-into-drawer- Type
- boolean, string
- Default
false
org_log_into_drawer = falseorg_log_done_with_time#
The CLOSED: timestamp of an entry done has the time, not only the date.
- Org's option
org-log-done-with-time- Type
- boolean
- Default
true
org_log_done_with_time = trueorg_log_note_headings#
The heading of each kind of note, by kind: done (CLOSING NOTE %t), state
(State %-12s from %-12S %t), note, reschedule, delschedule,
redeadline, deldeadline, refile and clock_out. In a heading %t is
the time, %T the time active, %d and %D the date, %s the new state or
date and %S the old one, %u the login name and %U the full name; an
empty heading leaves the note its text only. Kinds left out keep Org's
headings. Habits take notes with the done heading for days done.
- Org's option
org-log-note-headings- Type
- object
- Default
- unset: Org's headings
org_log_states_order_reversed#
Put a new state note, note or clock line above the others (false: below
them). #+STARTUP: logstatesreversed and nologstatesreversed change it in
a file.
- Org's option
org-log-states-order-reversed- Type
- boolean
- Default
true
org_log_states_order_reversed = trueorg_log_state_notes_insert_after_drawers#
Without a log drawer, put notes after the drawers right under the headline and planning line, not before them.
- Org's option
org-log-state-notes-insert-after-drawers- Type
- boolean
- Default
false
org_log_state_notes_insert_after_drawers = falseorg_log_note_clock_out#
Ask for a note when the clock stops (org.clock.out), which goes right after
the clock line. #+STARTUP: lognoteclock-out and nolognoteclock-out
change it in a file.
- Org's option
org-log-note-clock-out- Type
- boolean
- Default
false
org_log_note_clock_out = falseorg_provide_todo_statistics#
Update the [1/3] and [33%] cookies of the parent when a state changes,
counting the entries with a keyword (true), every entry (all-headlines,
those without a keyword as not done), those with these keywords and the done
ones (a list), or those of the first list as not done and of the second as
done (two lists). false leaves the cookies.
- Org's option
org-provide-todo-statistics- Type
- boolean, "all-headlines", string[], [string[], string[]]
- Default
true
org_provide_todo_statistics = trueorg_hierarchical_todo_statistics#
TODO statistics count the children only; false: the whole subtree, and the
cookies above too. A COOKIE_DATA property with recursive does this for a
subtree.
- Org's option
org-hierarchical-todo-statistics- Type
- boolean
- Default
true
org_hierarchical_todo_statistics = trueorg_closed_keep_when_no_todo#
Keep the CLOSED: timestamp when an entry is left with no keyword.
- Org's option
org-closed-keep-when-no-todo- Type
- boolean
- Default
false
org_closed_keep_when_no_todo = falseorg_todo_state_tags_triggers#
Tags that change with the state, by state: a keyword, "" for none, todo
for any not done, done for any done; each a list of tags to set (+TAG) or
remove (-TAG), in order:
{ "WAIT": ["+waiting"], "todo": ["-done"], "done": ["+done", "-waiting"] }.
- Org's option
org-todo-state-tags-triggers- Type
- object
- Default
- unset: none
org_use_fast_todo_selection#
How C-c C-t (org.todo) changes the TODO state where keywords have keys
(TODO(t)): auto picks the state by key from a menu of them; expert by
key too, the keys listed in the prompt alone (in Neovim and Vim; other editors
show their menu); false goes to the next state, as where no keyword has a
key. true is auto.
- Org's option
org-use-fast-todo-selection- Type
- "auto", "expert", false
- Default
"auto"
org_use_fast_todo_selection = "auto"org_todo_repeat_to_state#
The state a repeating entry returns to when it is done: a keyword, or true
for the state it had.
- Org's option
org-todo-repeat-to-state- Type
- string, true
- Default
- unset: the first keyword of the sequence
Priorities#
org_priority_faces#
Faces for particular priorities, by their letter, written as in
org_todo_keyword_faces: { "A": ":foreground red :weight bold" }.
- Org's option
org-priority-faces- Type
- { [priority]: string }
- Default
{}
org_priority_faces = {}org_priority_enable_commands#
Whether the priority commands work. With false they refuse
(Priority commands are disabled), and S-<up> and S-<down> on a headline
do not change its priority.
- Org's option
org-priority-enable-commands- Type
- boolean
- Default
true
org_priority_enable_commands = trueorg_priority_highest#
The highest priority.
- Org's option
org-priority-highest- Type
- letter, or 0 to 64
- Default
"A"
org_priority_highest = "A"org_priority_lowest#
The lowest priority.
- Org's option
org-priority-lowest- Type
- letter, or 0 to 64
- Default
"C"
org_priority_lowest = "C"org_priority_default#
The priority of an entry without a cookie. A file's #+PRIORITIES: line takes
precedence over the three priority options.
- Org's option
org-priority-default- Type
- letter, or 0 to 64
- Default
"B"
org_priority_default = "B"org_priority_start_cycle_with_default#
Raising or lowering the priority of an entry that has none starts at the default.
- Org's option
org-priority-start-cycle-with-default- Type
- boolean
- Default
true
org_priority_start_cycle_with_default = trueTags and properties#
org_tag_faces#
Faces for particular tags of headlines, written as in
org_todo_keyword_faces: { "work": "orange" }. Shown in Org files (not the
agenda, as in Emacs) by Neovim, Vim and VS Code.
- Org's option
org-tag-faces- Type
- { [tag]: string }
- Default
{}
org_tag_faces = {}org_tags_column#
Where tags are aligned after a change to a headline. Negative: they end at that column.
- Org's option
org-tags-column- Type
- number
- Default
-77
org_tags_column = -77org_use_tag_inheritance#
Which tags entries inherit from their parents and from #+FILETAGS:: true
for all, false for none, a list of tags, or a regexp (Emacs syntax) tags
must match. Inherited tags count in tag searches and show in the agenda.
- Org's option
org-use-tag-inheritance- Type
- boolean, string[], string
- Default
true
org_use_tag_inheritance = trueorg_tags_exclude_from_inheritance#
Tags never inherited, when org_use_tag_inheritance is true or a regexp.
- Org's option
org-tags-exclude-from-inheritance- Type
- string[]
- Default
[]
org_tags_exclude_from_inheritance = []org_use_property_inheritance#
Which properties an entry without them takes from its parents, the file's
property drawer and #+PROPERTY: lines, in property searches
(OWNER="alice"): true for all, false for none, a list of names, or a
regexp (Emacs syntax). CATEGORY and ARCHIVE are always inherited.
- Org's option
org-use-property-inheritance- Type
- boolean, string[], string
- Default
false
org_use_property_inheritance = falseorg_property_separators#
What joins the values of a property with those of its PROPERTY+ lines, and
the inherited ones, instead of a space: [["AUTHOR", "COAUTHOR"], ", "] for
the properties named, ["^TAG", ";"] for those an Emacs regexp matches,
without regard to case. The first that fits counts.
- Org's option
org-property-separators- Type
- [names or regexp, separator][]
- Default
[]
org_property_separators = []org_property_format#
How a property line is written when it is indented (TAB, org.indent) or set:
format's %s for the key with its colons, then the value, with a width
(%-10s pads the key to 10 columns).
- Org's option
org-property-format- Type
- string
- Default
"%-10s %s"
org_property_format = "%-10s %s"org_global_properties#
Properties every entry inherits, after those of #+PROPERTY: lines: chiefly
the allowed values of a property, which setting it offers and S-<right> and
S-<left> go through on its line ({ "Effort_ALL": "0:10 0:30 1:00 2:00" };
:ETC allows others too).
- Org's option
org-global-properties- Type
- { [name]: string }
- Default
{}
org_global_properties = {}org_complete_tags_always_offer_all_agenda_tags#
Completing a tag offers the tags of every agenda file, after those of the file. Off, only the file's own. Setting tags offers them too.
- Org's option
org-complete-tags-always-offer-all-agenda-tags- Type
- boolean
- Default
false
org_complete_tags_always_offer_all_agenda_tags = falseorg_tag_alist#
The tags offered when setting tags in a file without a #+TAGS: line, written
like one: "work(w) home(h) { @office(o) @home(m) } [ GTD : Control Persp ]"
gives work the key w, makes @office and @home exclusive, and groups
Control and Persp under GTD; \n starts a new line. A list of these
words does as well. Unset, the tags used in the file are offered.
- Org's option
org-tag-alist- Type
- string, string[]
- Default
""
org_tag_alist = ""org_tag_persistent_alist#
Tags offered in every file, before those of #+TAGS: or org_tag_alist,
written the same way.
- Org's option
org-tag-persistent-alist- Type
- string, string[]
- Default
""
org_tag_persistent_alist = ""org_group_tags#
A group tag ([ GTD : Control Persp ], { Context : @home @office } in
#+TAGS: or org_tag_alist) in the match string of a tags view stands for
itself and the tags of its group.
- Org's option
org-group-tags- Type
- boolean
- Default
true
org_group_tags = trueorg_use_fast_tag_selection#
Pick tags by key, each key turning its tag on or off until RET: auto when
some tag has a key, true always (keys are given to the tags without one),
false never: the tags are typed instead.
- Org's option
org-use-fast-tag-selection- Type
- true, false, "auto"
- Default
"auto"
org_use_fast_tag_selection = "auto"org_fast_tag_selection_single_key#
In fast tag selection, the first key that changes the tags also ends it.
- Org's option
org-fast-tag-selection-single-key- Type
- boolean
- Default
false
org_fast_tag_selection_single_key = falseorg_tags_sort_function#
Sort the tags of a headline when they are set: alphabetically, or the other way.
- Org's option
org-tags-sort-function- Type
- "string<", "string>"
- Default
- unset: the order they were picked in
org_auto_align_tags#
Align the tags of a headline to org_tags_column when they are set.
- Org's option
org-auto-align-tags- Type
- boolean
- Default
true
org_auto_align_tags = trueorg_tags_match_list_sublevels#
Whether tags matches (agenda, sparse trees) and stuck projects list the
entries below one they list: false passes over its subtree, indented shows
them with a dot for each level below the first.
- Org's option
org-tags-match-list-sublevels- Type
- true, false, "indented"
- Default
true
org_tags_match_list_sublevels = trueLists#
org_list_allow_alphabetical#
Whether a letter may stand for the number of an ordered item (a., B)). A
list of more than 26 items is numbered.
- Org's option
org-list-allow-alphabetical- Type
- boolean
- Default
false
org_list_allow_alphabetical = falseorg_plain_list_ordered_item_terminator#
What ends the number of an ordered item: ".", ")", or true for either.
- Org's option
org-plain-list-ordered-item-terminator- Type
- true, ".", ")"
- Default
true
org_plain_list_ordered_item_terminator = trueorg_list_two_spaces_after_bullet_regexp#
An Emacs regexp: the bullets it matches get two spaces after them when Org writes them (a new item, a bullet changed, a list repaired).
- Org's option
org-list-two-spaces-after-bullet-regexp- Type
- false, string
- Default
false
org_list_two_spaces_after_bullet_regexp = falseorg_list_demote_modify_bullet#
By bullet (-, +, *, 1., 1)), the bullet an item gets when it is
indented: { "+": "-", "-": "+" }.
- Org's option
org-list-demote-modify-bullet- Type
- object
- Default
{}
org_list_demote_modify_bullet = {}org_list_indent_offset#
How many more columns sub-items are indented, past their parent's bullet.
- Org's option
org-list-indent-offset- Type
- integer
- Default
0
org_list_indent_offset = 0org_list_automatic_rules#
checkbox: the statistics cookies are counted again when a box changes, and
colored as done or not. indent: indenting the first item of a list with its
children (M-S-<right>) moves the whole list. A rule left out of the object is
off.
- Org's option
org-list-automatic-rules- Type
- object
- Default
{ "checkbox": true, "indent": true }
org_list_automatic_rules = { checkbox = true, indent = true }org_checkbox_hierarchical_statistics#
A checkbox cookie counts the boxes of the items right below it; false counts
every box further down too, as recursive in a COOKIE_DATA property does.
- Org's option
org-checkbox-hierarchical-statistics- Type
- boolean
- Default
true
org_checkbox_hierarchical_statistics = trueorg_list_use_circular_motion#
Moving to the next item from the last goes to the first, and back; moving the last item down puts it first, the first up puts it last.
- Org's option
org-list-use-circular-motion- Type
- boolean
- Default
false
org_list_use_circular_motion = falseTables#
org_table_number_regexp#
An Emacs regexp: the fields it matches are numbers, and a column mostly of numbers aligns right.
- Org's option
org-table-number-regexp- Type
- string
- Default
- unset: Org's: integers, decimals,
2.4e-08,0x1F,nan,infand their relatives
org_table_number_fraction#
How much of a column's filled fields must be numbers for it to align right.
- Org's option
org-table-number-fraction- Type
- number
- Default
0.5
org_table_number_fraction = 0.5org_table_automatic_realign#
TAB and RET in a table align it before they move; false: only C-c C-c and
the commands that change rows or columns do.
- Org's option
org-table-automatic-realign- Type
- boolean
- Default
true
org_table_automatic_realign = trueorg_table_tab_jumps_over_hlines#
TAB at the end of a row before a horizontal line goes to the row after it;
false: it makes a row before the line.
- Org's option
org-table-tab-jumps-over-hlines- Type
- boolean
- Default
true
org_table_tab_jumps_over_hlines = trueorg_table_shrunk_column_indicator#
What shows at the end of each field of a shrunk column.
- Org's option
org-table-shrunk-column-indicator- Type
- string
- Default
"…"
org_table_shrunk_column_indicator = "…"org_table_formula_constants#
Constants for the table formulas of every file, by name:
{ "c": "299792458." } gives $c. A file's #+CONSTANTS: come first.
- Org's option
org-table-formula-constants- Type
- object
- Default
{}
org_table_formula_constants = {}org_table_relative_ref_may_cross_hline#
Whether a relative reference in a formula (@-1) goes past a horizontal line:
false stops at the field next to it, "error" makes the formula fail.
- Org's option
org-table-relative-ref-may-cross-hline- Type
- true, false, "error"
- Default
true
org_table_relative_ref_may_cross_hline = trueorg_table_formula_create_columns#
A field formula past the last column adds the columns it needs, rather than failing.
- Org's option
org-table-formula-create-columns- Type
- boolean
- Default
false
org_table_formula_create_columns = falseorg_table_duration_custom_format#
How a formula with ;t writes a duration: a number of seconds, minutes, hours
or days, or hours and minutes.
- Org's option
org-table-duration-custom-format- Type
- "seconds", "minutes", "hours", "days", "hh:mm"
- Default
"hours"
org_table_duration_custom_format = "hours"org_table_duration_hour_zero_padding#
Durations of formulas (;T, ;U) have their hours on two digits: 08:32:34
rather than 8:32:34.
- Org's option
org-table-duration-hour-zero-padding- Type
- boolean
- Default
true
org_table_duration_hour_zero_padding = trueorg_calc_default_modes#
The modes table formulas start with: float_format, ["float", digits],
["fix", decimals] or ["sci", digits], and angle_mode, "deg" or
"rad". A formula's own modes (;f2) win; Calc's other modes are not
offered.
- Org's option
org-calc-default-modes- Type
- object
- Default
{ "float_format": ["float", 8], "angle_mode": "deg" }
org_calc_default_modes = { float_format = ["float", 8], angle_mode = "deg" }org_table_formula_evaluate_inline#
TAB and RET on a field that is a formula (=$1*2, :=...) evaluate it, which
org-lsp refuses (the formula goes in a #+TBLFM: line); false leaves the
field as text.
- Org's option
org-table-formula-evaluate-inline- Type
- boolean
- Default
true
org_table_formula_evaluate_inline = trueorg_table_allow_automatic_line_recalculation#
TAB, RET and C-c C-c on a line marked # recalculate it.
- Org's option
org-table-allow-automatic-line-recalculation- Type
- boolean
- Default
true
org_table_allow_automatic_line_recalculation = trueLinks, IDs and citations#
org_id_method#
How a new ID is made (org.id.create, a link stored by ID, org-roam): a
random UUID, the time in base 36 (org), or the time as org_id_ts_format
writes it (ts).
- Org's option
org-id-method- Type
- "uuid", "org", "ts"
- Default
"uuid"
org_id_method = "uuid"org_id_prefix#
What a new ID starts with, before a colon: "Org" makes Org:….
- Org's option
org-id-prefix- Type
- false, string
- Default
false
org_id_prefix = falseorg_id_ts_format#
How the ts method writes the time, as format-time-string does.
- Org's option
org-id-ts-format- Type
- string
- Default
"%Y%m%dT%H%M%S.%6N"
org_id_ts_format = "%Y%m%dT%H%M%S.%6N"org_id_include_domain#
The org and ts methods end a new ID with @ and the machine's domain.
- Org's option
org-id-include-domain- Type
- boolean
- Default
false
org_id_include_domain = falseorg_id_track_globally#
IDs are looked for in other files than the link's own: those of
org_id_search_archives, org_id_extra_files and org_id_locations_file,
the agenda files, the open ones and org-roam's. Off, an id: link leads only
within its file.
- Org's option
org-id-track-globally- Type
- boolean
- Default
true
org_id_track_globally = trueorg_id_search_archives#
IDs are looked for in the archive files of the agenda files too.
- Org's option
org-id-search-archives- Type
- boolean
- Default
true
org_id_search_archives = trueorg_id_extra_files#
More files to look for IDs in: paths or glob patterns.
- Org's option
org-id-extra-files- Type
- string[]
- Default
- unset:
org_agenda_text_search_extra_files
org_id_locations_file#
The file where Emacs keeps the files it found IDs in: org-lsp looks in them too, and never writes it. Names in it that are not absolute are relative to its directory.
- Org's option
org-id-locations-file- Type
- string
- Default
"~/.emacs.d/.org-id-locations"
org_id_locations_file = "~/.emacs.d/.org-id-locations"org_id_completion_targets#
The headlines an id: link completes to (org.link.insert), as
org_refile_targets names them: by default every headline of the file and of
the files with IDs.
- Org's option
org-id-completion-targets- Type
- object[]
- Default
[{ "files": "current", "all": true }, { "files": "org-id-files", "all": true }]
org_id_completion_targets = [{ files = "current", all = true }, { files = "org-id-files", all = true }]org_link_search_must_match_exact_headline#
What a link to a headline that is not there does: "query-to-create" asks
whether to make it, at the end of the file, when the link is followed
(org.open); true is an error; false looks for its words in the text.
- Org's option
org-link-search-must-match-exact-headline- Type
- boolean, "query-to-create"
- Default
"query-to-create"
org_link_search_must_match_exact_headline = "query-to-create"org_link_doi_server_url#
What a doi: link is opened at: this, then the DOI.
- Org's option
org-link-doi-server-url- Type
- string
- Default
"https://doi.org/"
org_link_doi_server_url = "https://doi.org/"org_link_shell_skip_confirm_regexp#
An Emacs regexp: a shell: link whose command it matches runs when followed
without asking Execute … in shell? first. Empty asks for every command.
- Org's option
org-link-shell-skip-confirm-regexp- Type
- string
- Default
""
org_link_shell_skip_confirm_regexp = ""org_id_link_to_org_use_id#
Whether org.link.store (C-c l) links to an entry by its ID: true makes
one when the entry has none, "create-if-interactive" only from the command
(not for capture's %a), "create-if-interactive-and-no-custom-id" likewise
unless the entry has a CUSTOM_ID, "use-existing" only when it has one
already. Off, the link searches for the headline.
- Org's option
org-id-link-to-org-use-id- Type
- boolean, string
- Default
false
org_id_link_to_org_use_id = falseorg_link_context_for_files#
Links to a place in a file search for it (file:notes.org::*Heading); C-u
turns it around for one link.
- Org's option
org-link-context-for-files- Type
- boolean
- Default
true
org_link_context_for_files = trueorg_id_link_use_context#
ID links to a place below the entry's headline search for it as well
(id:…::name).
- Org's option
org-id-link-use-context- Type
- boolean
- Default
true
org_id_link_use_context = trueorg_id_link_consider_parent_id#
An ID link may use the ID of a parent entry, with a search for the place.
- Org's option
org-id-link-consider-parent-id- Type
- boolean
- Default
false
org_id_link_consider_parent_id = falseorg_link_file_path_type#
How links to files write the path: "adaptive" relative below the file's
directory and absolute elsewhere, "absolute" (with ~), "noabbrev"
(without), "relative".
- Org's option
org-link-file-path-type- Type
- string
- Default
"adaptive"
org_link_file_path_type = "adaptive"org_link_keep_stored_after_insertion#
Stored links stay stored once inserted.
- Org's option
org-link-keep-stored-after-insertion- Type
- boolean
- Default
false
org_link_keep_stored_after_insertion = falseorg_cite_global_bibliography#
Bibliography files for the citations of every document ([cite:@key]), after
those its #+BIBLIOGRAPHY: lines name: BibTeX (.bib, .bibtex) or CSL-JSON
(.json). Their entries are completed after @, shown over a key, and where
following a key goes; a key none has is marked.
- Org's option
org-cite-global-bibliography- Type
- string[]
- Default
[]
org_cite_global_bibliography = []org_cite_insert_processor#
The citation processor org.cite.insert inserts with: basic, as Org's own
does; Org's other processors cannot insert, and those of packages (citar) are
not run; false for none.
- Org's option
org-cite-insert-processor- Type
- string, false
- Default
"basic"
org_cite_insert_processor = "basic"org_bibtex_autogen_keys#
Whether org.bibtex.create and org.bibtex.check make the key of a new
BibTeX entry from its author, year and title, as bibtex-generate-autokey
makes it (through Emacs), instead of asking for it (id).
- Org's option
org-bibtex-autogen-keys- Type
- boolean
- Default
false
org_bibtex_autogen_keys = falseorg_bibtex_prefix#
What the names of the properties the BibTeX commands write start with (BIB_
gives BIB_AUTHOR), but for the key's; they read the names with it and
without.
- Org's option
org-bibtex-prefix- Type
- string
- Default
- unset: none
org_bibtex_treat_headline_as_title#
A headline without a TITLE property is the title of its BibTeX entry, and
org.bibtex.check does not ask for one.
- Org's option
org-bibtex-treat-headline-as-title- Type
- boolean
- Default
true
org_bibtex_treat_headline_as_title = trueorg_bibtex_export_arbitrary_fields#
With org_bibtex_prefix, every property whose name has the prefix is a field
of the entry exported (org.bibtex.export, org.bibtex.copy), not only those
of its type.
- Org's option
org-bibtex-export-arbitrary-fields- Type
- boolean
- Default
false
org_bibtex_export_arbitrary_fields = falseorg_bibtex_key_property#
The property that holds an entry's BibTeX key. ID makes the key a global ID.
- Org's option
org-bibtex-key-property- Type
- string
- Default
"CUSTOM_ID"
org_bibtex_key_property = "CUSTOM_ID"org_bibtex_tags#
Tags given to the entries the BibTeX commands make.
- Org's option
org-bibtex-tags- Type
- string[]
- Default
[]
org_bibtex_tags = []org_bibtex_tags_are_keywords#
The keywords field of an entry read is its tags (spaces as _, other
characters a tag cannot have left out), and an entry's own tags are its
keywords when exported, but for those of org_bibtex_tags and
org_bibtex_no_export_tags.
- Org's option
org-bibtex-tags-are-keywords- Type
- boolean
- Default
false
org_bibtex_tags_are_keywords = falseorg_bibtex_no_export_tags#
Tags that are not exported as keywords, with org_bibtex_tags_are_keywords.
- Org's option
org-bibtex-no-export-tags- Type
- string[]
- Default
[]
org_bibtex_no_export_tags = []org_bibtex_inherit_tags#
With org_bibtex_tags_are_keywords, the tags an entry inherits are keywords
too.
- Org's option
org-bibtex-inherit-tags- Type
- boolean
- Default
false
org_bibtex_inherit_tags = falseorg_bibtex_type_property_name#
The property that holds an entry's BibTeX type (article); a headline without
it is no entry.
- Org's option
org-bibtex-type-property-name- Type
- string
- Default
"btype"
org_bibtex_type_property_name = "btype"org_link_abbrev_alist#
Link abbreviations: [[gh:org-lsp]] with { "gh": "https://github.com/%s" }
follows https://github.com/org-lsp. %s stands for what follows the colon,
%h for it URL-encoded; without either it goes at the end. A file's #+LINK:
lines come first. %(my-function) calls an Emacs function with what follows
the colon (through Emacs), one emacs_config marks safe, as Org asks:
(put 'my-function 'org-link-abbrev-safe t).
- Org's option
org-link-abbrev-alist- Type
- { [abbreviation]: string }
- Default
{}
org_link_abbrev_alist = {}org_file_apps#
What opens a linked file, the first entry that matches: a match is an
extension (txt), an Emacs regular expression for the file name (\\.pdf\\'
in JSON; with groups %1, %2... in the command, it matches the file
followed by the link's :: part), directory, remote, system (what
C-u C-u C-c C-o uses), auto-mode (every file the editor can show) or t
(any other file). A command is emacs (the editor), default (the system
entry, else the editor), system or mailcap (the system's application,
through the editor), or a shell command where %s is the file. C-u C-c C-o
opens the file in the editor. A Lisp function is not a command here.
- Org's option
org-file-apps- Type
- [match, command][]
- Default
[["auto-mode", "emacs"], ["directory", "emacs"], ["\\.mm\\'", "default"], ["\\.x?html?\\'", "default"], ["\\.pdf\\'", "default"]]
org_file_apps = [["auto-mode", "emacs"], ["directory", "emacs"], ["\\.mm\\'", "default"], ["\\.x?html?\\'", "default"], ["\\.pdf\\'", "default"]]org_link_descriptive#
Show a link as its description (or its target, when it has none) and hide the
rest: the brackets, and the target of a link with a description. The text is
marked hidden in the highlighting, and editors that can conceal text conceal
it.
- Org's option
org-link-descriptive- Type
- boolean
- Default
true
org_link_descriptive = trueorg_return_follows_link#
RET (org.return) on a link, a timestamp or a citation follows it, as
org.open (C-c C-o) does. In a table RET still moves down.
- Org's option
org-return-follows-link- Type
- boolean
- Default
false
org_return_follows_link = falseDates and times#
org_edit_timestamp_down_means_later#
S-<down> makes a timestamp later and S-<up> earlier, the other way round
from Org's default.
- Org's option
org-edit-timestamp-down-means-later- Type
- boolean
- Default
false
org_edit_timestamp_down_means_later = falseorg_time_stamp_rounding_minutes#
The step in which the minutes of a timestamp change (the second number of Org's option).
- Org's option
org-time-stamp-rounding-minutes- Type
- number
- Default
5
org_time_stamp_rounding_minutes = 5org_read_date_prefer_future#
A date typed without a year or month is the next one to come. With time, a
time that has passed today is tomorrow's.
- Org's option
org-read-date-prefer-future- Type
- boolean, "time"
- Default
true
org_read_date_prefer_future = trueorg_read_date_force_compatible_dates#
A typed year is kept within 1970 to 2037.
- Org's option
org-read-date-force-compatible-dates- Type
- boolean
- Default
true
org_read_date_force_compatible_dates = trueorg_display_custom_times#
Show timestamps in org_timestamp_custom_formats: the date and time inside
the brackets is hidden and the custom form shows in its place, as entities do.
#+STARTUP: customtime turns it on for a file, and C-c C-x C-t
(org.timestamp.overlays.toggle) on and off. Exports through Emacs use them
too; the date prompt shows its answer in Org's own form.
- Org's option
org-display-custom-times- Type
- boolean
- Default
false
org_display_custom_times = falseorg_timestamp_custom_formats#
The formats of org_display_custom_times, as format-time-string reads them
(%d.%m.%Y); brackets around a format are dropped.
- Org's option
org-timestamp-custom-formats- Type
- [date, date with time]
- Default
["%m/%d/%y %a", "%m/%d/%y %a %H:%M"]
org_timestamp_custom_formats = ["%m/%d/%y %a", "%m/%d/%y %a %H:%M"]calendar_months#
How many months the calendar of the date prompt shows: 3 side by side, as Emacs's calendar shows them, the one with the selected day in the middle; or 1, that month alone, for a narrow window, with the answer on a line under the prompt.
- Type
- 1 | 3
- Default
3
calendar_months = 3calendar_week_start_day#
The day the weeks of the date prompt's calendar start on: 1 starts them on Monday.
- Org's option
calendar-week-start-day- Type
- 0 to 6 (0 is Sunday)
- Default
0
calendar_week_start_day = 0org_duration_format#
How durations are written (clock tables, clock lines, efforts): "h:mm" or
"h:mm:ss", or a list of units each with whether it is written when zero
(["d", false]), with perhaps ["special", "h:mm"] (the hours and minutes as
H:MM after the larger units), ["special", "h:mm:ss"], ["special", 2]
(one unit with 2 decimals) and "compact" (no space between units). The units
are those of org_duration_units.
- Org's option
org-duration-format- Type
- "h:mm", "h:mm:ss", or a list
- Default
[["d", false], ["special", "h:mm"]]
org_duration_format = [["d", false], ["special", "h:mm"]]org_duration_units#
The units of durations and the minutes in each, for reading efforts and
writing durations: ["d", 480] for days of 8 hours.
- Org's option
org-duration-units- Type
- [unit, minutes][]
- Default
[["min", 1], ["h", 60], ["d", 1440], ["w", 10080], ["m", 43200], ["y", 525960]]
org_duration_units = [["min", 1], ["h", 60], ["d", 1440], ["w", 10080], ["m", 43200], ["y", 525960]]org_extend_today_until#
The hour before which it is still yesterday: for the agenda's today, the date
prompt with nothing to start from, the times capture templates put in and the
day of a datetree, .+ and ++ repeaters, clock report ranges and
org-journal's new entries.
- Org's option
org-extend-today-until- Type
- number
- Default
0
org_extend_today_until = 0org_use_effective_time#
Before the hour org_extend_today_until, a TODO change records 23:59 of the
day before: in CLOSED:, LAST_REPEAT and the notes' timestamps.
org.todo.yesterday does so at any hour.
- Org's option
org-use-effective-time- Type
- boolean
- Default
false
org_use_effective_time = falseorg_use_last_clock_out_time_as_effective_time#
A TODO change records the end of the first closed clock of the subtree instead
of the time now, when there is one; this comes before
org_use_effective_time.
- Org's option
org-use-last-clock-out-time-as-effective-time- Type
- boolean
- Default
false
org_use_last_clock_out_time_as_effective_time = falseCapture, refile and archive#
org_refile_targets#
Where entries can be refiled to. Each entry has files: current (the
entry's own file), agenda, org-id-files (the files with IDs), a path or a
list of paths; and one of level, maxlevel, tag, todo, regexp (the
Rust regex crate's syntax) or all (true), which says which headlines there
are targets.
- Org's option
org-refile-targets- Type
- object[]
- Default
[{ "files": "current", "level": 1 }]
org_refile_targets = [{ files = "current", level = 1 }]org_refile_use_outline_path#
Name targets by their outline path (Projects/Alpha/). The three names start
the path with the file, and offer the file itself, for its top level.
- Org's option
org-refile-use-outline-path- Type
- boolean, "file", "full-file-path", "title"
- Default
false
org_refile_use_outline_path = falseorg_refile_active_region_within_subtree#
A selection that is not whole subtrees is refiled too: its first line becomes
a headline first (org-toggle-heading, run by Emacs), a level below the entry
it is in.
- Org's option
org-refile-active-region-within-subtree- Type
- boolean
- Default
false
org_refile_active_region_within_subtree = falseorg_refile_allow_creating_parent_nodes#
A target that is not there yet can be named after an existing one,
Projects/New: it is made, as the last child of Projects, and the entry
goes under it. confirm asks first.
- Org's option
org-refile-allow-creating-parent-nodes- Type
- boolean, "confirm"
- Default
false
org_refile_allow_creating_parent_nodes = falseorg_refile_target_verify_function#
The name of an Emacs Lisp function that decides which headlines are refile targets: the server's Emacs calls it at the start of each, and keeps those it says yes to. Where it leaves the point, the search goes on: a function can skip a subtree.
- Org's option
org-refile-target-verify-function- Type
- string
- Default
- unset: none
org_reverse_note_order#
A refiled entry goes first under its target, not last.
- Org's option
org-reverse-note-order- Type
- boolean
- Default
false
org_reverse_note_order = falseorg_archive_location#
Where archived subtrees go: a file, ::, and a headline under which they go
(they go to the end of the file without one). %s is the name of the file the
subtree is in; an empty file part is that file. datetree/ as the headline
files them under year, month and day, by when they were closed. An ARCHIVE
property of the entry or a parent, or a #+ARCHIVE: line, says otherwise.
- Org's option
org-archive-location- Type
- string
- Default
"%s_archive::"
org_archive_location = "%s_archive::"org_archive_reversed_order#
An archived subtree goes first under its archive headline, not last.
- Org's option
org-archive-reversed-order- Type
- boolean
- Default
false
org_archive_reversed_order = falseorg_archive_mark_done#
Mark archived entries done: true for the first done keyword, or the keyword
to use.
- Org's option
org-archive-mark-done- Type
- boolean, string
- Default
false
org_archive_mark_done = falseorg_archive_subtree_add_inherited_tags#
Give an archived subtree the tags it inherited: always, never, or when it stays in its file.
- Org's option
org-archive-subtree-add-inherited-tags- Type
- boolean, "infile"
- Default
"infile"
org_archive_subtree_add_inherited_tags = "infile"org_archive_save_context_info#
What an archived entry keeps as ARCHIVE_… properties: time, file,
olpath (its outline path), category, todo, itags (inherited tags),
ltags (its own tags) and olid (its parent's ID).
- Org's option
org-archive-save-context-info- Type
- string[]
- Default
["time", "file", "olpath", "category", "todo", "itags"]
org_archive_save_context_info = ["time", "file", "olpath", "category", "todo", "itags"]org_archive_sibling_heading#
The headline of the sibling org.archive.sibling archives under.
- Org's option
org-archive-sibling-heading- Type
- string
- Default
"Archive"
org_archive_sibling_heading = "Archive"org_archive_file_header_format#
What a new archive file starts with; %s is the path of the file the subtree
came from.
- Org's option
org-archive-file-header-format- Type
- string, false
- Default
"\nArchived entries from file %s\n\n"
org_archive_file_header_format = "\nArchived entries from file %s\n\n"org_archive_default_command#
What org.archive.default does: archive the subtree, archive it under its
sibling, or tag it.
- Org's option
org-archive-default-command- Type
- "subtree", "sibling", "tag"
- Default
"subtree"
org_archive_default_command = "subtree"org_archive_subtree_save_file_p#
Whether the archive file is saved once a subtree goes there: always (true),
when archiving from an Org file (from-org), from the agenda (from-agenda),
or never (false). Unsaved, it is left with its changes in the editor, as
auto_save does not save it.
- Org's option
org-archive-subtree-save-file-p- Type
- boolean, "from-org", "from-agenda"
- Default
"from-org"
org_archive_subtree_save_file_p = "from-org"org_capture_use_agenda_date#
Capturing from the agenda takes the day of the line the cursor is on, at
midnight (or the hour of org_extend_today_until), for %t, %U and the
like and for the date of a date tree, which a time_prompt template then does
not ask for.
- Org's option
org-capture-use-agenda-date- Type
- boolean
- Default
false
org_capture_use_agenda_date = falseorg_capture_templates_contexts#
Where templates are offered. Each has the key of a template, contexts,
rules such as { "in_file": "work" } (in_file, in_mode, in_buffer,
not_in_file, not_in_mode or not_in_buffer, each with a regexp of the
regex crate's syntax, matched ignoring case), and maybe use, the key of
the template it stands for there. A template with contexts is offered only
where one of their rules holds. The mode is org-mode in an Org file and
org-agenda-mode in the agenda, where there is no file; the buffer's name is
the file's.
- Org's option
org-capture-templates-contexts- Type
- object[]
- Default
[]
org_capture_templates_contexts = []org_capture_templates#
Capture templates. Each has a key, a description, a type (entry, the
default, plain, item, checkitem or table-line), a target and a
template (text, or a list of lines), and may have prepend, empty_lines,
empty_lines_before, empty_lines_after, immediate_finish, tree_type,
time_prompt, table_line_pos, clock_in, clock_keep, clock_resume,
jump_to_captured and unnarrowed. The target is a list: file and a path;
file+headline, a path and a headline; file+olp, a path and the headlines
of an outline path; file+regexp, a path and a regular expression;
file+olp+datetree, a path and the headlines of an outline path, maybe none,
for a date tree under them; id and an ID; clock, the entry clocked now;
file+function, a path and the name of an Emacs Lisp function that moves the
point there, or function and the name of one that visits the file too (run
by the server's Emacs). An empty path is org_default_notes_file, and without
a target the entry goes at the end of org_default_notes_file. A template
with only a key and a description groups the templates whose keys start with
its key.
- Org's option
org-capture-templates- Type
- object[]
- Default
[{ "key": "t", "description": "Task", "target": ["file+headline", "", "Tasks"], "template": "* TODO %?\n %u\n %a" }]
org_capture_templates = [{ key = "t", description = "Task", target = ["file+headline", "", "Tasks"], template = "* TODO %?\n %u\n %a" }]org_directory#
Where the relative paths of capture targets are.
- Org's option
org-directory- Type
- string
- Default
"~/org"
org_directory = "~/org"org_default_notes_file#
The target of a capture template whose file is empty.
- Org's option
org-default-notes-file- Type
- string
- Default
"~/.notes"
org_default_notes_file = "~/.notes"org-protocol#
org_protocol_default_template_key#
The keys of the capture template an org-protocol://capture URL uses when it
names none (template=).
- Org's option
org-protocol-default-template-key- Type
- string
- Default
- unset: none: the menu of templates
org_protocol_data_separator#
An Emacs regular expression: what separates the parts of an old-style
org-protocol URL (org-protocol://capture:/x/URL/TITLE/BODY).
- Org's option
org-protocol-data-separator- Type
- string
- Default
"/+\\|\\?"
org_protocol_data_separator = "/+\\|\\?"org_protocol_project_alist#
Where the files of org-protocol://open-source URLs are on this computer.
Each has a name, the base_url of the pages (with its last slash) and the
working_directory of their files (with its last slash, ~/ for the home
directory), and may have an online_suffix taken off the URL (.html), a
working_suffix put on in its place (.org), and rewrites, pairs of an
Emacs regular expression on the URL, whose first group is taken out of it, and
what goes after it, for a URL whose file is not there. The first whose
base_url the URL has is tried first.
- Org's option
org-protocol-project-alist- Type
- object[]
- Default
[]
org_protocol_project_alist = []org_protocol_editor#
The editor org-lsp protocol starts when no org-lsp runs, as a command line
(code, zed, kitty nvim): it opens org_default_notes_file in it, or the
file of an open-source URL, and the org-lsp that starts there takes the URL,
within two minutes. Read from the shared file only. Without it, a stored link
is kept for the next org-lsp that starts, and a capture fails.
- Type
- string
- Default
- unset: none: a capture waits for an editor with org-lsp
Clocking#
org_clock_into_drawer#
Where CLOCK: lines go: true for the drawer of org_log_into_drawer
(LOGBOOK when that is not a name), the name of a drawer, or false for the
entry itself.
- Org's option
org-clock-into-drawer- Type
- boolean, string
- Default
true
org_clock_into_drawer = trueorg_clock_out_remove_zero_time_clocks#
Clocking out after less than a minute removes the CLOCK: line.
- Org's option
org-clock-out-remove-zero-time-clocks- Type
- boolean
- Default
false
org_clock_out_remove_zero_time_clocks = falseorg_clock_out_when_done#
Marking the clocked entry done stops the clock.
- Org's option
org-clock-out-when-done- Type
- boolean
- Default
true
org_clock_out_when_done = trueorg_clock_display_default_range#
The span whose clocks org.clock.display (C-c C-x C-d) adds up.
- Org's option
org-clock-display-default-range- Type
- "today" | "yesterday" | "thisweek" | "lastweek" | "thismonth" | "lastmonth" | "thisyear" | "lastyear" | "untilnow"
- Default
"thisyear"
org_clock_display_default_range = "thisyear"org_clock_idle_time#
After how many minutes without a message from the editor a clock that runs asks what to do with the idle time: keep it, subtract it (and clock out), or cancel the clock.
- Org's option
org-clock-idle-time- Type
- integer
- Default
- unset: none
org_clock_auto_clock_resolution#
Clocking in first asks about each clock left running in the open and agenda
files, as org.clock.resolve does: when-no-clock-is-running when no clock
runs, true always (the clock that runs too), false never. A clock found
running when the server starts, or written by hand, is no clock the server
ran: it is asked about.
- Org's option
org-clock-auto-clock-resolution- Type
- boolean, "when-no-clock-is-running"
- Default
"when-no-clock-is-running"
org_clock_auto_clock_resolution = "when-no-clock-is-running"org_clock_resolve_expert#
Ask what to do with a dangling clock or idle time with the keys in the prompt
alone ([jkKtTgGSscCiq]?), without the list of what each one does.
- Org's option
org-clock-resolve-expert- Type
- boolean
- Default
false
org_clock_resolve_expert = falseorg_clock_history_length#
How many entries clocked into the clock history keeps, for org.clock.in with
a count and org.clock.in.last.
- Org's option
org-clock-history-length- Type
- integer
- Default
5
org_clock_history_length = 5org_clock_in_resume#
Clocking into an entry whose CLOCK: line was left without an end goes on
with that clock, from when it started, rather than starting a new line.
- Org's option
org-clock-in-resume- Type
- boolean
- Default
false
org_clock_in_resume = falseorg_clock_persist#
Keep the running clock and the clock history when the server stops, and take
them back when it starts: true both, clock the running clock alone,
history the history alone (what C-u C-c C-x C-i offers). The running clock
runs again if its CLOCK: line is still open. They are kept in Emacs's own
file, in its form, so Emacs and org-lsp take the clock from each other.
- Org's option
org-clock-persist- Type
- boolean, "clock", "history"
- Default
false
org_clock_persist = falseorg_clock_persist_file#
The file org_clock_persist keeps the clock in: Emacs's, org-clock-save.el
in its directory.
- Org's option
org-clock-persist-file- Type
- string
- Default
"~/.emacs.d/org-clock-save.el"
org_clock_persist_file = "~/.emacs.d/org-clock-save.el"org_clock_persist_query_resume#
Ask before the clock the last session kept runs again (Resume clock (…)?).
- Org's option
org-clock-persist-query-resume- Type
- boolean
- Default
true
org_clock_persist_query_resume = trueorg_clock_goto_may_find_recent_task#
With no clock running, org.clock.goto goes to the entry clocked last. With
false, it says No active or recent clock task.
- Org's option
org-clock-goto-may-find-recent-task- Type
- boolean
- Default
true
org_clock_goto_may_find_recent_task = trueorg_clock_clocktable_default_properties#
The parameters a new clock table gets on its #+BEGIN: line from
org.clock.report (C-c C-x C-r), after :scope, as Emacs Lisp reads them
(:maxlevel 3 :link t).
- Org's option
org-clock-clocktable-default-properties- Type
- string
- Default
":maxlevel 2"
org_clock_clocktable_default_properties = ":maxlevel 2"org_clocktable_defaults#
The parameters every clock table has unless its #+BEGIN: line gives them, as
Emacs Lisp reads them. Set, it replaces Org's whole list.
- Org's option
org-clocktable-defaults- Type
- string
- Default
- unset: Org's:
:maxlevel 2 :lang "en" :scope file :narrow 40! :indent t, the othersnil
org_clock_clocktable_language_setup#
The words of a clock table in each language its :lang names: the language,
then its words for File, L, Timestamp, Headline, Time, ALL,
Total time, File time and Clock summary at. A word left out stays
English. Set, it replaces Org's languages.
- Org's option
org-clock-clocktable-language-setup- Type
- string[][]
- Default
- unset: Org's:
en,de,es,fr,nl,nn,pl,pt-BRandsk
org_clock_report_include_clocking_task#
A clock table counts the time of the clock that runs, for its entry, when the
table covers a time (:block, :tstart and :tend) and the clock started
within it.
- Org's option
org-clock-report-include-clocking-task- Type
- boolean
- Default
false
org_clock_report_include_clocking_task = falseorg_clock_rounding_minutes#
Clocking in and out happens at the multiple of this many minutes nearest now; a clock never starts later than now. Below 1, at the minute.
- Org's option
org-clock-rounding-minutes- Type
- number
- Default
0
org_clock_rounding_minutes = 0org_clock_continuously#
A clock starts when the last one stopped, not now.
- Org's option
org-clock-continuously- Type
- boolean
- Default
false
org_clock_continuously = falseorg_clock_total_time_cell_format#
How a clock table writes its total time and the words before it; %s is the
text.
- Org's option
org-clock-total-time-cell-format- Type
- string
- Default
"*%s*"
org_clock_total_time_cell_format = "*%s*"org_clock_file_time_cell_format#
How a clock table over several files writes the words before a file's time;
%s is the text.
- Org's option
org-clock-file-time-cell-format- Type
- string
- Default
"*%s*"
org_clock_file_time_cell_format = "*%s*"org_clock_in_switch_to_state#
The TODO state an entry is put in when the clock starts on it (NEXT), unless
it has it already.
- Org's option
org-clock-in-switch-to-state- Type
- string
- Default
- unset: none
org_clock_out_switch_to_state#
The TODO state an entry is put in when the clock stops on it.
- Org's option
org-clock-out-switch-to-state- Type
- string
- Default
- unset: none
org_agenda_clockreport_parameter_plist#
The parameters of the clock report's table, as those of a clock table block
(:maxlevel 3 :tags t); :block, :tstart, :tend and :scope are the
agenda's.
- Org's option
org-agenda-clockreport-parameter-plist- Type
- string
- Default
":link t :maxlevel 2"
org_agenda_clockreport_parameter_plist = ":link t :maxlevel 2"org_agenda_clock_report_header#
Text on a line of its own (or lines) before the clock report.
- Org's option
org-agenda-clock-report-header- Type
- string
- Default
- unset: none
Habits#
org_modules#
Org modules to load. org-habit turns habits on: entries with the STYLE
property habit and a scheduled date with a repeater (.+2d, .+2d/4d for a
deadline too) show in the agenda with a graph of the days they were done.
ol-man makes [[man:ls]] a link to a man page (org_man_command).
org-ctags follows links to the tags of a TAGS file, as loading it and
calling org-ctags-enable does (org_ctags_open_link_functions). Others are
ignored.
- Org's option
org-modules- Type
- string[]
- Default
[]
org_modules = []org_habit_graph_column#
The column the consistency graph of a habit starts at in the agenda.
- Org's option
org-habit-graph-column- Type
- number
- Default
40
org_habit_graph_column = 40org_habit_preceding_days#
How many days before today a habit's graph shows.
- Org's option
org-habit-preceding-days- Type
- number
- Default
21
org_habit_preceding_days = 21org_habit_following_days#
How many days after today a habit's graph shows.
- Org's option
org-habit-following-days- Type
- number
- Default
7
org_habit_following_days = 7org_habit_show_habits#
Show habits in the agenda.
- Org's option
org-habit-show-habits- Type
- boolean
- Default
true
org_habit_show_habits = trueorg_habit_show_habits_only_for_today#
Show habits only on today's date, not on future days of the agenda.
- Org's option
org-habit-show-habits-only-for-today- Type
- boolean
- Default
true
org_habit_show_habits_only_for_today = trueorg_habit_show_all_today#
Show every habit today, even those not scheduled for today.
- Org's option
org-habit-show-all-today- Type
- boolean
- Default
false
org_habit_show_all_today = falseorg_habit_today_glyph#
The mark of today in a habit's graph.
- Org's option
org-habit-today-glyph- Type
- string
- Default
"!"
org_habit_today_glyph = "!"org_habit_completed_glyph#
The mark of a day a habit was done in its graph.
- Org's option
org-habit-completed-glyph- Type
- string
- Default
"*"
org_habit_completed_glyph = "*"org_habit_show_done_always_green#
A day a habit was done is green in its graph even when it was done late.
- Org's option
org-habit-show-done-always-green- Type
- boolean
- Default
false
org_habit_show_done_always_green = falseorg_habit_scheduled_past_days#
How many days a habit that is not done keeps showing up.
- Org's option
org-habit-scheduled-past-days- Type
- number
- Default
- unset:
org_scheduled_past_days
The agenda#
org_agenda_files#
Files, directories and glob patterns (*, ?, **) the agenda is built
from. ~/ is the home directory, and a directory stands for the Org files
directly in it. When empty, the agenda is built from the Org files under the
workspace folders (hidden directories, node_modules and target left out),
or else from the Org files that are open.
- Org's option
org-agenda-files- Type
- string[]
- Default
[]
org_agenda_files = []org_agenda_file_regexp#
Which files of a directory in org_agenda_files are agenda files: an Emacs
regular expression their names match, such as \\.txt\\' for the names that
end in .txt.
- Org's option
org-agenda-file-regexp- Type
- string
- Default
- unset: the
.orgfiles whose names do not start with a dot
org_agenda_skip_unavailable_files#
Leave out the files of org_agenda_files that are not there. With false,
opening an agenda view asks about each: r removes it from the list until the
server starts again, anything else aborts.
- Org's option
org-agenda-skip-unavailable-files- Type
- boolean
- Default
false
org_agenda_skip_unavailable_files = falseorg_agenda_dim_blocked_tasks#
Dim the tasks of the agenda and the TODO list that their dependencies keep
from being done (with org_enforce_todo_dependencies or
org_enforce_todo_checkbox_dependencies); invisible leaves them out
instead, except those blocked by checkboxes, which stay dimmed.
- Org's option
org-agenda-dim-blocked-tasks- Type
- true, false, "invisible"
- Default
true
org_agenda_dim_blocked_tasks = trueorg_agenda_jump_prefer_future#
How the agenda's j (org.agenda.goto.date) reads a date typed without a
year or month, as org_read_date_prefer_future does for every other prompt.
- Org's option
org-agenda-jump-prefer-future- Type
- boolean, "time"
- Default
- unset: as
org_read_date_prefer_future
org_agenda_span#
How much time the agenda shows.
- Org's option
org-agenda-span- Type
- "day", "week", "fortnight", "month", "year", or a number of days
- Default
"week"
org_agenda_span = "week"org_agenda_start_on_weekday#
The day a week or fortnight starts on; false starts it today.
- Org's option
org-agenda-start-on-weekday- Type
- 0 to 6 (0 is Sunday), or false
- Default
1
org_agenda_start_on_weekday = 1org_deadline_warning_days#
How many days before a deadline it shows up.
- Org's option
org-deadline-warning-days- Type
- number
- Default
14
org_deadline_warning_days = 14org_scheduled_delay_days#
How many days after its date a scheduled entry shows up.
- Org's option
org-scheduled-delay-days- Type
- number
- Default
0
org_scheduled_delay_days = 0org_scheduled_past_days#
How many days a scheduled entry that is not done keeps showing up.
- Org's option
org-scheduled-past-days- Type
- number
- Default
10000
org_scheduled_past_days = 10000org_deadline_past_days#
How many days a missed deadline keeps showing up.
- Org's option
org-deadline-past-days- Type
- number
- Default
10000
org_deadline_past_days = 10000org_agenda_skip_scheduled_if_done#
Leave out scheduled entries that are done.
- Org's option
org-agenda-skip-scheduled-if-done- Type
- boolean
- Default
false
org_agenda_skip_scheduled_if_done = falseorg_agenda_skip_deadline_if_done#
Leave out deadlines of entries that are done.
- Org's option
org-agenda-skip-deadline-if-done- Type
- boolean
- Default
false
org_agenda_skip_deadline_if_done = falseorg_agenda_skip_timestamp_if_done#
Leave out timestamps of entries that are done.
- Org's option
org-agenda-skip-timestamp-if-done- Type
- boolean
- Default
false
org_agenda_skip_timestamp_if_done = falseorg_agenda_time_leading_zero#
Write times with two digits for the hour (08:00).
- Org's option
org-agenda-time-leading-zero- Type
- boolean
- Default
false
org_agenda_time_leading_zero = falseorg_agenda_timegrid_use_ampm#
Write the times of the agenda, the time grid's too, in 12-hour form
(8:00am).
- Org's option
org-agenda-timegrid-use-ampm- Type
- boolean
- Default
false
org_agenda_timegrid_use_ampm = falseorg_agenda_search_headline_for_time#
Take a time in a headline (Call at 15:00) as the time of its entry.
- Org's option
org-agenda-search-headline-for-time- Type
- boolean
- Default
true
org_agenda_search_headline_for_time = trueorg_agenda_remove_times_when_in_prefix#
Take a time out of the headline when the prefix shows it; beg only one at
the start of the headline.
- Org's option
org-agenda-remove-times-when-in-prefix- Type
- boolean, "beg"
- Default
true
org_agenda_remove_times_when_in_prefix = trueorg_agenda_default_appointment_duration#
Minutes an entry with a start time and no end time lasts: the agenda shows it as a range.
- Org's option
org-agenda-default-appointment-duration- Type
- integer
- Default
- unset: none
org_agenda_remove_timeranges_from_blocks#
Take a date range out of the headline of its lines.
- Org's option
org-agenda-remove-timeranges-from-blocks- Type
- boolean
- Default
false
org_agenda_remove_timeranges_from_blocks = falseorg_agenda_diary_sexp_prefix#
A regexp (Emacs's syntax): what it matches of a diary sexp's text goes in
front of the line, as a scheduled date's Scheduled: does.
- Org's option
org-agenda-diary-sexp-prefix- Type
- string
- Default
- unset: none
org_agenda_show_inherited_tags#
Show the inherited tags of an entry on its agenda lines: where
org_agenda_use_tag_inheritance has them (true), always, never (false),
or in these kinds of views (agenda, todo, search). Sorting by tag and
org_agenda_max_tags go by the tags a line shows.
- Org's option
org-agenda-show-inherited-tags- Type
- boolean, "always", string[]
- Default
true
org_agenda_show_inherited_tags = trueorg_agenda_use_tag_inheritance#
The kinds of views whose lines have inherited tags (true: all). Tags matches
always have them.
- Org's option
org-agenda-use-tag-inheritance- Type
- boolean, string[]
- Default
["todo", "search", "agenda"]
org_agenda_use_tag_inheritance = ["todo", "search", "agenda"]org_agenda_hide_tags_regexp#
A regexp (Emacs's syntax): the tags it matches are not shown on agenda lines, but filters still see them.
- Org's option
org-agenda-hide-tags-regexp- Type
- string
- Default
- unset: none
org_agenda_include_deadlines#
Show deadlines in the agenda.
- Org's option
org-agenda-include-deadlines- Type
- boolean
- Default
true
org_agenda_include_deadlines = trueorg_agenda_skip_additional_timestamps_same_entry#
Once a timestamp of an entry has made a line for a day, leave out its other timestamps on that day.
- Org's option
org-agenda-skip-additional-timestamps-same-entry- Type
- boolean
- Default
false
org_agenda_skip_additional_timestamps_same_entry = falseorg_agenda_fontify_priorities#
Highlight the priority cookies of agenda lines (cookies), or each line from
its cookie on (true; links and tags keep their own look); the highest
priority shows in bold, the lowest in italic. false highlights none. Org's
list of faces by priority is not read here: org_priority_faces gives them.
- Org's option
org-agenda-fontify-priorities- Type
- boolean, "cookies"
- Default
"cookies"
org_agenda_fontify_priorities = "cookies"org_agenda_prefer_last_repeat#
Show a repeating scheduled date, deadline or timestamp at its last repeat up
to today instead of its base date, for every entry (true) or for those with
one of these TODO keywords.
- Org's option
org-agenda-prefer-last-repeat- Type
- boolean, string[]
- Default
false
org_agenda_prefer_last_repeat = falseorg_agenda_skip_deadline_prewarning_if_scheduled#
For a scheduled entry, show its deadline only on its date (true), not before
its scheduled date (pre-scheduled), or from N days before it (a number).
- Org's option
org-agenda-skip-deadline-prewarning-if-scheduled- Type
- boolean, "pre-scheduled", number
- Default
false
org_agenda_skip_deadline_prewarning_if_scheduled = falseorg_agenda_skip_scheduled_delay_if_deadline#
For an entry with a deadline, drop the delay of its scheduled date (--2d)
(true), or keep it no later than the deadline (post-deadline). A number
drops it too, as Org's code does.
- Org's option
org-agenda-skip-scheduled-delay-if-deadline- Type
- boolean, "post-deadline", number
- Default
false
org_agenda_skip_scheduled_delay_if_deadline = falseorg_agenda_skip_scheduled_if_deadline_is_shown#
Leave out a scheduled date on a day its entry's deadline shows (true), only
when it was scheduled before today (not-today); repeated-after-deadline is
org_agenda_skip_scheduled_repeats_after_deadline. Not for habits.
- Org's option
org-agenda-skip-scheduled-if-deadline-is-shown- Type
- boolean, "not-today", "repeated-after-deadline"
- Default
false
org_agenda_skip_scheduled_if_deadline_is_shown = falseorg_agenda_skip_scheduled_repeats_after_deadline#
Leave out the repeats of a scheduled date that come after the entry's deadline.
- Org's option
org-agenda-skip-scheduled-repeats-after-deadline- Type
- boolean
- Default
false
org_agenda_skip_scheduled_repeats_after_deadline = falseorg_agenda_skip_comment_trees#
Leave out of every view the entries of a commented subtree (COMMENT after
the stars).
- Org's option
org-agenda-skip-comment-trees- Type
- boolean
- Default
true
org_agenda_skip_comment_trees = trueorg_agenda_skip_archived_trees#
Leave out of every view the entries of an archived subtree (tagged ARCHIVE),
unless archives mode (v a) shows them. Org advises leaving it on and using
v a instead.
- Org's option
org-agenda-skip-archived-trees- Type
- boolean
- Default
true
org_agenda_skip_archived_trees = trueorg_agenda_todo_list_sublevels#
Show in the TODO list the TODO entries below another one. Off, the list skips the subtree of each entry it shows or leaves out for a date.
- Org's option
org-agenda-todo-list-sublevels- Type
- boolean
- Default
true
org_agenda_todo_list_sublevels = trueorg_agenda_todo_ignore_with_date#
Leave out of the TODO list the entries with an active timestamp anywhere in their text, scheduled and deadline dates too.
- Org's option
org-agenda-todo-ignore-with-date- Type
- boolean
- Default
false
org_agenda_todo_ignore_with_date = falseorg_agenda_todo_ignore_scheduled#
Leave out of the TODO list the scheduled entries: all of them (true, all),
those scheduled after today (future), today or before (past), or with a
number N, N days from now or later (a negative N: N days ago or before).
- Org's option
org-agenda-todo-ignore-scheduled- Type
- boolean, "future", "past", "all", number
- Default
false
org_agenda_todo_ignore_scheduled = falseorg_agenda_todo_ignore_deadlines#
Leave out of the TODO list the entries with a deadline: in its warning period,
that is, shown in the agenda (true, near), not yet in it (far), all of
them (all), after today (future), today or before (past), or with a
number as for org_agenda_todo_ignore_scheduled.
- Org's option
org-agenda-todo-ignore-deadlines- Type
- boolean, "near", "far", "all", "future", "past", number
- Default
false
org_agenda_todo_ignore_deadlines = falseorg_agenda_todo_ignore_timestamp#
Leave out of the TODO list the entries with an active timestamp that is no
scheduled or deadline date, with the values of
org_agenda_todo_ignore_scheduled.
- Org's option
org-agenda-todo-ignore-timestamp- Type
- boolean, "future", "past", "all", number
- Default
false
org_agenda_todo_ignore_timestamp = falseorg_agenda_todo_ignore_time_comparison_use_seconds#
Compare the dates of the org_agenda_todo_ignore_* settings with now to the
second instead of by day: future is then later than now, and a number counts
seconds.
- Org's option
org-agenda-todo-ignore-time-comparison-use-seconds- Type
- boolean
- Default
false
org_agenda_todo_ignore_time_comparison_use_seconds = falseorg_agenda_tags_todo_honor_ignore_options#
Have the org_agenda_todo_ignore_* settings leave entries out of tags-todo
matches as well.
- Org's option
org-agenda-tags-todo-honor-ignore-options- Type
- boolean
- Default
false
org_agenda_tags_todo_honor_ignore_options = falseorg_agenda_sorting_strategy#
How the lines of a day (agenda), the TODO list (todo), a tags match
(tags, tags-todo too) and a search (search) are ordered: the strategies
in turn, each deciding when the ones before do not. A view without a list
takes agenda's, and without that time-up, category-keep, urgency-down;
one list alone is for every view. time-up~/-down~ the time of day;
timestamp-, scheduled-, deadline-, ts- (active) and tsia- (inactive)
up~/~down the date of that kind (in the TODO list and a tags match, the
entry's); priority- the priority, urgency- the priority with how near or
overdue the date is; effort-, category- (and category-keep, the order
the entries come in), tag- (the last tag), todo-state- (where the keyword
is in the file's list, done ones first), habit-, alpha- (the headline),
stats- (the statistics cookie). user-defined-up and -down call Lisp,
which the server does not run.
- Org's option
org-agenda-sorting-strategy- Type
- { agenda?, todo?, tags?, search? } of string[], or string[]
- Default
{ "agenda": ["habit-down", "time-up", "urgency-down", "category-keep"], "todo": ["urgency-down", "category-keep"], "tags": ["urgency-down", "category-keep"], "search": ["category-keep"] }
org_agenda_sorting_strategy = { agenda = ["habit-down", "time-up", "urgency-down", "category-keep"], todo = ["urgency-down", "category-keep"], tags = ["urgency-down", "category-keep"], search = ["category-keep"] }org_agenda_sort_notime_is_late#
Lines without a time (or without the date a strategy sorts by) come after those with one.
- Org's option
org-agenda-sort-notime-is-late- Type
- boolean
- Default
true
org_agenda_sort_notime_is_late = trueorg_agenda_sort_noeffort_is_high#
Entries without an effort count as having the highest when sorted, filtered or limited by effort.
- Org's option
org-agenda-sort-noeffort-is-high- Type
- boolean
- Default
true
org_agenda_sort_noeffort_is_high = trueorg_agenda_max_entries#
How many entries a day of the agenda, the TODO list, a tags match or a search shows at most: one number for all, or one for each kind of view. Other lines, such as those of the time grid, go as well; with a negative number they stay.
- Org's option
org-agenda-max-entries- Type
- integer, or { agenda?, todo?, tags?, search? } of integers
- Default
- unset: no limit
org_agenda_max_todos#
How many entries with a TODO keyword a view shows at most, the other lines going as well; with a negative number, those stay.
- Org's option
org-agenda-max-todos- Type
- integer, or { agenda?, todo?, tags?, search? } of integers
- Default
- unset: no limit
org_agenda_max_tags#
How many entries with tags a view shows at most, the other lines going as well; with a negative number, those stay.
- Org's option
org-agenda-max-tags- Type
- integer, or { agenda?, todo?, tags?, search? } of integers
- Default
- unset: no limit
org_agenda_max_effort#
The most minutes of effort the entries of a view add up to: entries show while
their efforts, in order, stay within it (an entry without one counts as the
highest, or as -1 with org_agenda_sort_noeffort_is_high off).
- Org's option
org-agenda-max-effort- Type
- integer, or { agenda?, todo?, tags?, search? } of integers
- Default
- unset: no limit
org_agenda_show_future_repeats#
Show the future dates of repeating entries: all of them, none, or only the next.
- Org's option
org-agenda-show-future-repeats- Type
- boolean, "next"
- Default
true
org_agenda_show_future_repeats = trueorg_agenda_show_all_dates#
Show days without entries.
- Org's option
org-agenda-show-all-dates- Type
- boolean
- Default
true
org_agenda_show_all_dates = trueorg_agenda_tags_column#
Where tags are aligned in the agenda: a column (negative: where they end), or
auto for the right edge of the window. With auto, the editors that tell
the server how wide the agenda's window is (Neovim, Vim, Sublime Text) have
the tags there, and the agenda follows the window as it is resized; the others
(VS Code, Zed) have them end at column 80.
- Org's option
org-agenda-tags-column- Type
- number, "auto"
- Default
"auto"
org_agenda_tags_column = "auto"org_agenda_use_time_grid#
Draw the time grid.
- Org's option
org-agenda-use-time-grid- Type
- boolean
- Default
true
org_agenda_use_time_grid = trueorg_agenda_time_grid#
The time grid, as Org writes it: the days that have it (daily: a one-day
agenda; weekly: every day of a longer one; today: today; require-timed:
only days with an entry that has a time; remove-match: no grid line at a
time an entry already has), the times of its lines (800 for 8:00), what
follows a time that has no end time, and the text of a grid line.
- Org's option
org-agenda-time-grid- Type
- [string[], number[], string, string]
- Default
[["daily", "today", "require-timed"], [800, 1000, 1200, 1400, 1600, 1800, 2000], "......", "----------------"]
org_agenda_time_grid = [["daily", "today", "require-timed"], [800, 1000, 1200, 1400, 1600, 1800, 2000], "......", "----------------"]org_agenda_current_time_string#
The text of the line for the current time.
- Org's option
org-agenda-current-time-string- Type
- string
- Default
"now - - - - - - - - - - - - - - - - - - - - - - - - -"
org_agenda_current_time_string = "now - - - - - - - - - - - - - - - - - - - - - - - - -"org_agenda_show_current_time_in_grid#
Show the current time in the grid.
- Org's option
org-agenda-show-current-time-in-grid- Type
- boolean
- Default
true
org_agenda_show_current_time_in_grid = trueorg_agenda_weekend_days#
The days drawn as the weekend (0 is Sunday).
- Org's option
org-agenda-weekend-days- Type
- number[]
- Default
[6, 0]
org_agenda_weekend_days = [6, 0]org_agenda_start_with_log_mode#
Start the agenda in log mode, which shows what was closed and clocked each day
(l toggles it).
- Org's option
org-agenda-start-with-log-mode- Type
- boolean
- Default
false
org_agenda_start_with_log_mode = falseorg_agenda_start_with_clockreport_mode#
Start the agenda with the clock report under it (R toggles it).
- Org's option
org-agenda-start-with-clockreport-mode- Type
- boolean
- Default
false
org_agenda_start_with_clockreport_mode = falseorg_agenda_start_with_archives_mode#
Start the agenda with entries in archived trees (trees; v a toggles it),
or those and the files the agenda files archive to (files; v A).
- Org's option
org-agenda-start-with-archives-mode- Type
- "trees" | "files" | false
- Default
false
org_agenda_start_with_archives_mode = falseorg_agenda_log_mode_items#
What log mode shows: closed entries, clock lines and state changes.
- Org's option
org-agenda-log-mode-items- Type
- string[]
- Default
["closed", "clock"]
org_agenda_log_mode_items = ["closed", "clock"]org_agenda_log_mode_add_notes#
Show the note of a state change or a clock line after the headline in log mode.
- Org's option
org-agenda-log-mode-add-notes- Type
- boolean
- Default
true
org_agenda_log_mode_add_notes = trueorg_agenda_move_date_from_past_immediately_to_today#
Moving a date of the past one day later from the agenda (S-<right>) takes it
to today.
- Org's option
org-agenda-move-date-from-past-immediately-to-today- Type
- boolean
- Default
true
org_agenda_move_date_from_past_immediately_to_today = trueorg_agenda_persistent_marks#
Keep the marks of a bulk action (B) after it (p in its menu toggles this
for one action).
- Org's option
org-agenda-persistent-marks- Type
- boolean
- Default
false
org_agenda_persistent_marks = falseorg_agenda_show_outline_path#
As the cursor moves in the agenda, show where the entry of its line is: the
file's name and the headlines above it (work.org/Projects/Report), in the
echo area or the status bar. With title the file's #+TITLE: comes first
instead of its name.
- Org's option
org-agenda-show-outline-path- Type
- boolean, "title"
- Default
true
org_agenda_show_outline_path = trueorg_agenda_start_with_follow_mode#
Start the agenda in follow mode, which shows the entry of the cursor's line in
another window as the cursor moves (F toggles it).
- Org's option
org-agenda-start-with-follow-mode- Type
- boolean
- Default
false
org_agenda_start_with_follow_mode = falseorg_agenda_start_with_entry_text_mode#
Start the agenda with some text of each entry under its line (E toggles it).
- Org's option
org-agenda-start-with-entry-text-mode- Type
- boolean
- Default
false
org_agenda_start_with_entry_text_mode = falseorg_agenda_entry_text_maxlines#
The most lines of an entry's text E shows.
- Org's option
org-agenda-entry-text-maxlines- Type
- integer
- Default
5
org_agenda_entry_text_maxlines = 5org_agenda_entry_text_leaders#
What each line of an entry's text starts with in the agenda.
- Org's option
org-agenda-entry-text-leaders- Type
- string
- Default
" > "
org_agenda_entry_text_leaders = " > "org_agenda_entry_text_exclude_regexps#
Emacs regexps whose matches are left out of the entry text E shows.
- Org's option
org-agenda-entry-text-exclude-regexps- Type
- string[]
- Default
[]
org_agenda_entry_text_exclude_regexps = []org_agenda_add_entry_text_maxlines#
The most lines of each entry's text written under its line when the agenda is
written to a plain text file (C-x C-w), each after four spaces and >; 0
writes none. The text E shows is not written.
- Org's option
org-agenda-add-entry-text-maxlines- Type
- integer
- Default
0
org_agenda_add_entry_text_maxlines = 0org_agenda_add_entry_text_descriptive_links#
Whether links in the text org_agenda_add_entry_text_maxlines writes show as
their descriptions. In Org 9.8.10 a plain text file has the links as they are
either way, and so does org-lsp.
- Org's option
org-agenda-add-entry-text-descriptive-links- Type
- boolean
- Default
true
org_agenda_add_entry_text_descriptive_links = trueorg_agenda_view_columns_initially#
Show column view (through Emacs) each time an agenda view is made, as
C-c C-x C-c there would.
- Org's option
org-agenda-view-columns-initially- Type
- boolean
- Default
false
org_agenda_view_columns_initially = falseorg_agenda_persistent_filter#
A new agenda view keeps the filters by tag, category, regexp and effort of the agenda still open, rather than starting without them.
- Org's option
org-agenda-persistent-filter- Type
- boolean
- Default
false
org_agenda_persistent_filter = falseorg_agenda_block_separator#
What goes between the blocks of a block agenda: one character repeated across
79 columns, a longer text as it is, or false for nothing. In a block's
settings, the separator above that block.
- Org's option
org-agenda-block-separator- Type
- string | false
- Default
"="
org_agenda_block_separator = "="org_agenda_compact_blocks#
Leave out the separators between blocks and the header over agenda blocks.
- Org's option
org-agenda-compact-blocks- Type
- boolean
- Default
false
org_agenda_compact_blocks = falseagenda_hide_empty_blocks#
Leave out the blocks of a block agenda that show no entries. Not in Org.
- Type
- boolean
- Default
false
agenda_hide_empty_blocks = falseorg_agenda_search_view_always_boolean#
Read every search string of the search view (s) as words that must (+word,
word) or must not (-word) occur, regexps in braces ({regexp}) and
"quoted phrases". Off, it is a phrase whose spaces match any whitespace,
unless its first word starts with +, - or {.
- Org's option
org-agenda-search-view-always-boolean- Type
- boolean
- Default
false
org_agenda_search_view_always_boolean = falseorg_agenda_search_view_force_full_words#
The words of a Boolean search match whole words only, as a search string
starting with : asks.
- Org's option
org-agenda-search-view-force-full-words- Type
- boolean
- Default
false
org_agenda_search_view_force_full_words = falseorg_agenda_search_view_max_outline_level#
The search view shows headlines down to this level, a match below one counting for the headline above: 0 for every level.
- Org's option
org-agenda-search-view-max-outline-level- Type
- number
- Default
0
org_agenda_search_view_max_outline_level = 0org_agenda_text_search_extra_files#
Files the search view (s) searches besides the agenda files, after them, as
org_agenda_files names them. agenda-archives first adds the files the
agenda files archive to. A file listed twice is searched at its last place.
- Org's option
org-agenda-text-search-extra-files- Type
- string[]
- Default
[]
org_agenda_text_search_extra_files = []org_agenda_prefix_format#
What comes before the headline on a line of the agenda (agenda), the TODO
list (todo), tags searches (tags) and text searches (search): %c the
category, %t the time, %s the leader (Scheduled: ~), ~%e the effort,
%l a blank per level, %T the last tag, %b the headlines above
(breadcrumbs), %i the icon (none). A width pads (%-12c on the right,
%12c on the left), .N cuts, %? leaves out an empty field, and a
character before the letter follows a value that is not empty (%-12:c).
%(…) is Emacs Lisp, run by Emacs (the emacs option) on the entry's
headline with category, extra, level … bound, as Org runs it:
%(org-entry-get nil "X"), or a function of emacs_config. Without Emacs it
is empty.
- Org's option
org-agenda-prefix-format- Type
- { agenda?, todo?, tags?, search? }
- Default
{ "agenda": " %i %-12:c%?-12t% s", "todo": " %i %-12:c", "tags": " %i %-12:c", "search": " %i %-12:c" }
org_agenda_prefix_format = { agenda = " %i %-12:c%?-12t% s", todo = " %i %-12:c", tags = " %i %-12:c", search = " %i %-12:c" }org_agenda_todo_keyword_format#
How a TODO keyword is written in the agenda: %-4s pads it to four columns,
so that the titles line up; an empty format leaves keywords out.
- Org's option
org-agenda-todo-keyword-format- Type
- string
- Default
"%-1s"
org_agenda_todo_keyword_format = "%-1s"org_agenda_scheduled_leaders#
The leader of a scheduled entry on its day, and on today when its day has
passed (%d: the days since).
- Org's option
org-agenda-scheduled-leaders- Type
- string[]
- Default
["Scheduled: ", "Sched.%2dx: "]
org_agenda_scheduled_leaders = ["Scheduled: ", "Sched.%2dx: "]org_agenda_deadline_leaders#
The leader of a deadline on its day, on today before it (%d: the days left),
and on today after it (%d: the days since).
- Org's option
org-agenda-deadline-leaders- Type
- string[]
- Default
["Deadline: ", "In %3d d.: ", "%2d d. ago: "]
org_agenda_deadline_leaders = ["Deadline: ", "In %3d d.: ", "%2d d. ago: "]org_agenda_deadline_faces#
The look of a deadline in the agenda by the part of its warning time that has
passed: the first whose part is no more than that, none past the last. The
faces are Org's: org-imminent-deadline (or org-warning),
org-upcoming-deadline, org-upcoming-distant-deadline; any other name is
the plain look.
- Org's option
org-agenda-deadline-faces- Type
- [part, face][]
- Default
[[1, "org-imminent-deadline"], [0.5, "org-upcoming-deadline"], [0, "org-upcoming-distant-deadline"]]
org_agenda_deadline_faces = [[1, "org-imminent-deadline"], [0.5, "org-upcoming-deadline"], [0, "org-upcoming-distant-deadline"]]org_agenda_timerange_leaders#
The leader of a time range within a day, and of a range over days (%d: which
day of it, %d: how many days).
- Org's option
org-agenda-timerange-leaders- Type
- string[]
- Default
["", "(%d/%d): "]
org_agenda_timerange_leaders = ["", "(%d/%d): "]org_agenda_inactive_leader#
What goes before an inactive timestamp's line, when the agenda shows them
([, v [).
- Org's option
org-agenda-inactive-leader- Type
- string
- Default
"["
org_agenda_inactive_leader = "["org_agenda_remove_tags#
Leave the tags out of the agenda's lines; prefix only when the prefix shows
a tag (%T).
- Org's option
org-agenda-remove-tags- Type
- boolean, "prefix"
- Default
false
org_agenda_remove_tags = falseorg_stuck_projects#
What the stuck projects view (#) lists: the projects the match string finds
whose subtree has no entry with one of the TODO keywords (* for any not
done) or tags (* for any), and no match of the regexp.
- Org's option
org-stuck-projects- Type
- [string, string[], string[], string]
- Default
["+LEVEL=2/-DONE", ["TODO", "NEXT", "NEXTACTION"], [], ""]
org_stuck_projects = ["+LEVEL=2/-DONE", ["TODO", "NEXT", "NEXTACTION"], [], ""]org_agenda_breadcrumbs_separator#
What goes between the headlines of %b.
- Org's option
org-agenda-breadcrumbs-separator- Type
- string
- Default
"->"
org_agenda_breadcrumbs_separator = "->"org_agenda_format_date#
How the agenda writes a day, as format-time-string does: %A %d %B %Y,
%a %Y-%m-%d.
- Org's option
org-agenda-format-date- Type
- string
- Default
- unset: as
Wednesday 7 October 2026, the week's number added on Mondays
org_agenda_start_day#
The day the agenda starts from, as the date prompt reads it: -1d, +2d,
2026-10-01.
- Org's option
org-agenda-start-day- Type
- string
- Default
- unset: today
org_agenda_custom_commands_contexts#
Where the commands of org_agenda_custom_commands are offered, as for
org_capture_templates_contexts.
- Org's option
org-agenda-custom-commands-contexts- Type
- object[]
- Default
[]
org_agenda_custom_commands_contexts = []org_agenda_custom_commands#
Commands of the agenda menu. Each has a key and a description, and either
a type (agenda, alltodo, todo, tags or tags-todo) with a match
(keywords such as NEXT|WAIT for todo, a match string such as work-home
or PRIORITY="A" for tags), or blocks, a list of such views shown one
after the other. header replaces a view's header (empty: none), and
settings holds agenda options for the command or a block (org_agenda_span,
org_agenda_start_day …). A command with only a key and a description groups
the commands whose keys start with its key.
- Org's option
org-agenda-custom-commands- Type
- object[]
- Default
[]
org_agenda_custom_commands = []Notifications#
appt_message_warning_time#
How many minutes before an appointment (an entry of today's agenda with a time
of day) its reminders start: one then, and one each appt_display_interval
minutes after, as Emacs's appt.el reminds; an entry's APPT_WARNTIME
property says it for that entry. As org-lsp's own, a list gives the minutes
before the appointment of each reminder: [10, 0] reminds ten minutes before
and when it is due. org-lsp notify reminds this way; through Emacs (Add
today's appointments from the agenda files), a list stands for its largest
number.
- Org's option
appt-message-warning-time- Type
- number, or number[]
- Default
12
appt_message_warning_time = 12appt_display_interval#
Minutes between two reminders of an appointment, from the first,
appt_message_warning_time minutes before it.
- Org's option
appt-display-interval- Type
- number
- Default
3
appt_display_interval = 3notification_use_timestamp_warning#
As org-lsp's own, org-lsp notify also reminds of an appointment from a
deadline or a timestamp as many hours before it as the timestamp's warning
cookie says: once, 60 minutes before <2026-10-22 Thu 21:00 -1h>, besides the
reminders of appt_message_warning_time. A scheduled date's cookie is a delay
and does not count, nor do cookies in days, weeks, months or years. Emacs's
appt.el reads no cookie.
- Type
- boolean
- Default
false
notification_use_timestamp_warning = falsenotification_deadline_summary_time#
The time of day, as HH:MM, at which org-lsp notify lists the deadlines the
day's agenda shows that are not done: those of the day, those whose warning
period has begun, and those past.
- Type
- string
- Default
- unset: no summary
notification_match#
The entries org-lsp notify reminds of: a match string of the tags view, such
as +meeting|+call or -private.
- Type
- string
- Default
- unset: every entry
notification_command#
A program org-lsp notify runs for each notification, and its arguments, in
which %t stands for the title, %b for the text and %% for %:
["ntfy", "publish", "--title", "%t", "mytopic", "%b"]. It runs instead of
the desktop notification, unless notification_desktop is on. No shell reads
it. With a placeholder of an entry (those of notification_title_format), it
runs once for each appointment, with that appointment's title, text and
values.
- Type
- string[]
- Default
- unset: none
notification_title_format#
The title of an appointment's notification from org-lsp notify, in which
%h stands for the headline, %k its TODO keyword, %p its priority, %T
its tags, %c its category, %s and %d its scheduled and deadline
timestamps, %w the appointment's time, %m the minutes left, %e the
effort, %f and %F the file's path and name, %l the headline's line, %a
the line appt.el shows and %% %: "%k %h". Appointments due together
share the first one's.
- Type
- string
- Default
- unset: the mode line of
appt.el, such asAppointment in 10 minutes
notification_body_format#
The text of an appointment's notification from org-lsp notify, with the
placeholders of notification_title_format: "%w %c %T". Appointments due
together have a line each.
- Type
- string
- Default
- unset:
%a, the lineappt.elshows
notification_deadline_line_format#
A line of the deadline summary of org-lsp notify, with the placeholders of
notification_title_format and %D for the agenda's leader (In 3 d.:,
2 d. ago:, Deadline:); there %a is the headline as the agenda shows it.
- Type
- string
- Default
- unset:
%c: %D %a
notification_desktop#
Whether org-lsp notify shows a desktop notification: with notify-send on
Linux and the other Unix systems, terminal-notifier on macOS when it is
installed and osascript otherwise, PowerShell on Windows (BurntToast if it
is installed).
- Type
- boolean
- Default
- unset: on unless
notification_commandis set
notification_icon#
The image of the desktop notifications of org-lsp notify: the path of a PNG
file (~/ for the home directory), or "" for none. Unset, the logo, which
it writes to org-lsp/icon.png in the user's data directory (~/.local/share
on Linux). osascript shows no image: on macOS it takes terminal-notifier.
- Type
- string
- Default
- unset: the org-lsp logo
Display#
org_hide_emphasis_markers#
Hide the markers around *bold*, /italic/, _underline_,
+strike-through+, =verbatim= and ~code~, as for links.
- Org's option
org-hide-emphasis-markers- Type
- boolean
- Default
false
org_hide_emphasis_markers = falseorg_fontify_emphasized_text#
Show *bold*, /italic/, _underline_, +strike-through+, =verbatim= and
~code~ in their looks. With false they look as the text around them, their
markers shown.
- Org's option
org-fontify-emphasized-text- Type
- boolean
- Default
true
org_fontify_emphasized_text = trueorg_emphasis_alist#
The look of each kind of emphasis, by its marker (*, /, _, =, ~,
+): a face of Org's, bold, italic, bold-italic, underline,
org-code or org-verbatim, attributes as Org writes them
(:weight bold :slant italic :underline t :strike-through t), or a list of
them; false for none. As in Emacs, a marker left out has no look. Colors are
not shown.
- Org's option
org-emphasis-alist- Type
- { [marker]: face | face[] | false }
- Default
- unset: Org's:
bold,italic,underline,org-verbatim,org-codeand:strike-through t
org_hidden_keywords#
The keywords hidden before their values, such as #+TITLE: with ["title"],
in editors that conceal text.
- Org's option
org-hidden-keywords- Type
- ("title" | "subtitle" | "author" | "email" | "date")[]
- Default
[]
org_hidden_keywords = []org_hide_macro_markers#
Hide the braces of macro calls, {{{ and }}}, in editors that conceal text.
- Org's option
org-hide-macro-markers- Type
- boolean
- Default
false
org_hide_macro_markers = falseorg_entities_user#
Entities of your own, used as \name: what each is in LaTeX (and whether that
needs math mode), HTML, ASCII, Latin-1 and UTF-8, as
["myarrow", "\\to", true, "→", "->", "->", "→"]. A name is letters
only, and one of Org's own is replaced. The server shows them as
org_pretty_entities says and completes them; Emacs exports them.
- Org's option
org-entities-user- Type
- [name, LaTeX, math?, HTML, ASCII, Latin-1, UTF-8][]
- Default
[]
org_entities_user = []org_pretty_entities#
Show entities (\alpha, \to) as their character (α, →): the entity is
hidden as link brackets are, and its character is an inlay hint in its place.
- Org's option
org-pretty-entities- Type
- boolean
- Default
false
org_pretty_entities = falseorg_pretty_entities_include_sub_superscripts#
With org_pretty_entities, show sub- and superscripts (x^2, H_{2}O,
a_{n}) raised and lowered: in Unicode (x², H₂O, aₙ) where every
character has a raised or lowered form, as an inlay hint in place of the
hidden text; the others are left as they are.
- Org's option
org-pretty-entities-include-sub-superscripts- Type
- boolean
- Default
true
org_pretty_entities_include_sub_superscripts = trueorg_use_sub_superscripts#
Which sub- and superscripts org_pretty_entities shows: all, only those in
braces (a_{b}, "{}"), or none.
- Org's option
org-use-sub-superscripts- Type
- true, "{}" or false
- Default
true
org_use_sub_superscripts = trueorg_startup_folded#
How files show when opened: "overview" (or "fold") only the top headlines,
"content" all the headlines, "show2levels" to "show5levels" the
headlines down to that level, "showeverything" (or "nofold", "showall")
everything. #+STARTUP: decides for a file. Unless everything shows, a
subtree's VISIBILITY property (folded, children, content, all)
decides for it, archived subtrees are folded, and drawers too. Folds hide
whole subtrees, so where Org shows a headline's children but not its text, the
text shows.
- Org's option
org-startup-folded- Type
- string
- Default
"showeverything"
org_startup_folded = "showeverything"org_startup_align_all_tables#
Align every table of a file when it opens (an edit of the file, as in Emacs).
#+STARTUP: align and noalign decide for a file.
- Org's option
org-startup-align-all-tables- Type
- boolean
- Default
false
org_startup_align_all_tables = falseorg_startup_shrink_all_tables#
Shrink the columns of every table that have a width cookie (<10>) when a
file opens. #+STARTUP: shrink decides for a file. Shrunk fields show their
first characters and …, in editors that can hide text.
- Org's option
org-startup-shrink-all-tables- Type
- boolean
- Default
false
org_startup_shrink_all_tables = falseorg_cycle_hide_block_startup#
Fold blocks when a file opens folded (org_startup_folded).
#+STARTUP: hideblocks and nohideblocks decide for a file.
- Org's option
org-cycle-hide-block-startup- Type
- boolean
- Default
false
org_cycle_hide_block_startup = falseorg_cycle_hide_drawer_startup#
Fold drawers when a file opens folded (org_startup_folded).
- Org's option
org-cycle-hide-drawer-startup- Type
- boolean
- Default
true
org_cycle_hide_drawer_startup = trueorg_cycle_open_archived_trees#
Leave archived subtrees open when a file opens folded (org_startup_folded).
- Org's option
org-cycle-open-archived-trees- Type
- boolean
- Default
false
org_cycle_open_archived_trees = falseorg_adapt_indentation#
Indent the lines of an entry past its headline's stars: true for all of
them, "headline-data" for the planning line, drawers and clock lines right
below the headline. Applies to new lines, to re-indenting (range formatting)
and to what commands write.
- Org's option
org-adapt-indentation- Type
- boolean | "headline-data"
- Default
false
org_adapt_indentation = falseorg_image_actual_width#
How wide the image of a link shows: true at its own width; a number, that
many pixels; false or a list of one number, the :width of the paragraph's
#+ATTR_ORG: or else of another #+ATTR_…: (pixels, 50% or a fraction up
to 2 of the text's width, t for its own width), else the list's number. An
entry's ORG-IMAGE-ACTUAL-WIDTH property decides for its own text.
- Org's option
org-image-actual-width- Type
- boolean, number, or [number]
- Default
true
org_image_actual_width = trueorg_image_max_width#
How wide at most an image shown at its own width is: "fill-column", 70
columns; "window", the window's width; an integer, that many pixels; a
float, that part of the window's width; null for no limit.
- Org's option
org-image-max-width- Type
- "fill-column", "window", number, or null
- Default
"fill-column"
org_image_max_width = "fill-column"org_startup_with_link_previews#
Show the images of links to image files in place when a file opens, as
C-c C-x C-v (org.link.preview) shows them. #+STARTUP: inlineimages (or
linkpreviews) and noinlineimages decide for a file. Editors that can show
images: Neovim from 0.13 (vim.ui.img), in a terminal with the Kitty graphics
protocol.
- Org's option
org-startup-with-link-previews- Type
- boolean
- Default
false
org_startup_with_link_previews = falseorg_startup_with_latex_preview#
Show the LaTeX fragments as images when a file opens, as C-c C-x C-l
(org.latex.preview) shows them, made by Emacs. #+STARTUP: latexpreview and
nolatexpreview decide for a file.
- Org's option
org-startup-with-latex-preview- Type
- boolean
- Default
false
org_startup_with_latex_preview = falseorg_startup_indented#
Show files indented by level without changing them (org-indent-mode): the
text under a headline lines up with its title, and leading stars are hidden.
#+STARTUP: indent and noindent decide for a file, and org.indent.mode
turns it on and off. It turns org_adapt_indentation off in such files,
unless that is "headline-data". The lines a long line wraps into go on under
its text, a headline's title or an item's text (wrap-prefix) in Neovim and
Vim, without the prefix; under the prefix in Zed and Helix.
- Org's option
org-startup-indented- Type
- boolean
- Default
false
org_startup_indented = falseorg_startup_numerated#
Number the headlines of files (org-num-mode): 1, 1.1, 1.2~… after the
stars, shown as inlay hints without changing the file. ~#+STARTUP: num and
nonum decide for a file, and org.num.mode turns it on and off.
- Org's option
org-startup-numerated- Type
- boolean
- Default
false
org_startup_numerated = falseorg_hide_leading_stars#
Hide all the stars of a headline but the last; they keep their place.
#+STARTUP: hidestars and showstars decide for a file.
- Org's option
org-hide-leading-stars- Type
- boolean
- Default
false
org_hide_leading_stars = falseorg_indent_mode_turns_on_hiding_stars#
Where org_startup_indented (or #+STARTUP: indent) shows a file indented,
hide the leading stars too, whatever org_hide_leading_stars says.
- Org's option
org-indent-mode-turns-on-hiding-stars- Type
- boolean
- Default
true
org_indent_mode_turns_on_hiding_stars = trueorg_indent_mode_turns_off_org_adapt_indentation#
Where a file shows indented, org_adapt_indentation is off (unless it is
headline-data): new and moved text is not indented to its headline.
- Org's option
org-indent-mode-turns-off-org-adapt-indentation- Type
- boolean
- Default
true
org_indent_mode_turns_off_org_adapt_indentation = trueorg_indent_indentation_per_level#
How many columns a file shown indented moves each level of headlines and their text in; 0 shows them as they are.
- Org's option
org-indent-indentation-per-level- Type
- integer
- Default
2
org_indent_indentation_per_level = 2org_fontify_done_headline#
Show a headline marked done in the look of done headlines past its keyword
(org-headline-done).
- Org's option
org-fontify-done-headline- Type
- boolean
- Default
true
org_fontify_done_headline = trueorg_fontify_todo_headline#
Show a headline marked with a keyword not done in the look of TODO headlines
past its keyword (org-headline-todo, the token modifier todo).
- Org's option
org-fontify-todo-headline- Type
- boolean
- Default
false
org_fontify_todo_headline = falseorg_fontify_quote_and_verse_blocks#
Show the lines inside quote and verse blocks in their own look (org-quote,
org-verse: the token types quote and verse).
- Org's option
org-fontify-quote-and-verse-blocks- Type
- boolean
- Default
false
org_fontify_quote_and_verse_blocks = falseorg_fontify_whole_heading_line#
Show the look of a headline's level past the end of its text, to the edge of
the window: for looks with a background. Editors that can show it: Neovim, Vim
and VS Code (org-lsp/lineHighlights, VS Code's colors
org.headlineLevel1Background and on).
- Org's option
org-fontify-whole-heading-line- Type
- boolean
- Default
false
org_fontify_whole_heading_line = falseorg_ellipsis#
What a closed fold shows after its first line, such as " ▾", in the
highlight group OrgLspEllipsis (Neovim). Editors that can show it: Neovim
and Vim.
- Org's option
org-ellipsis- Type
- string
- Default
- unset: the standard three dots,
...
org_bullets_mode#
org-bullets: the last star of each headline shows as a bullet, those of
org_bullets_bullet_list by level, and the stars before it are hidden, as
with org_hide_leading_stars.
- Org's option
org-bullets-mode- Type
- boolean
- Default
false
org_bullets_mode = falseorg_bullets_bullet_list#
The bullets of org_bullets_mode, one a level, repeating after the last.
- Org's option
org-bullets-bullet-list- Type
- string[]
- Default
["◉", "○", "✸", "✿"]
org_bullets_bullet_list = ["◉", "○", "✸", "✿"]org_bullets_list_bullet#
What org_bullets_mode shows in place of the -, + or * of an item, as
org-bullets.nvim does; false leaves them as they are.
- Type
- false, or a string
- Default
"•"
org_bullets_list_bullet = "•"org_bullets_checkboxes#
What org_bullets_mode shows between the brackets of a checkbox, [ ], [-]
and [X], as org-bullets.nvim does; false leaves them as they are. A state
left out keeps its default.
- Type
- false, or { todo, half, done }
- Default
{ "todo": " ", "half": "-", "done": "✓" }
org_bullets_checkboxes = { todo = " ", half = "-", done = "✓" }Source blocks and tangling#
org_src_lang_modes#
The major mode, without -mode, of a language of source blocks, over Org's
own (elisp → emacs-lisp, sh → sh): { "ipython": "python" }. Neovim
and Vim color the code of a block in the language of its mode
(org-lsp/codeBlocks), by their name for it (emacs-lisp → elisp, sh →
bash); Emacs, where it edits or exports a block, takes it too.
- Org's option
org-src-lang-modes- Type
- { [language]: mode }
- Default
{}
org_src_lang_modes = {}org_src_preserve_indentation#
Leave the code of source blocks as it is indented when re-indenting.
- Org's option
org-src-preserve-indentation- Type
- boolean
- Default
false
org_src_preserve_indentation = falseorg_babel_tangle_lang_exts#
By language, the extension of the file :tangle yes writes its blocks to,
before Org's own (emacs-lisp → el): { "python": "py" }. A language
without one gives its name.
- Org's option
org-babel-tangle-lang-exts- Type
- object
- Default
{}
org_babel_tangle_lang_exts = {}org_babel_tangle_use_relative_file_links#
Whether the link comments of tangled files (:comments link) point back to
the Org file by a relative path; with false by its whole path.
- Org's option
org-babel-tangle-use-relative-file-links- Type
- boolean
- Default
true
org_babel_tangle_use_relative_file_links = trueorg_babel_tangle_comment_format_beg#
The comment before a tangled block (:comments link): %link the link back
to it, %source-name its name, %file the Org file, %start-line the line
its code starts on.
- Org's option
org-babel-tangle-comment-format-beg- Type
- string
- Default
"[[%link][%source-name]]"
org_babel_tangle_comment_format_beg = "[[%link][%source-name]]"org_babel_tangle_comment_format_end#
The comment after a tangled block, with the keys of
org_babel_tangle_comment_format_beg.
- Org's option
org-babel-tangle-comment-format-end- Type
- string
- Default
"%source-name ends here"
org_babel_tangle_comment_format_end = "%source-name ends here"org_babel_tangle_uncomment_comments#
Write the comments of tangled blocks as they are: not commented, and no line break after them.
- Org's option
org-babel-tangle-uncomment-comments- Type
- boolean
- Default
false
org_babel_tangle_uncomment_comments = falseorg_babel_process_comment_text#
The function the Org text of :comments org goes through:
org-remove-indentation takes its common indentation away, identity leaves
it; Emacs tangles with any other.
- Org's option
org-babel-process-comment-text- Type
- string
- Default
"org-remove-indentation"
org_babel_process_comment_text = "org-remove-indentation"org_babel_tangle_default_file_mode#
In octal, the mode a symbolic :tangle-mode (u+x) changes.
- Org's option
org-babel-tangle-default-file-mode- Type
- string
- Default
"644"
org_babel_tangle_default_file_mode = "644"org_babel_tangle_remove_file_before_write#
Whether a file tangling writes again is deleted first: true always (a link
to it becomes a file of its own), false never (a read-only file refuses),
"auto" when it is read-only.
- Org's option
org-babel-tangle-remove-file-before-write- Type
- true, false, "auto"
- Default
"auto"
org_babel_tangle_remove_file_before_write = "auto"org_babel_noweb_wrap_start#
What opens a Noweb reference in a source block (<<name>>).
- Org's option
org-babel-noweb-wrap-start- Type
- string
- Default
"<<"
org_babel_noweb_wrap_start = "<<"org_babel_noweb_wrap_end#
What closes a Noweb reference.
- Org's option
org-babel-noweb-wrap-end- Type
- string
- Default
">>"
org_babel_noweb_wrap_end = ">>"org_src_content_indentation#
How far code is indented past its source block: when re-indenting, and when
the code of a block edited in a file of its own (C-c ') is written back.
Formerly org_edit_src_content_indentation, which is still read.
- Org's option
org-src-content-indentation- Type
- number
- Default
2
org_src_content_indentation = 2org-super-agenda#
org_super_agenda_mode#
org-super-agenda: show the lines of the agenda's views in the groups of
org_super_agenda_groups, each under a header. Off, the groups are not used.
- Org's option
org-super-agenda-mode- Type
- boolean
- Default
false
org_super_agenda_mode = falseorg_super_agenda_groups#
org-super-agenda's groups, in turn taking the lines they select: each an
object of selectors and their arguments in Emacs's order,
{ name = "Today", time-grid = true }, or a list of them in turn; true is
t, false is nil (and for name, none: no header). The lines no group
takes come last, under org_super_agenda_unmatched_name. In a custom
command's settings, the groups of that command or block.
- Org's option
org-super-agenda-groups- Type
- object[]
- Default
[]
org_super_agenda_groups = []org_super_agenda_unmatched_name#
The header of the lines no group takes.
- Org's option
org-super-agenda-unmatched-name- Type
- string
- Default
"Other items"
org_super_agenda_unmatched_name = "Other items"org_super_agenda_unmatched_order#
Where the lines no group takes come among the groups: groups show lowest
order first.
- Org's option
org-super-agenda-unmatched-order- Type
- integer
- Default
99
org_super_agenda_unmatched_order = 99org_super_agenda_header_separator#
What goes before each header: text, or one character repeated across the window, then a newline.
- Org's option
org-super-agenda-header-separator- Type
- string
- Default
"\n"
org_super_agenda_header_separator = "\n"org_super_agenda_header_prefix#
What each header starts with.
- Org's option
org-super-agenda-header-prefix- Type
- string
- Default
" "
org_super_agenda_header_prefix = " "org_super_agenda_final_group_separator#
What goes after the last group: text put at the end of its last line, or one character repeated across the window on a line of its own.
- Org's option
org-super-agenda-final-group-separator- Type
- string
- Default
""
org_super_agenda_final_group_separator = ""org_super_agenda_date_format#
The headers of the groups of auto-planning and auto-ts, as
format-time-string writes dates.
- Org's option
org-super-agenda-date-format- Type
- string
- Default
"%e %B %Y"
org_super_agenda_date_format = "%e %B %Y"org_super_agenda_hide_empty_groups#
Leave out the headers of groups whose lines the agenda's filters all hide.
- Org's option
org-super-agenda-hide-empty-groups- Type
- boolean
- Default
false
org_super_agenda_hide_empty_groups = falseorg_super_agenda_keep_order#
Sort the lines of each group again, as the view sorts its lines: a group of several selectors puts the lines of its first selector first.
- Org's option
org-super-agenda-keep-order- Type
- boolean
- Default
false
org_super_agenda_keep_order = falseorg_super_agenda_group_property_name#
The property auto-group groups lines by.
- Org's option
org-super-agenda-group-property-name- Type
- string
- Default
"agenda-group"
org_super_agenda_group_property_name = "agenda-group"org_super_agenda_properties_inherit#
Look for the properties of property, auto-property and auto-group in the
entries above too.
- Org's option
org-super-agenda-properties-inherit- Type
- boolean
- Default
true
org_super_agenda_properties_inherit = trueorg-roam#
org_roam_enabled#
org-roam: the files of org_roam_directory are a network of notes, whose
nodes (files and entries with an ID) are found, linked to and made with the
org.roam.* commands. Off, those commands only say so.
- Type
- boolean
- Default
false
org_roam_enabled = falseorg_roam_directory#
The directory of org-roam's files, in all its subdirectories. ~/ is the home
directory.
- Org's option
org-roam-directory- Type
- string
- Default
"~/org-roam/"
org_roam_directory = "~/org-roam/"org_roam_file_extensions#
The extensions of org-roam's files; each may be followed by .gpg or .age,
which the server cannot read.
- Org's option
org-roam-file-extensions- Type
- string[]
- Default
["org"]
org_roam_file_extensions = ["org"]org_roam_file_exclude_regexp#
Emacs regexps for the files that are not org-roam's, matched against their
names relative to org_roam_directory; the default leaves out attachments.
- Org's option
org-roam-file-exclude-regexp- Type
- string or string[]
- Default
["data/"]
org_roam_file_exclude_regexp = ["data/"]org_roam_node_display_template#
How a node is offered: ${field} for its title, tags, todo, file,
olp, aliases and the other fields of org-roam-node, ${field:N} in N
columns, ${field:*} in what is left of the window's 79 columns.
- Org's option
org-roam-node-display-template- Type
- string
- Default
"${title}"
org_roam_node_display_template = "${title}"org_roam_node_formatter#
The description of a link org.roam.node.insert makes, a template as
org_roam_node_display_template is (${title} (${file})); empty for the
node's title.
- Org's option
org-roam-node-formatter- Type
- string
- Default
""
org_roam_node_formatter = ""org_roam_db_extra_links_elements#
Where else org-roam finds links than where Org does: in property drawers
(node-property) and keyword lines (keyword).
- Org's option
org-roam-db-extra-links-elements- Type
- array
- Default
["node-property", "keyword"]
org_roam_db_extra_links_elements = ["node-property", "keyword"]org_roam_db_extra_links_exclude_keys#
By node-property and keyword, the properties and keywords whose links are
not links, in any case. A list given replaces the default one.
- Org's option
org-roam-db-extra-links-exclude-keys- Type
- object
- Default
{ "node-property": ["ROAM_REFS"], "keyword": ["transclude"] }
org_roam_db_extra_links_exclude_keys = { node-property = ["ROAM_REFS"], keyword = ["transclude"] }org_roam_graph_executable#
The Graphviz program that draws org.roam.graph's graph, found on PATH or a
path.
- Org's option
org-roam-graph-executable- Type
- string
- Default
"dot"
org_roam_graph_executable = "dot"org_roam_graph_viewer#
The program that shows the graph, given its file.
- Org's option
org-roam-graph-viewer- Type
- string
- Default
- unset: the editor's: it opens the file as the system does
org_roam_graph_filetype#
What Graphviz draws the graph as (its -T): svg, png, ~pdf~…
- Org's option
org-roam-graph-filetype- Type
- string
- Default
"svg"
org_roam_graph_filetype = "svg"org_roam_graph_extra_config#
Graphviz's attributes of the graph, in their order: { "rankdir": "LR" }.
- Org's option
org-roam-graph-extra-config- Type
- object
- Default
{}
org_roam_graph_extra_config = {}org_roam_graph_edge_extra_config#
Graphviz's attributes of the links: { "dir": "back" }.
- Org's option
org-roam-graph-edge-extra-config- Type
- object
- Default
{}
org_roam_graph_edge_extra_config = {}org_roam_graph_node_extra_config#
Graphviz's attributes of the nodes, by the type of the link to them: id for
org-roam's nodes, https for the web pages linked to.
- Org's option
org-roam-graph-node-extra-config- Type
- object
- Default
{ "id": { "style": "bold,rounded,filled", "fillcolor": "#EEEEEE", "color": "#C9C9C9", "fontcolor": "#111111" }, "http": { "style": "rounded,filled", "fillcolor": "#EEEEEE", "color": "#C9C9C9", "fontcolor": "#0A97A6" }, "https": { "style": "rounded,filled", "fillcolor": "#EEEEEE", "color": "#C9C9C9", "fontcolor": "#0A97A6" } }
org_roam_graph_node_extra_config = { id = { style = "bold,rounded,filled", fillcolor = "#EEEEEE", color = "#C9C9C9", fontcolor = "#111111" }, http = { style = "rounded,filled", fillcolor = "#EEEEEE", color = "#C9C9C9", fontcolor = "#0A97A6" }, https = { style = "rounded,filled", fillcolor = "#EEEEEE", color = "#C9C9C9", fontcolor = "#0A97A6" } }org_roam_graph_link_hidden_types#
The types of links the graph leaves out.
- Org's option
org-roam-graph-link-hidden-types- Type
- string[]
- Default
["file"]
org_roam_graph_link_hidden_types = ["file"]org_roam_graph_max_title_length#
The width a title takes in the graph, at most.
- Org's option
org-roam-graph-max-title-length- Type
- integer
- Default
100
org_roam_graph_max_title_length = 100org_roam_graph_shorten_titles#
What becomes of a title wider than org_roam_graph_max_title_length: cut with
... (truncate), over lines (wrap), or nothing (false).
- Org's option
org-roam-graph-shorten-titles- Type
- "truncate", "wrap", false
- Default
"truncate"
org_roam_graph_shorten_titles = "truncate"org_roam_extract_new_file_path#
The file org.roam.extract offers for a node, relative to
org_roam_directory: %<…> is the time as format-time-string writes it,
${title}, ${slug} and ${id} the node's.
- Org's option
org-roam-extract-new-file-path- Type
- string
- Default
"%<%Y%m%d%H%M%S>-${slug}.org"
org_roam_extract_new_file_path = "%<%Y%m%d%H%M%S>-${slug}.org"org_roam_link_auto_replace#
Turn the roam: links of org-roam's files into id: links to their nodes as
the files are saved, and as a link is followed.
- Org's option
org-roam-link-auto-replace- Type
- boolean
- Default
true
org_roam_link_auto_replace = trueorg_roam_completion_everywhere#
In org-roam's files, offer the titles of the nodes for the word at the cursor, not only in a link; the one picked becomes a link to its node.
- Org's option
org-roam-completion-everywhere- Type
- boolean
- Default
false
org_roam_completion_everywhere = falseorg_roam_mode_sections#
The sections of the org-roam buffer, in turn: backlinks (the nodes that link
to the node), reflinks (those that link to or cite its references) and
unlinked-references (the places that name it without a link, found by the
server itself).
- Org's option
org-roam-mode-sections- Type
- string[]
- Default
["backlinks", "reflinks"]
org_roam_mode_sections = ["backlinks", "reflinks"]org_roam_capture_templates#
The templates of new nodes, as org_capture_templates writes them, with
org-roam's targets: file and a path, file+head, a path and the text a new
file starts with, file+olp, a path and the headlines of an outline path,
file+head+olp, both, and node and the title, alias or ID of a node. The
path, relative to org_roam_directory, and the texts may have ${title},
${slug}, ${id} and ${name}, which asks for name (${name=default}
starts the answer with default), besides the escapes of
org_capture_templates. unnarrowed shows the whole file in the capture
buffer.
- Org's option
org-roam-capture-templates- Type
- object[]
- Default
[{ "key": "d", "description": "default", "type": "plain", "target": ["file+head", "%<%Y%m%d%H%M%S>-${slug}.org", "#+title: ${title}\n"], "template": "%?", "unnarrowed": true }]
org_roam_capture_templates = [{ key = "d", description = "default", type = "plain", target = ["file+head", "%<%Y%m%d%H%M%S>-${slug}.org", "#+title: ${title}\n"], template = "%?", unnarrowed = true }]org_roam_dailies_directory#
Where the daily notes are, relative to org_roam_directory.
- Org's option
org-roam-dailies-directory- Type
- string
- Default
"daily/"
org_roam_dailies_directory = "daily/"org_roam_dailies_capture_templates#
The templates of the daily notes, as org_roam_capture_templates writes them,
with paths relative to org_roam_dailies_directory; %<…> is the note's day.
- Org's option
org-roam-dailies-capture-templates- Type
- object[]
- Default
[{ "key": "d", "description": "default", "type": "entry", "target": ["file+head", "%<%Y-%m-%d>.org", "#+title: %<%Y-%m-%d>\n"], "template": "* %?" }]
org_roam_dailies_capture_templates = [{ key = "d", description = "default", type = "entry", target = ["file+head", "%<%Y-%m-%d>.org", "#+title: %<%Y-%m-%d>\n"], template = "* %?" }]org-journal#
org_journal_enabled#
org-journal: a journal in org_journal_dir, a file a day (or week, month,
year), written with the org.journal.* commands. Off, those commands only say
so.
- Type
- boolean
- Default
false
org_journal_enabled = falseorg_journal_dir#
The directory of the journal's files. ~/ is the home directory.
- Org's option
org-journal-dir- Type
- string
- Default
"~/Documents/journal/"
org_journal_dir = "~/Documents/journal/"org_journal_file_type#
A file a day (daily), week (weekly), month (monthly) or year (yearly);
but daily, each entry has its date in a CREATED property.
- Org's option
org-journal-file-type- Type
- string
- Default
"daily"
org_journal_file_type = "daily"org_journal_start_on_weekday#
The day a weekly file starts on: 1 is Monday, 7 Sunday.
- Org's option
org-journal-start-on-weekday- Type
- number
- Default
1
org_journal_start_on_weekday = 1org_journal_file_format#
The names of the files, as format-time-string writes the date their entries
start on: with %Y, %m and %d (a yearly file needs only %Y, a monthly
one %Y and %m). A name without .org is an Org file to org-journal, but
not to most editors.
- Org's option
org-journal-file-format- Type
- string
- Default
"%Y%m%d"
org_journal_file_format = "%Y%m%d"org_journal_date_format#
The date of an entry, after org_journal_date_prefix, as format-time-string
writes it, in the C locale: %x is 10/09/26.
- Org's option
org-journal-date-format- Type
- string
- Default
"%A, %x"
org_journal_date_format = "%A, %x"org_journal_date_prefix#
What comes before the date of an entry: a headline, or ~#+title: ~ in a daily file.
- Org's option
org-journal-date-prefix- Type
- string
- Default
"* "
org_journal_date_prefix = "* "org_journal_time_format#
The time of a new entry of the day, as format-time-string writes it; empty
for none.
- Org's option
org-journal-time-format- Type
- string
- Default
"%R "
org_journal_time_format = "%R "org_journal_time_format_post_midnight#
The time of an entry made after midnight while it is still yesterday
(org_extend_today_until); empty for org_journal_time_format.
- Org's option
org-journal-time-format-post-midnight- Type
- string
- Default
""
org_journal_time_format_post_midnight = ""org_journal_time_prefix#
What comes before the time of an entry: its stars give its level.
- Org's option
org-journal-time-prefix- Type
- string
- Default
"** "
org_journal_time_prefix = "** "org_journal_hide_entries_p#
Fold all but the new entry.
- Org's option
org-journal-hide-entries-p- Type
- boolean
- Default
true
org_journal_hide_entries_p = trueorg_journal_follow_mode#
In the calendar (org.goto.calendar), the entry of the day ] and [ move
to shows in another window.
- Org's option
org-journal-follow-mode- Type
- boolean
- Default
false
org_journal_follow_mode = falseorg_journal_find_file_fn#
Where a new entry and today's file (org.journal.open.current) show: in
another window, or ("find-file") in the window of the command.
- Org's option
org-journal-find-file-fn- Type
- "find-file-other-window", "find-file"
- Default
"find-file-other-window"
org_journal_find_file_fn = "find-file-other-window"org_journal_carryover_items#
The items of the entry before that move to today's, with the headlines above
them: a match of the tags view (m); empty for none.
- Org's option
org-journal-carryover-items- Type
- string
- Default
"TODO=\"TODO\""
org_journal_carryover_items = "TODO=\"TODO\""org_journal_skip_carryover_drawers#
Drawers left out of the items carried over.
- Org's option
org-journal-skip-carryover-drawers- Type
- string[]
- Default
[]
org_journal_skip_carryover_drawers = []org_journal_carryover_delete_empty_journal#
What happens to an entry or file left empty by the carryover: never deleted,
always, or ask.
- Org's option
org-journal-carryover-delete-empty-journal- Type
- string
- Default
"never"
org_journal_carryover_delete_empty_journal = "never"org_journal_file_header#
What a new file starts with, as format-time-string writes it:
#+title: Journal %Y.
- Org's option
org-journal-file-header- Type
- string
- Default
""
org_journal_file_header = ""org_journal_created_property_timestamp_format#
The date in the CREATED property of an entry of a file that is not daily.
- Org's option
org-journal-created-property-timestamp-format- Type
- string
- Default
"%Y%m%d"
org_journal_created_property_timestamp_format = "%Y%m%d"org_journal_scheduled_string#
What comes before the timestamp of an entry for a day to come
(org.journal.new.scheduled.entry).
- Org's option
org-journal-scheduled-string- Type
- string
- Default
""
org_journal_scheduled_string = ""org_journal_enable_encryption#
Tag the date of a new entry with crypt, for org-crypt to encrypt
(org.crypt.encrypt.all, or as the file is saved with
org-crypt-use-before-save-magic in the Emacs configuration).
- Org's option
org-journal-enable-encryption- Type
- boolean
- Default
false
org_journal_enable_encryption = falseorg_journal_enable_agenda_integration#
Add the journal's files of today and the days to come to the agenda's files.
- Org's option
org-journal-enable-agenda-integration- Type
- boolean
- Default
false
org_journal_enable_agenda_integration = falseorg_journal_search_result_date_format#
The date of each result of a search of the journal, as format-time-string
writes it.
- Org's option
org-journal-search-result-date-format- Type
- string
- Default
"%A, %x"
org_journal_search_result_date_format = "%A, %x"org_journal_search_results_order_by#
The order of the results of a search of the journal: asc, the first day
first, or desc, the last.
- Org's option
org-journal-search-results-order-by- Type
- string
- Default
"asc"
org_journal_search_results_order_by = "asc"Editing and motion#
org_M_RET_may_split_line#
Inserting a heading, an item or a table row (M-RET) in the middle of a line
splits it, the rest going to the new one; false: it goes in after the line.
One by context: { "headline": false, "item": true, "table": true },
default for those not named.
- Org's option
org-M-RET-may-split-line- Type
- boolean, object
- Default
true
org_M_RET_may_split_line = trueorg_blank_before_new_entry#
Whether a new heading (heading) and a new item (plain_list_item) get an
empty line before them: true, false, or "auto", as the headings or items
around them have.
- Org's option
org-blank-before-new-entry- Type
- object
- Default
- unset:
autofor both
org_insert_heading_respect_content#
M-RET and M-S-RET outside lists put the new heading after the subtree, as C-RET does.
- Org's option
org-insert-heading-respect-content- Type
- boolean
- Default
false
org_insert_heading_respect_content = falseorg_special_ctrl_a_e#
How C-a and C-e (org.beginning.of.line, org.end.of.line) move on a
headline or an item: true to the start of the headline's title, after the
stars, TODO keyword and priority, or after the item's bullet and check-box,
and to the end of the title, before the tags; the same key again to the line's
own start or end. reversed goes to the line's start or end first, and to
those places on the same key right after. A pair, as [true, false], sets C-a
and C-e apart. With false the key keeps the editor's own meaning.
- Org's option
org-special-ctrl-a/e- Type
- false, true, "reversed", [C-a, C-e]
- Default
false
org_special_ctrl_a_e = falseorg_sparse_tree_open_archived_trees#
A sparse tree (C-c /, and a link's /regexp/) shows its matches in archived
subtrees (tagged ARCHIVE); with false those subtrees stay folded under
their headline.
- Org's option
org-sparse-tree-open-archived-trees- Type
- boolean
- Default
false
org_sparse_tree_open_archived_trees = falseorg_occur_case_fold_search#
Whether a sparse tree (C-c /, and a link's /regexp/) ignores case;
"smart" ignores it unless what is searched for has an upper-case letter.
- Org's option
org-occur-case-fold-search- Type
- true, false, "smart"
- Default
true
org_occur_case_fold_search = trueorg_highlight_sparse_tree_matches#
Highlight the matches of a sparse tree (C-c /, and a link's /regexp/)
until the text changes; with false, only their lines show.
- Org's option
org-highlight-sparse-tree-matches- Type
- boolean
- Default
true
org_highlight_sparse_tree_matches = trueorg_remove_highlights_with_change#
The highlights of a sparse tree (C-c / by a regexp, TODO keywords or dates,
and a link's /regexp/) and the times of C-c C-x C-d go at the next change
of the text; with false they stay until C-c C-c. Those of a sparse tree by
tags or a property always stay, as in Emacs.
- Org's option
org-remove-highlights-with-change- Type
- boolean
- Default
true
org_remove_highlights_with_change = trueorg_sparse_tree_default_date_type#
The timestamps the date sparse trees (C-c / b, a, D) look at first:
null for scheduled and deadline dates, or one kind; c in the menu turns to
the next kind.
- Org's option
org-sparse-tree-default-date-type- Type
- null, "all", "active", "inactive", "scheduled", "deadline", "closed"
- Default
null
org_yank_adjusted_subtrees#
C-y (org.yank, Emacs keys) of one or more subtrees at the start of a line,
or after the stars of an otherwise empty headline, pastes them as
org.paste.subtree does: at the level of the headlines around them. Anything
else is the editor's own paste.
- Org's option
org-yank-adjusted-subtrees- Type
- boolean
- Default
false
org_yank_adjusted_subtrees = falseorg_yank_folded_subtrees#
C-y (org.yank, Emacs keys) of one or more subtrees at the start of a line
folds them, unless that would hide text after them (Inserted text not folded
because that would swallow text), and leaves the cursor on the line after
them. With false (and org_yank_adjusted_subtrees off) it is the editor's
own paste.
- Org's option
org-yank-folded-subtrees- Type
- boolean
- Default
true
org_yank_folded_subtrees = trueorg_allow_promoting_top_level_subtree#
Promoting a headline of level 1 makes it a comment line: # ~ in place of
~* ~, its children a level up with a subtree's promotion. With ~false it is
an error.
- Org's option
org-allow-promoting-top-level-subtree- Type
- boolean
- Default
false
org_allow_promoting_top_level_subtree = falseorg_odd_levels_only#
Only odd levels: *, ***, *****, each counted as the next level.
Promoting and demoting go two stars at a time, and a headline is colored and
matched (LEVEL) by the level it counts as. #+STARTUP: odd and oddeven
set it for a file.
- Org's option
org-odd-levels-only- Type
- boolean
- Default
false
org_odd_levels_only = falseorg_inlinetask_min_level#
A headline of at least this many stars (twice as many less one with
org_odd_levels_only) is an inline task: a task inside the text of its entry,
closed by a line of as many stars and END. It is no part of the outline: it
has no subtree, the outline and the motion between headings pass it, and it
folds its text up to its END line. false: there are no inline tasks, as in
Emacs before org-inlinetask is loaded.
- Org's option
org-inlinetask-min-level- Type
- number, false
- Default
15
org_inlinetask_min_level = 15org_inlinetask_show_first_star#
The stars of an inline task but the last two are hidden, as
org_hide_leading_stars hides those of a headline; with true none are.
- Org's option
org-inlinetask-show-first-star- Type
- boolean
- Default
false
org_inlinetask_show_first_star = falseorg_inlinetask_default_state#
The TODO keyword of a new inline task (org.inlinetask.insert).
- Org's option
org-inlinetask-default-state- Type
- string
- Default
- unset: no keyword
org_support_shift_select#
Where Shift and the arrows select text, as they do in the editor, instead of
running Org's commands (S-<left> and its kin, C-S-<left> and
C-S-<right>): always everywhere but on a timestamp and the #+BEGIN: line
of a clock table; true everywhere but there, on headlines, list items'
bullets, property lines and tables; false nowhere, Org's commands wherever
they apply. With text selected, always and true extend it. Emacs's default
is false; org-lsp's is always, as editors select with these keys.
- Org's option
org-support-shift-select- Type
- "always", true, false
- Default
"always"
org_support_shift_select = "always"org_special_ctrl_o#
org.open.line (C-o) in a table inserts a row above; with false it opens a
line there too.
- Org's option
org-special-ctrl-o- Type
- boolean
- Default
true
org_special_ctrl_o = trueorg_special_ctrl_k#
C-k (org.kill.line) on a headline kills the text to the tags, and the tags
when the cursor is past the title; at the start of the line, the whole line.
With false the key keeps the editor's own meaning, but on a line a closed
fold starts on (see org_ctrl_k_protect_subtree).
- Org's option
org-special-ctrl-k- Type
- boolean
- Default
false
org_special_ctrl_k = falseorg_ctrl_k_protect_subtree#
C-k (org.kill.line) on a line a closed fold starts on (a headline's only
from its start with org_special_ctrl_k) kills what the fold hides with the
line, as Emacs's kill-line does: true asks first (Kill hidden subtree
along with headline?), "error" refuses (‘C-k’ aborted as it would kill a
hidden subtree), false kills. Needs an editor that says which folds are
closed (not VS Code).
- Org's option
org-ctrl-k-protect-subtree- Type
- false, true, "error"
- Default
false
org_ctrl_k_protect_subtree = falseorg_lint#
Org's linter checks the documents and reports what it finds as diagnostics: misplaced headings and planning lines, links to nowhere, duplicate names, footnotes without definitions… What it finds is information, a hint for a checker Org trusts little: an Org file is text, nothing in it is an error or a warning.
- Org's option
org-lint- Type
- boolean
- Default
true
org_lint = trueorg_lint_ignore#
The org-lint checkers to leave out, by name, as a diagnostic's code shows it
("misplaced-heading").
- Org's option
org-lint- Type
- string[]
- Default
[]
org_lint_ignore = []org_man_command#
The program that writes the man page of a man: link, when ol-man is in
org_modules: the page is shown as text, at the line before the first match
of what follows :: (man:ls::-l). "woman", Emacs's own reader, is man
too.
- Org's option
org-man-command- Type
- string
- Default
"man"
org_man_command = "man"org_info_other_documents#
The pages on the web of Info manuals: following an info: link to one of
them, or to one of Emacs's manuals, opens its page at the node. Another manual
is shown as text, as the info program writes the node.
- Org's option
org-info-other-documents- Type
- { [manual]: string }
- Default
{ "dir": "https://www.gnu.org/manual/manual.html", "libc": "https://www.gnu.org/software/libc/manual/html_mono/libc.html", "make": "https://www.gnu.org/software/make/manual/make.html" }
org_info_other_documents = { dir = "https://www.gnu.org/manual/manual.html", libc = "https://www.gnu.org/software/libc/manual/html_mono/libc.html", make = "https://www.gnu.org/software/make/manual/make.html" }org_ctags_path_to_ctags#
The ctags program (Exuberant or Universal Ctags) that org.ctags.create
runs to make the TAGS file of a directory, when org-ctags is in
org_modules.
- Org's option
org-ctags-path-to-ctags- Type
- string
- Default
"ctags"
org_ctags_path_to_ctags = "ctags"org_ctags_open_link_functions#
With org-ctags in org_modules, what following a link to a headline, a
target or a custom ID tries first, in turn, until one is done:
org-ctags-find-tag (the tag of the TAGS file of the file's directory),
org-ctags-ask-rebuild-tags-file-then-find-tag and
org-ctags-rebuild-tags-file-then-find-tag (the TAGS file made again, then
the tag), org-ctags-ask-append-topic and org-ctags-append-topic (a new
topic at the end of the file), org-ctags-ask-visit-buffer-or-file and
org-ctags-visit-buffer-or-file (the Org file of that name in the directory,
made when asked), org-ctags-fail-silently (nothing more). When none is done,
the link is followed as without them.
- Org's option
org-ctags-open-link-functions- Type
- string[]
- Default
["org-ctags-find-tag", "org-ctags-ask-rebuild-tags-file-then-find-tag", "org-ctags-ask-append-topic"]
org_ctags_open_link_functions = ["org-ctags-find-tag", "org-ctags-ask-rebuild-tags-file-then-find-tag", "org-ctags-ask-append-topic"]org_ctags_new_topic_template#
The text of a new topic org_ctags_open_link_functions makes, %t the link's
text capitalized.
- Org's option
org-ctags-new-topic-template- Type
- string
- Default
"* <<%t>>\n\n\n\n\n\n"
org_ctags_new_topic_template = "* <<%t>>\n\n\n\n\n\n"org_open_non_existing_files#
Open a linked file that is not there with the application org_file_apps
gives it, rather than saying No such file. The editor opens such a file
either way.
- Org's option
org-open-non-existing-files- Type
- boolean
- Default
false
org_open_non_existing_files = falseorg_open_directory_means_index_dot_org#
Following a link to a directory opens the index.org in it, rather than the
directory.
- Org's option
org-open-directory-means-index-dot-org- Type
- boolean
- Default
false
org_open_directory_means_index_dot_org = falsereturn_uses_meta_return#
RET on the first line of a list item makes the next item, numbered as M-RET
(org-meta-return) makes it (without a checkbox, which M-S-RET adds), the
items after it renumbered, as nvim-orgmode's org_return_uses_meta_return
does. Off, RET is Org's: a new line in the item. org.return.item (<S-CR>,
Shift+Enter, with the vim keys) always does it.
- Type
- boolean
- Default
false
return_uses_meta_return = falseorg_goto_max_level#
The deepest headings org.goto (C-c C-j) offers.
- Org's option
org-goto-max-level- Type
- number
- Default
5
org_goto_max_level = 5org_cycle_separator_lines#
With at least this many blank lines after a subtree, the last one stays
outside its fold. Negative: all of them stay outside. 0: none does.
- Org's option
org-cycle-separator-lines- Type
- number
- Default
2
org_cycle_separator_lines = 2org_cycle_include_plain_lists#
Whether list items fold, as subtrees do. integrate makes them part of the
outline: TAB showing a headline's children folds its lists to their top items
too. false: they do not fold.
- Org's option
org-cycle-include-plain-lists- Type
- true, false, "integrate"
- Default
true
org_cycle_include_plain_lists = trueorg_cycle_max_level#
The deepest headlines that fold; deeper ones are text of the subtree they are in.
- Org's option
org-cycle-max-level- Type
- number
- Default
- unset: every level
org_cycle_global_at_bob#
TAB at the very start of the file, when its first line is no headline, cycles the whole file as S-TAB does.
- Org's option
org-cycle-global-at-bob- Type
- boolean
- Default
false
org_cycle_global_at_bob = falseorg_cycle_level_after_item_entry_creation#
TAB on a new, empty headline makes it a child of the headline before, then each level up, then a sibling again; on an empty item, it indents and outdents the item the same way.
- Org's option
org-cycle-level-after-item/entry-creation- Type
- boolean
- Default
true
org_cycle_level_after_item_entry_creation = trueorg_display_remote_inline_images#
Whether the images of http: and https: links show (C-c C-x C-v):
"skip" not; "download" downloaded each time they show; "cache"
downloaded once and kept for the session. The download follows
org_resource_download_policy; an image larger than 20 MB is not downloaded.
- Org's option
org-display-remote-inline-images- Type
- "skip", "download" or "cache"
- Default
"skip"
org_display_remote_inline_images = "skip"org_resource_download_policy#
Which remote resources are downloaded (the images of links, and in Emacs a
file attached from a URL, C-c C-a u, or a remote #+INCLUDE: or
#+SETUPFILE: in an export): true all of them; "prompt" those considered
safe, and the others when the answer to Emacs's question says so (in Emacs, a
yes or no: yes downloads it this once); "safe" only those considered safe;
false none but those.
- Org's option
org-resource-download-policy- Type
- true, "prompt", "safe" or false
- Default
"prompt"
org_resource_download_policy = "prompt"org_safe_remote_resources#
The remote resources considered safe: Emacs regexps matched against a
resource's URL and against the file:// URL of the file asking for it. The
answers !, d and f to the download question add one for the rest of the
session. Emacs has them too, for what it downloads.
- Org's option
org-safe-remote-resources- Type
- string[]
- Default
[]
org_safe_remote_resources = []org_num_max_level#
The deepest level org-num-mode numbers.
- Org's option
org-num-max-level- Type
- integer
- Default
- unset: every level
org_num_skip_commented#
org-num-mode leaves COMMENT subtrees unnumbered.
- Org's option
org-num-skip-commented- Type
- boolean
- Default
false
org_num_skip_commented = falseorg_num_skip_footnotes#
org-num-mode leaves the footnotes section (* Footnotes) unnumbered.
- Org's option
org-num-skip-footnotes- Type
- boolean
- Default
false
org_num_skip_footnotes = falseorg_num_skip_tags#
org-num-mode leaves the subtrees of headlines with one of these tags (their
own, not inherited) unnumbered.
- Org's option
org-num-skip-tags- Type
- string[]
- Default
[]
org_num_skip_tags = []org_num_skip_unnumbered#
org-num-mode leaves the subtrees of headlines with an UNNUMBERED property
unnumbered.
- Org's option
org-num-skip-unnumbered- Type
- boolean
- Default
false
org_num_skip_unnumbered = falseorg_custom_properties#
The properties org.custom.properties.toggle
(org-toggle-custom-properties-visibility) hides in the property drawers, and
shows again: ["ID", "CUSTOM_ID"]. Editors that can hide them: Neovim from
0.11, and Sublime Text, in a fold.
- Org's option
org-custom-properties- Type
- string[]
- Default
[]
org_custom_properties = []org_n_level_faces#
How many looks headlines take by level, from 1 to 8 (the token modifiers
level1 to level8, Org's org-level-1 to org-level-8): with 4, a
headline of level 5 looks as one of level 1, or as one of level 4 with
org_cycle_level_faces off.
- Org's option
org-n-level-faces- Type
- integer
- Default
8
org_n_level_faces = 8org_cycle_level_faces#
Past the last look of org_n_level_faces, headlines take the looks of the
levels from the first again; with false, those deeper all keep the last.
- Org's option
org-cycle-level-faces- Type
- boolean
- Default
true
org_cycle_level_faces = trueEmacs and the server#
emacs#
The Emacs program, for what only Org itself does: export
(org.export.dispatch). The server starts it (emacs --batch -Q) when that
is first asked for and keeps it running, so that Org loads once. Without
Emacs, everything else works as before.
- Type
- string
- Default
"emacs"
emacs = "emacs"emacs_config_file#
A file of Emacs Lisp that Emacs loads before Org, for the variables export
reads (org-export-backends, org-html-…, org-latex-…,
org-publish-project-alist): a file of its own, or your init file. ~/ is
the home directory.
- Type
- string
- Default
- unset: none
emacs_config#
Emacs Lisp that Emacs evaluates after emacs_config_file and before loading
Org, for a few settings without a file that emacs_options cannot say: a
function or a hook, or (add-to-list 'load-path "~/src/org-mode/lisp") for
another Org. A yes-or-no question Emacs asks while it works
(org-confirm-babel-evaluate) is asked in the editor.
- Type
- string
- Default
- unset: none
emacs_options#
Org's options for what Emacs does, by their names in Org, which Emacs sets as
Customize does: { "org-attach-method": "mv", "org-export-with-toc": false }.
true is t and false nil, a list is a list and a table an association
list; a string is a symbol where the option takes one, or a function, by its
name. Each is set when Emacs loads the library it is in, after
emacs_config_file and emacs_config, and so wins over them. A value the
option does not take is left out, with a message naming the part that does not
fit. The editor's go over the shared file's option by option. The options,
each with Org's documentation of it, are in
docs/emacs-options.org; the others are settings of
the server, or Lisp (hooks, functions written out), which goes in
emacs_config.
- Type
- { [option]: value }
- Default
{}
emacs_options = {}auto_save#
Save the files a command changes other than the one it was run in: an entry's file changed from the agenda, the target of a capture or of a refile. The editor saves them once it has made the change. Off, they are left with unsaved changes, as Emacs leaves them.
- Type
- boolean
- Default
true
auto_save = truemcp_edits#
Let the assistants org-lsp mcp serves change files: its tools
set_todo_state, capture, refile, schedule, deadline, set_tags,
set_property, delete_property, set_priority, set_effort, add_note,
archive and delete_entry, which write the agenda files, the capture
targets, the files of org_refile_targets and the archive files directly.
Off, it only reads. It is read from the shared configuration file, as
everything org-lsp mcp reads.
- Type
- boolean
- Default
false
mcp_edits = false