Difference between revisions of "Mono-D"
m |
m (Fix incorrect internal links) |
||
(53 intermediate revisions by 7 users not shown) | |||
Line 1: | Line 1: | ||
− | '''Mono-D''' | + | '''Mono-D''' brings D support to the cross-platform XamarinStudio/MonoDevelop [[IDEs|IDE]]. |
− | |||
+ | [[File:Mono-D_screenshot1.png|500px]] | ||
== Features == | == Features == | ||
Line 9: | Line 9: | ||
** Managing inter-project dependencies in a solution | ** Managing inter-project dependencies in a solution | ||
** Build projects and prepare them for being deployed | ** Build projects and prepare them for being deployed | ||
− | * Ad hoc [[ | + | * Ad hoc [[DUB]] support. <small>Despite the package.json/dub.json file not being a native format that is supported by the Mono/.Net facilities, there's still a bunch of things wrapped for being used within MD.</small> |
− | ** | + | ** Open DUB package.json/dub.json files as projects |
** Resolving package dependencies and subpackages and opening all of them as projects, too | ** Resolving package dependencies and subpackages and opening all of them as projects, too | ||
** Build support | ** Build support | ||
** ... | ** ... | ||
* Basic [[Visual-D]] project format support | * Basic [[Visual-D]] project format support | ||
− | * [[ | + | * [[DMD]], [[GDC]], [[LDC]], [[rdmd]], [[DUB]], [[make]] toolchain support |
* '''Rich editing''' & refactoring facilities: | * '''Rich editing''' & refactoring facilities: | ||
** Halfway™ decent auto code completion including pre-compile time | ** Halfway™ decent auto code completion including pre-compile time | ||
Line 26: | Line 26: | ||
** Code symbol reference highlighting, | ** Code symbol reference highlighting, | ||
** Semantic type identifer highlighting, | ** Semantic type identifer highlighting, | ||
− | ** Optional diff-based syntax highlighting, | + | ** Optional diff-based syntax highlighting (Can be toggled via pressing Ctrl+Alt+K or in the global D options), |
** Diet template file highlighting. | ** Diet template file highlighting. | ||
** Mixin expression pre-compilation to see what a mixin will look like when being compiled | ** Mixin expression pre-compilation to see what a mixin will look like when being compiled | ||
+ | ** Automatically generating method stubs for overridable methods<br/>[[File:Mono-d_method_override.png|300px]] | ||
** Code declaration foldings | ** Code declaration foldings | ||
− | ** User-generated foldings via | + | ** User-generated foldings via |
− | <syntaxhighlight lang=" | + | <syntaxhighlight lang="D"> |
+ | //region My Region | ||
int myCodes; | int myCodes; | ||
− | //endregion | + | //endregion</syntaxhighlight> |
− | </syntaxhighlight> | ||
** Obligatory <tt title="Abstract Syntax Tree">AST</tt> outlining <small>for easy access of stuff declared in a D source file</small> | ** Obligatory <tt title="Abstract Syntax Tree">AST</tt> outlining <small>for easy access of stuff declared in a D source file</small> | ||
** Intelligent code indentation | ** Intelligent code indentation | ||
Line 43: | Line 44: | ||
== How to install Mono-D == | == How to install Mono-D == | ||
− | === Install MonoDevelop === | + | === Install MonoDevelop(MD)/Xamarin Studio(XS) === |
+ | |||
+ | <b>Note:</b> Xamarin Studio is basically a slightly different but still generally freely available version of MonoDevelop. | ||
+ | In the following, MD can be seen equally to XS.<br/> | ||
+ | You'll need XS/MD <b>>v5.6</b> to be installed for Mono-D. | ||
==== On Windows/OSX ==== | ==== On Windows/OSX ==== | ||
− | # Go to | + | # Go to http://monodevelop.com/download, download & install the latest MonoDevelop setup. <small>Note that there's a gtk# package required to be installed as well.</small> |
− | # | + | # Launch XS. Open the <i>''Help''</i> menu (Windows) or the ''Xamarin Studio'' menu (OSX) and select <i>'Check for updates'</i>. |
− | + | # Select the <i>Alpha channel</i> to be used for searching updates.<br/><small>Generally it's recommended to stick to the latest 'Alpha' version of XS because only then, you'll get the very latest & most recent changes & bug fixes. In my very long experience of using XS, it's usually not the case that an Alpha version behaves unstable.</small> | |
− | |||
==== On Linux ==== | ==== On Linux ==== | ||
+ | |||
+ | # Check your distro's software manager for any recent MonoDevelop version and try to install that one.<br/><small>MD >=5.6 is mandatory due to massive API changes etc.!</small> | ||
+ | # If no proper build hasn't been uploaded, go to http://simendsjo.me/files/abothe and download the .xz matching your OS architecture. | ||
+ | # Follow the instructions given in the [http://simendsjo.me/files/abothe/readme.txt ''readme.txt''] in order to deploy everything properly.<br/><small>The archives are maintained by me, so please check the site regularly (like 1-2 times per month) for updates!</small> | ||
+ | # Also it is possible to use [https://build.opensuse.org/project/show/home:tpokorra:mono ''build.opensuse.org'']. Instruction for Ubuntu 14.04: | ||
+ | ## Add apt repository: <nowiki>sudo sh -c "echo 'deb http://download.opensuse.org/repositories/home:/tpokorra:/mono/xUbuntu_14.04/ /' >> /etc/apt/sources.list.d/mono.list"</nowiki> | ||
+ | ## Download key: ''wget http://download.opensuse.org/repositories/home:/tpokorra:/mono/xUbuntu_14.04/Release.key'' | ||
+ | ## Add key: ''sudo apt-key add - < Release.key'' | ||
+ | ## Update: ''sudo apt-get update'' | ||
+ | ## Install: ''sudo apt-get install monodevelop-opt'' | ||
+ | ## Run ''monodevelop-opt'' instead of ''monodevelop'' | ||
+ | |||
+ | Further requirements: | ||
+ | * libgnomeui | ||
+ | * xterm, gnome-terminal, mate-terminal OR konsole | ||
=== Install Mono-D === | === Install Mono-D === | ||
+ | |||
+ | # Make sure you've got [http://dlang.org/download.html dmd], optionally [http://code.dlang.org/download dub] installed<br/><small>Either via downloading the zip distributables or via your linux distro's package manager. The packages are usually called dmd, druntime and dtools.</small> | ||
+ | # Launch MD | ||
+ | # Click on the ''Tools'' (Windows)/''Xamarin Studio'' (OSX) => ''Addin manager'' menu | ||
+ | # In the ''Gallery'' tab, hit the ''Refresh''-button | ||
+ | # If there's an exception that some .mrep files could not be found, | ||
+ | ## Open the repository drop-down menu | ||
+ | ## click the ''Manage Repositories'' entry | ||
+ | ## Add http://addins.monodevelop.com/Stable/Win32/5.0 <small>(or, if it still fails: http://mono-d.alexanderbothe.com/repo)</small> | ||
+ | # In the ''Language Bindings'' group, install the ''D Language Binding'' | ||
+ | |||
+ | '''Note:''' | ||
+ | Before installing any new version of Mono-D '''on Windows''', make sure you never opened any D project since the last start of XS or MD.<br/><small>Otherwise, you'll get some installation errors etc which are caused by the fact that dlls cannot be overwritten once being loaded.</small> | ||
+ | |||
+ | === Setup Mono-D === | ||
+ | There are further steps required to set up Mono-D properly: | ||
+ | |||
+ | # Open ''Edit'' => ''Preferences''<br/>You'll find all D-related options in the ''Environment'' => ''D'' tree item. | ||
+ | # If the dmd executable cannot be found via $PATH or %PATH, adjust the compiler's bin path in the ''Compiler Toolchains'' settings to the absolute path.<br/><small>This also counts for OSX-Installations where XS is somehow not able to pass /usr/local/bin as default PATH entry..so just set the bin path over there as well!</small> | ||
+ | # Do the same for dub or the Win32 [http://mono-d.alexanderbothe.com/ResourceCompiler.zip ResourceCompiler.zip]. | ||
+ | # In order to get the code completion running for phobos etc., activate the ''Includes'' tab in your compiler's settings and add the following lines <small>(which you may fit to your machine's setup, of course)</small><br/><code>D:\Programs\D\dmd2\src\druntime\import</code><br/><code>D:\Programs\D\dmd2\src\phobos</code><br/>on Windows or the other respective paths for Linux:<br/><code>/usr/sha/include/dlang</code> or <br/><code>/usr/include/dmd</code><br/>or for OSX:<br/><code>/Library/D/dmd/src</code><br/>You can of course add custom globally used libraries as well.<br/><small>Note that it's not sufficient to just reference the ...\dmd2\src\-path alone -- the \druntime\src\-folder will cause trouble otherwise because it then would parse runtime source codes twice and then will confuse equally named packages and modules!</small> | ||
+ | |||
+ | == Release Notes == | ||
+ | |||
+ | See [[Mono-D Release Notes]] | ||
== Feedback == | == Feedback == | ||
− | == Support == | + | * IRC: #d.mono-d on [https://webchat.freenode.net/ Freenode]. |
+ | * Github: [https://github.com/aBothe/D_Parser/issues Code completion issues] or [https://github.com/aBothe/Mono-D/issues General issues] | ||
+ | |||
+ | == Contribute & Support == | ||
+ | |||
+ | If you like Mono-D, you may [http://mono-d.alexanderbothe.com/donate.html support Alex with a little tip] for letting Mono-D become even better :-) | ||
+ | |||
+ | If you want to get your hands dirty and work on Mono-D on your own, follow these steps: | ||
+ | * Uninstall Mono-D from MonoDevelop/XamarinStudio. | ||
+ | * On Windows, restart XS. | ||
+ | * <code>git clone https://github.com/aBothe/Mono-D.git</code> (or your own fork of the Mono-D repo) | ||
+ | * <code>cd Mono-D</code> | ||
+ | * <code>git submodule init</code> | ||
+ | * <code>git submodule update</code> | ||
+ | * Open up the MonoDevelop.DBinding.sln in MonoDevelop - or Visual Studio on Windows | ||
+ | * Build Mono-D once (so the bin/Debug-Path becomes set up) | ||
+ | * On Non-Windows, <code>sudo ln -s -d "MonoDevelop.DBinding/bin/Debug" "/usr/lib/monodevelop/AddIns/mono-d"</code> (adapt /usr/ to your own installation path where monodevelop has been installed to!) | ||
+ | * On Windows, execute 'make symlink.bat' which is located in the repo's root. | ||
+ | * Open MonoDevelop.D's Project settings | ||
+ | * Head to the Custom Command-Tab | ||
+ | * Adapt the given 'Run'-command path to MonoDevelop.exe to your system's setup. For Visual Studio, there should be a similar setting. | ||
+ | * Now you can build & debug Mono-D directly from within MonoDevelop/Visual Studio. | ||
+ | |||
+ | == Tutorials, Known Issues & Stuff == | ||
+ | |||
+ | === Build D Projects outside MonoDevelop === | ||
+ | You still need a working MonoDevelop and Mono-D installation in order to proceed with the following step!<br/> | ||
+ | Just execute <pre>mdtool build MyDSln.sln</pre> to get e.g. a D project/solution built with Mono-D's facilities.<br/> | ||
+ | <b>Note:</b> You'll first off need to find mdtool in your XamarinStudio/MonoDevelop installation. | ||
+ | On Linux, this command may look like | ||
+ | <pre>/opt/mono/bin/mdtool build MyDSln.sln</pre> | ||
+ | On Windows, this may looks like | ||
+ | <pre>"C:\Program Files (x86)\Xamarin Studio\bin\mdtool.exe" build MyDSln.sln</pre> | ||
+ | If you only have one .sln existing in a directory, just invoking mdtool inside that directory is also sufficient! | ||
+ | |||
+ | === Dub Project fails to build under OSX === | ||
+ | Generally it is to mention that XS does overwrite the system's $PATH environment variable when invoking dub or other native commands.<br/> | ||
+ | |||
+ | That overwritten $PATH does typically not contain /usr/local/bin - which is the reason why many dub setups will fail to work with Mono-D on OSX by default.<br/> | ||
+ | To fix this, just head to the 'D' -> 'Dub Settings' tab in the global options and enter e.g. | ||
+ | <code>/usr/local/bin/dub</code> | ||
+ | as 'dub executable'. | ||
+ | Then, nearly everything should work fine. | ||
+ | |||
+ | ==== Dub can't find dmd ==== | ||
+ | If you're getting a build error message like<br/> | ||
+ | <pre>dub build "XYZ" "--build=plain" | ||
+ | Error executing command build: | ||
+ | Failed to invoke the compiler dmd to determine the build platform: /bin/bash: dmd: command not found</pre> | ||
+ | , you may set up your own dub executable 'proxy' so dub finds dmd again: | ||
+ | For instance into <i>/Users/<user>/monod_dub.sh</i>: | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | #!/bin/sh | ||
+ | export PATH="$PATH:/usr/local/bin" | ||
+ | dub $* | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Now set <i>/Users/<user>/monod_dub.sh</i> to the 'D' -> 'Dub Settings' tab -> 'dub executable' option. | ||
+ | |||
+ | ==== ld can't find custom D libs ==== | ||
+ | It may also be the case that ld magically won't find your customly installed D libraries to link them in. In that case, see https://github.com/aBothe/Mono-D/issues/517 | ||
+ | |||
+ | == Additional Screenshots == | ||
+ | |||
+ | [[File:Mono-D-on-Windows-Xamarin-5.2.png]] | ||
+ | [[File:Mono-D-on-Fedora-KDE-Monodevelop-5.3.png]] | ||
+ | |||
+ | ==See also== | ||
+ | [[Mono-D Release Notes]] | ||
+ | |||
+ | [[Category:IDEs]] |
Latest revision as of 11:21, 28 August 2023
Mono-D brings D support to the cross-platform XamarinStudio/MonoDevelop IDE.
Contents
Features
- D Project management
- Managing files & resources
- Managing inter-project dependencies in a solution
- Build projects and prepare them for being deployed
- Ad hoc DUB support. Despite the package.json/dub.json file not being a native format that is supported by the Mono/.Net facilities, there's still a bunch of things wrapped for being used within MD.
- Open DUB package.json/dub.json files as projects
- Resolving package dependencies and subpackages and opening all of them as projects, too
- Build support
- ...
- Basic Visual-D project format support
- DMD, GDC, LDC, rdmd, DUB, make toolchain support
- Rich editing & refactoring facilities:
- Halfway™ decent auto code completion including pre-compile time
- template deduction & evaluation,
- mixins & mixin expression,
- expression value as well as
- compiler traits,
- op overload evaluation & deduction that is used to provide extremely more accurate information about which symbols could be accessed or typed in a particular code context
- Obligatory things like definition lookup,
- Code symbol reference highlighting,
- Semantic type identifer highlighting,
- Optional diff-based syntax highlighting (Can be toggled via pressing Ctrl+Alt+K or in the global D options),
- Diet template file highlighting.
- Mixin expression pre-compilation to see what a mixin will look like when being compiled
- Automatically generating method stubs for overridable methods
- Code declaration foldings
- User-generated foldings via
- Halfway™ decent auto code completion including pre-compile time
//region My Region
int myCodes;
//endregion
- Obligatory AST outlining for easy access of stuff declared in a D source file
- Intelligent code indentation
- Basic code formatting support which reorganizes all kinds of code elements, not only line beginnings
- Invoking a project's unit tests via pressing Ctrl+T
- ...
How to install Mono-D
Install MonoDevelop(MD)/Xamarin Studio(XS)
Note: Xamarin Studio is basically a slightly different but still generally freely available version of MonoDevelop.
In the following, MD can be seen equally to XS.
You'll need XS/MD >v5.6 to be installed for Mono-D.
On Windows/OSX
- Go to http://monodevelop.com/download, download & install the latest MonoDevelop setup. Note that there's a gtk# package required to be installed as well.
- Launch XS. Open the Help menu (Windows) or the Xamarin Studio menu (OSX) and select 'Check for updates'.
- Select the Alpha channel to be used for searching updates.
Generally it's recommended to stick to the latest 'Alpha' version of XS because only then, you'll get the very latest & most recent changes & bug fixes. In my very long experience of using XS, it's usually not the case that an Alpha version behaves unstable.
On Linux
- Check your distro's software manager for any recent MonoDevelop version and try to install that one.
MD >=5.6 is mandatory due to massive API changes etc.! - If no proper build hasn't been uploaded, go to http://simendsjo.me/files/abothe and download the .xz matching your OS architecture.
- Follow the instructions given in the readme.txt in order to deploy everything properly.
The archives are maintained by me, so please check the site regularly (like 1-2 times per month) for updates! - Also it is possible to use build.opensuse.org. Instruction for Ubuntu 14.04:
- Add apt repository: sudo sh -c "echo 'deb http://download.opensuse.org/repositories/home:/tpokorra:/mono/xUbuntu_14.04/ /' >> /etc/apt/sources.list.d/mono.list"
- Download key: wget http://download.opensuse.org/repositories/home:/tpokorra:/mono/xUbuntu_14.04/Release.key
- Add key: sudo apt-key add - < Release.key
- Update: sudo apt-get update
- Install: sudo apt-get install monodevelop-opt
- Run monodevelop-opt instead of monodevelop
Further requirements:
- libgnomeui
- xterm, gnome-terminal, mate-terminal OR konsole
Install Mono-D
- Make sure you've got dmd, optionally dub installed
Either via downloading the zip distributables or via your linux distro's package manager. The packages are usually called dmd, druntime and dtools. - Launch MD
- Click on the Tools (Windows)/Xamarin Studio (OSX) => Addin manager menu
- In the Gallery tab, hit the Refresh-button
- If there's an exception that some .mrep files could not be found,
- Open the repository drop-down menu
- click the Manage Repositories entry
- Add http://addins.monodevelop.com/Stable/Win32/5.0 (or, if it still fails: http://mono-d.alexanderbothe.com/repo)
- In the Language Bindings group, install the D Language Binding
Note:
Before installing any new version of Mono-D on Windows, make sure you never opened any D project since the last start of XS or MD.
Otherwise, you'll get some installation errors etc which are caused by the fact that dlls cannot be overwritten once being loaded.
Setup Mono-D
There are further steps required to set up Mono-D properly:
- Open Edit => Preferences
You'll find all D-related options in the Environment => D tree item. - If the dmd executable cannot be found via $PATH or %PATH, adjust the compiler's bin path in the Compiler Toolchains settings to the absolute path.
This also counts for OSX-Installations where XS is somehow not able to pass /usr/local/bin as default PATH entry..so just set the bin path over there as well! - Do the same for dub or the Win32 ResourceCompiler.zip.
- In order to get the code completion running for phobos etc., activate the Includes tab in your compiler's settings and add the following lines (which you may fit to your machine's setup, of course)
D:\Programs\D\dmd2\src\druntime\import
D:\Programs\D\dmd2\src\phobos
on Windows or the other respective paths for Linux:/usr/sha/include/dlang
or/usr/include/dmd
or for OSX:/Library/D/dmd/src
You can of course add custom globally used libraries as well.
Note that it's not sufficient to just reference the ...\dmd2\src\-path alone -- the \druntime\src\-folder will cause trouble otherwise because it then would parse runtime source codes twice and then will confuse equally named packages and modules!
Release Notes
Feedback
- IRC: #d.mono-d on Freenode.
- Github: Code completion issues or General issues
Contribute & Support
If you like Mono-D, you may support Alex with a little tip for letting Mono-D become even better :-)
If you want to get your hands dirty and work on Mono-D on your own, follow these steps:
- Uninstall Mono-D from MonoDevelop/XamarinStudio.
- On Windows, restart XS.
git clone https://github.com/aBothe/Mono-D.git
(or your own fork of the Mono-D repo)cd Mono-D
git submodule init
git submodule update
- Open up the MonoDevelop.DBinding.sln in MonoDevelop - or Visual Studio on Windows
- Build Mono-D once (so the bin/Debug-Path becomes set up)
- On Non-Windows,
sudo ln -s -d "MonoDevelop.DBinding/bin/Debug" "/usr/lib/monodevelop/AddIns/mono-d"
(adapt /usr/ to your own installation path where monodevelop has been installed to!) - On Windows, execute 'make symlink.bat' which is located in the repo's root.
- Open MonoDevelop.D's Project settings
- Head to the Custom Command-Tab
- Adapt the given 'Run'-command path to MonoDevelop.exe to your system's setup. For Visual Studio, there should be a similar setting.
- Now you can build & debug Mono-D directly from within MonoDevelop/Visual Studio.
Tutorials, Known Issues & Stuff
Build D Projects outside MonoDevelop
You still need a working MonoDevelop and Mono-D installation in order to proceed with the following step!
Just execute
mdtool build MyDSln.sln
to get e.g. a D project/solution built with Mono-D's facilities.
Note: You'll first off need to find mdtool in your XamarinStudio/MonoDevelop installation. On Linux, this command may look like
/opt/mono/bin/mdtool build MyDSln.sln
On Windows, this may looks like
"C:\Program Files (x86)\Xamarin Studio\bin\mdtool.exe" build MyDSln.sln
If you only have one .sln existing in a directory, just invoking mdtool inside that directory is also sufficient!
Dub Project fails to build under OSX
Generally it is to mention that XS does overwrite the system's $PATH environment variable when invoking dub or other native commands.
That overwritten $PATH does typically not contain /usr/local/bin - which is the reason why many dub setups will fail to work with Mono-D on OSX by default.
To fix this, just head to the 'D' -> 'Dub Settings' tab in the global options and enter e.g.
/usr/local/bin/dub
as 'dub executable'.
Then, nearly everything should work fine.
Dub can't find dmd
If you're getting a build error message like
dub build "XYZ" "--build=plain" Error executing command build: Failed to invoke the compiler dmd to determine the build platform: /bin/bash: dmd: command not found
, you may set up your own dub executable 'proxy' so dub finds dmd again: For instance into /Users/<user>/monod_dub.sh:
#!/bin/sh
export PATH="$PATH:/usr/local/bin"
dub $*
Now set /Users/<user>/monod_dub.sh to the 'D' -> 'Dub Settings' tab -> 'dub executable' option.
ld can't find custom D libs
It may also be the case that ld magically won't find your customly installed D libraries to link them in. In that case, see https://github.com/aBothe/Mono-D/issues/517