org-blank-new-input'tan bir YAPILACAKLAR listesi ile bir metin anahattı arasında ayrım yapsın mı?


10

Birçoğumuz gibi, iki farklı şey için org modunu kullanıyorum:

  1. Bir TODO liste yöneticisi olarak
  2. Bir metin anahattı olarak

Boş satırlarımın içeriğe göre farklı çalışmasını istiyorum.

  1. YAPILACAKLAR listesi: boş satır yok
  2. metin anahattı: Başlıksız metin başlıktan önce geldiğinde otomatik olarak 1 boş satır ekle

Diğer bir deyişle, arka arkaya birçok başlığım olduğunda bir YAPILACAKLAR listesi yaparken, aralarında başıboş satır sonları istemiyorum.

YAPILACAKLAR listesi modu, satır kesmesi yok:

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

Ancak, metin yazarken, görsel boşluk / okuma kolaylığı için satır sonları istiyorum.

anahat modu, gitmeden önce boş satır:

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

Otomatik olarak yeni girişten önce org-blank-girişini ayarladım:

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

Ama yeni girişten önce org-blank-alandaki diğer boş satırları tespit ederek işe yaradığını düşünüyorum. Önceki metin satırının bir başlık mı yoksa başlıksız mı olduğunu saptamasını istiyorum.

Yalnızca başlıklardan oluşan bir YAPILACAKLAR listesindeyken org-meta-returnsatır sonu eklemeyecek şekilde yeni bir girişten önce org-blank-girişini nasıl değiştirebilirim ? ama bir metin bloğundan sonra, öyle mi?


Bunun için bir düzeltme buldunuz mu? Aynı soruyu bir süre önce emacs subreddit üzerinde sormaya çalıştım ama boşuna.
MajorBriggs

Evet, özel bir işlev aracılığıyla. Göndereceğim.
incandescentman

Yanıtlar:


5

Bu, bir kuruluş başlığında olup olmadığını kontrol eden özel bir işlev oluşturarak yapılabilir.

(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
Bunu başlık eklemek için diğer üç yol için nasıl çalıştırabilirim: C-ret(org-insert-heading-respect-content), M-S-return(org-insert-todo-heading) ve C-S-return(org-insert-todo-heading-respect -içerikleri)?
MajorBriggs

Açıklamak için: org-insert-todo-headingBöyle bir anahtara bağlasam bile çalışmıyor: (define-key org-mode-map (kbd "MS- <return>") 'smart-org-insert-todo-heading-dwim)
MajorBriggs
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.