www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.ide - Qt Creator with D

reply =?ISO-8859-1?Q?Anders_F_Bj=F6rklund?= <afb algonet.se> writes:
Adding D support to the cross-platform C++ IDE for Qt, "Qt Creator":

http://qt.nokia.com/products/developer-tools
http://qt.nokia.com/products/library


It uses the "CPlusPlus" Open Source front-end for C++ (license MIT),
enhanced for use in Qt Creator, to do C/C++ completion / highlighting.
For QML/JavaScript parsing there is a custom qscript parser included.
Like Qt SDK all is available under both Qt Commercial License and LGPL.

For doing the actual building, it calls qmake to generate Makefiles.
(generic support for CMake and make is also available, if needed...)
For debugging it calls out to gdb, there is also version control and
interface/resource handlers - all integrated in the form of plugins.


It does require C++, and it does require Make. It's no D-only solution.

Makefile snippet: (where "dmd" could be "gdmd" or "ldmd" too eventually)
  CC            = gcc
  CXX           = g++
+DMD           = dmd

  CFLAGS        = -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES)
  CXXFLAGS      = -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES)
+DFLAGS        =

  .cpp.o:
          $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$ " "$<"

  .c.o:
          $(CC) -c $(CFLAGS) $(INCPATH) -o "$ " "$<"

+.d.o:
+        $(DMD) -c $(DFLAGS) -of"$ " "$<"
+


So the first thing needed was to patch in D support to qmake/qtcreator,
and the second thing is writing the actual new "deditor" editor plugin.
The basic "texteditor" does most of the editing, so the two main needed
additions are code completion and syntax highlighting (i.e. parsing D).

I just used "dmd -X" and QJson for analyzing D, it would also need a
http://doc.trolltech.com/stable/qsyntaxhighlighter.html implemented.
Building requires Qt 4.5 or later, but Qt Creator can build itself.
Screenshot at: http://www.algonet.se/~afb/d/qt-creator-d.png (1.3.1)


http://gitorious.org/qt-creator
http://gitorious.org/qjson

If someone is interested in continuing this, then please contact me...
Oct 13 2010
next sibling parent reply "Denis Koroskin" <2korden gmail.com> writes:
On Wed, 13 Oct 2010 14:32:28 +0400, Anders F Bj=C3=B6rklund <afb algonet=
.se>  =

wrote:

 Adding D support to the cross-platform C++ IDE for Qt, "Qt Creator":

 http://qt.nokia.com/products/developer-tools
 http://qt.nokia.com/products/library


 It uses the "CPlusPlus" Open Source front-end for C++ (license MIT),
 enhanced for use in Qt Creator, to do C/C++ completion / highlighting.=
 For QML/JavaScript parsing there is a custom qscript parser included.
 Like Qt SDK all is available under both Qt Commercial License and LGPL=
.
 For doing the actual building, it calls qmake to generate Makefiles.
 (generic support for CMake and make is also available, if needed...)
 For debugging it calls out to gdb, there is also version control and
 interface/resource handlers - all integrated in the form of plugins.


 It does require C++, and it does require Make. It's no D-only solution=
.
 Makefile snippet: (where "dmd" could be "gdmd" or "ldmd" too eventuall=
y)
   CC            =3D gcc
   CXX           =3D g++
 +DMD           =3D dmd

   CFLAGS        =3D -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES)
   CXXFLAGS      =3D -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES)
 +DFLAGS        =3D

   .cpp.o:
           $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$ " "$<"

   .c.o:
           $(CC) -c $(CFLAGS) $(INCPATH) -o "$ " "$<"

 +.d.o:
 +        $(DMD) -c $(DFLAGS) -of"$ " "$<"
 +


 So the first thing needed was to patch in D support to qmake/qtcreator=
,
 and the second thing is writing the actual new "deditor" editor plugin=
.
 The basic "texteditor" does most of the editing, so the two main neede=
d
 additions are code completion and syntax highlighting (i.e. parsing D)=
