NAME
Padre::Document - Padre Document Abstraction Layer
DESCRIPTION
This is an internal module of Padre that provides a logical document abstraction, allowing Padre to associate several Wx elements with the one document.
The objective would be to allow the use of this module without loading Wx.
Currently there are still interdependencies that need to be cleaned.
METHODS
new
my $doc = Padre::Document->new(
filename => $file,
);
$file is optional and if given it will be loaded in the document
mime-type is defined by the guess_mimetype function
TODO describe
$editor is required and is a Padre::Wx::Editor object
load_file
$doc->load_file;
Loads the current file.
Sets the Encoding bit using Encode::Guess and tries to figure out what kind of newlines are in the file. Defaults to utf-8 if could not figure out the encoding.
Currently it autoconverts files with mixed newlines. TODO we should stop autoconverting.
Returns true on success false on failure. Sets $doc->errstr;
reload
Reload the current file discarding changes in the editor.
Returns true on success false on failure. Error message will be in $doc->errstr;
TODO: In the future it should backup the changes in case the user regrets the action.
check_syntax_in_background
NOT IMPLEMENTED IN THE BASE CLASS
Checking the syntax of documents can take a long time. Therefore, this method essentially works the same as check_syntax
, but works its magic in a background task instead. That means it cannot return the syntax-check structure but instead optionally calls a callback you pass in as the on_finish
parameter.
If you don't specify that parameter, the default syntax-check-pane updating code will be run after finishing the check. If you do specify a callback, the first parameter will be the task object. You can run the default updating code by executing the update_gui()
method of the task object.
By default, this method will only check the syntax if the document has changed since the last check. Specify the force => 1
parameter to override this.
check_syntax
NOT IMPLEMENTED IN THE BASE CLASS
See also: check_syntax_in_background
!
By default, this method will only check the syntax if the document has changed since the last check. Specify the force => 1
parameter to override this.
An implementation in a derived class needs to return an arrayref of syntax problems.
Each entry in the array has to be an anonymous hash with the following keys:
line
The line where the problem resides
msg
A short description of the problem
severity
A flag indicating the problem class: Either 'W' (warning) or 'E' (error)
desc
A longer description with more information on the error (currently not used but intended to be)
Returns an empty arrayref if no problems can be found.
Returns undef if nothing has changed since the last invocation.
Must return the problem list even if nothing has changed when a param is present which evaluates to true.
set_indentation_style
Given a hash reference with the keys use_tabs
, tabwidth
, and indentwidth
, set the document's editor's indentation style.
Without an argument, falls back to what get_indentation_style
returns.
guess_indentation_style
Automatically infer the indentation style of the document using Text::FindIndent.
Returns a hash reference containing the keys use_tabs
, tabwidth
, and indentwidth
. It is suitable for passing to set_indendentation_style
.