=rospell HANDBOOK=
Cuprins:
1. Despre rospell
2. Primii paşi
2.1 Editarea unui fişier existent
2.2 Editarea unui fişier nou
2.3 Backup
2.4 Spelling/Corectare
3. Operaţii de bază
3.1 Formatul fişierelor
3.2 Selectare text
3.3 Cut & Paste
3.4 Find & Replace
3.5 Bufere şi navigare
4. Keyboard Shortcuts
4.1 Caractere diacritice româneşti
4.2 Meniuri
4.3 Cut & Paste la nivel de linie
4.4 Macros şi aliases
5. Programare cu rospell
5.1 Syntax Highlighting
5.2 Ctags
5.3 Context Help
5.4 User Scripts
5.5 Code Beautifier
5.6 Diff & Merge
5.7 Lines of Code
5.8 TOC
==1. Despre rospell==
rospell, Copyright (C) 2005-2007 Rospell Team, http://rospell.sourcefoge.net .
Acest program este gratuit; poate fi distribuit şi/sau modificat conform
licenţei GNU General Public License publicată de Free Software Foundation,
fie versiunea 2, sau (după dorinţă) orice altă versiune ulterioară.
O listă complectă a autorilor şi contributorilor acestui proiect poate fi găsită în
authors.html.
==2. Primii paşi==
Welcome to rospell!
rospell este un editor de cod sursă şi
fişiere text. Are o interfaţă grafică (GUI) standard, cu meniuri, ferestre de dialog,
suport pentru dispozitive mouse, precum şi toate shortcut-urile de tastatură pe care
ne aşteptăm să le găsim într-un editor modern.
Pentru a porni programul introduceţi comanda:
rospell filename
==2.1 Editarea unui fişier existent==
Un fişier existent este deschis folosind Open în meniul File.
Orice număr de fişiere pot fi deschise concomitent. Aceste fişiere vor apare
ca bufere în fereastra de editare.
Două ferestre de editare sunt disponibile. Când programul este pornit, una dintre
ele este minimizată. Pentru a o activa, trageţi cu mouse-ul de bara splitter din
partea de jos a primei ferestre.
Puteţi deschide fişierele şi folosind fereastra directory aflată în stânga
ferestrei de editare. Un click pe un nume de fişier va deschide fişierul respectiv,
în timp ce un click pe un nume de director vă oferă posibilitatea
să schimbaţi directorul curent.
rospell este protejat împotriva deschiderii accidentale a unui fişier de mai multe ori.
==2.2 Editarea unui fişier nou==
Pornit fără nici un nume de fişier, fereastra de editare este goală, ca pentru un fişier nou
care nu are încă un nume; începeţi să editaţi. Pentru a da un nume fişierului, alegeţi
Save sau Save As in meniul File.
Un astfel de fişier nou poate fi creat şi după ce editorul a fost pornit
apăsând New Window sau New Buffer în meniul File.
==2.3 Backup==
De fiecare dată când un fişier este deschis pentru editare, rospell salvează o copie
a fişierului în directorul ~/.rospell/backup. Puteţi reveni la această versiune a fişierului
printr-un simplu cp (copy) dacă este necesar. Facilitatea de backup periodic nu este
implementată în acest moment.
==2.4 Spelling/Corectare==
Un număr de limbi diferite sunt suportate de speller.
Limba este aleasă folosind Language în meniul Preferences. Pentru a porni
spelling-ul de la poziţia în care se află cursorul apăsaţi Start Spelling. Dacă un
cuvânt este bănuit c-ar avea probleme, spelling-ul se opreşte iar cuvântul respectiv
este selectat. Puteţi corecta cuvântul prin editare, puteţi sări peste el apăsând
Ignore, sau puteţi să-l includeţi într-un dicţionar local aflat în
fişierul ~/.rospell/dictionary.user.
==3. Operaţii de bază==
După cum a fost menţionat în capitolul anterior, toate operaţiile de baza sunt suportate de rospell.
În acest capitol vom descrie unele dintre ele.
==3.1 Formatul fişierelor==
Formatul text este unul dintre cele mai simple şi mai uşor de interpretat formate de fişiere
în lumea computerelor. Există totuşi o diferenţă de la sistem la sistem în ceea ce priveşte ce
înseamnă format text. Fişierele în acest format diferă din punctul de vedere al setului de caractere
folosit, modului de terminare al unei linii de text şi wrapping.
În timp ce diferenţele de seturi de caractere prezintă practic cea mai mare problemă de
portabilitate, aceste diferenţe afectează rospell în mod indirect. Mecanismul de localizare
şi de alegere al fonturilor este un mecanism comun tuturor aplicaţiilor sub X. Dacă sistemul
dumneavoastră este setat corect, probabil nu veţi avea niciodată probleme în rospell.
Intern, rospell foloseşte setul de caractere Unicode/UTF-8. Acesta este setul de caractere implicit implementat
în X. Dacă aveţi un fişier text care utilizează acest set de caractere iar literele nu sunt afişate
corect, probabil este din cauza fontului folosit care nu are suport pentru toate caracterele
specificate în standard. Puteţi schimba fontul folosind Select Font în meniul
Preferences.
Cu toate că Unicode/UTF-8 este cel mai avansat set de caractere actual, şi este setul principal susţinut
de organizaţiile internaţionale de standardizare, mai există trei alte seturi de caractere utilizate curent
în România. Acestea sunt iso8859-2 şi iso8859-16 (standardele vechi ISO care au fost înlocuite
de Unicode/UTF-8) şi cp1250 folosit de Microsoft (ceva foarte asemănător cu iso8859-2, pe cale
de fi înlocuit şi el de UTF-8). Puteţi folosi rospell pentru a edita fişiere ce folosesc
oricare din aceste seturi de caractere specificând pe linia de comandă setul dorit:
USAGE: rospell [OPTION] filename
--iso8859-2: using ISO8859-2 character set
--iso8859-16: using ISO8859-16 character set
--cp1250: using CP1250 (Windows) character set
Diferenţa principală dintre formatul text folosit de sistemele MS DOS şi formatul text folosit de sistemele
Unix este modul în care liniile sunt terminate. Unix foloseşte un simplu newline în timp ce MS DOS
foloseşte un carriage-return urmat de un newline. rospell citeşte şi scrie în ambele
formate, fără a schimba automat formatul fişierului. Singura conversie implementată este cea din
MS DOS în Unix, iar aceasta se află sub controlul utilizatorului: UNIX CR/LF Cleanup în
meniul Tools.
În prezent, rospell nu implementează wrapping.
Ultima, şi cea mai obscură din diferenţele între formatele text este caracterul newline de terminare a fişierului.
Unele compilatoare şi programe utilitare Unix cer ca fişierele text pe care le procesează să fie
terminate cu un newline, iar în caz contrar vor începe să se plângă (de exemplu gcc ne dă un
warning). Vi şi aproximativ jumătate din editoarele text din Unix vor adăuga automat un newline
la sfârşitul fişierului; ca şi Emacs, rospell nu respectă această regulă, şi îl lasă pe utilizator
să facă ce vrea.
==3.2 Selectare text==
Pentru a selecta text pentru copiere, ştergere sau înlocuire, apăsaţi butonul din stânga al
mouse-ului şi "măturaţi" textul ţinând apăsat acest buton. Textul va fi selectat iar culoarea
lui va fi schimbată pentru a fi scos în evidenţă. Pentru a selecta un singur cuvânt apăsaţi
de două ori rapid butonul stânga al mouse-ului. Sau apăsaţi de două ori în timp ce mişcaţi
mouse-ul pentru a selecta mai multe cuvinte. Similar, dacă apăsaţi rapid de trei ori
veţi selecta una sau mai multe linii. Pentru a şterge textul
selectat apăsaţi tasta delete sau tasta backspace, sau începeţi să introduceţi
un nou cuvânt pentru a-l înlocui pe cel selectat.
Butonul din mijloc al mouse-ului poate fi folosit în conjuncţie cu ceea ce se numeşte selecţia
secundară. Dacă facem un click cu acest buton, ultimul text selectat este copiat în
fereastra în care a avut loc apăsare butonului. Este una din cele mai interesante opţiuni oferite
de mediile X.
==3.3 Cut & Paste==
Cea mai uşoară metodă de a copia şi muta text între diverse fişiere sau ferestre, este să folosiţi
clipboard-ul, o zonă imaginară folosită pentru a stoca text şi date. Comanda Cut elimină
textul selectat şi-l plasează în clipboard. Odată ajuns acolo, textul poate fi copiat cu Paste
în poziţia curentă a cursorului în fereastra activă. Comanda Copy copiază textul selectat
în clipboard fără a-l şterge din fereastra curentă.
Clipboard-ul poate fi folosit pentru a transfera text şi între aplicaţii diferite sub X. Metoda preferată
însă este cea a butonului din mijloc al mouse-ului descrisă în secţiunea precedentă.
rospell suportă şi selectare/cut/paste la nivel de linie, funcţionalitate asociată cu tastele
+ si - de pe numpad şi tastele uzuale Insert şi Delete. Această funcţionalitate
este descrisă în mai mult detaliu în capitolul Keyboard Shortcuts.
==3.4 Find & Replace==
Dialogurile Find & Replace pot fi accesate din meniul Edit. Aceste dialoguri vă invită să specificaţi
o bucată de text ce urmează a fi căutată, iar în cazul lui Replace şi o bucată de text care o va înlocui
pe cea originală. Alte opţiunii sunt prezente în aceste dialoguri, cum ar fi Ignore Case sau Replace All.
Fereastra intitulată search este asociată operaţie de căutare. După o comandă de căutare, fereastra
va fi populată cu toate apariţiile textului căutat începând cu poziţia curentă în fişierul editat. Numărul liniei pe care
textul a fost găsit este şi el specificat. Un click cu mouse-ul pe un asemenea număr de linie în fereastra
search ne va duce direct la linia respectivă în fereastra de editare.
O altă facilitate este cea intitulată Quick Search. Puneţi cursorul sub un cuvânt in fereastra curentă de
editare, apăsaţi butonul din dreapta al mouse-ului, o fereastră pop-up va apare, fereastra conţine şi comanda
Quick Search.
Funcţionalitatea de tip grep este şi ea prezentă în meniul Edit. Această operaţie va căuta
textul specificat prin toate fişierele prezente în directorul curent. Este un grep recursiv, cu alte
cuvinte, toate subdirectoarele prezente în directorul curent vor fi şi ele vizitate. Rezultatul operaţiei este
afişat în fereastra search, cu numele fişierului şi numărul liniei. Un click cu mouse-ul pe numărul
liniei ne duce direct în fereastra de editare în fişierul respectiv la linia respectivă.
==3.5 Bufere şi navigare==
După cum am spus mai devreme, mai multe fişiere pot fi editate sub formă de bufere într-o singură
fereastră de editare. Meniul Buffers ne permie să schimbăm buferul editat curent în fereastra
de editare.
Tot pentru navigare, rospell implementează o facilitate de bookmark. Un bookmark (semn de carte)
este un loc pe care editorul îl ţine minte, şi dacă i se cere te duce rapid acolo. Astfel de bookmark-uri
sunt setate folosind Set Bookmark în meniul Edit. Pentru a vă duce direct la un bookmark,
folosiţi Goto Bookmark din acelaşi meniu.
Acces rapid la bookmark-uri este disponibil şi printr-un click în fereastra bookmarks.
Dacă aveţi un număr de linie şi doriţi să mergeţi rapid acolo, folosiţi comanda Goto Line din
meniul Edit. Pentru a sări la începutul fişierului apăsaţi Start of File iar pentru a sări
la sfârşitul fişierului apăsaţi End of File în acelaşi meniu.
Comanda Undo implementează o facilitate naivă de întoarcere în timp, în timp ce
Record şi Playback îţi dă posibilitatea să înregistrezi succesiuni de taste
şi să le dai drumul (playback) în mod repetat.
==4. Keyboard Shortcuts==
Majoritatea shortcut-urilor de tastatură în rospell sunt specificate în partea din dreapta
a ferestrei de meniu. Există însă altele care nu sunt specificate acolo. Acestea includ shortcut-uri
ale butoanelor de dialog, taste speciale precum săgeţi, page-up, page-down, home, etc.
==4.1 Caractere diacritice româneşti==
Suportul pentru caractere diacritice româneşti este implementat în interiorul editorului de text.
Cu alte cuvinte, nu este neapărat nevoie să va chinuiţi să vă setaţi tastatura în mod special
pentru a obţine acest suport elementar. Practic, scos din arhivă şi instalat, caracterele diacritice vor merge
în rospell în cele mai multe cazuri din prima.
Există două standarde larg răspândite de mapare de diacritice. Primul standard specifică tastatura
hardware românească, iar al doilea standard mapează caracterele diacritice folosind tasta Alt din
partea dreaptă a barei de spaţiu pe o tastatură US obişnuită. Acesta din urmă poartă numele de
Programmer's Keyboard şi este implementat de rospell.
Practic, apăsaţi tasta Alt sau Alt+Shift împreună cu litera care stă la baza caracterului,
după cum urmează:
ă - Alt+a; Ă - Alt+Shift+a;
â - Alt+q; Â - Alt+Shift+q;
î - Alt+i; Î - Alt+Shift+i;
ş - Alt+s; Ş - Alt+Shift+s;
ţ - Alt+t; Ţ - Alt+Shift+t;
Notă: maparea embedded în rospell funcţionează în paralel cu maparea pe care sistemul
dumneavoastră o are (sau nu) deja setată în X.
==4.2 Meniuri==
Comenzi fişiere:
Alt+e - deschide fişier pentru editare
Alt+w - salvează fişier
Alt+x - ieşire program
Alt+p - print fişier
Comenzi bufere:
Alt+b - listează buferele
Alt+n - activează următorul bufer din listă în fereastra de editare
Alt+d - şterge bufer
Comenzi clipboard:
Ctrl+x - cut
Ctrl+c - copy
Ctrl+v - paste
Navigare:
Alt+g - sari în fişier la linia specificată
Ctrl+PgUp - sari la începutul fişierului
Ctrl+PgDown - sari la sfârşitul fişierului
Alt+1...0 - setează bookmark
Alt+j urmat de 1...0 - sari la bookmark
Search & Replace:
F5 - porneşte căutarea
Shift+F5 - reporneşte căutarea
F6 - înlocuieşte
F7 - grep
F8 - cuprins
Comenzi LaTeX:
Ctrl+b - textul selectat va fi marcat ca bold
Ctrl+i - textul selectat va fi marcat ca italic
Ctrl+t - textul selectat va fi marcat ca typewriter
==4.3 Cut & Paste la nivel de linie==
Dacă nu avem nimic selectat:
Numpad+ - copiază linia curentă în clipboard
Numpad- - copiază linia curentă în clipboard şi şterge-o din document
Insert - paste
Dacă ceva este selectat:
Numpad+ - echivalent cu Ctrl+c
Numpad- - echivalent cu Ctrl+x
Insert - echivalent cu Ctrl+v
==4.4 Macros şi aliases==
Record şi playback:
Alt+r - începe înregistrarea macro; următorul Alt+r va opri înregistrarea
Alt+p - playback macro; dacă este necesar, înregistrarea este oprită automat
rospell îţi permite de asemenea să defineşti aliases. Acestea funcţionează ca un
macro, modul de înregistrare şi playback este diferit. Începeţi cu dialogul Alias în meniul
Preferences unde introduceţi un alias şi un replacement. În acest dialog
puteţi edita orice număr de aliases, care sunt salvate automat în fişierul ~/.rospell/alias
şi vor fi încărcate automat de fiecare dată când programul este pornit.
Exemplu de alias:
Să presupunem că vrem să definim un alias pentru (const char *). În fereastra de dialog
setăm alias ca cc şi replacement ca (const char *). Ieşim din fereastra
de dialog apăsând OK. Apoi, de fiecare dată când introducem de la tastatură stringul
cc urmat de un spaţiu blanc, editorul va introduce în textul editat (const char *).
=5. Programare cu rospell=
Deşi are o înfăţişare destul de generică, rospell implementează multe opţiuni specifice
programării. Unele din ele sunt detaliate în acest capitol.
==5.1 Syntax Highlighting==
Prin Syntax Highlighting se înţelege folosirea diverselor culori şi fonturi pentru diverse
porţiuni de cod sau text structurat. Programatorii folosesc o asemenea facilitate pentru
a înţelege mai uşor cod sursă şi pentru a găsi rapid felurite probleme de sintaxă.
Syntax Highlighting este activat implicit în rospell. Când un fişiere este deschis,
rospell încearcă să ghicească limbajul de programare folosit în fişier pe baza extensiei
fişierului. Dacă o asemenea determinare nu poate fi făcută, fişierul este presupus a fi de tip xml.
Lista limbajele de programare suportate de program include: C, C++, JavaScript, Java, C#, XML, HTML, PHP,
assembler, qmake, PERL, Python, shell şi LaTeX.
Folosiţi Colors în meniul Preferences pentru a schimba alocarea culorilor.
==5.2 Ctags==
Aceasta este probabil una din cele mai spectaculoase opţiuni pe care un editor de text poate
să le ofere programatorului. Folosiţi un program special intitulat ctags să creaţi un fişier de tag-uri.
Fişierul de tag-uri dacă există, este încărcat automat în rospell la pornirea programului. Aceste
tag-uri constau în informaţie despre diversele funcţii, structuri şi definiţii împreună cu numele
fişierului şi linia pe care funcţia/structura/definiţia/etc. apare. Această informaţie este folosită
în navigare rapidă în text la locul respectiv. De exemplu, pui cursorul în sursa de program
sub un nume de funcţie, iar în fereastra ctags este încărcat codul funcţiei respective.
rospell foloseşte exuberant-ctags pentru crearea fişierului de tag-uri. Programul este
rulat cu opţiunea -e (emacs mode) din Ctags în meniul Preferences. Parametrii
adiţionali pot fi adăugaţi de utilizator.
Fişierul de tag-uri creat şi încărcat, rospell începe să pună informaţie de tagging
în fereastra ctags. Un click în această fereastră, îţi încarcă codul respectiv în fereastra de editare.
Opţiunea de tagging consumă ceva resurse CPU, ar putea fi necesar să o dezactivaţi dacă lucraţi
pe un calculator mai vechi. Aceasta se face din Ctags în meniul Preferences, sau temporar
din Lock Ctags în acelaşi meniu.
==5.3 Context Help==
Context help este o opţiune similară cu cea de tagging şi utilizează aceeaşi infrastructură
software, inclusiv fereastra de dialog Ctags din meniul Preferences. În această ferestră,
puteţi activa sau dezactiva context help pentru:
C Standard Library, Standard Posix Header Files şi LaTeX Help.
==5.4 User Scripts==
rospell poate fi extins folosind scripturi definite de utilizator. Patru asemenea scripturi sunt acceptate.
Acestea sunt activate de tastele F1 până la F4. Un exemplu de script este după
cum urmează:
make 2>&1
echo done
Acest script simplu execută make în directorul unde a fost pornit editorul.
Scriptul a fost editat utilizând User Scripts în meniul Preferences. Apăsând tasta F1,
scriptul este rulat, iar rezultatul compilării se găseşte în fereastra user. rospell înţelege formatul
în care gcc îşi tipăreşte erorile, astfel un click în această fereastră ne duce direct la linia de cod
unde a fost raportată problema.
==5.5 Code Beautifier==
Aceasta este facilitatea de formatare a codului sursă conform preferinţelor dumneavoastră: formatul
spaţiilor goale, modul în care sunt plasate parantezele, indentare. Fereastra de dialog se găseşte
în Beautify în meniul Tools. Înainte ca formatarea să aibă loc, fişierul curent este salvat automat,
şi puteţi reveni la această versiune în cazul în care formatarea nu vă satisface.
Alte opţiuni relevante aici sunt cele de Shift Left, Shift Right, Space to Tab şi
Tab to Space. Acestea funcţionează numai pe text selectat şi sunt activate de un click de mouse
cu butonul din partea dreaptă în fereastra de editare.
==5.6 Diff & Merge==
Diff & Merge sunt două activităţi foarte frecvente în programare. Ele sunt suportate de rospell
în meniul Tools. În principiu constau în compararea a două fişiere şi analizarea diferenţelor.
În cazul lui merge, un al treilea fişier este creat. Presupunem că doi programatori lucrează în paralel
pe două calculatoare diferite pe două versiuni diferite ale aceluiaşi fişier. În mod normal cele două
versiuni vor trebui reconciliate la un moment dat, în aşa fel încât să conţină modificările ambilor programatori.
Rezultatul este cel de al treilea fişier amintit mai sus, şi care va înlocui cele două versiuni locale
folosite de cei doi programatori.
Session Diff în meniul Tools ne permite să analizăm diferenţele dintre versiunea curentă a fişierului
pe care îl edităm şi versiunea aceluiaşi fişiere în momentul când a fost deschis pentru editare (o copie a fişierului
a fost salvată în directorul de backup). Este o opţiune folositoare în special dacă lucraţi într-un mediu cu un repozitoriu
Source Control (precum CVS, ClearCase, Subversion, etc.) şi doriţi să aruncaţi o ultimă privire înainte de a introduce
datele în repozitoriu.
==5.7 Lines of Code==
Această facilitate va număra liniile de cod în proiect.
==5.8 Cuprins/TOC==
Cuprins (TOC = Table of Contents) are un înţeles diferit de la tip de fişier la tip de fişier. De
exemplu, în C ar însemna o listă de funcţii şi număr de linii unde aceste funcţii au fost definite,
în timp ce în LaTeX ar însemna o listă cu numărul liniilor unde apar tag-urile chapter, section şi
subsection.
Cuprinsul poate fi generat utilizând TOC în meniul Tools, iar rezultatul este disponibil
în fereastra search. Un click pe un număr de linie vă duce direct la locul unde respectivul element
a fost definit în fişierul text.
Funcţionalitatea TOC este implementată curent numai pentru C/C++ şi LaTeX.