Обновить

MarkMello: быстрый Markdown viewer для тех, кто каждый день живёт в .md

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели18K
Всего голосов 21: ↑21 и ↓0+24
Комментарии44

Комментарии 44

ЗакрепленныеЗакреплённые комментарии

Спасибо всем за комментарии, замечания и предложения по улучшению, часть из них была реализована.

Что нового:

Добавлено

  • Добавлена сохраняемая настройка миникарты документа с режимами Авто, Вкл и Выкл.

  • Добавлена миникарта документа в режиме просмотра, похожая на minimap в VS Code.

  • Добавлен ленивый рендеринг миникарты после загрузки документа, без влияния на первичное открытие.

  • Добавлена навигация по внутренним Markdown-ссылкам вида #section-name.

  • Добавлены более широкие пресеты области чтения для больших экранов.

Улучшено

  • Улучшена точность миникарты документа и синхронизация с видимой областью.

  • Улучшено поведение пересборки миникарты при изменениях layout.

  • Стабилизирован жизненный цикл миникарты и добавлено тестовое покрытие.

Исправлено

  • Исправлено сохранение положения и размера главного окна.

  • Добавлено ограничение восстановленного положения окна, чтобы окно не появлялось за пределами экрана.

а по гиперпересылкам он ходить умеет?

Умеет :)

Прикольная штука:)
Но заметил, что не умеет ходить по внутренним ссылкам, типа:
[Зачем нужна эта документация](#зачем-нужна-эта-документация)

Спасибо! Добавлю эту возможность в ближайший релиз

А можно сделать вариант ещё больше ширины?:) А то сейчас выглядит вот так:




И ещё бы хотелось навигацию в мини-превью справа, как в vs code :)

Сделаем :)

Кстати, а чем Notepad++ c соответствующим плагином не устроил? Экран делится на две половины, слева RAW вид, справа с форматированием.

Собственно, об этом я и написал в статье)

Есть же Typora. Отличный лёгкий редактор. Да, это сразу редактор, но использовать как просмотрщик никто не мешает. И да, он при открытии первого документа предлагает активировать лицензию, но мне не сложно всегда просто закрывать попап.

Я искал бесплатный

Триал 15 дней, а по окончании триала даже просмотр не работает.

Typora предрелизной 0.11.18 версии не требует оплаты

Прекрасно работает и просмотр и редактирование. Никаких ограничений, только иногда появляется предложение оплатить или ввести лицензию. Стоит уже месяцев 9. Версия 1.13.4 for Linux (x64).

и WLX Markdown Viewer для TotalCommander

Сейчас осознал, что 10 лет уже Typora пользую - с 2016-го, когда Evernote окончательно задолбал, и перешел на систему хранения заметок в .md в своем облаке. Плюсую - офигенный вьювер-редактор, и в бете был на тот момент бесплатен. Когда стал платным - купил конечно же, т.к. из бесплатных на замену такого же хорошего не нашел.
Поэтому появление и развитие бесплатных альтернатив, как у автора - приветствуем :)

Что насчёт поддержки mermaid и plantUML?

Добавим :)

Спасибо за вашу работу. Выглядит очень стильно и открывается действительно ощутимо быстрее, чем VS Code (хотя Zed еще быстрее).

Нашел несколько багов:

  • Не работает double click на заголовке - в Windows я ожидаю, что приложение откроется на полный экран

  • Странно работает выделение внутри блоков кода - начало выделения не совпадает с местом, где находится курсор. Чем дальше от начала текста начинаешь выделять, тем сильнее несовпадение.

Хотелось бы:

  • Возможность отображать текст на полную ширину (максимальная доступная сейчас занимает 1/4 от моего экрана)

  • Возможность скроллить текст после клика на колесо мыши, как в браузере

  • Подсветку синтаксиса для блоков кода

Принято, поправим :)

Залей в стор, чтобы поиск, установка, обновления стали тривиальными и без споров со смартскрином

Есть в планах, да

Чем не угодил Obsidian?

Он долго открывается!

