Kuruluş modu arabelleklerini otomatik olarak nasıl kaydederim?


22

org-modeYapılacaklar listemi takip etmek için düzenli olarak ve gündemi kullanıyorum . Listemi senkronize etmek için Dropbox kullandığım için, tüm bilgisayarlarda da aynı görevleri yapmam gerekiyor. Bazen temizleme sırasında, ofise girdiğimde evde emac'ları açık bırakarak değişikliklerimi saklamayı unutabilirim (bu yüzden emacs'leri kapatırken tasarruf etmem istenmez). *.orgGündemde değiştirilen gündem arabelleklerinde yapılan değişiklikleri otomatik olarak nasıl kaydedebilirim ?

EDIT: Açıklığa kavuşturmak için bana bir genel bakış göstermek için görevlerimin gündem görünümünü kullanın. Bu açıdan, görevlerin durumunu değiştirebilirim. Ek olarak, yeni görevler eklemek için hatırlama modunu kullanıyorum; bunlar daha sonra gündem görünümünde yeniden sınıflandırılabilir. Gündemdeki bu değişiklikler, daha sonra kaydedilmesi gereken değiştirilmiş org-mode gündem arabellekleriyle sonuçlanır. Bu değişiklikler yapıldığında, tamponların otomatik olarak kaydedilmesini istiyorum.


"Gündemde değişiklik yapılan * .org gündem arabelleklerinde yapılan değişiklikleri otomatik olarak nasıl kaydedebilirim?" ? “Gündemde otomatik olarak tasarruf etmenin… (kendi kendine çelişen görünüyor) veya“ gündemde değiştirilen tamponların ”(anlayamadığım) olup olmadığına karar veremem
Sigma

@Sigma Aydınlatmak için soruyu güncelledim.
Ryan,

1
Şimdiye kadarki çözümüm s, Gündem görünümünde sıkça tuşa dokunmak için parmaklarımı yeniden eğitmekti .
mankoff

@mankoff C-x C-sBir org-agenda dosyasında (gündemden veya doğrudan) herhangi bir değişiklik yaptığımda istediğim zaman kendimi vurduğumu düşünüyorum . Otomatik değil ama her şeyi saklı tutuyor.
Jonathan Leech-Pepin,

Yanıtlar:


16

Kullanım durumunuzu tatmin edeceğinden emin olmadığım hızlıca kesmek

(add-hook 'org-agenda-mode-hook
          (lambda ()
            (add-hook 'auto-save-hook 'org-save-all-org-buffers nil t)
            (auto-save-mode)))

Org ajanda tamponu açık olduğu sürece, tüm org tamponları periyodik olarak kaydedilir ( sdüzenli olarak ajanda görünümünden basılırsa ne olacağına eşdeğerdir ).

Bu, auto-save-modegündem tamponunun kendisinin auto-savesöz konusu olduğu kadar mantıklı gelmediğinden biraz kötüye kullanıyor .

Bu hack'i kullanırsanız, güvenli tarafta olmak için tüm .org dosyalarınız için yedekleme dosyalarının saklandığından emin olmalısınız.


1
Bu yaklaşımla ilgili en büyük sorun, otomatik kaydetmenin ajanda tamponunu etkin dizindeki bir dosyaya kaydetmesidir. Bu, dosya sistemime dağılmış çok sayıda artık otomatik kaydetme dosyası oluşturdu. Nasıl giderileceğinden emin değilim.
holocronweaver

7

Belirli bir gündem işlevi çağrıldığında, tüm arabellekleri kaydedebilirsiniz. Örneğin, gündemden çıktıktan sonra tüm kuruluş tamponlarını kaydetmek için:

(advice-add 'org-agenda-quit :before 'org-save-all-org-buffers)

Alternatif olarak, her düzenleme sonrasında tüm sonbellekleri kaydedebilir, örneğin bir son tarih eklendikten sonra:

(advice-add 'org-deadline :after 'org-save-all-org-buffers)

Bu hem org gündeminde hem de org tamponlarında çalışacaktır. org-agenda-deadlineOtomatik kayıtları ajandayla sınırlandırmak istiyorsanız bunun yerine kullanın .

Herhangi bir org işlevi için aynısını yapabilirsiniz, bu nedenle bu yöntem org arabelleklerini tam olarak ne zaman kaydedeceğinizi seçmenize izin verir. Bu yaklaşım, @Sigma'nın kaçırdığı bazı köşe vakalarını kapsar: daha önce gündemden ayrılsanız bile auto-savetetikleme veya gündem dışında değişiklik yapma şansını yakalayıp, gündem dışında değişiklik yapma şansını yakalasanız bile, gündem değişikliklerinizi kaydedebilirsiniz. Her iki yöntemi de kişisel olarak tüm üslerimi örtmek için kullanıyorum. [Düzenle: Neden artık çözümünü kullanmadığım için @Sigma çözümü hakkındaki yoruma bakın.]


2
Bu benim için kabul edilmiş cevaptan daha iyi çalıştı çünkü tasarruf etmeyi unuttuğum tek zaman doldurdum. (advice-add 'org-refile :after 'org-save-all-org-buffers)farklı dosyaları yeniden doldurduktan sonra org dosyalarını otomatik olarak kaydetti.
BU KULLANICI

İstediğiniz org fonksiyonuna uygulanabilecek en iyi cevap budur.
KevinG,

Bunu uyguladığımda org-refile, artık org-refilebir önek argümanını arayarak (imlecin altındaki birini tekrar doldurmak yerine) belirli bir başlığa "gitmediğim" anlamına geldiğini öğrendim ..
quantum285

6

Daha karmaşık birçok cevap görüyorum, bu benim için işe yaradı:

`(add-hook 'auto-save-hook 'org-save-all-org-buffers)`

Otomatik Kaydet varsayılan olarak 30 saniye kullanılmadığında çalışır (ve kılavuzda belgelenen diğer ilgili olmayan senaryolarda )


Tam olarak aradığım şeydi.
LVB

4

Yeni bir yakalamanın ardından tüm gündem modu arabelleklerini otomatik olarak kaydetmek için aşağıdaki pasajı kullanıyorum, ancak istediğiniz yere bağlayabilirsiniz:

(defun my/save-all-agenda-buffers ()
  "Function used to save all agenda buffers that are
currently open, based on `org-agenda-files'."
  (interactive)
  (save-current-buffer
    (dolist (buffer (buffer-list t))
      (set-buffer buffer)
      (when (member (buffer-file-name)
                    (mapcar 'expand-file-name (org-agenda-files t)))
        (save-buffer)))))

;; save all the agenda files after each capture
(add-hook 'org-capture-after-finalize-hook 'my/save-all-agenda-buffers)

Değişim 'org-capture-after-finalize-hookiçin 'org-agenda-finalize-hooksadece gündemi tampon görüntülemeden önce denir inanıyorum.


Unutmayalım ki, fonksiyonumun uygun olması gerekiyor.
Lee H

2
Yakalama sırasında, öğeleri herhangi bir org-refile-targetshedefe hemen yeniden kaydedebilirsiniz , bu nedenle tasarrufun org-agenda-filesyeterli olmaması mümkündür . Muhtemelen sadece org-save-all-org-bufferskendimi arardım.
sanityinc

1
PS dashOrada kullanmaya gerek yok: mapcaryerleşiktir ve aynı şeyi yapar.
sanityinc

@ sanityinc teşekkürler, mapcartire yerine kullanmak için kod güncellendi !
Lee H,
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.