www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - What are we missing, in terms of tool support?

reply Andrej Mitrovic <none none.none> writes:
Currently I'm using Vim (after the last 10 attempts I've finally made the
switch and now I'm sticking with it), and it does provide quite a bit of
functionality right in the get-go.

I have just written a guide 2 days ago on how to set up Cscope to use it with
Vim and D (it's a bit Windows specific but easily adaptable to Linux):
http://prowiki.org/wiki4d/wiki.cgi?ReferenceForTools/Cscope

I'm pretty sure Cscope can be used with Emacs and other editors as well.
(Etags, right? :p)
You can also download a prebuilt binary for Ctags on Windows:
http://prowiki.org/wiki4d/wiki.cgi?ReferenceForTools/ExuberantCtags

They both work pretty good for D, even though they were never designed for it.
Ctags does need a tiny patch though. 
So for jumping around source code we're all set (in Vim land at least).

I don't want to make this Vim-specific, so I'm wondering what features are we
missing in today's D editors/IDE's that other languages already have in their
editors/IDE's?

As for any Vimmers: has anyone set up a debugging system that they use with D?
I was just about to go look into that, but if someone has already looked into
it any info you could give me would be great!
Jan 12 2011
next sibling parent Andrej Mitrovic <andrej.mitrovich gmail.com> writes:
Oh, I forgot to mentioned I made a ctags guide as well (for Vim):
http://prowiki.org/wiki4d/wiki.cgi?EditorSupport/VimEditor
So give it a spin if you're in Vim.
Jan 12 2011
prev sibling next sibling parent reply Jim <bitcirkel yahoo.com> writes:
 I don't want to make this Vim-specific, so I'm wondering what features are we
missing in today's D editors/IDE's that other languages already have in their
editors/IDE's?

IDE with incremental compiler. Non-windows IDEs. Ddoc integration. Refactoring utilities. Template- and conditional-compilation-aware editing. Inline error and warning messages. ...
Jan 12 2011
next sibling parent reply Dmitry Olshansky <dmitry.olsh gmail.com> writes:
On 13.01.2011 10:40, Jim wrote:
 I don't want to make this Vim-specific, so I'm wondering what features are we
missing in today's D editors/IDE's that other languages already have in their
editors/IDE's?

IDE with incremental compiler.

advantage of incremental linking is slightly faster link time (which is pretty fast ATM).
 Non-windows IDEs.

 Ddoc integration.

 Refactoring utilities.

 Template- and conditional-compilation-aware editing.

slightly lighter, etc.
 Inline error and warning messages.

 ....

-- Dmitry Olshansky
Jan 13 2011
next sibling parent Ary Borenszweig <ary esperanto.org.ar> writes:
The problem I faced with Descent is that in order to get those nice
features you want the semantic must be 100% accurate. Imagine
refactoring something and it is left half-way through it. So in
order to do that I needed to implement the semantics of the
language. Cool, the lexer and parser are totally separated, but the
semantic is so huge and complicated that it is practically
impossible to do another front end for D if you want to be
compatible with D (that currently means: compatible with DMD). Just
take a look at CallExp::semantic. It's a huge function.

Another thing is that applying refactoring and other things to
templates is nearly impossible because those are just syntax-checked
and only semantic checked on instantiations.

Sorry, I have to go now, I wanted to write more about this...

I think DMD's source code should be re-written from scratch. It's
overly complicated by now.
Jan 13 2011
prev sibling parent reply %fil <fil gmail.com> writes:
I for one fully agree with you on this, having spend a lot of my
time in recent years coding in c# and the tool support (from an
IDE perspective) that comes a along with programming in .Net, I
agree that the coding productivity in bigger applications receives
a good boost by an IDE with the features you describe.

