RText

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
RText
software
Siglă
Captură de ecran RTxt care arată codul sursă scris în Java al unei clase aparținând proiectului în sine.
Captură de ecran RTxt care arată codul sursă scris în Java al unei clase aparținând proiectului în sine.
Tip Editor de text
Dezvoltator Fifesoft, colaboratori pe GitHub
Ultima versiune 2.5.8 (13 septembrie 2015 ; acum 5 ani )
Sistem de operare Microsoft Windows
Linux
macOS
Limba Java
Licență Licență BSD (într-o versiune modificată)
( licență gratuită )
Limbă Multilingv
Site-ul web bobbylight.github.io/RText

RText este un editor de text pentru programatori și software gratuit , publicat respectând specificațiile unei versiuni modificate a protocolului BSD License , pentru Windows , macOS , Linux , OS / 2 , Unix și OpenVMS . [1] Programul este disponibil în engleză și a fost tradus și în mai multe limbi, inclusiv chineza continentală (utilizați caractere simplificate), spaniolă, spaniolă argentiniană, portugheză europeană, germană, franceză, italiană, rusă, taiwaneză (folosește caractere tradiționale), Olandeză, japoneză, coreeană, poloneză, turcă, maghiară și indoneziană.

Istorie

Programul a fost creat de Fifesoft și a fost programat în cea mai mare parte de fondatorul său, Robert Futrell. Contribuțiile externe au crescut de când codul sursă este partajat prin intermediul software-ului de control al versiunii distribuite Git pe GitHub . Funcțiile de înregistrare și execuție macro au fost adăugate începând cu versiunea 0.8.9.2.

Funcționalitate

Cele mai relevante caracteristici ale RText sunt următoarele:

  • Evidențierea sintactică pentru peste 40 de limbi, inclusiv programare și marcare [2] [3]
  • Căutarea și înlocuirea textului utilizând expresii regulate
  • Căutați text în conținutul fișierelor și înlocuiți textul în conținutul acestora
  • Suport pentru toate codificările de caractere furnizate de JVM
  • Personalizarea interfeței documentului (cu file, MDI sau modul vizualizare listă)
  • Suport pentru utilizarea simultană a mai multor familii de fonturi
  • Evidențierea parantezei corespunzătoare celei selectate [3]
  • Evidențierea rândului selectat în prezent
  • Interfață grafică personalizabilă (pictograme, aspect și scheme de culori)

Codul sursă este găzduit în prezent de serverele SourceForge, Maven și GitHub.

Caracteristici

RText este un software care urmează filosofia FOSS , acceptă completarea automată , căutarea / înlocuirea expresiei regulate , plierea codurilor , marcajele , evidențierea parantezei și indentarea . [3] De asemenea, acceptă adăugarea de macrocomenzi și pluginuri . Practic sunt deja incluse câteva pluginuri considerate esențiale de către fondator, scrise de același dezvoltator al proiectului (permit, de exemplu, explorarea sistemului de fișiere ).
RText are o interfață personalizabilă și este posibil să deschideți mai multe documente în aceeași instanță a programului prin utilizarea de file. Prezintă stiluri tematice, fonturi și culori ale editorilor de text avansați. Notepadul tradițional inclus într-un pachet cu sistemul de operare Windows , pe de altă parte, nu vă permite să alegeți culoarea fontului și a fundalului. Există câteva teme care recuperează modul tradițional de fundal negru / caractere albe sau gri.

În plus, utilizatorii pot defini evidențierea sintaxei și completarea automată pentru orice alt limbaj, printr-un sistem de definiție bazat pe JFlex (The Fast Scanner Generator for Java) care face RText extensibil, dacă sunteți familiarizat cu limbajul de programare Java.

Alte caracteristici sunt:

  • Plierea codului și evidențierea codului (de asemenea personalizate)
  • Completare automată
  • Vizualizare cu file (pentru a deschide mai multe documente)
  • Măriți și micșorați
  • Suport chinezesc, japonez și coreean pentru Windows
  • Copiați textul selectat în clipboard-ul sistemului de operare, sub forma RTF [3] [4]
  • Print and print preview [5]
  • Exportul conținutului zonei de text sub formă de cod HTML, cu conservarea consecventă a setului de stil sintactic.
  • Managerul de clipboard integrat în zona de text (activat prin apăsarea combinației de taste Ctrl + Shift + V).
  • Returnarea eșantionului de fragmente de cod sursă ( fragmente ) în limbile utilizate pentru programarea macrocomenzilor.
  • Hiperlinkuri care pot fi făcute clic (dacă motorul analitic al limbii permite acest lucru). [3]

