как заставить tinymce (в браузере “богатый редактор”) сохранять добавление отступа

В более старых архитектурах доступ к периферийным устройствам осуществлялся через отдельный механизм доступа к памяти со специальными инструкциями ввода / вывода. На x86 были (и есть!) Инструкции «in» и «out» для передачи байтов между процессором и периферийным устройством. Периферийным устройствам были даны адреса, например, 0x80 для клавиатуры. Упрощая многое, выполнение «в 0x80» будет считывать байт из контроллера клавиатуры в регистр ЦП «AL».

В современных архитектурах доступ к периферийным устройствам осуществляется аналогично памяти: через сопоставленные адреса памяти на шине. Вы не должны думать о шине как о способе доступа к памяти. Это больше способ обратиться к отдельным периферийным устройствам, из которых память (RAM / DDR) - только один тип. Например, у вас может быть 2 ГБ ОЗУ по адресам 0x00000000..0x7fffffff. После этого у вас может быть видеокарта 0x80000000..0x80001fff. Контроллер шины (PCIe или любой другой) знает, какие диапазоны адресов идут к какому периферийному устройству.

Память обычно отличается тем, что ее можно кэшировать, поэтому отдельные операции чтения / записи в память обычно не преобразуются непосредственно в отдельные операции чтения / записи в микросхемы ОЗУ. Периферийные устройства помечены как специальные - доступ к ЦП должен осуществляться на периферийном устройстве в точности так, как написано в вашей программе.

Язык, с которым вы разговариваете с периферийными устройствами, в значительной степени зависит от устройства. Общая тема заключается в том, что периферийное устройство отображается где-то в памяти (например, 0x80000000 для нескольких килобайт, как указано выше), с отдельным битом состояния и действиями, управляемыми разными словами (обычно 32 или 64 бита). Мифический пример последовательного порта в 0x80000000:

  • Записать 32-битное слово «A» в 0x80000000, поставив в очередь символ «A» в выходном FIFO.
  • Записать 32-битное слово от 0x1 до 0x80000004, которое сообщает последовательному порту отправлять свою очередь.

Опять же, полностью составлен только для примера, но настоящий последовательный порт (UART) не так уж и отличается.

Проблема в том, что вы на самом деле не увидите какой-либо из вышеперечисленных схем памяти в современной ОС из-за виртуальной памяти. Указанные выше адреса будут называться «адресами физической памяти» (или адресами шины) - фактическими адресами, которые выходят на шину. CPU вместо этого видит адреса виртуальной памяти. Отдельные периферийные устройства должны быть сопоставлены с виртуальным адресным пространством. Это довольно сложно объяснить и, вероятно, лучше всего это сделать в другом Вопросе, но дело в том, что вы вряд ли получите доступ к периферийному устройству по его фактическому физическому адресу в современной ОС.

5
задан dreftymac 5 June 2009 в 21:41
поделиться

2 ответа

Причина, по которой это происходит, заключается в том, что rich-editor на самом деле является редактором xhtml. В xhtml большинство тегов (за исключением тега PRE) по умолчанию объединяют несколько пробельных символов в один пробел.

Чтобы преодолеть это в tinyMCE, вам необходимо создать таблицу стилей, содержащую:

* {white-space: pre;}

И укажите на таблицу стилей content_css при инициализации редактора. Имейте в виду, что пока вы сохраните свой формат, он больше не будет WYSIWYG из-за природы изменения пробелов HTML-кода.

Другой вариант - заключить код в элемент PRE, но для этого нет кнопки это по умолчанию в tinyMCE (или мне так кажется).

РЕДАКТИРОВАТЬ:

Как упоминалось mikl, tinyMCE также имеет параметр конфигурации для предварительно отформатированного

1
ответ дан 14 December 2019 в 08:59
поделиться

В настройках TinyMCE есть параметр «предварительно отформатированный» (в данном случае через модуль WYSIWYG , но он также присутствует в модуле TinyMCE). Это должно помочь.

Снимок экрана настройки http://www.quicksnapper.com/files/3603/2949292644A2CF2A72BC21_m.png

1
ответ дан 14 December 2019 в 08:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: