Feedback

To centralize the entire user feedback I decided to put up an extra page for it.

So please feel free to leave recommendations, ideas, hints to buggy things we didn’t notice while developing etc in the comments section down below!

If you want to chat with us in an IRC, join our #d.mono-d channel @irc.freenode.net!

A bug tracker is located over here.

Note that there’s a special issue tracker exclusively for the code completion-related stuff!

If you want to contribute some code, just fork our repo at https://github.com/aBothe/Mono-D and send us a pull request.

261 Comments

  • MrSmith
    June 15, 2013 - 9:39 pm | Permalink

    Hello, i am getting not clickable file tabs. In such situation helps using Alt+ or restarting IDE.

  • Jim
    June 13, 2013 - 2:55 am | Permalink

    I installed monodevelop.x86.Master.tar.xz. I loaded a solution
    and there is no text in the editor. There is a tab with the file
    title. This worked ok in version 3.0.3.2. Everything else looks
    great so far.`

    • alex
      June 13, 2013 - 2:17 pm | Permalink

      There are plenty of issues with gtk and that editor unfortunately..can’t immediately help there :/

    • June 14, 2013 - 12:16 am | Permalink

      The no text in editor result was run on Netrunner, with both Gnome and KDE desktop varieties. I gave it a try on Linux Mint with Cinnamon desktop and the problem is gone.

  • Aaron
    May 31, 2013 - 6:23 pm | Permalink

    I set up all of the tools (Xamarin Studio 4.0.8, Windows 8 x64) for D, and the project builds successfully when I run a console application. However, when I press the “play” button, the external console is blank. What can I do here?

    • alex
      May 31, 2013 - 6:24 pm | Permalink

      Also when just hitting “Execute without debugger”? Okay, there’s no debugger for native apps on windows, but this isn’t what it’s supposed to do, obviously. I’m gonna try it on my own now.

      • Aaron
        May 31, 2013 - 6:40 pm | Permalink

        I’m sorry Alex, it was the program I was running… I should have provided input. Beginner’s error :P Thanks for the quick reply though, and this is, by far, the best IDE option available for D!

        • alex
          May 31, 2013 - 6:53 pm | Permalink

          Oh okay, nevermind, anyway, for further issues, please tell me! :)

    • Baz
      June 10, 2013 - 3:47 pm | Permalink

      Hello, This is a kind of feature request:

      It would be nice if “private:” “public:” would be a folding source such as when we use the syntax “private{}” “public{}”.

  • Puming Zhao
    May 24, 2013 - 9:32 am | Permalink

    I’m using Xamarin Studio 4.0.8 with Mono-D 0.5.2.5 under WIndows 7 64bit system,
    When I open a D project, I get this error:

    Load operation failed. Method not found: ‘Int32 System.Environment.getCurrentManagedThreadId()’.

    Does mono-d support win64?

    • alex
      May 24, 2013 - 10:26 am | Permalink

      Hi, is this the entire stack trace dump? I need at least a code location where it was thrown at – or a hint to some code location. Could you find it out, please?
      Was it occuring first with the release of 0.5.2.5, or was it also happening with older releases? If so, you can always downgrade to that older version via http://mono-d.alexanderbothe.com/repo

      Yes, Win64 is supported, of course! :)

      • Puming Zhao
        May 24, 2013 - 12:33 pm | Permalink

        Sorry I didn’t post the whole trace. It was in the system at my office, and now I’m back home for weekend, so I’ll post it next Monday. I don’t know whether it’s ok with older versions, as I was setting up a new Windows system and everything was new (before that I was using win32 and linux and everything works fine).

        • rabbitisle
          May 25, 2013 - 1:40 pm | Permalink

          I’m having the same issue and filed an issue in github. I have copied the whole stack trace there.

          • alex
            May 25, 2013 - 1:47 pm | Permalink

            Okay, as I wrote on github already, it seems to be caused by the recent switch to .Net v4.5 – I’ll try to downgrade now, then it should work again.

  • Vushu
    May 14, 2013 - 5:27 pm | Permalink

    Hi I got a little problem, I think it’s the Mono IDE.
    when I try to make these symbols ” ~ ” or ” ^ ” It won’t show, is there a way to fix this?

    because i can’t write this line of code in mono.

    string[] names;
    names ~= “Jumaji”;
    names ~= “Jumper”;

    • alex
      May 14, 2013 - 5:30 pm | Permalink

      Hi, Right-Click the editor and change the input method to ‘Simple’, that should work :)

  • Jebbs
    May 11, 2013 - 4:17 am | Permalink

    Is there any way to put in a path to import libraries? I see the section for including stuff for code completion, but not to give it a search path for when it looks for my .lib files.

    • alex
      May 11, 2013 - 9:30 am | Permalink

      I wasn’t thinking about creating an explicit lib path field back then..just hack the extra linker options and put in a reference :)

  • Kozzi
    May 2, 2013 - 8:36 am | Permalink

    When I try write two dot chars. It always use first item in autocompletion list. For eg.: I try to write someArray[0 .. $] but I get:
    someArray[0 abstract.abstract. $]. I remember there has been some option in monodevelop before version 4.0, but now I cant find it.

    • alex
      May 2, 2013 - 9:12 am | Permalink

      Open the MonoDevelop options -> D -> Check “Enable suggestive completion mode”

      • Kozzi
        May 4, 2013 - 9:37 pm | Permalink

        Thx a lot, I try almost everything, but not this one :)

  • JRq
    April 30, 2013 - 2:25 am | Permalink

    Problem is, gdc being the beast that it is, isn’t compatible with the -L-l command line flag. :) gdc just wants e.g. -lgphobos2 rather than dmd’s -L-lgphobos2. So for linux, it’s probably necessary to support both of these syntaxes.

    • alex
      April 30, 2013 - 9:12 am | Permalink

      Good to know, thank you for the hint! I haven’t installed gdc tbh but I gotta see how to do a ‘special’ treatment for gdc then..is it also the case for ldc?

  • dfans
    April 26, 2013 - 4:51 am | Permalink

    Can you use rsp file to compile project in Windows (like VisualD)? My project contains too many files to compile in one command line!

    • alex
      April 26, 2013 - 5:58 am | Permalink

      You can override the project build command in the project settings, under Custom Commands, or you may use dub for building a project – just open the package.json in MD and it’ll open up a virtual solution/project — it’s a bit buggy still, though.

      • dfans
        May 3, 2013 - 3:19 am | Permalink

        That’s impractical, that means I must maintain my own build script! I like monod, even without debugging. But I still use visualD, because monod cannot build my project.

  • JIO
    April 25, 2013 - 5:31 pm | Permalink

    Ich bekomme öfters einen Fehler:
    einmahl nach ‘”stringliteral”.’ und nach ‘foreach(‘
    anschliesend relativ oft, wenn das autocpmplete starten sollte:
    System.NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
    bei MonoDevelop.D.Completion.AstUpdater.get_Ast()
    bei MonoDevelop.D.Completion.AstUpdater.BeginUpdate()
    bei MonoDevelop.D.DEditorCompletionExtension.KeyPress(Key key, Char keyChar, ModifierType modifier)
    bei MonoDevelop.Ide.Gui.Content.TextEditorExtension.KeyPress(Key key, Char keyChar, ModifierType modifier)
    bei MonoDevelop.D.Formatting.Indentation.DTextEditorIndentation.KeyPress(Key key, Char keyChar, ModifierType modifier)
    bei MonoDevelop.Ide.Gui.Content.TextEditorExtension.KeyPress(Key key, Char keyChar, ModifierType modifier)
    bei MonoDevelop.Ide.Gui.Content.TextEditorExtension.KeyPress(Key key, Char keyChar, ModifierType modifier)
    bei MonoDevelop.Ide.Gui.Content.TextEditorExtension.KeyPress(Key key, Char keyChar, ModifierType modifier)
    bei MonoDevelop.Ide.Gui.Content.TextEditorExtension.KeyPress(Key key, Char keyChar, ModifierType modifier)
    bei MonoDevelop.Ide.Gui.Content.TextEditorExtension.KeyPress(Key key, Char keyChar, ModifierType modifier)
    bei MonoDevelop.Debugger.ExceptionCaughtTextEditorExtension.KeyPress(Key key, Char keyChar, ModifierType modifier)
    bei MonoDevelop.SourceEditor.ExtensibleTextEditor.ExtensionKeyPress(Key key, UInt32 ch, ModifierType state)

    • JIO
      April 25, 2013 - 5:37 pm | Permalink

      Die Datei lässt sich nun nitcht mehr im Projekt öffnen:

      System.NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
      bei D_Parser.Parser.DParser.ForeachStatement(IBlockNode Scope, IStatement Parent)
      bei D_Parser.Parser.DParser.Statement(Boolean BlocksAllowed, Boolean EmptyAllowed, IBlockNode Scope, IStatement Parent)
      bei D_Parser.Parser.DParser.BlockStatement(INode ParentNode, IStatement Parent)
      bei D_Parser.Parser.DParser.FunctionBody(DMethod par)
      bei D_Parser.Parser.DParser.Decl(Boolean HasStorageClassModifiers, IBlockNode Scope)
      bei D_Parser.Parser.DParser.Declaration(IBlockNode Scope)
      bei D_Parser.Parser.DParser.DeclDef(DBlockNode module)
      bei D_Parser.Parser.DParser.ClassBody(DBlockNode ret, Boolean KeepBlockAttributes, Boolean UpdateBoundaries)
      bei D_Parser.Parser.DParser.ClassDeclaration(INode Parent)
      bei D_Parser.Parser.DParser.Declaration(IBlockNode Scope)
      bei D_Parser.Parser.DParser.DeclDef(DBlockNode module)
      bei D_Parser.Parser.DParser.Root()
      bei D_Parser.Parser.DParser.Parse(Boolean ParseStructureOnly, Boolean KeepComments)
      bei D_Parser.Parser.DParser.Parse()
      bei MonoDevelop.D.Parser.DParserWrapper.Parse(Boolean storeAst, String file, TextReader content, Project prj)
      bei MonoDevelop.D.Parser.FoldingParser.Parse(String fileName, String content)
      bei MonoDevelop.SourceEditor.SourceEditorView.RunFirstTimeFoldUpdate(String text)
      bei MonoDevelop.SourceEditor.SourceEditorView.Load(String fileName, Encoding loadEncoding)
      bei MonoDevelop.SourceEditor.SourceEditorView.Load(String fileName)
      bei MonoDevelop.Ide.Gui.LoadFileWrapper.Invoke(String fileName)

  • Trey Brisbane
    April 23, 2013 - 4:53 am | Permalink

    Hi there,

    Just installed Mono-D v0.5.2.2 and now I can’t load or create any Mono-D projects. I get the following error:

    Load operation failed. Could not load file or assembly ‘Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=null’ or one of its dependencies. The system cannot find the file specified.

    Stack trace:

    System.IO.FileNotFoundException: Could not load file or assembly ‘Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=null’ or one of its dependencies. The system cannot find the file specified.
    File name: ‘Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=null’
    at MonoDevelop.D.Projects.DProject.OnEndLoad()
    at MonoDevelop.Projects.SolutionItem.MonoDevelop.Projects.ILoadController.EndLoad()
    at MonoDevelop.Projects.Extensions.LoadOperation.End()
    at MonoDevelop.Projects.Extensions.ProjectExtensionUtil.EndLoadOperation()
    at MonoDevelop.Projects.Formats.MSBuild.SlnFileFormat.ReadFile(String fileName, MSBuildFileFormat format, IProgressMonitor monitor)
    at MonoDevelop.Projects.Formats.MSBuild.MSBuildFileFormat.ReadFile(FilePath file, Type expectedType, IProgressMonitor monitor)
    at MonoDevelop.Projects.ProjectService.ReadFile(IProgressMonitor monitor, String file, Type expectedType, FileFormat& format)
    at MonoDevelop.Projects.ProjectService.InternalReadWorkspaceItem(String file, IProgressMonitor monitor)
    at MonoDevelop.Projects.DefaultProjectServiceExtension.LoadWorkspaceItem(IProgressMonitor monitor, String fileName)
    at MonoDevelop.Projects.ProjectServiceExtension.LoadWorkspaceItem(IProgressMonitor monitor, String fileName)
    at MonoDevelop.Projects.ProjectServiceExtension.LoadWorkspaceItem(IProgressMonitor monitor, String fileName)
    at MonoDevelop.Projects.ProjectServiceExtension.LoadWorkspaceItem(IProgressMonitor monitor, String fileName)
    at MonoDevelop.Projects.ProjectServiceExtension.LoadWorkspaceItem(IProgressMonitor monitor, String fileName)
    at MonoDevelop.Projects.ProjectServiceExtension.LoadWorkspaceItem(IProgressMonitor monitor, String fileName)
    at MonoDevelop.Projects.ProjectServiceExtension.LoadWorkspaceItem(IProgressMonitor monitor, String fileName)
    at MonoDevelop.Projects.ProjectService.ReadWorkspaceItem(IProgressMonitor monitor, String file)
    at MonoDevelop.Ide.RootWorkspace.BackgroundLoadWorkspace(IProgressMonitor monitor, String filename, Boolean loadPreferences, Boolean reloading)

    WRN: Assembly binding logging is turned OFF.
    To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
    Note: There is some performance penalty associated with assembly bind failure logging.
    To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].

    Any known fix? :P

    Cheers, Trey.

    • alex
      April 25, 2013 - 11:59 am | Permalink

      Just install the 0.5.2.3 version. It wasn’t referencing the Newtonsoft.Json assembly

  • zhaopuming
    April 10, 2013 - 3:32 pm | Permalink

    Indentation looks weird in files starting with

    #!/usr/bin/rdmd –shebang –main -I. -unittest

    • alex
      April 10, 2013 - 3:37 pm | Permalink

      Never noticed that. Thank you for the hint :)

  • Eko Wahyudin
    March 24, 2013 - 3:42 pm | Permalink

    Hi alex,
    I have xamarin studio 4.0, and I’m install Mono-D.
    but i can’t open .d files. it’s throw an exception below

    System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. —> System.TypeLoadException: Could not load type ‘Mono.TextEditor.Highlighting.ResourceStreamProvider’

    do you have any solution?

    thanks :)

    • Eko Wahyudin
      March 24, 2013 - 3:52 pm | Permalink

      ups, sorry, I think flamaros already ask about this issue.

  • D-ratiseur
    March 24, 2013 - 3:47 am | Permalink

    Hello, I had left two comments a few days ago about a problem of folding. It seems to append when the parser, detects a false error, so far it always appears when comparing the dereference of a pointer, for example:

    if (*AnObjetct !is null) is detected as an error, while syntaxically, we clearly test the ‘non-nullity’ of the dereference of a pointer and not the pointer ‘non-nullity’ (and btw dmd2 compiles it). With ( (*AnObjetct) !is null) your parser accept the expression an the code folding works again.

    (win7, XS 4.03, mono-D 0.5.2)

    So is it normal that the folding fails one every single error ? (is it an unexpected behaviour of Xs or of your plug-in ?)

    Would it be possible to get the false syntax error mentioned above fixed in a future update ?
    Thx.

    • alex
      March 24, 2013 - 5:38 am | Permalink

      The *asdf !is null issue has been solved a few hours ago – because you weren’t the only one who noticed this issue :)
      Well, I think it’s the initial generation of folding regions that doesn’t work for syntactically invalid code.. afterwards, so after the code has been parsed once, it actually is keeping the fold regions.. Dunno how to handle this.

  • Flamaros
    March 23, 2013 - 4:20 pm | Permalink

    I can’t open my D files anymore after an updgrade to version 0.5.2.

    I am getting this exception :

    System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. —> System.TypeLoadException: Could not load type ‘Mono.TextEditor.Highlighting.ResourceStreamProvider’ from assembly ‘Mono.TextEditor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null’.
    at (wrapper managed-to-native) System.Reflection.MonoCMethod:InternalInvoke

    • alex
      March 23, 2013 - 4:24 pm | Permalink

      It’s because you don’t have XamarinStudio 4.0.2 – The guys from Xamarin have fucked up the entire releasing procedure on Linux (and partly on Mac) because they’ve increased the Mono version required for launching XS without releasing a newer Mono version on Linux. Unfortunately, there is no other possibility for Linux users to manually build Mono and XS OR you may downgrade Mono-D again.
      http://mono-d.alexanderbothe.com/?p=923

  • Flamaros
    March 17, 2013 - 10:41 pm | Permalink

    I have a little issue with the data location. It seems neither the solution nor project location files option are used to set the working directory of binary.

    I need a way to specify the data location, because I am using a relative path in my code to load resources. Did I miss something?

    • alex
      March 17, 2013 - 10:43 pm | Permalink

      Uhm, it’s using the binary output folder by default. I haven’t seen a need for manually overriding the current work directory though.

      • Flamaros
        March 19, 2013 - 6:02 pm | Permalink

        I have some resources for my application I access with a relative path. I can’t put output dir in data folder due to conflict between debug and release binaries, I think moving output dir also move all temp files like *.o files not just the application executable.

        If I am able to move only the executable, it will work directly.
        Or I may use a parameter when I launch my application from monoD that indicate the data path.

        • alex
          March 19, 2013 - 6:18 pm | Permalink

          Yes you can – just go to the project options and alter the output path. Then it puts the executable right into that directory. You may enter ../build or so, it’ll be dynamically extended to an absolute path afterwards when building.

  • Moritz Maxeiner
    March 17, 2013 - 5:42 pm | Permalink

    Hi, when I use extra linker arguments such as -ldl, e.g. the poject file contains
    -ldl
    dmd will be invoked with “-ldl” instead of “-L-ldl”, which is incorrect
    since dmd expects extra linker arguments to be prefixed with “-L” to be identified as such (which should not be necessary in mono-d as they are already identified as linker arguments).

    • alex
      March 17, 2013 - 7:54 pm | Permalink

      An issue, indeed. Implemented it and gonna upload a patch soon.

  • kettle
    March 16, 2013 - 11:19 am | Permalink

    Hello there! I’ve been using Mono-D for almost 1 month and I really like it.
    My 2 cents of feedback:

    -linking library could have just one small improvement. Maybe we could add a “linker library path list” like we have for includes? I know libraries are supposed to be installed in the system folder, but when I’m developing I’d rather have the WIP libraries in my /home/ folder :) . Right now I’m manually setting -L option as additional linker command. This ain’t a big issue but maybe something you might consider.

    -It took me a while to understand how to enable GDB: I had to install an additional package from repository, so it was really simple. Too bad I spent some time trying to figure out why gdb support was not listed in the Monodevelop Add-In manager :P May I suggest? Write somewhere in the “install” or “about” page: «To enable debug, you might need to install an additional package from your linux repository» :)

    TY so much for this IDE. Without it, I would have never started programming in D :)

  • March 4, 2013 - 7:14 pm | Permalink

    Nope, same problem when I tried in a VirtualBox with Linux Mint 14 :(

  • March 4, 2013 - 6:56 pm | Permalink

    Sorry, the following sentence on the install page, I’m not totally sure about how to do:
    “Currently, you need to set the distribution channel back to oneiric in order to access gtk-sharp2.” ?

    … since, the command:”sudo add-apt-repository …” does not seem to add anything to /etc/apt/sources.list ? … so then, where can I change the distribution channel?

    • March 4, 2013 - 6:58 pm | Permalink

      Ah, never mind, found it!
      (sources.list.d/keks9n-monodevelop-latest-quantal.list)

      • alex
        March 4, 2013 - 7:03 pm | Permalink

        I refered to the repository management UI where you could select the distribution channels of a ppa or so – which should definitely exist when using Mint or Ubuntu ;)

  • Jio
    March 4, 2013 - 2:21 pm | Permalink

    Ist egal ob U ein union oder struct ist. Führt beides zum gleichen Ergebnis.

    • alex
      March 4, 2013 - 3:15 pm | Permalink

      Ich kümmer mich nachher mal darum.

  • Jio
    March 3, 2013 - 8:44 pm | Permalink

    Erst mal vielen Dank für das tolle Projekt!
    Beim Autocomplete scheint es ein Problem mit templates und Arrays zu geben:
    struct S {
    U!(float, 5, 6) u;
    }

    union U (T, uint CONST1, uint CONST2) {
    T[CONST1 * CONST2] _array; // Vermutlich das Problem
    }

    unittest {
    U!(uint, 5, 6) u;
    S s;
    u. //Autocomplete: alignof, init, mangleof, sizeof, stringof
    s.u. //Autocomplete: _array, classinfo
    }

    Wenn man also “u.” schreibt wird nichts außer “alignof, init, mangleof, sizeof, stringof” vorgeschlagen. Bei “s.u.” scheint aber alles zu funktionieren

    • alex
      March 4, 2013 - 1:25 am | Permalink

      Danke für das Feedback!
      Hab unions bis dato noch nicht wirklich durchschaut bzw genutzt – wusste damit bislang relativ wenig anzufangen, auch wenn hier der Fehler sicher in der Templateparameter-deduction liegt. Mal gucken, danke für den Bericht! :)

    • alex
      March 4, 2013 - 4:53 pm | Permalink

      Hab eben den Code bei mir reingepastet – sowohl bei u. als auch s.u. erscheinen alle items, darunter _array. Hmm. Auf Mono-D 0.5.1.3 hast du schon geupdated? Stehen vor diesem Code noch andere gleichnamige Items oder so?

  • March 2, 2013 - 10:22 pm | Permalink

    Hi,

    I got Xamarin and Mono-D 0.5.1.3 up running now on Linux Mint 13 (64bit). I can not build anything, not even a simple program like:

    import std.stdio;

    void main() {
    foreach(line; stdin.byLine()) {
    writeln("Got input line: ", line);
    }
    }

    The output I get is:

    Building: dtest (Debug)
    Performing main compilation...

    ---------------------- Done ----------------------

    Build failed. Object reference not set to an instance of an object
    Build: 1 error, 0 warnings

    (I’m using DMD64 v2.061 … from the ubuntu repos if I recall correctly …)

    • alex
      March 3, 2013 - 1:52 am | Permalink

      Lol. Always nice to have a null-ref exception without a stacktrace or some other kind of message :/ – Well as I recently tested the stuff under an x86 Mint 14 it worked fine.

      • March 3, 2013 - 2:31 am | Permalink

        Hmm, well, creating a project and a “solution”, made me able to at least build and run! :P

        Only problem, is that now the “Run > Start Debugging” menu options is greyed out :(

        • March 3, 2013 - 2:50 am | Permalink

          I’m a bit afraid I might have messed up the debug arguments … although what talks against that is that the debug option is NOT grayed out when I am NOT in an open solution or project!

          Anyways, will see if there’s any way to restore the debug argument settings to default. Any hints about how to do that are welcome!

          • alex
            March 3, 2013 - 2:54 am | Permalink

            There’s a reset button that even asks you again whether you want to reset the arguments – uhm, I haven’t wondered if it’s possible to run/debug programs without an extra solution for it yet…will see.

          • March 3, 2013 - 3:07 am | Permalink

            Nope. Managed to restore the settings now, but nothing changed. Debug menu item is grey when having a project/solution open.

            • alex
              March 3, 2013 - 1:44 pm | Permalink

              I’ve got no idea how to fix this, unfortunately.

            • March 4, 2013 - 1:47 pm | Permalink

              Yeah, maybe will have to try upgrading to Mint 14 :P But big thanks for the very quick replies! It is really appreciated, great job! :)

  • stanislav
    February 26, 2013 - 12:38 pm | Permalink

    have problem with installation mono-d on monodevelop-latest from version 1345013906, on ubuntu 12.04
    screenshot http://i076.radikal.ru/1302/a7/49efda55ed89.png

    • alex
      February 26, 2013 - 1:42 pm | Permalink

      This is because I only support the stable version of MonoDevelop. I recently dropped the support of all kinds of unstable/self-built versions. Please download the new version via the download link on the installation page, unzip the package and start Xamarin Studio via mono (…)/XamarinStudio.exe

  • andrea
    February 14, 2013 - 12:31 am | Permalink

    Is there a way to silent the annoying messagebox saying app is still running (in console)? I know it’s running (it’s actually waiting for a key to exit) and I’m compiling/running a new one so, yes, close the old one is still running :)

    • alex
      February 14, 2013 - 12:34 am | Permalink

      In which use case is this message box popping up? I’ve never experienced this before ;) – Oh so you want to recompile your program while the app is still running..erm, dunno how to do this, but I guess it’s rather MonoDevelop-related, because I think that I haven’t built such a notification :)

  • Linden
    January 31, 2013 - 10:49 pm | Permalink

    Hmm…I’m getting errors about missing mono dlls when trying to build with the extras and I can’t find a place to get them. Could you please post an older version of mono-d for monodevelop 3.0.3.2?

    • alex
      January 31, 2013 - 10:51 pm | Permalink

      I think I never released any version for this monodevelop version, sorry.

      • Linden
        January 31, 2013 - 11:01 pm | Permalink

        Ok, thanks anyway. I could have sworn there was a version that worked with it about a month ago.

  • Kaylan
    January 31, 2013 - 7:14 pm | Permalink

    I cant build a project. I get the error “Build failed, input string was not in a correct format” And code completion doesnt work. Well, it only works for built in types, ect. But nothing from the standard library. I tried reinstalling but it didnt help.

    • alex
      January 31, 2013 - 7:17 pm | Permalink

      You’re working on Linux or Mac, right? Well I’ve discovered that dmd is strictly enforcing cmd-line argument separators to be exactly one space large. Though I’ve worked on this a month ago I was able to improve many situations of building..but well, probably not all. Could you send me the entire raw build command, please?

      • Kaylan
        January 31, 2013 - 9:39 pm | Permalink

        Im on windows 7. I hope this is what you wanted. I think i remember having an error like this before but i cant remember why
        C:\D\dmd2\src\druntime\import.d is being read as a file.

        Building Solution: HelloDWorld (Debug)

        Building: HelloDWorld (Debug)

        Performing main compilation…

        Current dictionary: C:\Users\Kaylan\Documents\HelloDWorld\HelloDWorld

        C:\D\dmd2\windows\bin\dmd.exe -debug -gc “main.d” “C:\D\dmd2\src\druntime\import” “C:\D\dmd2\src\phobos” “-odobj\Debug” “-ofC:\Users\Kaylan\Documents\HelloDWorld\HelloDWorld\bin\Debug\HelloDWorld.exe”

        Error: cannot read file C:\D\dmd2\src\druntime\import.d

        ———————- Done ———————-

        Build successful.
        Build failed. Input string was not in a correct format.

        • alex
          January 31, 2013 - 9:44 pm | Permalink

          On Win7? Well there’s a double space in between. Anyway it’s not marking the includes as actual includes but normal files. Hmm.

  • Moritz Maxeiner
    January 30, 2013 - 10:35 pm | Permalink

    Thanks for the fast reply,
    I’ll try with 3.1.0 then, but I’m sorry I don’t know what you mean with “entire code base”.
    I built and installed all the mentioned packages normally, without deselecting anything.

  • angel
    January 10, 2013 - 8:34 pm | Permalink

    MonoDevelop 3.1.0 on Ubuntu 12.04.
    Latest Mono-D plugin.
    Cannot open any D file:

    An error has occured:
    The file ‘…hello.d’ could not be opened. Object reference not set to an instance of an object
    Details:
    System.NullReferenceException: Object reference not set to an instance of an object
    at MonoDevelop.D.Parser.DParserWrapper.BuildModuleName (MonoDevelop.Projects.ProjectFile pf) [0x00000] in :0

    • alex
      January 10, 2013 - 9:40 pm | Permalink

      Okay, let me see

    • alex
      January 11, 2013 - 9:31 am | Permalink

      Reinstall Mono-D. Then it might be fixed.

    • Linden
      January 29, 2013 - 8:54 pm | Permalink

      I’m getting the same problem with a different error. Whenever I attempt to open a .d file, I get the error below. I’m running a custom built monodevelop 3.1.0 (with only the core and gdb) on ubuntu 12.10, latest version of mono-d. Any ideas?

      System.TypeLoadException: A type load exception has occurred.
      at MonoDevelop.SourceEditor.SourceEditorView.RunFirstTimeFoldUpdate (System.String text) [0x00025] in /home/lindenk/monodevelop/monodevelop/monodevelop/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorView.cs:513
      at MonoDevelop.SourceEditor.SourceEditorView.Load (System.String fileName, System.Text.Encoding loadEncoding) [0x000d4] in /home/lindenk/monodevelop/monodevelop/monodevelop/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorView.cs:583
      at MonoDevelop.SourceEditor.SourceEditorView.Load (System.String fileName) [0x00000] in /home/lindenk/monodevelop/monodevelop/monodevelop/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorView.cs:502
      at MonoDevelop.Ide.Gui.LoadFileWrapper.Invoke (System.String fileName) [0x000f8] in /home/lindenk/monodevelop/monodevelop/monodevelop/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Workbench.cs:1126

      • alex
        January 29, 2013 - 10:49 pm | Permalink

        “A type load exception has occurred.” obviously says that building the Core and Gdb only isn’t sufficient. You definitely need to build the addins too in order to have full functionality.

        • Moritz Maxeiner
          January 30, 2013 - 9:57 pm | Permalink

          I get the same error and have installed the latest released versions of mono (3.0.3), mono-addins (0.6.2), mono-tools (2.11), monodevelop(3.1.1), monodevelop-debugger-gdb(3.1.1) as released here:
          http://origin-download.mono-project.com/sources/
          Mono-D 4.8 worked, though.

          • alex
            January 30, 2013 - 10:05 pm | Permalink

            MonoDevelop 3.1.1 isn’t but only the latest stable version (3.0.6) OR the master version (3.1.0) [i.e. downloaded from github] is supported. And even then you do have to build the entire code base, not only the core and gdb.

            • Moritz Maxeiner
              January 30, 2013 - 10:37 pm | Permalink

              Thanks for the fast reply,
              I’ll try with 3.1.0 then, but I’m sorry I don’t know what you mean with “entire code base”.
              I built and installed all the mentioned packages normally, without deselecting anything.

              PS: Sorry for the out-of-context double-post, you can just delete the other one

            • alex
              January 30, 2013 - 10:41 pm | Permalink

              It’s been related to Linden’s message because he mentioned that he built the core and the gdb extension only.
              Anyway, I’ve tested the latest mono-d release on 3 configurations now: Win7 stable + self built and Linux Mint self built – and on with all configurations it launched flawless.

  • Kaylan
    November 3, 2012 - 6:00 am | Permalink

    Im having the same issue in mono-d as in D-IDE, i cant type any text in an editor window without causing the same IndexOutOfRange exception. And also, just like in D-IDE, it only happens if i create a new file in the project and try to type in it. The default file that is created with console projects works just fine. Here is the details readout of the error window. Its the EXACT same thing in D-IDE . Why in the hell is this happening to me?

    System.IndexOutOfRangeException: Index was outside the bounds of the array.

    at System.String.get_Chars(Int32 index)

    at D_Parser.DocumentHelper.GetOffsetByRelativeLocation(String Text, CodeLocation caret, Int32 caretOffset, CodeLocation target)

    at D_Parser.Completion.CtrlSpaceCompletionProvider.FindCurrentCaretContext(String code, IBlockNode CurrentScope, Int32 caretOffset, CodeLocation caretLocation, ParserTrackerVariables& TrackerVariables)

    at D_Parser.Completion.AbstractCompletionProvider.Create(ICompletionDataGenerator dataGen, IEditorData Editor, String EnteredText)

    at D_Parser.Completion.AbstractCompletionProvider.BuildCompletionData(ICompletionDataGenerator dataGen, IEditorData editor, String EnteredText)

    at MonoDevelop.D.Completion.DCodeCompletionSupport.BuildCompletionData(Document EditorDocument, IAbstractSyntaxTree SyntaxTree, CodeCompletionContext ctx, CompletionDataList l, Char triggerChar)

    at MonoDevelop.D.DEditorCompletionExtension.HandleCodeCompletion(CodeCompletionContext completionContext, Char triggerChar, Int32& triggerWordLength)

    at MonoDevelop.Ide.Gui.Content.CompletionTextEditorExtension.KeyPress(Key key, Char keyChar, ModifierType modifier)

    at MonoDevelop.D.DEditorCompletionExtension.KeyPress(Key key, Char keyChar, ModifierType modifier)

    at MonoDevelop.Ide.Gui.Content.TextEditorExtension.KeyPress(Key key, Char keyChar, ModifierType modifier)

    at MonoDevelop.Ide.Gui.Content.TextEditorExtension.KeyPress(Key key, Char keyChar, ModifierType modifier)

    at MonoDevelop.Ide.Gui.Content.TextEditorExtension.KeyPress(Key key, Char keyChar, ModifierType modifier)

    at MonoDevelop.Ide.Gui.Content.TextEditorExtension.KeyPress(Key key, Char keyChar, ModifierType modifier)

    at MonoDevelop.SourceEditor.ExtensibleTextEditor.ExtensionKeyPress(Key key, UInt32 ch, ModifierType state)

    • alex
      November 3, 2012 - 12:17 pm | Permalink

      It’s because I haven’t tested the new method to get caret offsets enough.. thanks for the report, it’ll be fixed today :)

      • Kaylan
        November 3, 2012 - 10:20 pm | Permalink

        Thanks Alex! So hows it coming? I guess ill se an update in the add-in manager right? I wont have to download the mpack again? Anyway no big deal, im just rambling. Im off work now, im board as shit with out a well working D invironment XD.

        • alex
          November 4, 2012 - 12:03 pm | Permalink

          Ah sorry mate that I haven’t uploaded a new pack yet – I’ve fixed the small bug though – but I’m currently updating the build routines for having better filtering for version/debug conditions..In the mean time, why not create a normal console project and leave at least a comment or something in the main file? :)
          And yes, a comfortable IDE lets one become lazy :P
          [Edit] When you’ve downloaded the mpack file manually you unfortunately need to update it on your own again and again – because it’s a special version for the “older” MonoDevelop version 3.0.4.7 – the current and unreleased version in the source repository is 3.0.5 – so I guess there won’t be that long time until that version will be released.
          Anyway, I’ll announce new versions here in the blog, so just check it regularly and everything will be fine :)

  • Daniel Fitzpatrick
    October 21, 2012 - 10:24 pm | Permalink

    Debug arguments for the compiler toolchain need to include -unittest by default in the appropriate places.

  • tim
    October 20, 2012 - 1:33 am | Permalink

    feature request:
    preview changes before a refactoring (or show lines where a change will occur; similar to “find references”) to prevent unintended or buggy behavior.

    potential bug:
    Note that when clicking on “find references”, it only shows references in the current file; even if the symbol is referred in another file (eg: a module level variable, or a static variable inside a class). However I’m pretty sure the info is there since refactoring works in those cases.

    • alex
      October 20, 2012 - 2:10 pm | Permalink

      Though I recently fixed another breaking bug in symbol renaming this is a good idea, indeed. I thought about doing it before either but couldn’t find the time to do it

  • tim
    October 20, 2012 - 1:26 am | Permalink

    feature request: format file (currently doesn’t do anything). It should indent the file according to syntax. Visual D and others support it.
    note that the existing indent functionality isn’t very useful: it adds indentation regardless of syntax.

    • alex
      October 20, 2012 - 2:08 pm | Permalink

      also a feature I’m still working on..

  • tim
    October 20, 2012 - 1:25 am | Permalink

    feature request: show mixin value in a tooltip (the mixins should be resolved after compiling the project)

    • alex
      October 20, 2012 - 2:07 pm | Permalink

      That’s a feature that I’m still working on – some expressions can be parsed already, but most of them are still left todo..especially CTFE, which isn’t implemented at all yet

  • David Gileadi
    September 7, 2012 - 9:38 pm | Permalink

    The installation instructions mention that the include paths on Mac OSX are the same as for linux, i.e. /user/include/… However, if you use the Mac OSX package installer from dlang.org it doesn’t put your includes there. Instead you can find the include source under /usr/share/dmd/src/. The correct include paths are:

    /usr/share/dmd/src/druntime/import
    /usr/share/dmd/src/phobos

    • alex
      September 7, 2012 - 11:39 pm | Permalink

      Okay thanks :) – well that’s mainly because I’m not working on Mac

  • Trikko
    September 5, 2012 - 9:46 am | Permalink

    I’ve got some problems with templates and build process. Sometimes when I change data inside templated function monodevelop does not recompile other files that use this one… And I need to force a full rebuild. Is it a known bug?

    • alex
      September 5, 2012 - 11:34 am | Permalink

      Yes this may happen sometimes, unfortunately. I don’t know how to solve that problem currently, I’ll put it on the todo list :)

  • Tommi
    August 29, 2012 - 7:48 am | Permalink

    I don’t know if this is a MD issue or if you have power over this:
    Adding @safe: or @trusted: or @system: to the file screws up the default indentation. E.g that’s the default indentation I get if write that without pressing any tabs (tabs appear before both braces which shouldn’t be there):

    @safe:

    void fun()
        {
            //caret
        }

    • alex
      August 29, 2012 - 12:08 pm | Permalink

      Well, it might be a bug that if you add multiple @attributes, the indentation grows – originally it was intended to indent the code that follows a label or colon-based attribute..I’ll do it later on :)

      • Tommi
        August 30, 2012 - 6:23 am | Permalink

        Also, this might be related: There’s an extra indentation, when inside a struct or a class, after typing the colon of a label like private: or package: or protected: or public:. Here’s the animation:

        [Frame:1]

        class MyClass
        {
        private
        }

        [Frame:2]

        class MyClass
        {
            private:
        }

        That’s not at least what I’m used to. E.g in Visual Studio, the exact opposite thing happens (after typing the colon):

        [Frame:1]

        class MyClass
        {
        private
        }

        [Frame:2]

        class MyClass
        {
        private:
        }

        • alex
          August 30, 2012 - 11:41 am | Permalink

          Until now I assumed that this was the ‘all-time wished’ behaviour. I mean, why not?^^

          • Tommi
            August 30, 2012 - 2:44 pm | Permalink

            According to wikipedia, that’s what class looks like:


            Partial Class MyClass
                Public Readonly Property Name() As String
                    Get
                        Return _name
                    End Get
                End Property
            End Class

            But we can always take a vote.

            • alex
              August 30, 2012 - 3:44 pm | Permalink

              When it’s come that far that I’ve rewritten the formatting engine entirely, everything will be made configurable for sure :)
              If you’ve got a cool and clean concept of how to reformat the entire document efficiently by using the abstract node tree, I ask you to post it here! :P

  • Tommi
    August 26, 2012 - 3:53 am | Permalink

    I’d like to make a low-priority improvement request: The parser doesn’t seem to recognize the syntax of lambdas if you omit the argument parentheses. E.g.


    immutable values = // () // parentheses omitted here
    {
    int[10] valuesTmp;
    foreach (i, ref value; valuesTmp)
    {
    value = i;
    }
    return valuesTmp;
    }();

    • alex
      August 26, 2012 - 11:33 am | Permalink

      Okay, it probably confuses the {} expression with a struct initializer. Will implement that today

    • alex
      August 26, 2012 - 3:13 pm | Permalink

      It’s fixed now. Just reinstall Mono-D tomorrow or so and the error will be gone :)

      • Tommi
        August 26, 2012 - 11:15 pm | Permalink

        Thanks, that was fast.

  • Tommi
    August 25, 2012 - 12:25 am | Permalink

    I just installed fresh MonoDevelop 3.0.3.5 and Mono-D 0.4.1.2. When I try to open any .d source file there’s an error:

    The file ‘D:\Documents\Projects\Test\Test\main.d’ could not be opened. Could not load file or assembly ‘ICSharpCode.NRefactory, Version=5.0.0.0, Culture=neutral, PublicKeyToken=d4bfe873e7598c49′ or one of its dependencies. The system cannot find the file specified.

    • alex
      August 25, 2012 - 12:34 am | Permalink

      This error is known. Due to another internal change of library version numbers I’m forced to use the latest beta versions of NRefactory, i.e. Version 5.0.0.0 – so the only solution is to build MD on your own, or wait for the next MD beta release, or remain at your current Mono-D version – have a look to http://mono-d.alexanderbothe.com/repo – there you’ll find couple of older versions. Sorry for any inconvenience :-/

      • Tommi
        August 25, 2012 - 2:23 am | Permalink

        Thanks, I chose to build MD 3.1.0. Seems to work fine now. To anyone interested, use the instructions found there: Building MonoDevelop

        NOTE: In building using MSBuild, I had to make a few changes to main\winbuild.bat file, so that it read:
        “C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe” Main.sln /property:Configuration=DebugWin32 /property:Platform=x86

  • edavis
    August 23, 2012 - 1:39 am | Permalink

    Just some feedback on the code completion. I was experimenting with coding an app using the derelict3 libraries, and while the IDE grabbed all of the sdl values and functions flawlessly, it also put them before more important things like int.

    Would it be possible to change the matching algorithm so that typing int results in an autocomplete of int rather than GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS?

    I think the problem might be case sensitivity…

    Thanks for the great work!

    • alex
      August 23, 2012 - 1:57 am | Permalink

      Sorry but unfortunately I don’t have got any access to that part of the completion framework :/ – lol, in D-IDE it selects ‘int’ automatically but in MonoDevelop it’s taking the big GL_… alias. I even don’t know where to start to change something related to this issue. You may file an issue either on xamarin or on the issue tracker – but it’ll be handled with very low priority in any way though.

      Anyway, thanks for the feedback – and for any further issues, just visit the bug tracker and file a report ;)

  • August 16, 2012 - 5:06 pm | Permalink

    After the update to 4.1.1 I receive this error during the project-making:

    Erstellen fehlgeschlagen. Can’t create project output directory bin/Release original exception:
    System.UnauthorizedAccessException: Access to the path “//bin/Release” is denied.
    at System.IO.Directory.CreateDirectoriesInternal (System.String path) [0x00000] in :0
    at System.IO.Directory.CreateDirectory (System.String path) [0x00000] in :0
    at System.IO.DirectoryInfo.Create () [0x00000] in :0
    at (wrapper remoting-invoke-with-check) System.IO.DirectoryInfo:Create ()
    at MonoDevelop.Projects.Project.OnBuild (IProgressMonitor monitor, MonoDevelop.Projects.ConfigurationSelector configuration) [0x00089] in /Users/builder/data/lanes/monodevelop-lion-monodevelop-3.0.3-branch/3d53e136/source/monodevelop/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/Project.cs:419

    Any suggestions?

    • August 16, 2012 - 5:11 pm | Permalink

      Okay, now MonoDevelop crashes immediately after opening a D project saying:


      System.NullReferenceException: Object reference not set to an instance of an object
      at D_Parser.Resolver.TypeResolution.TypeDeclarationResolver.Resolve (D_Parser.Dom.MemberFunctionAttributeDecl attrDecl, D_Parser.Resolver.ResolverContextStack ctxt) [0x00000] in :0
      at D_Parser.Resolver.TypeResolution.TypeDeclarationResolver.ResolveSingle (ITypeDeclaration declaration, D_Parser.Resolver.ResolverContextStack ctxt) [0x00000] in :0
      at D_Parser.Resolver.TypeResolution.TypeDeclarationResolver.Resolve (ITypeDeclaration declaration, D_Parser.Resolver.ResolverContextStack ctxt) [0x00000] in :0
      at D_Parser.Resolver.TypeResolution.TypeDeclarationResolver.Resolve (D_Parser.Dom.PointerDecl pd, D_Parser.Resolver.ResolverContextStack ctxt) [0x00000] in :0
      at D_Parser.Resolver.TypeResolution.TypeDeclarationResolver.ResolveSingle (ITypeDeclaration declaration, D_Parser.Resolver.ResolverContextStack ctxt) [0x00000] in :0
      at D_Parser.Resolver.TypeResolution.TypeDeclarationResolver.Resolve (ITypeDeclaration declaration, D_Parser.Resolver.ResolverContextStack ctxt) [0x00000] in :0
      at D_Parser.Resolver.TypeResolution.TypeDeclarationResolver.HandleNodeMatch (INode m, D_Parser.Resolver.ResolverContextStack ctxt, D_Parser.Resolver.AbstractType resultBase, System.Object typeBase) [0x00000] in :0
      at D_Parser.Resolver.TypeResolution.TypeDeclarationResolver.HandleNodeMatches (IEnumerable`1 matches, D_Parser.Resolver.ResolverContextStack ctxt, D_Parser.Resolver.AbstractType resultBase, System.Object TypeDeclaration) [0x00000] in :0
      at D_Parser.Resolver.TypeResolution.TypeDeclarationResolver.ResolveIdentifier (System.String id, D_Parser.Resolver.ResolverContextStack ctxt, System.Object idObject, Boolean ModuleScope) [0x00000] in :0
      at D_Parser.Resolver.TypeResolution.TypeDeclarationResolver.Resolve (D_Parser.Dom.IdentifierDeclaration id, D_Parser.Resolver.ResolverContextStack ctxt, D_Parser.Resolver.AbstractType[] resultBases, Boolean filterForTemplateArgs) [0x00000] in :0
      at D_Parser.Resolver.TypeResolution.TypeDeclarationResolver.Resolve (ITypeDeclaration declaration, D_Parser.Resolver.ResolverContextStack ctxt) [0x00000] in :0
      at D_Parser.Resolver.ASTScanner.UFCSCache.parseThread (System.Object pcl_shared) [0x00000] in :0
      at System.Threading.Thread.StartInternal () [0x00000] in :0

      • August 16, 2012 - 5:17 pm | Permalink

        Interestingly MonoDevelop was able to create a bin/release folder just seconds bevor the first crash. I think the project config file is corrupted. No time to investigate this further.

        Is there a better feedback / bugtracking solution for mono-d?
        Do you still use your gmail account @Alex? Haven’t seen you there for a while! :-(

        • alex
          August 16, 2012 - 6:24 pm | Permalink

          I’m mostly online on g+ – we better discuss this on the chat

  • egslava
    August 15, 2012 - 4:50 pm | Permalink

    Hello! Sorry for my English!
    I have a some bug:
    I “./configure make make install” MonoDevelop with GDB supporting (3.1.0 version of MonoDevelop). After this I try to install mono-d and get this error:
    http://rghost.ru/39801538

    My OS: XUbuntu 12.04 (x86_64).

    What can I do?

    • alex
      August 15, 2012 - 4:58 pm | Permalink

      Hi,
      There are some probably some build errors that occurred during building MonoDevelop. Could you check the build log please? Or are there other errors, perhaps during the ./configure script execution?
      It obviously seems that the CSharp Addin is broken somehow. nevertheless, this shouldn’t be that interfering with a Mono-D installation – just try to install it, if you need MonoDevelop for D development only :)

      • egslava
        August 16, 2012 - 7:53 am | Permalink

        This is a log of ./configure.
        http://pastebin.com/fbYZc12V

        I believe, this will help :(

        • alex
          August 16, 2012 - 10:48 am | Permalink

          ah, before building – have you updated the submodules of the monodevelop repo? so
          git submodule init
          and
          git submodule update
          . Then you should be able to build everything completely

  • August 10, 2012 - 12:55 pm | Permalink

    It seams that it is not necessary to add an additional repository URL to install mono-d on a mac (Mountain Lion – Mono-D version 3.0.3.5) anymore.

    Just select “Gallery -> All repositories” at the Add-in Manager and you’ll find the “D Language Binding”.

    • August 10, 2012 - 12:57 pm | Permalink

      Sorry, I meant MonoDevelop version 3.0.3.5 – not mono-D -.-’

      • alex
        August 10, 2012 - 5:20 pm | Permalink

        Yepp, but check the D options dialog right now – is it showing? There’s just been some Mono.Cairo confusion about that – that’s a reason I have to publish it on a second repository for Windows

        • August 11, 2012 - 9:56 am | Permalink

          You mean the D options at the mono develop’s “other” settings menu? Yep, everything seams to be in place. I was able to configure mono-D to compile and run my first D samples! :-)

  • gerleim
    July 25, 2012 - 3:04 pm | Permalink
    • alex
      July 25, 2012 - 6:28 pm | Permalink

      Ah okay, thx for the hint, fixed it already :)

  • Minas
    July 13, 2012 - 1:42 am | Permalink

    Hi Alex. In the installation page you mention that the include paths for mac os and linux are:

    /usr/include/d/dmd/druntime/import
    /usr/include/d/dmd/phobos

    I don’t know about mac, but on my linux distribution (Ubuntu 12.04, DMD 2.059) the paths are:

    /usr/include/x86_64-linux-gnu/dmd/druntime/import
    /usr/include/x86_64-linux-gnu/dmd/phobos

    Note: I’m using the 64 bit version of the compiler (I guess that’s why it’s in “x86_64″). Maybe you could mention the difference for the 32 bit and 64 bit dmd in the installation page. :)

    • alex
      July 13, 2012 - 8:11 am | Permalink

      Sure why not putting these paths into the manual though I think everyone should get the “druntime/import” and “phobos” thing :)

  • Limen
    July 10, 2012 - 4:06 pm | Permalink

    Hi,

    Is there some way in mono-D to use rdmd + compiler switches instead of dmd?

    I prefer to use rdmd because it figures out what files actually need to be compiled, instead of simply compiling all files included in the project (some of which might be broken but not used in the project at all).

    Also, how do I get mono-D to suggest methods from the current project for code completion?

    Thanks

    • alex
      July 10, 2012 - 5:21 pm | Permalink

      Hi,
      1) basically you could reconfigure the compiler configuration so it rather executes rdmd with one argument only (just see the “One Step build” arguments) – it is possible, and I also would like to create a preset so I’ll make it possible to use rdmd by default.
      Thanks for the idea! – I currently can’t want to say how this is made exactly, I’ll do it later on then.

      2) Suggest methods? It’s mostly a problem with incomplete and recently updated module caches..gotta see what’s wrong there. Will do it later on, I’m currently focusing on improving other stuff :)

  • LKD
    June 27, 2012 - 8:03 pm | Permalink

    This is seems like a great plugin so first of all thank you for creating it. However in MonoDevelop 3.0.3 on Mac I’m getting a fatal error with the plugin causes the entire program to crash. Any solutions would be appreciated.

    System.InvalidOperationException: out of sync
    at System.Collections.Generic.Dictionary`2+Enumerator[D_Parser.Dom.DMethod,D_Parser.Resolver.ResolveResult].VerifyState () [0x00000] in :0
    at System.Collections.Generic.Dictionary`2+Enumerator[D_Parser.Dom.DMethod,D_Parser.Resolver.ResolveResult].MoveNext () [0x00000] in :0
    at D_Parser.Resolver.ASTScanner.UFCSCache.FindFitting (D_Parser.Resolver.ResolverContextStack ctxt, CodeLocation currentLocation, D_Parser.Resolver.ResolveResult firstArgument, System.String nameFilter) [0x00000] in :0
    at D_Parser.Resolver.TypeResolution.UFCSResolver.TryResolveUFCS (D_Parser.Resolver.ResolveResult firstArgument, D_Parser.Dom.Expressions.PostfixExpression_Access acc, D_Parser.Resolver.ResolverContextStack ctxt) [0x00000] in :0
    at D_Parser.Resolver.TypeResolution.ExpressionTypeResolver.Resolve (D_Parser.Dom.Expressions.PostfixExpression_Access acc, D_Parser.Resolver.ResolverContextStack ctxt, D_Parser.Resolver.ResolveResult[] resultBases, IExpression supExpression) [0x00000] in :0
    at D_Parser.Resolver.TypeResolution.ExpressionTypeResolver.Resolve (D_Parser.Dom.Expressions.PostfixExpression ex, D_Parser.Resolver.ResolverContextStack ctxt) [0x00000] in :0
    at D_Parser.Resolver.TypeResolution.ExpressionTypeResolver.Resolve (IExpression ex, D_Parser.Resolver.ResolverContextStack ctxt) [0x00000] in :0
    at D_Parser.Resolver.TypeResolution.TypeDeclarationResolver.Resolve (D_Parser.Dom.TypeOfDeclaration typeOf, D_Parser.Resolver.ResolverContextStack ctxt) [0x00000] in :0
    at D_Parser.Resolver.TypeResolution.TypeDeclarationResolver.Resolve (ITypeDeclaration declaration, D_Parser.Resolver.ResolverContextStack ctxt) [0x00000] in :0
    at D_Parser.Resolver.TypeResolution.TypeDeclarationResolver.HandleNodeMatch (INode m, D_Parser.Resolver.ResolverContextStack ctxt, D_Parser.Resolver.ResolveResult resultBase, System.Object typeBase) [0x00000] in :0
    at D_Parser.Resolver.TypeResolution.TypeDeclarationResolver.HandleNodeMatches (IEnumerable`1 matches, D_Parser.Resolver.ResolverContextStack ctxt, D_Parser.Resolver.ResolveResult resultBase, System.Object TypeDeclaration) [0x00000] in :0
    at D_Parser.Resolver.TypeResolution.TypeDeclarationResolver.ResolveIdentifier (System.String id, D_Parser.Resolver.ResolverContextStack ctxt, System.Object idObject, Boolean ModuleScope) [0x00000] in :0
    at D_Parser.Resolver.TypeResolution.TypeDeclarationResolver.Resolve (D_Parser.Dom.IdentifierDeclaration id, D_Parser.Resolver.ResolverContextStack ctxt, D_Parser.Resolver.ResolveResult[] resultBases, Boolean filterForTemplateArgs) [0x00000] in :0
    at D_Parser.Resolver.TypeResolution.TypeDeclarationResolver.Resolve (ITypeDeclaration declaration, D_Parser.Resolver.ResolverContextStack ctxt) [0x00000] in :0
    at D_Parser.Resolver.ASTScanner.UFCSCache.parseThread (System.Object pcl_shared) [0x00000] in :0
    at System.Threading.Thread.StartInternal () [0x00000] in :0

    • alex
      June 27, 2012 - 8:13 pm | Permalink

      I bet it’s another racing-condition bug where it tries to build up a resolution cache but wants to enum through the array at the same time – let me handle that. Is it occurring after opening your project/launching MD, right?

      [Edit] Just reinstall. It should be fixed now. Thanks for the feedback! :)

      • LKD
        June 28, 2012 - 12:50 pm | Permalink

        Thanks Alex. I’ll check it this morning.

  • Lindenk
    June 21, 2012 - 6:45 pm | Permalink

    Good work so far! Also, if you ever have a chance to, another feature your could add would be compatibly with this – http://www.dsource.org/projects/visuald . I wouldn’t mind opening my D projects in visual studios when I’m using windows and in monodevelop when I’m using linux.

    • alex
      June 21, 2012 - 6:47 pm | Permalink

      Indeed a nice idea, will ask Rainer if there’s something like that possible later on.

  • Tommi
    June 21, 2012 - 4:25 pm | Permalink

    Can you get D code templates (code snippets) working? I’ve tried Options -> Code Templates -> Add code template in Group: D, Mime: text/x-d and while the snippet is selectable through Edit -> Insert Template… It doesn’t get created. There’s an error:
    Error in text editor extension chain
    at MonoDevelop.Ide.CodeFormatting.CodeFormatter.OnTheFlyFormat(Document doc, Int32 startOffset, Int32 endOffset)
    at MonoDevelop.Ide.CodeTemplates.CodeTemplate.FillVariables(TemplateContext context)
    at MonoDevelop.Ide.CodeTemplates.CodeTemplate.InsertTemplateContents(Document document)

    • alex
      June 21, 2012 - 6:18 pm | Permalink

      I’ve never used that feature, but let me see if I can (at least partly atm) make it work

      [Edit] How can I try to use it / where is the button / what addon do I have to install? Can’t find it anywhere in MonoDevelop 3.1.0

      • Tommi
        June 22, 2012 - 12:27 am | Permalink

        No add-ons required, I’m using MonoDevelop 3.0.3.2, where it’s Tools -> Options -> Text Editor -> Code Templates and there’s a button Add for adding a code snippet. I’ll try installing version 3.1 to see if it’s different.

        • alex
          June 22, 2012 - 1:36 am | Permalink

          Just reinstall the addin, it should be fixed now

          • Tommi
            June 22, 2012 - 9:58 am | Permalink

            Marvellous! Thanks a lot for such a quick support.

          • Tommi
            June 22, 2012 - 12:30 pm | Permalink

            There’s one big defect now though, which is that undo doesn’t work correctly once a snippet has been inserted (it’s messed up even after you’ve written something manually after the snippet was expanded).

            One smaller problem is that the custom snippets don’t show in the code completion window that opens automatically. But other than that it works as expected: you write the shortcut for your snippet (code completion window says “no matches”), press tab twice (that’s the trick) and your snippet gets inserted in place of the shortcut.

            • alex
              June 22, 2012 - 3:44 pm | Permalink

              I also noticed that it’s not restoring the templates I created recently, after a MD restart – so I assume that (except the missing listing in the completion window) this entire feature was left a bit unattended during the last couple of months.

            • Tommi
              July 12, 2012 - 3:25 pm | Permalink

              It’s all pretty much fixed now in MD 3.0.3.2

            • alex
              July 12, 2012 - 3:30 pm | Permalink

              Cool then :)

  • June 13, 2012 - 11:05 am | Permalink

    I have been keeping an eye on the updates. Using XP sp3, MonoDevelop 3.0.2 and D v0.4. I can compile and run a D program one time. If I try ctrl F5 a second time after termination of the first MonoDevelop stops running and needs ctrl alt del. All my compiler toolchains are set per spec.

    • alex
      June 13, 2012 - 12:03 pm | Permalink

      Hmm, it’s working on Win7 and probably everywhere else. Will try it on an XP vm now.

      [Edit] No, it’s working, tried it several times with version MD 3.0.3.1 – and it always built/executed it.

    • Damian
      June 14, 2012 - 4:04 pm | Permalink

      Could it be your antivirus software is interfering with the build process?

  • cmdtower
    June 4, 2012 - 8:23 pm | Permalink

    Hi,

    I’ve installed everything correctly, but continue to get:

    Build successful.
    Build failed. The system cannot find the file specified

    huh?

    Created new default project (win32 gui). Console project seemed to work fine.

    I’ve set up the toolchain correctly, it’s the standard
    C:\D\dmd2\windows\bin

    I’m confused. any help is appreciated.
    So far i like what i see.. it is better than VisualD since that does not support VisualAssistX.

    • alex
      June 4, 2012 - 8:36 pm | Permalink

      Hi,

      Same question from my side, uhm it probably is a missing resource compiler – you can get it from http://mono-d.alexanderbothe.com/ResourceCompiler.zip. After you’ve put it e.g. into the \bin directory you must specify its path in the Win32 Resource compiler settings – I know that it sounds awkward but it actually seems that I lastly forgot to mention this point in the installation tutorial :/ :D

      • cmdtower
        June 5, 2012 - 3:22 am | Permalink

        Yup, that did the trick. Thanks.

  • Chris S
    June 2, 2012 - 7:22 am | Permalink

    Hi Alex –

    Thanks for producing this tool. Unfortunately I’ve run into a problem right from the start which I was hoping you could clarify.

    I’ve gotten the latest version of Mono-d, and selected a new console project with the simple “hello world” project. When I try to build this in MonoDevelop I get the following Build output:

    “”"
    Building Solution: testmd (Debug)

    Building: testmd (Debug)
    Performing main compilation…

    Build Project
    Current dictionary: /Users/ctsa/devel/dplay/testmd/testmd
    dmd -c “main.d” -of”/Users/ctsa/devel/dplay/testmd/testmd/obj/Debug/main.o” -I”/Users/ctsa/opt/i386-darwin/dmd/src/druntime/import” -I”/Users/ctsa/opt/i386-darwin/dmd/src/phobos” -gc -debug

    ———————- Done ———————-

    Build successful.
    Build failed. ApplicationName=’dmd’, CommandLine=’-c “main.d” -of”/Users/ctsa/devel/dplay/testmd/testmd/obj/Debug/main.o” -I”/Users/ctsa/opt/i386-darwin/dmd/src/druntime/import” -I”/Users/ctsa/opt/i386-darwin/dmd/src/phobos” -gc -debug ‘, CurrentDirectory=’/Users/ctsa/devel/dplay/testmd/testmd’
    “”"

    If I paste the dmd commandline printed after “Build failed” into the terminal it succeeds and exits 0.

    If I just run “dmd main.d’ on the auto-generated file it succeeds without any trouble. Not sure what’s going wrong.

    Useful info:
    OS X 10.6.8
    MonoDevelop 3.0.2
    Mono-D 3.9.6
    dmd 2.053

    Thanks for any help!

    -Chris

    • alex
      June 2, 2012 - 11:49 am | Permalink

      Hi,

      It probably wasn’t able to find dmd via environment variables – (I assume the dmd executable is located under /Users/ctsa/opt/i386-darwin/dmd/bin/somewhere?). So all you need to do is to put put the bin path to the dmd executable into the Binary Path field you can find in the D settings.
      It might work then :)

      • Chris S
        June 2, 2012 - 6:26 pm | Permalink

        Ah-hah, I just set toolchain bin path and that did it. Thanks for the pointer.

  • May 27, 2012 - 11:43 am | Permalink

    Hi, I’m new to D coming from c# and this project seems to be making things alot easier. Good work.

    One issue I have found so far. Library projects need to have the -lib flag applied to the linker as well as the compiler. Otherwise it fails with “undefined reference to `_Dmain’”

    • alex
      May 27, 2012 - 12:10 pm | Permalink

      I think there is an option to link it to a static library – Just open the project settings -> “Build” -> “Compiling” tab ->”Linking” tab -> Set “Comile target” to “Static library” and it should be fine :)

  • Daniel Kozak
    May 17, 2012 - 9:05 am | Permalink

    I am unable to use 0.3.9. Every time I add include paths (druntime and phobos) to compiler configuration, monodevelop starts consume all of my memory and I must kill it.

    • alex
      May 17, 2012 - 9:23 pm | Permalink

      I really’d like to know why this happens – I probably got to investigate a bit.
      Anyway it’s not occurring over here! Haven’t noticed an excessive mem consumption anyway – what OS are you using?

      [Edit] I just discovered that it’s not even possible to launch MD 3.1 on Ubuntu, lol

      • Daniel Kozak
        May 18, 2012 - 1:07 pm | Permalink

        I use monodevelop 3.1 from git on Arch linux. And mono-d plugin from your sites repository. And version of DMD is 2.059. I will try to find out whats happen if I have a some spare time :)

        • Daniel Kozak
          May 18, 2012 - 1:40 pm | Permalink

          Hmm, I tried to remove all paths, than add them again and now it seems all works correctly. Maybe some problem with old profile of monodevelop or something like this

          • alex
            May 18, 2012 - 2:05 pm | Permalink

            Awful undefined behaviour – I really detest it :/, but it’s kinda cool that it’s working again now

  • Manu
    May 1, 2012 - 1:47 am | Permalink

    No debugging in Windows? :(
    It’s all for nothing without the debugger…

    • alex
      May 1, 2012 - 1:58 am | Permalink

      I will not repeat myself again entirely – but: No decent debugging without decent abstract information about the code you write/debug! ;)

  • biotronic
    March 31, 2012 - 11:35 am | Permalink

    Link to resource Compiler on Installation page is borked. Should point to http://mono-d.alexanderbothe.com/ResourceCompiler.zip, does point to http://mono-d.alexanderbothe.net/ResourceCompiler.zip

    • alex
      March 31, 2012 - 11:51 am | Permalink

      Oops, surely happened during moving this blog from sourceforge to my private site – Thx for that :)

  • Gavin
    March 28, 2012 - 4:10 pm | Permalink

    Hi, not sure if it’s a bug or something I’m doing wrong with my project setup, but one of my projects no longer has working Go to Declaration functionality. The context menu option just doesn’t appear any more. This used to work for this project, and as far as I can see everything else is set up the same in thise one project as it is in all my other projects.

    Any idea what Go to Declaration relies upon in order to work? I’ve got all my include paths set in the Build > Compiling > Includes section…

    Thanks!

    • alex
      March 28, 2012 - 4:21 pm | Permalink

      Hmm, that sounds very strange. This command simply needs to resolve the currently hovered code, so like when getting an in-editor tool tip, this already has been done.

      Is this issue occurring in all your project’s codes?
      I’ve currently found a problem with template functions – so perhaps your code symbol also was a template function – which reasoned everything then :)

      • Gavin
        April 3, 2012 - 9:28 am | Permalink

        Just to get back to you about this: it’s fine now. Not sure what happened, I think I rebooted my machine and it just started work again! Weird.

  • Gavin
    March 12, 2012 - 5:12 pm | Permalink

    Hi Alex,

    Some more thoughts about the document outline pad! :)

    1. I noticed that it doesn’t distinguish static members (of modules / classes). It’d be very cool if it did… (I’m surprised it doesn’t actually, as C# has the static keyword as well.) I’m not sure if another overlay could be used though, as it’d have to co-exist with the protection attribute overlays. I guess one way might be to duplicate the icons for member, method, alias, constant and put a little S or something in the bottom right corner…?

    2. I thought another really excellent feature for D would be to denote (via little icons) whether function parameters are out (right pointing arrow?) / ref (up & left pointing arrow? little star?) / lazy (zZZ ? ;) ) / etc.

    • Gavin
      May 26, 2012 - 8:57 am | Permalink

      Hey Alex, I was just having a play around at implementing this, just for fun.

      I got as far as adding a new image type in InitImages() in DCodeCompletionSupport.cs, and modifying the behaviour of the GetNodeIcon() method in the same file. So far this all works fine.

      The problem comes with adding a new icon png. I’m just trying to use the alias icon for now, as a test, and editting the MonoDevelop.D.addin.xml file.

      What I find is that if I enter a line like this, using one of the built-in icons, it works as expected (ref parameters of functions are displayed with the “literal” icon):

      However when I do something like this, using a MonoD specific icon, no icon whatsoever appears for ref parameters:

      (I’ve also tried various combinations of using “resource=” and/or “icon=”, to no avail…)

      There must be something simple I’m missing… I can’t really find any MonoDevelop documentation on how this is supposed to work. Any ideas?

      • Gavin
        May 26, 2012 - 9:00 am | Permalink

        Ok it removed my xml code there… :-/

        I’ll see if I can trick it by inserting spaces.

        This works:

        This doesn’t work:

        • Gavin
          May 26, 2012 - 9:02 am | Permalink

          Sigh. One last try, without angle brackets.

          Works:
          StockIcon stockid = “d-ref-parameter” icon = “res:element-literal-16.png” size=”Menu”/

          StockIcon stockid = “d-ref-parameter” icon = “res:res:MonoDevelop.D.icons.element-alias-16.png” size=”Menu”/

          • alex
            May 26, 2012 - 1:43 pm | Permalink

            I’ve sent you a how-to to your sociomantic mail address^^

            • Gavin
              May 29, 2012 - 10:27 am | Permalink

              Thanks :)

  • Daniel Kozak
    March 11, 2012 - 9:28 pm | Permalink

    Hi,

    mono-d is almost perfect. I really like it. But one thing drives me crazy :) . When I start writing for eg. ‘string’ key word. Auto completion doesn’t work as I expected. Because in hints window there is not string and when i write string and then put space it select first word from hints window. Here is video of my problem http://dlang.cz:8080/out.ogv

    • alex
      March 11, 2012 - 10:13 pm | Permalink

      Indeed, “I see” :D – thanks for your feedback!

      Since the completion isn’t that reliable, it’s recommended to switch off the forced insertion after a delimiter has been typed – so at first you’ll be able to type string without letting the completion engine overwrite it with the ‘selected’ completion item.

      Secondly, ‘string’ should be available – have you entered the paths to your compiler installation? If not, please have a look on the Installation page! There you’ll find instructions how to do this – and then, string, Object, size_t as well as other items defined in object.di should be available as completion options

      • Daniel Kozak
        March 12, 2012 - 12:04 pm | Permalink

        Yes, I have wrong path to my compiler installation. Thanks

  • Gavin
    March 7, 2012 - 5:02 pm | Permalink

    I’m not sure how much control you have from MonoD over what’s displayed in the Document Outline pad, but another small feature I thought that would be nice would be to display aliases more clearly. They’re currently displayed in exactly the same way as a class member (with a kind of blue circle next to them). Even just displaying an = symbol next to the name or something would make the outline easier to read.

    • alex
      March 7, 2012 - 5:20 pm | Permalink

      Perhaps it’d be better to have a dedicated icon for that.. do you have one?

      • Gavin
        March 7, 2012 - 5:51 pm | Permalink

        Good idea!

        Well I’ve just knocked up a very basic one… it might do for a start (until someone comes along who has better graphic design skills! ;)

        How should I send it your way?

    • Gavin
      March 8, 2012 - 11:17 am | Permalink

      On the topic of the document outline pad again… I noticed that the icon for consts doesn’t display the little protection overlays (private / protected / package). Would be nice if it did :)

      • alex
        March 8, 2012 - 7:04 pm | Permalink

        Lol there weren’t dedicated icons for private/protected/internal literals .. had to create them, but it should be better now

        • Gavin
          March 9, 2012 - 11:33 am | Permalink

          Excellent, thanks a lot!

  • Minas
    March 2, 2012 - 11:27 am | Permalink

    Very nice plugin – but I’ve got two problems.

    Look at this simple program:
    import std.stdio;

    void main()
    {
    writeln(10);
    }

    In release mode it works fine, however, in debug mode it get an error message saying:
    Error: Build failed – check build output for details (D_Test)

    What does this mean?

    Also, when I go to Project->Project Options (not solution options)->Build->Building->Libraries and click browse to find the selected library, when I click “add” to add it to the project, nothing happens! It is not added.

    Third, sometimes my program is correct but it says there’s an error (I am talking about release mode because as I mentioned above debug is not working). When I select “build” again, it says “build successful” but when I run it, it runs the previous version! It means that it didn’t compile the new one at all :/

    Any help would be appreciated.

  • Vincent
    February 21, 2012 - 11:46 am | Permalink

    Guys, it can sound funny, but what about to start from the main stuff: where to download MonoDevelop itself?! :)

  • Gavin
    February 15, 2012 - 11:55 am | Permalink

    Hi Alex, another small suggestion on the topic of comments. The current behaviour, when is pressed with the cursor inside a /* */ comment block, is that a new line is inserted (as expected) and the characters ” * ” are inserted at the start of the new line.

    When writing comments, I find myself constantly having to delete these ” * ” characters, as the comment style we’re using doesn’t include a * on each line of a block comment.

    Again, I don’t know if this behaviour is part of Mono-D or if it’s part of MonoDevelop itself, but it’d be nice if it was overrideable / could be deactivated.

    • Gavin
      February 15, 2012 - 11:56 am | Permalink

      Oh weird, my comment didn’t come out properly there… What I attempted to write was:

      “The current behaviour, when ENTER is pressed”
      :)

      • February 15, 2012 - 1:52 pm | Permalink

        Ok I created a new option – just reinstall the addin again :)

        • Gavin
          February 15, 2012 - 3:20 pm | Permalink

          That’s a big help, thanks!

      • Gavin
        February 16, 2012 - 4:31 pm | Permalink

        I’m having trouble with the new “D Source Code > D Format” options not saving. I’ve tried changing them both in the “Edit > Preferences…” menu, and on a per-project basis, but in both cases when I restart MonoDevelop, the D Format options have reset to their default values. Any ideas?

        • February 16, 2012 - 5:13 pm | Permalink

          You’re right – the policy options weren’t marked as serializable; now it should work :)

  • bls
    February 14, 2012 - 10:00 pm | Permalink

    Hallo Alex,
    Make Default funktioniert bei mir nicht. win 7- 64 D binding 0.289. MonoDevelop 2.8.6.4.
    GDC konfiguration wird nicht nur Nicht als default gesetzt, auch der Toolchain bin path wird “vergessen” ?reset-ed.. wie das so schoen eingedeutscht heisst.

    GDC64, aber das sollte eigentlich keine Rolle spielen.
    Oder … Sind die Toolchain Settings Project bezogen ? ..Was nicht optimal waere.

    • February 15, 2012 - 12:06 am | Permalink

      Es scheint bei deiner Installation die Settings nicht abzuspeichern – was relativ eigenartig ist, denn bei mir funktioniert alles, und Beschwerden durch andere gab es bis jetzt auch nicht.

      Vielleicht hilft MD mit Adminrechten starten?

  • bls
    February 14, 2012 - 9:44 am | Permalink

    Hi Alex,
    Compiler Toolchain / Make default does not save the configuration. (Win 7) Nevertheless, I was able to use GDC64 in MonoD and this is already something!
    On Ubuntu I could not find the Tools/Options… Menu .. Any hints ?
    A question regarding the parser. Are you still using the CoCo/R – ATG generated parser ? (Guess that is what you hace used (more or less) in D-IDE)
    And beside : Damned good job!
    Bjoern

    • February 14, 2012 - 1:41 pm | Permalink

      Works for me™ – bei mir speichert der Make Default-Click.

      Unter Ubuntu hab ich MD zuletzt vor ein paar Monaten getestet. Aber selbst unter Linux Mint 12 läuft eigentlich alles ordentlich.

      Ich verwende nach wie vor meinen eigenen Parser, der nicht generiert wurde – ist flexibler und schneller – zumal der Parser auch nur einen Bruchteil der CodeCompletion ausmacht ;)

  • Gavin
    February 13, 2012 - 6:20 pm | Permalink

    Hi Alex, thanks for that! Good to see it’s not too hard to modify that kind of behaviour. Using the DDoc /** */ seems like a much more sensible default for D.

    It’s not quite what I had in mind however. I’m using pre-formatted headers (following tango’s style), like this:

    /*******************************************************************************

    copyright: Copyright (c) 2004 Kris Bell. All rights reserved

    license: BSD style: $(LICENSE)

    version: Mar 2004: Initial release$(BR)
    Dec 2006: Outback release

    author: Kris

    *******************************************************************************/

    So what I was imagining was that it’d be nice if there was an option in the Standard Header settings to simply switch off all automatic formatting of the standard header. So it’d literally just paste the user-entered text as-is at the start of each file, without wrapping it in comment “tags” or appending anything.

    I guess this would require adding an extra tick box to the settings — something like “Insert as block comment” (defaults to true) — I don’t know how easy / hard that is to do?

    As I said though, the new behaviour in 0.2.8.9 makes more sense for D anyway.

    • February 13, 2012 - 7:35 pm | Permalink

      Just reinstall Mono-D. I created a checkbox in the D source code formatting options – the commenting can be disabled now :)

      • Gavin
        February 14, 2012 - 11:33 am | Permalink

        Excellent, it works like a charm, thanks!

  • Gavin
    February 13, 2012 - 11:12 am | Permalink

    Hello, another feature idea…

    I tried out the ‘standard header’ feature of MonoDevelop recently, which inserts a pre-defined header text at the start of each module. Unfortunately it always inserts a // before each line, which kind of messes up the headers we use (which are DDoc /** */ block comment format).

    I don’t know if the code for this is deep in MonoDevelop, or if it’d be possible to change this behaviour in Mono-D, but it’d be really cool if there was a way to switch off the prepending of // on each line of the standard header.

    • February 13, 2012 - 3:25 pm | Permalink

      Cool why not. Will see if I can do this.

    • February 13, 2012 - 4:58 pm | Permalink

      Indeed, it’s been a very good idea – it’s in the 0.2.8.9 version

  • F i L
    February 6, 2012 - 10:39 pm | Permalink

    So I thought I heard you mention parsing User Types for type-highlighting. Is that true? That would be awesome if it is :)

    • February 6, 2012 - 11:48 pm | Permalink

      well the algorithm is implemented in d-ide mostly (I wonder if it works well with aliased types, too, still got to test it), just got to port it to monodevelop’s interface

    • February 7, 2012 - 7:02 pm | Permalink

      Sorry, as long there’s that strange publishing error when I try to link in a special drawing library it’ll not be possible to establish semantic highlighting

  • Gavin
    February 3, 2012 - 7:15 pm | Permalink

    Thanks a lot for this, very nice! (It’s a relief to find another D capable IDE except Eclipse.)

    One slightly odd point I’ve noticed is that syntax highlighting is still active inside DDoc /** */ comment blocks. So, for example, in /** this is a class */ the words “this”, “is” and “class” will be highlighted.

    • February 3, 2012 - 9:09 pm | Permalink

      Hi, thanks, yeah I’ve also noticed it – I’ll note it on the todo list :)

      • Gavin
        February 6, 2012 - 4:38 pm | Permalink

        Just got the update this morning and found the /** */ comments fixed now — thanks for that! :D

  • January 31, 2012 - 5:40 pm | Permalink

    Hi. I’ve removed & reinstalled it and it is now perfect. Thank you!

  • dnewbie
    January 31, 2012 - 3:14 am | Permalink

    Thanks for the application, it is very nice.
    For some reason, MonoDevelop crashes when I right click the Document Outline panel.

  • January 27, 2012 - 10:19 am | Permalink

    I just want to join with all the compliments – Mono-D has the best auto-completion of all other IDEs. As that is one of the most important features for me (together with refactoring which I would put as #1 feature of any modern IDE). Speaking about refactoring – I know it is pretty complicated thing to do, but do you have any plans to work on it?

    • January 27, 2012 - 1:23 pm | Permalink

      Hi! Thanks for the positive feedback!

      Define ‘Refactoring’ :D – reformatting code, implement interfaces and similar stuff, I guess. Yes, these features are on the to do list already, but nevertheless they’re on very low priority. Perhaps you want to want to depict your expectations of ‘good’ refactoring in Mono-D’s issue board? ( https://github.com/aBothe/Mono-D/issues )
      Recommendations, ideas and of course bug reports are appreciated! :)

  • Witek Baryluk
    January 21, 2012 - 4:49 pm | Permalink

    Thanks you for this project. D needs more coverage, and adding good support to existing IDEs (like Visual Studio, Eclipse, Monodevelop), is very important. I really like Monodevelop, but why not Anjuta? You think it is dead, or less portable?

    Looking forward for more updates and features!

    • January 21, 2012 - 6:23 pm | Permalink

      Thanks for your feedback!

      To let me answer your question with one word only: Anjuta? Please know that I never heard about it. It also seems that it’s got Linux support only, so neither for Windows nor Mac — and as D also supports compilers on multiple platforms, D IDEs should do the same – so I guess there will be no Anjuta binding (developed by me). But thanks for the idea anyway! :)

  • yaz
    January 20, 2012 - 12:31 pm | Permalink

    Thanks for the great effort!
    I have been wondering if there are plans to fix the format of the text in the tooltips. Uhmm, for example, the description for std.algorithm shows like this:
    $(BOOKTABLE ,
    $(TR $(TH Category) $(TH Functions)
    )
    $(TR $(TDNW Searching) $(TD $(MYREF balancedParens) $(MYREF
    boyerMooreFinder) etc etc..
    Thanks again.

    • January 20, 2012 - 3:29 pm | Permalink

      Thanks for the feedback!

      I thought about at least removing the $(ASDF …) tags – but as far as I don’t know how to draw html code in tooltips it’ll remain like this.
      Besides, I guess this is a very low-priority problem – but thanks for not complaining about some more directly visible features that are buggy :D

      • yaz
        January 21, 2012 - 10:07 am | Permalink

        Removing them would be great for now. But I think some of these tags need to be substituted for some responding values.. I’m not totally sure.
        Anyway, thank you for the rapid reply :D

  • tom
    January 15, 2012 - 7:42 pm | Permalink

    This is pretty cool. Are there any plans to integrate unit testing so that we can run unit tests without having to add the -unittest option manually?

    • January 15, 2012 - 8:19 pm | Permalink

      Sure. Cool, perhaps it could be done by creating an extra project configuration by default – so as Debug or Release, why not have Unittest?

  • EXetoC
    January 9, 2012 - 11:01 am | Permalink

    And also, it might be a good idea to run the compiled executables from the solution or project root. So the working directory would be the same for every target, which means that run-time resources like config files etc. don’t have to be copied or symlinked to every target-specific directory, thus making the process a little less manual.

    • January 9, 2012 - 1:14 pm | Permalink

      Indeed! I just imitated MonoDevelop’s standard behaviour – but perhaps making this optional could make things easier! :)

  • EXetoC
    January 9, 2012 - 10:36 am | Permalink

    Hello again, Alex. I had to remove ‘dai.’ from the module declarations in addition to adding -I.src, in order to get Mono-D to compile my source. The modules aren’t in src/dai, but rather in src/, and that seems to have been what caused the problem.

    I’ve realised that it might be a bad idea to specify packages that doesn’t actually have a corresponding directory in the project path, so i’ve commented out every instance of “dai.” in the modules for now. However, it might still be a good idea to fix this, in case some other projects do it this way.

    With that said, Thanks! This seems like a decent cross-platform solution.

    • January 9, 2012 - 1:11 pm | Permalink

      Have you tried building the files manually? Is it working then (with the “dai.” prefix)?

      Thanks anyway for the feedback!

      • EXetoC
        January 10, 2012 - 10:58 am | Permalink

        I used VisualD for several months before trying out Mono-D, and it didn’t complain about the prefix, which means that dmd allows it.

  • Haroogan
    January 7, 2012 - 3:31 pm | Permalink

    By the way Alex, where did you get the parser? It looks hard-coded – I guess it’s Top-Down right? Does it have issues right now?

    I’m asking, because I believe it is much better to use LR-parser. With it there is much less hard-coding, more strictness, less bugs and etc. I have some background in LR-parsers – so if you ever consider to switch to it – I might assist.

    • January 7, 2012 - 3:48 pm | Permalink

      The entire parser and DOM system is written by me. Isn’t a hard coded parser more efficient than e.g. a generated one? Isn’t ‘custom’ code running faster with less overhead than wrapped stuff?

      If there was an other / faster(!) way to analyze or even to ‘jump’ through D code rapidly, I’d really appreciate your help!

    • January 7, 2012 - 3:53 pm | Permalink

      IMO, D’s complexity also doesn’t leave space for huge improvements concerning the lexer, the parser, even concerning symbol resolvers or code formatters.

      But nevertheless – if there’s a better/more efficient way to write a CLR-based D parser (which included C#, F# or even ‘raw’ IL(!) to write a parser — it could be very cool :D ) with less performance loss – please tell me!

      • Haroogan
        January 7, 2012 - 4:53 pm | Permalink

        Well, to start with do you know what is LR-parser? You probably should – it works with pre-generated tables.

        You write a grammar file, then pass it to LR-table generator, then this LR-table is written to a simple binary file (or XML does nto matter in this case). Then you write a simple LR-parser – which is maximum of say 300 liens of code. LR-parser input then is a token stream. Internally it analyses this stream token by token according to the LR-table (which we have previously generated). It’s output is simply – yes/no (in trivial case). Attaching different services to it – so that it build DOM simultaneously and emits appropriate error messages is just a matter of routine.

        Writing LR-table generator can be a challenge – but actually it is uniform – and does not depend on particular language. The only input to it is grammar. It is possible to try 3rd party LR-table generators or write your own.

        The point is that all the boilerplate hard-coded “if/else” soup vanishes, because this essential logic is not in your code anymore – it is in this little LR-table. This approach works faster as well.

        Previously, I was successfully able to write all that is described (including my own LR-table generator) for C.

        • January 7, 2012 - 6:01 pm | Permalink

          will this parser be compatible to the existing DOM? If so – why hesitate any longer? :D

          • Haroogan
            January 7, 2012 - 6:13 pm | Permalink

            I haven’t seen your DOM yet. But anyway – I had plans on porting my LR-parser to C# and I think I’m gonna do it now. Maybe your project might benefit from it. The only thing I need is D2 grammar, which I can’t find anywhere (as a single consistent document) – do you have the exact specification? If, yes could you please send me it by e-mail or post a link to it. You could also send me your Skype Id so that we are able to keep in touch, if you wish ofc ;)

            Best regards

          • January 7, 2012 - 6:41 pm | Permalink

            I took everything from http://d-programming-language.org/lex.html and all its subpages – I know, it seems to be very incomplete and leaky, but in the end I was able to work with it!

            Are you logged in at #d? I’m alex|D-Guy over there – if you want to add me on skype, I’m a.bothe2010

  • January 7, 2012 - 6:20 am | Permalink

    It would be really nice to see more project configuration options. Particularly in controlling output. I see object files are all put in the same place, regardless of configuration. Executables are placed in bin/Configuration. All of this is hardcoded, it seems. If I put -of as an option on the link step, it’s ignored.

    At a minimum, object file output location and executable/library output location should be configurable as project options.

    • January 7, 2012 - 12:10 pm | Permalink

      Sure, I just skipped spending more time on working out a more detailed config to concentrate on more editor-related things – I’ll note it on the todo list :)

  • Manu
    January 7, 2012 - 12:54 am | Permalink

    Omgomg… this is awesome.

    It seems Mono-D has a lot more features that VisualD… not to knock monodevelop (which is cool), but I think there are a lot more VisualStudio users out there…
    Would it be possible to contribute any of this work to VisualD to any extent? It really needs a lot of love.

    • January 7, 2012 - 1:41 am | Permalink

      Of course is Visual Studio a nice IDE – but it’s windows only. My primary target is it to provide OS-independent D editing support – so imo, using Mono/.Net as a basis is the easiest way to handle this.
      (Whereas…. since Visual Studio is also .Net based, it could be possible to go on using the commonly used D_Parser library – so VS and MD could profit by the same library… nice idea!)

  • Kaylan
    January 3, 2012 - 7:43 am | Permalink

    Im not sure if this is a mono-d, monodevelop, or a personal setup problem but every 2 or 3 project builds, the program hangs when making the 3rd or 4th build and i have to restart monodevelop. I guess ill post this on the monodevelop site also.

    • January 3, 2012 - 9:09 am | Permalink

      I don’t know the exact circumstances of your installation, but building a small test program on my machine works flawlessly – even when building the project several times.

  • Kaylan
    January 3, 2012 - 7:17 am | Permalink

    I think i spotted a bug! Check out this example,

    auto f = File(“foo.bar”, “r”); < Everything from "r

    foo(); < All the
    bar(); < Way to

    f.write("A"); < A" is highlighted as a single string!

    Weird huh? But if i change "r" to any other char, works fine.

    • January 3, 2012 - 9:03 am | Permalink

      Yes, it’s a syntax highlighting issue, as you might see that it ‘thinks’ the “r” is the begin of a wysiwyg string – I hopefully will find a workaround for this – thanks for the feedback!

  • Yang
    December 9, 2011 - 10:34 am | Permalink

    When I try to build “Hello world” Program, but I receive a warning “Project ‘HelloWorld’ has different ToolsVersion than the containing solution before doing anything. I am a D beginner. But when I use VisualD in Visual Studio 2010, it’s all OK. Is the MonoDevelop’s version or other reasons concerned?

    Some informations about my environment:
    MonoDevelop 2.8.4.2
    Runtime:
    Microsoft .NET 4.0.30319.239
    GTK 2.16.6
    GTK# (2.12.0.0)
    Mono for Android not installed
    No build info
    Operating System:
    Windows 6.1.7601.65536

    • alex
      December 9, 2011 - 2:49 pm | Permalink

      Your project has a different ToolsVersion?

      Sorry, but I never heard of such an exception before – such a case is totally new to me.

      An other question which may help you:
      Is the path to your dmd executable configured right?
      If not, you can either
      1) Do it by inserting the dmd bin path into the %PATH% environment variable or
      2) By setting the “Compiler”/”Console app linker” fields (in the Other > D > Compilers > DMD options) to the respective paths (e.g. C:dmd2windowsbindmd.exe)

      • December 11, 2011 - 11:30 am | Permalink

        Thank you! I did as 2) and it’s ok now! The auto-completion of Mono-D is wonderful.

        Is there a forum or something like that? So I can find solutions for general problem and persons interested in Mono-D could discuss there.

  • F i L
    December 8, 2011 - 7:09 pm | Permalink

    Awesome project! Works great on my Fedora 16 box with MonoDev 2.8.1. The code completion and project management are exactly what I needed to really start converting from C# to D. Can’t thank you enough.

    There is one thing I would like added, though. The ‘string’ keyword (I know it’s not a true keyword) is not highlighted as such. It makes my code ugly :( Is there plans for user defined keywords list (like the new Visual-D release)? Or could you simply add ‘string’, ‘wstring’, and ‘dstring’ to the keywords list please?

    Thanks for the great work!

    • alex
      December 8, 2011 - 7:39 pm | Permalink

      Thanks!

      Keyword entries for Object, (d/w)string have been inserted :)

      • F i L
        December 9, 2011 - 7:37 am | Permalink

        Awesome! Thank you!

  • nazriel
    December 3, 2011 - 2:58 am | Permalink

    Btw, is it only me or ctrl+c & ctrl+v is buggy?
    When I copy slice of code and want to paste it somewhere…the whole file is getting pasted…
    It only occurs when working with D solution.

    Some infos about mine env:
    MonoDevelop 2.8.2
    Build information:
    Git revision: 3ad243983f7219d98f534dbcf5731e3a15f77dff-dirty
    Build date: 2011-12-01 00:01:58+0000
    Operating System:
    Linux
    Linux d3 3.0.6-gentoo #1 SMP Sun Oct 9 12:00:00 CEST 2011 x86_64 Intel(R) Core(TM) i5 CPU M 450 @ 2.40GHz GenuineIntel GNU/Linux
    Runtime:
    Mono 2.10.6 (tarball Wed Nov 30 23:28:36 CET 2011) (64-bit)
    GTK 2.24.6 (GTK# 2.12.0.0)

    Cheers.

    • alex
      December 3, 2011 - 2:33 pm | Permalink

      On my (Win7) machine everything related to Copypasting works like it should – No issues at all.

  • nazriel
    December 1, 2011 - 2:57 am | Permalink

    This project looks really awesome. I really enjoy monodevelop. I’ve been using Eclipse with DDT before as IDE on Linux but honestly,

    Mono-D seems to be very ligthweight when comparing to DDT. Start-up is almost instant… no lags etc.

    It’s great! Keep good work!
    If I could help somehow to the project please let me know!

    Best regards,
    Damian Ziemba

    • alex
      December 1, 2011 - 5:49 pm | Permalink

      Well we are still searching for someone who could bring up some a debugger interface library so it’d be possible to debug D applications under Linux environments. But I guess this would be hard to do because there had to be written an entire library for every single distro, am I right?

      But anyway, thanks for the feedback!

  • Adam
    November 29, 2011 - 5:09 pm | Permalink

    Just got MonoDevelopment installed with Mono-D and, so far, holy crap – this is awesome! I’ve been poking through various IDEs with (very) limited success in D, but this one seems to work well. It handles auto-completion and all of that good stuff.

    I have one question, or perhaps a request – is there a way to have MonoDevelopment (or Mono-D) provide different coloring for parts of an expression? Right now, this shows as just one color:

    Container!(Integer) name;

    I don’t know if this is something you can control (I couldn’t find anything in the options), but it’d be great if the types (Container, Integer) were one color, the template syntax was another (!()), and the field name (name) was yet another.

    • alex
      November 29, 2011 - 9:29 pm | Permalink

      Thank you very much for your positive feedback!

      To directly answer your question, yes, it is possible to highlight special code patterns like template instances although I doubt that it would highlight the entire ‘Integer’ part you mentioned. Perhaps the first trailing one after the ‘!’, so like in ‘to!string’.

      Furthermore, I already thought about implementing semantic highlighting – which also would highlight all identifiers etc. like VisualStudio does. But since even the guys from SharpDevelop won’t bring up that feature (because it’s primarily VERY resource intensive!), I doubt that it’ll be a feature of Mono-D. (Perhaps you have a fast algorithm which made it possible, I’ll take all offers serious!)

      Just a question from my side: Could you please tell how you came to this site? :D

  • Leave a Reply

    Your email address will not be published. Required fields are marked *


    4 − = one

    You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>