Je dois concaténer la chaîne de chemin comme suit, j'ai donc ajouté les lignes suivantes à mon .emacs
fichier:
(setq org_base_path "~/smcho/time/")
(setq org-default-notes-file-path (concatenate 'string org_base_path "notes.org"))
(setq todo-file-path (concatenate 'string org_base_path "gtd.org"))
(setq journal-file-path (concatenate 'string org_base_path "journal.org"))
(setq today-file-path (concatenate 'string org_base_path "2010.org"))
Quand je fais C-h vtoday-file-path
RET pour vérifier, aucune variable n'est affectée.
Qu'est ce qui ne va pas avec mon code? Existe-t-il un autre moyen de concaténer la chaîne de chemin?
J'ai trouvé que le problème était dû à une mauvaise configuration, le code fonctionne réellement. Merci pour les réponses qui sont meilleures que mon code.
Vous pouvez utiliser (concat "foo" "bar")
plutôt que (concatenate 'string "foo" "bar")
. Les deux fonctionnent, mais bien sûr, le premier est plus court.
Tout d'abord, n'utilisez pas "_"; utilisez '-' à la place. Insérez ceci dans votre .emacs et redémarrez emacs (ou évaluez le S-exp dans un tampon) pour voir les effets:
(setq org-base-path (expand-file-name "~/smcho/time"))
(setq org-default-notes-file-path (format "%s/%s" org-base-path "notes.org")
todo-file-path (format "%s/%s" org-base-path "gtd.org")
journal-file-path (format "%s/%s" org-base-path "journal.org")
today-file-path (format "%s/%s" org-base-path "2010.org"))
Utilisez expand-file-name pour créer des noms de fichiers relatifs à un répertoire:
(let ((default-directory "~/smcho/time/"))
(setq org-default-notes-file-path (expand-file-name "notes.org"))
(setq todo-file-path (expand-file-name "gtd.org"))
(setq journal-file-path (expand-file-name "journal.org"))
(setq today-file-path (expand-file-name "2010.org")))