リストをorg-modeでインデントする

私は、テキストをコピーして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-paragraphs が機能しない別の簡単な例は次のとおりです。

* 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
追加された 編集された
ビュー: 1
1つの項目を M-q で入力することができます。しかし、私はあなたがアイテムで地域を埋めると信じています。
追加された 著者 Mike Spivey,
このような例を投稿するべきです。
追加された 著者 Mike Spivey,
あなたの「他の簡単な例」は別のケースです。そこでは、 fill-paragraph のみを必要としません。各項目では、2番目の行はアイテムの箇条書きと同じ列から開始します。 org-syntaxは、この行は項目に属していないと言います。これはまさに org-adjust-region コマンドがある理由です。だから、この場合の私のお勧めは、 org-adjust-region 接頭引数を試してみることです。
追加された 著者 Mike Spivey,
はい org-adjust-region は、正しい組織構造を取得するために必要な数のスペースを箇条書きの前に挿入します。アイテムリストがorgファイルの最初のもので、 *最初のヘッダを削除した場合、 org-adjust-region は箇条書きの前にスペースを挿入しません。この動作は意図的です。 org-adjust-region は、現在の領域のテキストを、org-syntaxを尊重するように変換します。
追加された 著者 Mike Spivey,
私は別の例を試しました。私は自動的にM-qをインデントしたり、使用したり、 fill-region-as-paragraphfill-region-paragraphs を使用することはできません。最初の改行を手動で削除する必要があります。
追加された 著者 Curlew,
私の編集したポストを見てください。
追加された 著者 Curlew,
org-adjust-region は "この単純な例"で動作しますが、 - シンボルの前に2つのスペースも挿入します。たぶん私は "接頭引数"を付けて正しく実行していません。サイクリングのための TAB ですか?
追加された 著者 Curlew,
*最初のヘッダーを削除しましたが、現在リストは *** レベルにあります。私は org-adjust-region を実行し、箇条書きの前にスペースを挿入しません。ありがとうございました。
追加された 著者 Curlew,

1 答え

注意:元のバージョンの paragraph-fill の問題は、リージョンがアクティブな場合に fill-region を呼び出すことです。これにより、すべてのアイテムが、複数の塗りつぶしアイテムではなく、1つの塗りアイテムにマージされます。

代わりに、各段落を fill-paragraph の非インタラクティブ版で塗りつぶす fill-region-paragraphs というコマンドがあります。 したがって、領域内のアイテムは別々に塗りつぶされます。 コードでは、コマンドはキーシーケンス 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-uC - + を押して、必要な書式を取得します。

(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-paragraphs の結果を次のテキストに適用します。

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