.
 I just used "dmd -X" and QJson for analyzing D, it would also need a
 http://doc.trolltech.com/stable/qsyntaxhighlighter.html implemented.
 Building requires Qt 4.5 or later, but Qt Creator can build itself.
 Screenshot at: http://www.algonet.se/~afb/d/qt-creator-d.png (1.3.1)


 http://gitorious.org/qt-creator
 http://gitorious.org/qjson

 If someone is interested in continuing this, then please contact me...=

I'm currently working on making ddmd usable in IDE (fixing various memor=
y  =

leaks, allowing many instances co-exist in memory etc) so that same  =

compiler instance could be used for both compilation (which is now even =
 =

faster because most of the stuff is still in memory) and auto-completion=
.  =

Most of the work I did so far, I'd call it an IDE backend because it's G=
UI  =

agnostic.

I will hopefully turn it into a full-featured IDE, but I didn't decide  =

what should it be based on (if anything), and Qt Creator is certainly an=
  =

option.

I'm not familiar with Qt Creator building process, but I hope it can be =
 =

managed manually and doesn't rely on (C/Q)makefiles only because ddmd  =

builds stuff itself (well, the whole "building" is actually writing out =
 =

stuff which is already pre-built in memory in most cases). All it needs =
is  =

a set of source files in text form, and a notification once any of those=
  =

have changed.
Oct 13 2010
next sibling parent reply =?UTF-8?B?QW5kZXJzIEYgQmrDtnJrbHVuZA==?= <afb algonet.se> writes:
Denis Koroskin wrote:
...
 It does require C++, and it does require Make. It's no D-only solution.
...
 I'm currently working on making ddmd usable in IDE (fixing various 
 memory leaks, allowing many instances co-exist in memory etc) so that 
 same compiler instance could be used for both compilation (which is now 
 even faster because most of the stuff is still in memory) and 
 auto-completion. Most of the work I did so far, I'd call it an IDE 
 backend because it's GUI agnostic.
 
 I will hopefully turn it into a full-featured IDE, but I didn't decide 
 what should it be based on (if anything), and Qt Creator is certainly an 
 option.
 
 I'm not familiar with Qt Creator building process, but I hope it can be 
 managed manually and doesn't rely on (C/Q)makefiles only because ddmd 
 builds stuff itself (well, the whole "building" is actually writing out 
 stuff which is already pre-built in memory in most cases). All it needs 
 is a set of source files in text form, and a notification once any of 
 those have changed.
It relies on Makefiles, and is in C++ so I'm not sure if ddmd is needed. The dmdfe could be used to add a D2 parser I suppose, to avoid the JSON. But that was the big part left to implement to make it par with the C++. It *is* possible to use it as a editor only for "other build systems": http://doc.qt.nokia.com/qtcreator-1.3/creator-generic-projects.html http://doc.qt.nokia.com/qtcreator-2.0/creator-project-generic.html Though that (avoiding make) only changes the building, not the editing. But it's something to build on, if pushing QtD as the new official GUI ? --anders
Oct 13 2010
parent reply Matthias Pleh <gonzo web.at> writes:
Am 13.10.2010 21:56, schrieb Anders F Björklund:
 Denis Koroskin wrote:
 ...
 It does require C++, and it does require Make. It's no D-only solution.
...
 I'm currently working on making ddmd usable in IDE (fixing various
 memory leaks, allowing many instances co-exist in memory etc) so that
 same compiler instance could be used for both compilation (which is
 now even faster because most of the stuff is still in memory) and
 auto-completion. Most of the work I did so far, I'd call it an IDE
 backend because it's GUI agnostic.

 I will hopefully turn it into a full-featured IDE, but I didn't decide
 what should it be based on (if anything), and Qt Creator is certainly
 an option.

 I'm not familiar with Qt Creator building process, but I hope it can
 be managed manually and doesn't rely on (C/Q)makefiles only because
 ddmd builds stuff itself (well, the whole "building" is actually
 writing out stuff which is already pre-built in memory in most cases).
 All it needs is a set of source files in text form, and a notification
 once any of those have changed.
