Indenter#
- class Indenter(*args, **kwargs)#
Auto-indentation interface.
By default, View
can auto-indent as you type when
auto_indent
is enabled. The indentation simply copies the
previous lines indentation.
This can be changed by implementing GtkSourceIndenter
and setting the
indenter
property.
Implementors of this interface should implement both
is_trigger
and indent
.
is_trigger
is called upon key-press to
determine of the key press should trigger an indentation. The default
implementation of the interface checks to see if the key was
KEY_Return
or KEY_KP_Enter
without %GDK_SHIFT_MASK set.
indent
is called after text has been
inserted into Buffer
when
is_trigger
returned True
. The TextIter
is placed directly after the inserted character or characters.
It may be beneficial to move the insertion mark using
select_range
depending on how the indenter changes
the indentation.
All changes are encapsulated within a single user action so that the user may undo them using standard undo/redo accelerators.
Methods#
- class Indenter
- indent(view: View, iter: TextIter) TextIter #
This function should be implemented to alter the indentation of text within the view.
view
is provided so that the indenter may retrieve settings such as indentation and tab widths.iter
is the location where the indentation was requested. This typically is after having just inserted a newline (n) character but can be other situations such as a manually requested indentation or reformatting.See
is_trigger
for how to trigger indentation on various characters inserted into the buffer.The implementor of this function is expected to keep
iter
valid across calls to the function and should contain the location of the insert mark after calling this function.The default implementation for this virtual function will copy the indentation of the previous line.
- Parameters:
view – a
View
iter – the location of the indentation request
- is_trigger(view: View, location: TextIter, state: ModifierType, keyval: int) bool #
This function is used to determine if a key pressed should cause the indenter to automatically indent.
The default implementation of this virtual method will check to see if
keyval
isKEY_Return
orKEY_KP_Enter
andstate
does not have %GDK_SHIFT_MASK set. This is to allow the user to avoid indentation when Shift+Return is pressed. Other indenters may want to copy this behavior to provide a consistent experience to users.- Parameters:
view – a
View
location – the location where
ch
is to be insertedstate – modifier state for the insertion
keyval – the keyval pressed such as
KEY_Return
Virtual Methods#
- class Indenter
- do_indent(view: View, iter: TextIter) TextIter #
This function should be implemented to alter the indentation of text within the view.
view
is provided so that the indenter may retrieve settings such as indentation and tab widths.iter
is the location where the indentation was requested. This typically is after having just inserted a newline (n) character but can be other situations such as a manually requested indentation or reformatting.See
is_trigger
for how to trigger indentation on various characters inserted into the buffer.The implementor of this function is expected to keep
iter
valid across calls to the function and should contain the location of the insert mark after calling this function.The default implementation for this virtual function will copy the indentation of the previous line.
- Parameters:
view – a
View
iter – the location of the indentation request
- do_is_trigger(view: View, location: TextIter, state: ModifierType, keyval: int) bool #
This function is used to determine if a key pressed should cause the indenter to automatically indent.
The default implementation of this virtual method will check to see if
keyval
isKEY_Return
orKEY_KP_Enter
andstate
does not have %GDK_SHIFT_MASK set. This is to allow the user to avoid indentation when Shift+Return is pressed. Other indenters may want to copy this behavior to provide a consistent experience to users.- Parameters:
view – a
View
location – the location where
ch
is to be insertedstate – modifier state for the insertion
keyval – the keyval pressed such as
KEY_Return