Yanıtlar:
Masaüstü dosyalarını sizin gibi yönetmem gerekiyordu; her proje için ayrı bir masaüstü dosyası bulundurun ve her biri için bağımsız olarak arabellekleri, Emacs değişkenlerini vb. kaydedin.
Bunu adında bir paket kullanarak başardım bookmark+
.
Kütüphane Yer İşareti + farklı yer işaretlerini yönetir, bunlardan biri Masaüstü Yer İşaretleri'dir .
Paketi kurduktan sonra,
(require 'bookmark+)
içinde olması gerekirinit.el
M-x bmkp-set-desktop-bookmark
veya yapın C-x p K. Bu, masaüstü dosyasını nereye kaydetmek istediğinizi soracaktır ve dosyayı bu projenin klasörüne kaydetmeyi seçebilirsiniz.M-x bmkp-desktop-jump
veya tuşlarını kullanarak farklı yer işaretlerine atlayabilirsiniz C-x j K.İmi + Daha bu paketle ilgili bilgi edinmek istiyorsanız Emacs Wiki üzerinde doc çok bilgilendirici.
Buna ek olarak, desktop
masaüstü başına kaydetmek istediğim her şeyi seçebileceğim paketi kurmak için aşağıdakilere sahibim
(desktop-save-mode 1)
;; Source: https://github.com/purcell/emacs.d/blob/master/lisp/init-sessions.el
; save a bunch of variables to the desktop file
;; for lists specify the len of the maximal saved data also
(setq desktop-globals-to-save
(append '((comint-input-ring . 50)
(compile-history . 30)
desktop-missing-file-warning
(dired-regexp-history . 20)
(extended-command-history . 30)
(face-name-history . 20)
(file-name-history . 100)
(grep-find-history . 30)
(grep-history . 30)
(ido-buffer-history . 100)
(ido-last-directory-list . 100)
(ido-work-directory-list . 100)
(ido-work-file-list . 100)
(magit-read-rev-history . 50)
(minibuffer-history . 50)
(org-clock-history . 50)
(org-refile-history . 50)
(org-tags-history . 50)
(query-replace-history . 60)
(read-expression-history . 60)
(regexp-history . 60)
(regexp-search-ring . 20)
register-alist
(search-ring . 20)
(shell-command-history . 50)
tags-file-name
tags-table-list)))
C-x C-cEmacs çıktıktan sonra masaüstü otomatik olarak kaydedilmesi için aşağıdaki işlevi bağlamak yararlı buluyorum .
(defun save-desktop-save-buffers-kill-emacs ()
"Save buffers and current desktop every time when quitting emacs."
(interactive)
(desktop-save-in-desktop-dir)
(save-buffers-kill-emacs))
Bazen, emacs çıkarken masaüstünü kaydetmek istemem. Bu durumlar için, bu diğer işlevi kullanıyorum ve bunu da bağladım C-x M-c.
;; Kill emacs when running in daemon mode or not
;; Source: http://lists.gnu.org/archive/html/emacs-devel/2011-11/msg00348.html
(defun tv-stop-emacs ()
(interactive)
(if (daemonp)
(save-buffers-kill-emacs)
(save-buffers-kill-terminal)))
desktop-eve
`` yeni sor '' olarak kullanmak için bir fark var `?
İlgili projelerin yerel dizininden masaüstü dosyasını kaydetmek ve yüklemek / okumak için aşağıdaki kurulumu kullanma eğilimindeyim:
(require 'desktop)
(setq desktop-path (list "./"))
(desktop-save-mode 1)
(desktop-read)
Projeler arasında geçiş, mermi veya diğer proje yönetimi yardımcı programları herhangi bir masaüstü dosyası yüklemez gibi sorunları olmadan değil, projectile-after-switch-project-hook
bir ihtiyaç yapmak için özel bir işlevi çağırmak için işlevi kullanabilirsiniz