MCPcopy Index your code
hub / github.com/bobbylight/RSyntaxTextArea

github.com/bobbylight/RSyntaxTextArea @3.6.3

Chat with this repo
repository ↗ · DeepWiki ↗ · release 3.6.3 ↗ · + Follow
7,182 symbols 28,669 edges 451 files 2,703 documented · 38% 3 cross-repo links
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

RSyntaxTextArea

Java Build Java Build Maven Central codecov

RSyntaxTextArea is a customizable, syntax highlighting text component for Java Swing applications. Out of the box, it supports syntax highlighting for 50+ programming languages, code folding, search and replace, and has add-on libraries for code completion and spell checking. Syntax highlighting for additional languages can be added via tools such as JFlex.

RSyntaxTextArea is available under a BSD 3-Clause license. For more information, visit http://bobbylight.github.io/RSyntaxTextArea/.

Available in the Maven Central repository (com.fifesoft:rsyntaxtextarea:XXX). SNAPSHOT builds of the in-development, unreleased version are hosted on Sonatype.

Please see the wiki for an overview of features and a deep-dive into the code!

Building

RSyntaxTextArea uses Gradle to build. To compile, run all unit tests, and create the jar, run:

./gradlew build --warning-mode all

RSTA 3.0 and newer requires Java 17 to compile, but runs on Java 8. If you need Java 6 compatibility, you'll need to use a 2.6.x version.

Demos

There are several simple demo applications in the RSyntaxTextAreaDemo submodule. To run the "main" one, which shows off syntax highlighting and code folding for several languages as well as several common configuration options, run:

./gradlew RSyntaxTextAreaDemo:run

Example Usage

RSyntaxTextArea is simply a subclass of JTextComponent, so it can be dropped into any Swing application with ease.

import javax.swing.*;
import java.awt.BorderLayout;

import org.fife.ui.rtextarea.*;
import org.fife.ui.rsyntaxtextarea.*;

public class TextEditorDemo extends JFrame {

    public TextEditorDemo() {

        JPanel cp = new JPanel(new BorderLayout());

        RSyntaxTextArea textArea = new RSyntaxTextArea(20, 60);
        textArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_JAVA);
        textArea.setCodeFoldingEnabled(true);
        RTextScrollPane sp = new RTextScrollPane(textArea);
        cp.add(sp);

        setContentPane(cp);
        setTitle("Text Editor Demo");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        pack();
        setLocationRelativeTo(null);

    }

    public static void main(String[] args) {
        // Start all Swing applications on the EDT.
        SwingUtilities.invokeLater(() -> new TextEditorDemo().setVisible(true));
    }

}

Sister Projects

RSyntaxTextArea provides syntax highlighting, code folding, and many other features out-of-the-box, but when building a code editor you often want to go further. Below is a list of small add-on libraries that add more complex functionality:

  • AutoComplete - Adds code completion to RSyntaxTextArea (or any other JTextComponent).
  • RSTALanguageSupport - Code completion for RSTA for the following languages: Java, JavaScript, HTML, PHP, JSP, Perl, C, Unix Shell. Built on both RSTA and AutoComplete.
  • SpellChecker - Adds squiggle-underline spell checking to RSyntaxTextArea.
  • RSTAUI - Common dialogs needed by text editing applications: Find, Replace, Go to Line, File Properties.

Getting Help

Extension points exported contracts — how you extend this code

OccurrenceMarker (Interface)
An OccurrenceMarker is called when the caret stops moving after a short period. If the current {@link Toke [6 implementers]
RSyntaxTextArea/src/main/java/org/fife/ui/rsyntaxtextarea/OccurrenceMarker.java
ErrorStripMarkerToolTipProvider (Interface)
Returns tool tip text for the markers in an ErrorStrip that denote one or more parser notices. @author predi [12 implementers]
RSyntaxTextArea/src/main/java/org/fife/ui/rsyntaxtextarea/ErrorStrip.java
SyntaxConstants (Interface)
Constants that define the different programming languages understood by RSyntaxTextArea . These constants a [6 implementers]
RSyntaxTextArea/src/main/java/org/fife/ui/rsyntaxtextarea/SyntaxConstants.java
FoldParser (Interface)
Locates folds in a document. If you are implementing a language that has sections of source code that can be logically [18 …
RSyntaxTextArea/src/main/java/org/fife/ui/rsyntaxtextarea/folding/FoldParser.java
BackgroundPainterStrategy (Interface)
Interface for classes that paint the background of an RTextAreaBase . The Strategy pattern is used for this [10 implementers]
RSyntaxTextArea/src/main/java/org/fife/ui/rtextarea/BackgroundPainterStrategy.java

Core symbols most depended-on inside this repo

getNextToken
called by 1261
RSyntaxTextArea/src/main/java/org/fife/ui/rsyntaxtextarea/Token.java
is
called by 937
RSyntaxTextArea/src/main/java/org/fife/ui/rsyntaxtextarea/Token.java
getType
called by 754
RSyntaxTextArea/src/main/java/org/fife/ui/rsyntaxtextarea/Token.java
getTokenList
called by 648
RSyntaxTextArea/src/main/java/org/fife/ui/rsyntaxtextarea/TokenMaker.java
put
called by 583
RSyntaxTextArea/src/main/java/org/fife/ui/rsyntaxtextarea/TokenMap.java
charAt
called by 527
RSyntaxTextArea/src/main/java/org/fife/ui/rsyntaxtextarea/Token.java
length
called by 481
RSyntaxTextArea/src/main/java/org/fife/ui/rsyntaxtextarea/Token.java
getText
called by 410
RSyntaxTextArea/src/main/java/org/fife/ui/rsyntaxtextarea/focusabletip/TipWindow.java

Shape

Method 6,560
Class 586
Interface 29
Enum 7

Languages

Java100%

Modules by API surface

RSyntaxTextArea/src/main/java/org/fife/ui/rtextarea/RTextAreaEditorKit.java236 symbols
RSyntaxTextArea/src/main/java/org/fife/ui/rsyntaxtextarea/RSyntaxTextArea.java170 symbols
RSyntaxTextArea/src/test/java/org/fife/ui/rsyntaxtextarea/modes/JSPTokenMakerTest.java166 symbols
RSyntaxTextArea/src/test/java/org/fife/ui/rsyntaxtextarea/modes/PHPTokenMakerTest.java142 symbols
RSyntaxTextArea/src/test/java/org/fife/ui/rsyntaxtextarea/modes/HandlebarsTokenMakerTest.java134 symbols
RSyntaxTextArea/src/main/java/org/fife/ui/rsyntaxtextarea/RSyntaxTextAreaEditorKit.java123 symbols
RSyntaxTextArea/src/test/java/org/fife/ui/rsyntaxtextarea/modes/HTMLTokenMakerTest.java117 symbols
RSyntaxTextArea/src/test/java/org/fife/ui/rsyntaxtextarea/RSyntaxTextAreaTest.java83 symbols
RSyntaxTextArea/src/main/java/org/fife/ui/rtextarea/Gutter.java78 symbols
RSyntaxTextArea/src/main/java/org/fife/ui/rtextarea/RTextArea.java77 symbols
RSyntaxTextArea/src/test/java/org/fife/ui/rsyntaxtextarea/modes/UnixShellTokenMakerTest.java76 symbols
RSyntaxTextArea/src/main/java/org/fife/ui/rtextarea/RTextAreaBase.java71 symbols

For agents

$ claude mcp add RSyntaxTextArea \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact