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.