Стендап Сьогодні 📢 Канал в Telegram @stendap_sogodni

🤖🚫 AI-free content. This post is 100% written by a human, as is everything on my blog. Enjoy!

20.07.2023

Доповнення для Obsidian - як воно все працює

Задався ідеєю зробити доповнення для Obsidian, яке б покращувало роботу з задачами. В цілому, хочеться такий інтерфейс: команди можна писати безпосередньо в файлі, а доповнення при збереженні файлу буде читати команди та заміняти на результати. Поки, щоправда, це дуже абстрактно, але для початку хотілося б щоб до кожної нової задачі приписувалася дата створення.

Зробив маленьке дослідження того, яка модель редактора в Obisidan та як працювало б таке доповнення. Для цього є документація. Також як приклад, є плагін з Prettier та лінтер.

Цікаво, що вони по-різному підходять до заміни тексту. Обидва плагіни спочатку генерують змінений текст. Але Prettier просто заміняє весь зміст редактору, а Linter будує стислий пакет змін бібліотекою diff-match-patch, а потім вже застосовує кожну зміну окремо. Треба ще перевірити, чому, але можливо, що це краще зберігає історію змін.

Також треба знати, що редактор в Obsidian насправді не один, а багато, бо область редагування можна ділити. Там ціла деревоподібна структура, листям якої є конкретні редактори. Але при цьому можна знайти поточний… якщо він є та містить Markdown.

Ще цікава можливість доповнень Obsidian - це додавати в документ власні анотації та й взагалі будь-яку розмітку. Наприклад, задачі можна розфарбовувати за віком.

До речі, для роботи з Markdown як зі структурним документом можу порадити бібліотеку markdown-it. Я раніше використав її, щоб створити структурний редактор Markdown для React Native.