RSyntaxTextArea is a syntax highlighting text component for Java Swing.
It extends JTextComponent so it integrates completely with the standard
javax.swing.text package. It is fast and efficient, and can
be used in any application that needs to edit or view source code.

RSyntaxTextArea was originally part of the
RText programmer's
text editor, but is currently being made into a separate component,
reusable in any Swing application.

Requires Java 5 or greater.

A forum is now available
for questions, comments and feedback. Bug reports should probably
go to the project's
SourceForge
page.

For a simple example of using RSyntaxTextArea in a Java application,
look here.

What's New

Note: Often I forget to update this section. If you're checking
it, it's probably better to just keep an eye on
our blog to stay up to date on RSyntaxTextArea!

12/11/2014:

Version 2.5.6 of RSyntaxTextArea was just released. This release brings improves rendering performance on OS X
in certain instances. Several other features and issues were also added in releases between 2.5.1 and 2.5.6.

11/09/2013:

Version 2.5.1 of RSyntaxTextArea was just released. This release brings improves Clojure syntax
highlighting, fixed an exception in certain scenarios when word wrap and code folding were both enabled,
and adds support for JLayer/JXLayer as RTextScrollPane views.

08/26/2013:

Version 2.5.0 of RSyntaxTextArea was just released. This release brings rendering improvements, adds
syntax highlighting and code folding for .htaccess files, fixes bugs in the Clojure and JavaScript syntax
highlighting, and several other small changes. The minimum required JRE has changed to Java 5 from 1.4
as well.

Version 2.0.7 of RSyntaxTextArea was just released. This release
improves syntax highlighting for web languages (HTML, PHP, JSP, JS), and
includes a number of bug fixes and performance improvements. The sister
project RSTALanguageSupport saw JSDoc code completion added to JavaScript
as well.

01/21/2013:

Version 2.0.6 of RSyntaxTextArea was just released. This release
adds JSON syntax highlighting and code folding, makes code completion
popup windows and trees use Substance renderers when a Substance Look and
Feel is installed, and updates some localizations.

12/21/2012:

Version 2.0.5.1 of RSyntaxTextArea was just released. This release
fixes a keyboard shortcut issue found on non-QWERTY keyboards, so it is
highly recommended to upgrade if you were using 2.0.5 (2.0.4 and earlier
were not affected). The Arabic translation was also updated (thanks
Mawaheb!).

11/21/2012:

Version 2.0.5 of RSyntaxTextArea was just released. This release
adds code folding for HTML, PHP, and JSP, adds syntax highlighting and
code folding for NSIS scripts, and adds code folding for Scala. A few
bugs were also fixed.

09/07/2012:

Version 2.0.4.1 of RSyntaxTextArea was just released. This release
fixes an Asian font rendering issue introduced in 2.0.4, and adds a
couple of keywords that were missing in Groovy syntax highlighting.

09/02/2012:

Version 2.0.4 of RSyntaxTextArea was just released. This release
adds lots and lots of new stuff; see
this blog post for more information.

03/14/2012:

Version 2.0.2 of RSyntaxTextArea was just released. This fixes all bugs
found in 2.0.1 and adds a couple of minor new features.

05/05/2012:

Version 2.0.3 of RSyntaxTextArea was just released. This release
adds syntax highlighting and code folding for LaTeX, syntax highlighting
for DTD files, fixed a bug when using RSTA in NetBeans' visual editor,
and a couple of other bug fixes.

03/14/2012:

Version 2.0.2 of RSyntaxTextArea was just released. This fixes all bugs
found in 2.0.1 and adds a couple of minor new features.

02/19/2012:

Version 2.0.1 of RSyntaxTextArea was just released. This is a maintenance
release, fixing the minor issues found in 2.0.0.

02/13/2012:

Version 2.0.0 of RSyntaxTextArea has been released at
SourceForge!
The major changes in 2.0 include:

The Examples page
has been updated for 1.4.0, and a couple more examples have
been added. I hope to be adding even more content to this page in the next couple
of weeks to address the questions I'm asked most often.

01/16/2009:

Version 1.2.2 of RSyntaxTextArea has been released at
SourceForge.
This is a minor bugfix release that fixes a few issues that were reported
from the field. Check it out!

12/29/2008:

A code completion add-on library has been added to Subversion. While in its
early stages, this library still provides an incredible usability boost for
people writing IDE's or editors for languages with many keywords, constructs,
etc. I hope to have ctags file parsing support integrated into code completion
soon.

12/19/2008:

I wasn't planning on doing another "official" release so quickly, but there have
been some important enhancements in the flexibility department lately, so I
decided to go ahead and get them out there before the holidays in case I get
busy.
Version
1.2 is not available on SourceForge. This release also fixes an input bug
on Macs using a non-English keyboard layout. Thanks to David at
Jalbum for pointing out the issue!

12/14/2008:

RSyntaxDocument is no longer hard-coded with what syntax styles it knows about.
It now uses a TokenMakerFactory. These factories can be installed on
RSyntaxDocuments to change what languages can be syntax highlighted. This helps
facilitate adding custom languages, as well as removing built-in languages that
are not needed.

Since syntax styles are no longer hard-coded into the editor, users can remove
any *TokenMaker classes from rsyntaxtextarea.jar that they do not use in their
application. This makes for a smaller footprint for the library in many use
cases.

12/11/2008:

More changes in SVN to make the editor more configurable. The popup menu is
now modifiable via the createPopupMenu() and sePopupMenu() methods. There is
also a configurePopupMenu() method that is called whever the popup is about to
be displayed, for context-specific modifications, etc. Note that we don't use
the 1.5 context menu API added to JComponent since RSyntaxTextArea also runs on
1.4, but our API is slightly more flexible.

Code templates can be removed at runtime, not just added.

The demo jar is now executable, so double-clicking on it in Windows should launch
a standalone version of the demo (it used to be just an applet, so downloading it
wasn't very useful).

12/8/2008:

Version 1.1 has been
released! You can download it directly from SourceForge. This release includes
all of the changes I've outlined in the past couple of months. I've updated
the javadoc to
reflext this release.

12/6/2008:

Code cleanup.

Preparation for smart indent.

Expect a 1.1 release very soon.

11/25/2008:

Changing the encoding or line separator of a TextEditorPane now marks the editor
as dirty, and listeners are notified.

RSyntaxTextAreaDemo changes the source being displayed to match the language
being displayed (e.g. Perl source is displayed when "Perl" is selected, etc.).

Other minor cleanup.

11/16/2008:

Big changes this time. Don't know how stable SVN is at the moment, but feel free
to try it out.

Added TextEditorPane class. This is basically a wrapper around RSyntaxTextArea that
provides functionality needed in virtually all text editors - loading & saving,
managing dirty state of editor, etc. Properties are fired to allow for hosting applications
to react to these events.

Remote URL's can be loaded & edited in TextEditorPanes, not just local files. This
allows for editing files on another machine via FTP, for example. This functionality is
not well tested and is not yet guaranteed to always work.

Fixed a bug in reading Unicode files if "UTF-16" was the encoding specified to
UnicodeReader ("UTF-16LE" and "UTF-16BE" were always fine).

11/08/2008:

Improved hyperlink support. URL highlighting now follows URL spec and should
now highlight all (?) hyperlinks. C++ also now supports hyperlinks in comments.

11/01/2008:

Added initial hyperlink support in
SVN.
Host applications can add javax.swing.text.HyperlinkListeners to the editor and get
notified when the user clicks on a hyperlink (e.g. Ctrl+Click). This is done on a
per-syntax basis and currently only C and Java support hyperlinks..