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.