Отступы в орг-режиме

Я скопировал и вставлял текст в файл org и отформатировал его как список:

- Funded pensions :: As explained more fully in Chapter 3, funded pensions are paid on behalf of its members.

Как я могу составить список в формате:

- Funded pensions :: As explained more fully in Chapter 3, funded pensions are
      paid on behalf of its members.

Другой простой пример, когда fill-region-paragraph не работает:

* first header

- The primary objective of pensions is /economic security in old age/, achieved
through consumption smoothing, insurance, poverty relief, and redistribution.
- The primary objective of pension design is to /optimize old-age security/, includ-
ing the cost of providing it.
1
Вы можете заполнить один элемент с помощью M-q . Но я считаю, что вы хотите заполнить регион предметами.
добавлено автор Mike Spivey, источник
Вы должны опубликовать такой пример.
добавлено автор Mike Spivey, источник
Ваш «другой простой пример» - это другой случай. Там вам не нужен fill-paragraph . В каждом пункте вторая строка начинается с того же столбца, что и маркер элемента. Синтаксис org говорит, что эта строка не относится к элементу. Именно по этой причине существует команда org-adjust-region . Итак, моя рекомендация в этом случае - попробовать org-adjust-region с префиксом arg .
добавлено автор Mike Spivey, источник
Да org-adjust-region вставляет столько же пробелов перед пулей, сколько необходимо для получения правильной структуры org. Если список элементов является первым в файле org и вы удаляете * первый заголовок , тогда org-adjust-region не вставляет пробелы перед маркерами. Такое поведение преднамеренно. org-adjust-region преобразует текст в текущую область, чтобы он соблюдал org-синтаксис.
добавлено автор Mike Spivey, источник
Я попробовал еще один пример. Я не могу автоматически отступать и не использовать M-q, а не fill-region-as-paragraph или fill-region-paragraph . Я должен вручную удалить первый разрыв строки.
добавлено автор Curlew, источник
См. Мой отредактированный пост.
добавлено автор Curlew, источник
org-adjust-region работает с «простым примером», но он также вставляет 2 пробела перед символом - . Возможно, я не делаю это правильно "с префиксом arg". Это TAB для езды на велосипеде?
добавлено автор Curlew, источник
Я удалил * первый заголовок , и теперь список itens находится под уровнем *** . Я запускаю org-adjust-region , и он не вставляет пробелы перед пулями. Спасибо.
добавлено автор Curlew, источник

1 ответы

Обратите внимание, что проблема с исходной версией paragraph-fill заключается в том, что она вызывает fill-region , если регион активен. Это объединяет все элементы в один заполненный элемент вместо нескольких заполненных элементов.

Далее следует команда fill-region-paragraph , которая заполняет каждый абзац неинтерактивной версией fill-paragraph . Таким образом, предметы в регионе заполняются отдельно. В коде команда привязана к последовательности клавиш C-c f . Вы можете изменить это по своему вкусу.

(defun fill-region-paragraphs (b e &optional justify)
  "Fill region between b and e like `fill-paragraph' for each paragraph in region
instead of `fill-region' which is implied by the original version of `fill-paragraph'.
Justify when called with prefix arg."
  (interactive "r\nP")
  (save-excursion
    (goto-char b)
    (while (< (point) e)
      (fill-paragraph justify)
      (forward-paragraph)
      )))
