J'écris un fichier de configuration et j'ai besoin de définir si le processus attend un fichier au format Windows ou un fichier au format Unix. J'ai une copie du fichier attendu - est-il possible de vérifier s'il utilise \ n ou \ r \ n sans quitter emacs?déterminer le terminateur de ligne dans Emacs
Répondre
S'il est indiqué (DOS) sur le modèle lorsque vous ouvrez le fichier sous Unix, les fins de ligne sont de style Windows. Si elle indique (Unix) lorsque vous ouvrez le fichier sous Windows, les fins de ligne sont de type Unix.
De Emacs 22.2 manuel (Noeud: ligne Mode):
Si le fichier de la mémoire tampon utilise linefeed retour chariot , le côlon modifications soit une barre oblique inverse ('\') ou « (DOS) ', en fonction du système en fonctionnement. Si le fichier utilise juste carriage-return, l'indicateur de deux-points est remplacé par une barre oblique ('/') ou '(Mac)'. Sur certains systèmes, Emacs affiche '(Unix)' à la place du deux-points pour les fichiers qui utilisent la nouvelle ligne comme le séparateur de ligne.
est ici une fonction qui – je pense – montre comment vérifier de elisp ce Emacs a déterminé à être le type de fin de ligne. Si cela semble excessivement compliqué, c'est peut-être le cas.
(defun describe-eol()
(interactive)
(let ((eol-type (coding-system-eol-type buffer-file-coding-system)))
(when (vectorp eol-type)
(setq eol-type (coding-system-eol-type (aref eol-type 0))))
(message "Line endings are of type: %s"
(case eol-type
(0 "Unix") (1 "DOS") (2 "Mac") (t "Unknown")))))
Ouvrez le fichier dans emacs à l'aide de find-file-literally. Si les lignes ont des symboles^M à la fin, il attend un fichier texte au format Windows.
La fonction Elisp suivante retournera nil
si aucune "\r\n"
terminateurs apparaissent dans un fichier (sinon il retourne le point de la première occurrence). Vous pouvez le mettre dans votre .emacs
et l'appeler avec M-x check-eol
.
(defun check-eol (FILE)
(interactive "fFile: ")
(set-buffer (generate-new-buffer "*check-eol*"))
(insert-file-contents-literally FILE)
(let ((point (search-forward "\r\n")))
(kill-buffer nil)
point))
Mais les versions modernes d'Emacs convertissent CRLF en LF lors du chargement (et du retour lors de l'enregistrement), donc vous n'aurez aucun caractère dans votre buffer. Vous devez vérifier le système de codage du tampon. – cjm
Cela ne fonctionnera-t-il pas en combinaison avec find-file-literally? –
Oui, ce sera le cas, mais vous n'avez pas mentionné l'utilisation de find-file-literally en premier. – cjm
Si vous allez dans le mode hexl-(M-x hexl-mode), vous shoul voir les octets de terminaison de ligne.
WOW, merci. –
- 1. Enroulement de ligne dans emacs * compilation * buffer
- 2. Emacs: ajouter le nom d'hôte à la ligne de mode?
- 3. Un auteur CSV Python 2 produit un mauvais terminateur de ligne sous Windows
- 4. Définition du numéro de ligne à une variable dans Emacs
- 5. Dans emacs, comment mettre en surbrillance la ligne en cours dans le cadre actuel uniquement?
- 6. .NET "terminaison de ligne par défaut"?
- 7. Masquage^M dans emacs
- 8. Fonctions rectangle dans emacs
- 9. Ré-ouvrez le tampon * scratch * dans Emacs?
- 10. Comment désactiver le mode vhdl dans emacs?
- 11. Suppression des incohérences de l'onglet dans Emacs
- 12. Portable Emacs? (Le serveur Emacs ne fonctionne pas)
- 13. Comment désactiver le curseur dans emacs quand emacs n'a pas de focus?
- 14. Comment déterminer la fin de ligne d'un fichier
- 15. Schéma de débogage dans Emacs
- 16. Convertir le code en syntaxe au format HTML dans Emacs
- 17. goto-file dans Emacs
- 18. mode palangres dans Emacs
- 19. Vim dans Emacs
- 20. Comment changer le message de travail dans Emacs?
- 21. Comment compter le nombre de buffers/fichiers ouverts dans Emacs?
- 22. Déboguer le flash avec le mode gdb dans Emacs
- 23. bignum dans emacs/elisp
- 24. Emacs derrière le proxy HTTP
- 25. Emacs équivalent de Vim's yy10p?
- 26. Compilation dans Emacs
- 27. Déterminer le composant parent
- 28. comment déterminer le signal WiFi dans l'iPhone
- 29. Déterminer le type proxy
- 30. Comment déterminer le nombre d'enfants visibles dans un rapport hiérarchique?
Cela suppose que vous n'exécutez pas sur Windows. Là, la modeline serait \ for \ r \ n ou (Unix) pour \ n. – cjm
Sûrement le PO veut une solution programmatique et non une inspection visuelle de la modeline? –
Non! Je voulais un visuel, bien que l'elsip soit agréable à avoir. – gone