MicroEMACS e multiedit di Giorgio Garabello MicroEMACS e' oggi uno degli editor di testo piu' avanzati presenti sulla nostra piattaforma, potenza e versatilita' sono sicuramente le sue caratteristiche principali. Quest'ultima in particolare rende difficile descrivere questo editor in poche righe perche' parlare di un suo aspetto significa trascurarne immeritataemnte gli altri. Per questo motivo ho provveduto a scrivere una serie di articoli, gia' usciti nei passati numeri di QL Magazine, in cui per ogni articolo ne descrivevo una potenzialita' o illustravo l'utilizzo di determinate opzioni. Questa volta vorrei parlarvi di editazione contemporanea di piu' programmi e per farlo iniziero' descrivendo due "concetti" tipici di MicroEMACS, la finestra e lo schermo. In questo articolo usero' il termine "videata" per indicare quella che viene normalmente chiamata "finestra" in altri ambienti per non generare confusione con il concetto di finestra di MicroEMACS, che e' una cosa leggermente diversa. Lo schermo In MicroEMACS si definisce "schermo" l'intera area editabile presente nel programma, quindi in pratica tutta la videata principale ad esclusione della barra di stato, dei menu', della barra del titolo e poche altre cosette. Come sappiamo la videata di MicroEMACS e' ridimensionabile e quindi puo' diventare molto grande, tanto per fare un esempio una videata a pieno schermo con una risoluzione 1024x768 (e' consigliabile almeno un monitor 17 pollici) mette a disposizione un area editabile di circa 60 righe per 160 colonne (vado a memoria). Un grande spazio quindi, che vedremo piu' avanti come sfruttare al meglio. Per ora aggiungiamo solo che posso avere a disposizione piu' schermi, a ciascuno dei quali posso dare un nome mnemonico a mia scelta e che ho a disposizione un set di comandi per poter aprire/chiudere/scorrere questi schermi a mio piacimento usando appunto il nome mnemonico che ho impostato. La finestra. Ogni schermo e' divisibile in piu' parti, chiamate finestre. E' possibile associare ogni finestra ad un file diverso oppure per visualizzare parti differenti dello stesso file, oppure ancora delle soluzioni miste, non vi sono limitazioni. Anche qui, come per gli schermi, ho a disposizione un set di comandi per manipolare a piacimento le mie finestre. Chiariti questi due concetti, con i quali il principiante spesso si confonde, vediamo come utilizzarli. Non mi interessa in questa sede elencare una sbrodolata di comandi, questo e' l'articolo di una rivista e non un tutorial, mi interessa piusttosto comunicare dei concetti di utilizzo. Ovviamente tutto cio' ha un qualche interesse nel momento in cui ho l'esigenza di editare piu' file a tempo o passare rapidamente in zone differenti di un file molto lungo, o ancora entrambe le cose a tempo. Un semplice esempio. Voglio riportare le modifiche fatte nel programma "PIPPO" anche nel programma "PLUTO" Apro quindi entrambi i programmi con MicorEMACS, a questo punto posso optare per diverse soluzioni: 1 - Posso scegliere ad esempio di avere due schermi diferenti, caricare un programma per ogni schermo e passare da un programma all'altro a seconda delle mie esigenze, tipico se dispongo di una risoluzione video modesta o se voglio lasciare parte dello schermo libero per altre attivita'. 2 - Posso decidere di avere un unico schermo e di dividerlo in due finestre, ognuna delle quali contenente un programma, soluzione comoda se dispongo di un monitor con un alta risoluzione. Come vedete MicroEMACS si puo' adattare facilemnte non soltanto alle vostre esigenze ma anche ai vostri gusti e al vostro modus operandi senza dover quindi imparare filosofie di utilizzo differenti ma semplicemente mutuarle da strumenti a voi gia' noti. Un esempio complesso. Un esempio complesso tipico e' quando devo modificare i parametri di passaggio tra un programma principale ed una serie di programmi secondari. Immaginiamo di avere un programma "PAPERINO" che in due punti differenti dello stesso chiamera' tre sottoprogrammi "QUI" "QUO" e "QUA" e di dover ad esempio aggiungere dei parametri di input. Mi sara' molto comodo in questo caso avre tutti e quattro i programmi aperti, visualizzando le zone in cui dovro' intervenire. Avere pero' cinque finestre sullo stesso schermo puo' creare aree di lavoro troppo piccole, limitare la visibilita' del programma e rallentare il mio lavoro. Definiro' quindi uno schermo chiamato "MAIN" nel quale avro' magari due finestre che visualizzano due parti differenti dello stesso file (i due punti che devo modificare), in seconda battuta definiro' un altro schermo, che chiamero' "CALL". All'interno di "CALL" definiro' tre finestre in cui inseriro' i tre programmi secondari. In questo modo posso sia cambiare schermo che passare da una finestra all'altra in maniera estremamente agevole, mantenendo al tempo stesso una buona visibilita' su tutti i programmi e anche una certa struttura logica, i programmi secondari sono infatti raggruppati nello stesso schermo e visto che probabilemnte, fatta la modifica sul primo, posso riportare la stessa sugli altri due mi e' utile avere tutti e tre i punti sott'occhio. Lo stesso dicorso vale per l'altro schermo dove i due punti di modifica del programma principale sono disponibili nello stesso schermo. Un occhio alle prestazioni. Qualcuno potrebbe obiettare: "perche' devo complicarmi la vita in questo modo, apro un editor differente per ogni file ed ecco fatto! ". Sicuramente e' vero, ma questa e' una soluzione prettamente da utente piuttosto che da sviluppatore. In altre parole e' una soluzione efficace, ma non efficente. Ogni programma in esecuzione occupa notoriamente due aree di memoria, una per il codice, l'altra per i dati; se utilizziamo un editor multifile come MicorEMACS utilizziamo una sola area per il programma e un'area dati per ogni file aperto, se lanciamo un editor differente per ogni file duplichiamo l'area dedicata al codice. Forse uno non si rende conto esattamente di quanto pesante sia quest'ultima soluzione finche' non fa due calcoli, proviamo a farli assieme. Immaginiamo per comodita' che l'editor (uno qualsisai) occupi 50Kb e che i file aperti siano tutti della stessa dimensione: 10 Kb. Nel caso dell'esempio semplice a due file avremo: 50+10+10 = 70 kb utilizzati mentre nel caso multi editor avremo: 50 + 10 + 50 + 10 = 120 Kb utilizzati una bella differenza! Allo stesso modo nel caso dei 5 file aperti l'utilizzo della ram aumenta in modo esponenziale, avremo: 50 + 10 + 10 + 10 + 10 + 10 = 100kb utilizzati contro i: 50 + 10 + 50 + 10 + 50 + 10 + 50 + 10 + 50 + 10 = 300 kb!!!! Tenuto conto dei limiti di memoria del QL mi pare una scelta poco consigliabile, anche se ho memoria a sufficienza, rischio di "dimenticarmi" e di aprire qualche altra applicazione con il rischio di mandare in blocco la macchina e perdere il mio lavoro. Lascio scegliere a voi.