It relies on Makefiles, and is in C++ so I'm not sure if ddmd is needed. The dmdfe could be used to add a D2 parser I suppose, to avoid the JSON. But that was the big part left to implement to make it par with the C++. It *is* possible to use it as a editor only for "other build systems": http://doc.qt.nokia.com/qtcreator-1.3/creator-generic-projects.html http://doc.qt.nokia.com/qtcreator-2.0/creator-project-generic.html
The D-projectmanager, I was working on, is derived on the generic-projectmangaer. This way we could also use another buildsystem or a compiler direct. But it should be done in a way, to support all D-compilers (dmd,gdc,ldc,...) I've heard, someone is working on a cmakeD2, which could be easily added to Qt-Creator, but there isn't a releasy yet.
 Though that (avoiding make) only changes the building, not the editing.

 But it's something to build on, if pushing QtD as the new official GUI ?

 --anders
Oct 13 2010
parent reply "Gour D." <gour atmarama.net> writes:
On Wed, 13 Oct 2010 22:32:15 +0200
 "Matthias" =3D=3D Matthias Pleh <gonzo web.at> wrote:
Matthias> The D-projectmanager, I was working on, is derived on the=20 Matthias> generic-projectmangaer. This way we could also use another Matthias> buildsystem or a compiler direct. But it should be done in a Matthias> way, to support all D-compilers (dmd,gdc,ldc,...) I was thinking whether to use CMake or Waf as build system for D and decided to use the latter (http://code.google.com/p/waf/) which already has built-in support for D and it is very extensible - everything is just Python.=20 Matthias> I've heard, someone is working on a cmakeD2, which could be Matthias> easily added to Qt-Creator, but there isn't a releasy yet. So, I believe that Waf can serve very nicely. Considering that I would use Waf with CodeBlocks as well, now I'm curious what would be the best option as D IDE: a) adding support to CodeBlocks b) patching QtCreator or c) D.Dev (http://d-dev-ide.blogspot.com/) Matthias> > But it's something to build on, if pushing QtD as the new Matthias> > official GUI ? I'd say that QtD looks as the best/most_complete GUI option for D. Considering that, what would you recommend to base D-IDE on: a), b) or c) ? Sincerely, Gour --=20 Gour | Hlapicina, Croatia | GPG key: CDBF17CA ----------------------------------------------------------------
Oct 14 2010
parent reply Matthias Pleh <gonzo web.at> writes:
Am 14.10.2010 11:59, schrieb Gour D.:
 On Wed, 13 Oct 2010 22:32:15 +0200
 "Matthias" == Matthias Pleh<gonzo web.at>  wrote:
Matthias> The D-projectmanager, I was working on, is derived on the Matthias> generic-projectmangaer. This way we could also use another Matthias> buildsystem or a compiler direct. But it should be done in a Matthias> way, to support all D-compilers (dmd,gdc,ldc,...) I was thinking whether to use CMake or Waf as build system for D and decided to use the latter (http://code.google.com/p/waf/) which already has built-in support for D and it is very extensible - everything is just Python.
That also means, you will need a Python installation, but beside that it would be a considerable option.
 Matthias>  I've heard, someone is working on a cmakeD2, which could be
 Matthias>  easily added to Qt-Creator, but there isn't a releasy yet.

 So, I believe that Waf can serve very nicely.

 Considering that I would use Waf with CodeBlocks as well, now I'm
 curious what would be the best option as D IDE:

 a) adding support to CodeBlocks

 b) patching QtCreator or

 c) D.Dev (http://d-dev-ide.blogspot.com/)

 Matthias>  >  But it's something to build on, if pushing QtD as the new
 Matthias>  >  official GUI ?

 I'd say that QtD looks as the best/most_complete GUI option for
 D. Considering that, what would you recommend to base D-IDE on: a), b)
 or c) ?
If you work windows-only I would suggest VisualD. It's working great, good quality and is frequently updated. If you itend to work linux or platform-independent I would suggest: - for the short term: -> CodeBlocks - already working out of the box with several D compiler - for the middle term: -> adding support to QtCreator -> it's really good piece of Code and through the plugin sytem very flexible. - for the long term: -> we will need an IDE written in D, but first we need a good working D GUI library As conclusion I would suggest b) QtCreator greets Matthias
 Sincerely,
 Gour
Oct 14 2010
parent reply "Gour D." <gour atmarama.net> writes:
On Thu, 14 Oct 2010 22:49:17 +0200
 "Matthias" =3D=3D Matthias Pleh <gonzo web.at> wrote:
