CI builds and coverage reports for RSyntaxTextArea

February 15th, 2015

In an effort to encourage the writing of unit tests for RSTA, I’ve added CI builds and coverage reports.  You can see the status of these things in the RSTA file.  Yes, the code coverage is terrible – that’s why I’m doing this!  Hopefully a little public shaming will spur some improvement in this area.

The CI is done through Travis-CI, and the actual coverage reports are generated by Jacoco and hosted on, but the yucky details of all this are hidden by Gradle and an awesome gradle plugin.

All of this is currently only set up for the main RSyntaxTextArea project.  If everything works out swimmingly I may enable it for AutoComplete and other projects in the future as well.

SNAPSHOT artifacts are now available

January 2nd, 2015

Happy New Year!

SNAPSHOT artifacts are now available for both RSyntaxTextArea and RText, thanks to Sonatype.  This will provide folks with an easy way to try out new versions of these libraries before they are “officially” available.

To use the SNAPSHOTs, you’ll first have to reference the Sonatype snapshot repository.  This can be done in a Gradle build script like so:

repositories {
   maven { // Snapshot builds of RSTA artifacts
      url ''

Then you can just declare your dependencies as usual.  It did seem like I had to be explicit about my desire for 2.6.0-SNAPSHOT, otherwise Gradle/Maven would still fetch the 2.5.6 release artifact:

dependencies {
   compile 'com.fifesoft.rtext:fife.common:2.6.0-SNAPSHOT', 'com.fifesoft:rsyntaxtextarea:2.6.0-SNAPSHOT'


RSyntaxTextArea 2.5.6 Now Available

December 24th, 2014

RSyntaxTextArea and RSTALanguageSupport have a 2.5.6 release on GitHub and Maven!  These releases fix up some issues found in the recent 2.5.4 releases.  They are compatible with the 2.5.4 releases of AutoComplete, RSTAUI and SpellChecker.  RSyntaxTextArea in particular is worth upgrading if your application runs on OS X, because it brings a big performance improvement with rendering tokens with background colors specified.

Moving forward, I hope to more strictly follow semantic versioning, but I give no promises.  But the goal is to no longer tie myself to synchronous releases of all of the RSTA sister projects at once.  All of 2.5.x, for example, should be obviously compatible with one another, and indeed, 2.x should as well.  We’ll see how that goes moving forward.

RSyntaxTextArea 2.5.4 Now Available

November 26th, 2014

RSyntaxTextArea 2.5.4 (and all of its sister projects) are now available on GitHub, Maven and SourceForge!  The biggest change for all projects is the migration from Ant to Gradle for builds.  The primary motivation for this was to make it easier to create artifacts to put into Maven Central, as well as to tinker with something new.  Thus, this is the first release where everything is available in Maven on day 1!  Moving forward, artifacts in Maven will be a standard part of the RSTA release process.

But besides Maven integration, some other goodies were added too, such as syntax highlighting and code folding for Dart and D, as well as simple code completion for XML files.  Check it out!

Code Completion in XML

October 10th, 2014

I’ve been really, really lazy with adding code completion via DTDs and/or schemas for XML in RSTALanguageSupport, so in the meantime I decoded to add a simpler element/attribute completion scheme.

If you grab the latest from Git, RSTALanguageSupport’s XML support will now offer code completion suggestions for XML element and attribute names:

XML Element Completion

XML Element Completion

How does it decide what to suggest?

For element names, it scans the editor’s contents for any other elements that start with the prefix you’ve typed so far.  For attributes, it scans for other places where you’ve completed an element of the type you’re adding an attribute for; it then suggests any attributes you’ve used for that element elsewhere in the file (and haven’t currently used in the current element):

XML Attribute Completion

XML Attribute Completion

This kind of completion support is pretty handy when you’re editing a larger document, and know you’ve done “the right thing” elsewhere in the file, but cannot recall what it is offhand.  Just let RSTA tell you what to type.  :)


D support added to RSyntaxTextArea

September 13th, 2014

RSyntaxTextArea now supports syntax highlighting and code folding for D.  Nestable comments are handled properly.  The screenshot below shows some of D’s unique syntax features:

D syntax highlighting

D syntax highlighting

Dart Support added to RSyntaxTextArea

September 1st, 2014

Syntax highlighting and code folding has just been added for Dart.  Dart aficionados, clone the RSTA repo and let me know if I’ve missed anything with the highlighting!

Dart Support

Dart Support

RSyntaxTextArea: Paste from Clipboard History

August 29th, 2014

Just committed to Git is a new feature:  Clipboard History.  Pressing Ctrl+Shift+V (Cmd+Shift+V on OS X) will cause the “clipboard history” popup to appear below the current caret position:

Clipboard History

Clipboard History

This popup displays the most recent snippets of text added to the clipboard.  This allows you to paste any text that was *recently* on the clipboard, not just what’s *currently* in the clipboard buffer.  This is pretty useful if you’re a frequent copy-paster.

The clipboard history is implemented as a singleton instance of the org.fife.ui.rtextarea.ClipboardHistory class.  You can access it, but currently the only interesting thing you can do is set its maximum size.  By default, it only remembers the 12 most recent entries on the clipboard that can be interpreted as plain text.

RSyntaxTextArea in a JavaFX app

August 5th, 2014

While I’ll certainly not put much time into learning JavaFX, I did poke around at it a little, and it is a nice API.  It’s better designed than Swing, and easier to write clean code in.  In any case, I decided to see how RSyntaxTextArea worked in a JavaFX app, now that JavaFX 8 “fully” supports embedding Swing components into JavaFX apps.

It was pretty easy to do, and at first glance, worked great:

RSTA in JavaFX

RSTA in JavaFX

However, I hit a big snag:  When I resized the window, (what seemed like) every other repaint resulted in everything *but* the Swing content being unpainted!

RSTA in JavaFX - Flicker

RSTA in JavaFX – Flicker

I say every other repaint, because slowly resizing the window you would see constant flicker, between blackness instead of JavaFX rendering, and the JavaFX goodness you were supposed to see.

I took out the RSyntaxTextArea, this does not happen.  So this does not seem to occur in JavaFX apps with no Swing embedded in them.

I added in a JButton instead of the RSyntaxTextArea.  The flicker did not happen.  So it seems to not be all Swing content that does this.

I replaced the JButton with a JTextArea.  The flicker came back.  Okay, so it’s only *certain* Swing components.

Note that there is flicker with stand-alone JTextAreas/RSyntaxTextAreas; JScrollPanes don’t have to be in the equation to see this issue.

So what’s the deal?  Somehow certain Swing content causes the JavaFX rendering pipeline to bug out.

RText 2.5.3 Released!

July 22nd, 2014

RText 2.5.3 was released on GitHub!  Precompiled binaries for major OSes are on SourceForge, as usual.  Here’s what’s new:

  1. JavaScript macros now work with Java 8+, in addition to Java 6 and 7 (updates to support Nashorn properly).
  2. Improvements to PHP syntax highlighting.
  3. In HTML and XML, “mark occurrences” should match tag names even when the caret is in an attribute, not just when it is in the tag name itself.
  4. Java syntax highlighting updated for Java 8 classes, interfaces, and enums.
  5. SQL: Matching opening/closing parens are now highlighted.
  6. Groovy macros now use Groovy 2.3.3.