Emacs masaüstü kaydetme modu - masaüstünü yalnızca önceki masaüstü tamamen geri yüklendiğinde kaydet


11

Bende aşağıdakiler var .emacs:

(desktop-save-mode 1)
(setq desktop-restore-eager 10)
(setq desktop-save t)

Genellikle açık çok fazla tampon var (100 ya da öylesine), o zaman bu gerçekten yardımcı olur - emacs sadece başka bir şeyle meşgul olmadığında tamponları yüklerken.

Şimdi, bazen aşağıdakiler olur: Dizüstü bilgisayarımı kapatmak istemeden önce emacs'ı kapatıyorum. Sonra fark ediyorum - bir dosyayı daha hızlı bir şekilde düzenlemem gerekiyor - bu yüzden emacs'ı tekrar açıyorum, düzenlemeyi gerçekleştiriyorum ve sonra kapatıyorum. Bu kısa bir süre içinde gerçekleşirse, desktop-save-modeönceden kaydedilmiş tüm arabellekleri geri yükleyemedi. Bu durumda, şimdi emacs'ı tekrar kapattığımda, yalnızca geri yüklenen arabellekler kaydedilir ve ilk kapanmadan önceki durum kaybolur.

desktop-saveÖnceden kaydedilmiş masaüstü tamamen geri yüklendiyse, bunu yapmanın bir yolu var mı ?

Yanıtlar:


3

Kullanabileceğiniz bir kanca var: desktop-after-read-hook. Masaüstü durumu geri yüklendikten sonra bir değişken ayarlamak için bir işlev ekleyin. Kullanılması defadviceetrafında desktop-savedeğişken durumunu kaydetmeden önce ayarlanmış olup olmadığını kontrol edin.

Emacs 25.3.1'deyim ve bu kullandığım kod:

(defvar *my-desktop-save* nil
  "Should I save the desktop when Emacs is shutting down?")

(add-hook 'desktop-after-read-hook
          (lambda () (setq *my-desktop-save* t)))

(advice-add 'desktop-save :around
            (lambda (fn &rest args)
              (if (bound-and-true-p *my-desktop-save*)
                  (apply fn args))))

Kimliğinize ekleyin .emacsve yeniden başlatın.


Merhaba teşekkürler, bu gerçekten de hile yapmalı. Ancak, emacs Lisp becerilerim biraz sınırlı. Belki denemeye başlayabileceğim bir lisp snippet'ini dahil etmek için cevabınızı genişletebilir misiniz ....
Christian Herenz

1
Cevabımı .emac'lerinizin kodunu eklemek için düzenledim.
Faried Nawaz
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.