Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Ajouter automatiquement Local Variables

10 réponses
Avatar
Christophe Jorssen
Bonjour,

Je cherche à ajouter automatiquement à la fin d'un fichier (TeX) les
lignes suivantes, si elles n'existent pas déjà,

% Local Variables:
% coding: utf-8
% End:

où utf-8 serait remplacé par l'encodage effectivement utilisé dans le
buffer par emacs (c'est-à-dire celui donné en haut à gauche du mini-
buffer, à côté du nom du fichier).

Cela me semble quelque chose d'assez banal, mais je n'ai rien trouvé sur
le net.

Merci d'avance

--
Christophe

10 réponses

Avatar
pjb
Christophe Jorssen writes:

Je cherche à ajouter automatiquement à la fin d'un fichier (TeX) les
lignes suivantes, si elles n'existent pas déjà,

% Local Variables:
% coding: utf-8
% End:

où utf-8 serait remplacé par l'encodage effectivement utilisé dans le
buffer par emacs (c'est-à-dire celui donné en haut à gauche du mini-
buffer, à côté du nom du fichier).

Cela me semble quelque chose d'assez banal, mais je n'ai rien trouvé sur
le net.



Et on peut utiliser find-file-hook pour y mettre une commande vérifiant
la présence de cette variable.


(defun my-local-variables-meat ()
(interactive)
(unless (or buffer-file-read-only
(assoc 'coding file-local-variables-alist))
(add-file-local-variable 'coding buffer-file-coding-system)))

(add-hook 'find-file-hook 'my-local-variables-meat)


--
__Pascal Bourguignon__ http://www.informatimago.com/
Avatar
JJ. Rétorré
Christophe Jorssen disait le
10/29/10 que :

Bonjour,

Je cherche à ajouter automatiquement à la fin d'un fichier (TeX) les
lignes suivantes, si elles n'existent pas déjà,

% Local Variables:
% coding: utf-8
% End:

où utf-8 serait remplacé par l'encodage effectivement utilisé dans le
buffer par emacs (c'est-à-dire celui donné en haut à gauche du mini-
buffer, à côté du nom du fichier).

Cela me semble quelque chose d'assez banal, mais je n'ai rien trouvé sur
le net.

Merci d'avance



Chais pas faire, mais si tu utilisais templates.el , ça serait fait
automatiquement à la création du fichier, avec bien d'autres choses bien
confortables (classe, packages etc.).
Le TEMPLATE est celui que l'on a placé dans un répertoire
parent, à défaut dans .templates/ .

--
JJR.
Avatar
Christophe Jorssen
Bonjour et merci de ta réponse.

On Fri, 29 Oct 2010 12:43:50 +0200, Pascal J. Bourguignon wrote:

Et on peut utiliser find-file-hook pour y mettre une commande vérifiant
la présence de cette variable.



Donc, si je comprends bien, c'est une fonction qui est appelée à chaque
fois qu'on ouvre un fichier via C-x C-f (même si le fichier n'existe pas
encore). C'est bien ça.



(defun my-local-variables-meat ()
(interactive)
(unless (or buffer-file-read-only
(assoc 'coding file-local-variables-alist))
(add-file-local-variable 'coding buffer-file-coding-system)))

(add-hook 'find-file-hook 'my-local-variables-meat)



Ça ne fonctionne pas. J'obtiens ça :

if: Symbol's function definition is void: add-file-local-variable

Une idée ?

Merci

--
Christophe
Avatar
Christophe Jorssen
On Fri, 29 Oct 2010 12:50:29 +0200, JJ. Rétorré wrote:


Chais pas faire, mais si tu utilisais templates.el , ça serait fait
automatiquement à la création du fichier, avec bien d'autres choses bien
confortables (classe, packages etc.).
Le TEMPLATE est celui que l'on a placé dans un répertoire
parent, à défaut dans .templates/ .



Merci de ta réponse. Mais, je cherche à modifier des fichiers déjà
existants. Donc, si je comprends bien le principe de templates.el, ce
n'est pas pour ce genre de situation.

--
Christophe
Avatar
pjb
Christophe Jorssen writes:

Bonjour et merci de ta réponse.

On Fri, 29 Oct 2010 12:43:50 +0200, Pascal J. Bourguignon wrote:

Et on peut utiliser find-file-hook pour y mettre une commande vérifiant
la présence de cette variable.



Donc, si je comprends bien, c'est une fonction qui est appelée à chaque
fois qu'on ouvre un fichier via C-x C-f (même si le fichier n'existe pas
encore). C'est bien ça.



C-h v find-file-hook RET

Oui, on dirait bien que c'est ça.


(defun my-local-variables-meat ()
(interactive)
(unless (or buffer-file-read-only
(assoc 'coding file-local-variables-alist))
(add-file-local-variable 'coding buffer-file-coding-system)))

(add-hook 'find-file-hook 'my-local-variables-meat)



Ça ne fonctionne pas. J'obtiens ça :

if: Symbol's function definition is void: add-file-local-variable

Une idée ?



J'utilise emacs-version "23.2.1"
Peut être que c'est une nouvelle fonction?
Sinon, elle est dans files-x, alors peut être qu'en ajoutant devant:

(require 'files-x)

ça la chargera.

--
__Pascal Bourguignon__ http://www.informatimago.com/
Avatar
Christophe Jorssen
On Fri, 29 Oct 2010 13:31:57 +0200, Pascal J. Bourguignon wrote:

J'utilise emacs-version "23.2.1"
Peut être que c'est une nouvelle fonction? Sinon, elle est dans files-x,
alors peut être qu'en ajoutant devant:

(require 'files-x)

ça la chargera.



J'utilise Emacs 23.1.1. Mais en ajoutant (require 'files-x), j'obtiens

File error: Cannot open load file, files-x

Donc, je ne dois pas avoir le fichier en question. Une recherche
googleienne reste infructeuse. Peux-tu m'indiquer où le télécharger ?

Merci

--
Christophe
Avatar
pjb
Christophe Jorssen writes:

On Fri, 29 Oct 2010 13:31:57 +0200, Pascal J. Bourguignon wrote:

J'utilise emacs-version "23.2.1"
Peut être que c'est une nouvelle fonction? Sinon, elle est dans files-x,
alors peut être qu'en ajoutant devant:

(require 'files-x)

ça la chargera.



J'utilise Emacs 23.1.1. Mais en ajoutant (require 'files-x), j'obtiens

File error: Cannot open load file, files-x

Donc, je ne dois pas avoir le fichier en question. Une recherche
googleienne reste infructeuse. Peux-tu m'indiquer où le télécharger ?



ftp://ftp.gnu.org/gnu/emacs/emacs-23.2.tar.gz

--
__Pascal Bourguignon__ http://www.informatimago.com/
Avatar
Christophe Jorssen
On Fri, 29 Oct 2010 20:05:15 +0200, Pascal J. Bourguignon wrote:

Donc, je ne dois pas avoir le fichier en question. Une recherche
googleienne reste infructeuse. Peux-tu m'indiquer où le télécharger ?



ftp://ftp.gnu.org/gnu/emacs/emacs-23.2.tar.gz



Super. Merci, cela fait exactement ce que je voulais.

Je demande encore une petite chose tant que j'y suis : pour l'instant, le
curseur est situé à la fin du fichier. Y aurait-il un moyen de le ramener
au début ?

Merci d'avance

--
Christophe
Avatar
pjb
Christophe Jorssen writes:

On Fri, 29 Oct 2010 20:05:15 +0200, Pascal J. Bourguignon wrote:

Donc, je ne dois pas avoir le fichier en question. Une recherche
googleienne reste infructeuse. Peux-tu m'indiquer où le télécharger ?



ftp://ftp.gnu.org/gnu/emacs/emacs-23.2.tar.gz



Super. Merci, cela fait exactement ce que je voulais.

Je demande encore une petite chose tant que j'y suis : pour l'instant, le
curseur est situé à la fin du fichier. Y aurait-il un moyen de le ramener
au début ?



Si simplement en ajoutant l'instruction qui va bien à la fin:

(defun my-local-variables-meat ()
(interactive)
(unless (or buffer-file-read-only
(assoc 'coding file-local-variables-alist))
(add-file-local-variable 'coding buffer-file-coding-system))
(goto-char (point-min)))

Tu vois que c'est simple. Je ne peux que te conseiller d'apprendre un
peu d'emacs lisp pour pouvoir faire ce genre de petite fonction toi
même:

http://people.via.ecp.fr/~flo/2000/emacs-tut/ch-sec-elisp-intro.html
http://www.gnu.org/software/emacs/emacs-lisp-intro/

--
__Pascal Bourguignon__ http://www.informatimago.com/
A bad day in () is better than a good day in {}.
Avatar
Christophe Jorssen
On Tue, 02 Nov 2010 01:17:24 +0100, Pascal J. Bourguignon wrote:

Je demande encore une petite chose tant que j'y suis : pour l'instant,
le curseur est situé à la fin du fichier. Y aurait-il un moyen de le
ramener au début ?



Si simplement en ajoutant l'instruction qui va bien à la fin:

(defun my-local-variables-meat ()
(interactive)
(unless (or buffer-file-read-only
(assoc 'coding file-local-variables-alist))
(add-file-local-variable 'coding buffer-file-coding-system))
(goto-char (point-min)))




Merci.

Tu vois que c'est simple. Je ne peux que te conseiller d'apprendre un
peu d'emacs lisp pour pouvoir faire ce genre de petite fonction toi
même:

http://people.via.ecp.fr/~flo/2000/emacs-tut/ch-sec-elisp-intro.html
http://www.gnu.org/software/emacs/emacs-lisp-intro/



Simple, en effet ! J'avoue avoir dans ma bibliothèque An introduction to
programming in Emacs lisp depuis un certain temps... Mais ça reste un
nouveau langage à apprendre avec une longue histoire derrière lui, qui ne
s'apprend pas si facilement. En tout cas, merci : des morceaux de code
comme celui que tu m'as donné permettent de temps en temps de progresser
un peu !

Bonne journée

--
Christophe