Here is a macro that inserts the path of the current buffer in the text:
String newText = buffer.getPath(); textArea.setSelectedText(newText);
Unlike in our first macro example, here we are calling class
methods on particular objects. First, we call
getPath() on the current Buffer object to get
the full path of the text file currently being edited. Next, we call
setSelectedText() on the current text display
component, specifying the text to be inserted as a parameter.
In precise terms, the setSelectedText()
method substitutes the contents of the String
parameter for a range of selected text that includes the current caret
position. If no text is selected at the caret position, the effect of
this operation is simply to insert the new text at that position.
Here's a few alternatives to the full file path that you could use to insert various useful things:
// the file name (without full path)
String newText = buffer.getName();
// today's date
import java.text.DateFormat;
String newText = DateFormat.getDateInstance()
.format(new Date());
// a line count for the current buffer
String newText = "This file contains "
+ textArea.getLineCount() + " lines.";Here are brief comments on each:
In the first, the call to getName()
invokes another method of the Buffer
class.
The syntax of the second example chains the results of several methods. You could write it this way:
import java.text.DateFormat; Date d = new Date(); DateFormat df = DateFormat.getDateInstance(); String result = df.format(d);
Taking the pieces in order:
A Java Date object is
created using the new keyword. The
empty parenthesis after Date
signify a call on the constructor
method of Date having
no parameters; here, a Date is
created representing the current date and time.
DateFormat.getDateInstance()
is a static method that creates and returns a
DateFormat object. As the name
implies, DateFormat is a Java
class that takes Date objects and
produces readable text. The method
getDateInstance() returns a
DateFormat object that parses and
formats dates. It will use the default
locale or text format specified
in the user's Java installation.
Finally,
DateFormat.format() is called on
the new DateFormat object using
the Date object as a parameter.
The result is a String containing
the date in the default locale.
Note that the Date class is
contained in the java.util package,
so an explicit import statement is not required.
However, DateFormat is part of
the java.text package, which is not
automatically imported, so an explicit
import statement must be
used.
The third example shows three items of note:
getLineCount() is a method
in jEdit's JEditTextArea
class. It returns an int
representing the number of lines in the current text
buffer. We call it on textArea,
the pre-defined, current JEditTextArea
object.
The use of the + operator
(which can be chained, as here) appends objects and
string literals to return a single, concatenated
String.