Je comprends que c'est trivial avec un if, mais y a-t-il une option, comme %Sou %squi interpole nil comme pas de chaîne du tout?
Exemple:
(format "%?.el" nil) ; ".el"
(format "%?.el" "beginner") ; "beginner.el"
formatindicateur pour cela (à utiliser M-x report-emacs-bugpour cela). Les autres d'entre nous se sont habitués à l'utiliser concatpour cela, parfois en combinaison avec format(pour d'autres conversions). Ou bien en passant un argument à formattel que (if something "foobar" ""), correspondant à l' formatindicateur "%s".
rxmacro dans un tel scénario. Assurez-vous au minimum que vous êtes regexp-quoteapproprié), mais cela mis à part si vous avez un grand nombre de chaînes peut-être dans LIST, vous pourriez faites toujours quelque chose comme (apply 'format "%s%s%s%s" (mapcar (lambda (x) (or x "")) LIST)). Bien sûr, si votre chaîne de formatage est littéralement semblable "%s%s%s", concatcela a plus de sens.
interpolationbalise.