Page 1 of 5

Adventure - General-Purpose IDE, Lightweight Text Editor

Posted: 27 Apr 2021, 22:51
by Alguimist
Adventure is a lightweight and flexible, general-purpose IDE (Integrated Development Environment) and advanced text editor. Formerly known as AutoGUI, a GUI designer for AutoHotkey scripts, the project evolved towards the goal of achieving the status of a complete IDE, accomplished once its code editor became feature-rich and with the implementation of a debugger. No longer an editor with features particularly targeted to a specific language, Adventure is right away ready to suit the needs of programmers on a broad range of environments and scenarios, or else it can be adapted for such.
Image
An Outline of Adventure's Main Features
 • Multi-tabbed editor: multiple documents can be opened in a single instance of the program, each one represented by a tab button.
 • Line and text markers: indicators that provide quick navigation and visual aid.
 • Smart highlighting: automatic highlight of text that matches the selection.
 • Search: advanced Find/Replace dialog. Quick "Find Next" mode: select the desired text and press F3.
 • Find in Files: integrated file search tool. Also works separately.
 • Auto-save and backup: automatic file saving on a specific interval. A backup copy is also created on manual saving.
 • File metadata: data such as line and text markers, cursor position, selections and contracted folds, is preserved out of the file.
 • Jump menu: a pop-up menu that provides access to all marked lines. Right-click the 2nd part of the status bar or press Ctrl + AppsKey.
 • Load/Save session: the set of open files (location and metadata), or a subset of it, can be stored for later reopening.
 • Recent files: most recently used files.
 • Favorites: a user-defined menu that provides easy access to frequently used files.
 • File History Manager: management of sessions, favorites, recent files, open files. Metadata settings.
 • Tab bar positioning and style: the tab bar can be positioned on the bottom (default) or on the top.
 • Custom themes: colors and styles can be defined for text, background, selection, margins, etc, and also for specific syntactic elements.
 • Zoom in/out: increase/decrease font size via keyboard or mouse.
 • Multiple selection/typing/paste: allowing the selection of noncontiguous text areas. Multiple insertion points (carets) allow multityping.
 • Rectangular selection: to select a limited portion of text across lines, press and hold Alt + Shift, then move the cursor with the arrow keys.
 • Support for multiple programming languages: style definitions for lexical elements and keywords for highlight and autocompletion.
 • Syntax highlighting: colored/styled indication of the syntactic elements of text so as to enhance readability.
 • Autocompletion: automatic prediction of the remaining characters in keywords.
 • Code tooltips (calltips): pop-up reminder of the signature of a function, method or command.
 • Insertion of parameters: insertion of the function signature by pressing Ctrl + Insert or by clicking on the calltip.
 • Autoclose brackets: automatic insertion of the matching brace.
 • Templates: sample files providing minimal or routinely used lines of code.
 • Custom "Syntax Type" menu: the Syntax menu can be configured to display only the necessary items.
 • Line numbering: an extra margin that displays the numbers associated to the lines.
 • Code folding: logical sections of text (such as functions) can be visually delimited, allowing the collapse or expansion of specific areas.
 • Automatic indentation: when the Enter key is pressed, the indentation level of the previous line is reproduced in the new line.
 • Indentation guides: vertical lines that follow along blocks of code.
 • Show white spaces: a way to visualize white spaces and line ending characters.
 • Hexadecimal/decimal conversion: convert the number representation from hex to decimal and vice versa.
 • Run with Associated Application: directly run files with the press of a key (F9).
 • Command line parameters: command line arguments can be specified for the execution of the current file (tab-based). Additionally, file association info.
 • Explorer context menu: integration with the dynamic shell menu that provides access to specific actions and common verbs.
 • Custom "Tools" menu: a user-defined menu that provides access to useful applications.
 • Facilities for AutoHotkey:
  • Dedicated menu: functionality available exclusively for AutoHotkey.
  • Run without save: AHK code can be quickly tested without choosing a file location.
  • StdErr capture: by intercepting the standard error stream of a failed script execution, the editor is able to jump to the affected line.
  • Debugger: a way to inspect the flow and variables of a script on a step-by-step basis or through breakpoints.
  • Tools: a set of tools particularly useful for the development of AutoHotkey scripts.
  • Help: integration with an up-to-date version of the AHK help file (compiled in the classical style).
  • AHK-WinAPI table: a document that provides a deeper understanding on how AutoHotkey works.
