Gérer son script de démarrage et ses backups pour EMACS

Salut à tous,

Un petit article 2 en 1 sur EMACS aujourd’hui. D’abord on va voir comment ranger ses fichiers de backups (les fichiers qui finissent par un « /.emacs@@) plus souple.

Ranger ses fichiers de backups

Ajouter ce qui suit dans votre ~/.emacs:

;; Backup directory
(setq backup-directory-alist
  `(("." . "~/.emacs-backups")))
(setq backup-by-copying t)
(setq delete-old-versions t kept-new-versions 6 kept-old-versions 2 version-control t)

Ici on précise de mettre tous les fichiers de backups dans le dossier ~/.emacs-backups (n’oubliez pas de le créer), puis on précise de conserver 6 nouvelles versions (au cas où on change le fichier puis décide de ne pas sauvegarder les changements), et deux anciennes versions.

Gérer son script de démarrage

Le fichier .emacs grandit vite à mesure qu’on utilise EMACS. Tellement qu’au bout d’un moment, il est si gros qu’on ne sait plus quoi fait quoi. Pour peu qu’on ait oublié de commenter, c’est la fin des haricots.

Du coup après un moment, j’ai décidé de rendre mon fichier d’init modulaire. Ainsi j’ai créé un dossier ~/.elisp/init/ dans lequel je met des petits scripts pour initialiser/régler un composant d’emacs chacun. Donc on passe du script ci-dessus à ceci:

(defconst *init-path* "~/.elisp/init/")
(defun load-init (file)
  (load (concat *init-path* file)))
; Loading
(load-init "backup.el")

Bien sûr on aura au préalable copié le code des backups dans le fichier ~/.elisp/init/backup.el. Ce qu’on fait ici c’est définir l’emplacement des fichiers d’init dans la variable globale *init-path*, puis on définit une fonction pour taper moins losrqu’on charge un composant. Du coup ça simplifie grandement le script, et on peut activer/désactiver des parties du script très facilement. Voyez plutôt le mien (Le « ; » introduit les commentaires en lisp, donc ça permet de désactiver des morceaux facilement):

(defconst *init-path* "~/.elisp/init/")
(defun load-init (file)
  (load (concat *init-path* file)))
; Loading
(load-init "dired.el")
(load-init "csv.el")
(load-init "dired.el")
(load-init "headers.el")
;(load-init "identica.el")
;(load-init "org.el")
(load-init "php.el")
;(load-init "slime.el")
(load-init "desktop.el")
(load-init "csharp.el")
(load-init "folding.el")
;(load-init "malabar.el")
(load-init "java.el")

Bon après-midi à tous!

Vus : 905
Publié par Etenil : 58