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

Fin de fichier

23 réponses
Avatar
Ph. Ivaldi
Bonjour,

Je viens de remarquer que, en mode texte, Emacs ajoute systématiquement
un retour à la ligne à la dernière ligne si elle n'en possède pas.
C'est le comportement par défaut ?
Il y a une variable qui contrôle ça ?

Merci.
--
Philippe Ivaldi.
http://www.piprime.fr/

10 réponses

1 2 3
Avatar
Damien Wyart
* Ph. Ivaldi in fr.comp.applications.emacs:
Je viens de remarquer que, en mode texte, Emacs ajoute systématiquement
un retour à la ligne à la dernière ligne si elle n'en possède pas.
C'est le comportement par défaut ?



D'après la doc, je crois que oui.

Il y a une variable qui contrôle ça ?



next-line-add-newlines

--
DW
Avatar
Ph. Ivaldi
Le 21 septembre 2009, Damien Wyart écrivit :

* Ph. Ivaldi in fr.comp.applications.emacs:
Je viens de remarquer que, en mode texte, Emacs ajoute systématiquement
un retour à la ligne à la dernière ligne si elle n'en possède pas.
C'est le comportement par défaut ?


D'après la doc, je crois que oui.



C'est documenté où ?

Il y a une variable qui contrôle ça ?


next-line-add-newlines



Ce n'est pas celle-là que je cherche :-(
next-line-add-newlines évite juste l'erreur `end of buffer' quand on
veut descendre au delà de la fin du buffer; elle est à nil chez moi.

En fait, en me relisant je me rends compte que je n'ai pas été vraiment
clair.
C'est quand je sauvegarde le fichier que le saut de ligne est ajouté.
Si le buffer en text-mode contient exactement ce qu'il y a dans les
ciseaux
8<------8<------8<------8<------8<------8<------8<------8<------8<------
Du texte du texte du texte Du texte du texte du texte
8<------8<------8<------8<------8<------8<------8<------8<------8<------

après sauvegarde, j'obtiens:
8<------8<------8<------8<------8<------8<------8<------8<------8<------
Du texte du texte du texte Du texte du texte du texte

8<------8<------8<------8<------8<------8<------8<------8<------8<------

Il me semble avoir vu passer une variable qui contrôle ce
comportement...
--
Philippe Ivaldi.
http://www.piprime.fr/
Avatar
Damien Wyart
> > Je viens de remarquer que, en mode texte, Emacs ajoute
> > systématiquement un retour à la ligne à la dernière ligne si elle
> > n'en possède pas. C'est le comportement par défaut ?

> D'après la doc, je crois que oui.



* Ph. Ivaldi in fr.comp.applications.emacs:
C'est documenté où ?



Erreur de ma part, next-line-add-newlines est à nil par défaut :
http://www.gnu.org/software/emacs/manual/html_node/emacs/Moving-Point.html

>> Il y a une variable qui contrôle ça ?
> next-line-add-newlines

Ce n'est pas celle-là que je cherche :-(
next-line-add-newlines évite juste l'erreur `end of buffer' quand on
veut descendre au delà de la fin du buffer; elle est à nil chez moi.

En fait, en me relisant je me rends compte que je n'ai pas été vraiment
clair.
C'est quand je sauvegarde le fichier que le saut de ligne est ajouté.
Si le buffer en text-mode contient exactement ce qu'il y a dans les
ciseaux
8<------8<------8<------8<------8<------8<------8<------8<------8<------
Du texte du texte du texte Du texte du texte du texte
8<------8<------8<------8<------8<------8<------8<------8<------8<------

après sauvegarde, j'obtiens:
8<------8<------8<------8<------8<------8<------8<------8<------8<------
Du texte du texte du texte Du texte du texte du texte

8<------8<------8<------8<------8<------8<------8<------8<------8<------

Il me semble avoir vu passer une variable qui contrôle ce
comportement...



Il s'agit de require-final-newline. Voir les détails ici :
http://www.gnu.org/software/emacs/manual/html_node/emacs/Customize-Save.html

Ce qui est décrit dans l'exemple avec les ciseaux n'est pas le
comportement par défaut.

--
DW
Avatar
Damien Wyart
Sinon, un petit détail : pour éviter un champ Sender dans les messages
envoyés avec Gnus, ce qui insère une info purement interne, on peut
utiliser ceci dans .gnus.el :

