Class Nano
- All Implemented Interfaces:
org.jline.reader.Editor
This class provides a text editor with features including:
- File editing with save functionality
- Cut, copy, and paste operations
- Search and replace functionality
- Syntax highlighting
- Undo/redo support
- Line numbering
The implementation supports many of the key bindings and features of the traditional Unix 'nano' editor, adapted for JLine's terminal handling. It implements the JLine Editor interface for integration with other components.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected class
protected static enum
static interface
Interface representing a diagnostic message for code in the editor.protected static enum
protected static class
protected static enum
protected static enum
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final org.jline.keymap.BindingReader
protected Nano.Buffer
protected int
protected final List
<Nano.Buffer> boolean
protected final org.jline.utils.Display
protected final StringBuilder
protected String
protected String
protected boolean
protected org.jline.keymap.KeyMap
<Nano.Operation> protected boolean
protected int
protected String
boolean
org.jline.terminal.Terminal.MouseTracking
protected int
boolean
protected Nano.PatternHistory
boolean
boolean
protected boolean
protected final Path
protected boolean
protected boolean
protected boolean
protected String
protected LinkedHashMap
<String, String> protected final org.jline.terminal.Size
boolean
int
protected final org.jline.terminal.Terminal
protected final int
boolean
protected Nano.WriteMode
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected void
bindKeys()
protected List
<Nano.Diagnostic> Computes the list of diagnostics for the current buffer.protected List
<org.jline.utils.AttributedString> protected LinkedHashMap
<org.jline.utils.AttributedString, List<org.jline.utils.AttributedString>> Initializes the suggestions map.getTitle()
protected void
handle
(org.jline.terminal.Terminal.Signal signal) protected void
insertHelp
(int selected) Inserts the selected suggestion into the text.void
void
void
run()
void
setRestricted
(boolean restricted) static String[]
usage()
-
Field Details
-
terminal
protected final org.jline.terminal.Terminal terminal -
display
protected final org.jline.utils.Display display -
bindingReader
protected final org.jline.keymap.BindingReader bindingReader -
size
protected final org.jline.terminal.Size size -
root
-
vsusp
protected final int vsusp -
keys
-
title
-
printLineNumbers
public boolean printLineNumbers -
wrapping
public boolean wrapping -
smoothScrolling
public boolean smoothScrolling -
mouseSupport
public boolean mouseSupport -
mouseTracking
public org.jline.terminal.Terminal.MouseTracking mouseTracking -
oneMoreLine
public boolean oneMoreLine -
constantCursor
public boolean constantCursor -
quickBlank
public boolean quickBlank -
tabs
public int tabs -
brackets
-
matchBrackets
-
punct
-
quoteStr
-
buffers
-
bufferIndex
protected int bufferIndex -
buffer
-
message
-
errorMessage
-
nbBindings
protected int nbBindings -
shortcuts
-
editMessage
-
editBuffer
-
searchCaseSensitive
protected boolean searchCaseSensitive -
searchRegexp
protected boolean searchRegexp -
searchBackwards
protected boolean searchBackwards -
searchTerm
-
matchedLength
protected int matchedLength -
patternHistory
-
writeMode
-
cutbuffer
-
mark
protected boolean mark -
highlight
protected boolean highlight -
readNewBuffer
protected boolean readNewBuffer
-
-
Constructor Details
-
Nano
-
Nano
-
Nano
-
Nano
public Nano(org.jline.terminal.Terminal terminal, Path root, Options opts, ConfigurationPath configPath)
-
-
Method Details
-
usage
-
setRestricted
public void setRestricted(boolean restricted) - Specified by:
setRestricted
in interfaceorg.jline.reader.Editor
-
open
- Throws:
IOException
-
open
- Specified by:
open
in interfaceorg.jline.reader.Editor
- Throws:
IOException
-
run
- Specified by:
run
in interfaceorg.jline.reader.Editor
- Throws:
IOException
-
getTitle
-
insertHelp
protected void insertHelp(int selected) Inserts the selected suggestion into the text.This method is called when a suggestion is selected and should be inserted into the text. Subclasses should override this method to implement the insertion logic based on the selected suggestion index.
The selected suggestion can be retrieved from the suggestions map using:
new ArrayList<>(suggestions.keySet()).get(selected)
- Parameters:
selected
- the index of the selected suggestion in the suggestions list
-
computeSuggestions
protected LinkedHashMap<org.jline.utils.AttributedString,List<org.jline.utils.AttributedString>> computeSuggestions()Initializes the suggestions map.This method is called when suggestions need to be displayed. Subclasses should override this method to return a map of suggestions to their documentation.
The keys in the map are AttributedString objects representing the available suggestions. The values are lists of AttributedString objects containing the documentation lines for each suggestion.
It is recommended to use a LinkedHashMap to preserve the order of suggestions, as this order will be used when displaying the suggestions to the user.
The default implementation returns an empty map, indicating no suggestions are available.
- Returns:
- a map of suggestions to their documentation, or an empty map if no suggestions are available
-
computeDiagnostic
Computes the list of diagnostics for the current buffer.This method is called when rendering the buffer to determine if there are any diagnostics (errors, warnings, etc.) that should be displayed. Subclasses should override this method to provide diagnostics based on the current buffer content.
Diagnostics are used to highlight issues in the code and display tooltips with error messages or warnings when hovering over the highlighted regions.
- Returns:
- a list of Diagnostic objects, or an empty list if there are no diagnostics
-
handle
protected void handle(org.jline.terminal.Terminal.Signal signal) -
bindKeys
protected void bindKeys()
-