To an extend, I'm actually surprised that there is no good cross
platform IDE written in D(2) already as it would be a very good
show case for the language and help to lower to barrier for other
people to adopt the language (definitly if it were to support a
gui designer (QtD, GtkD or sometime else) of some sort directly
from the IDE, so people feel they have a complete package to
create D(2) application easily.

I would even personally happely pay for such a tool (if it were
cross platform at least) if were only available under a commercial
license...

fil.
Jan 14 2011
next sibling parent Jacob Carlborg <doob me.com> writes:
On 2011-01-14 10:49, %fil wrote:
 I for one fully agree with you on this, having spend a lot of my
 time in recent years coding in c# and the tool support (from an
 IDE perspective) that comes a along with programming in .Net, I
 agree that the coding productivity in bigger applications receives
 a good boost by an IDE with the features you describe.

 To an extend, I'm actually surprised that there is no good cross
 platform IDE written in D(2) already as it would be a very good
 show case for the language and help to lower to barrier for other
 people to adopt the language (definitly if it were to support a
 gui designer (QtD, GtkD or sometime else) of some sort directly
 from the IDE, so people feel they have a complete package to
 create D(2) application easily.

 I would even personally happely pay for such a tool (if it were
 cross platform at least) if were only available under a commercial
 license...

 fil.

The reason, as I see it, that this hasn't happened yet (I assume that this would be written in D) is: * The reference compiler is written in C++ * There isn't any GUI library that most of the community seems satisfied with * The support for dynamic libraries is limited These are the only ones I could think for now -- /Jacob Carlborg
Jan 14 2011
prev sibling parent Bruno Medeiros <brunodomedeiros+spam com.gmail> writes:
On 14/01/2011 09:49, %fil wrote:
 I for one fully agree with you on this, having spend a lot of my
 time in recent years coding in c# and the tool support (from an
 IDE perspective) that comes a along with programming in .Net, I
 agree that the coding productivity in bigger applications receives
 a good boost by an IDE with the features you describe.

 To an extend, I'm actually surprised that there is no good cross
 platform IDE written in D(2) already as it would be a very good
 show case for the language and help to lower to barrier for other
 people to adopt the language (definitly if it were to support a
 gui designer (QtD, GtkD or sometime else) of some sort directly
 from the IDE, so people feel they have a complete package to
 create D(2) application easily.

 I would even personally happely pay for such a tool (if it were
 cross platform at least) if were only available under a commercial
 license...

 fil.

A good cross-platform IDE written in D? There is not even a good cross-platform *D compiler* written in D... how about we start there first, no? (even if just in terms of a wishlist) -- Bruno Medeiros - Software Engineer
Feb 01 2011
prev sibling next sibling parent Andrew Wiley <debio264 gmail.com> writes:
--00248c05002fd60a000499c1554a
Content-Type: text/plain; charset=ISO-8859-1

On Thu, Jan 13, 2011 at 11:54 AM, Dmitry Olshansky <dmitry.olsh gmail.com>wrote:

 On 13.01.2011 10:40, Jim wrote:

 I don't want to make this Vim-specific, so I'm wondering what features are
 we missing in today's D editors/IDE's that other languages already have in
 their editors/IDE's?

IDE with incremental compiler.

advantage of incremental linking is slightly faster link time (which is pretty fast ATM).
 Non-windows IDEs.

 Ddoc integration.

 Refactoring utilities.

  Yup, useful, but hardly critical.

Template- and conditional-compilation-aware editing.
  VisualD has it. Not used code paths in static conditional statements is

 Inline error and warning messages.

 ....


C++, D seems like it could be made as IDE-friendly as so many of the VM languages are. When you're programming C++, the IDE is generally a somewhat advanced text editor, possibly with some autocompletion if it can parse your code. With Java and other VM languages, the IDE is parsing your code as you type, and rather than the code-compile-fix cycle of C++, the VM languages get constant as-you-type compilation (actually, it's when-you-stop-typing, but close enough). Having the IDE able to parse your code that rapidly means you get instant error feedback, and it means that things like type inference become much more transparent. Unexpected compiler errors make more sense because you can dismantle exactly why the error occurred more rapidly, and the programmer becomes more free to think about why something happens rather than focusing on how to fix it. It also opens the door to advanced refactoring, code analysis, and more advanced project management features. Autocompletion can automatically display documentation. The bottom line is that an IDE that knows as much about your code as the compiler can improve programmer productivity dramatically. With D, it's more challenging because of CTFE and full templates, but when Descent could handle those back in the day, it was hailed as a breakthrough. Unfortunately, the way Descent did that isn't really sustainable. --00248c05002fd60a000499c1554a Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable <div class=3D"gmail_quote">On Thu, Jan 13, 2011 at 11:54 AM, Dmitry Olshans= ky <span dir=3D"ltr">&lt;<a href=3D"mailto:dmitry.olsh gmail.com">dmitry.ol= sh gmail.com</a>&gt;</span> wrote:<br><blockquote class=3D"gmail_quote" sty= le=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"> <div class=3D"im">On 13.01.2011 10:40, Jim wrote:<br> <blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p= x #ccc solid;padding-left:1ex"><blockquote class=3D"gmail_quote" style=3D"m= argin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> I don&#39;t want to make this Vim-specific, so I&#39;m wondering what featu= res are we missing in today&#39;s D editors/IDE&#39;s that other languages = already have in their editors/IDE&#39;s?<br> </blockquote> <br> IDE with incremental compiler.<br> </blockquote></div> IDE has nothing to do with incremental linking. And besides the only advant= age of =A0incremental linking is slightly faster link time (which is pretty= fast ATM).<br> <blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p= x #ccc solid;padding-left:1ex"> Non-windows IDEs.<br> </blockquote> Last time on =A0linux I used Code::Blocks, there are also Descent and DDT.<= br> <blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p= x #ccc solid;padding-left:1ex"> Ddoc integration.<br> </blockquote> Not sure what you mean here.<br> <blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p= x #ccc solid;padding-left:1ex"> Refactoring utilities.<br> <br> </blockquote> Yup, useful, but hardly critical.<div class=3D"im"><br> <blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p= x #ccc solid;padding-left:1ex"> Template- and conditional-compilation-aware editing.<br> <br> </blockquote></div> VisualD has it. Not used code paths in static conditional statements is sli= ghtly lighter, etc.<br> <blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p= x #ccc solid;padding-left:1ex"><div class=3D"im"> Inline error and warning messages.<br> <br></div> ....<br> </blockquote> Do You mean exact line and _column_ of error or what?<br> <font color=3D"#888888"><br></font></blockquote><div><br></div><div>I&#39;m= pretty sure what Jim was getting at here is that unlike the world of C++, = D seems like it could be made as IDE-friendly as so many of the VM language= s are. When you&#39;re programming C++, the IDE is generally a somewhat adv= anced text editor, possibly with some autocompletion if it can parse your c= ode. With Java and other VM languages, the IDE is parsing your code as you = type, and rather than the code-compile-fix cycle of C++, the VM languages g= et constant as-you-type compilation (actually, it&#39;s when-you-stop-typin= g, but close enough).</div> <div>Having the IDE able to parse your code that rapidly means you get inst= ant error feedback, and it means that things like type inference become muc= h more transparent. Unexpected compiler errors make more sense because you = can dismantle exactly why the error occurred more rapidly, and the programm= er becomes more free to think about why something happens rather than focus= ing on how to fix it. It also opens the door to advanced refactoring, code = analysis, and more advanced project management features. Autocompletion can= automatically display documentation.</div> <div>The bottom line is that an IDE that knows as much about your code as t= he compiler can improve programmer productivity dramatically. With D, it&#3= 9;s more challenging because of CTFE and full templates, but when Descent c= ould handle those back in the day, it was hailed as a breakthrough. Unfortu= nately, the way Descent did that isn&#39;t really sustainable.</div> </div><br> --00248c05002fd60a000499c1554a--
Jan 13 2011
prev sibling parent Andrej Mitrovic <andrej.mitrovich gmail.com> writes:
It's kind of ironic, isn't it? D is marketed as a language that is
much easier to build tools for (It's mentioned in numerous places on
the website), and yet we see that there's quite a bit of trouble in
getting the tools to work nicely with D.
Jan 13 2011
prev sibling next sibling parent spir <denis.spir gmail.com> writes:
On 01/13/2011 01:56 AM, Andrej Mitrovic wrote:
 I don't want to make this Vim-specific, so I'm wondering what features are we
