Tiny IDE for Ada/Anything
Ada Perl C
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


TIA (Tiny IDE for Ada) 1.2

Copyright (c) 1999-2007 Ken O. Burtch and Free Software Foundation

Home Page: http://www.pegasoft.ca/tia.html
Designed and Programmed by Ken O. Burtch

This sofware is released under a modified GPL licence.  See COPYING for
more information, and the special exception mentioned in the comments
at the start of some of the source files.

Be nice to add Java ant as a builder


1. Support for Subversion (svn) source control.
2. Support for GCC Java (gcj).
3. Source control setting now saved in the user's options file.
4. CVS no longer selected by default for a new project.
5. Project Parameters now reorganized into two screens.
6. Tooltips added to Project Parameters.
7. Find / Tagged Rec renamed Find / Class.
8. Java support added for Find / Class.
9. Proj / Share Project now saves the project file before sharing.
10. Hilight options and auto item help now in Options dialog.
11. Item help now in Find menu.
12. tiadefs.txt file now contains language information.


1. Support for Cygwin.

TIA 1.0.2 - CHANGES SINCE 1.0.1

1. Support for Perl.


1. Makefile bug fix.
2. Build Errors now wrapped (that is, long lines don't leave window).




1. Slightly enlarged Texttools' open/save dialogs.
2. Directories in open/save dialogs now shown with "/".
3. Texttools cut on edit line bug fixed.
4. Moving with arrows in open dialog skipping quick open 1 fixed.
5. Project name now optional for Make and Cook.
6. Changed "About TIA" to read "Anything" instead of "Ada".
7. Background updates allowed for Java, no effect on Shell/Bush/Perl/ HTML.
8. DOS CR's removed when opening a DOS text file.
9. Uppercase keywords/tags now hilighted for case-insensitive Ada and HTML.
10. CVS Update is only requested on startup every 24 hours (instead of
    every time).
11. A warning is issued for CVS commit conflicts.
12. (TextTools) TextTools allows Show/EditListInfo to start at the bottom of the list.
13. Share Changes comments no longer results in system() errors for unescaped
14. Build status messages now appear properly.
15. "Gnat Errors" now "Build Errors" on Proj/Build.
16. (TextTools) Fixed insert text bug in EditList and SourceEditList
17. (TextTools) Fixed calendar accessory.
18. (TextTools) Improved insert/delete justification code for EditList and
19. (TextTools) Paste on small file fixed.
20. Find Subprogram/Tagged Records now works on first file loaded by project.
21. Memory leaks removed.

TIA 0.7.6 - CHANGES SINCE 0.7.5


1. Perl support.
2. Bash Shell support.
3. HTML support


1. Fixes for TextTools 2.0
2. Platform Signature is now correctly generated for non-Ada machines.
3. "Source File Problems" window now stretches to screen width.
4. Tabs in source files now converted to appropriate spaces on load.
5. For new projects on startup, prompts with open source dialog instead
   of new source dialog (new is a button in the open source dialog).
6. Trailing spaces on lines removed when a file is saved.
7. Find text no longer displayed if outside of a source control's border.
8. Basenames are shown in the quick open menu instead of full paths.

TIA 0.7.4 - CHANGES SINCE 0.7.3


1. Preliminary support for BUSH (PegaSoft Business Shell).
2. Upgraded sources for new version of TextTools.


1. Keyword hilighting for non-Ada files now works properly when a source
   file is loaded when TIA is started up.
2. Support for // comments added.
3. Support for GCC 3.1/GNAT 5.0 Pentium optimizations (untested).
4. Loading a text file will now disable the "File/Check" button on.

TIA 0.7.3 - CHANGES SINCE 0.7.2


1. Support for CVS added.
2. File/Delete deletes a file from the project and from CVS.
3. File/Diff Last Save is a renaming of old File / Diff.
4. File/Diff Last Commit performs a CVS diff.
5. File/Change Log performs a CVS log.
6. Proj/Update/Diff performs a CVS update.
7. Proj/Share Changes performs a CVS commit.
8. Proj/Share Project performs a CVS import.


1. Fixed Texttools bug affected auto spell fixing.
2. File/Stats is now Misc/Stats because the File menu was becoming large.
3. Preliminary work on detailed control of GCC options started.
4. Proj/Stats is now Proj/History to avoid confusion with Misc/Stats and
   CVS status command.
5. Fixed line count for project history.
6. Ada-only menu items disabled for non-Ada source files.
7. Keyword hilighting adjusted on Save As to fit file type.
8. Keyword hilighting fixed on New Source.

TIA - 0.7.2 - CHANGES SINCE 0.7.1


1. Support for GNAT 3.13.
2. Support for JGNAT added.  Select "JGnatmake" as the builder.
   Not all project settings / commands are applicable to JGNAT.
3. Project Stats include keystroke count and build count & time
   in the project menu.
4. Make and Cook options now work.
5. New Project Stats window shows some statistics about your project.
6. Project parameter changes:

  Debug Setting    Rel.   Alpha/Beta  Prerel.  Desc.

  -fstack-check    No     Yes         Yes      Check for stack overflows
  -gnatwu          Yes    Yes         No       Unused/uninitialized checks
  -Winitialized    Yes*   No          No       *when optimizing
  -fomit-frame-ptr Yes    No          No       F.P. used for debug utils
  -funwind-tables  No     No          Yes      For exception tracebacks
  gnatbind -E      No     No          Yes      For exception tracebacks

  Optimize Setting Basic  Size        Speed

  -ffloat-store    Yes    Yes         No       More accurate floats
  -gnatn           Yes    Yes         No       Inter-unit inlining
  -gnatN           No     No          No       Inter-unit inlining (max)

  You can add switches that aren't automatically set using the
  project params window.


1. Background updates with the ALT compiler now work.
2. Fixed bug in procedure that detects the version of Gnat.
3. Non-Gnat errors should no longer crash TIA when you move to the next
   error.  Make and Cook error messages no longer ignored.
4. TIA no longer hangs when saving a new project: the program was closing
   standard input (file 0) in the UnlockProject procedure (even though no
   project was open).
5. More comments in the source code.
6. Make now runs "make release", "make beta" or "make" when the project
   parameters are set to Release, Alpha/Beta or Prerelease respectively.
   Your makefile can change your compiling switches accordingly.
7. Because ACT version requires a PATH variable change, if a project
   uses gnatmake or jgnatmake, TIA checks to see if it can be run using
   the current path.
8. If you are running TIA as root (a bad idea), TIA uses "nice" when
   running gnatmake/jgnatmake to prevent long builds from stealing all
   available CPU time.  (This is because root runs at a higher priority
   than normal users.)



1. Find Subprogram searches for functions and procedures in the
   source file.
2. Find Tagged Records searches for tagged record declarations in
   the source file.  It doesn't find implemented methods.


1. New Source changes the window title to "untitled.adb".
2. C, C++, and Java programs may now be checked with File / Check
   (Find / Next Error will not work with C, C++ or Java).  This
   allows TIA to edit, save and check files in these languages
   when they are a part of your Ada project.  C and C++ are
   checked with the -Wall switch.
3. If the QuietUpdates option is on, TIA will sync the disks
   (with the sync() syscall) on a successful project build.
4. If a second TIA copy opens a project, the second session
   is read-only.
5. For new projects, automatically detects ALT compiler and
   sets the ALT option in the Project Params window.
6. Compiler and O/S information now displayed in About TIA
   dialog box.  Copyright information corrected.



1. Profiling (using gprof) available under the Project menu.
2. 24 Backup / BackupNow implemented.  The backup command is in the
   options window.  If there's no backup command, no backups are
3. TIA help tips now shown at startup at the bottom of the main
4. Prototype ddd-style debugger.
5. File/Stub now works if the body already exists.  Before, if
   the body didn't exist, package spec wasn't stubbed.
6. Replace implemented.
7. File/Diff runs the diff command against the last save of the
   source file.
8. Open Proj menu item saves the current project and opens a new one.


1. Install the Gnat compiler.
2. Install PegaSoft's Texttools packages.
3. Run the "go" script using "go tia".  Go assumes that the texttools
   are installed in ../texttools.  If you installed TextTools somewhere
   else, you'll need to change the script accordingly.

Note: There are changes to the project files and the .tiarc options
files.  This version is supposed to load the old option and project files
and upgrade them.  Since I haven't tested this, if TIA fails to update
the files, you'll need delete .tiarc and start new project files.


TIA, Tiny IDE for Ada, is a console IDE for gnat.  Besides being my own
program, it was written in gnat runs using the GPL texttools packages
described later in this document.  The screen layout is similar to pico's,
with the menu options displayed along the bottom of the screen.  If you
are running on the Linux console, you can choose the menu items with alt
key combinations or using your mouse.

This IDE is designed for rapid Ada development.  To meet this goal, it uses
a number of interesting features:

* ddd-style debugger
* automatic saving - whenever you open a new source file, tia saves your
  old file
* quiet updates - each time a file is saved, tia will attempt to recompile
  the file, to reduce the project rebuilding time.  Tia will only update
  one file at a time to avoid slowing down your machine.
* automatic spelling correction -  When you press return while editing your
  source file, tia automatically corrects common spelling mistakes for a
  number of words or phrases, including procedure, function, package,
  exception, subtype, "end if;", "end loop;" , "end record;".
* error hilighting - you can move between compiler errors with a single
  keypress, and the cursor is automatically positioned at the exact location
  of the error and the message displayed at the bottom of the window.
* quick open - you can open recently opened files with a single keypress
* tight integration with gnat - for example, you can load a package spec
  and create a body using gnatstub by simply selecting Stub in the File
* support for keyboard macros



Type "tia" to start TIA.  TIA will inform you that it is starting a new
project.  (To work on an existing project, type "tia" followed by the
project name.)

Before you compile a program, you have to set up the project parameters
under the Proj menu.  For simple, single file programs, put the name of
the program in the "Main" line and select your CPU type.  TIA will save
this information when you quit in a ".adp" (Ada Project) file.  If you
are using the ALT version of GNAT, turn on the ALT box as well.

TIA creates an empty package spec file when a new project is started.
You can delete this and type in your first program.

Check the source file with Check.  If there are errors, use Next Err
(or alt-x, NOT cut--ctrl-x) to move to the place where an error occurred
and the error message will appear on the bottom of the screen.  Repeatedly
use Next Err to fix all errors.  Note that as you edit the program, such
as adding or deleting lines, Err may not take you to the exact line
because the lines have shifted up or down.

Build your project with Build and if the project is successfully built,
TIA will ask you if you want to run your program.


The text editing command work on entire lines at a time.  Cut (or ctrl-x)
cuts one line of text.  Copy (or ctrl-b) copies one line of text.  Paste
(ctrl-v) pastes the last line of text you copied or cut.

You can mark any line with Mark in the Edit menu (or ctrl-6 or by double
clicking a line).  The line will be hilighted.  When a line is marked,
cut (and copy) will cut (or copy) the block of text between the current
line and the line you marked.  For example, to cut a for loop, mark the
"for" line, move the cursor to the "end loop" line, and cut.  To paste
the lines you cut, move to the new location and paste.

Unlike some programs, the cut/copy/paste clipboard is maintained when
new files are opened, allowing you to move text between files.

You can move to the marked line by using Goto in the Edit menu.  To clear
the marked line, use Clear Mark in the Edit menu (or mark it again).

Append in the Edit Menu (or alt-a) can be used to add comments to the end
of a line.

There is no Undo in TIA.  However, you can load the last saved version of
your source code using Revert in the File menu.

TIA automatically saves your source code every time you load new source
file: the version you Revert to may more recent than the one you last
saved.  To see the changes you made since the last save, use Diff in the
File menu.

As you type in each new line of your Ada program, TIA will check for
common spelling mistakes and correct them for you.  For example, if
you type "end loop" and forget the semi-colon, TIA will automatically
add the semi-colon for you when you press the Return/Enter key.  Or if
you type "end lopo;", TIA will transpose the "p" and "o".


The Options window in the Misc menu are settings shared by all projects.

If background updates is on, TIA will attempt to compile your source file
every time you save it.  Unless you're in a multiuser environment or you
are using a slow computer, you'll want to leave this on.  This reduces
project building time.

If you don't like the blue background, you can use a black background
instead by turning Blue Background off.

The Backup line is a command to backup your project.  TIA will automatically
run this command every 24 hours to backup your project files.  A good choice
for a backup command might be:

  zip -9r backup *.ads *.adb *.adp *.txt

Close the Options window and open the Project Params window in the Proj

The compiling and linking lines specify additional switches when compiling
and linking.

For example, a large project may have files in several different
directories.  Use GNAT's -I switch to indicate the additional directories.

You can also use the compiling line for the GCC -fomit-frame-pointer
switch.  Normally, TIA does not activate this switch. It gives some
performance improvements but can cause unexpected side-effects with
certain programs.  If you want to try this switch, add it to the compiling

If you are working on a GUI application, type in the name of your GUI
builder program in the GUI builder line.  By default, this is "rapid".
At any time, you can open your GUI builder in a separate window by
selecting GUI builder in the Misc menu.  (Of course, this doesn't have
to be a GUI builder--you can run any development tool by substituting
its name in the Project Param's GUI builder line.)

When you are working with several source files, TIA keeps a list of the
most recently edited files in a "Quick Open" list.  When you open the
Open window, the five most recently opened files appear in the bottom
of the window.  To open one of these files, type alt-n where "n" is the
number of the file to open.  TIA will open that file and move the cursor
to its saved position.

In large displays such as a wide xterm window, the "Quick Open" list
will also appear to the right of your source code.  You can open any
of these files by simply clicking on them with your mouse (or using alt
and the number).

If you are typing the same text over and over, TIA supports keyboard
macros.  These are described below in the Edit Macros section.


Control Keys

Control-6	Mark/Unmark Line
Control-A	Execute macro (follow with the key for the macro)
Control-B	Copy (single line or to the mark)
Control-E	End
Control-L	Redraw screen
Control-N	Page Down
Control-P	Page Up
Control-T	Backtab
Control-V	Paste
Control-X	Cut (single line or to the mark)
Control-Y	Home

Navigating The TIA Screen

End		End of Document
Home		Top of Document
Page Up		Up One Page
PageDown	Down One Page
Esc/F1		Accessories Menu
Tab		Next Item On Screen
Backtab		Previous Item On Screen (note: Linux console doesn't support
                the backtab key)

Alt-Char	Jump to the item with hot key Char (Linux Console or Xterm)

Scroll Bars Keys

Down Arrow	10% Forward in Document
End		Bottom of Document
Home		Top of Document
Left Arrow	Back one line
Right Arrow	Forward one line
Up Arrow	10% Back in Document

In TIA, the width of the text is limited to size of the edit area.  Any
lines that are longer that the edit area are denoted with an ellipsis at
the end.  The edit area does not scroll left or right as it does in pico.


The File Menu

New Source

Clears the source window.  Same as New in Open Source--see below.

Open Source

Open a new source code window, or an existing one.   Type in the name of
the source file and choose open to open it.  (.adb is assumed if you don't
specify an ending.)  Choose browse to walk through the directories using a
open dialog box.  Or you can chose one of the recently opened files that
appear at the bottom.  On the Linux console, use alt-# to open these files.
Chose new and TIA will create an empty package body for you to fill in--
just delete what you don't want.

Save (alt-s)

Saves the file.  TIA automatically saves whenever you check or build.

Save As (alt-!)

Save As.  Save the file under a different name.  If you are using CVS,
new files are added to the CVS repository.

Revert (alt-*)

Reloads the current file, discarding any changes that haven't been saved
by you or TIA.  (TIA automatically saves a file when a new one is loaded.)


Pipes the file, with a header, to the lpr command, printing it on the
default line printer.


Delete a file.  If you are using CVS, the file is deleted from the
CVS repository.

Diff Last Save

Displays a list of all changes since you last saved the source file
using the shell diff command.

Diff Shared

Displays a list of all differences between the source file and the
shared version in the CVS repository.


Creates an empty package body for the current file.  The current file must
be a package spec.

Check (alt-k)

Checks the current file for syntax errors.


Displays a crossreference of all identifiers in the current file.


Stops the program.  You may be prompted to save any changes to your source
file.  If the project is new, you can save the project and share it with
the CVS repository.

The Edit Menu

Cut (ctrl-x)

Deletes the selected text and puts it in the clipboard.  Same as ctrl-x.

Copy (ctrl-b)

Copies the selected text to the clipboard without deleting it.  Same as ctrl-b.

Paste (ctrl-v)

Inserts the text on the clipboard.  Same as ctrl-v.

Append (alt-a)

Moves the cursor to the right end of the current line.  This is useful for
adding comments at the ends of lines.

The Find Menu

Find/Replace (alt-y)

Find brings up the find dialog to search for text.  Fill in the top line
and select find to find the next occurrence of the text in your document.
Select backwards to search towards the top of the document instead of
towards the bottom.  Select RegExp to find using a regular expression
(you can't replace with RegExp).  Fill in the replace line and select
replace to replace the text you are searching for with new text.  Select
cancel to erase the find text.

Next finds the next occurrence of the text in the source code.

If the text is not found, TIA beeps.

Next (alt-n)

Repeats the last find/replace

Find Subprogram

Shows a list of all subprograms.  Click on the one you want to goto,
and pick "Goto" at the bottom of the screen.

Find Tagged Rec

Shows a list of all tagged record declarations.  Click on the one you
want to go to and pick "Goto" at the bottom of the screen.

Next Err (alt-x)

Moves the cursor to the location of the next error and displays the error
message at the bottom of the screen.

Goto (alt-g)

Moves the cursor to a specific line.

The Misc Menu

Edit Macros

Brings up the macro edit screen.  Macros are keyboard short cuts you
define.  Each macro must fit on a line.  The first character on the
line is the trigger, and the remaining characters are the keyboard keys
the trigger represents.  For example, a line "pprocedure" defines a
macro "p" that represents the keystrokes "p","r","o","c","e","d","u","r"
and "e".

To use a macro in TIA, press control-A and then the letter of the macro.


Opens the options window.  Options affect all projects for the current

The first option is to allow background updates.
Turn this option off on slow machines.

The second option sets the background colour to blue or black on
colour displays.

The Backup option contains the name of the shell backup command you want
to use to backup your files.  TIA will attempt to backup your project every
24 hours using this command.  If you don't give a command, no backups
take place.

A possible choice to backup your source files might be

  zip -9r backup *.ads *.adb *.adp *.txt

For more complex backups, you can create a shell script and put the name
of the shell script here.

The options are saved in a file in your home directory called ".tiarc".


This item runs TIA's ddd-style mini-debugger, running gdb in a TIA
window.  The buttons at the top of the screen are ddd commands.
The Do button runs a gdb command that you type in.  Select quit to
stop gdb and return.

One of the missing features is that there is no way to send information
to standard input to the program that you are debugging.  In other words,
TIA will lock up if your program is expecting the user to type something.


This item suspends TIA and runs the gdb debugger.

GUI Builder

This item runs the GUI builder named in the Project Params screen.
The default GUI builder is RAPID.

Stats (alt-t)

Display information about the current file and memory usage.

The Project Menu

Open Project

Saves the current project file and opens another project file.

Project Params

The project parameters window.  Choose the debugging level, CPU type and
optimization level and TIA will pass the information to gnat accordingly.
You can specify additional gnatmake options (like -n for no main program
in Ada when you want to call Ada subprograms from another language),
linking options (such as Linux libraries you need to link to), and the
name of the main program.  Static binding turns static binding on and off.

CPU Options: 386, 486, Pentium series, Other (non-Intel)

Optimize Options: None (no gcc -O flag), Basic (gcc -O1), Smaller (gcc -O2)
  Faster  (gcc -O3 and -ffast-math)

Debugging Options:
	Prerelease: debugger support (gcc -g), assert/debug pragma's on,
           basic and elaboration checks on
	Alpha/Beta: assert/debug pragma's on, basic checks on, no
           elaboration checks
	Release: assert/debug pragma's off, all non-essential checks off

Project Type:
	Program: compile and link project as an executable program
	Package: compile, but don't link project since there's no main program
	Static Library: (unfinished) compile and generate a static
           library file named lib<project>.a
	Shared Library: (unfinished) compile and link a shared library file
           named lib<project>.so.a

		Specify the name of the program to build the project with,
                   usually gnatmake.
		Gnatmake: gnat's project builder
		Make: Linux's standard project builder
		Cook: an enhanced project builder based on make.

	Static Linking: select this to link in all the libraries used into
           a self-contained executable

	Egcs: select this to execute "egcs" instead of "gcc" [untested]

	ALT: select this to compile on a system using the ALT version
          of gnat

Build (alt-b)

TIA attempts to build the project and create a working executable file.


Using gprof, TIA rebuilds your project and runs it.  When the run is
complete, TIA displays gprof's analysis of your program.  Use this to
determine which parts of your program are being executed the most.

Show project statistics, including the time of the last build and the
number of builds.

Backup Now

TIA automatically runs the backup command in the options window every
24 hours.  To run the backup command immediately, choose "Backup Now".

Update / Diff

Merge the shared project in the CVS repository with your copy of the
project.  Show any conflicts.

Share Changes

Create a new version of the project to be shared in the CVS repository.

Share Project

Share a new project in the CVS repository.  You will have to stop TIA
and check out the project before it can be used.

The ? Menu

This is the About window.  It shows information about the current version
of TIA, including the version and copyright notice.