ChameleonCoder & AHKModule - (AHK) coding IDE (C#)
today I'm going to present you the (megalomaniac :lol:) project I'm working on:
ChameleonCoder (alpha 2)
It is intended to be a developer IDE - not just for AutoHotkey, but for any coding language.
The history:
First, I started this project as AHK.ScriptsMan, an AutoHotkey IDE coded in AutoHotkey (v2). It was pretty advanced, when RaptorOne convinced me to learn C# some weeks ago.
I started to do so by translating AHK.ScriptsMan to C# - then I got this crazy idea:
What about making it language-independant? I thought about it a while, and then I started realizing it.
The principle:
ChameleonCoder itself is a flexible core, providing methods to parse resource file (*.xml), providing the user interface and providing methods to manage these resources in different ways.
Anything specific to coding languages is handled through "language modules", which are i.e. plugins for ChameleonCoder. Each of them can provide language-specific methods for one or several languages.
They can provide syntax highlighting (AvalonEdit control), they can provide compilers and interpreters, they can provide code generators such as MsgBoxCreator, and even more.
So I separated AutoHotkey-specific code from ChameleonCoder and started to code the AutoHotkey language module for ChameleonCoder.
Resources:
ChameleonCoder provides 7 types of resources, each with specific properties:[*:378mj8el]links[*:378mj8el]files[*:378mj8el]code files[*:378mj8el]libraries[*:378mj8el]projects[*:378mj8el]tasks[*:378mj8el]groupsThese resources are represented by XML-files. But a XML file can also contain several resources by means of hierarchy: A resource can be bound to another "parent" resource.
For more information on creating resource files see the github wiki page.
RichContent:
RichContent is a feature to describe what a resource contains. It is especially useful for source code resources, and even more for redistributable libraries.
For example, the RichContent can describe that a library includes a class. It can describe the class methods, the parameters, and even more.
From this, CC will be able to generate standardized documentation, maybe exporting it to HTML, or even allow localizing, and a lot of more things.
Extensibility:
CC can be extended in 4 ways:[*:378mj8el]LanguageModules:
modules providing language support for a coding language
[*:378mj8el]Services:
language-inspecific actions that can be called by a user
[*:378mj8el]custom resource types:
adding or improving functionality to the included resource types. Can be language-specific (e.g. "CPPHeaderFile") or not (e.g. "SettingsFile").
[*:378mj8el]custom RichContent members:
adding or improving support for RichContent. Can be as well language-specific (e.g. "AHKClass") or not ("prototype")________________________________________________________________________________________________________________________________
So as I stated before, I'm also coding on an AutoHotkey Language module:
AHKModule
This module will provide specific syntax highlighting for AutoHotkey, AutoHotkey_L, IronAHK and AutoHotkey v2,
it will also contain the MsgBox creator and maybe even a GuiCreator, as well as a compiler GUI: "Compile_AHK.NET".
So this are the plans I have. Currently, ChameleonCoder is not functional, this why it is called alpha ;-). IT IS NOT READY TO USE!
And this is why I need your help:
As a C# developer, consider contributing either code or even unready concepts. To do so, either use github or contact me by PM.
As one of these design freaks here ;-) : what about a nicer logo? The current (a chameleon) is ugly, I know :oops:.
Anyone else: state what you would like to have integrated, tell me your ideas, your needs, your opinion, ...
For developers and interested users: visit github repositories for
[*:378mj8el]ChameleonCoder[*:378mj8el]AHKModulesome screenshots:(using random testing resources )[*:378mj8el]Welcome page
[*:378mj8el]list of all resource
[*:378mj8el]resource list settings
[*:378mj8el]resource viewplanned features:(that may be included)
[*:378mj8el]I thought of somehow integrating git(-hub) by means of a user interface to upload entire projects... (edit: could also done as a service extension)[*:378mj8el]Another idea would be the AutoHotkey.Net tool that Scite4AHK includes... (if I'm allowed to use it)________________________________________________________
And here is the
full source and bin download
and the
installer download (alpha 2)
Required: Windows XP or higher + .NET v4
________________________________________________________
Hoping for some comments and a bit of interest
maul.esel
Visit me on github
Win7 HP SP1 64bit | AHK_L U 64bit
The main Goal beyond this project is much better Intellisense Support for AHK Scripts to make the live easier.
It might be a good idea if we both work on the same thing
Do you have concrete ideas? This is not even easy to implement/use with IA, as this will require at least .NET 3.5 and also e very new programming Model to work with WPF/xaml Guis. AHKs GUi Commands don't have any hierarchical structures, and xaml is just hierarchical.XAML GUI and a ribbon were suggested by RaptorOne
A ribbon would look great - but here are the disadvantages:[*:51ekaaov]windows only (XAML) - well, ScintillaNet is windows only, too, so no more disadvantage
[*:51ekaaov]XAML code (I'm not familiar with) - well I can get
[*:51ekaaov]no support for systems older than XP (not sure if they would be supported even without Ribbon)
[*:51ekaaov]requires Framework v3.5 SP1 (as you said) - as far as I know the framework is free and included in newer windows versionsSo no big disadvantages, but might take some time.
Yeah, maybe working together is a good idea - although my development behaviour might appear strange to you :lol:
And I really like the modular idea - I'm not sure if I can give it up
Your code looks professional - different from mine
Regards
maul.esel
Visit me on github
Win7 HP SP1 64bit | AHK_L U 64bit
The main Goal beyond this project is much better Intellisense Support for AHK Scripts to make the live easier.
majkinetor's ISense script has always given me trouble. i've got a plugin for Notepad++ that i'm using, but autocomplete slows the editor down a lot. finc's Scite4AHK's intellisense works the best and fastest, but i need a bit more out of an editor, so i stick with np++
If it will be or is currently cross platform can you add a makefile to the git?
Request Video Tutorials Here or View Current Tutorials on YouTube
Any code ⇈ above ⇈ requires AutoHotkey_L to run
My IDE is WPF (xaml) only (it bases on the great SharpDevelop Edit Control), and is targeting similar functionality in intellisense parts as the big vs studio has - as WPF is the only way I see it possible to get an really good intellisense and user feedback.No, I was talking of an XAML Gui for the IDE
There are just projectstudies done from me, a current snapshot looks like this: <!-- m -->http://dl.securityvi... ... rstudy.png<!-- m -->
Using WPF will make it Windows only, however, the Code has a very layered Architecture which will also allow partial reuses for an port. AFAIK Mono will support xaml - no WPF specific stuff but at least xaml.
What do you exactly mean whit this?And I really like the modular idea - I'm not sure if I can give it up
About good Intellisense
To get a real good intellisense you need to build something similar like the Code DOM to compile the language. Actually, I'm writing a own Parser, Tokenizer and CodeDOM Generator, as I can't use the one from IA because I need Multi threading, Cancellation support etc, otherwise it wouldn't have enough performance.
I've done some basic tests to get an idea whats necessary and well it seems possible but a load of work to do anyway.
If I find some time and work on this, I will make a own topic where as you can try the first few things
Although I like the cross-platform idea, it will be difficult. I would need a new edit control with similar facilities, and I couldn't use the ribbon I was thinking of.
@IsNull: By "modular idea" I mean that CC is not AHK only, that AHK-specific will be done using the "language module".
Your screenshot looks impressive :shock: :shock: :shock:
Maybe your ideas are a bit too difficult for me - especially an own Parser etc. :shock:
Regards
maul.esel
Visit me on github
Win7 HP SP1 64bit | AHK_L U 64bit
But I have some great helps around, 1. the Code-Edit Control from SmartDevelop is very good and also very expandable, 2. AvalonDock is a very great Window-Managing System for WPF, and finally my own collection of Patterns and common Classes for .NET & WPF called Archimedes which makes it possible that I can concentrate just of the IDE Code Design and the Tokenizing/Intellisense Part.
I'll use a common Plugin-Architecture which will hold all language specific Code, but dealing with Plugins in this stage makes things just more complicated. So this is something which I have to keep in mind when designing the code, but don't actually implement (outsource to) until the project has reached an alpha stage.@IsNull: By "modular idea" I mean that CC is not AHK only, that AHK-specific will be done using the "language module".
Best
IsNull
[*:1ezl1ry7]CC now uses WPF, a new design and data binding
[*:1ezl1ry7]The interface uses a Ribbon now (although it is not yet finished)
[*:1ezl1ry7]links are now resources (no more extra type).
This enables resources attached to links, destination-independant naming, ...
They get an own GUID, the destination is set using the destination attribute.
[*:1ezl1ry7]XML syntax changed: <attach> elements are now <resource> elements, data-type="1" now represents a link
[*:1ezl1ry7]internal changes: renamed resource classes, introduced new namespaces, get/set resource properties directly via XmlDocument
[*:1ezl1ry7]and a lot more...
Regards
maul.esel
Visit me on github
Win7 HP SP1 64bit | AHK_L U 64bit
The code from drifter is just avaiable when the dev has hand signed some (OOP?) Licence. This actually hold me - and possible others - back.Is there any hope of continuing the work begun in AHKIDE Project (Aborted)? It seemed like such a promising tool at the time.
When the code is not really OpenSource for everyone, it isn't the kind of spirit I belive in.
:?:The source code to the last module is now released. The entire project is now open source and may be modified and distributed without restriction.
The code from drifter is just avaiable when the dev has hand signed some (OOP?) Licence. This actually hold me - and possible others - back.Is there any hope of continuing the work begun in AHKIDE Project (Aborted)? It seemed like such a promising tool at the time.
it looked like he removed all the licenses
When the code is not really OpenSource for everyone, it isn't the kind of spirit I belive in.
do you believe in the GPL?
I really need someone with more experience in designing,[*:9o0djuxj]for the graphics (especially the logo)[*:9o0djuxj]if possible, for the UI design Everything I try looks ugly :?
Anyone interested? You'll be mentioned in the credits ;-)
Visit me on github
Win7 HP SP1 64bit | AHK_L U 64bit
<!-- m -->http://www.famfamfam...lab/icons/silk/<!-- m -->
(I think it is used by notepad++ as well)
here is a nice chameleon you can use (just colorize the image if you don't like green)
<!-- m -->http://www.iconfinde... ... eleon_icon<!-- m -->