# Метки Emacs Org-mode

## Содержание

- [Метки времени](#метки-времени)
  - [Типы временных меток](#типы-временных-меток)
  - [Метки планирования](#метки-планирования)
- [Метки задач](#метки-задач)
  - [Базовые состояния](#базовые-состояния)
  - [Многоступенчатые рабочие процессы](#многоступенчатые-рабочие-процессы)
  - [Параллельные последовательности](#параллельные-последовательности)
- [Метки плагинов Obsidian](#метки-плагинов-obsidian)
  - [Tasks](#tasks)
  - [Dataview](#dataview)

## Метки времени

### Типы временных меток

**Простая временная метка**

Формат: `<2003-09-16 Tue>` или `<2003-09-16 Tue 09:39>` или `<2003-09-16 Tue 12:00-12:30>`

Назначает дату и время элементу. Запись отображается в повестке дня на указанную дату.

Пример:
```
* Meet Peter at the movies
  <2006-11-01 Wed 19:15>
```

**Временная метка с повторением**

Содержит интервал повторения: N часов (h), дней (d), недель (w), месяцев (m) или лет (y).

Пример:
```
* Pick up Sam at school
  <2007-05-16 Wed 12:30 +1w>
```

**Временной диапазон**

Две временные единицы, соединенные символом `-`.

Пример:
```
* Discussion on climate change
  <2006-11-02 Thu 10:00-12:00>
```

**Диапазон дат**

Две временные метки, соединенные символом `--`. Заголовок отображается в первый и последний день диапазона.

Пример:
```
** Meeting in Amsterdam
   <2004-08-23 Mon>--<2004-08-26 Thu>
```

**Неактивная временная метка**

Использует квадратные скобки вместо угловых. Не вызывает отображение записи в повестке дня.

Формат: `[2006-11-01 Wed]`

Пример:
```
* Gillian comes late for the fifth time
  [2006-11-01 Wed]
```

### Метки планирования

Специальные ключевые слова, которые размещаются непосредственно после задачи.

**DEADLINE**

Задача должна быть завершена к указанной дате. Повестка дня показывает предупреждение о приближающемся или пропущенном сроке, начиная за `org-deadline-warning-days` дней до даты.

Пример:
```
*** TODO write article about the Earth for the Guide
    DEADLINE: <2004-02-29 Sun>
```

Можно указать другой период предупреждения:
```
DEADLINE: <2004-02-29 Sun -5d>
```

**SCHEDULED**

Планируется начать работу над задачей в указанную дату. Заголовок отображается под указанной датой. Напоминание о прошедшей запланированной дате присутствует в повестке дня до завершения задачи.

Пример:
```
*** TODO Call Trillian for a date on New Years Eve.
    SCHEDULED: <2004-12-25 Sat>
```

Можно отложить отображение задачи:
```
SCHEDULED: <2004-12-25 Sat -2d>
```

Задача запланирована на 25-е, но появится в повестке дня двумя днями позже.

**CLOSED**

Автоматически добавляется при завершении задачи (если включено `org-log-done`). Записывает время завершения задачи.

Пример:
```
*** DONE Complete the report
    CLOSED: [2022-09-12 Mon 16:18]
```

## Метки задач

### Базовые состояния

По умолчанию доступны два состояния:

- **TODO** - задача требует выполнения
- **DONE** - задача завершена

Переключение между состояниями: `C-c C-t`

### Многоступенчатые рабочие процессы

Можно определить последовательные состояния рабочего процесса. Вертикальная черта `|` разделяет состояния, требующие действий, от завершенных состояний.

Пример конфигурации:
```elisp
(setq org-todo-keywords
      '((sequence "TODO" "FEEDBACK" "VERIFY" "|" "DONE" "DELEGATED")))
```

Состояния слева от `|` требуют действий, справа - завершены.

**Быстрый доступ к состояниям**

Можно назначить клавиши для быстрого доступа:
```elisp
(setq org-todo-keywords
      '((sequence "TODO(t)" "|" "DONE(d)")))
```

Буква в скобках - клавиша для быстрого выбора состояния после `C-c C-t`.

### Параллельные последовательности

Можно использовать разные наборы ключевых слов параллельно:

```elisp
(setq org-todo-keywords
      '((sequence "TODO(t)" "|" "DONE(d)")
        (sequence "REPORT(r)" "BUG(b)" "KNOWNCAUSE(k)" "|" "FIXED(f)")))
```

**Определение для отдельного файла**

Ключевые слова можно определить только для одного файла:

```
#+TODO: TODO(t) | DONE(d)
#+TODO: REPORT(r) BUG(b) KNOWNCAUSE(k) | FIXED(f)
#+TODO: | CANCELED(c)
```

После изменения строки используйте `C-c C-c` для применения изменений.

**Распространенные состояния**

Примеры часто используемых состояний задач:

- **TODO** - задача к выполнению
- **NEXT** - следующая задача для работы
- **STARTED** / **IN-PROGRESS** - задача в процессе выполнения
- **WAITING** / **WAIT** - ожидание чего-либо
- **HOLD** - задача приостановлена
- **DONE** - задача завершена
- **CANCELED** / **CANCELLED** - задача отменена
- **DELEGATED** - задача делегирована
- **FEEDBACK** - ожидание обратной связи
- **VERIFY** - требуется проверка
- **REPORT** - сообщение о проблеме
- **BUG** - обнаруженная ошибка
- **KNOWNCAUSE** - причина известна
- **FIXED** - исправлено

## Метки плагинов Obsidian

### Tasks

Плагин Tasks использует эмодзи-маркеры для обозначения различных атрибутов задач.

**Даты**

- `📅 YYYY-MM-DD` - срок выполнения (due date)
- `⏳ YYYY-MM-DD` - запланированная дата (scheduled date)
- `🛫 YYYY-MM-DD` - дата начала (start date)
- `➕ YYYY-MM-DD` - дата создания (created date)
- `✅ YYYY-MM-DD` - дата завершения (done date)
- `❌ YYYY-MM-DD` - дата отмены (cancelled date)

Формат даты: `YYYY-MM-DD` (год-месяц-день с ведущими нулями)

Пример:
```markdown
- [ ] Submit report 📅 2023-12-25
- [ ] Start project 🛫 2023-12-01 ⏳ 2023-12-10 📅 2023-12-31
```

**Приоритеты**

- `🔺` - наивысший приоритет (highest)
- `⏫` - высокий приоритет (high)
- `🔼` - средний приоритет (medium)
- без маркера - обычный приоритет (normal)
- `🔽` - низкий приоритет (low)
- `⏬` - наинизший приоритет (lowest)

Пример:
```markdown
- [ ] Urgent task ⏫
- [ ] Important task 🔼
- [ ] Low priority task 🔽
```

**Повторяющиеся задачи**

- `🔁` - правило повторения (recurrence)

Примеры правил:
- `🔁 every day` - каждый день
- `🔁 every week` - каждую неделю
- `🔁 every month` - каждый месяц
- `🔁 every weekday` - каждый будний день
- `🔁 every 2 weeks` - каждые 2 недели

Пример:
```markdown
- [ ] Daily standup 🔁 every weekday 📅 2023-12-04
```

**Зависимости задач**

- `⛔ TASK-ID` - блокируется задачей (blocked by)
- `🆔 TASK-ID` - идентификатор задачи (task ID)

**Дополнительные маркеры**

- `⏰ YYYY-MM-DD HH:MM` - напоминание (reminder)

### Dataview

Плагин Dataview использует inline-поля для добавления метаданных к заметкам и задачам.

**Синтаксис inline-полей**

Два варианта записи:

1. `key:: value` - ключ и значение видны в режиме чтения
2. `[key:: value]` - в режиме чтения виден только value (если включена опция "Inline Field Highlighting")

**Расположение**

Inline-поля могут быть размещены:
- В любом месте текста заметки
- В элементах списка
- В задачах (чекбоксах)

**Типы значений**

Текст:
```markdown
author:: John Doe
status:: in progress
```

Числа:
```markdown
rating:: 8
pages:: 350
```

Даты:
```markdown
published:: 2023-12-01
deadline:: 2023-12-31
```

Ссылки:
```markdown
project:: [[Project Name]]
related:: [[Note 1]], [[Note 2]]
```

Списки:
```markdown
tags:: tag1, tag2, tag3
authors:: "Author One", "Author Two"
```

**Примеры использования**

В тексте заметки:
```markdown
# Movie Review

**Rating**:: 8
**Genre**:: action
[watched:: 2023-11-15]

The movie was great...
```

В задачах:
```markdown
- [ ] Complete report [priority:: high] [due:: 2023-12-25]
- [ ] Review code [assignee:: [[John]]] [status:: pending]
```

**Неявные поля**

Dataview автоматически добавляет метаданные к каждой странице через поле `file`:

- `file.name` - имя файла
- `file.folder` - путь к папке
- `file.path` - полный путь к файлу
- `file.ctime` - дата создания
- `file.mtime` - дата изменения
- `file.size` - размер файла
- `file.tags` - все теги в файле
- `file.outlinks` - исходящие ссылки
- `file.inlinks` - входящие ссылки
- `file.tasks` - все задачи в файле

**Запросы**

Пример запроса с inline-полями:
````markdown
```dataview
TABLE rating, genre, watched
FROM #movies
WHERE rating > 7
SORT rating DESC
```
````
