Форматирование «предварительно отформатированного текста» используется, когда многолинейное выделение не содержит жесткого разрыва

Приоритет/Серьезность:

Средний

Платформа

Операционная система

Windows 11

Браузер

Google Chrome 141.0.7390.123

Discourse

ad36231adab58a8a249bfe8139aade2bde2134d3

Описание:

Существует два стиля форматирования «предварительно отформатированного текста»:

  • встроенный: для использования с контентом, не являющимся текстом, внутри текстового отрывка (например, «вызовите функцию foo») или с одной короткой строкой контента, не являющегося текстом.
  • блочный: для использования с несколькими строками контента, не являющегося текстом.

Пользователь может выбрать один из двух подходов к применению форматирования при использовании редактора:

  • проактивный: режим форматирования переключается до добавления контента, подлежащего форматированию.
  • ретроспективный: контент добавляется в неформатированном виде, затем выделяется, и к выделению применяется форматирование.

:bug: Применение форматирования «предварительно отформатированного текста» к многострочному выделению использует некорректный стиль «встроенный» при следующих условиях:

  • Редактор находится в режиме «текстовый редактор с форматированием».
  • Форматирование применяется ретроспективно.
  • В выделенном контенте отсутствует жесткий разрыв строки.

Это приводит к тому, что пост становится трудно читать, а контент, не являющийся текстом, — трудно копировать (что является распространенным требованием для общего кода).

Шаги для воспроизведения:

  1. Откройте редактор.
  2. Переключите режим редактора в положение «текстовый редактор с форматированием».
  3. Введите foo в редакторе.
  4. Нажмите сочетание клавиш Shift+Enter, чтобы добавить «мягкий разрыв».
  5. Введите bar в редакторе.
    :red_exclamation_mark: Не добавляйте разрыв строки.
  6. Нажмите сочетание клавиш Ctrl+Shift+Home, чтобы выделить весь контент от конца строки 2 до начала поста.
  7. Нажмите кнопку </> на панели инструментов редактора.

:bug: Каждая из выделенных строк была отформатирована индивидуально во встроенном стиле:

foo
bar

Правильным поведением было бы размещение контента в одном блоке кода:

foo
bar

Дополнительная информация

Я выбрал подход ручного ввода контента для демонстрации, чтобы избежать ненужного усложнения, связанного с учетом форматирования, которое может присутствовать в скопированном контенте в зависимости от источника копирования. Однако ошибка также возникает при вставке контента, и условия отсутствия жесткого разрыва в контенте будут более вероятны при работе с таким контентом (поскольку пользователь, вероятно, будет нажимать Enter во время ввода, даже если он не хотел делать жесткий разрыв).


Ошибка не возникает, если вы используете «Выделить все»/Ctrl+A для выделения контента.


Редактор Markdown имеет правильное поведение: он всегда помещает выделенный контент в блок кода, когда к многострочному выделению применяется форматирование «предварительно отформатированного текста» ретроспективно.


Мне удалось воспроизвести ошибку на try.discourse.org в «безопасном режиме».


Изначально сообщено по адресу Why did the Forum functions change? - #37 by sterretje - Website and Forum - Arduino Forum

Похоже, это также не происходит при ручном выборе.

Привет, @NateDhaliwal. Что вы имеете в виду под «ручным выбором»?

Вы имеете в виду выбор с помощью выделения мышью? Если да, то ошибка всё ещё возникает при таком способе выбора:

manual-select

Или с помощью клавиш Shift и стрелок? Если да, то ошибка всё ещё возникает и при таком способе выбора:

manual-select2

Я не уверен в этом; это было намеренное исключение, поскольку в данном случае у вас всё ещё один абзац с переносом строки, и в такой ситуации должно быть возможно добавить маркеры встроенного кода.

Мы даже можем рассмотреть изменение этого поведения, но это не совсем баг. /cc @lindsey

Хорошо, извините, я этого не заметил. Думаю, имеет смысл сделать их оба последовательными, действительно.

1 лайк

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

1 лайк