Menggunakan DeskTop untuk manajemen proyek dasar

12

Saya ingin menggunakan DeskTop untuk manajemen proyek dasar, yaitu membuka satu set buffer dan mengembalikan histori tergantung pada proyek yang saya kerjakan. Apakah ini mungkin, yaitu memiliki satu file desktop dalam direktori proyek dan bagaimana saya bisa mencapainya?

Rainer
sumber

Jawaban:

13

Saya perlu mengelola file desktop sama seperti Anda; memiliki file desktop terpisah untuk setiap proyek dan menyimpan buffer, variabel Emacs, dll secara terpisah untuk masing-masing proyek.

Saya dapat mencapai itu dengan menggunakan paket yang disebut bookmark+.

bookmark +

Bookmark Perpustakaan + mengelola berbagai jenis bookmark, salah satunya adalah Bookmark Desktop .

Setelah menginstal paket,

  • Anda harus memiliki (require 'bookmark+)diinit.el
  • Untuk membuat bookmark untuk setiap proyek, atur buffer yang Anda inginkan untuk setiap proyek dan lakukan M-x bmkp-set-desktop-bookmarkatau C-x p K. Itu akan menanyakan Anda di mana Anda ingin menyimpan file desktop dan Anda dapat memilih untuk menyimpannya di folder proyek itu.
  • Setelah mengatur bookmark desktop untuk semua proyek, Anda dapat beralih ke bookmark yang berbeda menggunakan M-x bmkp-desktop-jumpatau C-x j K.

The Bookmark + doc pada Emacs Wiki sangat informatif jika Anda ingin mempelajari lebih lanjut tentang paket ini.

desktop.el

Selain itu, saya memiliki yang berikut ini untuk mengatur desktoppaket tempat saya dapat memilih apa yang ingin saya simpan per desktop

(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)))

Menyimpan desktop spesifik proyek saat berhenti emacs

Saya merasa berguna untuk mengikat fungsi di bawah ini C-x C-cagar desktop dapat disimpan secara otomatis ketika saya keluar dari emacs.

(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))

Terkadang, saya tidak ingin menyimpan desktop saat berhenti emacs. Untuk kesempatan itu, saya menggunakan fungsi lain ini dan terikat untuk itu 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)))
Kaushal Modi
sumber
Terima kasih - yang terlihat SANGAT menjanjikan. Saya menemukan kombinasi bookmark + dan DeskTop sebelumnya, tetapi tidak dapat menemukan cara ringkas untuk melakukannya. Ini kedengarannya bagus. Saya akan mencobanya hari Senin terbaru!
Rainer
1
Perhatikan bahwa, tidak seperti halnya perintah desktop vanilla Emacs, Bookmark + bookmark desktop dimaksudkan untuk beralih di antara beberapa desktop. TKI, Anda dapat memiliki banyak file desktop. Dan file desktop Anda bisa di mana saja. Mereka tidak perlu berada di direktori yang berbeda. Penggunaan vanilla desktop menganggap bahwa Anda hanya memiliki satu file desktop per direktori.
Drew
@kaushalmodi Terima kasih - brilian. Dan sekarang saya harus banyak membaca tentang bookmark + - tetapi itu memang ingin saya inginkan.
Rainer
@Drew Ini persis apa yang saya cari - dan itu berfungsi seperti pesona.
Rainer
@kaushalmodi Saya berasumsi bahwa Anda menggunakan fungsi keluar Anda untuk dapat keluar dari emacs tanpa menyimpan desktop - atau apakah ada perbedaan, ketika ingin selalu menyimpan desktop, menggunakan variabel desktop-eveke `` ask-if-new`` `
Rainer
0

Saya cenderung menggunakan pengaturan berikut untuk menyimpan dan memuat / membaca file desktop dari direktori lokal dari masing-masing proyek:

 (require 'desktop)
 (setq desktop-path (list "./"))
 (desktop-save-mode 1)
 (desktop-read)

Ini bukan tanpa masalah karena beralih proyek melalui mis., Proyektil atau utilitas manajemen proyek lainnya tidak memuat file desktop apa pun tetapi saya dapat menggunakan projectile-after-switch-project-hookfungsi ini untuk memanggil fungsi pribadi untuk melakukan yang diperlukan.

ashraf
sumber