Skip to content

Instantly share code, notes, and snippets.

@laurentpetit
Last active December 29, 2015 23:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save laurentpetit/7741081 to your computer and use it in GitHub Desktop.
Save laurentpetit/7741081 to your computer and use it in GitHub Desktop.
(ns lein-script-test
(:require [ccw.util.e4.dsl :refer :all]
[ccw.util.eclipse :as e]
[ccw.leiningen.generic-launch :as l]))
(defn greet [context]
(e/info-dialog "Hello world" "This popup provided to you from a user script"))
(defn launch [context] (l/generic-launch nil))
;; deffragment collecte les fragments de modèle créés par les defcommand
;; ici, le fragment n'a pas de nom, il est donc implicitement nommé
;; d'après le nom du namespace : "lein-script-test"
;; les éléments de modèle sont taggués avec ce nom de fragment et avec le tag "ccw"
;; Les objets créés / modifiés dans le modèle sont collectés
;; Une requête est lancée sur le modèle sur tous les objets ayant le tag "ccw" et le tag du fragment
;; tous les objets retournés qui ne font pas partie des objets créés/modifiés sont supprimés
;; ENFIN, le nom du fragment est ajouté à la variable globale *fragments*
;; => à la fin du démarrage d'Eclipse, une requête est lancée sur le modèle sur tous les objets ayant le tag "ccw"
;; => tous les objets n'appartenant à aucun fragment de la variable globale *fragments* sont supprimés
(deffragment
(defcommand greeter "Hello from CCW"
:handler greet)
(defcommand launch-lein-generic "Launch generic leiningen popup"
:handler launch))
;;; Evolution future possible si des problèmes de perf en utilisation REPL se manifestent:
(deffragment nom-fragment-1
(defpart ...)
(defcommand ...)
(defcommand ...))
(deffragment nom-fragment-2
(defpart ...)
(defcommand ...)
(defcommand ...))
;;; Pour les cas simples, peut-on se passer de l'encapsulation dans (deffragment ....) sans trop compliquer l'implémentation ?
(defcommand ...)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment