RText: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m Corretta la URL di una fonte.
ValterVBot (discussione | contributi)
m tag source deprecati, replaced: <source lang= → <syntaxhighlight lang= (5), </source> → </syntaxhighlight> (5)
 
(27 versioni intermedie di 18 utenti non mostrate)
Riga 1:
{{Software
|Nome = RText
|Logo = RText Header green.png
|DimensioneLogo = 235px
|Screenshot = RText Main View Screenshot.png
|Didascalia = Schermata di RText raffigurante il codice sorgente scritto in [[Java (linguaggio di programmazione)|Java]] di una classe appartenente al progetto stesso.
|Sviluppatore = Fifesoft, [https://github.com/bobbylight/RSyntaxTextArea/graphs/contributors collaboratori su GitHub]
|UltimaVersione = 2.5.68
|DataUltimaVersione = {{data e tempo|2113|1209|20142015}}
|UltimaVersioneBeta =
|DataUltimaVersioneBeta =
Riga 13 ⟶ 12:
|SistemaOperativo2 = Linux
|SistemaOperativo3 = Mac OS X
|Linguaggio = Java
|Genere = Editor di testo
|Licenza = [[BSD License]] (in una versione modificata)
|SoftwareLibero = sì
|Lingua = Multilingua
|SitoWeb = [httphttps://fifesoftbobbylight.com/rtext/ fifesoftgithub.comio/rtext]RText
}}
 
'''RText''' è un [[editor di testo]] per programmatori ed un [[software libero]], pubblicato rispettando le specifiche di una versione modificata del protocollo [[BSD License]], per [[Microsoft Windows|Windows]], [[Mac OS XmacOS]], [[Linux]], [[OS/2]], [[Unix]] e [[OpenVMS]].<ref name=s-rtexthomepage>{{cita web|titolo=Sito Web ufficiale di RText|url=http://fifesoft.com/rtext/|editore=Fifesoft|accesso=16 agosto 2008|data=16 agosto 2008 |lingua=en |urlmorto=no |dataarchivio=21 aprile 2015 |urlarchivio=httphttps://www.webcitation.org/6XwzFEaJ0?url=http://fifesoft.com/rtext/}}</ref>
Il programma è disponibile in inglese ed è stato tradotto anche in diversi idiomi, tra cui quello cinese della Cina continentale (usa i caratteri semplificati), spagnolo, spagnolo argentino, portoghese europeo, tedesco, francese, italiano, russo, taiwanese (fa uso dei caratteri tradizionali), olandese, giapponese, coreano, polacco, turco, ungherese ed indonesiano.
 
== Storia ==
Il programma è stato creato da [[Fifesoft]] ed è stato programmato per lo più dal suo fondatore, Robert Futrell. I contributi esterni sono aumentati da quando il codice sorgente viene condiviso tramite il software di [[controllo di versione distribuito]] [[Git (software)|Git]] su [[GitHub]].
Le funzionalità di registrazione ed esecuzione delle [[Macro_Macro (informatica)|macro]] sono state aggiunte a partire dalla versione 0.8.9.2.
 
== Funzionalità ==
Le funzionalità più rilevanti di RText sono le seguenti:
 
* Evidenziazione sintattica per oltre 40 linguaggi, tra quelli di [[Linguaggio di programmazione|programmazione]] e di [[Linguaggio di marcatura|marcatura]]<ref name=g-rsyntaxtextareareadme>{{cita web|titolo=File Leggimi di RSyntaxTextArea, componente usato da RText, pubblicato su GitHub|url=https://github.com/bobbylight/RSyntaxTextArea/blob/master/README.md/|editore=Repository ufficiale GIT di RSyntaxTextArea|accesso=15 aprile 2015|data=15 aprile 2015 |lingua=en |urlmorto=no |dataarchivio=17 aprile 2015 |urlarchivio=httphttps://www.webcitation.org/6Xr1TtUJB?url=https://github.com/bobbylight/RSyntaxTextArea/blob/master/README.md/}}</ref><ref name=j-rsyntaxtextareaapidocumentation />
* Ricerca e sostituzione testuale per mezzo dell'utilizzo delle espressioni regolari
* Ricerca del testo nel contenuto dei file e sostituzione testuale nel contenuto degli stessi
Riga 37 ⟶ 35:
* Personalizzazione dell'interfaccia del documento (modalità di visualizzazione a schede, MDI o in elenco listato)
* Supporto all'utilizzo simultaneo di molteplici famiglie di caratteri
* Evidenziazione della parentesi corrispondente a quella selezionata<ref name=j-rsyntaxtextareaapidocumentation>{{cita web|titolo=Documentazione API della classe RSyntaxTextArea|url=http://jtstand.codehaus.org/jtstand-editor/apidocs/org/fife/ui/rsyntaxtextarea/RSyntaxTextArea.html|editore=Fifesoft (documentazione API reperita dal sito Web di JTStand)|accesso=11 dicembre 2014|data=11 dicembre 2014 |lingua=en |urlmorto=no |dataarchivio=24 aprile 2015 |urlarchivio=httphttps://www.webcitation.org/6Y1hrHueu?url=http://jtstand.codehaus.org/jtstand-editor/apidocs/org/fife/ui/rsyntaxtextarea/RSyntaxTextArea.html}}</ref>
* Evidenziazione della riga correntemente selezionata
* Interfaccia grafica personalizzabile (icone, look and feel e schemi dei colori)
 
Il codice sorgente è attualmente ospitato dai Server di SourceForge, Maven e GitHub.
 
== Caratteristiche ==
RText è un software che segue la filosofia [[FOSS]], supporta l'[[autocompletamento]], la ricerca/sostituzione tramite [[espressioni regolari]], il [[code folding]], i [[segnalibro (informatica)|segnalibri]], l'[[Bracket matching|evidenziazione delle parentesi]] e l'[[indentazione]].<ref name=j-rsyntaxtextareaapidocumentation /> Supporta anche l'aggiunta di [[macro (informatica)|macro]] e [[plugin (informatica)|plugin]]. Di base sono già inclusi alcuni plugin ritenuti essenziali dal fondatore, scritti dallo stesso sviluppatore del progetto (permettono, per esempio, di esplorare il [[File System]]).<br />
RText ha un'interfaccia personalizzabile ed è possibile aprire più documenti all'interno della stessa istanza del programma tramite l'uso delle linguette. Presenta stili, ''font'' e colori a tema propri di editor di testo evoluti. Il tradizionale Blocco note incluso in bundle con il sistema operativo [[Microsoft Windows|Windows]], al contrario, non permette di scegliere il colore del font e dello sfondo. Sono presenti alcuni ''temi'' che recuperano la tradizionale modalità sfondo nero/caratteri bianchi o grigi.
 
Inoltre gli utenti possono definire l'evidenziazione della sintassi e l'autocompletamento per qualunque altro linguaggio, tramite un sistema di definizione basato su [[JFlex|JFlex (The Fast Scanner Generator for Java)]] che rende RText estensibile, se si ha familiarità con il linguaggio di programmazione Java.
 
Altre caratteristiche sono:
* [[Code folding]] ed [[evidenziazione del codice]] (anche personalizzata)
* Auto-completamento
* Visualizzazione a schede (per aprire più documenti)
* Zoom in e zoom out
* Supporto Windows Cinese, Giapponese e Koreano
* Copia del testo selezionato negli appunti del sistema operativo, sotto forma di [[Rich Text Format|RTF]]<ref name=j-rsyntaxtextareaapidocumentation /><ref name=s-rtextreview>{{cita web|titolo=Recensione di RText pubblicata su Softpedia|url=http://www.softpedia.com/get/Office-tools/Text-editors/RText.shtml/|editore=Elena Opris|accesso=31 dicembre 2014|data=31 dicembre 2014|lingua=en|urlmorto=no|dataarchivio=20 aprile 2015|urlarchivio=https://www.webcitation.org/6Xvw17xRM?url=http://www.softpedia.com/get/Office-tools/Text-editors/RText.shtml}}</ref>
* Stampa ed anteprima di stampa<ref name=h-rtextreview>{{cita web|titolo=Recensione di RText pubblicata su HTML.it|url=http://download.html.it/software/rtext//|editore=Redazione di HTML.it|accesso=15 luglio 2008|data=15 luglio 2008|lingua=it|urlmorto=no|dataarchivio=20 aprile 2015|urlarchivio=https://www.webcitation.org/6XvwkEDCV?url=http://download.html.it/software/rtext/}}</ref>
* Esportazione del contenuto dell'area testuale sotto forma di codice HTML, con conseguente conservazione dello stile sintattico impostato.
* Gestore [[Appunti (informatica)|appunti]] integrato nell'area testuale (attivabile premendo la combinazione di tasti Ctrl+Shift+V).
* Restituzione di frammenti di codice sorgente esemplificativi ([[snippet]]) nei linguaggi usati per programmare le macro.
* Collegamenti ipertestuali cliccabili (se il motore analitico del linguaggio lo consente).<ref name=j-rsyntaxtextareaapidocumentation />
 
Nella barra di stato della finestra principale è presente l'indicatore della quantità di memoria occupata dall'applicazione nell'area di memoria [[Allocazione dinamica della memoria|heap]].
 
== Linguaggi supportati ==
Supporta diversi [[linguaggi di programmazione]] e [[Linguaggio di marcatura|di marcatura]]<ref name=j-rsyntaxtextareaapidocumentation />.
 
Al momento sono:
 
{{Div col|cols=3|small=no}}
* [[Assembly]]
* [[C (linguaggio)|C]]
* [[C++]]
* [[CSS]]
* [[C Sharp|C#]]
* [[Clojure]]
* [[D (linguaggio)|D]]
* [[DART (linguaggio)|Dart]]
* [[Groovy]]
* [[HTML]]
* [[Java (linguaggio di programmazione)|Java]]
* [[JavaScript]]
* [[JavaServer Pages|JSP]]
* [[Visual Basic]]
* File .jshintrc
* [[JavaScript Object Notation|JSON]]
* [[Lisp]]
* [[Nullsoft Scriptable Install System|NSIS]]
* [[Perl]]
* [[PHP]]
* [[Python]]
* [[Ruby (linguaggio di programmazione)|Ruby]]
* [[Scala (linguaggio di programmazione)|Scala]]
* [[SQL]]
* [[Shell script|Script della shell UNIX]]
* [[File batch|Windows batch]]
* [[XML|File XML]]
* [[ActionScript]]
* [[BBCode]]
* [[Embarcadero Delphi|Delphi]]
* [[Document Type Definition|Dtd]]
* [[Fortran]]
* [[.htaccess|Htaccess]]
* [[LaTeX]]
* Less
* [[Lua]]
* Makefile
* [[MXML]]
* File di properties
* [[SAS (linguaggio di programmazione)|SAS]]
* [[Tcl]]
 
{{Div col end}}
 
== Aspetti tecnici ==
Il progetto è basato su un componente, l'area testuale RSyntaxTextArea, anch'esso open source e scritto in [[Java (linguaggio di programmazione)|Java]], e non ricorre in alcun caso all'invocazione delle [[Application programming interface|API]] [[Win32]], quindi non impiega [[Microsoft Foundation Classes]] (MFC) o librerie simili, il che assicura la portabilità del programma in ambito multipiattaforma, in quanto nativo [[Java (linguaggio di programmazione)|Java]]. È distribuito rispettando le specifiche di una versione modificata del protocollo [[BSD License]].
 
===Dettagli di RSyntaxTextArea===
Dato che RSyntaxTextArea supporta internamente la ricerca di testo con espressioni regolari su più righe, RText permette tale modalità di ricerca. <ttkbd>RSyntaxTextArea</ttkbd> è un'estensione della più diffusa <ttkbd>JTextArea</ttkbd> contenuta nel package [[Swing_Swing (Java)|Swing]] di Java. Tra le caratteristiche aggiunte compaiono:
* Modalità di inserimento / sovrascrittura (viene attivata premendo il tasto Insert).
* Un menù contestuale, a comparsa, con le opzioni di modifica standard.
* Supporto per le [[Macro_Macro (informatica)|macro]].
* Funzionalità "Marca tutto", applicabile durante la ricerca testuale.
* Un modo per modificare lo sfondo didell'area testuale con un'immagine (i formati supportati sono [[Graphics_Interchange_FormatGraphics Interchange Format|gif]] / [[Portable_Network_GraphicsPortable Network Graphics|png]] / [[JPEG|jpg]])
* Evidenziazione della riga correntemente selezionata (può essere disattivata).
* Un modo facile per stampare il suo contenuto testuale (viene estesa l'interfaccia <ttkbd>Printable</ttkbd>, contenuta nel package [[Abstract_Window_ToolkitAbstract Window Toolkit|AWT]] di Java)
* Differenti modalità di aggiunta dei caratteri di tabulazione (soft e hard, rispettivamente emulati o meno dagli spazi)
* Viene corretto un baco tuttora presente nel metodo <code>setTabSize</code> di <ttkbd>JTextArea</ttkbd>.
 
Se lo sfondo di una <ttkbd>RTextArea</ttkbd> (classe estesa da <ttkbd>RSyntaxTextArea</ttkbd>) fosse impostato con un determinato colore, la sua proprietà <code>opaque</code> (opaco) verrebbe impostata a <code>true</code> (vero) per ragioni prestazionali. Viceversa, se lo sfondo fosse impostato con un'immagine, allora la proprietà <code>opaque</code> sarebbe valorizzata con <code>false</code> (falso). Tutto ciò peggiora le prestazioni ma, se così non fosse, l'utente vedrebbe comparire dei difetti grafici sullo schermo, nella zona occupata dall'area testuale, mentre scorre un documento usando i tasti direzionali (lo stesso problema non si verifica premendo i tasti Pagina Su/Giù). Fifesoft ha sconsigliato di modificare il valore della proprietà <code>opaque</code>, giacché viene fatto dalle logiche in essere, quando opportuno.
 
Fifesoft raccomanda di inglobare l'area testuale internamente ad un'istanza di <ttkbd>RTextScrollPane</ttkbd>, anziché nel più noto <ttkbd>JScrollPane</ttkbd> (componente contenuto nel package [[Swing_Swing (Java)|Swing]] di Java), qualora si decidesse di includere <ttkbd>RSyntaxTextArea</ttkbd> in un programma sviluppato autonomamente, dato che questa classe consente l'aggiunta dei numeri della linea e dei segnalibri all'area di testo.
 
===Dettagli sulle macro===
Riga 67 ⟶ 136:
====Esempio di una macro che apre un file====
L'esempio che segue mostra lo script [[JavaScript]] di una macro che apre un file. Il nome del file da aprire viene ricavato sulla base della selezione nel foglio di lavoro attivo dell'editor RText; se disponibile, il file viene aperto in un nuovo foglio di lavoro di RText:
<sourcesyntaxhighlight lang="javascript">
textArea.beginAtomicEdit();
try {
 
var fileName = textArea.selectedText;
if (fileName==null || fileName.length()==0) {
Riga 79 ⟶ 147:
}
else {
 
var isUrl = fileName.startsWith("http://");
 
Riga 105 ⟶ 172:
javax.swing.JOptionPane.ERROR_MESSAGE);
}
 
}
 
} finally {
textArea.endAtomicEdit();
}
</syntaxhighlight>
</source>
 
Lo stesso esempio programmato in linguaggio [[Groovy]]:
<sourcesyntaxhighlight lang="groovy">
import java.awt.*
import javax.swing.*
Riga 121 ⟶ 186:
textArea.beginAtomicEdit()
try {
 
def fileName = textArea.selectedText
if (fileName==null || fileName.length()==0) {
Riga 130 ⟶ 194:
}
else {
 
def isUrl = fileName.startsWith("http://")
 
Riga 156 ⟶ 219:
JOptionPane.ERROR_MESSAGE)
}
 
}
 
} finally {
textArea.endAtomicEdit()
}
</syntaxhighlight>
</source>
 
====Esempio di una macro che converte i caratteri speciali per il linguaggio HTML====
L'esempio che segue mostra lo script [[JavaScript]] di una macro che sostituisce qualsiasi testo selezionato con una versione di quel testo formattato in [[HTML]]:
<sourcesyntaxhighlight lang="javascript">
function replaceMultipleSpaces(text) {
var p = java.util.regex.Pattern.compile(" +");
Riga 181 ⟶ 242:
textArea.beginAtomicEdit();
try {
 
var text = textArea.selectedText;
if (text==null || text.length()==0) {
Riga 192 ⟶ 252:
text = text.replace("&", "&amp;").replace("\"", "&quot;").
replace("<", "&lt;").replace(">", "&gt;").
replace("\t", "&#009;").replace("\n", "<br />\n");
if (text.contains(" ")) { // Replace multiple spaces with &nbsp; sequences
text = replaceMultipleSpaces(text);
Riga 201 ⟶ 261:
textArea.setSelectionEnd(start+text.length());
}
 
} finally {
textArea.endAtomicEdit();
}
</syntaxhighlight>
</source>
 
====Esempio di una macro che ordina alfabeticamente gli elementi di una lista====
== Caratteristiche ==
L'esempio che segue mostra lo script [[JavaScript]] di una macro che ordina tutte le righe nel foglio di lavoro attivo di RText:
RText è un software che segue la filosofia [[FOSS]], supporta l'[[autocompletamento]], la ricerca/sostituzione tramite [[espressioni regolari]], il [[code folding]], i [[segnalibro (informatica)|segnalibri]], l'[[Bracket matching|evidenziazione delle parentesi]] e l'[[indentazione]].<ref name=j-rsyntaxtextareaapidocumentation /> Supporta anche l'aggiunta di [[macro (informatica)|macro]] e [[plugin (informatica)|plugin]]. Di base sono già inclusi alcuni plugin ritenuti essenziali dal fondatore, scritti dallo stesso sviluppatore del progetto (permettono, per esempio, di esplorare il [[File System]]).<br />
<syntaxhighlight lang="javascript">
RText ha un'interfaccia personalizzabile ed è possibile aprire più documenti all'interno della stessa istanza del programma tramite l'uso delle linguette. Presenta stili, ''font'' e colori a tema propri di editor di testo evoluti. Il tradizionale Blocco note incluso in bundle con il sistema operativo [[Microsoft Windows|Windows]], al contrario, non permette di scegliere il colore del font e dello sfondo. Sono presenti alcuni ''temi'' che recuperano la tradizionale modalità sfondo nero/caratteri bianchi o grigi.
var removeDuplicates = true; // Change to "false" if you want to keep duplicates
 
function join(lines) {
Inoltre gli utenti possono definire l'evidenziazione della sintassi e l'autocompletamento per qualunque altro linguaggio, tramite un sistema di definizione basato su [[JFlex|JFlex (The Fast Scanner Generator for Java)]] che rende RText estensibile, se si ha familiarità con il linguaggio di programmazione Java.
var sb = new java.lang.StringBuffer();
if (lines!=null && lines.length>0) {
for (var i=0; i<lines.length; i++) {
//System.out.println(lines[i]);
sb.append(lines[i]).append('\n');
}
}
return sb.toString();
}
 
// Note: You'll want to consider wrapping your scripts inside calls to
Altre caratteristiche sono:
// beginAtomicEdit() and endAtomicEdit(), so the actions they perform can
* [[Code folding]] ed [[evidenziazione del codice]] (anche personalizzata)
// be undone with a single Undo action.
* Auto-completamento
textArea.beginAtomicEdit();
* Visualizzazione a schede (per aprire più documenti)
try {
* Zoom in e zoom out
var lines = textArea.text.split("\n");
* Supporto Windows Cinese, Giapponese e Koreano
* Copia del testo selezionato negli appunti del sistema operativo, sottoforma di [[Rich_Text_Format|RTF]]<ref name=s-rtextreview>{{cita web|titolo=Recensione di RText pubblicata su Softpedia|url=http://www.softpedia.com/get/Office-tools/Text-editors/RText.shtml/|editore=Elena Opris|accesso=31 dicembre 2014|data=31 dicembre 2014 |lingua=en |urlmorto=no |dataarchivio=20 aprile 2015 |urlarchivio=http://www.webcitation.org/6Xvw17xRM}}</ref><ref name=j-rsyntaxtextareaapidocumentation />
* Stampa ed anteprima di stampa<ref name=h-rtextreview>{{cita web|titolo=Recensione di RText pubblicata su HTML.it|url=http://download.html.it/software/rtext//|editore=Redazione di HTML.it|accesso=15 luglio 2008|data=15 luglio 2008 |lingua=it |urlmorto=no |dataarchivio=20 aprile 2015 |urlarchivio=http://www.webcitation.org/6XvwkEDCV}}</ref>
* Esportazione del contenuto dell'area testuale sottoforma di codice HTML, con conseguente conservazione dello stile sintattico impostato.
* Gestore [[Appunti_(informatica)|appunti]] integrato nell'area testuale (attivabile premendo la combinazione di tasti Ctrl+Shift+V).
* Restituzione di frammenti di codice sorgente esemplificativi ([[snippet]]) nei linguaggi usati per programmare le macro.
* Collegamenti ipertestuali cliccabili (se il motore analitico del linguaggio lo consente).<ref name=j-rsyntaxtextareaapidocumentation />
 
if (removeDuplicates) {
Nella barra di stato della finestra principale è presente l'indicatore della quantità di memoria occupata dall'applicazione nell'area di memoria [[Allocazione_dinamica_della_memoria|heap]].
var ts = new java.util.TreeSet();
for (var i=0; i<lines.length; i++) {
ts.add(lines[i]);
}
lines = ts.toArray();
}
 
java.util.Arrays.sort(lines);
== Linguaggi supportati ==
textArea.text = join(lines);
Supporta diversi [[linguaggi di programmazione]] e [[Linguaggio di marcatura|di marcatura]]<ref name=j-rsyntaxtextareaapidocumentation />.
 
} finally {
Al momento sono:
textArea.endAtomicEdit();
}
</syntaxhighlight>
 
Lo stesso esempio programmato in linguaggio [[Groovy]]:
{{Div col|cols=3|small=no}}
<syntaxhighlight lang="groovy">
* [[Assembly]]
final def removeDuplicates = true // Change to "false" if you want to keep duplicates
* [[C (linguaggio)|C]]
* [[C++]]
* [[CSS]]
* [[C Sharp|C#]]
* [[Clojure]]
* [[D_(linguaggio)|D]]
* [[DART_(linguaggio)|Dart]]
* [[Groovy]]
* [[HTML]]
* [[Java (linguaggio)|Java]]
* [[JavaScript]]
* [[JavaServer_Pages|JSP]]
* [[Visual Basic]]
* File .jshintrc
* [[JavaScript_Object_Notation|JSON]]
* [[Lisp]]
* [[Nullsoft_Scriptable_Install_System|NSIS]]
* [[Perl]]
* [[PHP]]
* [[Python]]
* [[Ruby]]
* [[Scala_(linguaggio_di_programmazione)|Scala]]
* [[SQL]]
* [[Shell script|Script della shell UNIX]]
* [[File_batch|Windows batch]]
* [[XML|File XML]]
* [[ActionScript]]
* [[BBCode]]
* [[Embarcadero_Delphi|Delphi]]
* [[Document_Type_Definition|Dtd]]
* [[Fortran]]
* [[.htaccess|Htaccess]]
* [[LaTeX]]
* [[Lua]]
* Makefile
* [[MXML]]
* File di properties
* [[SAS_(linguaggio_di_programmazione)|SAS]]
* [[Tcl]]
 
// Note: You'll want to consider wrapping your scripts inside calls to
{{Div col end}}
// beginAtomicEdit() and endAtomicEdit(), so the actions they perform can
// be undone with a single Undo action.
textArea.beginAtomicEdit()
try {
def lines = textArea.text.split("\n")
 
if (removeDuplicates) {
== Altri progetti ==
def ts = new TreeSet()
{{interprogetto|commons=Category:RText}}
lines.each {
ts.add(it)
}
lines = ts.toArray()
}
 
Arrays.sort(lines)
== Collegamenti esterni ==
textArea.text = lines.join("\n")
* {{en}} [http://fifesoft.com/rtext/ Sito ufficiale]
} finally {
textArea.endAtomicEdit()
}
</syntaxhighlight>
 
== Note ==
{{Note strette}}
 
== Voci correlate ==
Riga 291 ⟶ 342:
* [[Videoscrittura]]
 
== NoteAltri progetti ==
{{interprogetto}}
<references/>
 
== Collegamenti esterni ==
* {{Collegamenti esterni}}
 
{{Portale|informatica|Software libero}}