Tools
 • Auto-GUI: Windows form designer for AutoHotkey.
 • MagicBox: powerful message box generator.
 • Expressive: regular expression tool.
 • Constantine: Windows API constants reference.
 • A_Variables: AutoHotkey built-in variables.
 • Scripts Manager: AutoHotkey Scripts Manager.
 • COM Inspector: ActiveX/COM Objects reference.
 • Structor and Verifier: Windows API structure offsets, size of data types and constant values.
 • ErrorView: Win32 error messages reference.
 • Script Directives: AutoHotkey directives generator.
 • XML Syntax Checker: warn about errors in the formatting of XML documents.
Requirements
There is no special requirements to run Adventure. AutoHotkey is recommended (not required) because most of the tools included with Adventure were specifically designed for it. If you prefer to run Adventure from the script, the minimum required version of AHK is 1.1.29 (uses OnError).

Tested on Windows XP, 7 and 10.
Development
Some of the planned features: custom theme dialog, custom hotkeys, dynamic rules for the parsing of stdout/stderr (natively available for AHK only), run without save for other programming languages, installer, context-aware autocompletion, update checker.

The XML files containing the definitions for colors, styles, keywords and properties applied to specific programming languages may be incomplete. For the level of current implementation, go to Syntax > More Lexers.

Comments are welcome! If you need help, feel free to ask! ;)
Latest Version
Image

Re: Adventure - General-Purpose IDE, Lightweight Text Editor

Posted: 27 Apr 2021, 23:35
by Xtra
Nice i will have to check this out. Thanks!

Re: Adventure - General-Purpose IDE, Lightweight Text Editor

Posted: 28 Apr 2021, 00:50
by jNizM
Glad to see you are still working on this project and it continues to grow.

Would also be nice to see you move from SourceForge to GitHub at some point.

Re: Adventure - General-Purpose IDE, Lightweight Text Editor

Posted: 28 Apr 2021, 02:56
by hasantr
I've been waiting for this for a very long time. Thanks for the great ide.

Re: Adventure - General-Purpose IDE, Lightweight Text Editor

