# The configuration file follows TOML format rules: https://toml.io/
# Note on file paths:
#   On Windows a file path usually includes backslashes. When TOML parses a string
#   enclosed into double quotes, it treats backslashes as escape characters. This
#   results in errors when loading a configuration file. To avoid this trouble, use
#   one of the following ways to put a file path to the configuration:
#   1. Use single quotes instead of double ones:
#     filename = 'c:\Users\user\todo.txt'
#   2. Duplicate backslashes:
#     filename = "c:\\Users\\user\\todo.txt"
#   3. Replace backslashes with slashes:
#     filename = "c:/Users/user/todo.txt"
#
# A TTDL config can be in the current working directory - to support
#   ttdl settings on per project basis. Global user config must be in:
# * Linux: ~/.config/ttdl/ttdl.toml
# * Windows: c:\Users\<username>\AppData\Roaming\ttdl\ttdl.toml
# * MacOS: /Users/<username>/Library/Preferences/ttdl/ttdl.toml
#
# All section must exists in the custom configuration file, but all options
#   inside every section are optional.
#
# available colors (names are case-insensitive):
#   black, red, green, yellow, blue, magenta, cyan, white
# every color may have up to 3 modifiers:
#   bold, underline, bright(or intense)
# the first two modifiers works only in ANSI-compatible terminal.
# To make them work on Windows, use ConEmu or Cmder instead
#   of standard cmd or PowerShell.
# For Cmder/ConEmu and Linux terminals indexed 256-color terminal and
#   RGB colors are supported as well. Format for indexed colors is the index
#   of the color(enclosed in double quotes):
#   overdue="140"
#   Format for RGB is enclosed in double quotes a comma separated list of 3
#   numbers (order of colors is R,G,B) :
#   overdue="220,0,0"
#   For both indexed and RGB colors the number can be either decimal between
#   0 and 255 or hexadecimal in range 0x0 - 0xFF. In latter case, it must start
#   with  "0x".
# If a color value cannot be parsed it defaults to 'white'
[colors]
# color_term: terminal color support
#   auto: standard console API for Windows, ANSI for *nix OSes
#   ansi: use ANSI-compatible colors (to make it work on Windows you have to
#       use a third-party console emulator like ConEmu or Cmder
#   none: disable colors
color_term = "ansi"
# overdue incomplete todos
overdue = "bright red"
# todos with overdue threshold date
threshold = "red"
# todos with highest priority (A)
top = "bright red"
# important todos - with a priority equal to or higher than `ranges.important`
important = "white"
# done todos
done = "bright black"
# todos that are due today
today = "bright yellow"
# todos that are due in and less in `ranges.soon` days
soon = "white"
# todos that old (color for creation date)
old = "bright black"
# the default text color
# default_fg = "white"

[ranges]
# TTDL filter `soon` selects todos that are due in and less than in `soon` days
# 0 - disable `soon` feature
soon = 0
# todos that have priority equal or higher than `important` are displayed in
#   in `colors.important` font color.
# Priority is a character from 'a'(highest priority) through 'z'. Setting
#   `important` to any other value disables the feature
important = ""
# creation date of todos that are older than `old` is displayed in `old` color.
# Format: single digit and modifier 'd'(day), 'w'(week), 'm'(month), 'y'(year)
old = "1y"

[global]
# set global todo.txt filename. It works as environment variable TTDL_FILENAME,
#   but environment variable overrides config setting.
# See a note about file paths on Windows at the top of the file
# filename = "./"

# automatically set creation date to today if it is not set when adding a new todo
# creation_date_auto = true

# fields that are displayed by default. Available fields:
#   pri, done, due, created, finished, thr
# fields = "pri,due,done"

# default sorting
# sort = "pri"

# shell to execute plugins. If not set, it defaults to:
#   ["cmd", "/c"] on Windows
#   ["sh", "-cu"] on other OS
# shell = ["powershell", "-F"]

# add extension to plugin name when calling it.
# if extension does not start with '.', the dot is added automatically.
# Useful on Windows to choose between 'ps1', 'cmd', and 'bat'
# script_ext = ".ps1"

# add prefix to plugin name before calling it.
# E.g., for powershell simple "plugin" fails but "./plugin" works fine.
# See a note about file paths on Windows at the top of the file
# script_prefix = "./"

# determine first day of the week
#    true - first day of week is Sunday
#    false - first day of week is Monday
# Note: The option is unused yet
# first_sunday = true

# enables strict command-line mode: in this mode the first free command-line
# argument must be a TTDL command. It may be useful to avoid adding incorrect
# todos after making a type, e.g, `ttdl listt`
# strict_mode = false

