Unicon IDE Improvements Page

Automatic Formatting

Add a menu item and/or keyboard shortcut that invokes a Pretty Printer and uses it to reformat a buffer.

Help File Browsing

Currently online documentation tries to launch a web browser; it fails if no browser recognized. We need to not depend on a browser, and instead should display help files directly inside the IDE.
Unicon Language Ref (UTR8)
Define regular expressions.
Local helpfile images
Missing at least in utr12.html, Jafar's Windows Unicon binaries.
Help Integration phase 1
For helpfiles, show a (non-editable)textlist in the IDE tabs alongside the editable textlists; show htm files raw. Start with just one .htm file, the Unicon language reference, utr8.html. Display its raw HTML as a tab in the IDE.
Help Integration phase 2
Develop a class similar to TextList called HTMLView, where instead of a list of strings, the buffer is a tree of objects, where each object just has a string plus a height in pixels. Display and scroll text with variable line spacing.
Help Integration phase 3
Extend HTMLView to allow a list of "line objects", line objects can be either a string plus a lineheight, or an image plus a height. Display and scroll properly.
Help Integration phase 4
Extend HTMLView to support multiple (horizontal) items within a "line object", where each item can can have simple attributes. Support font sizes 1-7, bold (B) and italics (EM) tags. A line object's lineheight is the max of its items' lineheights and the standard line height.
Help Integration phase 5
Extend HTMLView to display properly, using font sizes and spacing, the tags P, BR, H1-H5. Add an HR line object that draws a line and is shorter than the default line height.
Help Integration phase 6
Extend HTMLView to whichever UTR is simplest. Figure out a UTR support ordering. For example, consider utr8.html. It uses the HTML tags P, TITLE, BR, H1, H2, H3, H4, H5, HR, CENTER, A, B, EM, TABLE, TR, TD, CODE, DIV, STRONG. Maybe a few more. It uses the HTML attributes ALIGN="center", border, name="...", style="...". It uses the HTML escaped symbols & < > It is probably neither the simplest, nor the most complex.
Help Integration phase 7
Extend HTMLView to support the rest of the UTRs, one at a time. In addition to improving HTMLView's browsing capability, occasionally simplify the UTRs' use of HTML.
Win8 - fix Unicon help menu items
so they work in stock Windows 8. Maybe Win8 does not launch a browser with whatever command we are using for Win7? Others report help works for them in Win8; maybe they had installed a 3rd party browser like firefox? This will be fixed for free by internalizing Help File Browsing

Everything Else

Run... when there is nothing to run.
Example: a "program" that has a procedure named test(), but no main(). The IDE and compiler should communicate well enough that no message claiming to be running a .exe is ever issued in this case.
UTR 8 html local file at least, has lost its #write function tags; unicon.org/utr/utr8.html#write still works
Rightclicking in the IDE dies with a runtime error
Parentheses match menu item doesn't do anything?
New Project create fails with bad filename e.g. /home/jeffery//grotto.icn.uprj
New Project default Makefile name is insane
New Project dialog thinks its using .icn extension when picking a target filename
fix syntax coloring to know about multi-line strings
tweak syntax coloring so if bg=black, purple and blue are lighter.
move Edit menu next to File menu
keyboard shortcuts (search, cut/copy/paste, make executable, and run...)
Add indicators in the menus and/or in the IDE UTR. Maybe a quickref in the help menu?
The Run... command is supposed to run from inside a pseudo tty running in the MsgBox (an editabletextlist), kind of like udb does, and not need to open a separate console window.
Clicking Run on an unsaved .icn does not save it.
Closing modified .icn does not prompt to save it.
Fix cursor click to land on correct character (2)
the cursor appears ~2 chars left of where clicked on Linux 2/7/17. The cursor appears ~1 chars right of where clicked on Windows 2/4/17.
(Windows) double-report of runtime error message
when saveas, start with current filename
File selector (save as) should not lose filename if chdir
if I typed foo.icn and now click .., don't forget foo.icn
if Run saved and compiled, show compile output in message box.
Debugging session causes widget size & position to go haywire. File Tabs slip up on top of toolbar.
As if some variable stomping had occurred. Identify variable(s) affected. Consider whether packages/namespaces are needed in the IDE.
Add IDE feature to specify which type of application (GUI, console) i.e. which of iconx/wiconx/nticonx to use
Change Windows IDE code to use "wiconx udb.exe"
i.e. avoid popping up a spurious black console window
Double check all calls to getenv() to see if they are case sensitive
because on the latest Jafar Win7 Unicon build, getenv("PATH") fails; getenv("Path") is what works
path search for UNIX script(1) program
and use it if present; generalize from existing Run... for xterm.
Test and Port Debugger Support (for UDB) (1)
unknown robustness; needs testing and performance evaluation.
Fix syntax coloring
Two separate variables: (1) has the IDE disabled all syntax coloring? There is a checkbox for this but it is currently disabled because it should NOT be the default. (2) does the IDE believe the current file to be Unicon source code? The answer should be yes as long as (a) no file name has been specified yet, or (b) the filename ends in .icn.
syntax checker: needs to be preprocessor-aware (1)
do not stop at "procedure" if you are trying to match $endif
parenmatch performance bug (1)
parenthesis matching code must not result in a conspicuous lag. get it down to X milliseconds, X to be negotiated. Consider maintaining array of tokens for each line, and not rescanning.
improve multi-file project make facility (1)
SIMPLICITY, usability/clarity, and portability of project-membership dialog; it was supposed to look like (a slick, updated version of) this:

