68 votes

Pourquoi emacs crée-t-il des liens symboliques temporaires pour les fichiers modifiés?

Quand je modifie un tampon, Emacs crée automatiquement un temporaire lien symbolique dans le même répertoire que le fichier en cours d'édition (par exemple toto.c):

.#foo.c -> user@host.12345:1296583136

où '12345' est Emacs' PID (je ne sais pas ce que le dernier numéro de moyens).

Pourquoi ne Emacs créer ces liens, et comment puis-je l'empêcher de le faire?

Notez que j'ai désactivé auto save mode (M-x auto-save-mode) et désactivé les fichiers de sauvegarde (M-x set-variable -> make-backup-files -> nil). Lorsque j'enregistre une modification de la mémoire tampon, ou d'annuler les modifications apportées à elle, le lien disparaît.

En particulier, j'essaie de prévenir Emacs à partir de la création de ces liens car ils provoquent le répertoire d'horodatage à être modifié, ce qui provoque notre système de construction pour reconstruire un module entier au lieu de la compilation et la liaison d'un fichier modifié :/

Merci pour toute entrée!


Mise à jour: afin de prévenir Emacs à partir de la création de verrouillage des fichiers de façon permanente, vous pouvez modifier src/filelock.c et de construire un binaire:

void
lock_file (fn)
     Lisp_Object fn;
{
     return;
     // Unused code below...
}

Mise à jour 2: Arne réponse est bonne. Il est maintenant possible de désactiver la fonction de verrouillage des fichiers dans le dernier Emacs (24.3.1), en ajoutant ceci à votre .emacs fichier:

(setq create-lockfiles nil)

61voto

Mise à jour: Emacs 24.3 a été libéré avec un support complet pour ce nouveau décor!

Dans le courant de tronc d'emacs, vous pouvez simplement personnaliser la variable de créer des fichiers de verrous:

C-h v create-lockfiles

Documentation: Non-nil signifie utiliser des fichiers de verrous afin d'éviter d'éditer les collisions.

Dans votre fichier init, vous pouvez définir

(setq create-lockfiles nil)

L'obtenir via

bzr branch bzr://bzr.savannah.gnu.org/emacs/trunk emacs-trunk
make
src/emacs

(J'ai découvert à ce sujet, parce que j'ai décidé d'être actif, et juste ajouter une option comme ça moi-même... :) )

35voto

Juancho Points 3513

Le lien symbolique est d'emacs fichier système de verrouillage: le lien symbolique indique qu'une instance d'emacs est l'édition de ce fichier. Si une autre instance tente de modifier le même fichier, emacs affiche un message d'avertissement. Voir http://www.gnu.org/software/emacs/manual/html_node/emacs/Interlocking.html

Cela n'a rien à voir avec la fonction de sauvegarde automatique.

Je ne trouve pas comment modifier ou de désactiver le verrouillage des fichiers à partir de l'intérieur d'emacs.

-2voto

Mikel Points 10000

Si je comprends bien, la plupart des éditeurs font:

  • ouvrir fichier temporaire
  • enregistrer le fichier temporaire
  • renommer le fichier temporaire -> fichier

Cela est beaucoup plus sûr que de tronquer et d’écraser le fichier sur place, ce qui vous éviterait de perdre le fichier si le système se bloquait à ce moment-là (ou à tout moment entre et lorsque le fichier est physiquement vidé sur le disque).

Vous pourrez peut-être désactiver cette option, mais je pense que la meilleure option est peut-être de changer votre système de construction.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X