Matthias> If you work windows-only I would suggest VisualD. It's Matthias> working great, good quality and is frequently updated. Although I plan to write multi-platform app, my environment is Linux-only, so VS is out. Matthias> - for the short term: -> CodeBlocks - already working out of Matthias> the box with several D compiler I'd prefer to start with some longer-term solution 'cause at the moment I'm still waiting for my TDPL copy to arrive and I'll have to spend some time learning D, but it would be nice to become familiar with the tool we'll use later. Matthias> - for the middle term: -> adding support to QtCreator -> it's Matthias> really good piece of Code and through the plugin sytem very Matthias> flexible. Do you consider that adding support for QtCreator may yield a better D-environment than adding (more) support to Code:Blocks? Matthias> - for the long term: -> we will need an IDE written in D, but Matthias> first we need a good working D GUI library I agree on that, but this it far in the future. D-dev is in the beginning and, so far, Win only. Matthias> As conclusion I would suggest b) QtCreator Is there ANY specific D-support in QtCreator at the moment? Sincerely, Gour --=20 Gour | Hlapicina, Croatia | GPG key: CDBF17CA ----------------------------------------------------------------
Oct 15 2010
parent reply =?ISO-8859-1?Q?Anders_F_Bj=F6rklund?= <afb algonet.se> writes:
Gour D. wrote:

 Matthias> - for the short term: -> CodeBlocks - already working out of
 Matthias> the box with several D compiler
 
 I'd prefer to start with some longer-term solution 'cause at the
 moment I'm still waiting for my TDPL copy to arrive and I'll have to
 spend some time learning D, but it would be nice to become familiar
 with the tool we'll use later.
Code::Blocks support is working for the old D language, but that is not what is in TDPL book - as it's all D2. There's support for D2 in wxD CVS and in Code::Blocks sandbox, but as there is no upstream support for them - it makes more "sense" for Code::Blocks to support the Free Software GDC compiler and the released wxWidgets. Or at least it did when D 1.0 was released back in 2007. If starting over for D 2.0 in 2011, QtD might be better ? http://wxd.sourceforge.net/ http://gdcwin.sourceforge.net/ http://gdcgnu.sourceforge.net/ http://gdcmac.sourceforge.net/
 Matthias> - for the middle term: -> adding support to QtCreator -> it's
 Matthias> really good piece of Code and through the plugin sytem very
 Matthias> flexible.
 
 Do you consider that adding support for QtCreator may yield a better
 D-environment than adding (more) support to Code:Blocks?
It should make for a better *QtD* environment, at least... Since it has integration with Qt Assistant and Qt Designer. I don't think using a C++ library and C++ editor is a problem, any more than it's a problem with using a C++ compiler for D ?
 Matthias> - for the long term: -> we will need an IDE written in D, but
 Matthias> first we need a good working D GUI library
 
 I agree on that, but this it far in the future. D-dev is in the
 beginning and, so far, Win only.
"D.dev" is not open source, either*. There's also "BDE". *http://www.digitalmars.com/d/archives/digitalmars/D/announce/D.dev_development_status_update_19051.html http://d-dev-ide.blogspot.com/ http://bitprox.com/en/products_bde_index.html
 Matthias> As conclusion I would suggest b) QtCreator
 
 Is there ANY specific D-support in QtCreator at the moment?
I said I would push those patches, but not upstream no. To http://gitorious.org/~afb (qmake and qtcreator hacks). Just having some minor "technical difficulties" doing so, I had used my regular Qt 4.6 / Qt Creator 1.3 installation. The patches are trivial, adding some new Makefile commands to qmake for D files and adding D files to "Sources" view. Real work is making the syntax highlighter work for D code, either by reusing an existing component or writing a new one, and make the editor work for D code as good as for C++ now: http://doc.qt.nokia.com/qtcreator-2.0/creator-editor-using.html All of that is still left as an exercise for the D2 reader. I am *not* going to be working on it, as I'm not using it... --anders
Oct 15 2010
parent reply "Gour D." <gour atmarama.net> writes:
On Fri, 15 Oct 2010 13:10:50 +0200
 "Anders" =3D=3D Anders F Bj=C3=B6rklund <afb algonet.se> wrote:
