2013-12-13 4 views
1
(setq backup-directory-alist `(("." . "~/.saves"))) 

Я знаю, что он устанавливает каталог, в котором сохраняются файлы резервных копий, но я не понимаю конкретно, что делает часть `(("." . "~/.saves")). В частности:Что это за конфигурация emacs?

  1. Что такое «отметка»? (также, имеет ли это вещь специальное имя для googleable?)
  2. Зачем это требуется двойная скобка? Это как в default settings, а не только в моем файле конфигурации.
  3. Кажется, что одиночный . внутри может быть своего рода оператором замещения, и я замечаю, что вместо этого у меня есть другая подобная строка с запятой. Какова операция, которую эти вещи делают?

Мой google-fu потерпел неудачу, когда выяснилось, какие знаки препинания выполняют в lisp, и я слишком ленив, чтобы работать через учебник emacs lisp.

ответ

6

Документация для backup-directory-alist действительно объясняет большую часть этого. Значение - association list, где каждый ключ - regular expression. Простое регулярное выражение "." соответствует каждой непустой строке, поэтому оно относится ко всем именам каталогов.

ассоциативный список читается от начала до конца, и это легко в Лиспе предварять новую ассоциацию:

(setq backup-directory-alist 
     (cons '("\\`/tmp/" . "/tmp/saves") 
     backup-directory-alist)) 

... или более лаконично

(push '("\\`/tmp/" . "/tmp/saves") backup-directory-alist) 

... до конца со списком с двумя настройками: конкретным для путей, соответствующих регулярному выражению "\\`/tmp/" спереди, если общий для всех других путей.

Вы написали backquote, но правильный способ выразить это выражение с помощью регулярного quote.

Точка между ключом alist и значением cons, примитив для создания списков. Как практический вопрос, минусы проще, чем список, поэтому вы можете получить значение с прямым cdr, а не концептуально более сложным cadr (car of cdr).

Я не думаю, что вы можете иметь запятую в этом положении (хотя запятая используется в задних кадрах).

+0

Спасибо. Это было полезно, особенно с измененным расширением. –

+1

Другим термином является квазикот. Я когда-то видел объяснение, которое имело для меня большой смысл. Значение по умолчанию в lisp - это то, что вещи не сортируются, а '' 'цитирует их. Квазиквадрат '\' 'переворачивает это вокруг, так что вещи цитируются по умолчанию и не сортируются с помощью', '. – jpkotta