Comment puis-je comprendre cela? p>
J'ai ajouté Puis-je créer le Supprimer-whitespace-whitespace code> au
avant-enregistrez-crochet code> dans mon
C-Mode-Crochet commun code>, mais il On dirait que
Supprimer-traction-whitespace code> est appelé pour chaque fichier, pas seulement des tampons utilisant le mode C et les dérivés. p>
avant-sauvegarde-crochet code> tampon local? p>
5 Réponses :
Jamais voulu le faire avant, mais cela devrait fonctionner: dans le général CH V sera invitée à un nom de variable et affichera une description vous indiquant si le Var est tampon-local. P> Avant-sauve-crochet est une variable définie
dans `Files.el '. Sa valeur est nul p>
Cette variable est potentiellement risquée
Lorsqu'il est utilisé comme variable locale de fichier. p>
Documentation: Crochet normal qui est exécuté
avant qu'un tampon soit enregistré dans son fichier. P>
Vous pouvez personnaliser cette variable. P>
blockQuote> vs. p> La fonction d'erreur suivante est une variable
défini dans `simple.el '. Sa valeur est
nil p>
devient automatiquement tampon-local
quand réglé de n'importe quelle mode. Ce
La variable est potentiellement risquée lorsque
utilisé comme variable locale de fichier. p>
Documentation: fonction à utiliser pour trouver
l'erreur suivante dans le tampon actuel.
La fonction est appelée avec 2
Paramètres: p>
[...] p>
blockQuote> p>
Je ne sais pas si cela était correct à l'époque où il a été écrit, mais la documentation actuelle indique "N'utilisez pas make-local-variable code> pour créer un tampon variable de crochet-local. Utilisez plutôt < Code> Ajout-crochet code> et spécifier
t code> pour l'argument local. "
La dépréciation de make-local-variable code> pour les hameçons remonte à EMACS-21.
Ajoutez-le à Contenu en écriture-Contenu-Fonctions Code> à la place:
(add-hook 'c-mode-common-hook
(lambda()
(add-hook 'write-contents-functions
(lambda()
(save-excursion
(delete-trailing-whitespace)))
nil t)))
Merci; J'ai corrigé le bogue correspondant sur Emacswiki et a souligné ici pour le crédit.
(Presque) Tous les crochets sont à la fois locaux et globaux. Il suffit d'utiliser l'argument local de code> add-hameçon 'pour indiquer si vous souhaitez ajouter votre fonction globalement ou tampon-localement.
Local-Write-File-Hagles CODE> est obsolète depuis EMACS-22.1, comme l'est
Ecrire-File-Hooks Code> (remplacé par
Fonctions de fichier écriture-write-file code>) , vous pouvez donc vouloir mettre à jour votre manuel de référence.
Utilisez Contenu en écriture-Contenu-Fonction Code> à la place:
write-contents-functions is a variable defined in `files.el'.
Its value is nil
Automatically becomes buffer-local when set in any fashion.
Documentation:
List of functions to be called before writing out a buffer to a file.
If one of them returns non-nil, the file is considered already written
and the rest are not called and neither are the functions in
`write-file-functions'.
This variable is meant to be used for hooks that pertain to the
buffer's contents, not to the particular visited file; thus,
`set-visited-file-name' does not clear this variable; but changing the
major mode does clear it.
For hooks that _do_ pertain to the particular visited file, use
`write-file-functions'. Both this variable and
`write-file-functions' relate to how a buffer is saved to file.
To perform various checks or updates before the buffer is saved,
use `before-save-hook'.
Pourquoi utiliser une utilisation en écriture-contenties-fonctions au lieu de crochets de fichiers locaux-écriture?
Non, la variable Si vous souhaitez ajouter un crochet local tampon, la bonne façon de le faire est d'utiliser le paramètre local optionnel. DU STANDARD avant-sauvegarde-crochet code> n'est pas naturellement tampon local. La documentation de la variable ne dit pas qu'il est local de la mémoire tampon ou que cela deviendra automatiquement une liste de tampon locale lorsqu'il est défini.
ADD-HOOK CODE> Fonction: P>
(add-hook 'before-save-hook 'foo nil t)
Oui Créez un Ceci ajoutera ce crochet uniquement à Mais si vous voulez seulement un fichier spécifique et non un répertoire entier, vous devriez pouvoir ajouter ceci au haut du fichier à l'aide de fichiers variables locales: p> ou bas de fichier comme ceci: p> .Dir-locals.el CODE> fichier dans votre répertoire racine de projet avec ce contenu:
C-MODE CODE> TAmps tampons sous ce répertoire. p>
Il y a aussi
ws-garn code>, lequel est ce que j'utilise: FTP.LYSATOR.LIU.SE/PUB/EMACS/WS-TRIM.EL
Si un crochet est tampon-local ou non est la mauvaise question: tous les crochets sont. La question est de savoir si la fonction que vous avez ajoutée a été ajoutée à la partie tampon-local ou à la partie globale (qui dépend de l'argument code> code> que vous avez transmis à
ajout code>) .