Anders> Code::Blocks support is working for the old D language, Anders> but that is not what is in TDPL book - as it's all D2. Ahh...thanks. Anders> There's support for D2 in wxD CVS and in Code::Blocks Anders> sandbox, but as there is no upstream support for them - Anders> it makes more "sense" for Code::Blocks to support the Anders> Free Software GDC compiler and the released wxWidgets. Well, we are looking for IDE with good Qt support. Anders> Or at least it did when D 1.0 was released back in 2007. Anders> If starting over for D 2.0 in 2011, QtD might be better ? I'm still doubtful that QtD might get decent support in C:B. Even Qt C++ support is lacking, afaict. Anders> It should make for a better *QtD* environment, at least... Anders> Since it has integration with Qt Assistant and Qt Designer. Right...and we want that. Anders> I don't think using a C++ library and C++ editor is a problem, Anders> any more than it's a problem with using a C++ compiler for D ? Today one guy from Qt (andre) showed me about out-of-the-box 'support' for D: http://img259.imageshack.us/img259/9484/86764766.png I've also found the following blog post: http://labs.qt.nokia.com/2010/09/16/generic-highlighter-in-qt-creator/ It looks as inspiring start for (Qt)D programming. Anders> "D.dev" is not open source, either*.=20 Ohh, another reason not to count on it. Anders> I said I would push those patches, but not upstream no. You think they wouldn't be accepted? Anders> To http://gitorious.org/~afb (qmake and qtcreator hacks). OK. Anders> Real work is making the syntax highlighter work for D code, Anders> either by reusing an existing component or writing a new one, Anders> and make the editor work for D code as good as for C++ now: See then the above link about syntax high. via Kate's syntax files in 2.1 trunk of QtC. Anders> All of that is still left as an exercise for the D2 reader. Anders> I am *not* going to be working on it, as I'm not using it... You're not using any GUI with D or using Codeblocks or ..? Sincerely, Gour --=20 Gour | Hlapicina, Croatia | GPG key: CDBF17CA ----------------------------------------------------------------
Oct 15 2010
parent reply =?UTF-8?B?QW5kZXJzIEYgQmrDtnJrbHVuZA==?= <afb algonet.se> writes:
Gour D. wrote:
 Anders> Or at least it did when D 1.0 was released back in 2007.
 Anders> If starting over for D 2.0 in 2011, QtD might be better ?
 
 I'm still doubtful that QtD might get decent support in C:B.
 
 Even Qt C++ support is lacking, afaict.
Wouldn't surprise me. The wxWidgets support is better, but that uses GTK+ not Qt. (at least until wxQt has been released, that is)
 Today one guy from Qt (andre) showed me about out-of-the-box 'support'
 for D: http://img259.imageshack.us/img259/9484/86764766.png
 
 I've also found the following blog post:
 
 http://labs.qt.nokia.com/2010/09/16/generic-highlighter-in-qt-creator/
 
 It looks as inspiring start for (Qt)D programming.
Right, that would be just such an implementation of QSyntaxHighlighter.
 Anders> I said I would push those patches, but not upstream no.
 
 You think they wouldn't be accepted?
You asked what is in Qt Creator at the moment, and I don't think that anything specific to D had been added so far (except the "generic") ?
 Anders> All of that is still left as an exercise for the D2 reader.
 Anders> I am *not* going to be working on it, as I'm not using it...
 
 You're not using any GUI with D or using Codeblocks or ..?
I'm not using D... Might try again, once D2 is available for 64-bit. I just wanted something that was better than C and faster than Java, not something that was better than C++. So I'll go with Objective-C. Most of the time it will be Python, though. With some bits of C added. --anders
Oct 15 2010
parent reply "Gour D." <gour atmarama.net> writes:
On Fri, 15 Oct 2010 16:44:49 +0200
 "Anders" =3D=3D Anders F Bj=C3=B6rklund <afb algonet.se> wrote:
