Как заполнить (обернуть) заголовок режима орг?

9

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

Если я перенесу строку вручную, вставив новую строку, режим org не распознает переносимый текст как заголовок.

Это возможно?

Примечание: org-fill-paragraphне делает этого:

(defun org-fill-paragraph (&optional justify)
  "Fill element at point, when applicable.

This function only applies to comment blocks, comments, example
blocks and paragraphs.  Also, as a special case, re-align table
when point is at one.

If JUSTIFY is non-nil (interactively, with prefix argument),
justify as well.  If `sentence-end-double-space' is non-nil, then
period followed by one space does not end a sentence, so don't
break a line there.  The variable `fill-column' controls the
width for filling.

For convenience, when point is at a plain list, an item or
a footnote definition, try to fill the first paragraph within."
  (interactive)
  ; ...
Дэвид Дж.
источник

Ответы:

11

Оригинальный плакат использует слова fillи wrapвзаимозаменяемо - они не совпадают.

Смотрите переменную org-startup-truncated:

Non-nil means entering Org-mode will set `truncate-lines'.
This is useful since some lines containing links can be very long and
uninteresting.  Also tables look terrible when wrapped.

По умолчанию это t. Чтобы изменить это, пользователь может поместить следующий код в .emacsфайл:

(setq org-startup-truncated nil)

org-modeнужен конец строки, чтобы правильно определить заголовок. Чтобы увидеть пример регулярного выражения, которое org-modeиспользует для заголовков, пользователь может набрать (после org-modeзагрузки буфера):

M-x describe-variable RET org-complex-heading-regexp RET

Как видно, конец $- то есть до конца строки.

^\\(\\*+\\)\\(?: +\\(TODO\\|DONE\\)\\)?\\(?: +\\(\\[#.\\]\\)\\)?\\(?: +\\(.*?\\)\\)??\\(?:[     ]+\\(:[[:alnum:]_@#%:]+:\\)\\)?[    ]*$
lawlist
источник
Спасибо за разъяснения по поводу заполнения и упаковки. Это различие не ясно из чтения www.emacswiki.org/emacs/FillParagraph. Спасибо за показ базового регулярного выражения. Что касается выносов, это точно ?: Если не изменить это регулярное выражение, заполнение (вставка новых строк) не вариант. Усечение будет работать, либо так, как вы показываете, либо с помощью M-x toggle-truncate-lines(показано в моем ответе).
Дэвид Дж.
1
Для автоматического отключения усечения переменная org-startup-truncatedявляется наиболее подходящей, поскольку инициализация org-modeпроверяет значение этой переменной и, если это не так nil, процесс инициализации специально устанавливает (setq truncate-lines t). Чтобы сохранить поведение по умолчанию и переключать его только вручную, тогда toggle-truncate-lines, безусловно, целесообразно. Лежащая в основе регулярных выражений для headlings не может быть легко изменена (на мой взгляд) , потому что есть миллион и один функции , которые полагаются на него - например, org-agenda-list; org-search-view; org-tags-view, назвать несколько.
юрист
1
Вы также можете быть заинтересованы в том, visual-line-modeкакие попытки объединить целые слова при переносе. Для моей собственной настройки я изменил редактирование записей todo следующим образом: редактирование автоматически сужает буфер для задачи, которую я редактирую; visual-line-modeактивирован и я занимаюсь редактированием; при выходе из суженного буфера visual-line-modeотключается; усечение остается по умолчанию, когда буфер не сужен. У меня есть пользовательская настройка, которая сохраняет не суженный буфер в состоянии «только для чтения», который становится читаемым при редактировании, а затем устанавливается только для чтения по завершении.
юрист
4

Я не вижу, как заставить наполнение работать. Так что обходной путь должен использовать M-x toggle-truncate-lines. Это влияет только на представление заголовка. Он не вставляет новые строки.

Дэвид Дж.
источник