Emacs заполнить абзац, не прерывая строки, где ожидается - PullRequest
4 голосов
/ 20 января 2011

У меня есть следующий HTML-код (элемент списка).Содержание не важно - проблема в конце строки 2.

<li>Yes, you can learn how to play piano without becoming a
  great notation reader,
  however, <strong class="warning">you <em class="emphatic">will</em>
  have to acquire a <em class="emphatic">very</em>basic amount
  of notation reading skill</strong>.  But the extremely
  difficult task of honing your note reading skills that
  classical students are required to endure for years and years
  is <em class="emphatic">totally non-existant</em>as a
  requirement for playing non-classical piano.</li>

Команда fill-абзаца (Mq) была применена.Я не могу понять, почему на второй строке после «читателя» ставится разрыв строки, так как в этой строке больше места, чтобы поставить «однако».Еще одна странная вещь, которую я заметил, заключается в том, что когда я удаляю и затем повторно применяю символы табуляции в строках 4 и 5 (начинающиеся с «иметь» и «из» соответственно), автоматически вставляются также два пробела, например:*

<li>Yes, you can learn how to play piano without becoming a
  great notation reader,
  however, <strong class="warning">you <em class="emphatic">will</em>
    have to acquire a <em class="emphatic">very</em>basic amount
    of notation reading skill</strong>.  But the extremely
  difficult task of honing your note reading skills that
  classical students are required to endure for years and years
  is <em class="emphatic">totally non-existant</em>as a
  requirement for playing non-classical piano.</li>

Я не знаю, является ли это какой-то подсказкой или нет.Этого не происходит ни с одной из других строк.

Это просто ошибка, или любой опытный человек из Emacs знает, что здесь происходит?

Спасибо

Ответы [ 2 ]

3 голосов
/ 26 сентября 2011

Это намеренно. Строки, начинающиеся с тега XML или SGML, являются строками разделителей абзацев. Если Emacs разбивает абзац таким образом, что тег заканчивается в начале строки, последующие применения fill-paragraph остановятся на этой строке. Это должно гарантировать, что, например,

<p>a paragraph</p>
<!-- no blank line -->
<p>another paragraph</p>

не превращается в

<p>a paragraph</p> <!-- no blank line --> <p>another paragraph</p>

По той же причине Emacs не будет разбивать строку после периода, если после него не будет двух или более пробелов, потому что он использует двойной пробел, чтобы различать период, заканчивающийся предложением, и период, заканчивающий аббревиатуру и разрыв строки после периода, заканчивающегося сокращением, создаст неоднозначную ситуацию.

1 голос
/ 20 января 2011

Для меня это похоже на ошибку.

Мне удалось урезать ваш пример до чего-то вроде этого:

<li>blabla
  blabla <b>some_long_text_here</b> <b>more_long_text_here</b>

Если я удалю из него один символ текста, fill-paragraph работает как положено.Или, если я добавлю символ между двумя последовательными <b> элементами.

...