The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
TODO list for Perl module Text::Editor::Vip
===========================================

replace all die with carp/onfess

add tests for GetLineTextWithNewline

action to create sub stub and test stub

ERROR RunSubOnSelection
	this worked!
	$buffer->SetSelectionBoundaries(-10, 0, 1, 0) ;
	$buffer->CopySelectionToClipboard('string') ;
	
	same with boudary over text limit
	
	=> blank lines are returned
	

RunSubOnSelection: avoid unecessary modification if the text is the same

add sub: $buffer->GetSelectedText([$selection_line_index])

LoadAndExpandWith shouldn' load a module more than once


ERROR! extend selection seems to select from the begining of the buffer

ERROR! modification position change doesn't remove the selection

ERROR! SelectWord with string "\npackage main ;", when modificatino pos is on the first work selects next word

#keep a time stamp on when the buffer was modified

keep a time stamp on when a line was modified

CopySelectionToClipboard

set the buffer name and information

all Display:: functions should take a tab and be generic

test document GetTabifiedText

possibility for a buffer user to set data in the buffer, perl line

FileInsert should, optionaly, mark the buffer as unedited
	=> or should it be FileReadNew ?

a treedumper filter generator

do/undo flushing functions

#* add Replace where replacement regex is a user sub

* shouldn't replaceOccurence leave the modification position unchanged?

* should we consider perl replacement warnings as errors?

#* why aren't we using the same "namespace"?
	$buffer->{'Text::Editor::Vip::Buffer::Plugins::FindReplace::SEARCH_REPLACE_REGEX'} = $search_regex ;
	$buffer->{REPLACEMENT_REGEX} = $replacement_regex ;

#* die when expanding fails
	=> ExpandWith("UnexistingFunction") ;
	=> ExpandWith("UnexistingFunction", undef or not ref to code) ;
	
#* Log somewhere what is added and overriden in the object
	=> within the object

#* Generate documentation a la cpan
	pod2projdocs

* make Undo/Redo more memory effective

* what do we do with the redo stack when adding something to the do stack?
	=> erase? keep in synch with the previous do?

* View base class and its pluggins
	keyboard handlers

* Application and setup
	Adding tools to application

* lexers
	is an editor component not a buffer component
	multiple lexers can act on the same buffer, ie perl and html in the same buffer

* folding
	is a view component
	

* find the align equal sign written in Simrishamn

#* Get The copy and comment script from work.

* Ex and other emulators
	http://www.sandia.gov/ASCI/Red/usage/paragon/man/man1/ex.1.html
	http://resin.csoft.net/cgi-bin/man.cgi?section=1&topic=ex
	
#* document plugins

* Should we have a mecanism to always save the buffer in case of an exception?
	
* Backspace with argument > 1 not handled efficiently (at all!)

* use Log4Perl to log stuff
	=> use diag or print	

* I haven't decided yet how to handle erroneous arguments. Croak, Call a user 
	defined function, ignore and log, return error codes !!!
	=> log the call stack when dying

* oops, what about override mode?

#* Test setting attributed into lines

#* Add a Set command, in a plugin, that handles the undo stack properly

#* Should SetSelection handle the do/undo stack?

#* Shouldn't we "inherit" in the opposit order? 

#* Find doesn't set selection anymore, add example somewhere
	#~ $buffer->SetModificationPosition($match_line, $match_position + length($match_word)) ;
	#~ $buffer->{SELECTION}->Set($match_line, $match_position,$match_line, $match_position + length($match_word)) ;

# more tests, some are listed as comments
	#test plugins

# Put the different types of indenters in a module
	=> Text::Editor::Vip::Plugins::Indenters

# Change all so script to OO style

#ClearLine doesn't handle modificaton position properly
	=> well it did
	
#GetText() should return an array when called in array context

# should it be possible to handle the selection directly
	Yes
	
# When an error occures, PrintError is called. That sub doesn't exist and must 
	be set by the buffer creator.

# return an object in a unique package

# move tab related functinos in a plugin

# Remove reset sub ?
	=> Keep
	
# Should we undo if Do dies?
	=> No, let view writter decide