DDT 0.11.0 released
Bruno Medeiros via Digitalmars-d-announce
digitalmars-d-announce at puremagic.com
Tue Mar 24 07:10:01 PDT 2015
On 23/03/2015 23:01, Ben Boeckel via Digitalmars-d-announce wrote:
> On Mon, Mar 23, 2015 at 21:14:31 +0100, Jacob Carlborg via Digitalmars-d-announce wrote:
>> On 2015-03-23 13:54, Bruno Medeiros wrote:
>>> There's no plans ATM to integrate with CDT itself. (I don't even know
>>> what integration with java tools would mean here) Even for CDT, I don't
>>> see what much would there be to integrate, other than the build system.
>>
>> I would guess he means using C(++) files and D files in the same project
>> and the build system would just work.
>
>>From what I understand[1] of Eclipse (which I admit isn't much from a
> user's PoV), it supports "natures" to be loaded which provide
> functionality. Now I have no idea how much work this is, but it would be
> nice to have a nature for D support (syntax highlighting, completion,
> etc.). If it includes dub, great, but it might be worth it to have a
> separate nature for that. CMake (and other theoretical tools) would then
> just add the D support nature to handle the D files and use the existing
> build support. Projects created through DDT itself could add the dub
> nature by default (FWIW, I don't think CDT generates CMake-based
> projects out of the box either).
>
> Basically, make DDT suitable for using it with other projects which
> don't use dub because it doesn't suit the upstream project whether it be
> because the project is more than some D code, YAML is preferred to JSON
> or whatever.
>
> Take my gunroar[2] repo for example. It's mainly D code, but there is
> some C and Java in the src/android directory. If one were working in
> Eclipse with it, it would be nice to support using CDT features for the
> C code, the native Java support for the Java code, DDT for the D code,
> and the build button to put it all together.
>
> --Ben
>
> [1]This is based on my experience where enabling the Android bits in an
> Eclipse project generated by CMake is to allow users to add natures to
> the generated .project file using the ECLIPSE_EXTRA_NATURES global
> property.
> [2]https://github.com/mathstuf/abagames-gunroar
>
Yes, there is a D nature for Eclipse's .project:
org.dsource.ddt.ide.core.nature
Curiously though, a few DDT features will work fine without that nature,
namely semantic features (code completion, go to definition, etc.). They
even work with external files (files not in an Eclipse project), as long
as they are part of a DUB bundle (known in DUB as a "package").
This is because, for example, when invoking code completion on a D
source, DDT will try to find a "dub.json" file in the tree of parent
dirs of the D file. Once it finds it, it will analyze the source
structure of that bundle and all its dependency bundles (using `dub
describe`, and then code completion will have all module information
correctly available. And the caching of the semantic engine will still
work just fine. :)
As for not using DUB. Hum, I could add feature of a flag to a project
options to prevent it from using DUB (the executable). This way the DUB
build would be a no-op, and `dub describe` would not be run either. You
would still have to use the dub.json file to describe source folders
though. (Again there's no sense in making a new format to describe this)
As for your gunroar example. I don't know how CMake generates an Eclipse
project, but that scenario that sounds like it should have multiple
Eclipse projects generated. (One for D code, one for C bits, another for
Java bits) Trying to shove everything in one project wont work properly.
(The directory structure of gunroar might have to be changed a bit to
accommodate that though)
An Eclipse project is a build "unit", and is not the equivalent of a
VisualStudio solution. An Eclipse workspace is much more akin to a VS
solution.
--
Bruno Medeiros
https://twitter.com/brunodomedeiros
More information about the Digitalmars-d-announce
mailing list