missing in today's D editors/IDE's that other languages already have in their
editors/IDE's?

For what it's worth, Geany works very nicely with D out of the box (it's based on scintilla, which knows about D ;-) (*). http://www.geany.org/Main/HomePage http://en.wikipedia.org/wiki/Geany May share my settings for D if anyone interested. Denis (*) For a while, it did not fold D multi-line comments, which was _very_ annoying (comment eating most vertical space on screen) especially because of ddoc's requirement of doc beeing placed before what it comments, instead of inside. (Thus an overview of a properly folded module would show mostly comments. Great!) _________________ vita es estrany spir.wikidot.com
Jan 13 2011
prev sibling next sibling parent Andrej Mitrovic <andrej.mitrovich gmail.com> writes:
On 1/13/11, spir <denis.spir gmail.com> wrote:
 May share my settings for D if anyone interested.

Well if you do, share them here: http://prowiki.org/wiki4d/wiki.cgi?EditorSupport/Geany so everyone can find it.
Jan 13 2011
prev sibling parent reply spir <denis.spir gmail.com> writes:
On 01/13/2011 04:24 PM, Andrej Mitrovic wrote:
 On 1/13/11, spir<denis.spir gmail.com>  wrote:
 May share my settings for D if anyone interested.

Well if you do, share them here: http://prowiki.org/wiki4d/wiki.cgi?EditorSupport/Geany so everyone can find it.

Well, I don't mind sharing them, but geany settings are moderately big files... so, copy-paste them on a wiki page? Unless wiki markup supports block folding? Denis _________________ vita es estrany spir.wikidot.com
Jan 13 2011
parent Daniel Gibson <metalcaedes gmail.com> writes:
Am 13.01.2011 20:01, schrieb spir:
 On 01/13/2011 04:24 PM, Andrej Mitrovic wrote:
 On 1/13/11, spir<denis.spir gmail.com> wrote:
 May share my settings for D if anyone interested.

Well if you do, share them here: http://prowiki.org/wiki4d/wiki.cgi?EditorSupport/Geany so everyone can find it.

Well, I don't mind sharing them, but geany settings are moderately big files... so, copy-paste them on a wiki page? Unless wiki markup supports block folding? Denis _________________ vita es estrany spir.wikidot.com

you could put them in an online pastebin and link them in the wiki
Jan 13 2011