.jsf (редактор JOE) подсветка синтаксиса для todo.txt

Вопрос или проблема

Я не могу заставить редактор 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. Объяснение изменений

  1. Добавление шаблонов due: и rec:: Мы добавили строки "due:" и "rec:" в секции tagwordsIdle и tagwordsPrio. Это позволяет идентифицировать теги сразу после их написания.

  2. Регулярные выражения:

    • Для выделения даты мы добавили правила с использованием регулярных выражений ([0-9]{4}-[0-9]{2}-[0-9]{2}) для выделения дат в формате YYYY-MM-DD, что позволяет правильно идентифицировать даты, идущие после due:.
    • Аналогично, выделение rec: можно настроить, если необходимо добавить специфические форматы, например, rec:1d, rec:1w и так далее.
  3. Состояния теги: Добавляя состояние dueIdle и duePrio, мы можем обрабатывать дальнейшие символы после идентификации тегов, что делает выделение более гибким и корректным.

Заключение

Используя приведенные изменения в вашем конфигурационном файле todotxt.jsf, вы сможете достичь необходимого синтаксического выделения для ваших задач в документе todo.txt. Это делается за счет четкого определения условий, связанных с форматированием тегов и правильного применения регулярных выражений. С такими настройками редактирование списка задач станет намного удобнее и привлекательнее.

Оцените материал
Добавить комментарий

Капча загружается...