Как мне изменить имя файла авто-восстановления Emacs? - PullRequest
2 голосов
/ 16 марта 2009

На данный момент сохраняет файл в формате:

.#main.c -> sara@sara.home.com.27017:1231918415

Это делает его проблематичным, поскольку он заканчивается на ".c".

Мне нужно, чтобы это было. # Main.c #

Обновление: у меня есть emacs 22.1

Ответы [ 3 ]

7 голосов
/ 16 марта 2009

Это не файл автоматического восстановления, это ссылка, используемая в качестве маркера блокировки для файла.

обновление

Если я скажу вам, вы познакомите меня с Саммер Глау?

Вероятно, изменить это будет нелегко; Я только немного покопался, и похоже, что это установлено в коде C. Но давайте зададим следующий вопрос: почему вы хотите? Я предполагаю, что вы используете регулярное выражение для .c файлов, которым вы не хотите соответствовать. Если это так, обратите внимание, что все эти ссылки на файл блокировки начинаются с .# - это неизменно жестко - так что вы всегда можете исключить файлы с именами, которые совпадают с «^. #» (В зависимости от того, какой синтаксис регулярного выражения вы используете.)

Если вы действительно хотите взломать его, он находится в filelock.c примерно в строке 320 в EMACS 22. Вот код:

/* 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++);
    }
}
2 голосов
/ 30 апреля 2013

Вы можете перейти на emacs 24.3 и добавить в свой файл .emacs следующую строку:

(setq create-lockfiles nil)
0 голосов
/ 16 марта 2009

Странно, по умолчанию должно быть # на каждом конце.

Вы можете настроить имя, переопределив функции auto-save-file-name-p и make-auto-save-file-name. В GNU emacs вы бы добавили elisp в ваш файл .emacs.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...