(From the broader TC 3.0 tutorial page) Test on all platforms, fix "no rule to make target deps" error.
visually indicate project information (1)
In the navigation bar, show the current project. For each file: whether or not it is a member of the current project.
define a Project class, provide an API for things like exename
get rid of class or global variables presently mismanaging the single-file project case in ide.icn

Loosely Prioritized To Do Items

add ability to shortcut with ctrl- and alt- F1-F12
either by checking &control and &meta inside event handler or by modifying GUI classes to do so and fire different events for them.
create shortcut definitions for toolbar buttons
review the modified-since-last-syntax-check flag
no point in syntax checking again unless token sequence has changed. Is this already fixed? Slightly different from regular modified flag: carriage return doesn't change token sequence if performed at a line end.
add a config option to enable/disable syntax checking
since we don't always trust it, and might decide its too slow sometimes.
if an opened file is modified, do "reasonable things" (2)
We seem to do something for this, but do we track on a per-buffer basis, which files are modified? Add a timestamp member variable to buffers.
     statrec := stat(filename)
     statrec.mtime
Store timestamp at time of file open/read. Check if timestamp is changed, and ask before saving in that case.
detect whether save has succeeded (2)
change API for save to fail when save or save-as fails. Use this in compile, complink, and run to skip later steps if earlier step doesn't happen.
detect whether compile has succeeded (2)
change API for compile and complink to fail if underlying compile or link step fails. Use this in complink and run to skip later steps if earlier step doesn't happen.
Scope-coloring for identifiers (2)
Currently identifiers seem to be black. Goal is to reduce surprises when using variable names ("that's a global?"). purple=unknown, green=local/param, blue=class, orange=global etc. Need to think about how this relates to current syntax coloring. Current coloring scheme is a bit inconsistent.
modify control-K definition (2)
kill-to-end-of-line, not delete-line. kill eol itself if no chars after cursor to kill. Adjacent/successive kills should accumulate a larger and larger copied text available for paste.
Unrestricted internal resize widget (2)
Instead of the current fixed View options, just drag a point that determines where navigation, messages, and main files area meet.
Often (always?) Windows reports "ui.exe has stopped working" as if it crashed.
syntax color adjustments (2)
need to be able to modify syntax coloring
IDE logfile need to be capped (2)
Sensible default, like maybe 1000 lines, or user-configurable.
Emacs keybindings (in UI and/or CVE) (2)
The point here is to make non-mouse operation viable. This is a prerequisite for the console-mode (3) item below.
Auto indent support (2)
language-mode-defined interpretation of tab key
Auto-save (2)
every x seconds or y keystrokes, whichever comes first. Generate buffername~ files. A (partial?) implementation of this can be found in CVE...
did we fix the search bug that was introduced by the ptyDispatcher?
as seen during the demo for Dr. Thomas
Config checkbox for DOS vs. UNIX line breaks
Interface builder integration (2)
Currently launches an external ivib process. Needs to be internalized/linked and becomes an alternative view/mode to the textual mode for editing.
Print support (2)
be able to generate hard copy, esp. on Windows; make sure it is configurable enough on Linux
context-sensitive library help (2)
add ability to lookup references for functions and library modules. For example, you want to know the parameters to DrawCircle
Abbreviation, command completion (2)
finish named commands, filenames, etc. Complete methodnames/fieldnames WHEN CLASS CAN BE DETERMINED
Keyboard macro (2)
recorded sequence of keystrokes/editor commands
Split screen (2)
show multiple buffer views at once.
write a program to (crudely) recognize whether a file is a makefile (3)
purpose is to be able to support different menu options for makefiles than e.g. for README
make the class browser tree skip the root level ??
it currently wastes horizontal space on a dummy "Editor" node. Except in project mode, this is the project so it is not a waste.
Operation from console-only mode (3)
E.g. on wormulon. Use curses library to implement subset of GUI classes
Improve scalability to smaller window sizes (3)
One could use smaller fonts for title bar and tab labels automatically, and enforce a minimum messages area size whilst allowing the main text area to shrink further.
Spell checker (3)
What would a programming-language-aware "checker" do? Detect misspelled reserved words, misspelled built-in functions, misspelled operators etc.
Macro language, user-defined functions (3)
yeah, like we are going to embed a Lisp interpreter in our IDE
SVN support (3)
autodetection when others commit file
Subshell (3)
run command line and subprograms comfortably inside IDE
Fix null variable bug (3)
v.index -- null v. Would help if I had written down how to reproduce this.
text highlighting -- make it easier (3)
need to define what this means in order to assign a better priority to it
File SaveAs Dialog opens in wrong directory (3)
Under Win7, launched via path search from MS-DOS prompt in \unicon\uni\util, "Save As" tries to save stuff in \users\Clint\Downloads\. Fix is pending via extension to WinSaveDialog()