org-blank-before-new-entryにTODOリストとテキストのアウトラインを区別させますか?


10

私たちの多くがそうであるように、私は2つの異なることにorg-modeを使用しています。

  1. TODOリストマネージャーとして
  2. テキストアウトライナーとして

空白行を状況に応じて異なる方法で機能させたい。

  1. TODOリスト:空白行なし
  2. テキストのアウトライン:見出し以外のテキストが見出しの前にある場合、自動的に1行の空白行を挿入します

つまり、TODOリストを実行しているときに、多数の見出しが連続している場合、それらの間に改行を入れたくありません。

TODOリストモード、改行なし:

* Organize Party [33%]
 ** TODO Call people [1/2]
 *** TODO Peter
 *** DONE Sarah
 ** TODO Buy food
 ** DONE Talk to neighbor 

ただし、テキストを書いているときは、視覚的な空白/読みやすさのために改行が必要です。

アウトラインモード、見出しの前の空白行:

* Heading 
This is a document that has a heading, and a body. The body will consist of two paragraphs with sub-headings.

* Body  
This is an introduction to the body. The body has two sub-headings, each of which have their own paragraph.  

** The First Paragraph  
This is the first of two paragraphs. 

** The Second Paragraph
This is the second of two paragraphs.  

私はすでにorg-blank-before-new-entryをautoに設定しています:

 ((heading . auto)
 (plain-list-item . auto))

しかし、org-blank-before-new-entryは、エリア内の他の空白行を検出することで機能すると思います。前のテキスト行が見出しか非見出しかを検出したい。

見出しだけで構成されるTODOリストにいるときにorg-meta-return改行を追加しないように、どのようにorg-blank-before-new-entryを変更できますか?しかし、テキストのブロックの後、それはありますか?


これに対する修正を見つけましたか?しばらくの間、emacs subredditで同じ質問をしてみましたが、役に立ちませんでした。
MajorBriggs、2015年

はい、カスタム関数を使用します。投稿します。
白熱

回答:


5

これは、組織の見出しにあるかどうかを確認するカスタム関数を作成することで実行できます。

(setq org-blank-before-new-entry
      '((heading . always)
       (plain-list-item . nil)))

(defun call-rebinding-org-blank-behaviour (fn)
  (let ((org-blank-before-new-entry
         (copy-tree org-blank-before-new-entry)))
    (when (org-at-heading-p)
      (rplacd (assoc 'heading org-blank-before-new-entry) nil))
    (call-interactively fn)))

(defun smart-org-meta-return-dwim ()
  (interactive)
  (call-rebinding-org-blank-behaviour 'org-meta-return))

(defun smart-org-insert-todo-heading-dwim ()
  (interactive)
  (call-rebinding-org-blank-behaviour 'org-insert-todo-heading))

(define-key org-mode-map (kbd "M-<return>") 'smart-org-meta-return-dwim) 

1
見出しを挿入する他の3つの方法でこれをどのように機能させることができますか:C-ret(org-insert-heading-respect-content)、M-S-return(org-insert-todo-heading)、およびC-S-return(org-insert-todo-heading-respect -コンテンツ)?
MajorBriggs、2015年

明確org-insert-todo-headingにするには、次のようにキーにバインドしても機能しません:(define-key org-mode-map(kbd "MS- <return>") 'smart-org-insert-todo-heading-dwim)
MajorBriggs、2015年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.