При написании абзаца, содержащего экранированные тильды, ввод последующих тильд работает некорректно. В частности, если у меня есть текст, который использует символ ` (тильду) вот так, то нажатие клавиши ` позже в том же абзаце приводит к нестабильному переключению встроенного кода.
Экранированный ` также вызывает проблемы.
Скопируйте и вставьте следующее в редактор с поддержкой форматирования, чтобы воспроизвести проблему:
Specifically, if I have some text that `` uses a ` (tilde) `` like this,
then pressing the <kbd>\`</kbd> key again later in the same paragraph
causes the inline code span to toggle about.
The escaped \` is also problematic.
Это сложный момент: \ на самом деле не имеет какой-либо особой семантики, насколько я могу судить, он просто преобразуется из \ в \\ в процессе кругового цикла.
@renato, возможно, у вас есть какие-то идеи по этому поводу, интересный крайний случай.
Это работает как задумано: экранирование теряется при парсинге (при переключении из Markdown в форматированный текст), и это ожидаемое поведение, так как экранирование с помощью \ — это концепция Markdown/кода.
Поддерживаемый способ экранирования в режиме визуального редактора — использование backspace после срабатывания правила ввода: `как здесь`.
Да, это немного лучше, но всё ещё невозможно написать любой встроенный код, содержащий символ `, без каких-либо манипуляций после первой ошибки. Невозможно заранее использовать более одного символа `. Ввод того, что указано выше в теге `, или экранированного кода, который его создаёт (<kbd>\`</kbd>), — это идеальные примеры того, что практически невозможно сделать в режиме WYSIWYG, даже с манипуляциями.
Я понимаю, что можно использовать Backspace, чтобы отменить форматирование и неявно «экранировать» его, но мне трудно предсказать, когда форматирование применится. Например, `4*5*6` вводится естественно, если сразу перед ним стоит открытый символ `, но это не всегда так. 4*5*6=120 вводится хорошо, а 120=456 — нет (пятёрка там временно стала курсивом).
Что вы предлагаете делать в этих конкретных случаях? Есть ли у вас пример другого продукта, который решает эту задачу так, что мы могли бы почерпнуть вдохновение?
Вы можете ввести `, выделить его, а затем ввести ` или нажать cmd+E, чтобы переключить его в формат встроенной разметки.
Вы можете нажать cmd+E, а затем ввести `. Вы можете использовать cmd+E для переключения кодовой разметки для следующего вводимого символа, точно так же, как вы делаете это с cmd+B для жирного шрифта или cmd+I для курсива.
Правило ввода <kbd> автоматически выделяет пустой символ (чтобы браузер не удалял пустой узел автоматически), поэтому вам нужно сначала снять выделение (поскольку в данном случае нажатие ` создаёт встроенную разметку для выделения — хотя мы потенциально можем убрать это поведение, так как для этого есть cmd+E).
Я понимаю, что это может быть неидеально, но это компромиссы, обусловленные всеми особенностями Discourse. Мы открыты для предложений, если вы поделитесь тем, как, по вашему мнению, это должно работать.
Что ж, я создал эту тему, когда казалось, что включение WYSIWYG-редактора сделает моноширинным и редактор Markdown (см. Monospace font in the Markdown-only editor - #58 by mbauman). Я очень рад, что это больше не так и теперь это можно настроить, потому что, да, я никогда не встречал WYSIWYG-редактор Markdown, который мне нравился. Хотя сейчас уже почти дошли до этого.
Я пишу очень много Markdown в очень многих текстовых полях (как в отрендеренном, так и в неотрендеренном виде… до того, что я почти считаю неотрендеренный Markdown «отформатированным»), и знаю, что я довольно редкий случай. Тем не менее, я считаю, что существует группа таких редких случаев, и мы обычно собираемся в контексте форумов по языкам программирования.
Самое ценное — сделать автоформатирование максимально предсказуемым, чтобы я мог понять, когда нужно нажать Backspace, но, по моему опыту, этому довольно сложно научиться.