Всегда удивлялся двум вещам! (Вспомнил во время знакомства с этой публикацией, но не из-за её содержимого. ;-)

  1. Почему браузеры умеют из коробки показывать html, xml, txt и пр., но не умеют md?

  2. Почему несложные утилиты, не требующие каких-то сложнейших библиотек к супер-пупер современным версиям распределенных вычислительных кластеров, вышедших 3 дня назад, не программируются так, чтобы их можно было использовать, просто переписав файл на дискетке ;-)), и на любой платформе:

  • PE (Portable Executable) — PE32 (x32) и PE32+ (x64) для Windows, а через Wine и далее;

  • ELF (Executable and Linkable Format) — ELF32 и ELF64 для Linux, FreeBSD, Solaris и мн. др.

  • Mach-O (Mach Object) для XNU, Darwin...

Иногда запускаешь программу уровня хеллоу уолд с одной кнопкой, а она вместо того, чтобы спокойно отработать на условной WinXP, Win 7 сообщает, что у тебя ядро ОС слишком старое для её могучейшего алгоритма. )))

Причем, никаких реальных и очевидных требований по разрядности, API, ABI у программульки нет. Только ленивость или неумность разработчика...

Почему браузеры умеют из коробки показывать html, xml, txt и пр., но не умеют md?

Какой в этом смысл, если для просмотра важна стилизация? Универсально прикрутить кастомную стилизацию документа произвольного типа к браузеру не самое архитектурно правильное решение, гораздо лучше взять связку из двух аддонов: один для построения DOM из .md, .fb2 и чего там ещё хочется просматривать в браузере, а второй, типа Stylus, для стилизации этого DOM’а (если не хотите вникать в тонкости CSS, в Stylus можно просто скачать набор стилей, относящихся к документу, заканчивающемуся на .md или .fb2, из расшаренной базы на сервере).

В любом случае, построение DOM неоднозначная операция.

Иногда запускаешь программу уровня хеллоу уолд с одной кнопкой, а она вместо того, чтобы спокойно отработать на условной WinXP, Win 7 сообщает, что у тебя ядро ОС слишком старое для её могучейшего алгоритма. )))

Эти претензии должны быть не к автору программы, а к Microsoft, которая из новых компиляторов злонамеренно убирает поддержку старых версий виндов. У автора выбор: писать на более свежем стандарте C++, или собирать только под более свежие версии виндов. Можно ещё, конечно, поискать компилятор от третьей стороны, но это сильно усложняет процесс разработки. А так, довольно редко бывает, что тебе нужен вызов функции, которой не было в более старом WinAPI. Кроме того, Microsoft перестала публиковать в документации реально минимальную версию для каждой функции (типа, Windows 95), а начала просто врать, что всё равно нужна свежая винда. То есть, разработчику теперь стало труднее принимать решение, хочет он воспользоваться функцией ценой повышения минимальных требований или нет.

Только ленивость или неумность разработчика…

Удобно устроилась Microsoft: со стороны всего этого не видно, и их грехи валят на разработчиков.

Мне казалось, что все возможности Markdown можно перевести в HTML-теги — это заложено в саму идею языка. Нет, разве? Если так, то трансляция может осуществляться на лету с огромной скоростью. Никаких моделей строить не надо. 1 к 1. Да! Стилизация и красивости — это всё, конечно, замечательно. Но от быстрого просмотра содержимого документа обычно ждут самого содержимого. Стили можно использовать стандартные. Если вы перетащите файл htmlk без стилей в окно браузера, он же станет красиво отображаться (заголовки, ссылки, списки…), так? Ну, вот и md бы так же спокойно отображался. Кому нужна подготовка печатных макетов, вряд ли будут готовить их на md и заморачиваться с уникальной стилизацией.

Про Майкрософт согласен. Но, фактически, заранее уже и высказался Вам в ответ — ленивость разработчика. У меня же получается написать код, чтобы его и на старой, и на новой, и на *nix’е запустить.

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

1 к 1

1 к 1 это как? Это же не XSLT. Вот вам некоторые вопросы.

Заворачивать текст в <p> или нет? Для курсива и болда использовать <i>/<b> или <span class="…">? Генерировать <body> вокруг всего документа? Что делать с flavored-вставками, например, с <cut />, который используется в статьях Хабра (кстати, с ходу даже не сообразишь)? Какие теги генерировать для строк между `````js`` и ``````` (о, а вот и баг в хабровском парсере: он не умееет эскейпить бэктики), т.е. для ключевых слов языка ES? И многие другие вопросы, которыми задаёшься при интенсивной реальной работе с MD.

Вместо того, чтобы тащить в браузер всю эту кухню (настройку схемы преобразования для каждого типа документа), которая нужна, если всё делать по уму, гораздо логичнее вынести построение DOM в аддон, который сделает трансформацию так, как вам надо.

