$Revision:   1.49  $

README.TXT                 Codewright V3.0c
==========

  This README.TXT file contains important information about Premia
  Corporation's Codewright.  Read this file in its entirety for the
  latest information regarding this release of Codewright.  
  
  See also the file CW_QA.TXT for answers to commonly asked questions.

  If you are updating from a previous version of Codewright, you will
  find reading the file UPDATE.TXT to be useful.

  Check out the Tree Control demo on disk 3!  This is the same control
  developed for our built-in Browser.  It can be part of YOUR
  application, too.

  --------------------------------------------------------------------

  This file has been divided into the following six sections for easy
  reference:

        1.  GETTING HELP
        2.  INSTALLATION
        3.  BRIEF KEYMAP EMULATION
        4.  REBUILDING DLLs
        5.  UNDOCUMENTED API FUNCTIONS
        6.  HISTORY

  Suggestions for enhancements and constructive criticism are always
  welcome.  We will continue to add new features and functionality
  based on customer feedback.

  Be sure to register.  This is our only way to validate your
  purchase and notify you of future releases.  It will also allow you
  to access areas on our BBS not available to unregistered users.

  If you are part of a development team or if there are other
  developers at your company that need Codewright, please call us
  about quantity discounts and multi-user licenses.

1. GETTING HELP
---------------
  If you have any problems, please consult this file, the file
  CW_QA.TXT, 'Codewright User Guide' or 'Codewright API Reference'
  manuals first.  If you still have a question and need assistance,
  help is available from the following sources:

  a. CompuServe Section -- We recently "moved in" at section 9 of the
     WINAPA forum on CompuServe.  Tech support and other Codewright
     users can often give you quick help if you logon and leave a
     message.  There are also useful files available for download
     there.

  b. FAX - (503)641-6001

  c. BBS - (503)646-1374.  You are welcome to leave messages report
     bugs or make suggestions here.  File area 3 contains Codewright
     specific add-ons, patches and applications.

  d. Write to us at the following address:

     Premia Corporation
     1075 NW Murray Boulevard, Suite 268
     Portland, Oregon 97229

  e. If you urgently require information to continue using
     Codewright, or if you have an urgent bug report, give us
     a call at (503)641-6000.


2. INSTALLATION
---------------

  You must use the INSTALL.EXE program on 'Disk 1: Install and 
  Executables' to install Codewright.  Most of the files on the
  distribution disks are compressed and need to be properly
  decompressed.

  To start the installation, execute the INSTALL.EXE program on
  Disk 1 from within Windows.  You will be prompted via a dialog
  box for additional disks.  If you don't intend to modify Codewright
  you may choose not to install the DLL C source code.  This will
  save both time and disk space.  The source code may be installed
  later if you need it.


  Expanding Compressed Files:

     If for any reason you find you need to reinstall a particular
     file, the program EXPAND.EXE is provided for this.  It is located
     on Disk 1.  Type 

            EXPAND -r <filename>.<ext>_ <destination-directory>

     For example, the filenames to expand for TEST.C, TEST.RC, and 
     TEST.ASM would be TEST.C_, TEST.RC_, and TEST.AS_, respectively.
     Only files with an '_' appended to the extension are compressed
     files.


3. BRIEF KEYMAP EMULATION
-------------------------

  For Brief aficionados, we include a Brief keymap emulation.
  Although Brief's command set violates Windows rules by using ALT
  key combinations for function invocations, we have duplicated this
  behavior in order to impart the real feel of Brief.  You may access
  menu entries by releasing the ALT key before pressing a letter.  For
  example, pressing <Alt-f> displays the current buffer's filename in
  brief, but pressing <Alt> then <f> will display the File menu.

  A few of the Brief key bindings have been left out of or changed.
  Most notable are the following:

    a. <Shift-F7> - pause keystroke recording (not implemented)

    b. <Ctrl-U>   - remains bound to scroll up instead of redo
       (as in Brief 3.1)

    c. <Alt-y>    - bound to redo

  Also, the mouse button bindings are more CUA compliant in
  Codewright than in Brief 3.1.

  * Brief is a registered trademark of Borland International.  