Anders> Wouldn't surprise me. The wxWidgets support is better, but that Anders> uses GTK+ not Qt. (at least until wxQt has been released, that Anders> is) Yeah...it seems that wxQt is advancing nicely. Anders> You asked what is in Qt Creator at the moment, and I don't Anders> think that anything specific to D had been added so far (except Anders> the "generic") ? Correct...and 'generic' provides something...It should be possible to use 'generic' build (with Waf). Anders> I'm not using D... Might try again, once D2 is available for Anders> 64-bit. Hopefully 64bit D2 will arrive soon. I'm in the same boat. ;) Anders> I just wanted something that was better than C and faster than Anders> Java, not something that was better than C++. So I'll go with Anders> Objective-C. Isn't Objective-C mostly just Apple & Mac OS? Anders> Most of the time it will be Python, though. With some bits of C Anders> added. I'll use Python to tweak my Waf builds. :-) Sincerely, Gour --=20 Gour | Hlapicina, Croatia | GPG key: CDBF17CA ----------------------------------------------------------------
Oct 15 2010
parent reply =?UTF-8?B?QW5kZXJzIEYgQmrDtnJrbHVuZA==?= <afb algonet.se> writes:
Gour D. wrote:
 Anders> You asked what is in Qt Creator at the moment, and I don't
 Anders> think that anything specific to D had been added so far (except
 Anders> the "generic") ?
 
 Correct...and 'generic' provides something...It should be possible to
 use 'generic' build (with Waf).
Will have to update to Qt 4.7 and Qt Creator 2.0 then... Does Qt Creator support Waf, or does that need patching ?
 Anders> I just wanted something that was better than C and faster than
 Anders> Java, not something that was better than C++. So I'll go with
 Anders> Objective-C.
 
 Isn't Objective-C mostly just Apple & Mac OS?
Right. Theoretically there is GCC and GNUstep too, but. When doing something portable, it's all in C/C++ still...
 Anders> Most of the time it will be Python, though. With some bits of C
 Anders> added.
 
 I'll use Python to tweak my Waf builds. :-)
Yeah, C++ and Python are unfortunate standard solutions. I don't care much for Waf or any other Make replacements. --anders
Oct 17 2010
parent "Gour D." <gour atmarama.net> writes:
On Sun, 17 Oct 2010 13:30:25 +0200
 "Anders" =3D=3D Anders F Bj=C3=B6rklund <afb algonet.se> wrote:
Anders> Does Qt Creator support Waf, or does that need patching ? No, but I believe that, according to what I heard one can just use 'generic build'. With waf, one can use 'standard': waf configure build Anders> I don't care much for Waf or any other Make replacements. Ohh, I do... ;) Sincerely, Gour --=20 Gour | Hlapicina, Croatia | GPG key: CDBF17CA ----------------------------------------------------------------
Oct 17 2010
prev sibling parent Matthias Pleh <gonzo web.at> writes:
Am 13.10.2010 13:16, schrieb Denis Koroskin:
 On Wed, 13 Oct 2010 14:32:28 +0400, Anders F Björklund <afb algonet.se>
 wrote:

 Adding D support to the cross-platform C++ IDE for Qt, "Qt Creator":

 http://qt.nokia.com/products/developer-tools
 http://qt.nokia.com/products/library


 It uses the "CPlusPlus" Open Source front-end for C++ (license MIT),
 enhanced for use in Qt Creator, to do C/C++ completion / highlighting.
 For QML/JavaScript parsing there is a custom qscript parser included.
 Like Qt SDK all is available under both Qt Commercial License and LGPL.

 For doing the actual building, it calls qmake to generate Makefiles.
 (generic support for CMake and make is also available, if needed...)
 For debugging it calls out to gdb, there is also version control and
 interface/resource handlers - all integrated in the form of plugins.


 It does require C++, and it does require Make. It's no D-only solution.

 Makefile snippet: (where "dmd" could be "gdmd" or "ldmd" too eventually)
 CC = gcc
 CXX = g++
 +DMD = dmd

 CFLAGS = -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES)
 CXXFLAGS = -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES)
 +DFLAGS =

 .cpp.o:
 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$ " "$<"

 .c.o:
 $(CC) -c $(CFLAGS) $(INCPATH) -o "$ " "$<"

 +.d.o:
 + $(DMD) -c $(DFLAGS) -of"$ " "$<"
 +


 So the first thing needed was to patch in D support to qmake/qtcreator,
 and the second thing is writing the actual new "deditor" editor plugin.
 The basic "texteditor" does most of the editing, so the two main needed
 additions are code completion and syntax highlighting (i.e. parsing D).

 I just used "dmd -X" and QJson for analyzing D, it would also need a
 http://doc.trolltech.com/stable/qsyntaxhighlighter.html implemented.
 Building requires Qt 4.5 or later, but Qt Creator can build itself.
 Screenshot at: http://www.algonet.se/~afb/d/qt-creator-d.png (1.3.1)


 http://gitorious.org/qt-creator
 http://gitorious.org/qjson

 If someone is interested in continuing this, then please contact me...
