2017-04-20 2 views
0

Comment compiler une fonction qui utilise une annotation cl-annot?Comment utiliser cl-annot dans Slime (pour définir une autre vue dans Lucerne)

utilisation:

Lucerne utilise pour définir les routes:

@route app "/profile/:username" 
(defview profile (username) 
    (let* ((user (utweet.models:find-user username)) 
     ;; The user's timeline 
     (user-tweets (utweet.models:user-tweets user)) 
     ;; Is the user viewing his own profile? 
     (is-self (string= (lucerne-auth:get-userid) 
          username))) 
    (render-template (+profile+) 
        :user user 
        :tweets (display-tweets user-tweets) 
        :is-self is-self))) 

je l'ai fait travailler avec un point de vue. Mais écrire un second et le compiler avec C-c-c ne fonctionnerait pas. J'ai installé slime-annot.el pour emacs, mais je ne reçois que

The variable @ROUTE is unbound. [Condition of type UNBOUND-VARIABLE]

Je ne ai écrit (annot:enable-annot-syntax) au début.

Donc, ceci est un point de blocage:/Comment pouvons-nous définir de nouvelles choses en utilisant cl-annot?

Merci

ps: related issue

modifier: plus sur la structure du fichier: j'ai créé un projet avec le créateur du projet de Lucerne, voici le début de mon dossier principal:

(in-package :cl-user) 
(defpackage lucerne-books 
    (:use :cl 
     :lucerne 
     :cl-arrows 
     :str) 
    (:export :app) 
    (:documentation "Main lucerne-books code.")) 
(in-package :lucerne-books) 
(annot:enable-annot-syntax) 

;;; App 

(defapp app 
    :middlewares ((clack.middleware.static:<clack-middleware-static> 
       :root (asdf:system-relative-pathname :lucerne-books #p"assets/") 
       :path "/static/"))) 

;;; Templates 

(djula:add-template-directory 
(asdf:system-relative-pathname :lucerne-books #p"templates/")) 

(defparameter +index+ (djula:compile-template* "index.html")) 

;;; Views 

@route app "/" ;; first created: it works 
(defview index() 
    (render-template (+index+) 
        :foo "you")) 

@route app "/rst" ;; this view won't work, not accessible 
(defview index() 
    (render-template (+index+) 
        :foo "rst")) 

@route app "/following/:username" ;; this one neither 
(defview user-following (username) 
    (let ((user username)) 
    (render-template (+index+) 
        :foo user))) 
+0

Je ne connais pas Lucrene mais j'ai utilisé cl-annot sans problèmes, récemment. Avez-vous inséré "(annot: enable-annot-syntax)" au début du fichier comme indiqué dans le document? Pourriez-vous fournir plus d'informations sur la structure de votre fichier? –

+0

oui j'ai activé la syntaxe annot. J'ai édité ma question avec plus d'informations sur mon code et la structure du fichier. – Ehvince

+0

cela fonctionne avec '(syntaxe: use-syntax: annot)' que j'ai trouvé sur un projet d'homme des cavernes. Ne fais pas comme moi pourquoi! – Ehvince

Répondre

0

J'ai trouvé une notation différente sur un projet Caveman. Il ne figure pas sur la doc de cl-Annot, mais cela fonctionne:

(syntax:use-syntax :annot) 

Je peux maintenant C-c C-c nouvelles routes.