4. REBUILDING DLLs:
---------------------
  
  Each Codewright subdirectory contains the source code for the
  like-named DLL.  For example: .\SAMPLE contains the source code for
  SAMPLE.DLL.  Each subdirectory also contains simple make files for
  compiling and linking all of the code in the directory.

  We have built all DLL's with both Microsoft 'C' and Borland 'C'.
  Either compiler will work, provided you use the right make file.
  For example, if you have added something to the source code for
  SAMPLE.DLL, you use the makefile SAMPLE for Microsoft and
  SAMPLE.MAK for Borland.


5. UNDOCUMENTED API FUNCTIONS
-----------------------------

There are now nearly 800 functions in Codewright's DOCUMENTED API.
In order to avoid hiding useful functions among functions that are
rarely useful, we have decided to document some of them only in
Specialized Application Notes.  The Specialized Application Notes
currently available are listed below:

     Differencing Primitives
	 Spelling Functions
	 Project Functions
	 Menu Configuration Functions

There are also functions that there was not time to document.  These
will be added to the help file in the near future.  The new helpfile
will be available via download from our BBS and CompuServe.  Many of
these are briefly documented below:

Browse
BOOL  Browse( int mode );
Open, close, toggle or query status of Browse window.  Returns status.

BrowseQFilename
LPSTR  BrowseQFilename( void );
Query the name of the browser database currently in use.

BrowseSetFile
BOOL  BrowseSetFile( LPSTR fname );
Set the current browser database.

BufSetTempDir
void WINAPI BufSetTempDir( LPSTR );
Set the directory used for temporary files.

CUASelectionType
void CUASelectionType(int cuaType);
Turn "Typing replaces selection" on or off.

ConfigQExtFilename
LPSTR  ConfigQExtFilename( int mode )
Return the extension-specific configuration filename corresponding to
the specified mode, or if -1 is given, the current mode.

mode can be any of the following:

	CONFIG_EXT_NAME			(Named file)
	CONFIG_EXT_PROJ			(Stored in project file)
	CONFIG_EXT_INI			(Stored in Config file)

ConfigSetExtFilename
BOOL  ConfigSetExtFilename( LPSTR fname )
Sets the name of the Extension-Specific configuration file.

ConfigSetExtMode
int 	ConfigSetExtMode( int mode )
Query or set the mode of Extension-specific file location.

mode can be any of the following:

	CONFIG_EXT_NAME			(Named file)
	CONFIG_EXT_PROJ			(Stored in project file)
	CONFIG_EXT_INI			(Stored in Config file)

DlgBrowseDir
LPSTR DlgBrowseDir( HWND, LPSTR );
Call Browse for a directory dialog.
	HWND  Handle of calling window	(if any)
	LPSTR Caption for the dialog

DlgExtensionConfig
BOOL  DlgExtensionConfig( HWND hWndParent );
Call Extension-specific Settings Dialog
    hWndParent  Handle of calling window (if any)

DlgMenuEdit
BOOL  DlgMenuEdit( HWND hWndParent );
Call menu Editor Dialog
    hWndParent  Handle of calling window (if any)

DlgMultiFileSearch
BOOL  DlgMultiFileSearch(HWND hWnd);
Call Multi-File Search and Replace Dialog
    hWnd  Handle of calling window, if any.

DlgSelectFilename
LPSTR  DlgSelectFilename(HWND, LPSTR, LPSTR, LPCustFilter, int, UINT);
Call general purpose dialog for selecting single file.
	HWND    		Handle of calling window
	LPSTR   		Caption for dialog
	LPSTR   		Default filename
	LPCustFilter    Initial file filter	(e.g., *.c)
	int				Selection mode flags
	UINT			Help ID

ExecQCmndDir
LPSTR  ExecQCmndDir(void)
Return the directory in which the last exec command
was executed.

ExtDelayedColoring
int  ExtDelayedColoring( int on )
Turns on, off or toggles delayed coloring
(On newly loaded files should we color first and then display, 
or display and then color?  Set with this function.)

ExtGetTemplateMacro
LPSTR  ExtGetTemplateMacro( int number, LPSTR ext )
Retrieves the value associated with a numbered % macro
       	   number   the number of the macro desired
		   ext      the extension it is associated with
		            (numbers 0 through 9 are extension specific)

ExtQIndenting
int 	ExtQIndenting( LPSTR ext )
Query extension-specific indenting mode.

