Me gustaría comprobar si algún búfer (por ejemplo, actual) está visitando un archivo o no. Yo podría decir:
(if (buffer-file-name) ...)
pero parece no ser muy elegante: lo que me interesa es solo el valor booleano, no el nombre real del búfer en cuestión. Si la buffer-file-name
función se escribiera en Elisp, podría examinar su fuente para averiguar qué usa, pero está escrita en C, y aunque podría instalar las fuentes de Emacs, me temo que no encontraría un nombre elisp para la función que comprueba lo que busco allí de todos modos.
Lo que necesito es que quiero crear un directorio basado en el nombre del archivo del búfer actual, y actualmente estoy haciendo más o menos esto:
(make-directory (if (buffer-file-name) (file-name-base) "default-dir"))
Entonces, ¿cuál sería la forma idiomática de Elisp de hacer esto?
(and (buffer-file-name) t)
ve extraño.
(if (buffer-file-name) ... )
sea elegante, entonces no has estado codificando en elisp por mucho tiempo. Solo se pone más feo desde aquí.
buffer-file-name
realmente, es la forma correcta de hacerlo (si realmente lo deseat
, hágalo,(and (buffer-file-name) t)
pero eso es más feo). Su implementación es leer elfilename
campo de la estructura del búfer C, que de todos modos no es accesible directamente desde Elisp. Al final, es solo un puntero que es nulo o no.