Вопрос или проблема
Я не могу заставить редактор JOE выделять такие теги, как due:YYYY-MM-TT
для сроков или rec:NP
для повторений; хотя я смог выделить приоритизированные задачи.
Пример todo.txt выглядит так:
обновить рекламу с Сарой
(B) спросить Ричарда о вещах
отправить вопросы мистеру К на следующей неделе
(B) спросить Т о интеграции для A
(A) протестировать 1110 срок:2024-12-09 период:1д
протестировать 1120 срок:2024-12-09 период:1н и сказать С
Я пытаюсь выделить приоритизированные задачи и теги с помощью этого todotxt.jsf:
# Подсветка синтаксиса Todo.txt для JOE
=Идл
=Приор ЦИАН жирный
=Срок bg_МАГЕНТА
=Период bg_ЖЕЛТЫЙ
:началоСтроки Идл
* идл буфер
"(" приор неедить буфер
:идл Идл
* идл буфер
" :" тегиИдл удерживать
"\n" началоСтроки
:приор Приор
* приор буфер
" :" тегиПриор удерживать
"\n" началоСтроки
:тегиИдл Идл
* идл
"\n" началоСтроки строки
"срок" срокИдл перекрасить=-2
#"период" периодИдл
завершено
:тегиПриор Приор
* приор
"\n" началоСтроки строки
"срок" срокПриор перекрасить=-2
#"период" периодПриор
завершено
:срокИдл Срок
* срокИдл
" \t" идл
:срокПриор Срок
* срокПриор
" \t" приор
Как я могу выделить отдельные теги/слова внутри строки?
Ответ или решение
Для того чтобы обеспечить синтаксическое выделение тегов, таких как due:YYYY-MM-DD
и rec:NP
, в редакторе JOE (Joe’s Own Editor) с использованием конфигурационного файла todotxt.jsf
, необходимо внести изменения в вашу текущую настройку. Я рассмотрю, как можно улучшить предоставленный скрипт для корректного выделения этих тегов вместе с уже действующим выделением приоритета.
1. Понимание структуры файла todotxt.jsf
Ваш текущий файл настроен так, что он корректно подхватывает приоритетные задачи и начинает выделять теги. Однако текущая логика для due
и rec
тегов не активируется из-за недостатка четкости в синтаксисе строки. Мы также увидим, что нам нужно модифицировать условия, чтобы обрабатывать due
и rec
с конкретными форматами.
2. Усовершенствование синтаксиса выделения
Вот обновленный примеры конфигурации, который позволяет выделять теги due
и rec
по заданному шаблону:
# Основные параметры выделения
=Idle
=Prio CYAN bold
=Due bg_MAGENTA
=Rec bg_YELLOW
:lineStart Idle
* idle buffer
"(" prio noeat buffer
:idle Idle
* idle buffer
" :" tagwordsIdle hold
"\n" lineStart
:prio Prio
* prio buffer
" :" tagwordsPrio hold
"\n" lineStart
:tagwordsIdle Idle
* idle
"\n" lineStart strings
"due:" dueIdle recolor=-2
"rec:" recIdle recolor=-2
done
:tagwordsPrio Prio
* prio
"\n" lineStart strings
"due:" duePrio recolor=-2
"rec:" recPrio recolor=-2
done
:dueIdle Due
* dueIdle
" \t" idle
"[0-9]{4}-[0-9]{2}-[0-9]{2}" dueDateIdle
:duePrio Due
* duePrio
" \t" prio
"[0-9]{4}-[0-9]{2}-[0-9]{2}" dueDatePrio
:recIdle Rec
* recIdle
" \t" idle
:recPrio Rec
* recPrio
" \t" prio
3. Объяснение изменений
-
Добавление шаблонов
due:
иrec:
: Мы добавили строки"due:"
и"rec:"
в секцииtagwordsIdle
иtagwordsPrio
. Это позволяет идентифицировать теги сразу после их написания. -
Регулярные выражения:
- Для выделения даты мы добавили правила с использованием регулярных выражений (
[0-9]{4}-[0-9]{2}-[0-9]{2}
) для выделения дат в форматеYYYY-MM-DD
, что позволяет правильно идентифицировать даты, идущие послеdue:
. - Аналогично, выделение
rec:
можно настроить, если необходимо добавить специфические форматы, например,rec:1d
,rec:1w
и так далее.
- Для выделения даты мы добавили правила с использованием регулярных выражений (
-
Состояния теги: Добавляя состояние
dueIdle
иduePrio
, мы можем обрабатывать дальнейшие символы после идентификации тегов, что делает выделение более гибким и корректным.
Заключение
Используя приведенные изменения в вашем конфигурационном файле todotxt.jsf
, вы сможете достичь необходимого синтаксического выделения для ваших задач в документе todo.txt
. Это делается за счет четкого определения условий, связанных с форматированием тегов и правильного применения регулярных выражений. С такими настройками редактирование списка задач станет намного удобнее и привлекательнее.