ExtSetBufFlags
void ExtSetBufFlags( DWORD bflags, DWORD mask )
Set extension-specific buffer flags

ExtSetStyle
int ExtSetStyle( LPSTR ext, int level )
Set or query extension-specific indentation style
       ext     the affected extension.
	   level   number indicating the desired style

ExtSetWrap
int ExtSetWrap( LPSTR ext, int level )
Set or query extension-specific word wrap
       ext     the affected extension.
	   level   number indicating the desired wrap level

FileSortMode
int FileSortMode(int mode)
Set or query the file list sorting mode.

KeyQStrCount
UINT KeyQStrCount(void)
Return the number of keystrings that may be stored.

LibFunctionExecOrig
DWORD LibFunctionExecOrig( LPSTR );
Execute original function even if replacement function exists.

TagFileBuild
BOOL TagFileBuild( LPSTR fname )
Given the tag filename, generates a compiled tags database 
for the current project

TagQFilename
LPSTR TagQFilename( void )
Returns the name of the standard Tags database.

WinRedrawLines
void WINAPI WinRedrawLines( HWINDOW, long, long );
Given beginning and ending lines, redraws a range of lines.


1. HISTORY
----------
    Version 3.0    - Released 9/14/93

      - IDs within the 'Change Item Attribute' dialog of the Menu Editor
        were not being corrected read resulting in invalid IDs.

      - Once menu information was saved from the Menu Editor,  Project names
        listed under the Project menu were not selectable.

      - UNIX style EOLs were not always interpreted correctly in compressed 
        mode.

      - If a tagfile name was not specified for a new project, an invalid 
        path was created if the PATH environment variable was not set 
        correctly.

      - The Menu Editor function was not bound to the Menu Editor button on 
        the side bar.

      - Due to an incorrect call to SysSetSystemFlags(), it was possible to
        disable chromacoding by resizing the browser window using the 
        splitter bar.

    Version 3.0a   - Released 9/27/93

      - Error source files were occasionally not found

      - Corrections to compressed mode which worked for UNIX EOLs but not
        DOS CR/LF.

      - Pressing the 'Accept' button in the Buffer/Settings/Extensions dialog
        wouldn't update the Word delimiters or buffer tabs for the existing
        buffers.

      - If the File sort mode was set, incorrect command lines were passed
        on to any VCS command line invocation.

    Version 3.0b   - Released 10/11/93

      - Browser was sped up 10x when used with tag files.

      - StrSplitPath() was incorrectly returning an extension when a 
        directory name include a '.'

      - Backups could cause a crash if an invalid backup specification was used.

      - More Buffers and More Windows were disabled if a menu was restored from 
        the .ini file.

      - Keyboard buffer overflow when used with KeyUnGet() caused characters 
        to be lost.

      - Because of the differences between Brief's next word functions and
        CUA's, the Brief keymap now has its own next and delete word functions.
        The delimiters are handle differently for each.

      - When a printer font was specified from the print dialog, immediately 
        entering the 'Print Setup' dialog caused Codewright to lose the selected
	font.

      - The 'Buffer Select' dialog now automatically selects first item in list.

      - The 'Project/Edit' dialog wasn't always recognizing <Enter> to 
        display files with specified filter.

      - Search/File Grep now has a directory browse dialog box now.

      - Nested #ifdef's weren't working with preprocess().

      - The 'tag file has been changed' message suppressed when a new 
        project is loaded

      - Paragraph wrapping wasn't working correctly when in overtype mode.

      - Next error wasn't working when same error parser name listed for 
        multiple parsers and no errors found.  It was also possible to get
	into a situation when after searching through the list once, it was
	unable to find any more errors.

      - The 'Save Settings' button in the Print dialog will now always save
        the settings to the .ini file.

      - The function ExecMakePrompt() was added to invoke a make command
        line but prompting first for the specific line to invoke.

      - vi:
         > Corrected undo which included line motion
         > No search delay during operator search (i.e. d/f)
         > dw and cw search for same word delimiters
         > Template and smarting indenting keymap only in effect 
           when in insert mode
         > Repeat counts weren't always working for '.' after
           commands such as cw and dw if motion was performed between commands.

	  
    Version 3.0c   - Released 11/8/93