I'm currently working on making ddmd usable in IDE (fixing various memory leaks, allowing many instances co-exist in memory etc) so that same compiler instance could be used for both compilation (which is now even faster because most of the stuff is still in memory) and auto-completion. Most of the work I did so far, I'd call it an IDE backend because it's GUI agnostic. I will hopefully turn it into a full-featured IDE, but I didn't decide what should it be based on (if anything), and Qt Creator is certainly an option. I'm not familiar with Qt Creator building process, but I hope it can be managed manually and doesn't rely on (C/Q)makefiles only because ddmd builds stuff itself (well, the whole "building" is actually writing out stuff which is already pre-built in memory in most cases). All it needs is a set of source files in text form, and a notification once any of those have changed.
Qt-Creator's main application is very small and nearly everything is implemented through plugins. So customization or adding new feature isn't that hard. Is your 'IDE-backend' already working? Implementing this to Qt-Creator would be really cool. :) greets Matthias
Oct 13 2010
prev sibling next sibling parent reply Matthias Pleh <gonzo web.at> writes:
Am 13.10.2010 12:32, schrieb Anders F Björklund:
 Adding D support to the cross-platform C++ IDE for Qt, "Qt Creator":

 http://qt.nokia.com/products/developer-tools
 http://qt.nokia.com/products/library


 It uses the "CPlusPlus" Open Source front-end for C++ (license MIT),
 enhanced for use in Qt Creator, to do C/C++ completion / highlighting.
 For QML/JavaScript parsing there is a custom qscript parser included.
 Like Qt SDK all is available under both Qt Commercial License and LGPL.

 For doing the actual building, it calls qmake to generate Makefiles.
 (generic support for CMake and make is also available, if needed...)
 For debugging it calls out to gdb, there is also version control and
 interface/resource handlers - all integrated in the form of plugins.


 It does require C++, and it does require Make. It's no D-only solution.

 Makefile snippet: (where "dmd" could be "gdmd" or "ldmd" too eventually)
 CC = gcc
 CXX = g++
 +DMD = dmd

 CFLAGS = -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES)
 CXXFLAGS = -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES)
 +DFLAGS =

 .cpp.o:
 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$ " "$<"

 .c.o:
 $(CC) -c $(CFLAGS) $(INCPATH) -o "$ " "$<"

 +.d.o:
 + $(DMD) -c $(DFLAGS) -of"$ " "$<"
 +


 So the first thing needed was to patch in D support to qmake/qtcreator,
 and the second thing is writing the actual new "deditor" editor plugin.
 The basic "texteditor" does most of the editing, so the two main needed
 additions are code completion and syntax highlighting (i.e. parsing D).

 I just used "dmd -X" and QJson for analyzing D, it would also need a
 http://doc.trolltech.com/stable/qsyntaxhighlighter.html implemented.
Syntaxhighlighting and code-folding is already working through the generichighlighter: http://www.freeimagehosting.net/image.php?efbefe290f.png
 Building requires Qt 4.5 or later, but Qt Creator can build itself.
 Screenshot at: http://www.algonet.se/~afb/d/qt-creator-d.png (1.3.1)


 http://gitorious.org/qt-creator
 http://gitorious.org/qjson

 If someone is interested in continuing this, then please contact me...