În bara de stare a ferestrei principale există un indicator al cantității de memorie ocupată de aplicație în zona de memorie heap .

Limbi acceptate

Suportă diverse limbaje de programare și marcare [3] .

În acest moment sunt:

Aspecte tehnice

Proiectul se bazează pe o componentă, zona textuală RSyntaxTextArea, de asemenea open source și scrisă în Java și nu recurge în niciun caz la invocarea API-ului Win32 , prin urmare nu folosește Microsoft Foundation Classes (MFC) sau biblioteci similare , care asigură portabilitatea programului într-un mediu multi-platformă, deoarece este originar din Java . Acesta este distribuit conform specificațiilor unei versiuni modificate a protocolului BSD License .

Detalii despre RSyntaxTextArea

Deoarece RSyntaxTextArea acceptă intern căutarea textului cu expresii regulate pe mai multe linii, RText permite acest mod de căutare. RSyntaxTextArea este o extensie a celei mai populare JTextArea conținută în pachetul Java Swing . Printre caracteristicile adăugate se numără:

  • Modul Insert / Overwrite (activat prin apăsarea tastei Insert).
  • Un meniu contextual pop-up cu opțiuni de editare standard.
  • Suport pentru macrocomenzi .
  • Funcționalitatea „Mark All”, aplicabilă în timpul căutării textului.
  • O modalitate de a schimba fundalul zonei de text cu o imagine (formatele acceptate sunt gif / png / jpg )
  • Evidențierea rândului selectat în prezent (poate fi dezactivat).
  • O modalitate ușoară de a imprima conținutul său text (interfața imprimabilă , conținută în pachetul Java AWT , este extinsă)
  • Diferite moduri de a adăuga caractere tab (soft și hard, respectiv emulate sau nu de spații)
  • Fixed un bug încă prezent în setTabSize metoda de JTextArea.

Dacă fundalul unui RTextArea (clasa extinsă din RSyntaxTextArea ) ar fi setat la o anumită culoare, proprietatea sa opaque ar fi setată la true din motive de performanță. În schimb, dacă fundalul ar fi setat cu o imagine, atunci proprietatea opaque ar fi setată la false . Toate acestea înrăutățesc performanța, dar, dacă nu ar fi cazul, utilizatorul ar vedea câteva defecte grafice apărând pe ecran, în zona ocupată de zona de text, în timp ce derula un document folosind tastele săgeți (aceeași problemă nu apar prin apăsarea tastelor Pagină. Sus în jos). Fifesoft a sfătuit să nu schimbe valoarea proprietății opaque , așa cum se face după logica existentă, atunci când este cazul.

Fifesoft recomandă încorporarea zonei textuale în interiorul unei instanțe a RTextScrollPane , în loc de în cel mai faimos JScrollPane (componentă conținută în pachetul Java Swing ), dacă decideți să includeți RSyntaxTextArea într-un program dezvoltat independent, deoarece această clasă permite adăugarea numerelor de linie și marcaje în zona de text.

Detalii macro

Macrocomenzile sunt programate alternativ în limbajul de scriptare , orientat obiect și către evenimente JavaScript , utilizând interpretul JavaScript Rhino sau în obiectul limbaj de programare pentru platforma Java Groovy .

Exemplu de macro care deschide un fișier

Următorul exemplu prezintă scriptul JavaScript al unei macrocomenzi care deschide un fișier. Numele fișierului de deschis se obține pe baza selecției din foaia de lucru activă a editorului RText; dacă este disponibil, fișierul se deschide într-o nouă foaie de lucru RText:

 textArea . beginAtomicEdit ();