# defines what items from a subject will be removed before printing:
#    none | nothing = subject is printed as-is (default)
#    tags = only tags can be removed, projects and contexts are not touched
#    all = remove tags, projects, and contexts
# NOTE: the option affects only things that are printed in separate columns.
#    I.e, with default "fields=pri,due,done" and "clean_subj=all", only
#    "due" tag and value are removed. But with "fields=due,prj", both "due"
#    tag and "project" are cleaned up.
# clean_subject = "none"

# Automatically hide columns if all values are empty
# auto_hide_columns = false

# Automatically show columns for all tags found in any of tasks.
# NOTE: custom formatting fields, which names start with '!' are ignored.
# auto_show_columns = false

# Comma-separated list of tags that are hidden always.
# Use it with auto_show_columns=true to hide non-empty columns that you
# do not want to see in a separate columns
# always_hide_columns =

# What to do with task priority when the task is completed:
#    keep  = only prepend 'x' (default)
#    move  = place the priority after completion date. In this case the task
#            subject still contains priority but it is not displayed in the
#            priority column
#    tag   = convert priority to a tag
#    erase = remove priority from the task
# NOTE: all modes above, except `erase`, are reversible, i.e., when the completed
#       task is undone, the task gets its priority back
# priority_on_done = keep

# How to set completion date when task is finished. The original todo.txt standard
# states that creation date must be present when completion date is. However, most
# todo.txt clients allow completed tasks to have only one date, which is completion
# date.
#    false  = only add completion date if task has creation date (default)
#    true   = always add completion date, regardless of creation date is presence
# add_completion_date_always = false

# Path an external editor binary or the name of the editor binary if it is in PATH.
# It is used when 'edit' command includes the option `--interactive`.
# editor = ""

# Comma-separated list of fields that are hidden everywhere:
# columns and tags in subject
# hide_fields = "ts,tmr"

# Date display format.
# Choose from: 'default', 'short', 'human', and formatting string like '%Y-%m-%d'
# date_format = "default"

[syntax]
# Set enabled to 'true' to highlight projects, contexts, tags, and hashtags
#     inside the subject
# enabled = false
tag_color = "bright cyan"
hashtag_color = "cyan"
project_color = "bright green"
context_color = "green"

[markdown]
# Set enabled to 'true' to render Markdown formatting (bold, italic, code,
#     links) in task subject text using terminal escape codes.
# Bold, italic, inline code, and [links](url) are supported.
# enabled = false
# Color for inline `code` spans. Same format as other color options.
# code_color = "yellow"

# Example of a custom field of `date` type with conditional highlight.
# [[fields]]
# name = "chk" # tag name
# title = "Check" # column title in the output
# width = 0 # auto-width
# kind = "date"
# ### the following subarray is optional and can be omitted
# [[fields.rules]]
# range = "..yesterday" # overdue todo, i.e, check date is before today
# color = "red"
# [[fields.rules]]
# range = "today..soon" # check must be done soon: between today and today+7 days, inclusive
# color = "bright yellow"

[agenda]
# Do not display section "All day"
# hide_all_day = false
# The size of a time slot. The default value is 30 minutes.
# A bare number means the number of minutes. But you can use duration special characters:
#   m - minutes (slot="30" and slot="30m" mean the same)
#   h - hours (slot="1h" and slot="60" mean the same)
# Slot size must be between 15 minutes and 24 hours.
# slot = "30"
# Agenda time range display (default value from 8:00 to 20:00)
# time = "800-2000"
# What fields to check when picking out tasks for an agenda
# fields = "due"
# Characters to use when drawing agenda
#   Index Char  Used to display
#   0     ┌     Task starts
#   1     │     Task continues
#   2     └     Task finishes
#   3     ╎     Task has started before the agenda time range (e.g., task has `time:700-900` and you display agenda for 800-1200)
#   4     ╎     Task finishes after the agenda time range ends
#   5     ─     Task is shorter than the time slot. It stars and ends within a single time slot
#   6     [     Task is "unlimited", i.e, it has start time but does not have end time (or end time is earlier than the start time)
#   7     ~     Task starts after its first time slot starts and the task is longer than 1 time slot
#   8     ~     Task ends before its last time slot ends and the task is longer than 1 time slot
# marks = "┌│└╎╎─[~~"

# Multiple task list configuration.
# All files mentioned in the section `sources` are processed by TTDL as one big list of tasks.
# Field `path` is mandatory. The rest are optional.
#   name - user-defined name of the list. For more convenient sort/filter/group calls
#   path - path to the file that contains the current tasks. Path can be a directory. In this case the final file path
#          is `path/todo.txt`
#   archive_path - path to the archive file (where completed tasks are moved by the command 'archive').
#                  If is not defined, TTDL makes it from `path` by replacing filename with `done.txt`.
#   default - use this task list as the default one for the command `add`.
#             If more than one list have `default=true`, the first one is always used.
# [[sources]]
# name = "main"
# path = "todo.txt"
# default = true
#
# [[sources]]
# name = "secondary"
# path = "another.txt"
# archive_path = "done.log"
