Aperto il forum ufficiale di ZuQu

26 08 2009

Ho aperto un forum, in inglese, per discutere dell’editor.

Si trova qui: http://zuqu.lefora.com

Lo stesso forum può essere letto sotto forma di blog: http://zuqu.lefora.com/ale870/blog/





ZuQu Editor version 0.1!!!

25 08 2009

google_translate.gif
Translate To English!

E’ uscito!

Eccoci finalmente! La prima versione di ZuQu Editor è in linea!

Si lo so, è povera e piena di bug, ma è una versione preliminare, per darvi una idea del progetto. Spero che vi piaccia!

Mandatemi i vostri consigli, suggerimenti, critiche, etc…

Potete scaricare il programma da qui:

Per Linux: http://www.megaupload.com/?d=IL28CP1T

Per Windows: http://www.megaupload.com/?d=VJFGC1U4

Come usare il programma

ZuQu è un editor molto speciale, perchè include (o includerà nel futuro, visto che il suo sviluppo è iniziato da poco!) molte funzionalità originali, include una interfaccia grafica innovativa, e inoltre si possono scrivere i plugins usando newLisp!

Installazione:

  1. Scaricate il programma e decomprimetelo in una qualunque directory (a vostra scelta).
  2. Scaricate ed installate newLisp ovviamente!
  3. Configurate le seguenti variabili d’ambiente (environment variables):
    1. ZUQU_HOME – Indica la directory in cui è installato ZuQu. Non includere slash o backslash finali! Per esempio:
      Windows: c:/zuzu_editor
      Linux: home/alessandro/zuqu_editor
    2. NEWLISPDIR – Directory in cui è installato l’eseguibile newLisp. Per esempio: /usr/bin
      (nota: anche in questo case NON includete slash finali!)
  4. Ora lanciate il programma!

Usare ZuQu Editor:

Il programma si presenta come una schermata nera, molto semplice:

ZuQu Editor Main Window

ZuQu Editor Main Window

Alcuni controlli sono provvisori o non funzionanti (come il combo-box in basso – insert – ).

Come ho già detto, ZuQu è nato per lavorare insieme a newLisp, quindi ha delle funzionalità, come il syntax highlight, match delle parentesi, etc… che funzionano al meglio con newLisp. Per esempio è in grado di distinguere gli apici ” ” e le parentesi graffe { } , gestendo correttamente il testo al loro interno.

Ma dove sono i menu? ZuQu è basato sull’uso efficente del mouse (anche se implementerò anche avanzate funzionalità di gestione degli shortcut da tastiera!). Provate a premete il tasto destro del mouse, e scegliamo “File” -> Open. Carichiamo un file newLisp. Ecco cosa avremo:

ZuQu Editor: menu

ZuQu Editor: menu

Questa schermata riassume alcune delle caratteristiche di ZuQu. Analizziamola attentamente.

Non appena premete il tasto destro del mouse (RMB – cioè Right-Mouse-Button) compare il menu (apparirà vicino al mouse!) con: File, Selection, Most recent, Show All. Ora premendo il menu File (con il tasto sinistro del mouse) apparirà il menu New, Open…, Save, Save As….
Potete notare che i menu hanno tasti grandi (rapidi nell’uso), e compaiono sempre a portata di mouse! Premendo RMB in un punto qualunque, tutti i menu scompariranno.

Ora guardate il testo caricato: il programma newLisp ha la colorazione in base alle funzioni, e c’è un box rosso che circonda le parentesi di apertura e chiusura del blocco :-)

Fate delle prove: vedrete che, se includerete delle parentesi tonde all’interno di una stringa (con apici oppure parentesi graffe), le parentesi verranno ignorate.

La colorazione avviene usando le parole chiave all’interno dei files (si trovano nella directory syntax-highlight):

  • newlisp.blocks
  • newlisp.functions
  • newlisp.logic

Separate le parole chiave con uno spazio, oppure un carriage-return.

La colorazione avviene una riga alla volta. Invece le parentesi vengono evidenziate con un ritardo di 200 millisecondi (per ottimizzare le performance dell’editor). Ci sono comunque margini per migliorare ulteriormente le performance.

