Je voudrais vérifier si un tampon (disons, actuel) visite un fichier ou non. Je pourrais dire:
(if (buffer-file-name) ...)
mais il ne semble pas très élégant - ce qui m'intéresse, c'est seulement la valeur booléenne, pas le nom réel du tampon en question. Si la buffer-file-name
fonction était écrite en Elisp, je pourrais regarder sa source pour savoir ce qu'elle utilise - mais elle est écrite en C, et bien que je puisse installer les sources Emacs, j'ai peur de ne pas trouver de nom elisp pour la fonction qui vérifie ce que je recherche de toute façon.
Ce dont j'ai besoin, c'est que je veux créer un répertoire basé sur le nom du fichier du tampon actuel, et actuellement je fais plus ou moins ceci:
(make-directory (if (buffer-file-name) (file-name-base) "default-dir"))
Alors, quelle serait la façon idiomatique Elisp de faire cela?
(and (buffer-file-name) t)
air étrange.
(if (buffer-file-name) ... )
élégant, alors vous n'avez pas codé en elisp depuis très longtemps. Cela devient plus laid d'ici.
buffer-file-name
vraiment à l'utilisation , c'est la bonne façon de le faire (si vous le voulez vraimentt
, faites-le,(and (buffer-file-name) t)
mais c'est plus laid IMO). Son implémentation est la lecture dufilename
champ de la structure du tampon C, qui n'est de toute façon pas accessible directement depuis Elisp. En fin de compte, c'est juste un pointeur qui est nul ou non.