I've also worked on a plugin with D-projectmanagment for Qt-Creator , but I've halted the work, cause lack of time. But I would be interrested, to share my work or help on an existing project. Are you still working on this D-support in Qt-Creator? greets Matthias
Oct 13 2010
parent reply =?ISO-8859-1?Q?Anders_F_Bj=F6rklund?= <afb algonet.se> writes:
Matthias Pleh wrote:
 I just used "dmd -X" and QJson for analyzing D, it would also need a
 http://doc.trolltech.com/stable/qsyntaxhighlighter.html implemented.
Syntaxhighlighting and code-folding is already working through the generichighlighter: http://www.freeimagehosting.net/image.php?efbefe290f.png
Cool, don't think that was available in Qt 4.6 and Qt Creator 1.3... http://labs.qt.nokia.com/2010/09/16/generic-highlighter-in-qt-creator/ But for Qt 4.7 it could be an option, if sufficiently advanced for D2 ? There is also http://srchiliteqt.sourceforge.net/ available under GPL.
 http://gitorious.org/qt-creator
 http://gitorious.org/qjson
 If someone is interested in continuing this, then please contact me...
I've also worked on a plugin with D-projectmanagment for Qt-Creator , but I've halted the work, cause lack of time. But I would be interrested, to share my work or help on an existing project.
You should push it to gitorious.org, like I will do with my own hacks. I don't have the time to do it, so someone will need to pick it up...
 Are you still working on this D-support in Qt-Creator?
I just wanted to get it all started, as an alternative for using QtD. Don't think I will look at it again until DMD (or better yet GDC/LDC) supports 64-bit and D2, to avoiding needing a 32-bit chroot for it... Otherwise I could be just as well be using wxWidgets and Code::Blocks. I'm sure that neither will be "enough", since they are written in C++, but should fill the gaping hole for now... D *needs* a GUI and an IDE. --anders
Oct 13 2010
parent Matthias Pleh <gonzo web.at> writes:
Am 13.10.2010 22:52, schrieb Anders F Björklund:
 Matthias Pleh wrote:
 I just used "dmd -X" and QJson for analyzing D, it would also need a
 http://doc.trolltech.com/stable/qsyntaxhighlighter.html implemented.
Syntaxhighlighting and code-folding is already working through the generichighlighter: http://www.freeimagehosting.net/image.php?efbefe290f.png
Cool, don't think that was available in Qt 4.6 and Qt Creator 1.3... http://labs.qt.nokia.com/2010/09/16/generic-highlighter-in-qt-creator/ But for Qt 4.7 it could be an option, if sufficiently advanced for D2 ?
the generic-highlighter is based on kate an realy powerful. The xml-definitionfile, I have used, is taken from the KatePart project and alredy mature. (for example nested comments with /++/ is already working!)
 There is also http://srchiliteqt.sourceforge.net/ available under GPL.

 http://gitorious.org/qt-creator
 http://gitorious.org/qjson
 If someone is interested in continuing this, then please contact me...
I've also worked on a plugin with D-projectmanagment for Qt-Creator , but I've halted the work, cause lack of time. But I would be interrested, to share my work or help on an existing project.
You should push it to gitorious.org, like I will do with my own hacks. I don't have the time to do it, so someone will need to pick it up...
That's the reason, I've halted my project ... lack of time :(
 Are you still working on this D-support in Qt-Creator?
I just wanted to get it all started, as an alternative for using QtD. Don't think I will look at it again until DMD (or better yet GDC/LDC) supports 64-bit and D2, to avoiding needing a 32-bit chroot for it... Otherwise I could be just as well be using wxWidgets and Code::Blocks.
I know, you're also active on the Code::Blocks forum ... (we have already discused there :) )
 I'm sure that neither will be "enough", since they are written in C++,
 but should fill the gaping hole for now... D *needs* a GUI and an IDE.
Yep, that's my thought
 --anders
Oct 13 2010
prev sibling parent Lutger Blijdestijn <lutger.blijdestijn gmail.com> writes:
Has anything come out of this? If not, is it possible that you commit what 
you have to a gitorious project or somewhere so that your work is not lost? 

I cannot take on such a project myself but am definitely interested, perhaps 
just making the basics work with the kate style syntax highlighting for now.
Nov 20 2010