如何更改Emacs自动恢复文件的名称?
此时,它以以下格式保存文件:如何更改Emacs自动恢复文件的名称?,emacs,Emacs,此时,它以以下格式保存文件: .#main.c -> sara@sara.home.com.27017:1231918415 这使得它有问题,因为它以“.c”结尾 我需要它# 更新:我有emacs 22.1这很奇怪,默认值应该在每一端都有# 您可以通过重新定义auto-save-file-name-p和使用auto-save-file-name函数来自定义名称。在GNU emacs中,您可以将elisp添加到.emacs文件中。这不是自动恢复文件,而是用作文件锁定令牌的链接 更新 如果我
.#main.c -> sara@sara.home.com.27017:1231918415
这使得它有问题,因为它以“.c”结尾
我需要它#
更新:我有emacs 22.1这很奇怪,默认值应该在每一端都有#
您可以通过重新定义auto-save-file-name-p和使用auto-save-file-name函数来自定义名称。在GNU emacs中,您可以将elisp添加到.emacs文件中。这不是自动恢复文件,而是用作文件锁定令牌的链接 更新 如果我告诉你,你能把我介绍给Summer Glau吗 改变这一点可能并不容易;我只是挖了一点,它看起来像是在C代码中设置的。但让我们问下一个问题:你为什么要这么做?我猜您正在为
.c
文件找到一个正则表达式,而您不希望与这些文件匹配。如果是这样的话,请注意所有这些锁文件链接都以.
开头——通常都是硬编码的——因此您可以始终排除名称与“^.#”(取决于您使用的正则表达式语法)匹配的文件
如果你真的想破解它,它在filelock.c中,大约在Emacs22的第320行。代码如下:
/* Write the name of the lock file for FN into LFNAME. Length will be
that of FN plus two more for the leading `.#' plus 1 for the
trailing period plus one for the digit after it plus one for the
null. */
#define MAKE_LOCK_NAME(lock, file) \
(lock = (char *) alloca (SBYTES (file) + 2 + 1 + 1 + 1), \
fill_in_lock_file_name (lock, (file)))
static void
fill_in_lock_file_name (lockfile, fn)
register char *lockfile;
register Lisp_Object fn;
{
register char *p;
struct stat st;
int count = 0;
strcpy (lockfile, SDATA (fn));
/* Shift the nondirectory part of the file name (including the null)
right two characters. Here is one of the places where we'd have to
do something to support 14-character-max file names. */
for (p = lockfile + strlen (lockfile); p != lockfile && *p != '/'; p--)
p[2] = *p;
/* Insert the `.#'. */
p[1] = '.';
p[2] = '#';
p = p + strlen (p);
while (lstat (lockfile, &st) == 0 && !S_ISLNK (st.st_mode))
{
if (count > 9)
{
*p = '\0';
return;
}
sprintf (p, ".%d", count++);
}
}
您可以升级到emacs 24.3并在.emacs文件中添加以下行:
(setq create-lockfiles nil)
当我运行时,我的系统没有使用(自动保存文件名)。它产生了正确的名字。让他烦恼的文件,唉,不是自动保存的;它们是锁文件。谢谢如何更改名称?您可以修改代码以附加一个“#”,确保缓冲区有空间。您还需要确保检查锁定文件的代码的相应部分理解您的新文件名格式。您还需要确保跟踪更改,并将其重新应用于将来的每个版本的EMACS。我们计划用建议锁定来替换此更改