Posted: 28 Apr 2021, 10:43
by kczx3
Unfortunately, it seems my employer has blocked sourceforge... :(

Re: Adventure - General-Purpose IDE, Lightweight Text Editor

Posted: 28 Apr 2021, 12:00
by kczx3
I was able to work around that. Are there instructions on creating custom themes?

Other ideas:
  • Make the selection have alpha so that the syntax highlighting is still visible when text is selected.
  • Add the ability to open a workspace.
  • Function/class/variable list of open file.
  • Utilize Multiple Views
  • Add ability to Mark All from the Find dialog rather than just using the keyboard shortcut or Menu item.

Re: Adventure - General-Purpose IDE, Lightweight Text Editor

Posted: 29 Apr 2021, 13:45
by kczx3
Oops! It seems you are setting the Alpha on the selection. The problem is that your code always assigns a ForeColor to the selection style. I'd recommend flexing to not call Sci[n].SetSelFore(1, g_oColors["Selection"].FC) if FC is empty which allows the syntax highlighting to shine through.

Another thing I had added to AutoGUI was to highlight the Indentation Guide in the Brace Matching callback like so:

Code: Select all

; Brace matching
BracePos := CurPos - 1
BraceMatch := Sci[n].BraceMatch(BracePos, 0)
If (BraceMatch == -1) {
    BracePos := CurPos
    BraceMatch := Sci[n].BraceMatch(CurPos, 0)
}
If (BraceMatch != -1) {
    col1 := Sci[n].GetColumn(BraceMatch)
    col2 := Sci[n].GetColumn(BracePos)
    line1 := Sci[n].LineFromPosition(BracePos)
    line2 := Sci[n].LineFromPosition(BraceMatch)
    Sci[n].BraceHighlight(BracePos, BraceMatch)
    
    if (Chr(Sci[n].GetCharAt(BracePos)) ~= "{|}|[|]" && line1 != line2) {
        Sci[n].SetHighlightGuide(Min(col1, col2))
    }
    else {
        Sci[n].SetHighlightGuide(0)
    }
} Else {
    Sci[n].BraceHighlight(-1, -1)
}
Another enhancement would be to add options for the vertical Edge. Here's what I use for example:

Code: Select all

; Draw a vertical line at column 120
Sci[n].SetEdgeMode(1)
Sci[n].SetEdgeColumn(120)
Sci[n].SetEdgeColor(CvtClr(0x3E3D32))

Re: Adventure - General-Purpose IDE, Lightweight Text Editor

Posted: 29 Apr 2021, 13:59
by kczx3
I also prefer the Home key to be mapped to SCI_VCHOMEWRAP so allowing customization of those Cmd keys might be helpful too.

Re: Adventure - General-Purpose IDE, Lightweight Text Editor

Posted: 29 Apr 2021, 14:24
by boiler
It looks like it has a lot of great features. :clap: I’m looking forward to trying it out.

Is it possible to split the display to view more than one tab at once? If so, is it possible to view the same file in multiple panes simultaneously while staying in sync with each other as edits are made? If not, consider this a feature request, although I realize it may not be feasible to implement.

Re: Adventure - General-Purpose IDE, Lightweight Text Editor

Posted: 29 Apr 2021, 15:11
by kczx3
@boiler
That would be possible using the Multiple Views feature I mentioned above that Scintilla is capable of doing.

Re: Adventure - General-Purpose IDE, Lightweight Text Editor

Posted: 29 Apr 2021, 15:54
by boiler
@kczx3 - Yes, I remember you saying it was possible and there may have been some thought expressed by @Alguimist that it would be considered, which is why I was hoping it might have been implemented. Maybe “feasible” wasn’t the best word, but I was trying to say that I understand if it’s too involved to make it onto the to-do list.

Re: Adventure - General-Purpose IDE, Lightweight Text Editor

Posted: 30 Apr 2021, 04:49
by MARCAN
@Alguimist
Hi
Zscaler is giving me a Trojan Horse, when trying to download the file.

Can you please check it out?

Thanks!

Re: Adventure - General-Purpose IDE, Lightweight Text Editor

Posted: 30 Apr 2021, 10:22
by tuzi
I've been waiting for the new version for 2 years.

Thank you Alguimist!!!! :superhappy: :superhappy:

Re: Adventure - General-Purpose IDE, Lightweight Text Editor

Posted: 30 Apr 2021, 16:27
by Alguimist
@Xtra: I hope you like it!

@jNizM, @hasantr and @tuzi: Thank you!
kczx3 wrote:Are there instructions on creating custom themes?
While a theme customization dialog isn't yet available, you have to manually edit Themes.xml. Some clarification is needed on the meanings of the abbreviated tag attributes: fc = foreground color, bc = background color, a = alpha, w = width, dlc = drawing lines color, bbc = folding button background color, mbc = margin background color, b = bold, i = italic, t = type, c = color, oa = outline alpha. For white themes, the "specifics" tag must be set to "Default", whereas themes with dark affinity rely on the incomplete "Monokai", language-specific variant, currently available for AutoHotkey only. Then, go to "View" > "Choose Theme" to apply the changes.
kczx3 wrote:Function/class/variable list of open file.
See this script. It could be adapted to work as a separate tool, indirectly integrated with Adventure. I'm now wondering if it could be suited for other languages as well.
kczx3 wrote:Add ability to Mark All from the Find dialog rather than just using the keyboard shortcut or Menu item.
The "Mark All" functionality can be applied to multiple selections, but the other way around, i.e. "Select All Marked Text" has not been implemented. It takes only one extra step to mark all once the selection has been applied.

In regard to "multiple views" (@Boiler said on another topic: "It's such a valuable feature when working on large scripts"), in what relates to code navigation, consider using line markers (F2) and the jump menu (Ctrl + AppsKey or right-click on the second part of the status bar).

@MARCAN
I couldn't find a way to report as a false-positive. Notice that AV-scans made by means of virustotal.com frequently present some exceptions for AutoHotkey binaries. See if whitelisting the URL in Zscaler solves the problem.

Re: Adventure - General-Purpose IDE, Lightweight Text Editor

Posted: 30 Apr 2021, 17:15
by boiler
Alguimist wrote: In regard to "multiple views" (@Boiler said on another topic: "It's such a valuable feature when working on large scripts"), in what relates to code navigation, consider using line markers (F2) and the jump menu (Ctrl + AppsKey or right-click on the second part of the status bar).
Thanks for the suggestion. That is helpful, although I will still always prefer being able to view and edit in multiple panes. My memory isn't good enough to get the same benefit from jumping back and forth between sections. :D

As an example, if I have a complicated GUI with several variables associated with the controls and I'm working on a subroutine or function that refers to them, I like to visually see the GUI definition as I write code referring to it. I often want to modify both sections together, so having them both editable in real time makes even some of the workarounds, such as copying the text or image of it to another window, not as useful, not to mention not as convenient.

Anyway, that is not meant to detract from anything here. Just trying to keep this on the wish list in case it might possibly be added in the future.

Re: Adventure - General-Purpose IDE, Lightweight Text Editor

Posted: 03 May 2021, 10:08
by kczx3
I know you have the existing Tools functionality but I'm curious if you've considered adding plugins that can directly interact with the editor in a structured way via an API of some kind.

I could make a Tool to do some things but I don't believe Tools are able to auto-start with the editor so would need to be manually started.

Actually... My Tools menu is empty. Are all the included Tools not automatically added here?

Re: Adventure - General-Purpose IDE, Lightweight Text Editor

Posted: 03 May 2021, 12:57
by joedf
Very cool! I made this topic sticky :+1:

Re: Adventure - General-Purpose IDE, Lightweight Text Editor

Posted: 05 May 2021, 12:52
by oldbrother
Sorry, I'm confused with this version. I even couldn't create a simple GUI. :crazy: :crazy: :crazy:

Re: Adventure - General-Purpose IDE, Lightweight Text Editor

Posted: 07 May 2021, 09:32
by autohost
I tried to use Auto-GUI v3.0.0 and got the error "Auto-GUI has not been adapted to High-DPI display scaling."

Do you have any idea when that will be fixed?

I have AutoGui v2.5.7, and can use its File -> New GUI and its seems usable, just the left side controls look a bit cramped...

Re: Adventure - General-Purpose IDE, Lightweight Text Editor

Posted: 08 May 2021, 06:38
by lexikos
The code pane flickers very noticeably when I resize the window. This appears to be easily fixed by adding the WS_CLIPCHILDREN style (option +0x2000000) to the main GUI.


The Find in Files tool refuses to run if A_ScreenDPI != 96. A quick patch to get it working on high DPI is to override AutoHotkey's default DPI awareness via __COMPAT_LAYER:

Code: Select all

FindInFiles() {
    Local compat_layer
    EnvGet compat_layer, __COMPAT_LAYER
    EnvSet __COMPAT_LAYER, %compat_layer% GDIDPIScaling DPIUnaware
    RunEx(A_ScriptDir . "\Tools\Find in Files\Find in Files." . (A_IsCompiled ? "exe" : "ahk") . " /A")
    EnvSet __COMPAT_LAYER, %compat_layer%
}
GDIDPIScaling corresponds to the "System (Enhanced)" DPI compatibility setting, which exists only on Windows 10 version 1703 and later. DPIUnaware is "System". (Unrecognized words in __COMPAT_LAYER have no effect, so there's no need to check OS version.)

If you set __COMPAT_LAYER and leave it, it will affect processes launched by Adventure afterward. You can just clear it after calling Run, but it's more proper to restore it to its previous value in case someone needs to apply a compatibility fix to Adventure itself (and the processes it starts).

I didn't test this with Auto-GUI, but it might work.