Удаление скобок в elisp - PullRequest
       36

Удаление скобок в elisp

1 голос
/ 14 января 2020

Я бы хотел извлечь повторяющуюся строку в переменную.

;; following code works, but I want to replace "~/+NOTES/ztd/" by a variable

(setq org-capture-templates '(
    ("c" "Capture" entry (file+headline "~/+NOTES/ztd/murmur.org" "Capture")
         "* %u %? " :prepend t)
))

Однако наивная попытка не работает. Это не сразу приводит к ошибке, но работает иначе, чем я ожидал.

;;; code fails.. need to be fixed

(defvar org-gtd-directory "~/+NOTES/ztd/")
(setq org-capture-templates '(
    ("c" "Capture" entry (file+headline (concat org-gtd-directory "murmur.org") "Capture")
         "* %u %? " :prepend t)
))

Вопрос

Я думал, (concat org-gtd-directory "murmur.org") точно должно быть "~/+NOTES/ztd/murmur.org", но это не так. Какую часть я пропустил?

1 Ответ

2 голосов
/ 14 января 2020

quote препятствует оценке. Вместо этого используйте backquote :

(defvar org-gtd-directory "~/+NOTES/ztd/")
(setq org-capture-templates `(
    ("c" "Capture" entry (file+headline ,(concat org-gtd-directory "murmur.org") "Capture")
         "* %u %? " :prepend t)
))
...