Вы можете использовать (equal (string-to-char filename) ?.)
.Это превращает строку имени файла в ее первый символ и сравнивает ее с ?.
, который является символьной нотацией для .
.
. Похоже, вы хотите проверить (file-name-nondirectory filename)
, а не простоfilename
, поэтому весь оператор будет выглядеть примерно так:
(if (equal (string-to-char (file-name-nondirectory filename)) ?.)
(concat (file-name-nondirectory filename) "~")
(concat "." (file-name-nondirectory filename) "~"))
Таким образом, вся функция должна выглядеть примерно так:
(defun make-backup-file-name (filename)
(expand-file-name
(if (equal (string-to-char (file-name-nondirectory filename)) ?.)
(concat (file-name-nondirectory filename) "~")
(concat "." (file-name-nondirectory filename) "~"))
(file-name-directory filename)))
Вам нужно сделать concat
в обоихветви, потому что вы всегда хотите добавить ~
.