Lijsten inspringen in de org-modus

Ik heb tekst in een orgbestand gekopieerd en geplakt en als een lijst opgemaakt:

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

Hoe kan ik de lijst laten opmaken als:

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

Een ander eenvoudig voorbeeld waarbij fill-region-paragraph niet werkt, is:

* 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
U kunt één enkel item vullen met M-q . Maar ik geloof dat je een regio met items wilt vullen.
toegevoegd de auteur Mike Spivey, de bron
U moet een dergelijk voorbeeld plaatsen.
toegevoegd de auteur Mike Spivey, de bron
Uw "andere eenvoudige voorbeeld" is een ander geval. Daar wil je niet alleen vul-alinea . In elk item begint de tweede regel in dezelfde kolom als het opsommingsteken van het item. De org-syntaxis zegt dat deze regel niet bij het item hoort. Dit is precies de reden waarom er de opdracht org-adjust-region is. Dus mijn aanbeveling voor deze case is om org-adjust-region te proberen met prefix arg .
toegevoegd de auteur Mike Spivey, de bron
Ja org-adjust-region voegt zoveel spaties vóór het opsommingsteken in als nodig is om de juiste organisatiestructuur te krijgen. Als de itemlijst het eerste is in het orgbestand en u * eerste header verwijdert, voegt org-adjust-region geen spaties in vóór de opsommingstekens. Dit gedrag is opzettelijk. org-adjust-region transformeert de tekst in de huidige regio zodanig dat deze de org-syntax respecteert.
toegevoegd de auteur Mike Spivey, de bron
Ik probeerde het met een ander voorbeeld. Ik kan niet automatisch inspringen, noch gebruik maken van M-q, noch opvulgebied-als-paragraaf of opvulgebied-alinea's . Ik moet de eerste regeleinde handmatig verwijderen.
toegevoegd de auteur Curlew, de bron
Zie mijn bewerkte bericht.
toegevoegd de auteur Curlew, de bron
org-adjust-region werkt met "het eenvoudige voorbeeld", maar voegt ook 2 spaties in vóór het symbool - . Misschien doe ik het niet goed "met voorvoegsel arg". Is het TAB om te fietsen?
toegevoegd de auteur Curlew, de bron
Ik heb * eerste header verwijderd en de lijst is nu onder niveau *** . Ik voer org-adjust-region uit en er worden geen spaties ingevoegd vóór de opsommingstekens. Dank je.
toegevoegd de auteur Curlew, de bron

1 antwoord

Let op, het probleem met de originele versie van alinea-opvulling is dat het opvulgebied aanroept als de regio actief is. Hiermee worden alle items samengevoegd tot één gevuld item in plaats van meerdere gevulde items.

Er volgt een opdracht opvulgebied-alinea's die elke alinea vult met de niet-interactieve versie van vul-alinea . De items in de regio worden dus afzonderlijk gevuld. In de code is de opdracht gebonden aan de sleutelreeks C-c f . U kunt dit naar wens aanpassen.

(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)

Hieronder is er een uitgebreide versie van de code van het antwoord op een andere vraag . Ik heb paragraph-fill eraan toegevoegd.

Selecteer eerst de items die u wilt vullen. Druk vervolgens op het prefix arg C-u en C - + om de gewenste opmaak te krijgen.

(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)

In emacs -Q 25.1.50.2 heb ik het volgende orgbestand test.org gebruikt om te testen:

* 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.

Het selecteren van alle items als regio en het aanroepen van fill-region-as-paragraph heeft geresulteerd in:

* 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.

wat duidelijk niet is wat je wilt.

Het toepassen van fill-region-paragraph resulteert in de volgende tekst:

* 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.

Deze tekst lijkt mij zoals je wilt.

Als u C-u C - + uitvoert, krijgt zelfs de inspringing gelijk:

* 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
toegevoegd
Ik gebruikte in plaats daarvan opvulgebied-als-paragraaf met goede resultaten met slechts één uitzondering: in die alinea moest ik eerst het eerste regelverloop handmatig verwijderen.
toegevoegd de auteur Curlew, de bron
Zie mijn bewerkte bericht.
toegevoegd de auteur Curlew, de bron