Gostaria de verificar se algum buffer (digamos, atual) está visitando um arquivo ou não. Eu poderia dizer:
(if (buffer-file-name) ...)
mas parece não ser muito elegante - o que me interessa é apenas o valor booleano, não o nome real do buffer em questão. Se a buffer-file-namefunção fosse escrita no Elisp, eu poderia procurar na fonte para descobrir o que ela usa - mas está escrita em C e, embora eu possa instalar as fontes do Emacs, tenho medo de não encontrar um nome para o elisp para a função que verifica o que eu estou procurando lá de qualquer maneira.
O que eu preciso é que eu quero criar um diretório com base no nome do arquivo do buffer atual e atualmente estou fazendo mais ou menos isso:
(make-directory (if (buffer-file-name) (file-name-base) "default-dir"))
Então, qual seria a maneira idiomática do Elisp de fazer isso?
(and (buffer-file-name) t)parece estranho.
(if (buffer-file-name) ... )é elegante, você não está codificando no elisp há muito tempo. Só fica mais feio daqui.
buffer-file-namelo realmente, é a maneira certa de fazê-lo (se você realmente quert,(and (buffer-file-name) t)mas o IMO é mais feio). Sua implementação está lendo ofilenamecampo do buffer C struct, que de qualquer maneira não é acessível diretamente do Elisp. No final, é apenas um ponteiro que é nulo ou não.