incearca {
	var fileName = textArea . selectedText ;
	if ( FileName == null || fileName . length () == 0 ) {
		javax . leagăn . JOptionPane . showMessageDialog ( rtext ,
				"Nu s-a putut deschide fișierul: nicio selecție. \ N" +
				"Trebuie selectat un nume de fișier în editorul activ pentru a deschide un fișier." ,
				„Eroare” , javax . leagăn . JOptionPane . ERROR_MESSAGE );
	}
	altceva {
		var ISURL = filename. startsWith ( "http: //" );

		var file = new java . eu . File ( fileName );
		if ( ! file . isAbsolute ()) {
			var parentDir = new java . eu . Fișier ( textArea . FileFullPath ). fișier părinte ;
			fișier = new java . eu . File ( parentDir , fileName );
		}

		// Ou de Paște - dacă acesta este un URL, deschideți-l într-un browser
		if ( isUrl ) {
			java . awt . Desktop . getDesktop (). răsfoire (nou java net URL (filename) acordarea ac ()...);
		}
		else if ( file . isFile ()) {
			rtext . openFile ( file . absolutePath );
		}
		else if ( file . isDirectory ()) {
			Selectorul var = rtext. fileChooser ;
			alegător . currentDirectory = fișier ;
			rtext . getAction ( org . fife . rtext . RTextActionInfo . OPEN_ACTION ). actionPerformed ( nul );
		}
		altceva {
			javax . leagăn . JOptionPane . showMessageDialog ( rtext ,
					"Fișierul nu există: \ n" + fișier . absolutePath , „Eroare” ,
					javax . leagăn . JOptionPane . ERROR_MESSAGE );
		}
	}
} în cele din urmă {
	textArea . endAtomicEdit ();
}

Același exemplu programat în limbaj Groovy :

 import java.awt. *
import javax.swing. *
import org.fife.rtext. *

textArea . beginAtomicEdit ()
incearca {
	def fileName = textArea . selectatText
	if ( FileName == null || fileName . length () == 0 ) {
		JOptionPane . showMessageDialog ( rtext ,
				"" "Nu s-a putut deschide fișierul: nicio selecție.
Un nume de fișier trebuie selectat în editorul activ pentru a deschide un fișier. "" " ,
				„Eroare” , JOptionPane . ERROR_MESSAGE )
	}
	altceva {
		def ISURL = filename. startsWith ( "http: //" )

		def file = new File ( fileName )
		if (! file . isAbsolute ()) {
			def parentDir = new File ( textArea . fileFullPath ). parentFile
			file = new File ( parentDir , fileName )
		}

		// Ou de Paște - dacă acesta este un URL, deschideți-l într-un browser
		if ( isUrl ) {
			Desktop . desktop . răsfoiți ( adresa URL nouă ( fileName ). toURI ())
		}
		else if ( file . isFile ()) {
			rtext . openFile ( fișier . absolutePath )
		}
		else if ( file . isDirectory ()) {
			def Selectorul = rtext. fileChooser
			alegător . currentDirectory = fișier
			rtext . getAction ( RTextActionInfo . OPEN_ACTION ). actionPerformed ( nul )
		}
		altceva {
			JOptionPane . showMessageDialog ( rtext ,
					"Fișierul nu există: \ n" + fișier . absolutePath , „Eroare” ,
					JOptionPane . ERROR_MESSAGE )
		}
	}
} în cele din urmă {
	textArea . endAtomicEdit ()
}

Exemplu de macro care convertește caractere speciale pentru HTML

Următorul exemplu arată scriptul JavaScript al unei macrocomenzi care înlocuiește orice text selectat cu o versiune formatată HTML a textului respectiv:

 funcție replaceMultipleSpaces ( text ) {
	var p = java . util . regex . Model . compila ( "+" );
	var m = p . potrivitor ( text );
	var sb = new java . lang . StringBuffer ();
	while ( m . find ()) {
		spații var = m . grup ();
		m . appendReplacement ( sb , spații . replace ( "" , "& nbsp;" ));
	}
	m . appendTail ( sb );
	întoarce sb . toString ();
}