(global-set-key (kbd "C-c f") 'fill-region-paragraphs)

Ниже приведена версия кода из ответ на другой вопрос . Я добавил paragraph-fill к нему.

Сначала выберите элементы, которые вы хотите заполнить. Затем нажмите префикс arg C-u и C - + , чтобы получить нужное форматирование.

(defun org-adjust-region (b e)
  "Re-adjust stuff in region according to the preceeding stuff."
  (interactive "r") ;; current region
  (save-excursion
    (let ((e (set-marker (make-marker) e))
      (_indent (lambda ()
             (insert ?\n)
             (backward-char)
             (org-indent-line)
             (delete-char 1)))
      last-item-pos)
      (goto-char b)
      (beginning-of-line)
      (while (< (point) e)
    (indent-line-to 0)
    (cond
     ((looking-at "[[:space:]]*$")) ;; ignore empty lines
     ((org-at-heading-p)) ;; just leave the zero-indent
     ((org-at-item-p)
      (funcall _indent)
      (let ((struct (org-list-struct))
        (mark-active nil))
        (ignore-errors (org-list-indent-item-generic -1 t struct)))
      (setq last-item-pos (point))
      (when current-prefix-arg
        (fill-paragraph)))
     ((org-at-block-p)
      (funcall _indent)
      (goto-char (plist-get (cadr (org-element-special-block-parser e nil)) :contents-end))
      (org-indent-line))
     (t (funcall _indent)))
    (forward-line))
      (when last-item-pos
    (goto-char last-item-pos)
    (org-list-repair)
    ))))

(define-key org-mode-map (kbd "C-+") 'org-adjust-region)

В emacs -Q 25.1.50.2 для тестирования я использовал следующий файл org test.org :

* first header

- Funded pensions :: As explained more fully in Chapter 3, funded pensions are paid on behalf of its members.
- Funded pensions :: As explained more fully in Chapter 3, funded pensions are paid on behalf of its members.
- Funded pensions :: As explained more fully in Chapter 3, funded pensions are paid on behalf of its members.

Выбор всех элементов как региона и вызов fill-region-as-paragraph привел к:

* first header

- Funded pensions :: As explained more fully in Chapter 3, funded
pensions are paid on behalf of its members.  - Funded pensions :: As
explained more fully in Chapter 3, funded pensions are paid on behalf
of its members.  - Funded pensions :: As explained more fully in
Chapter 3, funded pensions are paid on behalf of its members.

что явно не то, что вы хотите.

Применение результатов fill-region-paragraph в следующем тексте:

* first header

- Funded pensions :: As explained more fully in Chapter 3, funded
     pensions are paid on behalf of its members.
- Funded pensions :: As explained more fully in Chapter 3, funded
     pensions are paid on behalf of its members.
- Funded pensions :: As explained more fully in Chapter 3, funded
     pensions are paid on behalf of its members.

Этот текст выглядит так, как вы хотите.

Выполнение C-u C - + даже дает право на отступ:

* first header

  - Funded pensions :: As explained more fully in Chapter 3, funded
       pensions are paid on behalf of its members.
  - Funded pensions :: As explained more fully in Chapter 3, funded
       pensions are paid on behalf of its members.
  - Funded pensions :: As explained more fully in Chapter 3, funded
       pensions are paid on behalf of its members.
3
добавлено
Вместо этого я использовал fill-region-as-paragraph с хорошими результатами только с одним исключением: в этом пункте я сначала вручную удалил первый разрыв строки.
добавлено автор Curlew, источник
См. Мой отредактированный пост.
добавлено автор Curlew, источник
Верстка сайтов HTML/CSS/JS/PHP
Верстка сайтов HTML/CSS/JS/PHP
3 439 участник(ов)

Правила группы: напишите !rules в чате. Группа Вк: vk.com/web_structure Freelancer: @web_fl Веб Дизайн: @dev_design Маркетолог: @topmarkening Автор: @M_Boroda

CSS — русскоговорящее сообщество
CSS — русскоговорящее сообщество
1 502 участник(ов)

Сообщество любителей CSS Возникли проблемы с CSS? – пиши сюда, обсудим и предложим самое лучшее решение Работа: @css_ru_jobs Правила: https://teletype.in/@css_ru/r1EWtQ2w7 Приходите в наши чаты @javascript_ru и @frontend_ru Флуд: @css_flood

Чат — Типичный Верстальщик
Чат — Типичный Верстальщик
1 080 участник(ов)

Основной канал: @tpverstak Обратная связь: @annblok Все ссылки на соц.сети проекта: http://taplink.cc/tpverstak ПРАВИЛА ЧАТА — https://teletype.in/@annblok/BygPgC3E7

Веб-Технологи: UI/UX, Вёрстка, Фронтенд
Веб-Технологи: UI/UX, Вёрстка, Фронтенд
167 участник(ов)

Всё про веб-дизайн и вёрстку. А также: HTML, CSS, флекс и бутстрапы, шаблонизаторы, препроцессоры, методологии, аглифаеры, улучшаторы и обфускаторы. Обсуждаем темы юзабилити, устраиваем А/В тесты лендингов, и проводим аудит.

DTP :: @DTPublish
DTP :: @DTPublish
147 участник(ов)

Обсуждаемые темы: полиграфия, препресс, верстка, дизайн, иллюстрации, скрипты, плагины. Канал - @DTPublishing

css_jobs
css_jobs
26 участник(ов)

Чат для вопросов по css и html: @css_ru Флуд: @css_flood Канал с вакансиями и резюме: @css_jobs_feed

css_флуд
css_флуд
10 участник(ов)