Slayer's Editor
---------------
by Theodore Stavrianos

Description:
------------
Slayer's Editor is a file editor that has syntax highlighters for over 30
different programming languages and has also on the fly highlighting for all of
them. In addition in can manage different types of files at the same time. Also
it has built in support for RTF files and has a toolbar with formating opperations
regarding them. The support for RTF files is build arround thr RICHED20.DLL making
the editor able to even add objects to the file. It was originally based uppon
YourPasEdit v1.04 by D C AL CODA but since the start the program now is completelly
different and much more powerfull. This is the result of nearly two months of
studying the original YPE source code and then coding most of the functions again
from the bottom up to improve and make them work better together and also to make
it easier to add new features to the program.

Features:
---------
# Can handle large files limited only by your RAM
# Can have multiple files open at the same time in an easy to use tabbed enviroment
# Syntax highlighting for over 30 different programming languages including:
  Pascal, Basic, C, Java, HTML, Perl and many more

# RTF support and formating
# Office97 style toolbars and menus
# Program extension using it's powerfull script language which is used to add
  html tag toolbars
# Exports files to RTF and HTML(only for programming languages)
# You can email your document to a friend
# Auto Complete based on Delphi's and C++ Builder's dci files and with the option
  to add it to additional languages(Ctrl-J)
# Completion Proposal(Ctrl-Space)

Changes and similarities:
--------
The only thing that is exactly the same as it was in the original program is the
code handling the MRU list. Apart from that the code for creating tabsheets has
all be merged together in one huge function that handles any kind of file. Also
the routines for saving the settings have been removed and replaced with components
that automate the task. Finally the UpdateControl function has been heavily modified
and is used throughout the program.

History:
--------
I do not include code changes here because there are just too many and I am not
really sure what was changed and what not. The list bellow is in chronological
order what I did to the program:

10/01/2001. I removed the RichEdit and use instead the SynEdit. Doing so I stopped
            using mwPas2Rtf and removed the support for rtf files from the program.
12/01/2001. I added a toolbar(Toolbar97) to the main form to make it look neater.
14/01/2001. I used the routines from SynEdit's examples to make the program
            automatically recognise the highlighter that is needed. Doing so I
            added every highlighter from SynEdit.
15/01/2001. The settings are stored in the Registry, using the RegIniFile object.
16/01/2001. I added the Form Placement component from RX Library to store the last
            position of the program.
20/01/2001. I added an Options Dialog for the highlighters to change the colors used.
            All settings are stored in the registry.
01/02/2001. I added a form to choose the type of empty document you want to create.
03/02/2001. Changed a bit the menu update functions so that they update the toolbar
            as well and now the menu is more accurate.
05/02/2001. I added custom find/replace dialogs so that the options in the dialogs
            can be saved easily on the registry.
10/02/2001. I changed a bit all the functions in the program so that now less code
            is used and more code is reused.
01/03/2001. I added basic script support(from the RA Lib example) but I haven't
            added any scripts yet because the support is pretty unsteady.
03/03/2001. I have included to the scripts a somewhat 'weird' method of adding
            buttons to a toolbar for html documents only. The buttons will add
            the tags to the active document but they need a bit fixing, since most
            of the work is still done in the program and not the script and I want
            a more generic method of doing it. Most of the code for the rest of
            the scripts was copied for R&A Notepad.
07/03/2001. The method for now is stablelizing slowly. I rewrote the code to add
            buttons to the HTML toolbar and even though it is still only for HTML
            documents, with little to no code it can be extended to any kind of
            document.
08/03/2001. I modified the AddCommand function and now you can enter a new parameter
            that controls to which toolbar(of the 3 available for now) the button
            is to be added to. Still it is only for html documents.
13/03/2001. Ok after a lot of work RTF support is back. For now the SynEdit will
            be used for every kind of file except for those with extension .rtf
            for which I use RxRichEdit. I tried to work with RichEdit98 but I
            came to the conclusion that RxRichEdit is much better mainly due to
            the integrated search and replace functions it has. Right now I have
            nearly written every function in the program twice, once for SynEdit
            and once for RxRichEdit to avoid conflicts. Also the script language
            does not support either so I am still looking for ways to change their
            properties from the scripts. I also came to the conclusion that I
            really need help with the scripting language and the supported commands.
            Please someone HELP, because the program right now is 2MB in size and
            if I add the RTF format commands to the binary as well it might reach
            2.5MB which I consider as quite bad. I am looking for a way of formating
            the document through the script files.
14/03/2001. I added the formating commands for the RTF documents and the programs
            remains at the same size. Also I went through some of the scripts and
            optimized them a bit. Finally I made the ShowHtmlBar and HideHtmlBar
            script commands global, meaning you include with them the title of
            the toolbar to show or hide(does not work with the main toolbar)