textArea . beginAtomicEdit ();
incearca {
	var text = textArea . selectedText ;
	if ( text == nul || text . lungime () == 0 ) {
		javax . leagăn . JOptionPane . showMessageDialog ( rtext ,
				„Eroare: nicio selecție. \ N” +
				"Textul trebuie selectat în HTML-ify." ,
				„Eroare” , javax . leagăn . JOptionPane . ERROR_MESSAGE );
	}
	altceva {
		text = text . înlocuiți ( "&" , "& amp;" ). înlocuiți ( "\" " , " & quot; " ).
				înlocuiți ( "<" , "& lt;" ). înlocuiți ( ">" , "& gt;" ).
				înlocuiți ( "\ t" , "& # 009;" ). replace ( "\ n" , "<br /> \ n" );
		if ( text . conține ( "" )) { // Înlocuiți mai multe spații cu & nbsp; secvențe
			text = replaceMultipleSpaces ( text );
		}
		var start = textArea . getSelectionStart ();
		textArea . replaceSelection ( text );
		textArea . setSelectionStart ( start );
		textArea . setSelectionEnd ( start + text . length ());
	}
} în cele din urmă {
	textArea . endAtomicEdit ();
}

Exemplu de macro care sortează alfabetic elementele unei liste

Următorul exemplu arată scriptul JavaScript al unei macrocomenzi care sortează toate rândurile din foaia de lucru RText activă:

 var removeDuplicates = adevărat ; // Treceți la „fals” dacă doriți să păstrați duplicatele

function join ( linii ) {
	var sb = new java . lang . StringBuffer ();
	if ( lines ! = null && lines . lungime > 0 ) {
		for ( var i = 0 ; i < lines . length ; i ++ ) {
			//System.out.println(lines†i]);
			sb . anexa ( liniile [ i ]). append ( '\ n' );
		}
	}
	întoarce sb . toString ();
}

// Notă: va trebui să luați în considerare înfășurarea scripturilor în apeluri către
// beginAtomicEdit () și endAtomicEdit (), astfel încât acțiunile pe care le efectuează pot
// să fie anulat cu o singură acțiune Anulare.
textArea . beginAtomicEdit ();
incearca {
	var lines = textArea . text . divizare ( "\ n" );

	if ( removeDuplicates ) {
		var ts = new java . util . TreeSet ();
		for ( var i = 0 ; i < lines . length ; i ++ ) {
			ts . add ( linii [ i ]);
		}
		linii = ts . toArray ();
	}

	java . util . Matrice . sortare ( linii );
	textArea . text = unire ( linii );

} în cele din urmă {
	textArea . endAtomicEdit ();
}

Același exemplu programat în limbaj Groovy :

 final def removeDuplicates = true // Schimbați în „false” dacă doriți să păstrați duplicatele

// Notă: va trebui să luați în considerare înfășurarea scripturilor în apeluri către
// beginAtomicEdit () și endAtomicEdit (), astfel încât acțiunile pe care le efectuează pot
// să fie anulat cu o singură acțiune Anulare.
textArea . beginAtomicEdit ()
incearca {
	def lines = textArea . text . divizat ( "\ n" )

	if ( removeDuplicates ) {
		def ts = new TreeSet ()
		linii . fiecare {
			ts . adauga ( it )
		}
		linii = ts . toArray ()
	}

	Matrice . sortare ( linii )
	textArea . text = linii . alăturați-vă ( "\ n" )
} în cele din urmă {
	textArea . endAtomicEdit ()
}

Notă

  1. ^ (EN) Site-ul oficial al RText pe fifesoft.com, Fifesoft, 16 august 2008. Accesat la 16 august 2008 (depus de „Adresa URL originală 21 aprilie 2015).
  2. ^ (EN) Readme RSyntaxTextArea, componentă utilizată de RText, publicată pe GitHub , pe github.com depozitul GIT oficial al RSyntaxTextArea, 15 aprilie 2015. Accesat la 15 aprilie 2015 ( depus la 17 aprilie 2015).
  3. ^ a b c d e f ( EN ) Documentația API a clasei RSyntaxTextArea , la jtstand.codehaus.org , Fifesoft (documentația API preluată de pe site-ul web JTStand), 11 decembrie 2014. URL accesat 11 decembrie 2014 (arhivat de adresa URL originală pe 24 aprilie 2015) .
  4. ^ (EN) Review of RText publicat pe Softpedia , pe softpedia.com, Elena Opris, 31 decembrie 2014. Accesat la 31 decembrie 2014 ( depus la 20 aprilie 2015).
  5. ^ RText review publicat pe HTML.it , pe download.html.it , echipa editorială a HTML.it, 15 iulie 2008. Accesat la 15 iulie 2008 ( arhivat la 20 aprilie 2015) .

Elemente conexe

Alte proiecte

linkuri externe