А делать тяп-ляп преобразование в браузере — лично мне хватило XML в IE в своё время. Спасибо, не надо.

У меня же получается написать код, чтобы его и на старой, и на новой, и на *nix’е запустить.

Думается мне, это как раз благодаря «и на *nix’е запустить». А мне не надо кросс-платформенность, и что, я должен с .vcxproj переползать на CMake, ради непонятно чего? Особенно для «одного окна с единственной кнопкой».

1 к 1 это как?

Имеется ввиду 1 структура md в одну визуальную структуру на экране. (Хоть табуляцией и пробелами форматировать. )) Но проще, мне кажется, одну структуру md преобразовать в более-менее аналогичную структуру html.

  1. Пусть есть некий формат md, который мы для себя принимаем желаемым стандартом.

  2. Пусть есть некое ПО «ABC», что отображает файл этого формата так, как нам кажется приемлемым (соблюдает структуру, заложенную в файле, на стили не обращаем внимание).

Можно с помощью некоего ПО (я бы хотел видеть этот код в браузере) перевести код из файла в формате md в код на HTML и отобразить его тут же браузером так, чтобы он визуально (заголовки большие, текст маленький…), по структуре и функционально соответствовал структуре и содержал нужные ссылки, как если бы этот файл md отображался эталонным ПО «ABC» (пусть и без сохранения всех стилей).
В какие html-теги программист такого легкого md-вьювера преобразует код md — БЕЗ РАЗНИЦЫ! Я этот html-код всё равно не увижу никогда! Да, мне и не надо! Мне только надо, чтобы заголовки отличались от абзацев, один абзац не слипался с другим, списки шли своим чередом и можно было жмакнуть по ссылке и открыть другой пункт документации. Всё.

Если мне понадобится полноценная работа с документом md я возьму специальное ПО «ABC», как я беру систему верстки, если собираюсь готовить макет к печати.

Но, для быстрого просмотра файла md в браузере все Ваши вопросы про модель документа и в какие теги и как оформлять код md абсолютно не интересны. В любые! Получится, что документ структурно похож, и ладно! )))
(Даже, если это нарушает как-то стройность DOM и html-код никогда не прошел бы верификацию W3C.)

Вот, такой легкий просмотрщик md прямо в браузере получился. ;-)

"Почему браузеры умеют из коробки показывать html, xml, txt и пр., но не умеют md?"

нет единого стандарта реализации маркдауна

С HTML такая же петрушка была поначалу. Войны браузеров (Нетскейп Навигейтор verse Майкрософт Иксплорер) и всё такое.

Зачем опусу говоришь не писать в коммитах его имя?))

Базовый HTML умеет рендерить?

товарищи, а Joplin кто-нить юзает? вроде удобная штука-то?

обычный notepad в вын11 открывает md файлы.

Обычный notepad открывает любые файлы и в любой винде

Спасибо всем за комментарии, замечания и предложения по улучшению, часть из них была реализована.

Что нового:

Добавлено

  • Добавлена сохраняемая настройка миникарты документа с режимами Авто, Вкл и Выкл.

  • Добавлена миникарта документа в режиме просмотра, похожая на minimap в VS Code.

  • Добавлен ленивый рендеринг миникарты после загрузки документа, без влияния на первичное открытие.

  • Добавлена навигация по внутренним Markdown-ссылкам вида #section-name.

  • Добавлены более широкие пресеты области чтения для больших экранов.

Улучшено

  • Улучшена точность миникарты документа и синхронизация с видимой областью.

  • Улучшено поведение пересборки миникарты при изменениях layout.

  • Стабилизирован жизненный цикл миникарты и добавлено тестовое покрытие.

Исправлено

  • Исправлено сохранение положения и размера главного окна.

  • Добавлено ограничение восстановленного положения окна, чтобы окно не появлялось за пределами экрана.

А формулы в LaTex не просто не рендерит, но даже не показывает сырыми, как будто их и не было.

Спасибо за фидбек, добавим поддержку

Есть ли в планах сделать portable версию для винды?

Да, сделаем

Потрясающая эстетика приложения, спасибо за Ваш труд! Как возможно скармливать ему изображения относительными ссылками?

Спасибо :) Подтверждаю проблему, будет исправлена в ближайшем релизе. Будет так же поддержка диаграмм

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации