如何在Emacs Lisp中压缩模式?
我认为标题不能清楚地描述这个问题。但我会尝试用更详细的词语来描述 以下是设置备份文件夹的Emacs lisp代码:如何在Emacs Lisp中压缩模式?,emacs,Emacs,我认为标题不能清楚地描述这个问题。但我会尝试用更详细的词语来描述 以下是设置备份文件夹的Emacs lisp代码: (setq backup-directory-alist '(("" . "/hom/test/.backups"))) 但是如果我想通过以动态方式生成备份路径来完成这项工作,备份路径将基于用户的路径生成 以下是我试图做的: (setq temp-file-folder "/home/test") (setq backups-save-folder (concat temp-fi
(setq backup-directory-alist '(("" . "/hom/test/.backups")))
但是如果我想通过以动态方式生成备份路径来完成这项工作,备份路径将基于用户的路径生成
以下是我试图做的:
(setq temp-file-folder "/home/test")
(setq backups-save-folder (concat temp-file-folder "/.backups"))
(setq backup-directory-alist '(("" . backups-save-folder)))
但它不起作用。上述代码的最终输出为:
(("" . backups-save-folder))
我想我想要得到的应该是:
(("" . "/home/test/.backups"))
那么,生成动态路径的正确代码是什么?这是什么意思。在代码中
首先,我要说一点。您可以使用
format
函数而不是concat来执行此操作(类似于printf
)。这里有一个例子
(let ((home_dir "/home/noufal")
(posts_dir "posts"))
(format "%s/%s" home_dir posts_dir))
计算结果为“/home/noufal/posts”
setq
临时变量不是惯用的lisp。您应该在let
构造的范围内工作,该构造可以将值绑定到几个临时符号,然后完成您的工作
在上一个例子中,在第二个参数之前使用了“
。这将阻止对其进行评估(它是“字面上引用”的同义词),因此,backups save文件夹
不会替换为该值。如果你想那样做,就这样做
(setq backup-directory-alist (list (cons "" backups-save-folder)))
是一种表示其cdr
不是列表的列表的方法。有关更多详细信息,请参阅 首先,一点。您可以使用format
函数而不是concat来执行此操作(类似于printf
)。这里有一个例子
(let ((home_dir "/home/noufal")
(posts_dir "posts"))
(format "%s/%s" home_dir posts_dir))
计算结果为“/home/noufal/posts”
setq
临时变量不是惯用的lisp。您应该在let
构造的范围内工作,该构造可以将值绑定到几个临时符号,然后完成您的工作
在上一个例子中,在第二个参数之前使用了“
。这将阻止对其进行评估(它是“字面上引用”的同义词),因此,backups save文件夹
不会替换为该值。如果你想那样做,就这样做
(setq backup-directory-alist (list (cons "" backups-save-folder)))
是一种表示其cdr
不是列表的列表的方法。有关更多详细信息,请参阅 似乎您不需要用于存储成对值的关联列表,而需要一个简单的列表:
获取当前用户目录(getenv“HOME”)
可能与另一个任意字符串“BACKSTAGE-AREA”组合
(setq my dir(列表(concat(getenv“HOME”)“-后台区域”))
获取以这种方式存储的目录名
(car my dir)似乎您不需要一个用于存储成对值的关联列表,而是一个简单的列表: 获取当前用户目录(getenv“HOME”) 可能与另一个任意字符串“BACKSTAGE-AREA”组合 (setq my dir(列表(concat(getenv“HOME”)“-后台区域”)) 获取以这种方式存储的目录名 (car my dir)根据客户的回答,以下是我的最终代码:
(setq backup-directory-alist (list (cons ""
(let ((backups_dir "/.backups")
(temp_folder desktop-temp-file-folder))
(format "%s/%s" temp_folder backups_dir)))))
它起作用了
谢谢根据客户的回答,以下是我的最终代码:
(setq backup-directory-alist (list (cons ""
(let ((backups_dir "/.backups")
(temp_folder desktop-temp-file-folder))
(format "%s/%s" temp_folder backups_dir)))))
它起作用了
谢谢您也可以使用Quasikote,它在我看来更漂亮。(setq backup directory alist`((“”,backups save folder)))根据您的建议,我添加了以下代码,它可以工作:(setq backup directory alist(list(cons)”(let((backups_dir)/.backups)(temp_文件夹桌面temp文件夹)(格式“%s/%s”temp_文件夹备份_目录()()())(格式“%s/%s”temp_文件夹备份_目录())(setq备份目录列表`(“”,备份保存文件夹)))根据您的建议,我添加了以下代码,它可以正常工作:(setq备份目录列表(列表(cons“”(let((backups_dir”/.backups))(temp_文件夹桌面temp文件文件夹))(格式“%s/%s”temp_文件夹备份(u dir);”))