(require 'message)
(add-to-list 'message-syntax-checks '(sender . disabled))

--
DW
Avatar
Sébastien Kirche
Le 21 septembre 2009 à 23:35, Damien Wyart a dit :

Il s'agit de require-final-newline. Voir les détails ici :
http://www.gnu.org/software/emacs/manual/html_node/emacs/Customize-Save.html

Ce qui est décrit dans l'exemple avec les ciseaux n'est pas le
comportement par défaut.



Moi j'ai ça dans ma config :

;; s'assurer que les fichiers comportent des newline finaux
;; nil n'ajoute pas de newline
;; non-nil pose la question
;; t rajoute les newlines automatiquement
(setq require-final-newline 1
mode-require-final-newline 1)

Pour répondre à la question de Philippe, quand il y a un newline final
c'est mieux.

Il y a plein d'outils de dev qui râlent quand on travaille sur des
fichiers dont la dernière ligne de texte ne comporte pas de newline :
diff me vient immédiatement en tête mais il y en a d'autre, y compris
Emacs.
En plus quand on sélectionne du texte dont la fin ne comporte pas de
newline, cela peut avoir des effets indésirables : le texte
immédiatement après se retrouve parfois collé à la fin de la dernière
ligne insérée, et dans du code ça peut casser des choses...
--
Sébastien Kirche
Avatar
Damien Wyart
* Sébastien Kirche
in fr.comp.applications.emacs:
Pour répondre à la question de Philippe, quand il y a un newline final
c'est mieux.



Oui, dans pas mal de cas, c'est bien, mais ça me gêne de l'activer par
défaut car si je l'oublie en éditant un fichier qui doit rester
strictement identique aux modifs explicites près, ça va gêner... je n'ai
pas d'exemple en tête mais avoir Emacs qui ajoute un truc par derrière
m'embpete pour le cas où je ne voudrais vraiment pas qu'il le fasse mais
où je vais l'oublier...

Donc le plus souvent, je fais l'ajout à la main explicitement dans les
contextes où je souhaite un newline à la fin.

--
DW
Avatar
Sébastien Kirche
Le 22 septembre 2009 à 00:16, Damien Wyart vraute :

Oui, dans pas mal de cas, c'est bien, mais ça me gêne de l'activer par
défaut car si je l'oublie en éditant un fichier qui doit rester
strictement identique aux modifs explicites près, ça va gêner... je
n'ai pas d'exemple en tête mais avoir Emacs qui ajoute un truc par
derrière m'embpete pour le cas où je ne voudrais vraiment pas qu'il le
fasse mais où je vais l'oublier...

Donc le plus souvent, je fais l'ajout à la main explicitement dans les
contextes où je souhaite un newline à la fin.



De ce point de vue ma solution est la meilleure : si tu relis le bout de
paramétrage que j'ai poste, tu verras qu'avec une valeur de 1 (qui est
ni t ni nil) Emacs me pose la question d'ajouter le newline final ou pas
quand il rencontre un fichier qui en est dépourvu. (la question est
posée au moment d'enregistrer un tel fichier)

Na ! ;o)
--
Sébastien Kirche
Avatar
Ph. Ivaldi
Le 21 septembre 2009, Damien Wyart écrivit :

Il s'agit de require-final-newline. Voir les détails ici :
http://www.gnu.org/software/emacs/manual/html_node/emacs/Customize-Save.html



C'est ça. Merci !

Ce qui est décrit dans l'exemple avec les ciseaux n'est pas le
comportement par défaut.



Voilà le vrai problème: chez moi c'est le comportement par défaut.
J'y croyais tellement peu que je n'avais pas testé mais même avec
emacs -nw -q temp.txt
j'ai ce comportement et un C-h v require-final-newline <ret> donne
8<------8<------8<------8<------8<------8<------8<------8<------8<------
require-final-newline is a variable defined in `files.el'.
Its value is t
Local in buffer temp.txt; global value is nil
8<------8<------8<------8<------8<------8<------8<------8<------8<------

J'ai cherché dans /usr/share/emacs, /usr/share/emacs-snapshot/ et /etc/
à coup de

find chemin -type f -name "*.el" -print0 |
xargs -0 -e grep -nH -e "require-final-newline"

mais je n'ai rien trouvé de concluant.

GNU Emacs 23.1.50.1 (i486-pc-linux-gnu, GTK+ Version 2.16.6)
of 2009-09-09 on elegiac, modified by Debian
..........................^^^^^^^^^^^^^^^^^^ c'est peut-être ça le
problème.
--
Philippe Ivaldi.
http://www.piprime.fr/
Avatar
Ph. Ivaldi
Le 21 septembre 2009, Damien Wyart écrivit :

Sinon, un petit détail : pour éviter un champ Sender dans les messages



Ça fait longtemps que je veux l'éviter celui-là mais à force de ne pas
trouver j'ai lâché l'affaire.

envoyés avec Gnus, ce qui insère une info purement interne, on peut
utiliser ceci dans .gnus.el :
(require 'message)
(add-to-list 'message-syntax-checks '(sender . disabled))



Marche pô. :-(
Dommage.
Merci quand même !
--
Philippe Ivaldi.
http://www.piprime.fr/
Avatar
Damien Wyart
> Donc le plus souvent, je fais l'ajout à la main explicitement dans
> les contextes où je souhaite un newline à la fin.



* Sébastien Kirche
in fr.comp.applications.emacs:
De ce point de vue ma solution est la meilleure : si tu relis le bout
de paramétrage que j'ai poste, tu verras qu'avec une valeur de 1 (qui
est ni t ni nil) Emacs me pose la question d'ajouter le newline final
ou pas quand il rencontre un fichier qui en est dépourvu. (la question
est posée au moment d'enregistrer un tel fichier)



Ah ben oui, effectivement !

Na ! ;o)



;-)

--
DW
1 2 3