2010-02-18 4 views
2

Je veux faire mon répertoire muse plus souple, donc je sauverai le chemin du répertoire de base de muse dans une variable, comme ceci:Concaténation dans muse-projet-alist

(setq my-muse-base-dir "d:/project/notes") 

(setq muse-project-alist 
     `(
    ("Home" 
    ((concat my-muse-base-dir "/muse/home") 
    ;; ("d:/project/notes/muse/home" 
     :default "index") 
    (:base "html" :path (concat my-muse-base-dir "/html/home"))) 
    ;; (:base "html" :path "d:/project/notes/html/home")) 
    )) 

Mais quand je rentre en mode muse, il signale l'erreur comme

let: argument de type incorrect: stringp, (concat my-muse-base-dir "/ muse/home")

Et après que je change le répertoire la définition des chemins complets, comme indiqué par les lignes commentées, l'erreur a disparu. Donc, je voudrais savoir comment définir le répertoire du projet muse comme concaténation de deux chaînes?

Répondre

4

vous manque un , dans votre expression backquote:

(setq muse-project-alist 
     `(
     ("Home" 
     (,(concat my-muse-base-dir "/muse/home") 
      :default "index") 
     (:base "html" :path ,(concat my-muse-base-dir "/html/home"))) 
     )) 

Voir le droit du , avant que les appels à concat.

La virgule indique à backquote d'évaluer l'expression suivante. Lisez le backquote info page pour plus de détails.

+0

Cela fonctionne, merci :-). Et pourriez-vous me dire ce que fait le point-virgule? – ZelluX

+0

Point-virgule (';')? Je n'en vois pas. Je vois des deux-points (':'), pour ceux que vous devez lire la documentation de 'muse-project-alist' - trouvé ici http://mwolson.org/static/doc/muse/Options-for-Projects.html –

+0

Désolé j'ai fait une erreur, je veux dire la virgule ici – ZelluX