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-name
funçã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-name
lo 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 ofilename
campo 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.