gpt4 book ai didi

file - Lisp if 语句 - emacs 初始化文件 ".emacs"

转载 作者:太空宇宙 更新时间:2023-11-03 18:46:26 25 4
gpt4 key购买 nike

我修改了我的 .emacs 文件,通过以下代码使自动备份隐藏文件:

(defun make-backup-file-name (filename)
(expand-file-name
(concat "." (file-name-nondirectory filename) "~")
(file-name-directory filename)))

除了隐藏文件的备份从“.hidden-file.xxx”到“..no-longer-hidden-file.xxx”之外它工作得很好

我对 Lisp 了解为零,谁能给我一个快速解决方法,例如:

(if (filename) doesn't-start-with "."
(concat
(else do-nothing))

最佳答案

您可以使用 (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,因为您总是想附加一个~

关于file - Lisp if 语句 - emacs 初始化文件 ".emacs",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9402541/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com