15/03/2001. I made some cosmetic changes to the program removing some components
            and using some different ones(no obvious change). I finally got the
            scripts to work correctly after so long. Now the commands are global
            meaning you don't have to be restricted to three toolbars only and
            you can also and buttons to the main toolbar or the rtf toolbar which
            are the only build in toolbars. I also added a command that created
            new toolbars. Finally I corrected a serious bug, where the UpdateControls
            function was re-called three to five times every time, slowing down
            the program considerably and also crashing quite often(only appeared
            when RTF support was re-introduced).
16/03/2001. I did some small changes to 'AddCommand' making somewhat a bit different.
            I added two more parameters, one that controls the name of the button
            and one that categorizes it, meaning if I want to add a button that
            executes a program I can assign it the correct category. Right now
            only the code for tags is included. Also I tried to add the keyboard
            shortcuts Ctrl-B, Ctrl-I and Ctrl-U to the RTF editor but windows
            has Ctrl-I reserved so I changed them to Alt-B,I,U.
17/03/2001. I am currently working on completelly replacing the MRU code and maybe
            put it into a separate script. I changed the values saved on the
            registry(again) and now I use a FormStorage component to save everything.
            Also I removed AnimatedMenus98 from the program because there were
            conflicts with the scripts that added menu items. The program now looks
            exactly the same and is a tiny bit smaller in size as well. All AM98
            did was have a different popup effect which also slowed the program
            down.
18/03/2001. I completelly rewrote the code handling the creation of Tabs because
            of a bug in Delphi. When the problem appears the newly created/opened
            file appears without an editor. For now it hasn't caused many problems
            because if you open a new empty document when this happens it is
            corrected automatically. I am still working on fixing it.
18/03/2001. Ok the problem is fixed for now(I don't use Delphi's PageControl but
            I now use Page95Control by Ryan J. Mills, which explains the size
            difference). Also I worked around the occasional set focus problem
            with the editor. Also some minor changes to the scripts to handle
            toolbars more effectivelly.
19/03/2001. I worked on replacing the MRU code but after working with some
            alternatives I found there was no point. I did find a good working
            alternative but there were too many modifications included that
            there was no real point in doing so. Also I started working on adding
            support to the program so that you can email the selected document
            to someone. It will be added in the next couple of days.
20/03/2001. I added basic email support to the program but it hasn't been tested
v1.0.4      fully yet. Anyway the option is there, so try it if you want. Also I
            finished the highlighter code which is also active now only for
            programming languages. Only thing is make sure that your highlighter
            does not have a back color other than white because the output looks
            ugly. Also I modified a bit the options dialog to include the options
            for the send mail routines. Also the mail routines include allow the
            program to be a fully functinal mailer(cannot receive but can only
            send). Anyway they were taken from Indy's MailClient and were modified
            for my use.
23/03/2001. Fixed a small bug concerning the scripts(I did not set the Editor
            object correctly in the scripts). It did not show any problems, but
            better safe than sorry. I started implementing as a plugin script
            document reformating for pascal and c++ document as a start. It will
            basically ident the whole document 'correctly'. Right now it still
            has some problems with.
24/03/2001. As much as I try I cannot put the reformater to a script. So I will
            first try to work out the problems with the identation in it and then
            add it to the main program for pascal and c++. Also I modified a bit
            the registry keys(again) and I added the option to change the font
            of the the syntax editor.
27/03/2001. I added Completion Proposal and Auto Complete to the editor, as well
v1.1.0      as some code was provided to add files similar to borland's for other
            languages(the files delphi32.dci and bcb.dci are included). Also I
            modified the way the scripts recognise the file type to reduce some
            of the code. To add your own Auto Complete/Completion Proposal
            files see in menu.ses for details. The shortcut for Auto Complete is
            Ctrl-J and for Completion Proposal it is Ctrl-Space. Also I added a
            new command button to the scripts. To add it to a toolbar just use
            the same syntax as for a TAG except for the changes shown in the comments
            in menu.ses. It is used to add preview to the HTML editor.
29/03/2001. Fixed a couple of small problems with the highlighter detection code
            for the script language.
            
WORKING ON:
The basic program structure is complete. These bellow are things that I might
add(if I find the time to finish them). Most of the code for the following is
complete, I am just trying to remove some bugs and to make it more stable.
1. I am thinking of translating the program to other languages as well, but
   mainly because it is not a real issue(I have the code to do it but not
   the translations) I propably won't add translations right now.
2. I am trying add pdf support to the exporters.
3. The RTF editor supports tables but I don't have a way of creating tables yet.
   They are displayed as they should though.

For the source of the program and for instructions on how to compile it, email
me at: slayer@deadmail.every1.net