Usando l’opzione File -> New verrà aperta una nuova finestra. ZuQu gestisce finestre multiple. Le finestre non saranno completamente indipendenti tra loro, ma potranno “collaborare” migliorando la gestione del testo e l’uso dei plugins.

I Plugins:

Per ora non ho implementato molte funzioni (solo un alert e la possibilità di accedere e modificare il testo selezionato dall’utente). Ho in mente però di scrivere un completo set di API per permettere una gestione ad altissimo livello dell’editor tramie newLisp.

La struttura dei plugins permetterà loro di collaborare l’uno con l’altro, creando quindi plugins che si collegano ad altri plugins!

Attualmente ho creato solo due funzioni di esempio: convertono il testo selezionato dall’utente in maiuscolo o minuscolo. Per accedere ai plugins registrati, fate RMB e scegliete Show All:

ZuQu Editor: Plugins

ZuQu Editor: Plugins

Come potete vedere, premendo Show All apparirà la lista di plugins disponibili, in base alla loro categoria (la categoria si sceglie in fase di registrazione).

Ogni plugin “vive” nell’interprete newLisp che viene automaticamente lanciato in background, in un suo context. Questo consente un alto livello di isolamento del codice, pur permettendo ai plugins di “collaborare” tra loro.

I plugins che verranno letti alla partenza del programma sono elencati in system-plugins.config e user-plugins.config. I plugins creati dagli utenti dovranno essere creati come user-plugins, mentre i system-plugins sono quelli necessari al funzionamento di ZuQu.

Creare un nuovo plugin è molto semplice:

* Creare un nuovo file newLisp nella directory “user-plugins”. Chiamiamolo per esempio “mio_plugin.lsp”.
* Esso avrà una struttura simile alla seguente (molto semplice):

(context 'mio_plugin)

<< funzioni sia private che da pubblicare a ZuQu >>

(zuqu:register-functions
   << funzione 1 >>
   << funzione 2 >>
   << funzione N >>
)

(context 'MAIN)

Guardate l’esempio da me incluso: si chiama test.lsp .

Ecco un esempio:

(context 'TEST)

(define (my-uppercase)
 (setq t (zuqu:get-selected-text))
 (if t
 (zuqu:set-selected-text (upper-case t))
 (zuqu:alert "Error: Please select some text!")
 )
)

(define (my-lowercase)
 (setq t (zuqu:get-selected-text))
 (if t
 (zuqu:set-selected-text (lower-case t))
 (zuqu:alert "Error: Please select some text!")
 )
)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Register the functions inside ZuQu Editor.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;......................................................................
; 1) Context name
; 2) Function name
; 3) Short description (supports some html tags). DO NOT USE "," (comma!), return and newline!
;    Write only a single line! Use tag <br> for carriage-return (like HTML) *works in progress!*
; 3) Main category (will appear before the plugin name).
; 4) For now put "on-rmb-popup"      *works in progress!*
; 5) Now insert "selected-text"      *works in progress!*
;......................................................................

(zuqu:register-functions
 ("TEST" "my-uppercase" "Change selection to <b>upper-case</b>" "Change-Case" "on-rmb-popup" "selected-text")
 ("TEST" "my-lowercase" "Change selection to lower-case"        "Change-Case" "on-rmb-popup" "selected-text")
)

(context 'MAIN)

Tutte le funzioni newLisp per comunicare con ZuQu si trovano nel context zuqu.

Conclusioni:

Termina qui questa breve introduzione a questo nuovo editor. Spero che le idee vi piacciano. Io mi sto impegnando nel suo sviluppo. Sono sicuro che con il vostro aiuto potremo realizzare qualcosa di veramente diverso, diverso da ogni altro editor in circolazione!

A presto!





ZuQu Editor: aggiornamento

24 08 2009

ITALIANO: Ho aggiornato la pagina di ZuQu, con lo status sullo sviluppo :-)

ENGLISH: I just updated ZuQu page, including the development status :-)

http://newlisp.wordpress.com/zuqu/