README
Syntax Plugin Specifications:
Included in this document are the specifications of what is needed to write a
a new module to extend the syntax highlighting support in Editra.
0: Before you begin
- Editra uses Scintilla for its text control. Since documentation is not
readily available, its suggested that you grab the Scintilla sources and
see what settings are available for each language.
1: File Specifications
- The plugin file is a python module that provides the editor with the
information that it needs to properly setup the lexer.
2: What the plugin needs to provide
CLASS: SyntaxData a subclass instance of syndata.SyntaxDataBase
METHODS:
- FUNCTION: GetKeywords(self)
DESC: Provides a set of language keywords and their level to set in
the editor.
PARAM: None
RETURN: A list of tuples.
SPECIFICATIONS:
The tuples in the list each contain two items.
-The first item is an integer value specifying the Scintilla
keyword type to set for the Lexer.
-The second is a string of space separated keywords.
EXAMPLE RETURN: [(0, "spam ni"), (1, "monty python")]
- FUNCTION: GetSyntaxSpec(self)
DESC: This function is called to get the mapping of the stc style attributes
to the Editra Style Sheet tags.
PARAM: None
RETURN: List of tuple string pairs, that pair the STC value to the wanted
style tag.
SPECIFICATIONS:
The values in tuples of the return list must be ordered as follows
- (STC_* value, Editra Style Tag)
EXAMPLE RETURN: [('STC_C_DEFAULT', 'default_style'),
('STC_C_COMMENT', 'comment_style')]
- FUNCTION: GetProperties(self)
DESC: This function is called to get any extra lexer properties that the
editor should set for the given language.
PARAM: None
RETURN: List of tuples
SPECIFICATIONS:
The values in the tuples of the return list must be as follows
- ("property", "value")
If there are no needed properties to set the function should
return an empty list.
EXAMPLE RETURN: [("fold", "1"), ("fold.comment", "1")]
- FUNCTION: GetCommentPattern(self)
DESC: Get the patern of comment meta characters to use for commenting
out code in the given language.
PARAM: None
RETURN: Ordered List of strings
SPECIFICATIONS:
The returned list of strings must be in the order that the characters
are to be added to the document. This only applies to languages that
have multi character sequences required for comments.
EXAMPLE RETURN:
- Bash: [ "#" ]
- C: ["/*", "*/]
OPTIONAL EXTENSIONS:
Optional Features that language extensions can provide. These methods can be
added to a syntax module by using the syndata.SyntaxDataBase.RegisterFeature
method.
Currently Supported Features:
- FUNCTION: StyleText(stc, start, end)
DESC: Used for styling the text in a buffer that is using a container
lexer.
PARAM: stc The EditraStyledText control instance to do the styling in
PARAM: start The start position of the styling
PARAM: end The end position to style to
SPECIFICATIONS: Register with the synglob.FEATURE_STYLETEXT id
EXAMPLE:
- FUNCTION: AutoIndenter(stc, current_pos, indent_char)
DESC: Provide context sensitive auto indentation support
PARAM: stc The buffer to do the indentation in
PARAM: current_pos The current position of the caret in the buffer
PARAM: indent_char Prefered character to use for indentation
("\t" or " " * tabwidth)
SPECIFICATIONS: Called when the Return key is hit. Note that the new
line character is not sent to the buffer so it needs
to be handled by this method. This method must also
call AddText to add the new whitespace to the buffer.
Register with the synglob.FEATURE_AUTOINDENT id