| Padre-Plugin-SpellCheck documentation | Contained in the Padre-Plugin-SpellCheck distribution. |
Padre::Plugin::SpellCheck - check spelling in Padre
$ padre file-with-spell-errors
F7
This plugins allows one to checking her text spelling within Padre using
F7 (standard spelling shortcut accross text processors). One can change
the dictionary language used in the preferences window (menu Plugins /
SpellCheck / Preferences).
This plugin is using Text::Aspell underneath, so check this module's
pod for more information.
Of course, you need to have the aspell binary and dictionnary installed.
Padre::Plugin::SpellCheck defines a plugin which follows
Padre::Plugin API. Refer to this module's documentation for more
information.
The following methods are implemented:
Return the plugin's configuration, or a suitable default one if none exist previously.
Spell checks the current selection (or the whole document).
Open the check spelling preferences window.
Spell-checking non-ascii files has bugs: the selection does not
match the word boundaries, and as the spell checks moves further in
the document, offsets are totally irrelevant. This is a bug in
Wx::StyledTextCtrl that has some unicode problems... So
unfortunately, there's nothing that I can do in this plugin to
tackle this bug.
Please report any bugs or feature requests to padre-plugin-spellcheck
at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Padre-Plugin- SpellCheck. I will be notified, and then you'll automatically be
notified of progress on your bug as I make changes.
Plugin icon courtesy of Mark James, at http://www.famfamfam.com/lab/icons/silk/.
Our svn repository is located at http://svn.perlide.org/padre/trunk/Padre-Plugin- SpellCheck, and can be browsed at http://padre.perlide.org/browser/trunk/Padre-Plugin- SpellCheck.
You can also look for information on this module at:
http://rt.cpan.org/NoAuth/Bugs.html?Dist=Padre-Plugin-SpellCheck
Everything aspell related: http://aspell.net.
Jerome Quelin, <jquelin@cpan.org>
Original version from Fayland Lam, <fayland at gmail.com>
Copyright (c) 2009 Fayland Lam, all rights reserved.
Copyright (c) 2009 Jerome Quelin, all rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
| Padre-Plugin-SpellCheck documentation | Contained in the Padre-Plugin-SpellCheck distribution. |
# # This file is part of Padre::Plugin::SpellCheck. # Copyright (c) 2009 Jerome Quelin, all rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # # package Padre::Plugin::SpellCheck; use warnings; use strict; use File::Basename qw{ fileparse }; use File::Spec::Functions qw{ catdir catfile }; use Module::Util qw{ find_installed }; our $VERSION = '1.1.2'; use base 'Padre::Plugin'; use Padre::Current; use Padre::Plugin::SpellCheck::Dialog; use Padre::Plugin::SpellCheck::Engine; use Padre::Plugin::SpellCheck::Preferences; use Padre::Util ('_T'); # -- padre plugin api, refer to Padre::Plugin # plugin name sub plugin_name { _T('Spell check') } # plugin icon sub plugin_icon { # find resource path my $pkgpath = find_installed(__PACKAGE__); my (undef, $dirname, undef) = fileparse($pkgpath); my $iconpath = catfile( _sharedir(), 'icons', 'spellcheck.png'); # create and return icon return Wx::Bitmap->new( $iconpath, Wx::wxBITMAP_TYPE_PNG ); } # directory where to find the translations sub plugin_locale_directory { return catdir( _sharedir(), 'locale' ); } # padre interfaces sub padre_interfaces { 'Padre::Plugin' => '0.26', } # plugin menu. sub menu_plugins_simple { _T('Spell check') => [ _T("Check spelling\tF7") => 'spell_check', _T("Preferences") => 'spell_preferences', ]; } # -- public methods sub config { my ($self) = @_; my $config = { dictionary => 'en_US', }; return $self->config_read || $config; } sub spell_check { my ($self) = @_; my $main = Padre::Current->main; # TODO: maybe grey out the menu option if # no file is opened? unless ($main->current->document) { $main->message( _T( 'No document opened.' ), 'Padre' ); return; } my $engine = Padre::Plugin::SpellCheck::Engine->new($self); # fetch text to check my $selection = Padre::Current->text; my $wholetext = Padre::Current->document->text_get; my $text = $selection || $wholetext; my $offset = $selection ? Padre::Current->editor->GetSelectionStart : 0; # try to find a mistake my ($word, $pos) = $engine->check( $text ); # no mistake means we're done if ( not defined $word ) { $main->message( _T( 'Spell check finished.' ), 'Padre' ); return; } my $dialog = Padre::Plugin::SpellCheck::Dialog->new( text => $text, error => [ $word, $pos ], engine => $engine, offset => $offset, plugin => $self, ); $dialog->ShowModal; } sub spell_preferences { my ($self) = @_; my $prefs = Padre::Plugin::SpellCheck::Preferences->new($self); $prefs->Show; } # -- private methods # # my $dir = $self->_sharedir; # # return the private share directory where the module resources are stored. # sub _sharedir { # find resource path my $pkgpath = find_installed(__PACKAGE__); my (undef, $dirname, undef) = fileparse($pkgpath); return catdir( $dirname, 'SpellCheck', 'share' ); } 1; __END__