├── .editorconfig ├── .gitattributes ├── .github └── workflows │ └── build-and-test.yml ├── .gitignore ├── .gitmodules ├── CHANGES ├── LICENSE.txt ├── Makefile ├── README.md ├── TODO ├── VERSION ├── appveyor.yml ├── build ├── build.visualdproj ├── dte_idl.bat ├── sdk.bat └── sdk_libs.bat ├── build_doc.bat ├── c2d ├── Makefile ├── ast.d ├── c2d.vcproj ├── c2d.visualdproj ├── cgsched.sed ├── cpp2d.d ├── cpp2d.visualdproj ├── cpp2d_main.d ├── dgutil.d ├── dlist.d ├── dmd.c2d ├── dmd2d.d ├── dmd2d.mk ├── dmd2d_miss.cpp ├── dmd2dport.d ├── dmdgen.d ├── echoobj.mak ├── findbraces.awk ├── gendmd2d.awk ├── getsysinc.awk ├── idl2d.d ├── idl2d_main.d ├── j2d.d ├── patchast.d ├── pp.d ├── pp4d.d ├── pp4d.visualdproj ├── removepp.sed ├── tokenizer.d ├── tokutil.d ├── vsi2d.visualdproj └── win32.h ├── dfmt ├── dfmt.visualdproj ├── githash.txt └── package.d ├── doc ├── BrowseInfo.dd ├── BuildFromSource.dd ├── CompileCommands.dd ├── Coverage.dd ├── CppConversion.dd ├── Debugging.dd ├── DustMite.dd ├── Editor.dd ├── Features.dd ├── GlobalOptions.dd ├── Installation.dd ├── KnownIssues.dd ├── Profiling.dd ├── ProjectConfig.dd ├── ProjectWizard.dd ├── ReportingBugs.dd ├── Search.dd ├── StartPage.dd ├── TokenReplace.dd ├── VersionHistory.dd ├── css │ ├── codemirror.css │ ├── print.css │ └── style.css ├── dlang.org.ddoc ├── favicon.ico ├── html.ddoc ├── images │ ├── codesnippet.png │ ├── colors.png │ ├── colortest.png │ ├── colortest2.png │ ├── compile_and_run_opt.png │ ├── compiledisasm.png │ ├── compilemenu.png │ ├── completion.png │ ├── concord_mark.png │ ├── coverage.png │ ├── coverage_forever.png │ ├── coveragemargin_forever.png │ ├── cppwizard.png │ ├── d_exceptions.png │ ├── debug.png │ ├── debugeval.png │ ├── debugranges.png │ ├── dlogo.svg │ ├── dmd_directories.png │ ├── doc_config.png │ ├── download.png │ ├── download_extension2.png │ ├── download_with_dmdldc2.png │ ├── editor-options.png │ ├── extmanager.png │ ├── fullvs.png │ ├── import_completion.png │ ├── intellisense_options.png │ ├── intellisense_options2.png │ ├── ldc_compiler.png │ ├── newproject.png │ ├── objectbrowser.PNG │ ├── outlining.png │ ├── parameterinfo.png │ ├── parameterstorage.png │ ├── parameterstorage2.png │ ├── pastemenu.PNG │ ├── profiler.png │ ├── project_config.png │ ├── projectwizard.png │ ├── prop_codegen.png │ ├── prop_debug.png │ ├── prop_doc.png │ ├── searchfile.png │ ├── searchmenu.png │ ├── searchsymbol.png │ ├── showscope.png │ ├── solutionexplorer.png │ ├── strings.png │ ├── syntaxerror.png │ ├── tokenreplace.png │ ├── tokenreplacemenu.png │ ├── toolopt_project.png │ ├── vcxproject.png │ ├── vcxproject_general.png │ ├── vd_logo.png │ ├── versionhighlight.png │ ├── visuald_menu.png │ └── visuald_settings.png ├── js │ ├── codemirror-compressed.js │ ├── dlang.js │ └── run.js ├── macros.ddoc ├── news36.dd ├── vcxproject.dd └── visuald.ddoc ├── msbuild ├── ImportAfter │ ├── d.targets │ └── general_d.targets ├── ImportBefore │ ├── Default │ │ └── d.props │ └── d.props ├── d.ico ├── d2.ico ├── dbuild.props ├── dbuild │ ├── CompileD.cs │ ├── CompileDOpt.cs │ ├── MultiToolTaskVisualD.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── Strings.resx │ ├── VCProjectInterop.cs │ ├── dbuild.csproj │ └── dbuild.sln ├── dcompile.props ├── dcompile.targets ├── dcompile_defaults.props ├── di.ico ├── dmd.xml ├── general_d.snippet └── ldc.xml ├── nsis ├── Extensions │ ├── extension.vsixmanifest │ ├── vdlogo.ico │ └── visuald.pkgdef ├── Extensions_vs12 │ └── extension.vsixmanifest ├── Extensions_vs15 │ └── extension.vsixmanifest ├── LICENSE ├── dmdinstall.ini ├── register.bat ├── replaceinfile.nsh ├── uninstall_helper.nsh ├── unregister.bat └── visuald.nsi ├── sdk ├── Makefile ├── port │ ├── activdbg.d │ ├── apiquery2.d │ ├── apiset.d │ ├── apisetcconv.d │ ├── base.d │ ├── bitfields.d │ ├── cguid.d │ ├── ctype.d │ ├── dte.d │ ├── excpt.d │ ├── guiddef.d │ ├── in6addr.d │ ├── inaddr.d │ ├── kernelspecs.d │ ├── limits.d │ ├── microsoft │ │ └── visualstudio │ │ │ └── interop.d │ ├── mprapi.d │ ├── msxml.d │ ├── netioapi.d │ ├── packoff.d │ ├── packon.d │ ├── poppack.d │ ├── pp.d │ ├── propidl.d │ ├── pshpack1.d │ ├── pshpack2.d │ ├── pshpack4.d │ ├── pshpack8.d │ ├── registryroots.d │ ├── rpc.d │ ├── rpcdcep.d │ ├── rpcndr.d │ ├── servprov.d │ ├── sharedvenusids.d │ ├── specstrings.d │ ├── stdarg.d │ ├── stdlib.d │ ├── stdole2.d │ ├── stdole32.d │ ├── string.d │ ├── time.d │ ├── tvout.d │ ├── urlmon.d │ ├── vapiempguids.d │ ├── venuscmddef.d │ ├── vsi.d │ ├── vsversion_generated.d │ └── winapifamily.d ├── sources ├── test.d ├── vsi.vcproj └── vsi.visualdproj ├── stdext ├── array.d ├── com.d ├── container.d ├── ddocmacros.d ├── denseset.d ├── diffmyers.d ├── file.d ├── httpget.d ├── libconfig.d ├── path.d ├── registry.d ├── stdext.visualdproj ├── string.d ├── util.d └── xml.d ├── tools ├── 7z │ ├── 7za.exe │ └── License.txt ├── build_dcxxfilt.bat ├── cmppull.d ├── dcxxfilt.d ├── filemonitor.d ├── largeadr.d ├── mb2utf16.d ├── nostacktrace.d ├── pipedmd.d ├── testpipe.d ├── tlb2idl.d ├── tlb2idl.vcproj └── tracegc.d ├── vdc ├── abothe │ ├── .gitignore │ ├── DParserCOMServer.Tests │ │ ├── DParserCOMServer.Tests.csproj │ │ ├── Tests.cs │ │ └── packages.config │ ├── VDServer.sln │ ├── comserver │ │ ├── COM │ │ │ ├── COMHelper.cs │ │ │ ├── ExeCOMServer.cs │ │ │ ├── NativeMethod.cs │ │ │ ├── Program.cs │ │ │ └── VDServerClassFactory.cs │ │ ├── CodeSemantics │ │ │ ├── AbstractVDServerTask.cs │ │ │ ├── EditorDataProvider.cs │ │ │ ├── IdentifierTypesGenerator.cs │ │ │ ├── ReferencesListGenerator.cs │ │ │ ├── SemanticExpansionsGenerator.cs │ │ │ ├── SymbolDefinitionGenerator.cs │ │ │ ├── TooltipGenerator.cs │ │ │ └── VDServerCompletionDataGenerator.cs │ │ ├── DParserCOMServer.csproj │ │ ├── IVDServer.cs │ │ ├── NodeToolTipContentGen.cs │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── VDServer.cs │ │ ├── VDServerEditorFlags.cs │ │ └── VDserverParseCacheView.cs │ ├── register.bat │ └── testvd.d ├── ast │ ├── aggr.d │ ├── all.d │ ├── decl.d │ ├── expr.d │ ├── iasm.d │ ├── misc.d │ ├── mod.d │ ├── node.d │ ├── stmt.d │ ├── tmpl.d │ ├── type.d │ └── writer.d ├── dmdserver │ ├── dmderrors.d │ ├── dmdicon.ico │ ├── dmdinit.d │ ├── dmdlib.d │ ├── dmdlocation.d │ ├── dmdrmem.d │ ├── dmdserver.d │ ├── dmdserver.idl │ ├── dmdserver.rc │ ├── dmdserver.visualdproj │ ├── semanalysis.d │ └── semvisitor.d ├── gram_diff2.html ├── interpret.d ├── ivdserver.d ├── ivdserver.idl ├── lexer.d ├── logger.d ├── parser.visualdproj ├── parser │ ├── aggr.d │ ├── decl.d │ ├── engine.d │ ├── expr.d │ ├── iasm.d │ ├── misc.d │ ├── mod.d │ ├── stmt.d │ └── tmpl.d ├── parsertest.d ├── semantic.d ├── semanticopt.d ├── util.d ├── vdserver.d ├── vdserver.idl ├── vdserver.rc ├── vdserver.reg ├── vdserver.visualdproj ├── vdserver_d.reg ├── vdserverfactory.d └── versions.d ├── vdextensions ├── CoverageMargin.cs ├── ParamStorageAdornmentTagger.cs ├── Properties │ ├── AssemblyInfo.cs │ └── AssemblyInfo15.cs ├── gotodef.cs ├── quickinfo.cs ├── vdext15.cs ├── vdext15.csproj ├── vdextensions.cs ├── vdextensions.csproj └── vdextensions.sln ├── vdwizard ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ └── Resources.resx ├── Resources │ └── vd_logo.png ├── VDProjectWizard.cs ├── VisualDWizard.csproj ├── WizardDialog.Designer.cs ├── WizardDialog.cs ├── WizardDialog.resx ├── dwinproj.ico └── key.snk ├── visuald ├── Makefile ├── Resources │ ├── AlternateRowColor.ico │ ├── CaseSensitive.ico │ ├── Caseinsensitive.ico │ ├── Caseinsensitive.xcf │ ├── CombineColumns.ico │ ├── DAboutBox.ico │ ├── DAboutLogo.ico │ ├── DImageList.bmp │ ├── DSplashScreenIcon.bmp │ ├── GroupByType.ico │ ├── RegExp.ico │ ├── SearchFile.ico │ ├── SearchSymbol.ico │ ├── WholeWord.ico │ ├── ascend.ico │ ├── closeOnReturn.ico │ ├── closeOnReturn.xcf │ ├── completionset.bmp │ ├── dconsole.ico │ ├── descend.ico │ ├── dfile.ico │ ├── difile.ico │ ├── dub.ico │ ├── dwinproj.ico │ ├── faninout.ico │ ├── fulldeco.ico │ ├── pkgcmd.vsct │ ├── refresh.ico │ ├── removetrace.ico │ ├── resources.h │ └── settrace.ico ├── Templates │ ├── CodeSnippets │ │ ├── Snippets │ │ │ ├── blockcomment.snippet │ │ │ ├── class.snippet │ │ │ ├── ctor.snippet │ │ │ ├── else.snippet │ │ │ ├── for.snippet │ │ │ ├── if.snippet │ │ │ ├── version.snippet │ │ │ └── while.snippet │ │ └── SnippetsIndex.xml │ ├── Items │ │ ├── empty.d │ │ ├── hello.d │ │ └── items.vsdir │ ├── ProjectItems │ │ ├── DUB │ │ │ ├── minimal │ │ │ │ ├── ConsoleApp.visualdproj │ │ │ │ ├── app.d │ │ │ │ ├── dub.sdl │ │ │ │ └── minimal.vstemplate │ │ │ └── vibe │ │ │ │ ├── ServerApp.visualdproj │ │ │ │ ├── app.d │ │ │ │ ├── dub.json │ │ │ │ └── dub_vibe_d.vstemplate │ │ ├── VCProject │ │ │ ├── VCProject.vstemplate │ │ │ ├── WindowsApp.vcxproj │ │ │ ├── WindowsApp.vcxproj.filters │ │ │ ├── dwinproj.ico │ │ │ ├── main.cpp │ │ │ ├── main.d │ │ │ ├── stdafx.cpp │ │ │ └── stdafx.h │ │ └── VDProject │ │ │ ├── VDProject.vstemplate │ │ │ ├── WindowsApp.visualdproj │ │ │ ├── main.d │ │ │ └── vdproj.ico │ ├── ProjectItems_vs9 │ │ ├── ConsoleApp │ │ │ ├── ConsoleApp.visualdproj │ │ │ ├── ConsoleApp.vstemplate │ │ │ └── main.d │ │ ├── ConsoleDLG │ │ │ ├── ConsoleApp.visualdproj │ │ │ ├── ConsoleApp.vstemplate │ │ │ └── main.d │ │ ├── ConsoleDMDGDC │ │ │ ├── ConsoleApp.visualdproj │ │ │ ├── ConsoleApp.vstemplate │ │ │ └── main.d │ │ ├── ConsoleDMDLDC │ │ │ ├── ConsoleApp.visualdproj │ │ │ ├── ConsoleApp.vstemplate │ │ │ └── main.d │ │ ├── DUB │ │ │ ├── minimal │ │ │ │ ├── ConsoleApp.visualdproj │ │ │ │ ├── app.d │ │ │ │ ├── dub.sdl │ │ │ │ └── minimal.vstemplate │ │ │ └── vibe │ │ │ │ ├── ServerApp.visualdproj │ │ │ │ ├── app.d │ │ │ │ ├── dub.json │ │ │ │ └── dub_vibe_d.vstemplate │ │ ├── DynamicLib │ │ │ ├── DynamicLib.visualdproj │ │ │ ├── DynamicLib.vstemplate │ │ │ ├── dll.def │ │ │ └── dllmain.d │ │ ├── StaticLib │ │ │ ├── StaticLib.visualdproj │ │ │ ├── StaticLib.vstemplate │ │ │ └── lib.d │ │ └── WindowsApp │ │ │ ├── WindowsApp.visualdproj │ │ │ ├── WindowsApp.vstemplate │ │ │ └── winmain.d │ ├── Projects │ │ ├── DTemplates.vsdir │ │ ├── DUB │ │ │ ├── DUBTemplates.VSTDIR │ │ │ └── DUBTemplates.vsdir │ │ └── DubTemplates.vsdir │ ├── Projects_vs9 │ │ ├── VDTemplates.VSTDIR │ │ └── VDTemplates.vsdir │ ├── VCItems │ │ └── ditems.vsdir │ └── Wizards │ │ └── package.vsz ├── automation.d ├── build.d ├── chiercontainer.d ├── chiernode.d ├── colorizer.d ├── completion.d ├── comutil.d ├── config.d ├── cppwizard.d ├── dimagelist.d ├── dlangsvc.d ├── dllmain.d ├── dpackage.d ├── dproject.d ├── expansionprovider.d ├── fileutil.d ├── getmsobj.d ├── help.d ├── hierarchy.d ├── hierutil.d ├── intellisense.d ├── lexutil.d ├── library.d ├── logutil.d ├── oledatasource.d ├── pkgutil.d ├── profiler.d ├── propertypage.d ├── register.d ├── searchsymbol.d ├── simpleparser.d ├── stringutil.d ├── taskprovider.d ├── tokenreplace.d ├── tokenreplacedialog.d ├── trackprojectdocument.d ├── updates.d ├── vdextensions.d ├── vdserverclient.d ├── viewfilter.d ├── visuald.def ├── visuald.rc ├── visuald.vcproj ├── visuald.visualdproj ├── vscommands.d ├── winctrl.d ├── windows.d ├── wmmsg.d ├── workaround.d └── xmlwrap.d └── visuald_vs10.sln /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*.{c,h,d,di,dd}] 4 | end_of_line = crlf 5 | insert_final_newline = true 6 | indent_style = tab 7 | indent_size = 4 8 | trim_trailing_whitespace = true 9 | charset = utf-8 10 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | *.visualdproj eol=crlf 2 | -------------------------------------------------------------------------------- /.github/workflows/build-and-test.yml: -------------------------------------------------------------------------------- 1 | name: build visuald 2 | 3 | on: [push, pull_request] 4 | 5 | env: 6 | # Path to the solution file relative to the root of the project. 7 | SOLUTION_FILE_PATH: src/visuald_vs10.vcxproj 8 | 9 | # Configuration type to build. 10 | BUILD_CONFIGURATION: Release 11 | BUILD_PLATFORM: x64 12 | BUILD_PLATFORM_TOOLSET: v142 13 | 14 | jobs: 15 | build: 16 | # windows-latest doesn't have .net framework 4.0 17 | runs-on: windows-2019 18 | 19 | steps: 20 | - name: Checkout visuald 21 | uses: actions/checkout@v3 22 | with: 23 | path: visuald/trunk 24 | submodules: recursive 25 | # - name: Checkout cv2pdb 26 | # uses: actions/checkout@v3 27 | # with: 28 | # repository: rainers/cv2pdb 29 | # path: cv2pdb/trunk 30 | # - name: Checkout mago 31 | # uses: actions/checkout@v3 32 | # with: 33 | # repository: rainers/mago 34 | # path: mago 35 | - name: Prepare D compiler 36 | uses: dlang-community/setup-dlang@v1 37 | with: 38 | compiler: dmd-2.098.1 39 | - name: Add MSBuild to PATH 40 | uses: microsoft/setup-msbuild@v1.0.2 41 | - name: Setup VS environment 42 | uses: seanmiddleditch/gha-setup-vsdevenv@v4 43 | - name: Download Visual D 44 | uses: supplypike/setup-bin@v1 45 | with: 46 | uri: 'https://github.com/dlang/visuald/releases/download/v1.3.0/VisualD-v1.3.0.exe' 47 | name: 'VisualD-v1.3.0.exe' 48 | version: '1.3.0' 49 | command: ./VisualD-v1.3.0.exe /S 50 | - name: Register visuald 51 | run: | 52 | reg add "HKLM\SOFTWARE\DMD" /v "InstallationDir" /t REG_SZ /d "c:\hostedtoolcache\windows\dc\dmd-2.098.1\x64" /reg:32 /f 53 | reg add "HKLM\SOFTWARE\VisualD" /v "DMDInstallDir" /t REG_SZ /d "c:\hostedtoolcache\windows\dc\dmd-2.098.1\x64\dmd2" /reg:32 /f 54 | - name: Build visuald 55 | working-directory: visuald/trunk 56 | run: nmake d_modules 57 | - name: Upload binaries 58 | uses: actions/upload-artifact@v4 59 | if: failure() 60 | with: 61 | name: bin 62 | path: visuald/trunk/bin 63 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | /bin 3 | *.suo 4 | /sdk/lib 5 | /sdk/win32 6 | /sdk/sdk_libs 7 | /sdk/vsi_sources 8 | /sdk/vsi 9 | vdc/abothe/comserver/obj 10 | vdextensions/obj 11 | *.userprefs 12 | /msbuild/dbuild/obj 13 | /msbuild/dbuild/bin 14 | /msbuild/dbuild/.vs 15 | /test 16 | .vs 17 | /msbuild/dbuild/assemblies 18 | /vdextensions/assembly 19 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "vdc/abothe/Parser"] 2 | path = vdc/abothe/Parser 3 | url = https://github.com/rainers/D_Parser.git 4 | [submodule "vdc/dmdserver/dmd"] 5 | path = vdc/dmdserver/dmd 6 | url = https://github.com/rainers/dmd.git 7 | [submodule "dfmt/dfmt"] 8 | path = dfmt/dfmt 9 | url = https://github.com/rainers/dfmt.git 10 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | Boost Software License - Version 1.0 - August 17th, 2003 2 | 3 | Permission is hereby granted, free of charge, to any person or organization 4 | obtaining a copy of the software and accompanying documentation covered by 5 | this license (the "Software") to use, reproduce, display, distribute, 6 | execute, and transmit the Software, and to prepare derivative works of the 7 | Software, and to permit third-parties to whom the Software is furnished to 8 | do so, all subject to the following: 9 | 10 | The copyright notices in the Software and this entire statement, including 11 | the above license grant, this restriction and the following disclaimer, 12 | must be included in all copies of the Software, in whole or in part, and 13 | all derivative works of the Software, unless such copies or derivative 14 | works are solely in the form of machine-executable object code generated by 15 | a source language processor. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT 20 | SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE 21 | FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, 22 | ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 23 | DEALINGS IN THE SOFTWARE. 24 | -------------------------------------------------------------------------------- /VERSION: -------------------------------------------------------------------------------- 1 | #define VERSION_MAJOR 1 2 | #define VERSION_MINOR 4 3 | #define VERSION_REVISION 1 4 | #define VERSION_BETA -beta 5 | #define VERSION_BUILD 3 6 | -------------------------------------------------------------------------------- /build/dte_idl.bat: -------------------------------------------------------------------------------- 1 | rem @echo off 2 | rem expecting 3 | rem - tlb2idl.exe with path as the first argument 4 | rem - output file as second arg to remember build success 5 | rem - WindowsSdkDir to be set 6 | 7 | set TLB2IDL=%~1 8 | if "%TLB2IDL%" == "" (echo please specify the path to tlb2idl.exe as the first argument && exit /B 1) 9 | if not exist "%TLB2IDL%" (echo %1 does not exist && exit /B 1) 10 | 11 | set OUT=%~2 12 | if "%OUT%" == "" (echo please specify the output path to remember succesful builds as second argument && exit /B 1) 13 | if exist "%OUT%" del "%OUT%" 14 | 15 | set DTE_IDL_PATH=..\sdk\vsi\idl 16 | if not exist ..\sdk\vsi\nul md ..\sdk\vsi 17 | if not exist %DTE_IDL_PATH%\nul md %DTE_IDL_PATH% 18 | 19 | set MSENV=%COMMONPROGRAMFILES%\Microsoft Shared\MSEnv 20 | if not exist "%MSENV%\dte80.olb" set MSENV=%COMMONPROGRAMFILES(x86)%\Microsoft Shared\MSEnv 21 | if not exist "%MSENV%\dte80.olb" (echo "%MSENV%\dte80.olb" does not exist && exit /B 1) 22 | 23 | set IVIEWER= 24 | if "%IVIEWER%" == "" if exist "%WindowsSdkVerBinPath%\x86\iviewers.dll" set IVIEWER=%WindowsSdkVerBinPath%\x86\iviewers.dll 25 | if "%IVIEWER%" == "" if exist "%WindowsSdkDir%\bin\x86\iviewers.dll" set IVIEWER=%WindowsSdkDir%\bin\x86\iviewers.dll 26 | if "%IVIEWER%" == "" if exist "%WindowsSdkDir%\bin\iviewers.dll" set IVIEWER=%WindowsSdkDir%\bin\iviewers.dll 27 | if "%IVIEWER%" == "" if exist "%WindowsSdkDir%\bin\%WindowsSdkVersion%\x86\iviewers.dll" set IVIEWER=%WindowsSdkDir%\bin\%WindowsSdkVersion%\x86\iviewers.dll 28 | if "%IVIEWER%" == "" (echo "iviewer.dll" not found with WindowsSdkDir="%WindowsSdkDir%", WindowsSdkVersion=%WindowsSdkVersion% && exit /B 1) 29 | 30 | echo "%TLB2IDL%" "%MSENV%\dte80.olb" "%DTE_IDL_PATH%\dte80.idl" "%IVIEWER%" 31 | 32 | "%TLB2IDL%" "%MSENV%\dte80.olb" "%DTE_IDL_PATH%\dte80.idl" "%IVIEWER%" 33 | if errorlevel 1 exit /B 1 34 | "%TLB2IDL%" "%MSENV%\dte80a.olb" "%DTE_IDL_PATH%\dte80a.idl" "%IVIEWER%" 35 | if errorlevel 1 exit /B 1 36 | "%TLB2IDL%" "%MSENV%\dte90.olb" "%DTE_IDL_PATH%\dte90.idl" "%IVIEWER%" 37 | if errorlevel 1 exit /B 1 38 | echo Success > "%OUT%" 39 | exit /B 0 40 | -------------------------------------------------------------------------------- /build/sdk.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | rem expecting 3 | rem - vsi2d.exe with path as the first argument 4 | rem - output file as second arg to remember build success 5 | rem - WindowsSdkDir to be set 6 | 7 | set VSI2D=%~1 8 | if "%VSI2D%" == "" (echo Error: please specify the path to vsi2d.exe as the first argument && exit /B 1) 9 | if not exist "%VSI2D%" (echo %1 does not exist && exit /B 1) 10 | 11 | set OUT=%~2 12 | if "%OUT%" == "" (echo Error: please specify the output path to remember succesful builds as second argument && exit /B 1) 13 | if exist "%OUT%" del "%OUT%" 14 | 15 | if "%WindowsSdkDir%" == "" (echo Error: environment variable WindowsSdkDir not set && exit /B 1) 16 | 17 | set DTE_IDL_PATH=..\sdk\vsi\idl 18 | if not exist ..\sdk\vsi\nul md ..\sdk\vsi 19 | if not exist ..\sdk\win32\nul md ..\sdk\win32 20 | if not exist %DTE_IDL_PATH%\nul md %DTE_IDL_PATH% 21 | 22 | if "%WindowsSDKVersion%" == "\" set WindowsSDKVersion=%UCRTVersion% 23 | if "%WindowsSDKVersion%" == "" set WindowsSDKVersion=%UCRTVersion% 24 | set WINSDKINC= 25 | if not "%WindowsSDKVersion%" == "" if exist "%WindowsSdkDir%\include\%WindowsSDKVersion%\um\windows.h" set WINSDKINC=%WindowsSdkDir%\include\%WindowsSDKVersion% 26 | if "%WINSDKINC%" == "" set WINSDKINC=%WindowsSdkDir%\include 27 | if not exist "%WINSDKINC%\windows.h" if not exist "%WINSDKINC%\um\windows.h" (echo Error: could not detect the Windows SDK && exit /B 1) 28 | 29 | set VSISDKINC= 30 | if "%VSISDKINC%" == "" if not "%VSSDK150Install%" == "" set VSISDKINC=%VSSDK150Install% 31 | if "%VSISDKINC%" == "" if not "%VSSDK140Install%" == "" set VSISDKINC=%VSSDK140Install% 32 | if "%VSISDKINC%" == "" if not "%VSSDK120Install%" == "" set VSISDKINC=%VSSDK120Install% 33 | if "%VSISDKINC%" == "" if not "%VSSDK110Install%" == "" set VSISDKINC=%VSSDK110Install% 34 | if "%VSISDKINC%" == "" if not "%VSSDK100Install%" == "" set VSISDKINC=%VSSDK100Install% 35 | if "%VSISDKINC%" == "" if not "%VSSDK90Install%" == "" set VSISDKINC=%VSSDK90Install% 36 | if "%VSISDKINC%" == "" if not "%VSSDK80Install%" == "" set VSISDKINC=%VSSDK80Install% 37 | if "%VSISDKINC%" == "" (echo Error: could not detect the Visual Studio SDK && exit /B 1) 38 | 39 | if not exist "%VSISDKINC%\VisualStudioIntegration\Common\Inc\textmgr.h" (echo unexpected Visual Studio SDK installation at "%VSISDKINC%" && exit /B 1) 40 | 41 | echo Translating Windows SDK and Visual Studio SDK to D, this can take several minutes. Please be patient. 42 | echo "%VSI2D%" --vsi="%VSISDKINC:\=/%" --win="%WINSDKINC:\=/%" --dte="%DTE_IDL_PATH%" --sdk=..\sdk 43 | "%VSI2D%" --vsi="%VSISDKINC:\=/%" --win="%WINSDKINC:\=/%" --dte="%DTE_IDL_PATH%" --sdk=..\sdk 44 | if errorlevel 1 exit /B 1 45 | 46 | echo Translation successful! 47 | echo Visual Studio might now prompt to reload the vsi project, but cannot do so because the build is still running. 48 | echo Please reload the solution manually. 49 | echo Success > "%OUT%" 50 | exit /B 0 51 | -------------------------------------------------------------------------------- /build/sdk_libs.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | rem expecting 3 | rem - vsi2d.exe with path as the first argument 4 | rem - output file as second arg to remember build success 5 | rem - WindowsSdkDir to be set 6 | 7 | set VSI2D=%~1 8 | if "%VSI2D%" == "" (echo Error: please specify the path to vsi2d.exe as the first argument && exit /B 1) 9 | if not exist "%VSI2D%" (echo %1 does not exist && exit /B 1) 10 | 11 | set OUT=%~2 12 | if "%OUT%" == "" (echo Error: please specify the output path to remember succesful builds as second argument && exit /B 1) 13 | if exist "%OUT%" del "%OUT%" 14 | 15 | if not exist ..\sdk\lib\nul md ..\sdk\lib 16 | 17 | set LIBS=kernel32.lib user32.lib winspool.lib advapi32.lib 18 | set LIBS=%LIBS% comdlg32.lib gdi32.lib ole32.lib rpcrt4.lib shell32.lib winmm.lib 19 | set LIBS=%LIBS% wsock32.lib comctl32.lib oleaut32.lib ws2_32.lib odbc32.lib winhttp.lib onecore.lib 20 | 21 | echo WindowsSdkDir=%WindowsSdkDir% 22 | set WINSDKLIB= 23 | if "%WINSDKLIB%" == "" if exist "%WindowsSdkDir%\lib\%WindowsSDKLibVersion%\um\x86\kernel32.lib" set WINSDKLIB=%WindowsSdkDir%\lib\%WindowsSDKLibVersion%\um\x86 24 | if "%WINSDKLIB%" == "" if exist "%WindowsSdkDir%\lib\%WindowsSDKVersion%\um\x86\kernel32.lib" set WINSDKLIB=%WindowsSdkDir%\lib\%WindowsLibVersion%\um\x86 25 | if "%WINSDKLIB%" == "" if exist "%WindowsSdkDir%\lib\winv6.3\um\x86\kernel32.lib" set WINSDKLIB=%WindowsSdkDir%\lib\winv6.3\um\x86 26 | if "%WINSDKLIB%" == "" if exist "%WindowsSdkDir%\lib\win8\um\x86\kernel32.lib" set WINSDKLIB=%WindowsSdkDir%\lib\win8\um\x86 27 | if "%WINSDKLIB%" == "" if exist "%WindowsSdkDir%\lib\kernel32.lib" set WINSDKLIB=%WindowsSdkDir%\lib 28 | if "%WINSDKLIB%" == "" (echo Error: could not detect the Windows SDK library folder && exit /B 1) 29 | 30 | set COFFIMPLIB=c:\l\dmc\bin\coffimplib.exe 31 | if not exist %COFFIMPLIB% set COFFIMPLIB=%DMDInstallDir%\windows\bin\coffimplib.exe 32 | if not exist %COFFIMPLIB% set COFFIMPLIB=coffimplib 33 | %coffimplib% >nul 2>&1 34 | if errorlevel 9000 (echo Error: cannot execute %COFFIMPLIB%, please add to PATH && exit /B 1) 35 | 36 | for %%f in (%LIBS%) do ( 37 | %COFFIMPLIB% "%WINSDKLIB%\%%f" ..\sdk\lib\%%f 38 | if errorlevel 1 exit /B 1 39 | ) 40 | 41 | echo Success > "%OUT%" 42 | exit /B 0 43 | -------------------------------------------------------------------------------- /build_doc.bat: -------------------------------------------------------------------------------- 1 | setlocal 2 | set DMD=c:\s\d\rainers\windows\bin\dmd.exe 3 | rem set WEB=m:\s\d\rainers\web\visuald 4 | set WEB=c:\s\d\visuald\gh-pages\visuald 5 | set CP=c:\u\gnuwin\cp.exe 6 | 7 | set SRC= doc/ReportingBugs.dd 8 | set SRC=%SRC% doc/StartPage.dd 9 | set SRC=%SRC% doc/ReportingBugs.dd 10 | set SRC=%SRC% doc/BuildFromSource.dd 11 | set SRC=%SRC% doc/KnownIssues.dd 12 | set SRC=%SRC% doc/Installation.dd 13 | set SRC=%SRC% doc/BrowseInfo.dd 14 | set SRC=%SRC% doc/Profiling.dd 15 | set SRC=%SRC% doc/Coverage.dd 16 | set SRC=%SRC% doc/CppConversion.dd 17 | set SRC=%SRC% doc/Debugging.dd 18 | set SRC=%SRC% doc/ProjectConfig.dd 19 | set SRC=%SRC% doc/TokenReplace.dd 20 | set SRC=%SRC% doc/Search.dd 21 | set SRC=%SRC% doc/Editor.dd 22 | set SRC=%SRC% doc/ProjectWizard.dd 23 | set SRC=%SRC% doc/GlobalOptions.dd 24 | set SRC=%SRC% doc/Features.dd 25 | set SRC=%SRC% doc/VersionHistory.dd 26 | set SRC=%SRC% doc/News36.dd 27 | set SRC=%SRC% doc/CompileCommands.dd 28 | set SRC=%SRC% doc/DustMite.dd 29 | set SRC=%SRC% doc/vcxproject.dd 30 | 31 | set DDOC=doc/macros.ddoc doc/html.ddoc doc/dlang.org.ddoc doc/visuald.ddoc 32 | rem ..\..\rainers\d-programming-language.org\dlang.org.ddoc 33 | 34 | if not exist %WEB% md %WEB% 35 | if not exist %WEB%\images md %WEB%\images 36 | %cp% -u doc/images/* %WEB%\images 37 | 38 | if not exist %WEB%\css md %WEB%\css 39 | %cp% -u doc/css/* %WEB%\css 40 | 41 | if not exist %WEB%\js md %WEB%\js 42 | %cp% -u doc/js/* %WEB%\js 43 | 44 | %cp% -u doc/favicon.ico %WEB% 45 | 46 | %DMD% -Dd%WEB% -o- -w %DDOC% %SRC% 47 | 48 | -------------------------------------------------------------------------------- /c2d/cgsched.sed: -------------------------------------------------------------------------------- 1 | 2 | /__file__/d 3 | 4 | /static unsigned long oprw/,/;/s/\([^,]*\),\([^,]*\),/{\1,\2},/ 5 | 6 | /static unsigned long grprw/,/;/{ 7 | s/\([^,]*\),\([^,]*\),/{\1,\2},/ 8 | s/\(\/\/ Grp 1\)/{\1/ 9 | s/\(\/\/ Grp [35]\)/}, {\1/ 10 | s/};/} };/ 11 | } 12 | 13 | /static unsigned long grpf1/,/;/{ 14 | s/\([^,]*\),\([^,]*\),/{\1,\2},/ 15 | s/\(\/\/ 0xD8\)/{\1/ 16 | s/\(\/\/ 0xD[9A-F]\)/}, {\1/ 17 | s/};/} };/ 18 | } 19 | 20 | /static unsigned char uopsgrpf1/,/;/{ 21 | s/\([^,]*\),\([^,]*\),/{\1,\2},/ 22 | s/\(\/\/ 0xD8\)/{\1/ 23 | s/\(\/\/ 0xD[9A-F]\)/}, {\1/ 24 | s/};/} };/ 25 | } 26 | -------------------------------------------------------------------------------- /c2d/dmd.c2d: -------------------------------------------------------------------------------- 1 | [Settings] 2 | inputType=0 3 | writeIntermediate=true 4 | outputDir=c:\tmp\d\dmd2 5 | inputDir=c:\tmp\d\dmd 6 | keywordPrefix=d_ 7 | packagePrefix=dmd 8 | tabSize=8 9 | 10 | [inputFiles] 11 | *.h *.c 12 | -impcnvgen.c -idgen.c 13 | -libmach.c -libelf.c 14 | -toelfdebug.c -toir.c -iasm.c 15 | -utf.c 16 | 17 | [codePrefix] 18 | // converted 19 | module MODULENAME; 20 | 21 | import all; 22 | 23 | [versionDefines] 24 | 25 | [expandConditionals] 26 | _WIN32=1 27 | DMDV2=1 28 | DMDV1=0 29 | IN_GCC=0 30 | TARGET_WINDOS=1 31 | TARGET_OSX=0 32 | TARGET_LINUX=0 33 | TARGET_NET=0 34 | TARGET_FREEBSD=0 35 | TARGET_OPENBSD=0 36 | TARGET_SOLARIS=0 37 | OMFOBJ=1 38 | ELFOBJ=0 39 | MACHOBJ=0 40 | 0=0 1=1 41 | WINDOWS_SEH=0 42 | MEM_DEBUG=0 43 | X Y 44 | __DMC__=0 45 | STRUCTTHISREF=0 46 | DEBUG=1 47 | START 48 | PERFORM_UNITTEST=0 49 | UNA_INTERPRET 50 | ASSIGNEXP 51 | BIN_INTERPRET2 52 | BIN_INTERPRET 53 | BIN_ASSIGN_INTERPRET 54 | BIN_ASSIGN_INTERPRET_CTFE 55 | UNA_INTERPRET 56 | DOUBLE SINGLE 57 | ISTYPE ISDSYMBOL DUMP 58 | 59 | [userValueTypes] 60 | [userClassTypes] 61 | 62 | [replaceTokenPre] 63 | operator== => opEqual 64 | operator!= => opNotEqual 65 | operator bool => bool opCast 66 | operator* => opMul 67 | operator/ => opDiv 68 | 69 | [replaceTokenPost] 70 | -------------------------------------------------------------------------------- /c2d/echoobj.mak: -------------------------------------------------------------------------------- 1 | 2 | include dmd\win32.mak 3 | 4 | echo_obj: 5 | echo $(OBJS) 6 | -------------------------------------------------------------------------------- /c2d/findbraces.awk: -------------------------------------------------------------------------------- 1 | BEGIN{ 2 | braces = 0; 3 | } 4 | { 5 | len=length($0); 6 | closing = ""; 7 | for(p = 1; p <= len; p++) 8 | { 9 | if (substr($0,p,1) == "{") 10 | { 11 | braces++; 12 | open[braces] = NR; 13 | } 14 | if (substr($0,p,1) == "}") 15 | { 16 | closing = closing " " open[braces]; 17 | braces--; 18 | } 19 | } 20 | printf("%d %s", braces, $0); 21 | if(closing != "") 22 | printf(" // closing %s", closing); 23 | printf("\n"); 24 | } 25 | -------------------------------------------------------------------------------- /c2d/getsysinc.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | sysindent = 0; 3 | } 4 | 5 | { 6 | if(substr($1,1,1) == "'") 7 | { 8 | indent = 0; 9 | while(substr($0,indent,1) == " ") 10 | indent++; 11 | 12 | if(sysindent == 0 || indent <= sysindent) 13 | { 14 | sysindent = 0; 15 | if(substr($1,2,length(DMC)) == DMC) 16 | { 17 | sysindent = indent; 18 | print "#include \"" substr($1,2,length($1) - 2) "\""; 19 | } 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /c2d/idl2d_main.d: -------------------------------------------------------------------------------- 1 | // This file is part of Visual D 2 | // 3 | // Visual D integrates the D programming language into Visual Studio 4 | // Copyright (c) 2010 by Rainer Schuetze, All Rights Reserved 5 | // 6 | // Distributed under the Boost Software License, Version 1.0. 7 | // See accompanying file LICENSE.txt or copy at http://www.boost.org/LICENSE_1_0.txt 8 | // 9 | /////////////////////////////////////////////////////////////////////// 10 | // 11 | // idl2d - convert IDL or header files to D 12 | module c2d.idl2d_main; 13 | import c2d.idl2d; 14 | 15 | int main(string[] argv) 16 | { 17 | idl2d inst = new idl2d; 18 | return inst.main(argv); 19 | } 20 | 21 | 22 | -------------------------------------------------------------------------------- /dfmt/githash.txt: -------------------------------------------------------------------------------- 1 | v0.13.2-3-ge6199aa 2 | -------------------------------------------------------------------------------- /dfmt/package.d: -------------------------------------------------------------------------------- 1 | // integration of https://github.com/dlang-community/dfmt 2 | 3 | module dfmt; 4 | import dfmt.config : Config; 5 | 6 | pragma(mangle,"dfmt_format") 7 | pragma(inline, false) // could prevent semantic analysis with -inine, but does not 8 | bool dfmt_format(string source_desc, string buffer, ref string output) 9 | { 10 | 11 | Config* formatterConfig; 12 | Config config; 13 | if (!formatterConfig) 14 | { 15 | import dfmt.editorconfig; 16 | 17 | config.initializeWithDefaults(); 18 | Config fileConfig = getConfigFor!Config(source_desc); 19 | fileConfig.pattern = "*.d"; 20 | config.merge(fileConfig, source_desc); 21 | formatterConfig = &config; 22 | } 23 | 24 | try 25 | { 26 | import std.array; 27 | Appender!(char[]) app; 28 | app.reserve(buffer.length); 29 | bool rc = _format(source_desc, cast(ubyte[])buffer, app, formatterConfig); 30 | output = cast(string) app.data; 31 | return rc; 32 | } 33 | catch(Exception e) 34 | { 35 | output = buffer; 36 | return false; 37 | } 38 | } 39 | 40 | // same as dfmt.formatter.format, but with parser errors nuked 41 | bool _format(OutputRange)(string source_desc, ubyte[] buffer, OutputRange output, Config* formatterConfig) 42 | { 43 | import dparse.lexer; 44 | import dparse.parser; 45 | import dparse.rollback_allocator; 46 | import dfmt.formatter; 47 | import dfmt.ast_info; 48 | import dfmt.indentation; 49 | import dfmt.tokens; 50 | import dfmt.wrapping; 51 | import std.array; 52 | 53 | LexerConfig config; 54 | config.stringBehavior = StringBehavior.source; 55 | config.whitespaceBehavior = WhitespaceBehavior.skip; 56 | LexerConfig parseConfig; 57 | parseConfig.stringBehavior = StringBehavior.source; 58 | parseConfig.whitespaceBehavior = WhitespaceBehavior.skip; 59 | StringCache cache = StringCache(StringCache.defaultBucketCount); 60 | ASTInformation astInformation; 61 | RollbackAllocator allocator; 62 | auto parseTokens = getTokensForParser(buffer, parseConfig, &cache); 63 | auto mod = parseModule(parseTokens, source_desc, &allocator, &dump_message); 64 | auto visitor = new FormatVisitor(&astInformation); 65 | visitor.visit(mod); 66 | astInformation.cleanup(); 67 | auto tokenRange = byToken(buffer, config, &cache); 68 | auto app = appender!(Token[])(); 69 | for (; !tokenRange.empty(); tokenRange.popFront()) 70 | app.put(tokenRange.front()); 71 | auto tokens = app.data; 72 | if (!tokenRange.messages.empty) 73 | return false; 74 | auto depths = generateDepthInfo(tokens); 75 | auto tokenFormatter = TokenFormatter!OutputRange(buffer, tokens, depths, 76 | output, &astInformation, formatterConfig); 77 | tokenFormatter.format(); 78 | return true; 79 | } 80 | 81 | void dump_message(string fileName , size_t line, size_t column, string message, bool isError) 82 | { 83 | } 84 | -------------------------------------------------------------------------------- /doc/BrowseInfo.dd: -------------------------------------------------------------------------------- 1 | Ddoc 2 | 3 | $(P Quite a few functions of Visual D rely on proper browse information being generated by the compiler. 4 | These are files listing classes, functions, etc. and their types and source location. The file format 5 | used is JSON, that's why they are often referred to as JSON-files here. Generating these should be 6 | enabled on the project configuration page "Documentation":) 7 | 8 | $(IMG_CENTER images/prop_doc.png) 9 | 10 | $(P Apart from the browse information of the projects in the solutions, other JSON files can be stored 11 | in the directories given in the global options.) 12 | 13 | $(H2 Browse information for the standard runtime library) 14 | 15 | $(P To build browse information for the standard runtime library, you can use the command 16 | "Build phobos browse info" from the Visual D menu. This will compile the JSON files from 17 | the DMD installation given on the global options page.) 18 | 19 | $(P The files will be written to the first directory of the JSON paths specified on the same 20 | page. If none is given, a directory in the Visual D installation folder is used. Please make 21 | sure that you have write access to that directory.) 22 | 23 | $(H2 Object Browser and Class View) 24 | 25 | $(P The browse information read from the JSON files can now be explored by the Visual Studio 26 | Object Browser and Class View.) 27 | 28 | $(IMG_CENTER images/objectbrowser.PNG) 29 | 30 | Macros: 31 | TITLE=Browse Information -------------------------------------------------------------------------------- /doc/Coverage.dd: -------------------------------------------------------------------------------- 1 | Ddoc 2 | 3 | $(P DMD comes with an option to instrument an executable for coverage analysis 4 | during its execution. You can enable it on the project configuration page "Code Generation".) 5 | 6 | $(IMG_CENTER images/prop_codegen.png) 7 | 8 | $(P With code coverage enabled the executable will record 9 | the source code lines that have been executed and will mark the lines that have 10 | code generated but are never executed. This information is written into files named as the 11 | source files but with extension ".lst".) 12 | 13 |
14 | $(P If you enable option "Colorize Coverage" in 15 | the Visual D colorizer settings (reachable through the "Open Language Options..." entry 16 | in the Visual D menu), these lines will be highlighted in the editor. The highlighting will not show 17 | up unless the lst-file is newer than the source file as it will probably be out of sync 18 | otherwise. 19 | ) 20 | 21 | 22 | $(IMG_CENTER images/coverage_forever.png) 23 |
24 | 25 | $(P If you start editing the source file Visual D will try to keep coverage information in sync. 26 | If you want to get rid of the coverage coloring, just resave the source file. 27 | Visual D will assume the coverage is invalid then and stop displaying it. 28 | ) 29 | 30 |
31 | $(P Enabling "Show coverage margin" on the same options page will add a column 32 | to the editor window that displays the exact coverage counters for each line.) 33 | 34 | $(P The very first line contains the percentage of covered source lines with generated 35 | code in the module.) 36 | 37 | $(P [Visual Studio 2008 displays the coverage margin as an overlay on the right side 38 | of the editor window.]) 39 | 40 | 41 | $(IMG_CENTER images/coveragemargin_forever.png) 42 |
43 | 44 | This option can be combined with the "Compile and Run" command to easily test 45 | the code coverage of unittests within a module. See $(LINK2 News36.html, Unit testing and code coverage) 46 | for an example. 47 | 48 | Macros: 49 | TITLE=Code Coverage 50 | 51 | -------------------------------------------------------------------------------- /doc/DustMite.dd: -------------------------------------------------------------------------------- 1 | Ddoc 2 | 3 | $(P Every now and then, you might run into a build problem that might look like a compiler issue. 4 | Your first step should be to search D's bug tracking system at $(LINK https://issues.dlang.org/). 5 | If that doesn't help you, you should consider filing a bug report yourself. This should 6 | include a reduced test case, so the people working on improving the compiler don't have 7 | to work through all your source code (if you can release it to the public to begin with). 8 | ) 9 | 10 | $(P Starting with dmd 2.065, the DMD installation comes with a tool called DustMite that can help you 11 | minimize your source code to create the reduced test case. Setting up the environment to run 12 | DustMite can be tedious, so Visual D can help you for some use cases. 13 | ) 14 | 15 | $(P If your build has failed with an unexpected error message or even internal compiler error, you 16 | can select the relevant error messsage in the Visual Studio build output window or focus the respective 17 | issue in the error list. Then select "DustMite Build Failure" from the Visual D menu. This will create 18 | a clean copy of the startup project alongside the project folder (so make sure that all files necessary 19 | for the build are actually referenced in the project). In addition the generated build script is added. 20 | ) 21 | 22 | $(P DustMite will be run against this folder in a new console window, trying to find a minimal source code that still 23 | reproduces the error message. For larger code bases this process can take several hours. On success 24 | it will report the directory with the reduced source code.) 25 | 26 | $(H3 Limitations) 27 | 28 | $(UL 29 | $(LI The DustMite integration does not work with single file compilation as well as compilation of non D files.) 30 | $(LI A crashing compiler might cause messages to popup that have to be closed manually. See 31 | $(LINK https://github.com/CyberShadow/DustMite/wiki/Useful-test-scripts) for some 32 | ideas how to deal with this.) 33 | ) 34 | 35 | You can read more about DustMite at $(LINK https://github.com/CyberShadow/DustMite/wiki). 36 | 37 | Macros: 38 | TITLE=Reducing Build Failures with DustMite 39 | 40 | -------------------------------------------------------------------------------- /doc/Features.dd: -------------------------------------------------------------------------------- 1 | Ddoc 2 | 3 | $(UL 4 | $(LI Project management 5 | $(UL 6 | $(LI all DMD command line options accessible) 7 | $(LI support for GDC and LDC) 8 | $(LI support for resource compiler) 9 | $(LI custom build commands) 10 | $(LI pre/post custom build steps) 11 | $(LI automatic dependency generation) 12 | $(LI automatic link between dependent projects) 13 | $(LI new project templates) 14 | $(LI msbuild integration with VC projects) 15 | ) 16 | ) 17 | 18 | $(LI Project management 19 | $(UL 20 | $(LI integrates cv2pdb and mago for seamless debugger integration) 21 | $(LI or plugs into the VS debug engine as a language extension) 22 | ) 23 | ) 24 | $(LI Language Service 25 | $(UL 26 | $(LI syntax highlighting with special version/debug and token string support) 27 | $(LI underlining of syntactical errors) 28 | $(LI word-completion through semantic analysis, buffer, or JSON compile info) 29 | $(LI import statement completion) 30 | $(LI goto definition (using semantic analysis or JSON file from compilation)) 31 | $(LI parameter info tooltips) 32 | $(LI smart indentation) 33 | $(LI automatic brace completion) 34 | $(LI comment/uncomment selection) 35 | $(LI highlight/jump-to matching braces) 36 | $(LI code snippets) 37 | $(LI symbol/file search window) 38 | $(LI display of scope at caret position) 39 | $(LI code outlining) 40 | $(LI paste visually from clipboard ring) 41 | $(LI code definition window) 42 | $(LI search and replace dialog based on D tokenizer) 43 | $(LI browse information displayed in object browser and class view) 44 | $(LI code highlighting according to the code coverage output) 45 | ) 46 | ) 47 | 48 | $(LI Other 49 | $(UL 50 | $(LI C++ to D conversion wizard) 51 | $(LI Profiler window) 52 | $(LI Code Coverage display) 53 | $(LI Dustmite integration) 54 | ) 55 | ) 56 | $(LI Supported Visual Studio versions: VS 2008 - VS 2022 Community/Professional/Enterprise 57 | ) 58 | $(LI sources include tools to 59 | $(UL 60 | $(LI convert some idl/h files of the Windows SDK to D) 61 | $(LI convert all idl/h files from the Visual Studio Integration SDK to D) 62 | $(LI convert C++ code to D (which was targeted at machine-translating) 63 | the DMD front end to D, but this was abandoned) 64 | $(LI convert Java code to D (which was targeted at machine-translating) 65 | parts of the Eclipse plugin Descent to D, but this was abandoned) 66 | ) 67 | ) 68 | $(LI Completely written in D 69 | $(UL 70 | $(LI source code available on github) 71 | ) 72 | ) 73 | ) 74 | 75 | 76 | Macros: 77 | TITLE=Major Features 78 | 79 | -------------------------------------------------------------------------------- /doc/Profiling.dd: -------------------------------------------------------------------------------- 1 | Ddoc 2 | 3 | $(P DMD comes with an option to instrument an executable for profiling its execution. 4 | You can enable it on the project configuration page "Code Generation".) 5 | 6 | $(IMG_CENTER images/prop_codegen.png) 7 | 8 | $(P Running the executable will create a file named trace.log in the current working 9 | directory. Opening the profiler window from the Visual D menu allows browsing the info 10 | in this file conveniently. You must specify the full path to the trace.log in the edit 11 | field at the top of the window.) 12 | 13 | $(IMG_CENTER images/profiler.png) 14 | 15 | $(P The toolbar at the top is used to) 16 | $(UL 17 | $(LI enable/disable alternate color display for the rows) 18 | $(LI enable/disable automatic closing of the profiler window if you jump to a function by double-clicking 19 | its list entry) 20 | $(LI enable/disable display of full type information of the functions) 21 | $(LI enable/disable display of function fan in/out, i.e. which functions are called by the selected 22 | function and which functions are calling it) 23 | $(LI guess the location of the trace.log file from the current startup project and its debugging settings) 24 | $(LI remove the trace.log file from disk to start a new profiling session (without removing the file multiple 25 | runs of the executable accumulate statistics in the log file)) 26 | $(LI refresh display from the trace.log file) 27 | ) 28 | 29 | $(P The times in the function list are displayed in microseconds.) 30 | $(UL 31 | $(LI Tree time: time spent executing the function including functions called) 32 | $(LI Func time: time spent executing the function excluding functions called) 33 | $(LI Call time: Func time/Calls) 34 | ) 35 | 36 | $(P Double-clicking a line in the function list tries to jump to the corresponding 37 | source code line. This relies on appropriate information found in generated JSON files.) 38 | 39 | $(P Double clicking a line in the caller/callee lists selects the function in the function 40 | list, so you can navigate through the call tree.) 41 | 42 | Macros: 43 | TITLE=Profiling 44 | 45 | -------------------------------------------------------------------------------- /doc/ProjectConfig.dd: -------------------------------------------------------------------------------- 1 | Ddoc 2 | 3 | $(P The project configuration is similar to what you know from other languages:) 4 | 5 | $(IMG_CENTER images/project_config.png) 6 | 7 | $(P Available macro replacements enclosed in $(DOLLAR)():) 8 | $(UL 9 | $(LI DMDINSTALLDIR: DMD Install path) 10 | $(LI WINDOWSSDKDIR: Windows SDK Directory) 11 | $(LI DEVENVDIR: Directory of Visual Studio executable devenv.exe) 12 | $(LI VSINSTALLDIR: Root directory of Visual Studio installation) 13 | $(LI VISUALDINSTALLDIR: Installation folder of Visual D) 14 | $(LI PLATFORMNAME: always Win32) 15 | $(LI CONFIGURATIONNAME) 16 | $(LI OUTDIR: Ouptut path) 17 | $(LI INTDIR: Intermediate path) 18 | $(LI INPUTPATH/DIR/FILENAME/EXT/NAME: input file/project file components) 19 | $(LI PROJECTPATH/DIR/FILENAME/EXT/NAME: project file components) 20 | $(LI SOLUTIONPATH/DIR/FILENAME/EXT/NAME: solution file components) 21 | $(LI TARGETPATH/DIR/FILENAME/EXT/NAME: target file components) 22 | $(LI any variable from the system environment) 23 | ) 24 | 25 | $(H2 Documentation generation using CanDyDOC) 26 | 27 | If you want to use $(LINK2 http://www.dsource.org/projects/helix/wiki/CandyDoc, CanDyDOC) for documentation generation, 28 | you need to create a ddoc file that contains the list of modules. Visual D can automatically create this file. 29 | Here is how you can setup a project: 30 | $(UL 31 | $(LI Create the documentation directory and copy the candydoc directory from the distribution into the documentation directory.) 32 | $(LI Add the file candy.ddoc from the candydoc directory to the project.) 33 | $(LI On the documentation configuration page, enable documentation, set the documentation directory) 34 | $(LI Specify a CanDyDOC module file that is generated by Visual D) 35 | ) 36 | 37 | $(IMG_CENTER images/doc_config.png) 38 | 39 | Macros: 40 | TITLE=Project Configuration -------------------------------------------------------------------------------- /doc/ProjectWizard.dd: -------------------------------------------------------------------------------- 1 | Ddoc 2 | 3 | To create a new Project, navigate to the menu File -> New -> Project and select the "D" entry in 4 | the "Other Languages" branch. There are two template types to select from. 5 | 6 | $(BR) 7 | $(BR) 8 | $(IMG_CENTER images/newproject.png) 9 | $(BR) 10 | 11 | The first entry selects a project based on Visual C++ for $(LINK2 vcxproject.html, seamless integration with C++). 12 | 13 | With the second entry a project using $(LINK2 projectconfig.html, Visual D's project type) 14 | dedicated to the D programming language is chosen. 15 | 16 | Both types use a wizard dialog to configure the generated projects: 17 | 18 | $(BR) 19 | $(BR) 20 | $(IMG_CENTER images/projectwizard.png) 21 | $(BR) 22 | 23 | Options GDC and OMF are not available for the Visual C++ project types. 24 | 25 | Macros: 26 | TITLE=Project Wizard 27 | -------------------------------------------------------------------------------- /doc/ReportingBugs.dd: -------------------------------------------------------------------------------- 1 | Ddoc 2 | 3 | = Reporting Bugs = 4 | 5 | Once in a while, you might be confronted with unexpected behaviour by Visual D. This can be some misunderstanding, a slight inconvenience, a clear bug or even a crash. 6 | 7 | Please check the list of [wiki:KnownIssues known issues] and the list of $(LINK2 http://www.dsource.org/projects/visuald/report/1 open bugs and enhancements] in the issue tracker. You might also want to browse the list of [http://www.dsource.org/projects/visuald/query?status=closed&order=priority closed issues) to see if it is a regression or actually desired behaviour. 8 | 9 | Please enter new issues as a $(LINK2 http://www.dsource.org/projects/visuald/newticket new ticket) into the tracking system. 10 | 11 | == Reporting with crash dumps == 12 | 13 | Sometimes, a bug is not easily reproducable on every system. Especially if the application freezes or crashes, a process dump can be very helpful to analyze the problem without having direct access to the system. 14 | 15 | === Using procdump === 16 | 17 | To create a process dump, download $(LINK2 http://technet.microsoft.com/en-us/sysinternals/dd996900 ProcDump) and install it on your system. Open a console window and change to the installation directory of procdump. 18 | 19 | If you are experiencing freezes while using Visual D in Visual Studio, just run 20 | {{{ 21 | procdump devenv.exe 22 | }}} 23 | to create a snapshot of the frozen application. 24 | 25 | If Visual Studio crashes from time to time you should start procdump with option "-e" 26 | {{{ 27 | procdump -e devenv.exe 28 | }}} 29 | while Visual Studio is running. This will create a process dump when an unhandled exception is detected, i.e. the application crashes. 30 | 31 | Procdump will report the dump-file that it created: 32 | {{{ 33 | C:\Programme\Sysinternals>procdump.exe devenv.exe 34 | 35 | ProcDump v4.0 - Writes process dump files 36 | Copyright (C) 2009-2011 Mark Russinovich 37 | Sysinternals - www.sysinternals.com 38 | 39 | Writing dump file C:\Programme\Sysinternals\devenv_110909_104402.dmp ... 40 | Dump written. 41 | }}} 42 | 43 | Unfortunately, the file created will be too large to be attached to the report in the tracking system, so please add a download link for the dump file to the issue. 44 | 45 | === Using procexp === 46 | 47 | As an alternative to creating process dumps of frozen applications via procdump from the command line, you can also use the process explorer $(LINK2 http://technet.microsoft.com/en-us/sysinternals/bb896653 procexp) to do this interactively. Right-click the frozen process in the process tree and select "Create Dump". 48 | 49 | This is especially useful if the installer freezes when running the registration through rundll32.exe, because there are often multiple processes with that name. 50 | 51 | -------------------------------------------------------------------------------- /doc/Search.dd: -------------------------------------------------------------------------------- 1 | Ddoc 2 | 3 | $(P The search window helps you finding files in larger projects or symbol definitions. 4 | The window can be opened through the Visual D menu. It is more convenient to assign keyboard 5 | shortcuts to the commands "VisualD.!SearchFile" and "VisualD.!SearchSymbol".) 6 | 7 | $(IMG_CENTER images/visuald_menu.png) 8 | 9 | $(P The Visual D Search window operates in two modes, switchable by the first two icons of its toolbar:) 10 | 11 | $(H2 Search File) 12 | 13 | $(P In this mode all files in the Visual Studio solution are searched for the words given in the edit field.) 14 | 15 | $(IMG_CENTER images/searchfile.png) 16 | 17 | $(H2 Search Symbol ) 18 | 19 | $(P This mode searches the symbols found in generated JSON files for the words given in the edit field.) 20 | 21 | $(IMG_CENTER images/searchsymbol.png) 22 | 23 | Macros: 24 | TITLE=Search Window 25 | -------------------------------------------------------------------------------- /doc/TokenReplace.dd: -------------------------------------------------------------------------------- 1 | Ddoc 2 | 3 | $(P Visual D features a search and replace dialog that can be used to do replacements based on the 4 | tokenizer used by Visual D for syntax highlighting. The dialog can be opened through the Visual D menu:) 5 | 6 | $(IMG_CENTER images/tokenreplacemenu.png) 7 | 8 | $(P A token consists of the actual lexical D element and any preceding white spaces including comments. 9 | The search and replacement texts are tokenized according to the D language, matching the result against 10 | the tokenized source text ignoring syntactically unimportant text like comments and line breaks. Brace 11 | matching is supported, allowing to match nested expressions nicely.) 12 | 13 | $(P Here is an example:) 14 | 15 | $(IMG_CENTER images/tokenreplace.png) 16 | 17 | $(P Executing 'Replace All' will exchange the arguments of all calls and declarations of function 'fun' 18 | in the current document, even if the arguments span multiple lines and include nested expressions.) 19 | 20 | $(P The search text allows some special $ tokens:) 21 | $(UL 22 | $(LI $(DOLLAR)_numNAME - any integer literal) 23 | $(LI $(DOLLAR)_identNAME - any identifier (no keywords)) 24 | $(LI $(DOLLAR)_dotidentNAME - any identifier.identifier pair) 25 | $(LI $(DOLLAR)_exprNAME - any sequence of brace matched tokens terminated by closing bracket or ";") 26 | $(LI $(DOLLAR)_notNAME - any token not matching the following token ) 27 | $(LI $(DOLLAR)_optNAME - the following token or nothing) 28 | $(LI $(DOLLAR)NAME - any sequence of tokens greedily stopped by the following token) 29 | $(LI token$(DOLLAR)NAME - any token starting with "token") 30 | ) 31 | 32 | $(P NAME can be any alpha numeric identifier.) 33 | 34 | $(P Any $(DOLLAR)-token used in the replacement string is replaced with the identically named capture 35 | from the matched search string. $(DOLLAR)* is relaced by the the whole matched string.) 36 | 37 | Macros: 38 | TITLE=Token Search and Replace -------------------------------------------------------------------------------- /doc/css/print.css: -------------------------------------------------------------------------------- 1 | 2 | body 3 | { 4 | background: white; 5 | } 6 | 7 | pre 8 | { 9 | overflow: visible; 10 | overflow-X: hidden; 11 | font-size: 100%; 12 | } 13 | 14 | #search-box, 15 | #header, 16 | #navigation, 17 | #lastupdate, 18 | #tools, 19 | #footernav, 20 | #copyright, 21 | #github-ribbon, 22 | #top, 23 | .page-contents 24 | { 25 | display: none; 26 | } 27 | 28 | div#content 29 | { 30 | background: white; 31 | border: 0; 32 | margin: 0; 33 | padding: 0; 34 | font-family: serif; 35 | font-size: 10pt; 36 | } 37 | -------------------------------------------------------------------------------- /doc/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/favicon.ico -------------------------------------------------------------------------------- /doc/images/codesnippet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/codesnippet.png -------------------------------------------------------------------------------- /doc/images/colors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/colors.png -------------------------------------------------------------------------------- /doc/images/colortest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/colortest.png -------------------------------------------------------------------------------- /doc/images/colortest2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/colortest2.png -------------------------------------------------------------------------------- /doc/images/compile_and_run_opt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/compile_and_run_opt.png -------------------------------------------------------------------------------- /doc/images/compiledisasm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/compiledisasm.png -------------------------------------------------------------------------------- /doc/images/compilemenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/compilemenu.png -------------------------------------------------------------------------------- /doc/images/completion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/completion.png -------------------------------------------------------------------------------- /doc/images/concord_mark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/concord_mark.png -------------------------------------------------------------------------------- /doc/images/coverage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/coverage.png -------------------------------------------------------------------------------- /doc/images/coverage_forever.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/coverage_forever.png -------------------------------------------------------------------------------- /doc/images/coveragemargin_forever.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/coveragemargin_forever.png -------------------------------------------------------------------------------- /doc/images/cppwizard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/cppwizard.png -------------------------------------------------------------------------------- /doc/images/d_exceptions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/d_exceptions.png -------------------------------------------------------------------------------- /doc/images/debug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/debug.png -------------------------------------------------------------------------------- /doc/images/debugeval.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/debugeval.png -------------------------------------------------------------------------------- /doc/images/debugranges.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/debugranges.png -------------------------------------------------------------------------------- /doc/images/dmd_directories.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/dmd_directories.png -------------------------------------------------------------------------------- /doc/images/doc_config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/doc_config.png -------------------------------------------------------------------------------- /doc/images/download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/download.png -------------------------------------------------------------------------------- /doc/images/download_extension2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/download_extension2.png -------------------------------------------------------------------------------- /doc/images/download_with_dmdldc2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/download_with_dmdldc2.png -------------------------------------------------------------------------------- /doc/images/editor-options.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/editor-options.png -------------------------------------------------------------------------------- /doc/images/extmanager.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/extmanager.png -------------------------------------------------------------------------------- /doc/images/fullvs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/fullvs.png -------------------------------------------------------------------------------- /doc/images/import_completion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/import_completion.png -------------------------------------------------------------------------------- /doc/images/intellisense_options.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/intellisense_options.png -------------------------------------------------------------------------------- /doc/images/intellisense_options2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/intellisense_options2.png -------------------------------------------------------------------------------- /doc/images/ldc_compiler.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/ldc_compiler.png -------------------------------------------------------------------------------- /doc/images/newproject.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/newproject.png -------------------------------------------------------------------------------- /doc/images/objectbrowser.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/objectbrowser.PNG -------------------------------------------------------------------------------- /doc/images/outlining.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/outlining.png -------------------------------------------------------------------------------- /doc/images/parameterinfo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/parameterinfo.png -------------------------------------------------------------------------------- /doc/images/parameterstorage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/parameterstorage.png -------------------------------------------------------------------------------- /doc/images/parameterstorage2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/parameterstorage2.png -------------------------------------------------------------------------------- /doc/images/pastemenu.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/pastemenu.PNG -------------------------------------------------------------------------------- /doc/images/profiler.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/profiler.png -------------------------------------------------------------------------------- /doc/images/project_config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/project_config.png -------------------------------------------------------------------------------- /doc/images/projectwizard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/projectwizard.png -------------------------------------------------------------------------------- /doc/images/prop_codegen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/prop_codegen.png -------------------------------------------------------------------------------- /doc/images/prop_debug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/prop_debug.png -------------------------------------------------------------------------------- /doc/images/prop_doc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/prop_doc.png -------------------------------------------------------------------------------- /doc/images/searchfile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/searchfile.png -------------------------------------------------------------------------------- /doc/images/searchmenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/searchmenu.png -------------------------------------------------------------------------------- /doc/images/searchsymbol.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/searchsymbol.png -------------------------------------------------------------------------------- /doc/images/showscope.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/showscope.png -------------------------------------------------------------------------------- /doc/images/solutionexplorer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/solutionexplorer.png -------------------------------------------------------------------------------- /doc/images/strings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/strings.png -------------------------------------------------------------------------------- /doc/images/syntaxerror.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/syntaxerror.png -------------------------------------------------------------------------------- /doc/images/tokenreplace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/tokenreplace.png -------------------------------------------------------------------------------- /doc/images/tokenreplacemenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/tokenreplacemenu.png -------------------------------------------------------------------------------- /doc/images/toolopt_project.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/toolopt_project.png -------------------------------------------------------------------------------- /doc/images/vcxproject.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/vcxproject.png -------------------------------------------------------------------------------- /doc/images/vcxproject_general.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/vcxproject_general.png -------------------------------------------------------------------------------- /doc/images/vd_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/vd_logo.png -------------------------------------------------------------------------------- /doc/images/versionhighlight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/versionhighlight.png -------------------------------------------------------------------------------- /doc/images/visuald_menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/visuald_menu.png -------------------------------------------------------------------------------- /doc/images/visuald_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/doc/images/visuald_settings.png -------------------------------------------------------------------------------- /doc/macros.ddoc: -------------------------------------------------------------------------------- 1 | _=Fundamental macros that apply to all generated formats 2 | 3 | ARGS = $0 4 | COMMA = , 5 | COMMENT = 6 | DOLLAR = $ 7 | LPAREN = ( 8 | RPAREN = ) 9 | TAIL = $+ 10 | _= 11 | -------------------------------------------------------------------------------- /doc/vcxproject.dd: -------------------------------------------------------------------------------- 1 | Ddoc 2 | 3 | $(P With Visual D 0.44 integration with Visual C/C++ projects has been added. This means that 4 | you can just add your D files into any C/C++ project and it will be compiled and linked 5 | with everything else in the project.) 6 | 7 | $(P The project properties will be extended by a "D Compiler" section:) 8 | 9 |
10 | 11 | $(P The General Page allows to select between DMD and LDC as the D compiler to be used by the current configuration.) 12 | 13 | $(IMG_CENTER images/vcxproject_general.png) 14 | 15 | $(P A couple of things to note:) 16 | $(UL 17 | $(LI Only COFF files are generated, there is no support for OMF files that DMD generates for Win32 by default.) 18 | $(LI Selecting the C runtime library is supported starting with DMD 2.073) 19 | $(LI The D project templates include a console application template based on a VC project, but just containing a D file.) 20 | ) 21 | 22 | Macros: 23 | TITLE=Visual C/C++ Project Integration 24 | -------------------------------------------------------------------------------- /doc/visuald.ddoc: -------------------------------------------------------------------------------- 1 | VERSION = 1.4.0 2 | DMD_VERSION = 2.110.0 3 | LDC_VERSION = 1.40.0 4 | ROOT_DIR = https://www.dlang.org/ 5 | ROOT = https://www.dlang.org 6 | BODYCLASS = visuald 7 | PROJECT = visuald 8 | WIKI = visuald 9 | SELF_PATH = 10 | LAYOUT_SUFFIX= 11 | 12 | VDLINK=$(LINK2 $1.html, $2) 13 | IMG = 14 | IMG_CENTER =
15 | TABLE_NOBORDER = $0
16 | _= 17 | MENU_W_SUBMENU_OPEN =
  • $0 18 | 19 | SUBNAV=$(SUBNAV_TEMPLATE 20 | $(SUBNAV_HEAD Visual D $(VERSION), StartPage.html, Home, subnav-duplicate) 21 | $(UL 22 | $(MENU StartPage.html, Home) 23 | $(MENU https://github.com/dlang/visuald/releases, Downloads) 24 | $(MENU Installation.html, Installation) 25 | $(MENU_W_SUBMENU_OPEN Tour) 26 | $(SUBMENU 27 | Features.html, Feature List, 28 | GlobalOptions.html, Global Options, 29 | ProjectWizard.html, Project Wizard, 30 | Editor.html, Editor, 31 | Search.html, Search Window, 32 | TokenReplace.html, Token Replace, 33 | ProjectConfig.html, Project Config, 34 | vcxproject.html, VC Project Integration, 35 | CppConversion.html, C++ to D, 36 | Debugging.html, Debugging, 37 | CompileCommands.html, Compile Commands, 38 | Profiling.html, Profiling, 39 | Coverage.html, Code Coverage, 40 | DustMite.html, DustMite Integration, 41 | BrowseInfo.html, Browse Info 42 | ) 43 | $(MENU VersionHistory.html, Version History) 44 | $(MENU KnownIssues.html, Known Issues) 45 | $(MENU BuildFromSource.html, Building from Source) 46 | ) 47 | ) 48 | _= 49 | 50 | D_S = $(LAYOUT ,$1,$(ARGS $+)) 51 | SPEC_S = $(LAYOUT ,$1,$(ARGS $+)) 52 | COMMUNITY= $(LAYOUT ,$1,$(ARGS $+)) 53 | _= 54 | 55 | LAYOUT=$3 56 | _= 57 | 58 | SFINAE=$(GLOSSARY sfinae, $(ACRONYM SFINAE, Substitution Failure Is Not An Error)) 59 | OBJ2ASM=$(HTTP digitalmars.com/ctg/obj2asm.html, obj2asm) 60 | DUMPOBJ=$(HTTP digitalmars.com/ctg/dumpobj.html, dumpobj) 61 | SHELL=$(HTTP digitalmars.com/ctg/shell.html, shell) 62 | _= 63 | 64 | VISUALD = https://rainers.github.io/visuald/visuald/StartPage.html 65 | _= 66 | 67 | AMAZONLINK= $(WEB amazon.com/exec/obidos/ASIN/$1/classicempire, $+) 68 | _= 69 | 70 | _= 71 | 72 | MIDRULE= 73 | _= 74 | -------------------------------------------------------------------------------- /msbuild/ImportAfter/d.targets: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /msbuild/ImportAfter/general_d.targets: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | Project 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /msbuild/ImportBefore/Default/d.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | $(registry:HKEY_LOCAL_MACHINE\SOFTWARE\VisualD@msbuild) 6 | $(registry:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\VisualD@msbuild) 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /msbuild/ImportBefore/d.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /msbuild/d.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/msbuild/d.ico -------------------------------------------------------------------------------- /msbuild/d2.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/msbuild/d2.ico -------------------------------------------------------------------------------- /msbuild/dbuild.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16 | 18 | 19 | $(MSBuildThisFileDirectory)dmd2\ 20 | $(MSBuildThisFileDirectory)ldc2\ 21 | $(MSBuildThisFileDirectory)msbuild\ 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /msbuild/dbuild/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("dbuild")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("dbuild")] 13 | [assembly: AssemblyCopyright("")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // Version information for an assembly consists of the following four values: 23 | // 24 | // Major Version 25 | // Minor Version 26 | // Build Number 27 | // Revision 28 | // 29 | // You can specify all the values or you can default the Build and Revision Numbers 30 | // by using the '*' as shown below: 31 | // [assembly: AssemblyVersion("1.0.*")] 32 | [assembly: AssemblyVersion("1.0.*")] 33 | [assembly: AssemblyFileVersion("1.0.0.0")] 34 | -------------------------------------------------------------------------------- /msbuild/dcompile.props: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /msbuild/di.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/msbuild/di.ico -------------------------------------------------------------------------------- /msbuild/general_d.snippet: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /nsis/Extensions/extension.vsixmanifest: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | Visual D 8 | Rainer Schuetze 9 | VDVERSION 10 | Extension to provide support for the D programming language. 11 | 1033 12 | http://rainers.github.io/visuald/visuald/StartPage.html 13 | http://rainers.github.io/visuald/visuald/StartPage.html 14 | true 15 | vdlogo.ico 16 | vdlogo.ico 17 | 18 | 19 | Ultimate 20 | Premium 21 | Pro 22 | IntegratedShell 23 | VSTS 24 | VSTD 25 | 26 | 27 | Ultimate 28 | Premium 29 | Pro 30 | IntegratedShell 31 | VSTS 32 | VSTD 33 | 34 | 35 | Community 36 | Pro 37 | IntegratedShell 38 | VSTS 39 | VSTD 40 | 41 | 42 | Community 43 | Pro 44 | IntegratedShell 45 | VSTS 46 | VSTD 47 | 48 | 49 | Community 50 | Pro 51 | IntegratedShell 52 | VSTS 53 | VSTD 54 | 55 | 56 | 57 | 58 | 59 | 60 | visuald.pkgdef 61 | VDINSTALLPATH\vdextensions.dll 62 | 63 | 64 | 65 | 66 | 67 | -------------------------------------------------------------------------------- /nsis/Extensions/vdlogo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/nsis/Extensions/vdlogo.ico -------------------------------------------------------------------------------- /nsis/Extensions/visuald.pkgdef: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/nsis/Extensions/visuald.pkgdef -------------------------------------------------------------------------------- /nsis/Extensions_vs12/extension.vsixmanifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | vdlogo.ico 6 | vdlogo.ico 7 | Visual D 8 | Extension to provide support for the D programming language 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | NuGet.VisualStudio.Interop, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 27 | NuGet.VisualStudio.TemplateWizard 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /nsis/Extensions_vs15/extension.vsixmanifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | vdlogo.ico 6 | vdlogo.ico 7 | Visual D 8 | Extension to provide support for the D programming language 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | NuGet.VisualStudio.Interop, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 29 | NuGet.VisualStudio.TemplateWizard 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /nsis/LICENSE: -------------------------------------------------------------------------------- 1 | Boost Software License - Version 1.0 - August 17th, 2003 2 | 3 | Permission is hereby granted, free of charge, to any person or organization 4 | obtaining a copy of the software and accompanying documentation covered by 5 | this license (the "Software") to use, reproduce, display, distribute, 6 | execute, and transmit the Software, and to prepare derivative works of the 7 | Software, and to permit third-parties to whom the Software is furnished to 8 | do so, all subject to the following: 9 | 10 | The copyright notices in the Software and this entire statement, including 11 | the above license grant, this restriction and the following disclaimer, 12 | must be included in all copies of the Software, in whole or in part, and 13 | all derivative works of the Software, unless such copies or derivative 14 | works are solely in the form of machine-executable object code generated by 15 | a source language processor. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT 20 | SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE 21 | FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, 22 | ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 23 | DEALINGS IN THE SOFTWARE. 24 | -------------------------------------------------------------------------------- /nsis/dmdinstall.ini: -------------------------------------------------------------------------------- 1 | [Settings] 2 | NumFields=7 3 | 4 | [Field 1] 5 | Type=DirRequest 6 | State=DirRequest 7 | Left=10 8 | Right=240 9 | Top=68 10 | Bottom=80 11 | 12 | [Field 4] 13 | Type=Label 14 | Text=You can download the latest D-Compiler from the 15 | Left=10 16 | Right=170 17 | Top=6 18 | Bottom=14 19 | 20 | [Field 2] 21 | Type=Link 22 | Text=D Language 23 | State=http://dlang.org/download.html 24 | Left=170 25 | Right=210 26 | Top=6 27 | Bottom=14 28 | 29 | [Field 3] 30 | Type=Label 31 | Text=website. 32 | Left=210 33 | Right=240 34 | Top=6 35 | Bottom=14 36 | 37 | [Field 6] 38 | Type=Label 39 | Text=Please specify the DMD installation folder that contains subdirectories html, windows and src. 40 | Left=10 41 | Right=240 42 | Top=34 43 | Bottom=50 44 | 45 | [Field 7] 46 | Type=Label 47 | Text=This setting can be changed from within Visual Studio later on the Tools->Options->Projects->Visual D Settings->DMD Directories page. 48 | Left=10 49 | Right=234 50 | Top=84 51 | Bottom=104 52 | 53 | [Field 5] 54 | Type=Label 55 | Text=DMD Installation folder 56 | Left=10 57 | Right=191 58 | Top=56 59 | Bottom=90 60 | 61 | -------------------------------------------------------------------------------- /nsis/register.bat: -------------------------------------------------------------------------------- 1 | rundll32 %0\..\..\bin\debug\visuald.dll RunDLLRegister Software\Microsoft\VisualStudio\9.0D 2 | -------------------------------------------------------------------------------- /nsis/unregister.bat: -------------------------------------------------------------------------------- 1 | rundll32 ..\bin\debug\visuald.dll RunDLLUnregister Software\Microsoft\VisualStudio\9.0D 2 | -------------------------------------------------------------------------------- /sdk/Makefile: -------------------------------------------------------------------------------- 1 | # This file is part of Visual D 2 | # 3 | # Visual D integrates the D programming language into Visual Studio 4 | # Copyright (c) 2010 by Rainer Schuetze, All Rights Reserved 5 | # 6 | # Distributed under the Boost Software License, Version 1.0. 7 | # See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt 8 | 9 | DMD2 = c:\l\dmd-2.055\windows\bin\dmd.exe 10 | # DMD2 = m:\s\d\rainers\windows\bin\dmd.exe 11 | CV2PDB = ..\..\cv2pdb\trunk\bin\Debug\cv2pdb.exe 12 | IMPLIB = c:\l\dmc\bin\implib.exe 13 | COFFIMPLIB = c:\l\dmc\bin\coffimplib.exe 14 | 15 | include vsi_sources 16 | VSI_SRC = $(SRC) port/servprov.d port/stdole2.d port/msxml.d port/dte.d port/base.d \ 17 | port\vsi.d port\propidl.d port\rpc.d port\string.d port\in6addr.d port\inaddr.d \ 18 | port\ctype.d 19 | 20 | DBGDIR = ..\bin\Debug 21 | RELDIR = ..\bin\Release 22 | 23 | FMT = OMF 24 | !IF "$(FMT)" == "COFF" 25 | DFLAGS = -d -I.. -m32ms 26 | !ELSE 27 | DFLAGS = -d -L/DELEXECUTABLE -I.. 28 | !ENDIF 29 | 30 | # -version=LOGSEMANTIC -L/IMPLIB -L/LINENUMBERS 31 | 32 | vsi: vsi_debug 33 | 34 | vsi_release: $(RELDIR)\vsi.lib 35 | vsi_debug: $(DBGDIR)\vsi.lib 36 | 37 | ###################### 38 | $(DBGDIR)\vsi.lib : $(VSI_SRC) Makefile vsi_sources $(DMD2) 39 | $(DMD2) -of$@ -g -lib $(DFLAGS) @<< 40 | $(VSI_SRC) 41 | <cmdline 44 | $(RELDIR)\vsi.lib : $(VSI_SRC) Makefile vsi_sources $(DMD2) 45 | $(DMD2) -of$@ -lib -O -inline -release $(DFLAGS) @<< 46 | $(VSI_SRC) 47 | <sdk_libs 63 | 64 | libs: sdk_libs 65 | 66 | #kernel32.lib : kernel32.dll 67 | # echo $(IMPLIB) $@ $< 68 | 69 | # $(WIN_LIBS) : Makefile 70 | -------------------------------------------------------------------------------- /sdk/port/activdbg.d: -------------------------------------------------------------------------------- 1 | module sdk.port.activdbg; 2 | 3 | struct IRemoteDebugApplication; 4 | -------------------------------------------------------------------------------- /sdk/port/apiquery2.d: -------------------------------------------------------------------------------- 1 | module sdk.port.apiquery2; 2 | -------------------------------------------------------------------------------- /sdk/port/apiset.d: -------------------------------------------------------------------------------- 1 | module sdk.port.apiset; 2 | -------------------------------------------------------------------------------- /sdk/port/apisetcconv.d: -------------------------------------------------------------------------------- 1 | module sdk.port.apisetcconv; 2 | -------------------------------------------------------------------------------- /sdk/port/cguid.d: -------------------------------------------------------------------------------- 1 | module sdk.port.cguid; 2 | -------------------------------------------------------------------------------- /sdk/port/ctype.d: -------------------------------------------------------------------------------- 1 | module sdk.port.ctype; 2 | 3 | public import std.ascii; 4 | -------------------------------------------------------------------------------- /sdk/port/dte.d: -------------------------------------------------------------------------------- 1 | module sdk.port.dte; 2 | 3 | public import sdk.vsi.dte80a; 4 | -------------------------------------------------------------------------------- /sdk/port/excpt.d: -------------------------------------------------------------------------------- 1 | module sdk.port.excpt; 2 | 3 | public: 4 | 5 | enum EXCEPTION_DISPOSITION 6 | { 7 | ExceptionContinueExecution = 0, 8 | ExceptionContinueSearch = 1, 9 | ExceptionNestedException = 2, 10 | ExceptionCollidedUnwind = 3 11 | } 12 | 13 | -------------------------------------------------------------------------------- /sdk/port/guiddef.d: -------------------------------------------------------------------------------- 1 | module sdk.port.guiddef; 2 | -------------------------------------------------------------------------------- /sdk/port/in6addr.d: -------------------------------------------------------------------------------- 1 | module sdk.port.in6addr; 2 | 3 | import sdk.port.base; 4 | 5 | // 6 | // IPv6 Internet address (RFC 2553) 7 | // This is an 'on-wire' format structure. 8 | // 9 | struct in6_addr 10 | { 11 | union _S6_union { 12 | UCHAR[16] Byte; 13 | USHORT[8] Word; 14 | 15 | alias Byte _S6_u8; 16 | }; 17 | alias _S6_union u; 18 | 19 | // 20 | // Defines to match RFC 2553. 21 | // 22 | alias u _S6_un; 23 | alias u.Byte s6_addr; 24 | 25 | // 26 | // Defines for our implementation. 27 | // 28 | alias u.Byte s6_bytes; 29 | alias u.Word s6_words; 30 | } 31 | 32 | alias in6_addr IN6_ADDR; 33 | alias in6_addr* PIN6_ADDR; 34 | alias in6_addr* /*FAR*/ *LPIN6_ADDR; 35 | 36 | alias in6_addr in_addr6; 37 | 38 | -------------------------------------------------------------------------------- /sdk/port/inaddr.d: -------------------------------------------------------------------------------- 1 | module sdk.port.inaddr; 2 | 3 | import sdk.port.base; 4 | 5 | // 6 | // IPv4 Internet address 7 | // This is an 'on-wire' format structure. 8 | // 9 | struct in_addr 10 | { 11 | union S_union 12 | { 13 | struct S_union_b { UCHAR s_b1,s_b2,s_b3,s_b4; } S_union_b S_un_b; 14 | struct S_union_w { USHORT s_w1,s_w2; } S_union_w S_un_w; 15 | ULONG S_addr; 16 | } 17 | S_union S_un; 18 | 19 | alias S_un.S_addr s_addr; /* can be used for most tcp & ip code */ 20 | alias S_un.S_un_b.s_b2 s_host; // host on imp 21 | alias S_un.S_un_b.s_b1 s_net; // network 22 | alias S_un.S_un_w.s_w2 s_imp; // imp 23 | alias S_un.S_un_b.s_b4 s_impno; // imp # 24 | alias S_un.S_un_b.s_b3 s_lh; // logical host 25 | } 26 | 27 | alias in_addr IN_ADDR; 28 | alias in_addr* PIN_ADDR; 29 | alias in_addr /*FAR*/ *LPIN_ADDR; 30 | 31 | -------------------------------------------------------------------------------- /sdk/port/kernelspecs.d: -------------------------------------------------------------------------------- 1 | module sdk.port.kernelspecs; 2 | -------------------------------------------------------------------------------- /sdk/port/limits.d: -------------------------------------------------------------------------------- 1 | module sdk.port.limits; 2 | -------------------------------------------------------------------------------- /sdk/port/microsoft/visualstudio/interop.d: -------------------------------------------------------------------------------- 1 | module microsoft.visualstudio.interop; 2 | -------------------------------------------------------------------------------- /sdk/port/mprapi.d: -------------------------------------------------------------------------------- 1 | module sdk.port.mprapi; 2 | -------------------------------------------------------------------------------- /sdk/port/msxml.d: -------------------------------------------------------------------------------- 1 | module sdk.port.msxml; 2 | 3 | public import sdk.win32.xmldom; 4 | -------------------------------------------------------------------------------- /sdk/port/netioapi.d: -------------------------------------------------------------------------------- 1 | module sdk.port.netioapi; 2 | 3 | // hijacked to define sockaddr from ws2sock 4 | public alias void* sockaddr; 5 | 6 | public alias void* NET_ADDRESS_INFO_; -------------------------------------------------------------------------------- /sdk/port/packoff.d: -------------------------------------------------------------------------------- 1 | module sdk.port.packoff; 2 | -------------------------------------------------------------------------------- /sdk/port/packon.d: -------------------------------------------------------------------------------- 1 | module sdk.port.packon; 2 | -------------------------------------------------------------------------------- /sdk/port/poppack.d: -------------------------------------------------------------------------------- 1 | module sdk.port.poppack; 2 | -------------------------------------------------------------------------------- /sdk/port/pp.d: -------------------------------------------------------------------------------- 1 | module sdk.port.pp; 2 | 3 | bool pp_if(string cond) 4 | { 5 | return false; 6 | } 7 | 8 | bool pp_ifdef(string cond) 9 | { 10 | return false; 11 | } 12 | 13 | bool pp_ifndef(string cond) 14 | { 15 | return false; 16 | } 17 | -------------------------------------------------------------------------------- /sdk/port/propidl.d: -------------------------------------------------------------------------------- 1 | 2 | module sdk.port.propidl; 3 | 4 | public import sdk.win32.unknwn; 5 | 6 | alias /+[unique]+/ IUnknown LPUNKNOWN; 7 | -------------------------------------------------------------------------------- /sdk/port/pshpack1.d: -------------------------------------------------------------------------------- 1 | module sdk.port.pshpack1; 2 | -------------------------------------------------------------------------------- /sdk/port/pshpack2.d: -------------------------------------------------------------------------------- 1 | module sdk.port.pshpack2; 2 | -------------------------------------------------------------------------------- /sdk/port/pshpack4.d: -------------------------------------------------------------------------------- 1 | module sdk.port.pshpack4; 2 | -------------------------------------------------------------------------------- /sdk/port/pshpack8.d: -------------------------------------------------------------------------------- 1 | module sdk.port.pshpack8; 2 | -------------------------------------------------------------------------------- /sdk/port/registryroots.d: -------------------------------------------------------------------------------- 1 | module sdk.port.registryroots; 2 | 3 | // used by VSI-SDK 10.0 anyway 4 | const REGKEY_VISUALSTUDIOROOT_CURRENT = "Software\\Microsoft\\VisualStudio\\10.0"; 5 | const LREGKEY_VISUALSTUDIOROOT_CURRENT = "Software\\Microsoft\\VisualStudio\\10.0"w.ptr; 6 | 7 | // added for VS2015 8 | const VISUALSTUDIO_PROGID_VERSION_CURRENT = "14.0"w.ptr; 9 | const VISUALSTUDIO_DDE_NAME_CURRENT = "VisualStudio.14.0"w.ptr; 10 | 11 | // added for VS2017 12 | const REGKEY_BLENDROOT_CURRENT = "Software\\Microsoft\\Blend\\15.0"; 13 | const LREGKEY_BLENDROOT_CURRENT = "Software\\Microsoft\\Blend\\15.0"w.ptr; 14 | -------------------------------------------------------------------------------- /sdk/port/rpc.d: -------------------------------------------------------------------------------- 1 | module sdk.port.rpc; 2 | 3 | public import sdk.win32.rpcdce; 4 | -------------------------------------------------------------------------------- /sdk/port/rpcdcep.d: -------------------------------------------------------------------------------- 1 | module sdk.port.rpcdcep; 2 | -------------------------------------------------------------------------------- /sdk/port/rpcndr.d: -------------------------------------------------------------------------------- 1 | module sdk.port.rpcndr; 2 | -------------------------------------------------------------------------------- /sdk/port/servprov.d: -------------------------------------------------------------------------------- 1 | module sdk.port.servprov; 2 | 3 | import sdk.port.base; 4 | import sdk.win32.unknwn; 5 | //import std.c.windows.windows; 6 | //import std.c.windows.com; 7 | 8 | const GUID IID_IServiceProvider = IServiceProvider.iid; 9 | 10 | interface IServiceProvider : IUnknown 11 | { 12 | static const GUID iid = { 0x6d5140c1, 0x7436, 0x11ce, [ 0x80, 0x34, 0x00, 0xaa, 0x00, 0x60, 0x09, 0xfa ] }; 13 | public: 14 | /* [local] */ HRESULT QueryService( 15 | /* [in] */ const GUID* guidService, 16 | /* [in] */ const IID* riid, 17 | /* [out] */ void **ppvObject); 18 | } 19 | -------------------------------------------------------------------------------- /sdk/port/sharedvenusids.d: -------------------------------------------------------------------------------- 1 | // missing from VS12 SDK? 2 | 3 | module sdk.port.sharedvenusids; 4 | -------------------------------------------------------------------------------- /sdk/port/specstrings.d: -------------------------------------------------------------------------------- 1 | module sdk.port.specstrings; 2 | -------------------------------------------------------------------------------- /sdk/port/stdarg.d: -------------------------------------------------------------------------------- 1 | module sdk.port.stdarg; 2 | 3 | public import core.vararg; 4 | -------------------------------------------------------------------------------- /sdk/port/stdlib.d: -------------------------------------------------------------------------------- 1 | module sdk.port.stdlib; 2 | -------------------------------------------------------------------------------- /sdk/port/stdole2.d: -------------------------------------------------------------------------------- 1 | module sdk.port.stdole2; 2 | 3 | public import sdk.win32.wtypes; 4 | public import sdk.win32.oaidl; 5 | public import sdk.win32.ocidl; 6 | public import sdk.win32.oleidl; 7 | -------------------------------------------------------------------------------- /sdk/port/stdole32.d: -------------------------------------------------------------------------------- 1 | module sdk.port.stdole32; 2 | -------------------------------------------------------------------------------- /sdk/port/string.d: -------------------------------------------------------------------------------- 1 | module sdk.port.string; 2 | 3 | import std.string; 4 | -------------------------------------------------------------------------------- /sdk/port/time.d: -------------------------------------------------------------------------------- 1 | module sdk.port.time; 2 | 3 | public import core.stdc.time; 4 | -------------------------------------------------------------------------------- /sdk/port/tvout.d: -------------------------------------------------------------------------------- 1 | module sdk.port.tvout; 2 | -------------------------------------------------------------------------------- /sdk/port/urlmon.d: -------------------------------------------------------------------------------- 1 | module sdk.port.urlmon; 2 | 3 | const URLZONE_USER_MIN = 1000; 4 | 5 | interface IBindStatusCallback {} 6 | -------------------------------------------------------------------------------- /sdk/port/vapiempguids.d: -------------------------------------------------------------------------------- 1 | // missing from VS11 SDK 2 | module sdk.port.vapiempguids; 3 | -------------------------------------------------------------------------------- /sdk/port/venuscmddef.d: -------------------------------------------------------------------------------- 1 | module sdk.port.venuscmddef; 2 | -------------------------------------------------------------------------------- /sdk/port/vsi.d: -------------------------------------------------------------------------------- 1 | module sdk.port.vsi; 2 | 3 | public import sdk.port.base; 4 | public import sdk.win32.unknwn; 5 | 6 | // VSI specifics 7 | @property IUnknown DOCDATAEXISTING_UNKNOWN() 8 | { 9 | IUnknown unk; 10 | *cast(size_t*)&unk = -1; 11 | return unk; 12 | } 13 | 14 | //shared static this() { *cast(int*)&DOCDATAEXISTING_UNKNOWN = -1; } 15 | 16 | const GUID GUID_COMPlusNativeEng = { 0x92EF0900, 0x2251, 0x11D2, [ 0xB7, 0x2E, 0x00, 0x00, 0xF8, 0x75, 0x72, 0xEF ] }; 17 | const GUID GUID_COMPlusOnlyEnd = uuid("{449EC4CC-30D2-4032-9256-EE18EB41B62B}"); 18 | const GUID GUID_NativeOnlyEng = uuid("{3B476D35-A401-11D2-AAD4-00C04F990171}"); 19 | 20 | interface IVsDebuggerDeployConnection : IUnknown 21 | { 22 | // only forward referenced in VS2015 SDK 23 | }; 24 | -------------------------------------------------------------------------------- /sdk/port/vsversion_generated.d: -------------------------------------------------------------------------------- 1 | // needed by VS11/2012 SDK 2 | module sdk.port.vsversion_generated; 3 | 4 | enum VSVersionNumberMajor = 11; 5 | enum VSVersionNumberMinor = 0; 6 | enum BuildNumberMajor = 33333; 7 | enum BuildNumberMinor = 1; 8 | 9 | // needed by VS2015 SDK 10 | enum NDPFileVersionMinor = 14; 11 | enum NDPFileVersionBuild = 12345; 12 | enum NDPFileVersionRevision = 1; 13 | -------------------------------------------------------------------------------- /sdk/port/winapifamily.d: -------------------------------------------------------------------------------- 1 | module sdk.port.winapifamily; 2 | -------------------------------------------------------------------------------- /sdk/sources: -------------------------------------------------------------------------------- 1 | SRC = \ 2 | win32\windef.d \ 3 | win32\sdkddkver.d \ 4 | win32\basetsd.d \ 5 | win32\ntstatus.d \ 6 | win32\winnt.d \ 7 | win32\winbase.d \ 8 | win32\winuser.d \ 9 | win32\ktmtypes.d \ 10 | win32\winerror.d \ 11 | win32\unknwn.d \ 12 | win32\oaidl.d \ 13 | win32\objidl.d \ 14 | win32\wtypes.d \ 15 | win32\oleidl.d \ 16 | win32\ocidl.d \ 17 | win32\docobj.d \ 18 | win32\mshtmcid.d \ 19 | win32\xmldom.d \ 20 | win32\xmldso.d \ 21 | win32\xmldomdid.d \ 22 | win32\xmldsodid.d \ 23 | win32\idispids.d \ 24 | 25 | -------------------------------------------------------------------------------- /sdk/test.d: -------------------------------------------------------------------------------- 1 | module test; 2 | 3 | import sdk.win32.winbase; 4 | import sdk.win32.winuser; 5 | 6 | void main() 7 | { 8 | } 9 | -------------------------------------------------------------------------------- /stdext/container.d: -------------------------------------------------------------------------------- 1 | // This file is part of Visual D 2 | // 3 | // Visual D integrates the D programming language into Visual Studio 4 | // Copyright (c) 2010-2011 by Rainer Schuetze, All Rights Reserved 5 | // 6 | // Distributed under the Boost Software License, Version 1.0. 7 | // See accompanying file LICENSE.txt or copy at http://www.boost.org/LICENSE_1_0.txt 8 | 9 | module stdext.container; 10 | 11 | /////////////////////////////////////////////////////////////////////// 12 | struct Queue(T) 13 | { 14 | T[] data; 15 | size_t used; 16 | 17 | void append(ref T t) 18 | { 19 | if(used >= data.length) 20 | data.length = data.length * 2 + 1; 21 | data[used++] = t; 22 | } 23 | void remove(size_t idx) 24 | { 25 | assert(idx < used); 26 | for(size_t i = idx + 1; i < used; i++) 27 | data[i - 1] = data[i]; 28 | data[--used] = T.init; 29 | } 30 | 31 | @property size_t length() 32 | { 33 | return used; 34 | } 35 | 36 | ref T opIndex(size_t idx) 37 | { 38 | assert(idx < used); 39 | return data[idx]; 40 | } 41 | 42 | ref Queue!T opOpAssign(string op)(ref T t) if (op == "~") 43 | { 44 | append(t); 45 | return this; 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /stdext/denseset.d: -------------------------------------------------------------------------------- 1 | module stdext.denseset; 2 | import core.memory; 3 | 4 | struct DenseSet(T, ALLOC = GC) 5 | { 6 | static assert(is(T == class)); // only reference objects 7 | 8 | ~this() 9 | { 10 | if (entries) 11 | ALLOC.free(entries); 12 | } 13 | 14 | bool contains(T p) 15 | { 16 | return findSlot(cast(S)cast(void*)p) !is null; 17 | } 18 | 19 | bool insert(T p) 20 | { 21 | if (dim == 0) 22 | rehash(16); 23 | return findSlotInsert(cast(S)cast(void*)p) !is null; 24 | } 25 | 26 | bool remove(T p) 27 | { 28 | auto pp = findSlot(cast(S)cast(void*)p); 29 | if (!pp) 30 | return false; 31 | *pp = entryDeleted; 32 | deleted++; 33 | return true; 34 | } 35 | 36 | private: 37 | S* findSlot(S p) 38 | { 39 | if (dim == 0) 40 | return null; 41 | else if (used >= dim / 2) 42 | rehash(dim * 2); 43 | 44 | size_t off = calcHash(p) & (dim - 1); 45 | for (int j = 1;; ++j) 46 | { 47 | if (entries[off] == p) 48 | return entries + off; 49 | if (!entries[off]) 50 | return null; 51 | off = (off + j) & (dim - 1); 52 | } 53 | } 54 | 55 | S* findSlotInsert(S p) 56 | { 57 | S* del = null; 58 | size_t off = calcHash(p) & (dim - 1); 59 | for (int j = 1;; ++j) 60 | { 61 | if (entries[off] == p) 62 | return entries + off; 63 | 64 | if (!del && entries[off] == entryDeleted) 65 | // remember the first deleted entry 66 | del = entries + off; 67 | 68 | if (!entries[off]) 69 | { 70 | if (del) 71 | { 72 | *del = p; 73 | deleted--; 74 | return del; 75 | } 76 | entries[off] = p; 77 | used++; 78 | return entries + off; 79 | } 80 | off = (off + j) & (dim - 1); 81 | } 82 | } 83 | 84 | size_t calcHash(S p) 85 | { 86 | size_t addr = p; //cast(size_t) cast(void*) p; 87 | return addr ^ (addr >>> 4); 88 | } 89 | 90 | void rehash(size_t sz) 91 | { 92 | assert((sz & (sz - 1)) == 0); 93 | assert(sz > used - deleted); 94 | S* oentries = entries; 95 | entries = cast(S*) ALLOC.calloc(sz * S.sizeof); 96 | size_t odim = dim; 97 | 98 | dim = sz; 99 | used = 0; 100 | deleted = 0; 101 | for (int i = 0; i < odim; i++) 102 | { 103 | if (oentries[i] && oentries[i] != entryDeleted) 104 | findSlotInsert(oentries[i]); 105 | } 106 | ALLOC.free(oentries); 107 | } 108 | 109 | alias S = size_t; 110 | enum entryDeleted = cast(S) ~0; 111 | 112 | size_t dim; 113 | size_t used; 114 | size_t deleted; 115 | 116 | S* entries; 117 | } 118 | -------------------------------------------------------------------------------- /stdext/util.d: -------------------------------------------------------------------------------- 1 | // This file is part of Visual D 2 | // 3 | // Visual D integrates the D programming language into Visual Studio 4 | // Copyright (c) 2010-2011 by Rainer Schuetze, All Rights Reserved 5 | // 6 | // Distributed under the Boost Software License, Version 1.0. 7 | // See accompanying file LICENSE.txt or copy at http://www.boost.org/LICENSE_1_0.txt 8 | 9 | module stdext.util; 10 | 11 | //////////////////////////////////////////////////////////////// 12 | inout(T) static_cast(T, S = Object)(inout(S) p) 13 | { 14 | if(!p) 15 | return null; 16 | if(__ctfe) 17 | return cast(inout(T)) p; 18 | assert(cast(inout(T)) p); 19 | void* vp = cast(void*)p; 20 | return cast(inout(T)) vp; 21 | } 22 | 23 | //////////////////////////////////////////////////////////////// 24 | bool isIn(T...)(T values) 25 | { 26 | T[0] needle = values[0]; 27 | foreach(v; values[1..$]) 28 | if(v == needle) 29 | return true; 30 | return false; 31 | } 32 | 33 | -------------------------------------------------------------------------------- /tools/7z/7za.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/tools/7z/7za.exe -------------------------------------------------------------------------------- /tools/7z/License.txt: -------------------------------------------------------------------------------- 1 | 7-Zip Extra 2 | ~~~~~~~~~~~ 3 | License for use and distribution 4 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5 | 6 | Copyright (C) 1999-2019 Igor Pavlov. 7 | 8 | 7-Zip Extra files are under the GNU LGPL license. 9 | 10 | 11 | Notes: 12 | You can use 7-Zip Extra on any computer, including a computer in a commercial 13 | organization. You don't need to register or pay for 7-Zip. 14 | 15 | 16 | GNU LGPL information 17 | -------------------- 18 | 19 | This library is free software; you can redistribute it and/or 20 | modify it under the terms of the GNU Lesser General Public 21 | License as published by the Free Software Foundation; either 22 | version 2.1 of the License, or (at your option) any later version. 23 | 24 | This library is distributed in the hope that it will be useful, 25 | but WITHOUT ANY WARRANTY; without even the implied warranty of 26 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 27 | Lesser General Public License for more details. 28 | 29 | You can receive a copy of the GNU Lesser General Public License from 30 | http://www.gnu.org/ 31 | 32 | -------------------------------------------------------------------------------- /tools/build_dcxxfilt.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | rem unpack and configure binutils 2.25+ 3 | rem don't use spaces in path names! 4 | 5 | setlocal 6 | call "%VCINSTALLDIR%\Auxiliary\Build\vcvars32.bat" 7 | 8 | if "%DMDINSTALLDIR%" == "" set DMDINSTALLDIR=c:\d\dmd-2.109.1 9 | set DMD=%DMDINSTALLDIR%\windows\bin\dmd 10 | if "%BINUTILS%" == "" set BINUTILS=c:\s\d\visuald\cxxfilt 11 | 12 | if "%CONFIG%" == "" set CONFIG=Debug 13 | 14 | set OUTDIR=..\bin\%CONFIG% 15 | set LIBIBERTY=%BINUTILS%\libiberty 16 | 17 | %DMD% -c -m32mscoff -of%OUTDIR%\dcxxfilt.obj dcxxfilt.d || exit /B 1 18 | 19 | set SRC= 20 | set SRC=%SRC% %LIBIBERTY%\d-demangle.c 21 | set SRC=%SRC% %LIBIBERTY%\cp-demangle.c %LIBIBERTY%\cplus-dem.c 22 | set SRC=%SRC% %LIBIBERTY%\xmalloc.c %LIBIBERTY%\xstrdup.c %LIBIBERTY%\xexit.c 23 | set SRC=%SRC% %LIBIBERTY%\safe-ctype.c 24 | set SRC=%SRC% %LIBIBERTY%\alloca.c 25 | 26 | set COPT=-I %BINUTILS% -I %BINUTILS%\include -I %BINUTILS%\binutils -DHAVE_CONFIG_H 27 | set LIB=%LIB%;%DMDINSTALLDIR%\windows\lib32mscoff 28 | if exist "%VCINSTALLDIR%\lib\legacy_stdio_definitions.lib" set SRC=%SRC% legacy_stdio_definitions.lib 29 | if exist "%VCTOOLSINSTALLDIR%\lib\x86\legacy_stdio_definitions.lib" set SRC=%SRC% legacy_stdio_definitions.lib 30 | cl /Ox /Fe%OUTDIR%\dcxxfilt.exe /Fo%OUTDIR%\ %COPT% %SRC% %OUTDIR%\dcxxfilt.obj dbghelp.lib -link /SUBSYSTEM:CONSOLE,5.01 31 | -------------------------------------------------------------------------------- /tools/largeadr.d: -------------------------------------------------------------------------------- 1 | module largeadr; 2 | 3 | import std.file; 4 | 5 | void main(string[] argv) 6 | { 7 | foreach(f; argv[1 .. $]) 8 | { 9 | ubyte[] image = cast(ubyte[]) std.file.read(f); 10 | if(image[0x76] == 0xAE) 11 | throw new Exception("File " ~ f ~ " already large address aware"); 12 | if(image[0x76] != 0x8E) 13 | throw new Exception("File " ~ f ~ " not a dmd generated executable"); 14 | image[0x76] = 0xAE; 15 | std.file.write(f, image); 16 | } 17 | } -------------------------------------------------------------------------------- /tools/mb2utf16.d: -------------------------------------------------------------------------------- 1 | import std.file; 2 | import std.utf; 3 | import std.windows.charset; 4 | import core.sys.windows.winuser; 5 | 6 | pragma(lib, "user32"); 7 | 8 | void main(string[] argv) 9 | { 10 | int cp = GetKBCodePage(); 11 | string input = argv[1]; 12 | string output = (argv.length > 2 ? argv[2] : input); 13 | 14 | void[] content = std.file.read(input); 15 | string str8 = fromMBSz((cast(string)content ~ '\0').ptr, cp); 16 | wstring str16 = toUTF16(str8); 17 | ubyte[2] bom = [ 0xff, 0xfe ]; 18 | std.file.write(output, bom ~ cast(ubyte[])str16); 19 | } 20 | -------------------------------------------------------------------------------- /tools/nostacktrace.d: -------------------------------------------------------------------------------- 1 | // replacement module to disable stack traces and avoid the default stacktrace code 2 | // to be linked in 3 | 4 | module core.sys.windows.stacktrace; 5 | 6 | import core.sys.windows.windows; 7 | 8 | class StackTrace : Throwable.TraceInfo 9 | { 10 | public: 11 | static if (__VERSION__ < 2102) 12 | this(size_t skip, CONTEXT* context) 13 | { 14 | } 15 | else 16 | this(size_t skip, CONTEXT* context) @nogc 17 | { 18 | } 19 | 20 | int opApply(scope int delegate(ref const(char[])) dg) const 21 | { 22 | return 0; 23 | } 24 | int opApply(scope int delegate(ref size_t, ref const(char[])) dg) const 25 | { 26 | return 0; 27 | } 28 | override string toString() const @trusted 29 | { 30 | return null; 31 | } 32 | static ulong[] trace(size_t skip = 0, CONTEXT* context = null) 33 | { 34 | return null; 35 | } 36 | static ulong[] trace(ulong[] buffer, size_t skip = 0, CONTEXT* context = null) @nogc 37 | { 38 | return null; 39 | } 40 | static char[][] resolve(const(ulong)[] addresses) 41 | { 42 | return []; 43 | } 44 | private: 45 | ulong[] m_trace; 46 | } 47 | -------------------------------------------------------------------------------- /tools/tlb2idl.vcproj: -------------------------------------------------------------------------------- 1 | 2 | 11 | 12 | 15 | 16 | 17 | 18 | 19 | 25 | 38 | 39 | 45 | 58 | 59 | 60 | 61 | 62 | 63 | 66 | 67 | 70 | 71 | 72 | 73 | 74 | 75 | -------------------------------------------------------------------------------- /vdc/abothe/.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | .vs 3 | *.user 4 | packages 5 | comserver/obj 6 | DParserCOMServer.Tests/obj 7 | DParserCOMServer.Tests/bin -------------------------------------------------------------------------------- /vdc/abothe/DParserCOMServer.Tests/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /vdc/abothe/comserver/COM/Program.cs: -------------------------------------------------------------------------------- 1 | namespace DParserCOMServer.COM 2 | { 3 | static class Program 4 | { 5 | /// 6 | /// The main entry point for the application. 7 | /// 8 | static void Main(string[] args) 9 | { 10 | SetErrorMode(3); //don't show JitDebugger on crash 11 | 12 | // Run the out-of-process COM server 13 | ExeCOMServer.Instance.Run(); 14 | } 15 | 16 | [DllImport("Kernel32.dll")] 17 | public static extern uint SetErrorMode(uint mode); 18 | } 19 | } -------------------------------------------------------------------------------- /vdc/abothe/comserver/COM/VDServerClassFactory.cs: -------------------------------------------------------------------------------- 1 | /****************************** Module Header ******************************\ 2 | Module Name: ExeCOMServer.cs 3 | Project: CSExeCOMServer 4 | Copyright (c) Microsoft Corporation. 5 | 6 | ExeCOMServer encapsulates the skeleton of an out-of-process COM server in 7 | C#. The class implements the singleton design pattern and it's thread-safe. 8 | To start the server, call CSExeCOMServer.Instance.Run(). If the server is 9 | running, the function returns directly. Inside the Run method, it registers 10 | the class factories for the COM classes to be exposed from the COM server, 11 | and starts the message loop to wait for the drop of lock count to zero. 12 | When lock count equals zero, it revokes the registrations and quits the 13 | server. 14 | 15 | The lock count of the server is incremented when a COM object is created, 16 | and it's decremented when the object is released (GC-ed). In order that the 17 | COM objects can be GC-ed in time, ExeCOMServer triggers GC every 5 seconds 18 | by running a Timer after the server is started. 19 | 20 | This source is subject to the Microsoft Public License. 21 | See http://www.microsoft.com/en-us/openness/licenses.aspx#MPL. 22 | All other rights reserved. 23 | 24 | THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, 25 | EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED 26 | WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. 27 | \***************************************************************************/ 28 | 29 | #region Using directives 30 | 31 | using System; 32 | using System.Runtime.InteropServices; 33 | 34 | #endregion 35 | 36 | 37 | namespace DParserCOMServer.COM 38 | { 39 | [Guid("002a2de9-8bb6-484d-aa02-7e4ad4084715"), ComVisible(true)] 40 | public class VDServerClassFactory : IClassFactory 41 | { 42 | public int CreateInstance(IntPtr pUnkOuter, ref Guid riid, out IntPtr ppvObject) 43 | { 44 | ppvObject = IntPtr.Zero; 45 | 46 | if (pUnkOuter != IntPtr.Zero) 47 | { 48 | // The pUnkOuter parameter was non-NULL and the object does 49 | // not support aggregation. 50 | Marshal.ThrowExceptionForHR(COMNative.CLASS_E_NOAGGREGATION); 51 | } 52 | 53 | if (riid == new Guid(IID.IVDServer) || 54 | riid == new Guid(COMNative.IID_IDispatch) || 55 | riid == new Guid(COMNative.IID_IUnknown)) 56 | { 57 | // Create the instance of the .NET object 58 | ppvObject = Marshal.GetComInterfaceForObject(new VDServer(), typeof(IVDServer)); 59 | } 60 | else 61 | { 62 | // The object that ppvObject points to does not support the 63 | // interface identified by riid. 64 | Marshal.ThrowExceptionForHR(COMNative.E_NOINTERFACE); 65 | } 66 | return 0; // S_OK 67 | } 68 | 69 | public int LockServer(bool fLock) 70 | { 71 | if(fLock) 72 | ExeCOMServer.Instance.Lock(); 73 | else 74 | ExeCOMServer.Instance.Unlock(); 75 | return 0; // S_OK 76 | } 77 | } 78 | } -------------------------------------------------------------------------------- /vdc/abothe/comserver/CodeSemantics/ReferencesListGenerator.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using D_Parser.Completion; 4 | using D_Parser.Dom; 5 | using D_Parser.Parser; 6 | using D_Parser.Refactoring; 7 | using D_Parser.Resolver; 8 | using D_Parser.Resolver.ExpressionSemantics; 9 | using D_Parser.Resolver.TypeResolution; 10 | using System.IO; 11 | 12 | namespace DParserCOMServer.CodeSemantics 13 | { 14 | public class ReferencesListGenerator : AbstractVDServerTask 15 | { 16 | private readonly VDServer _vdServer; 17 | public ReferencesListGenerator(VDServer vdServer, EditorDataProvider editorDataProvider) 18 | : base(vdServer, editorDataProvider) 19 | { 20 | _vdServer = vdServer; 21 | } 22 | 23 | protected override string Process(EditorData editorData, bool moduleOnly) 24 | { 25 | var sr = DResolver.GetScopedCodeObject(editorData); 26 | var rr = sr != null ? LooseResolution.ResolveTypeLoosely(editorData, sr, out _, true) : null; 27 | 28 | var refs = new StringBuilder(); 29 | if (rr != null) 30 | { 31 | var n = ExpressionTypeEvaluation.GetResultMember(rr); 32 | 33 | if (n != null) 34 | { 35 | var ctxt = ResolutionContext.Create(editorData, true); 36 | if (moduleOnly || n.ContainsAnyAttribute(DTokens.Private) || (n is DVariable variable && variable.IsLocal)) 37 | { 38 | GetReferencesInModule(editorData.SyntaxTree, refs, n, ctxt); 39 | } 40 | else 41 | { 42 | foreach (var rootPackage in editorData.ParseCache.EnumRootPackagesSurroundingModule(editorData.SyntaxTree)) 43 | foreach (var module in rootPackage) 44 | GetReferencesInModule(module, refs, n, ctxt); 45 | } 46 | } 47 | 48 | //var res = TypeReferenceFinder.Scan(_editorData, System.Threading.CancellationToken.None, null); 49 | } 50 | 51 | return refs.ToString(); 52 | } 53 | 54 | private void GetReferencesInModule(DModule ast, StringBuilder refs, DNode n, ResolutionContext ctxt) 55 | { 56 | var res = ReferencesFinder.SearchModuleForASTNodeReferences(ast, n, ctxt); 57 | 58 | foreach (var r in res) 59 | { 60 | var rfilename = ast.FileName; 61 | var rloc = r.Location; 62 | var len = r.ToString().Length; 63 | var src = GetSource(rfilename); 64 | var linetxt = GetSourceLine(src, rloc.Line); 65 | var ln = $"{rloc.Line},{rloc.Column - 1},{rloc.Line},{rloc.Column + len - 1}:{rfilename}|{linetxt}\n"; 66 | 67 | refs.Append(ln); 68 | } 69 | } 70 | 71 | private string GetSource(string fileName) 72 | { 73 | var sources = _vdServer._sources; 74 | if (!sources.ContainsKey(fileName)) 75 | { 76 | try 77 | { 78 | sources[fileName] = File.ReadAllText(fileName); 79 | } 80 | catch (Exception) 81 | { 82 | return ""; 83 | } 84 | } 85 | return sources[fileName]; 86 | } 87 | 88 | private static string GetSourceLine(string s, int line) 89 | { 90 | int off = 0; 91 | for (int ln = 1; ln < line; ln++) 92 | off = s.IndexOf('\n', off) + 1; 93 | int end = s.IndexOf('\n', off); 94 | return s.Substring(off, end - off); 95 | } 96 | } 97 | } 98 | -------------------------------------------------------------------------------- /vdc/abothe/comserver/CodeSemantics/SemanticExpansionsGenerator.cs: -------------------------------------------------------------------------------- 1 | using D_Parser.Completion; 2 | using D_Parser.Dom; 3 | using D_Parser.Parser; 4 | 5 | namespace DParserCOMServer.CodeSemantics 6 | { 7 | public class SemanticExpansionsGenerator : AbstractVDServerTask 8 | { 9 | public SemanticExpansionsGenerator(VDServer vdServer, EditorDataProvider editorDataProvider) 10 | : base(vdServer, editorDataProvider) { } 11 | 12 | protected override string Process(EditorData editorData, string tok) 13 | { 14 | var originalCaretLocation = editorData.CaretLocation; 15 | var idx = originalCaretLocation.Column - 1; 16 | // step back to beginning of identifier 17 | while (editorData.CaretOffset > 0 && Lexer.IsIdentifierPart(editorData.ModuleCode[editorData.CaretOffset - 1])) 18 | { 19 | editorData.CaretOffset--; 20 | if (idx > 0) idx--; 21 | } 22 | editorData.CaretLocation = new CodeLocation(idx + 1, originalCaretLocation.Line); 23 | 24 | char triggerChar = string.IsNullOrEmpty(tok) ? '\0' : tok[0]; 25 | 26 | var cdgen = new VDServerCompletionDataGenerator(tok); 27 | CodeCompletion.GenerateCompletionData(editorData, cdgen, triggerChar); 28 | return cdgen.expansions.ToString(); 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /vdc/abothe/comserver/CodeSemantics/SymbolDefinitionGenerator.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using D_Parser.Completion; 4 | using D_Parser.Dom; 5 | using D_Parser.Parser; 6 | using D_Parser.Resolver; 7 | using D_Parser.Resolver.ExpressionSemantics; 8 | using D_Parser.Resolver.TypeResolution; 9 | 10 | namespace DParserCOMServer.CodeSemantics 11 | { 12 | public class SymbolDefinitionGenerator 13 | : AbstractVDServerTask, CodeLocation> 14 | { 15 | public SymbolDefinitionGenerator(VDServer vdServer, EditorDataProvider editorDataProvider) 16 | : base(vdServer, editorDataProvider) { } 17 | 18 | protected override Tuple Process(EditorData editorData, CodeLocation tipEnd) 19 | { 20 | var tipStart = editorData.CaretLocation; 21 | editorData.CaretOffset += 2; 22 | editorData.CaretLocation = tipEnd; 23 | 24 | var sr = DResolver.GetScopedCodeObject(editorData); 25 | var rr = sr != null ? LooseResolution.ResolveTypeLoosely(editorData, sr, out _, true) : null; 26 | 27 | var definitionSourceFilename = new StringBuilder(); 28 | if (rr != null) 29 | { 30 | if (rr is AliasedType at) 31 | { 32 | // jump to original definition if it is not renamed or the caret is on the import 33 | var isRenamed = (at.Definition as ImportSymbolAlias)?.ImportBinding?.Alias != null; 34 | if (!isRenamed || at.Definition.Location == sr.Location) 35 | rr = at.Base; 36 | } 37 | DNode n = null; 38 | foreach (var t in AmbiguousType.TryDissolve(rr)) 39 | { 40 | n = ExpressionTypeEvaluation.GetResultMember(t); 41 | if (n != null) 42 | break; 43 | } 44 | 45 | if (n != null) 46 | { 47 | if (definitionSourceFilename.Length > 0) 48 | definitionSourceFilename.Append("\n"); 49 | bool decl = false; 50 | if (n is DMethod method) 51 | decl = method.Body == null; 52 | else if (n.ContainsAnyAttribute(DTokens.Extern)) 53 | decl = true; 54 | if (decl) 55 | definitionSourceFilename.Append("EXTERN:"); 56 | 57 | tipStart = n.Location; 58 | tipEnd = n.EndLocation; 59 | if (n.NodeRoot is DModule module) 60 | definitionSourceFilename.Append(module.FileName); 61 | } 62 | } 63 | 64 | return Tuple.Create(tipStart, tipEnd, definitionSourceFilename.ToString()); 65 | } 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /vdc/abothe/comserver/IVDServer.cs: -------------------------------------------------------------------------------- 1 | // 2 | // To be used by Visual D, set registry entry 3 | // HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\9.0D\ToolsOptionsPages\Projects\Visual D Settings\VDServerIID 4 | // to "{002a2de9-8bb6-484d-AA05-7e4ad4084715}" 5 | 6 | using System.Runtime.InteropServices; 7 | 8 | namespace DParserCOMServer 9 | { 10 | public static class IID 11 | { 12 | public const string IVDServer = "002a2de9-8bb6-484d-9901-7e4ad4084715"; 13 | public const string VDServer = "002a2de9-8bb6-484d-AA05-7e4ad4084715"; 14 | //public const string VDServer = "002a2de9-8bb6-484d-AB05-7e4ad4084715"; // debug 15 | } 16 | 17 | [ComVisible (true), Guid (IID.IVDServer)] 18 | [InterfaceType (ComInterfaceType.InterfaceIsIUnknown)] 19 | public interface IVDServer 20 | { 21 | void ConfigureSemanticProject (string filename, string imp, string stringImp, string versionids, string debugids, string cmdline, uint flags); 22 | void ClearSemanticProject (); 23 | void UpdateModule (string filename, string srcText, int flags); 24 | void GetTip (string filename, int startLine, int startIndex, int endLine, int endIndex, int flags); 25 | void GetTipResult (out int startLine, out int startIndex, out int endLine, out int endIndex, out string answer); 26 | void GetSemanticExpansions (string filename, string tok, uint line, uint idx, string expr); 27 | void GetSemanticExpansionsResult (out string stringList); 28 | void IsBinaryOperator (string filename, uint startLine, uint startIndex, uint endLine, uint endIndex, out bool pIsOp); 29 | void GetParseErrors (string filename, out string errors); 30 | void GetBinaryIsInLocations (string filename, out object locs); // array of pairs of DWORD 31 | void GetDocumentOutline(string filename, out string outline); 32 | void GetLastMessage (out string message); 33 | void GetIdentifierTypes(string filename, int startLine, int endLine, int flags); 34 | void GetIdentifierTypesResult(out string types); 35 | void GetDefinition (string filename, int startLine, int startIndex, int endLine, int endIndex); 36 | void GetDefinitionResult (out int startLine, out int startIndex, out int endLine, out int endIndex, out string filename); 37 | void GetReferences (string filename, string tok, uint line, uint idx, string expr, bool moduleOnly); 38 | void GetReferencesResult (out string stringList); 39 | void ConfigureCommentTasks (string tasks); 40 | void GetCommentTasks (string filename, out string tasks); 41 | void GetParameterStorageLocs(string filename, out object locs); // array of triplets of DWORD 42 | } 43 | } 44 | 45 | 46 | -------------------------------------------------------------------------------- /vdc/abothe/comserver/NodeToolTipContentGen.cs: -------------------------------------------------------------------------------- 1 | using System.Text; 2 | using D_Parser.Completion.ToolTips; 3 | 4 | namespace DParserCOMServer 5 | { 6 | class NodeToolTipContentGen : NodeTooltipRepresentationGen 7 | { 8 | public static readonly NodeToolTipContentGen Instance = new NodeToolTipContentGen(); 9 | 10 | private NodeToolTipContentGen() { 11 | SignatureFlags = TooltipSignatureFlags.NoEnsquaredDefaultParams | TooltipSignatureFlags.NoLineBreakedMethodParameters; 12 | } 13 | 14 | protected override void AppendFormat (string content, StringBuilder sb, FormatFlags flags, double r = 0, double g = 0, double b = 0) 15 | { 16 | sb.Append (content); 17 | //base.AppendFormat (content, sb, flags, r, g, b); 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /vdc/abothe/comserver/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("COM Server for DParser")] 9 | [assembly: AssemblyDescription("COM Server for DParser")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("Rainer Schuetze")] 12 | [assembly: AssemblyProduct("DParserCOMServer")] 13 | [assembly: AssemblyCopyright("Copyright © R.Schuetze 2013")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("002a2de9-8bb6-484d-AA03-7e4ad4084715")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.*")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /vdc/abothe/comserver/VDServerEditorFlags.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace DParserCOMServer 4 | { 5 | [Flags] 6 | public enum VDServerEditorFlags:uint 7 | { 8 | [Obsolete] 9 | Unittest = 1, 10 | [Obsolete] 11 | DebugAssert = 2, 12 | [Obsolete] 13 | x64 = 4, 14 | [Obsolete] 15 | Coverage = 8, 16 | [Obsolete] 17 | DDoc = 16, 18 | [Obsolete] 19 | NoBoundsCheck = 32, 20 | [Obsolete] 21 | GNU = 64, 22 | [Obsolete] 23 | LDC = 0x4000000, 24 | [Obsolete] 25 | CRuntime_Microsoft = 0x8000000, 26 | /// 27 | /// GNU or LDC 28 | /// 29 | [Obsolete] 30 | CRuntime_MinGW = 0x4000040, 31 | ShowUFCSItems = 0x2000000, 32 | EnableMixinAnalysis = 0x1000000, 33 | HideDeprecatedNodes = 128 34 | } 35 | } -------------------------------------------------------------------------------- /vdc/abothe/comserver/VDserverParseCacheView.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Linq; 3 | using D_Parser.Dom; 4 | using D_Parser.Misc; 5 | 6 | namespace DParserCOMServer 7 | { 8 | class VDserverParseCacheView : ParseCacheView 9 | { 10 | #region Properties 11 | readonly List packs; 12 | #endregion 13 | public string[] PackageRootDirs { get; private set; } 14 | 15 | #region Constructors 16 | public VDserverParseCacheView(string[] packageRoots) 17 | { 18 | this.PackageRootDirs = packageRoots; 19 | this.packs = new List(); 20 | Add(packageRoots); 21 | } 22 | 23 | public VDserverParseCacheView(IEnumerable packages) 24 | { 25 | this.packs = new List(packages); 26 | } 27 | #endregion 28 | 29 | public override IEnumerable EnumRootPackagesSurroundingModule(DModule module) 30 | { 31 | // if packs not added during construction because not yet parsed by GlobalParseCache, try adding now 32 | if (packs.Count() != PackageRootDirs.Count()) 33 | Add(PackageRootDirs); 34 | return packs; 35 | } 36 | 37 | public void Add(RootPackage pack) 38 | { 39 | if (pack != null && !packs.Contains(pack)) 40 | packs.Add(pack); 41 | } 42 | 43 | public void Add(IEnumerable roots) 44 | { 45 | RootPackage rp; 46 | foreach (var r in roots) 47 | if ((rp = GlobalParseCache.GetRootPackage(r)) != null && !packs.Contains(rp)) 48 | packs.Add(rp); 49 | } 50 | } 51 | } -------------------------------------------------------------------------------- /vdc/abothe/register.bat: -------------------------------------------------------------------------------- 1 | rem run this batch once after compilation to register the debug version 2 | rem regasm must be in the PATH, so you could just use the VS2010 command line 3 | 4 | rem Framework 4+ needed 5 | set regasm=c:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe 6 | 7 | %regasm% ..\..\bin\Debug\abothe.VDServer.dll /codebase /regfile:%cd%\abothe.vdserver.reg 8 | if errorlevel 1 goto xit 9 | 10 | rem for 64-bit OS, we must add these entries into the Wow6432Node hive of the registry 11 | if not exist c:\windows\syswow64\regedit.exe goto win32 12 | 13 | c:\windows\syswow64\regedit -m %cd%\abothe.vdserver.reg 14 | goto xit 15 | 16 | :win32 17 | regedit -m %cd%\abothe.vdserver.reg 18 | 19 | :xit -------------------------------------------------------------------------------- /vdc/abothe/testvd.d: -------------------------------------------------------------------------------- 1 | // compile with 2 | // m:\s\d\rainers\windows\bin\dmd.exe -g testvd.d -I..\.. oleaut32.lib ole32.lib 3 | 4 | module testvd; 5 | 6 | import std.stdio; 7 | import std.conv; 8 | 9 | import sdk.win32.oaidl; 10 | import sdk.win32.objbase; 11 | import sdk.win32.oleauto; 12 | import sdk.port.base; 13 | 14 | import vdc.ivdserver; 15 | 16 | static GUID IVDServer_iid = uuid("002a2de9-8bb6-484d-9901-7e4ad4084715"); 17 | static GUID VDServer_iid = uuid("002a2de9-8bb6-484d-AA05-7e4ad4084715"); 18 | static GUID IID_IUnknown = uuid("00000000-0000-0000-C000-000000000046"); 19 | static GUID IID_IClassFactory = { 0x00000001,0x0000,0x0000,[ 0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46 ] }; 20 | 21 | // issues: 22 | // C# registration with REGASM only adds the class to the 64-bit registry, not wow6432node 23 | int main() 24 | { 25 | CoInitialize(null); 26 | 27 | IVDServer gVDServer; 28 | 29 | IUnknown pUnknown; 30 | HRESULT hr = CoGetClassObject(VDServer_iid, CLSCTX_INPROC_SERVER, null, IID_IUnknown, cast(void**)&pUnknown); 31 | if(FAILED(hr)) 32 | return -1; 33 | // hr = OleRun(pUnknown); 34 | // if(FAILED(hr)) 35 | // return -3; 36 | IClassFactory factory; 37 | hr = pUnknown.QueryInterface(&IID_IClassFactory, cast(void**)&factory); 38 | pUnknown.Release(); 39 | if(FAILED(hr)) 40 | return -5; 41 | 42 | hr = factory.CreateInstance(null, &IVDServer_iid, cast(void**)&gVDServer); 43 | if(FAILED(hr)) 44 | return -5; 45 | 46 | BSTR fname = SysAllocString("filename"); 47 | BSTR source = SysAllocString("void main() { int abc; }"); 48 | hr = gVDServer.UpdateModule(fname, source, false); 49 | 50 | version(all) 51 | {{ 52 | int iStartLine = 1; 53 | int iStartIndex = 6; 54 | int iEndLine = 1; 55 | int iEndIndex = 6; 56 | hr = gVDServer.GetTip(fname, iStartLine, iStartIndex, iEndLine, iEndIndex); 57 | 58 | BSTR btype; 59 | hr = gVDServer.GetTipResult(iStartLine, iStartIndex, iEndLine, iEndIndex, &btype); 60 | writeln("Tip: ", to!wstring(btype)); 61 | }} 62 | 63 | version(all) 64 | {{ 65 | int iStartLine = 1; 66 | int iStartIndex = 6; 67 | BSTR tok = SysAllocString("m"); 68 | BSTR expr = SysAllocString(""); 69 | hr = gVDServer.GetSemanticExpansions(fname, tok, iStartLine, iStartIndex, expr); 70 | 71 | BSTR expansions; 72 | hr = gVDServer.GetSemanticExpansionsResult(&expansions); 73 | writeln("Expansion: ", to!wstring(expansions)); 74 | }} 75 | 76 | BSTR msg; 77 | hr = gVDServer.GetLastMessage(&msg); 78 | if(FAILED(hr)) 79 | return -6; 80 | factory.Release(); 81 | gVDServer.Release(); 82 | return 0; 83 | } 84 | -------------------------------------------------------------------------------- /vdc/ast/all.d: -------------------------------------------------------------------------------- 1 | // This file is part of Visual D 2 | // 3 | // Visual D integrates the D programming language into Visual Studio 4 | // Copyright (c) 2010-2011 by Rainer Schuetze, All Rights Reserved 5 | // 6 | // Distributed under the Boost Software License, Version 1.0. 7 | // See accompanying file LICENSE.txt or copy at http://www.boost.org/LICENSE_1_0.txt 8 | 9 | module vdc.ast.all; 10 | 11 | public import vdc.ast.aggr; 12 | public import vdc.ast.decl; 13 | public import vdc.ast.expr; 14 | public import vdc.ast.iasm; 15 | public import vdc.ast.misc; 16 | public import vdc.ast.mod; 17 | public import vdc.ast.node; 18 | public import vdc.ast.stmt; 19 | public import vdc.ast.tmpl; 20 | public import vdc.ast.type; 21 | public import vdc.ast.writer; 22 | -------------------------------------------------------------------------------- /vdc/dmdserver/dmdicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/vdc/dmdserver/dmdicon.ico -------------------------------------------------------------------------------- /vdc/dmdserver/dmdlib.d: -------------------------------------------------------------------------------- 1 | module dmd.lib; 2 | 3 | class Library 4 | { 5 | } 6 | -------------------------------------------------------------------------------- /vdc/dmdserver/dmdserver.idl: -------------------------------------------------------------------------------- 1 | // This file is part of Visual D 2 | // 3 | // Visual D integrates the D programming language into Visual Studio 4 | // Copyright (c) 2012 by Rainer Schuetze, All Rights Reserved 5 | // 6 | // Distributed under the Boost Software License, Version 1.0. 7 | // See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt 8 | 9 | // bring in core IDL files 10 | import "oaidl.idl"; 11 | import "../ivdserver.idl"; 12 | 13 | // library statement 14 | [uuid(002a2de9-8bb6-484d-9907-7e4ad4084715), version(1.0), 15 | helpstring("DMD Semantic Server")] 16 | library VDServerLib 17 | { 18 | importlib("stdole32.tlb"); 19 | [uuid(002a2de9-8bb6-484d-9906-7e4ad4084715)] 20 | coclass VDServerClassFactory 21 | { 22 | [default] interface IVDServer; 23 | }; 24 | }; 25 | 26 | -------------------------------------------------------------------------------- /vdc/ivdserver.idl: -------------------------------------------------------------------------------- 1 | // This file is part of Visual D 2 | // 3 | // Visual D integrates the D programming language into Visual Studio 4 | // Copyright (c) 2012 by Rainer Schuetze, All Rights Reserved 5 | // 6 | // Distributed under the Boost Software License, Version 1.0. 7 | // See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt 8 | 9 | // bring in core IDL files 10 | import "oaidl.idl"; 11 | 12 | [ 13 | object, 14 | uuid(002a2de9-8bb6-484d-9901-7e4ad4084715), 15 | dual, 16 | nonextensible, 17 | helpstring("IVDServer Interface"), 18 | pointer_default(unique) 19 | ] 20 | interface IVDServer : IUnknown 21 | { 22 | HRESULT ConfigureSemanticProject([in] BSTR filename, [in] BSTR imp, [in] BSTR stringImp, [in] BSTR versionids, [in] BSTR debugids, [in] BSTR cmdline, [in] DWORD flags); 23 | HRESULT ClearSemanticProject(); 24 | HRESULT UpdateModule([in] BSTR filename, [in] BSTR srcText, [in] DWORD flags); 25 | HRESULT GetTip([in] BSTR filename, [in] DWORD startLine, [in] DWORD startIndex, [in] DWORD endLine, [in] DWORD endIndex, [in] DWORD flags); 26 | HRESULT GetTipResult([out] DWORD *startLine, [out] DWORD *startIndex, [out] DWORD *endLine, [out] DWORD *endIndex, [out,retval] BSTR* answer); 27 | HRESULT GetSemanticExpansions([in] BSTR filename, [in] BSTR tok, [in] DWORD line, [in] DWORD idx, [in] BSTR expr); 28 | HRESULT GetSemanticExpansionsResult([out,retval] BSTR* stringList); 29 | HRESULT IsBinaryOperator([in] BSTR filename, [in] DWORD startLine, [in] DWORD startIndex, [in] DWORD endLine, [in] DWORD endIndex, [out,retval] BOOL* pIsOp); 30 | HRESULT GetParseErrors([in] BSTR filename, [out, retval] BSTR* errors); 31 | HRESULT GetBinaryIsInLocations([in] BSTR filename, [out,retval] VARIANT* locs); // array of pairs of DWORD 32 | HRESULT GetDocumentOutline([in] BSTR filename, [out, retval] BSTR* stringList); 33 | HRESULT GetLastMessage([out,retval] BSTR* message); 34 | HRESULT GetIdentifierTypes([in] BSTR filename, [in] DWORD startLine, [in] DWORD endLine, [in] DWORD flags); 35 | HRESULT GetIdentifierTypesResult([out, retval] BSTR* types); 36 | HRESULT GetDefinition([in] BSTR filename, [in] DWORD startLine, [in] DWORD startIndex, [in] DWORD endLine, [in] DWORD endIndex); 37 | HRESULT GetDefinitionResult([out] DWORD *startLine, [out] DWORD *startIndex, [out] DWORD *endLine, [out] DWORD *endIndex, [out,retval] BSTR* filename); 38 | HRESULT GetReferences([in] BSTR filename, [in] BSTR tok, [in] DWORD line, [in] DWORD idx, [in] BSTR expr, [in] BOOL moduleOnly); 39 | HRESULT GetReferencesResult([out,retval] BSTR* stringList); 40 | HRESULT ConfigureCommentTasks([in] BSTR tasks); 41 | HRESULT GetCommentTasks([in] BSTR filename, [out,retval] BSTR* tasks); 42 | HRESULT GetParameterStorageLocs([in] BSTR filename, [out, retval] VARIANT* locs); // array of triplets of DWORD 43 | }; 44 | 45 | -------------------------------------------------------------------------------- /vdc/logger.d: -------------------------------------------------------------------------------- 1 | // This file is part of Visual D 2 | // 3 | // Visual D integrates the D programming language into Visual Studio 4 | // Copyright (c) 2010-2011 by Rainer Schuetze, All Rights Reserved 5 | // 6 | // Distributed under the Boost Software License, Version 1.0. 7 | // See accompanying file LICENSE.txt or copy at http://www.boost.org/LICENSE_1_0.txt 8 | 9 | module vdc.logger; 10 | 11 | import std.stdio; 12 | import std.file; 13 | import std.datetime; 14 | import std.conv; 15 | import std.string; 16 | import std.array; 17 | 18 | extern(Windows) void OutputDebugStringA(const char* lpOutputString); 19 | extern(Windows) uint GetCurrentThreadId(); 20 | 21 | import core.sys.windows.windows; 22 | 23 | __gshared int gLogIndent = 0; 24 | __gshared bool gLogFirst = true; 25 | __gshared const string gLogFile = "c:/tmp/parser.log"; 26 | 27 | debug version = enableLog; 28 | 29 | version(enableLog) { 30 | 31 | struct LogIndent 32 | { 33 | this(int n) 34 | { 35 | indent = n; 36 | gLogIndent += indent; 37 | } 38 | ~this() 39 | { 40 | gLogIndent -= indent; 41 | } 42 | int indent; 43 | } 44 | 45 | mixin template logIndent(int n = 1) 46 | { 47 | LogIndent indent = LogIndent(n); 48 | } 49 | 50 | static shared(Object) logSync = new shared(Object); 51 | 52 | void logInfo(T...)(string fmt, T args) 53 | { 54 | auto buffer = new char[17 + 1]; 55 | SysTime now = Clock.currTime(); 56 | uint tid = GetCurrentThreadId(); 57 | auto len = sprintf(buffer.ptr, "%02d:%02d:%02d - %04x - ", 58 | now.hour, now.minute, now.second, tid); 59 | string s = to!string(buffer[0..len]); 60 | s ~= replicate(" ", gLogIndent); 61 | 62 | try { 63 | import std.format; 64 | s ~= std.format.format(fmt, args); 65 | } 66 | catch(Exception e) 67 | { 68 | string msg = e.toString(); 69 | s ~= " EXCEPTION"; 70 | } 71 | 72 | log_string(s); 73 | } 74 | 75 | void log_string(string s) 76 | { 77 | s ~= "\n"; 78 | if(gLogFile.length == 0) 79 | OutputDebugStringA(toStringz(s)); 80 | else 81 | synchronized(logSync) 82 | { 83 | if(gLogFirst) 84 | { 85 | gLogFirst = false; 86 | s = "\n" ~ replicate("=", 80) ~ "\n" ~ s; 87 | } 88 | std.file.append(gLogFile, s); 89 | } 90 | } 91 | } 92 | else 93 | { 94 | struct LogIndent 95 | { 96 | this(int n) 97 | { 98 | } 99 | } 100 | void logInfo(...) 101 | { 102 | } 103 | void log_string(string s) 104 | { 105 | } 106 | } 107 | -------------------------------------------------------------------------------- /vdc/vdserver.idl: -------------------------------------------------------------------------------- 1 | // This file is part of Visual D 2 | // 3 | // Visual D integrates the D programming language into Visual Studio 4 | // Copyright (c) 2012 by Rainer Schuetze, All Rights Reserved 5 | // 6 | // Distributed under the Boost Software License, Version 1.0. 7 | // See accompanying file LICENSE.txt or copy at http://www.boost.org/LICENSE_1_0.txt 8 | 9 | // bring in core IDL files 10 | import "oaidl.idl"; 11 | import "ivdserver.idl"; 12 | 13 | // library statement 14 | [uuid(002a2de9-8bb6-484d-9903-7e4ad4084715), version(1.0), 15 | helpstring("Visual D Semantic Server")] 16 | library VDServerLib 17 | { 18 | importlib("stdole32.tlb"); 19 | [uuid(002a2de9-8bb6-484d-9902-7e4ad4084715)] 20 | coclass VDServerClassFactory 21 | { 22 | [default] interface IVDServer; 23 | }; 24 | }; 25 | 26 | -------------------------------------------------------------------------------- /vdc/vdserver.reg: -------------------------------------------------------------------------------- 1 | REGEDIT 2 | HKEY_CLASSES_ROOT\visuald.vdserver.factory\CLSID = {002a2de9-8bb6-484d-9902-7e4ad4084715} 3 | HKEY_CLASSES_ROOT\CLSID\{002a2de9-8bb6-484d-9902-7e4ad4084715} = visuald.vdserver.factory 4 | HKEY_CLASSES_ROOT\CLSID\{002a2de9-8bb6-484d-9902-7e4ad4084715}\LocalServer32 = m:\s\d\visuald\trunk\bin\Debug\vdserver.exe 5 | HKEY_CLASSES_ROOT\CLSID\{002a2de9-8bb6-484d-9902-7e4ad4084715}\TypeLib = {002a2de9-8bb6-484d-9903-7e4ad4084715} 6 | HKEY_CLASSES_ROOT\TypeLib\{002a2de9-8bb6-484d-9903-7e4ad4084715}\1.0\0\win32 = m:\s\d\visuald\trunk\bin\Debug\vdserver.exe 7 | HKEY_CLASSES_ROOT\Interface\{002a2de9-8bb6-484d-9901-7e4ad4084715} = IVDServer 8 | HKEY_CLASSES_ROOT\Interface\{002a2de9-8bb6-484d-9901-7e4ad4084715}\ProxyStubClsid32 = {00020424-0000-0000-C000-000000000046} 9 | HKEY_CLASSES_ROOT\Interface\{002a2de9-8bb6-484d-9901-7e4ad4084715}\TypeLib = {002a2de9-8bb6-484d-9903-7e4ad4084715} 10 | -------------------------------------------------------------------------------- /vdc/vdserver_d.reg: -------------------------------------------------------------------------------- 1 | REGEDIT 2 | HKEY_CLASSES_ROOT\visuald.vdserver_d.factory\CLSID = {002a2de9-8bb6-484d-9A02-7e4ad4084715} 3 | HKEY_CLASSES_ROOT\CLSID\{002a2de9-8bb6-484d-9A02-7e4ad4084715} = visuald.vdserver_d.factory 4 | HKEY_CLASSES_ROOT\CLSID\{002a2de9-8bb6-484d-9A02-7e4ad4084715}\LocalServer32 = m:\s\d\visuald\trunk\bin\Debug\vdserver_d.exe 5 | HKEY_CLASSES_ROOT\CLSID\{002a2de9-8bb6-484d-9A02-7e4ad4084715}\TypeLib = {002a2de9-8bb6-484d-9A03-7e4ad4084715} 6 | HKEY_CLASSES_ROOT\TypeLib\{002a2de9-8bb6-484d-9A03-7e4ad4084715}\1.0\0\win32 = m:\s\d\visuald\trunk\bin\Debug\vdserver_d.exe 7 | HKEY_CLASSES_ROOT\Interface\{002a2de9-8bb6-484d-9A01-7e4ad4084715} = IVDServer 8 | HKEY_CLASSES_ROOT\Interface\{002a2de9-8bb6-484d-9A01-7e4ad4084715}\ProxyStubClsid32 = {00020424-0000-0000-C000-000000000046} 9 | HKEY_CLASSES_ROOT\Interface\{002a2de9-8bb6-484d-9A01-7e4ad4084715}\TypeLib = {002a2de9-8bb6-484d-9A03-7e4ad4084715} 10 | -------------------------------------------------------------------------------- /vdextensions/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("vdextensions")] 9 | [assembly: AssemblyDescription("Extension to the Visual D package for Visual Studio")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("Rainer Schuetze")] 12 | [assembly: AssemblyProduct("vdextensions")] 13 | [assembly: AssemblyCopyright("Copyright 2013-2018 Rainer Schuetze")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // Version information for an assembly consists of the following four values: 23 | // 24 | // Major Version 25 | // Minor Version 26 | // Build Number 27 | // Revision 28 | // 29 | // You can specify all the values or you can default the Build and Revision Numbers 30 | // by using the '*' as shown below: 31 | // [assembly: AssemblyVersion("1.0.*")] 32 | [assembly: AssemblyVersion("1.0.*")] 33 | [assembly: AssemblyFileVersion("1.0.0.0")] 34 | -------------------------------------------------------------------------------- /vdextensions/Properties/AssemblyInfo15.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("vdext15")] 9 | [assembly: AssemblyDescription("Extension to the Visual D package for Visual Studio 2017 and later")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("Rainer Schuetze")] 12 | [assembly: AssemblyProduct("vdext15")] 13 | [assembly: AssemblyCopyright("Copyright 2019 Rainer Schuetze")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // Version information for an assembly consists of the following four values: 23 | // 24 | // Major Version 25 | // Minor Version 26 | // Build Number 27 | // Revision 28 | // 29 | // You can specify all the values or you can default the Build and Revision Numbers 30 | // by using the '*' as shown below: 31 | // [assembly: AssemblyVersion("1.0.*")] 32 | [assembly: AssemblyVersion("1.0.*")] 33 | [assembly: AssemblyFileVersion("1.0.0.0")] 34 | -------------------------------------------------------------------------------- /vdextensions/vdext15.cs: -------------------------------------------------------------------------------- 1 | // This file is part of Visual D 2 | // 3 | // Visual D integrates the D programming language into Visual Studio 4 | // Copyright (c) 2016 by Rainer Schuetze, All Rights Reserved 5 | // 6 | // Distributed under the Boost Software License, Version 1.0. 7 | // See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt 8 | 9 | using System; 10 | using System.Runtime.InteropServices; // DllImport 11 | 12 | namespace vdext15 13 | { 14 | public class IID 15 | { 16 | public const string IVisualDHelper15 = "002a2de9-8bb6-484d-9915-7e4ad4084715"; 17 | public const string VisualDHelper15 = "002a2de9-8bb6-484d-AA15-7e4ad4084715"; 18 | } 19 | 20 | [ComVisible(true), Guid(IID.IVisualDHelper15)] 21 | [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] 22 | public interface IVisualDHelper15 23 | { 24 | } 25 | 26 | [ComVisible(true), Guid(IID.VisualDHelper15)] 27 | [ClassInterface(ClassInterfaceType.None)] 28 | public partial class VisualDHelper15 : IVisualDHelper15 29 | { 30 | public VisualDHelper15() 31 | { 32 | } 33 | 34 | public void Dispose() 35 | { 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /vdextensions/vdextensions.cs: -------------------------------------------------------------------------------- 1 | // This file is part of Visual D 2 | // 3 | // Visual D integrates the D programming language into Visual Studio 4 | // Copyright (c) 2016 by Rainer Schuetze, All Rights Reserved 5 | // 6 | // Distributed under the Boost Software License, Version 1.0. 7 | // See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt 8 | 9 | using System; 10 | using System.Runtime.InteropServices; // DllImport 11 | 12 | using Microsoft.VisualStudio.Text.Editor; 13 | using Microsoft.VisualStudio.Editor; 14 | using Microsoft.VisualStudio.TextManager.Interop; 15 | using Microsoft.VisualStudio.Shell.Interop; 16 | 17 | namespace vdextensions 18 | { 19 | public class IID 20 | { 21 | public const string IVisualDHelper = "002a2de9-8bb6-484d-9910-7e4ad4084715"; 22 | public const string VisualDHelper = "002a2de9-8bb6-484d-AA10-7e4ad4084715"; 23 | } 24 | 25 | [ComVisible(true), Guid(IID.IVisualDHelper)] 26 | [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] 27 | public interface IVisualDHelper 28 | { 29 | void GetTextOptions(IVsTextView view, out int flags, out int tabsize, out int indentsize); 30 | } 31 | 32 | [ComVisible(true), Guid(IID.VisualDHelper)] 33 | [ClassInterface(ClassInterfaceType.None)] 34 | public partial class VisualDHelper : IVisualDHelper 35 | { 36 | static IVsEditorAdaptersFactoryService editorFactory; 37 | 38 | public static bool setFactory(IVsEditorAdaptersFactoryService factory) 39 | { 40 | editorFactory = factory; 41 | return true; 42 | } 43 | 44 | public VisualDHelper() 45 | { 46 | } 47 | 48 | public void Dispose() 49 | { 50 | } 51 | 52 | public void GetTextOptions(IVsTextView view, out int flags, out int tabsize, out int indentsize) 53 | { 54 | if (editorFactory == null) 55 | throw new COMException(); 56 | 57 | IWpfTextView wv = editorFactory.GetWpfTextView(view); 58 | if (wv == null || wv.Options == null) 59 | throw new COMException(); 60 | 61 | bool spaces = wv.Options.GetOptionValue(DefaultOptions.ConvertTabsToSpacesOptionId); 62 | flags = spaces ? 1 : 0; 63 | tabsize = wv.Options.GetOptionValue(DefaultOptions.TabSizeOptionId); 64 | indentsize = wv.Options.GetOptionValue(DefaultOptions.IndentSizeOptionId); 65 | } 66 | 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /vdwizard/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("VisualDWizard")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("VisualDWizard")] 13 | [assembly: AssemblyCopyright("")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // Version information for an assembly consists of the following four values: 23 | // 24 | // Major Version 25 | // Minor Version 26 | // Build Number 27 | // Revision 28 | // 29 | // You can specify all the values or you can default the Build and Revision Numbers 30 | // by using the '*' as shown below: 31 | // [assembly: AssemblyVersion("1.0.*")] 32 | [assembly: AssemblyVersion("1.0.*")] 33 | [assembly: AssemblyFileVersion("1.0.0.0")] 34 | -------------------------------------------------------------------------------- /vdwizard/Resources/vd_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/vdwizard/Resources/vd_logo.png -------------------------------------------------------------------------------- /vdwizard/WizardDialog.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Data; 5 | using System.Drawing; 6 | using System.Linq; 7 | using System.Text; 8 | using System.Threading.Tasks; 9 | using System.Windows.Forms; 10 | 11 | namespace VisualDWizard 12 | { 13 | public partial class WizardDialog : Form 14 | { 15 | public WizardDialog() 16 | { 17 | InitializeComponent(); 18 | platformX86.CheckState = CheckState.Checked; 19 | platformX64.CheckState = CheckState.Checked; 20 | compilerDMD.CheckState = CheckState.Checked; 21 | prjTypeConsole.Select(); 22 | Warning1.Visible = false; 23 | Warning2.Visible = false; 24 | 25 | ToolTip toolTip = new ToolTip(); 26 | toolTip.SetToolTip(platformx86OMF, "Digital Mars OMF object files, only available with DMD"); 27 | toolTip.SetToolTip(compilerGDC, "only available with DMD"); 28 | 29 | CenterToScreen(); 30 | } 31 | 32 | private void platform_CheckedChanged(object sender, EventArgs e) 33 | { 34 | if (!platformX64.Checked && !platformX86.Checked) 35 | platformX64.Checked = true; 36 | platformx86OMF.Enabled = platformX86.Checked && compilerGDC.Enabled; 37 | Warning1.Visible = !platformX86.Checked && !compilerGDC.Enabled; 38 | Warning2.Visible = !platformX86.Checked && !compilerGDC.Enabled; 39 | } 40 | 41 | private void compiler_CheckedChanged(object sender, EventArgs e) 42 | { 43 | if (!compilerDMD.Checked && !compilerLDC.Checked && !compilerGDC.Checked) 44 | compilerDMD.Checked = true; 45 | } 46 | 47 | private void prjTypeConsole_CheckedChanged(object sender, EventArgs e) 48 | { 49 | mainInCpp.Enabled = prjTypeConsole.Checked; 50 | } 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /vdwizard/dwinproj.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/vdwizard/dwinproj.ico -------------------------------------------------------------------------------- /vdwizard/key.snk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/vdwizard/key.snk -------------------------------------------------------------------------------- /visuald/Resources/AlternateRowColor.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/visuald/Resources/AlternateRowColor.ico -------------------------------------------------------------------------------- /visuald/Resources/CaseSensitive.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/visuald/Resources/CaseSensitive.ico -------------------------------------------------------------------------------- /visuald/Resources/Caseinsensitive.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/visuald/Resources/Caseinsensitive.ico -------------------------------------------------------------------------------- /visuald/Resources/Caseinsensitive.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/visuald/Resources/Caseinsensitive.xcf -------------------------------------------------------------------------------- /visuald/Resources/CombineColumns.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/visuald/Resources/CombineColumns.ico -------------------------------------------------------------------------------- /visuald/Resources/DAboutBox.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/visuald/Resources/DAboutBox.ico -------------------------------------------------------------------------------- /visuald/Resources/DAboutLogo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/visuald/Resources/DAboutLogo.ico -------------------------------------------------------------------------------- /visuald/Resources/DImageList.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/visuald/Resources/DImageList.bmp -------------------------------------------------------------------------------- /visuald/Resources/DSplashScreenIcon.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/visuald/Resources/DSplashScreenIcon.bmp -------------------------------------------------------------------------------- /visuald/Resources/GroupByType.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/visuald/Resources/GroupByType.ico -------------------------------------------------------------------------------- /visuald/Resources/RegExp.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/visuald/Resources/RegExp.ico -------------------------------------------------------------------------------- /visuald/Resources/SearchFile.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/visuald/Resources/SearchFile.ico -------------------------------------------------------------------------------- /visuald/Resources/SearchSymbol.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/visuald/Resources/SearchSymbol.ico -------------------------------------------------------------------------------- /visuald/Resources/WholeWord.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/visuald/Resources/WholeWord.ico -------------------------------------------------------------------------------- /visuald/Resources/ascend.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/visuald/Resources/ascend.ico -------------------------------------------------------------------------------- /visuald/Resources/closeOnReturn.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/visuald/Resources/closeOnReturn.ico -------------------------------------------------------------------------------- /visuald/Resources/closeOnReturn.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/visuald/Resources/closeOnReturn.xcf -------------------------------------------------------------------------------- /visuald/Resources/completionset.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/visuald/Resources/completionset.bmp -------------------------------------------------------------------------------- /visuald/Resources/dconsole.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/visuald/Resources/dconsole.ico -------------------------------------------------------------------------------- /visuald/Resources/descend.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/visuald/Resources/descend.ico -------------------------------------------------------------------------------- /visuald/Resources/dfile.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/visuald/Resources/dfile.ico -------------------------------------------------------------------------------- /visuald/Resources/difile.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/visuald/Resources/difile.ico -------------------------------------------------------------------------------- /visuald/Resources/dub.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/visuald/Resources/dub.ico -------------------------------------------------------------------------------- /visuald/Resources/dwinproj.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/visuald/Resources/dwinproj.ico -------------------------------------------------------------------------------- /visuald/Resources/faninout.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/visuald/Resources/faninout.ico -------------------------------------------------------------------------------- /visuald/Resources/fulldeco.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/visuald/Resources/fulldeco.ico -------------------------------------------------------------------------------- /visuald/Resources/refresh.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/visuald/Resources/refresh.ico -------------------------------------------------------------------------------- /visuald/Resources/removetrace.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/visuald/Resources/removetrace.ico -------------------------------------------------------------------------------- /visuald/Resources/resources.h: -------------------------------------------------------------------------------- 1 | 2 | #define IDS_PACKAGE_LOAD_KEY 1 3 | #define IDS_PRODUCTDETAILS 100 4 | #define IDS_PRODUCT 101 5 | #define IDS_VDSETTINGS 102 6 | #define IDS_VDPROJECTDESC 103 7 | #define IDS_VCPROJECTDESC 104 8 | 9 | #define ICON_ABOUTBOX 1000 10 | #define BMP_SPLASHSCRN 1001 11 | #define BMP_DIMAGELIST 1002 12 | #define BMP_COMPLETION 1003 13 | #define ICON_DUB 1004 14 | #define ICON_DCONSOLE 1005 15 | #define ICON_DWINPROJ 1006 16 | 17 | #define IDI_ASCENDING 2000 18 | #define IDI_DESCENDING 2001 19 | 20 | #define IDR_FIRST 2002 21 | #define IDR_COMBINECOLUMNS 2002 22 | #define IDR_ALTERNATEROWCOLOR 2003 23 | #define IDR_GROUPBYKIND 2004 24 | #define IDR_CLOSEONRETURN 2005 25 | #define IDR_WHOLEWORD 2006 26 | #define IDR_CASESENSITIVE 2007 27 | #define IDR_REGEXP 2008 28 | #define IDR_SEARCHFILE 2009 29 | #define IDR_SEARCHSYMBOL 2010 30 | #define IDR_FANINOUT 2011 31 | #define IDR_REMOVETRACE 2012 32 | #define IDR_SETTRACE 2013 33 | #define IDR_REFRESH 2014 34 | #define IDR_FULLDECO 2015 35 | #define IDR_LAST 2015 36 | 37 | /////////////////////////////////////////////////////////////////////////////// 38 | // CTC Command IDs 39 | 40 | #define CmdSearchSymbol 0x101 41 | #define CmdSearchFile 0x102 42 | #define CmdShowScope 0x103 43 | #define CmdShowMethodTip 0x104 44 | #define CmdToggleComment 0x105 45 | #define CmdReplaceTokens 0x106 46 | #define CmdSearchTokNext 0x107 47 | #define CmdSearchTokPrev 0x108 48 | #define CmdConvWizard 0x109 49 | #define CmdConvSelection 0x10a 50 | 51 | #define CmdBuildPhobos 0x110 52 | #define CmdShowProfile 0x111 53 | #define CmdShowWebsite 0x112 54 | 55 | #define CmdDeleteFile 0x113 56 | #define CmdCompileAndRun 0x114 57 | #define CmdShowLangPage 0x115 58 | #define CmdDelLstFiles 0x116 59 | #define CmdCompileAndDbg 0x117 60 | #define CmdCompileAndAsm 0x118 61 | #define CmdDustMite 0x119 62 | 63 | #define CmdCollapseUnittest 0x120 64 | #define CmdCollapseDisabled 0x121 65 | 66 | #define CmdNewPackage 0x122 67 | #define CmdNewFilter 0x123 68 | 69 | #define CmdDubUpgrade 0x124 70 | #define CmdDubRefresh 0x125 71 | -------------------------------------------------------------------------------- /visuald/Resources/settrace.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/visuald/Resources/settrace.ico -------------------------------------------------------------------------------- /visuald/Templates/CodeSnippets/Snippets/blockcomment.snippet: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 |
    5 | /+ .. +/ 6 | /++/ 7 | Code snippet for nesting block comment 8 | Rainer Schuetze 9 | 10 | Expansion 11 | SurroundsWith 12 | 13 |
    14 | 15 | 16 | 17 | 20 | 21 | 22 |
    23 |
    -------------------------------------------------------------------------------- /visuald/Templates/CodeSnippets/Snippets/class.snippet: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 |
    5 | class 6 | class 7 | Code snippet for class 8 | Rainer Schuetze 9 | 10 | Expansion 11 | SurroundsWith 12 | 13 |
    14 | 15 | 16 | 17 | name 18 | Class name 19 | ClassName 20 | 21 | 22 | 23 | 28 | 29 | 30 |
    31 |
    -------------------------------------------------------------------------------- /visuald/Templates/CodeSnippets/Snippets/ctor.snippet: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 |
    5 | ctor 6 | ctor 7 | Code snippet for constructor 8 | Rainer Schuetze 9 | 10 | Expansion 11 | 12 |
    13 | 14 | 15 | 21 | 22 | 23 |
    24 |
    -------------------------------------------------------------------------------- /visuald/Templates/CodeSnippets/Snippets/else.snippet: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 |
    5 | else 6 | else 7 | Code snippet for else statement 8 | Rainer Schuetze 9 | 10 | Expansion 11 | SurroundsWith 12 | 13 |
    14 | 15 | 16 | 21 | 22 | 23 |
    24 |
    -------------------------------------------------------------------------------- /visuald/Templates/CodeSnippets/Snippets/for.snippet: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 |
    5 | for 6 | for 7 | Code snippet for 'for' loop 8 | Rainer Schuetze 9 | 10 | Expansion 11 | SurroundsWith 12 | 13 |
    14 | 15 | 16 | 17 | index 18 | i 19 | Index 20 | 21 | 22 | max 23 | length 24 | Max length 25 | 26 | 27 | 28 | 29 | 34 | 35 | 36 |
    37 |
    -------------------------------------------------------------------------------- /visuald/Templates/CodeSnippets/Snippets/if.snippet: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 |
    5 | if 6 | if 7 | Code snippet for if statement 8 | Rainer Schuetze 9 | 10 | Expansion 11 | SurroundsWith 12 | 13 |
    14 | 15 | 16 | 17 | expression 18 | Expression to evaluate 19 | true 20 | 21 | 22 | 27 | 28 | 29 |
    30 |
    -------------------------------------------------------------------------------- /visuald/Templates/CodeSnippets/Snippets/version.snippet: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 |
    5 | version 6 | version 7 | Code snippet for version statement 8 | Rainer Schuetze 9 | 10 | Expansion 11 | SurroundsWith 12 | 13 |
    14 | 15 | 16 | 17 | identifier 18 | Identifier or level 19 | none 20 | 21 | 22 | 27 | 28 | 29 |
    30 |
    -------------------------------------------------------------------------------- /visuald/Templates/CodeSnippets/Snippets/while.snippet: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 |
    5 | while 6 | while 7 | Code snippet for while loop 8 | Rainer Schuetze 9 | 10 | Expansion 11 | SurroundsWith 12 | 13 |
    14 | 15 | 16 | 17 | expression 18 | Expression to evaluate 19 | true 20 | 21 | 22 | 23 | 28 | 29 | 30 |
    31 |
    -------------------------------------------------------------------------------- /visuald/Templates/CodeSnippets/SnippetsIndex.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | On 6 | true 7 | 1033 8 | .\Snippets\ 9 | D 10 | 11 | 12 | -------------------------------------------------------------------------------- /visuald/Templates/Items/empty.d: -------------------------------------------------------------------------------- 1 | module $modulename$; 2 | -------------------------------------------------------------------------------- /visuald/Templates/Items/hello.d: -------------------------------------------------------------------------------- 1 | import std.stdio; 2 | 3 | int main(char[][]argv) 4 | { 5 | writefln("Hello D-World!\n"); 6 | return 0; 7 | } 8 | -------------------------------------------------------------------------------- /visuald/Templates/Items/items.vsdir: -------------------------------------------------------------------------------- 1 | hello.d|{002A2DE9-8BB6-484D-987F-7E4AD4084715}|Hello world Module|1|Create "Hello world" module|0|#1000|0|dsource 2 | empty.d|{002A2DE9-8BB6-484D-987F-7E4AD4084715}|Empty Module|1|Create empty module|0|#1000|0|dsource 3 | ..\Wizards\package.vsz|{002A2DE9-8BB6-484D-987F-7E4AD4084715}|Package|1|Create package folder in project and file system|0|#1000|8|dpackage 4 | -------------------------------------------------------------------------------- /visuald/Templates/ProjectItems/DUB/minimal/app.d: -------------------------------------------------------------------------------- 1 | import std.stdio; 2 | 3 | void main() 4 | { 5 | writeln("Edit source/app.d to start your project."); 6 | } 7 | -------------------------------------------------------------------------------- /visuald/Templates/ProjectItems/DUB/minimal/dub.sdl: -------------------------------------------------------------------------------- 1 | name "$safeprojectname$" 2 | description "A minimal D application." 3 | authors "$username$" 4 | copyright "Copyright © $year$, $username$" 5 | license "proprietary" 6 | -------------------------------------------------------------------------------- /visuald/Templates/ProjectItems/DUB/minimal/minimal.vstemplate: -------------------------------------------------------------------------------- 1 | 2 | 3 | minimal 4 | A minimal D application 5 | __TemplateIcon.ico 6 | DUB 7 | 50 8 | 1 9 | true 10 | ConsoleApplication 11 | true 12 | 13 | 14 | 15 | app.d 16 | dub.sdl 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /visuald/Templates/ProjectItems/DUB/vibe/app.d: -------------------------------------------------------------------------------- 1 | import vibe.vibe; 2 | 3 | void main() 4 | { 5 | auto settings = new HTTPServerSettings; 6 | settings.port = 8080; 7 | settings.bindAddresses = ["::1", "127.0.0.1"]; 8 | listenHTTP(settings, &hello); 9 | 10 | logInfo("Please open http://127.0.0.1:8080/ in your browser."); 11 | runApplication(); 12 | } 13 | 14 | void hello(HTTPServerRequest req, HTTPServerResponse res) 15 | { 16 | res.writeBody("Hello, World!"); 17 | } 18 | -------------------------------------------------------------------------------- /visuald/Templates/ProjectItems/DUB/vibe/dub.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "$safeprojectname$", 3 | "authors": [ 4 | "$username$" 5 | ], 6 | "dependencies": { 7 | "vibe-d": "~>0.7.30" 8 | }, 9 | "description": "A simple vibe.d server application.", 10 | "copyright": "Copyright © $year$, $username$", 11 | "license": "proprietary" 12 | } -------------------------------------------------------------------------------- /visuald/Templates/ProjectItems/DUB/vibe/dub_vibe_d.vstemplate: -------------------------------------------------------------------------------- 1 | 2 | 3 | Vibe.d server 4 | A simple vibe.d server application 5 | __TemplateIcon.ico 6 | D 7 | 50 8 | 1 9 | true 10 | ConsoleApplication 11 | true 12 | 13 | 14 | 15 | app.d 16 | dub.json 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /visuald/Templates/ProjectItems/VCProject/VCProject.vstemplate: -------------------------------------------------------------------------------- 1 | 2 | 3 | D/VC++ based Windows Application 4 | A Visual C++ project for creating a Win32 application, console application, DLL or static library. This is based on Visual C++'s vcxproj project type for seamless integration with C++ and msbuild. 5 | dwinproj.ico 6 | D 7 | 50 8 | 1 9 | true 10 | true 11 | WindowsApplication 12 | true 13 | D 14 | Windows 15 | Visual D 16 | 17 | 18 | 19 | main.d 20 | 21 | 22 | 23 | 24 | VisualDWizard, Version=1.0, Culture=neutral, PublicKeyToken=c74ad3042b283f5c 25 | VisualDWizard.VCProjectWizard 26 | 27 | 28 | -------------------------------------------------------------------------------- /visuald/Templates/ProjectItems/VCProject/WindowsApp.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | $guid2$ 6 | cpp;c;cc;cxx;d;di;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | $guid3$ 10 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 11 | 12 | 13 | 14 | 15 | Source Files 16 | 17 | 18 | -------------------------------------------------------------------------------- /visuald/Templates/ProjectItems/VCProject/dwinproj.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/visuald/Templates/ProjectItems/VCProject/dwinproj.ico -------------------------------------------------------------------------------- /visuald/Templates/ProjectItems/VCProject/main.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | 3 | // D runtime initialization/termination 4 | extern "C" void rt_init(); 5 | extern "C" void rt_term(); 6 | 7 | int helloFromD(); 8 | 9 | int main(int argc, char** argv) 10 | { 11 | rt_init(); 12 | int rc = helloFromD(); 13 | rt_term(); 14 | return rc; 15 | } 16 | -------------------------------------------------------------------------------- /visuald/Templates/ProjectItems/VCProject/main.d: -------------------------------------------------------------------------------- 1 | module $safeprojectname$; 2 | $if$ ($apptype$ == WindowsApp) 3 | import core.sys.windows.windows; 4 | 5 | alias extern(C) int function(string[] args) MainFunc; 6 | extern (C) int _d_run_main(int argc, char **argv, MainFunc mainFunc); 7 | 8 | extern (Windows) 9 | int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) 10 | { 11 | return _d_run_main(0, null, &main); // arguments unused, retrieved via CommandLineToArgvW 12 | } 13 | 14 | extern(C) int main(string[] args) 15 | { 16 | MessageBoxW(null, "Hello D World!"w.ptr, "D Windows Application"w.ptr, MB_OK); 17 | return 0; 18 | } 19 | $endif$$if$ ($apptype$ == ConsoleApp) 20 | import std.stdio; 21 | 22 | int main() 23 | { 24 | writeln("Hello D World!\n"); 25 | return 0; 26 | } 27 | $endif$$if$ ($apptype$ == ConsoleAppMainInCpp) 28 | import std.stdio; 29 | 30 | extern(C++) int helloFromD() 31 | { 32 | writeln("Hello D World!\n"); 33 | return 0; 34 | } 35 | $endif$$if$ ($apptype$ == DynamicLibrary) 36 | import core.sys.windows.windows; 37 | import core.sys.windows.dll; 38 | 39 | export int foo() 40 | { 41 | return 42; 42 | } 43 | 44 | mixin SimpleDllMain; 45 | $endif$$if$ ($apptype$ == StaticLibrary) 46 | int foo() 47 | { 48 | return 42; 49 | } 50 | $endif$ -------------------------------------------------------------------------------- /visuald/Templates/ProjectItems/VCProject/stdafx.cpp: -------------------------------------------------------------------------------- 1 | // stdafx.cpp : source file that includes just the standard includes 2 | // [!output PROJECT_NAME].pch will be the pre-compiled header 3 | // stdafx.obj will contain the pre-compiled type information 4 | 5 | #include "stdafx.h" 6 | 7 | // TODO: reference any additional headers you need in STDAFX.H 8 | // and not in this file 9 | -------------------------------------------------------------------------------- /visuald/Templates/ProjectItems/VCProject/stdafx.h: -------------------------------------------------------------------------------- 1 | // stdafx.h : include file for standard system include files, 2 | // or project specific include files that are used frequently, but 3 | // are changed infrequently 4 | // 5 | 6 | #pragma once 7 | 8 | // C RunTime Header Files 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | 15 | // TODO: reference additional headers your program requires here 16 | -------------------------------------------------------------------------------- /visuald/Templates/ProjectItems/VDProject/VDProject.vstemplate: -------------------------------------------------------------------------------- 1 | 2 | 3 | Visual D based Windows Application 4 | A Visual D project for creating a Win32 application, console application, DLL or static library. This is based on a project type designed for the D programming language. 5 | 6 | vdproj.ico 7 | D 8 | 50 9 | 1 10 | true 11 | WindowsApp 12 | true 13 | D 14 | Windows 15 | Visual D 16 | 17 | 18 | 19 | main.d 20 | 21 | 22 | 23 | VisualDWizard, Version=1.0, Culture=neutral, PublicKeyToken=c74ad3042b283f5c 24 | VisualDWizard.VDProjectWizard 25 | 26 | 27 | -------------------------------------------------------------------------------- /visuald/Templates/ProjectItems/VDProject/main.d: -------------------------------------------------------------------------------- 1 | module $safeprojectname$; 2 | $if$ ($apptype$ == WindowsApp) 3 | import core.sys.windows.windows; 4 | 5 | alias extern(C) int function(string[] args) MainFunc; 6 | extern (C) int _d_run_main(int argc, char **argv, MainFunc mainFunc); 7 | 8 | extern (Windows) 9 | int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) 10 | { 11 | return _d_run_main(0, null, &win_main); // arguments unused, retrieved via CommandLineToArgvW 12 | } 13 | 14 | extern(C) int win_main(string[] args) 15 | { 16 | MessageBoxW(null, "Hello D World!"w.ptr, "D Windows Application"w.ptr, MB_OK); 17 | return 0; 18 | } 19 | $endif$$if$ ($apptype$ == ConsoleApp) 20 | import std.stdio; 21 | 22 | int main() 23 | { 24 | writeln("Hello D World!\n"); 25 | return 0; 26 | } 27 | $endif$$if$ ($apptype$ == DynamicLibrary) 28 | import core.sys.windows.windows; 29 | import core.sys.windows.dll; 30 | 31 | export int foo() 32 | { 33 | return 42; 34 | } 35 | 36 | mixin SimpleDllMain; 37 | $endif$$if$ ($apptype$ == StaticLibrary) 38 | int foo() 39 | { 40 | return 42; 41 | } 42 | $endif$ 43 | -------------------------------------------------------------------------------- /visuald/Templates/ProjectItems/VDProject/vdproj.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rainers/visuald/1408d61f53b9e101f7233112e706f0628057ca0d/visuald/Templates/ProjectItems/VDProject/vdproj.ico -------------------------------------------------------------------------------- /visuald/Templates/ProjectItems_vs9/ConsoleApp/ConsoleApp.visualdproj: -------------------------------------------------------------------------------- 1 | 2 | $guid1$ 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /visuald/Templates/ProjectItems_vs9/ConsoleApp/ConsoleApp.vstemplate: -------------------------------------------------------------------------------- 1 | 2 | 3 | Console Application 4 | A project for creating a command-line application 5 | __TemplateIcon.ico 6 | D 7 | 50 8 | 1 9 | true 10 | ConsoleApplication 11 | true 12 | 13 | 14 | 15 | main.d 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /visuald/Templates/ProjectItems_vs9/ConsoleApp/main.d: -------------------------------------------------------------------------------- 1 | import std.stdio; 2 | 3 | int main(string[] argv) 4 | { 5 | writeln("Hello D-World!"); 6 | return 0; 7 | } 8 | -------------------------------------------------------------------------------- /visuald/Templates/ProjectItems_vs9/ConsoleDLG/ConsoleApp.visualdproj: -------------------------------------------------------------------------------- 1 | 2 | $guid1$ 3 | 4 | 0 5 | 0 6 | 1 7 | 1 8 | 0 9 | 10 | 11 | 0 12 | 0 13 | 0 14 | 1 15 | 1 16 | 1 17 | 18 | 19 | 1 20 | 0 21 | 1 22 | 1 23 | 0 24 | 25 | 26 | 1 27 | 0 28 | 0 29 | 1 30 | 1 31 | 1 32 | 33 | 34 | 0 35 | 2 36 | 1 37 | 1 38 | 0 39 | 40 | 41 | 0 42 | 2 43 | 0 44 | 1 45 | 1 46 | 1 47 | 48 | 49 | 1 50 | 2 51 | 1 52 | 1 53 | 0 54 | 55 | 56 | 1 57 | 2 58 | 0 59 | 1 60 | 1 61 | 1 62 | 63 | 64 | 0 65 | 1 66 | 1 67 | 1 68 | 0 69 | 70 | 71 | 0 72 | 1 73 | 0 74 | 1 75 | 1 76 | 1 77 | 78 | 79 | 1 80 | 1 81 | 1 82 | 1 83 | 0 84 | 85 | 86 | 1 87 | 1 88 | 0 89 | 1 90 | 1 91 | 1 92 | 93 | 94 | 95 | 96 | 97 | -------------------------------------------------------------------------------- /visuald/Templates/ProjectItems_vs9/ConsoleDLG/ConsoleApp.vstemplate: -------------------------------------------------------------------------------- 1 | 2 | 3 | Console Application DMD/LDC/GDC x86/x64 4 | A project for creating a command-line application with DMD/LDC/GDC for x86/x64 5 | __TemplateIcon.ico 6 | D 7 | 50 8 | 1 9 | true 10 | ConsoleApplication 11 | true 12 | 13 | 14 | 15 | main.d 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /visuald/Templates/ProjectItems_vs9/ConsoleDLG/main.d: -------------------------------------------------------------------------------- 1 | import std.stdio; 2 | 3 | int main(string[] argv) 4 | { 5 | writeln("Hello D-World!"); 6 | return 0; 7 | } 8 | -------------------------------------------------------------------------------- /visuald/Templates/ProjectItems_vs9/ConsoleDMDGDC/ConsoleApp.visualdproj: -------------------------------------------------------------------------------- 1 | 2 | $guid1$ 3 | 4 | 0 5 | 0 6 | 1 7 | 1 8 | 0 9 | 10 | 11 | 0 12 | 0 13 | 0 14 | 1 15 | 1 16 | 1 17 | 18 | 19 | 1 20 | 0 21 | 1 22 | 1 23 | 0 24 | 25 | 26 | 1 27 | 0 28 | 0 29 | 1 30 | 1 31 | 1 32 | 33 | 34 | 0 35 | 1 36 | 1 37 | 1 38 | 0 39 | 40 | 41 | 0 42 | 1 43 | 0 44 | 1 45 | 1 46 | 1 47 | 48 | 49 | 1 50 | 1 51 | 1 52 | 1 53 | 0 54 | 55 | 56 | 1 57 | 1 58 | 0 59 | 1 60 | 1 61 | 1 62 | 63 | 64 | 65 | 66 | 67 | -------------------------------------------------------------------------------- /visuald/Templates/ProjectItems_vs9/ConsoleDMDGDC/ConsoleApp.vstemplate: -------------------------------------------------------------------------------- 1 | 2 | 3 | Console Application DMD/GDC x86/x64 4 | A project for creating a command-line application with DMD/GDC for x86/x64 5 | __TemplateIcon.ico 6 | D 7 | 50 8 | 1 9 | true 10 | ConsoleApplication 11 | true 12 | 13 | 14 | 15 | main.d 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /visuald/Templates/ProjectItems_vs9/ConsoleDMDGDC/main.d: -------------------------------------------------------------------------------- 1 | import std.stdio; 2 | 3 | int main(string[] argv) 4 | { 5 | writeln("Hello D-World!"); 6 | return 0; 7 | } 8 | -------------------------------------------------------------------------------- /visuald/Templates/ProjectItems_vs9/ConsoleDMDLDC/ConsoleApp.visualdproj: -------------------------------------------------------------------------------- 1 | 2 | $guid1$ 3 | 4 | 0 5 | 0 6 | 1 7 | 1 8 | 0 9 | 10 | 11 | 0 12 | 0 13 | 0 14 | 1 15 | 1 16 | 1 17 | 18 | 19 | 1 20 | 0 21 | 1 22 | 1 23 | 0 24 | 25 | 26 | 1 27 | 0 28 | 0 29 | 1 30 | 1 31 | 1 32 | 33 | 34 | 0 35 | 2 36 | 1 37 | 1 38 | 0 39 | 40 | 41 | 0 42 | 2 43 | 0 44 | 1 45 | 1 46 | 1 47 | 48 | 49 | 1 50 | 2 51 | 1 52 | 1 53 | 0 54 | 55 | 56 | 1 57 | 2 58 | 0 59 | 1 60 | 1 61 | 1 62 | 63 | 64 | 65 | 66 | 67 | -------------------------------------------------------------------------------- /visuald/Templates/ProjectItems_vs9/ConsoleDMDLDC/ConsoleApp.vstemplate: -------------------------------------------------------------------------------- 1 | 2 | 3 | Console Application DMD/LDC x86/x64 4 | A project for creating a command-line application with DMD/LDC for x86/x64 5 | __TemplateIcon.ico 6 | D 7 | 50 8 | 1 9 | true 10 | ConsoleApplication 11 | true 12 | 13 | 14 | 15 | main.d 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /visuald/Templates/ProjectItems_vs9/ConsoleDMDLDC/main.d: -------------------------------------------------------------------------------- 1 | import std.stdio; 2 | 3 | int main(string[] argv) 4 | { 5 | writeln("Hello D-World!"); 6 | return 0; 7 | } 8 | -------------------------------------------------------------------------------- /visuald/Templates/ProjectItems_vs9/DUB/minimal/app.d: -------------------------------------------------------------------------------- 1 | import std.stdio; 2 | 3 | void main() 4 | { 5 | writeln("Edit source/app.d to start your project."); 6 | } 7 | -------------------------------------------------------------------------------- /visuald/Templates/ProjectItems_vs9/DUB/minimal/dub.sdl: -------------------------------------------------------------------------------- 1 | name "$safeprojectname$" 2 | description "A minimal D application." 3 | authors "$username$" 4 | copyright "Copyright © $year$, $username$" 5 | license "proprietary" 6 | -------------------------------------------------------------------------------- /visuald/Templates/ProjectItems_vs9/DUB/minimal/minimal.vstemplate: -------------------------------------------------------------------------------- 1 | 2 | 3 | minimal 4 | A minimal D application 5 | __TemplateIcon.ico 6 | DUB 7 | 50 8 | 1 9 | true 10 | ConsoleApplication 11 | true 12 | 13 | 14 | 15 | app.d 16 | dub.sdl 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /visuald/Templates/ProjectItems_vs9/DUB/vibe/app.d: -------------------------------------------------------------------------------- 1 | import vibe.vibe; 2 | 3 | void main() 4 | { 5 | auto settings = new HTTPServerSettings; 6 | settings.port = 8080; 7 | settings.bindAddresses = ["::1", "127.0.0.1"]; 8 | listenHTTP(settings, &hello); 9 | 10 | logInfo("Please open http://127.0.0.1:8080/ in your browser."); 11 | runApplication(); 12 | } 13 | 14 | void hello(HTTPServerRequest req, HTTPServerResponse res) 15 | { 16 | res.writeBody("Hello, World!"); 17 | } 18 | -------------------------------------------------------------------------------- /visuald/Templates/ProjectItems_vs9/DUB/vibe/dub.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "$safeprojectname$", 3 | "authors": [ 4 | "$username$" 5 | ], 6 | "dependencies": { 7 | "vibe-d": "~>0.7.30" 8 | }, 9 | "description": "A simple vibe.d server application.", 10 | "copyright": "Copyright © $year$, $username$", 11 | "license": "proprietary" 12 | } -------------------------------------------------------------------------------- /visuald/Templates/ProjectItems_vs9/DUB/vibe/dub_vibe_d.vstemplate: -------------------------------------------------------------------------------- 1 | 2 | 3 | Vibe.d server 4 | A simple vibe.d server application 5 | __TemplateIcon.ico 6 | D 7 | 50 8 | 1 9 | true 10 | ConsoleApplication 11 | true 12 | 13 | 14 | 15 | app.d 16 | dub.json 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /visuald/Templates/ProjectItems_vs9/DynamicLib/DynamicLib.visualdproj: -------------------------------------------------------------------------------- 1 | 2 | $guid1$ 3 | 4 | 5 | $(OutDir)\$(ProjectName).dll 6 | 2 7 | 8 | 9 | $(OutDir)\$(ProjectName).dll 10 | 2 11 | 12 | 13 | 14 | $(OutDir)\$(ProjectName).dll 15 | 2 16 | 17 | 18 | $(OutDir)\$(ProjectName).dll 19 | 2 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /visuald/Templates/ProjectItems_vs9/DynamicLib/DynamicLib.vstemplate: -------------------------------------------------------------------------------- 1 | 2 | 3 | Dynamic library 4 | A project for creating a dynamic library 5 | __TemplateIcon.ico 6 | D 7 | 50 8 | 1 9 | true 10 | DynamicLibrary 11 | true 12 | 13 | 14 | 15 | dllmain.d 16 | dll.def 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /visuald/Templates/ProjectItems_vs9/DynamicLib/dll.def: -------------------------------------------------------------------------------- 1 | ; linker definition file 2 | 3 | ; most options not supported for x64 (EXETYPE needed by optlink) 4 | EXETYPE NT 5 | ; LIBRARY "$safeprojectname$.dll" 6 | ; CODE PRELOAD DISCARDABLE 7 | ; DATA PRELOAD MULTIPLE 8 | 9 | ; exporting can by done explicitly here, or with the "export" specifier 10 | ; EXPORTS 11 | ; Symbol Symbol 12 | -------------------------------------------------------------------------------- /visuald/Templates/ProjectItems_vs9/DynamicLib/dllmain.d: -------------------------------------------------------------------------------- 1 | module $safeitemname$; 2 | 3 | import core.sys.windows.windows; 4 | import core.sys.windows.dll; 5 | 6 | __gshared HINSTANCE g_hInst; 7 | 8 | extern (Windows) 9 | BOOL DllMain(HINSTANCE hInstance, ULONG ulReason, LPVOID pvReserved) 10 | { 11 | switch (ulReason) 12 | { 13 | case DLL_PROCESS_ATTACH: 14 | g_hInst = hInstance; 15 | dll_process_attach(hInstance, true); 16 | break; 17 | 18 | case DLL_PROCESS_DETACH: 19 | dll_process_detach(hInstance, true); 20 | break; 21 | 22 | case DLL_THREAD_ATTACH: 23 | dll_thread_attach(true, true); 24 | break; 25 | 26 | case DLL_THREAD_DETACH: 27 | dll_thread_detach(true, true); 28 | break; 29 | 30 | default: 31 | break; 32 | } 33 | return true; 34 | } 35 | 36 | -------------------------------------------------------------------------------- /visuald/Templates/ProjectItems_vs9/StaticLib/StaticLib.visualdproj: -------------------------------------------------------------------------------- 1 | 2 | $guid1$ 3 | 4 | 5 | $(OutDir)\$(ProjectName).lib 6 | 1 7 | 8 | 9 | $(OutDir)\$(ProjectName).lib 10 | 1 11 | 12 | 13 | 14 | $(OutDir)\$(ProjectName).lib 15 | 1 16 | 17 | 18 | $(OutDir)\$(ProjectName).lib 19 | 1 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /visuald/Templates/ProjectItems_vs9/StaticLib/StaticLib.vstemplate: -------------------------------------------------------------------------------- 1 | 2 | 3 | Static library 4 | A project for creating a static library 5 | __TemplateIcon.ico 6 | D 7 | 50 8 | 1 9 | true 10 | StaticLibrary 11 | true 12 | 13 | 14 | 15 | lib.d 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /visuald/Templates/ProjectItems_vs9/StaticLib/lib.d: -------------------------------------------------------------------------------- 1 | module $safeitemname$; 2 | 3 | -------------------------------------------------------------------------------- /visuald/Templates/ProjectItems_vs9/WindowsApp/WindowsApp.visualdproj: -------------------------------------------------------------------------------- 1 | 2 | $guid1$ 3 | 4 | 2 5 | ole32.lib kernel32.lib user32.lib comctl32.lib comdlg32.lib 6 | 7 | 8 | 2 9 | ole32.lib kernel32.lib user32.lib comctl32.lib comdlg32.lib 10 | 11 | 12 | 2 13 | ole32.lib kernel32.lib user32.lib comctl32.lib comdlg32.lib 14 | 15 | 16 | 2 17 | ole32.lib kernel32.lib user32.lib comctl32.lib comdlg32.lib 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /visuald/Templates/ProjectItems_vs9/WindowsApp/WindowsApp.vstemplate: -------------------------------------------------------------------------------- 1 | 2 | 3 | Console Application 4 | A project for creating a Windows application 5 | __TemplateIcon.ico 6 | D 7 | 50 8 | 1 9 | true 10 | ConsoleApplication 11 | true 12 | 13 | 14 | 15 | winmain.d 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /visuald/Templates/ProjectItems_vs9/WindowsApp/winmain.d: -------------------------------------------------------------------------------- 1 | module winmain; 2 | 3 | import core.runtime; 4 | import core.sys.windows.windows; 5 | 6 | extern (Windows) 7 | int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) 8 | { 9 | int result; 10 | 11 | try 12 | { 13 | Runtime.initialize(); 14 | 15 | result = myWinMain(hInstance, hPrevInstance, lpCmdLine, nCmdShow); 16 | 17 | Runtime.terminate(); 18 | } 19 | catch (Throwable o) // catch any uncaught exceptions 20 | { 21 | MessageBoxA(null, cast(char *)o.toString(), "Error", MB_OK | MB_ICONEXCLAMATION); 22 | result = 0; // failed 23 | } 24 | 25 | return result; 26 | } 27 | 28 | int myWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) 29 | { 30 | /* ... insert user code here ... */ 31 | throw new Exception("not implemented"); 32 | return 0; 33 | } 34 | -------------------------------------------------------------------------------- /visuald/Templates/Projects/DTemplates.vsdir: -------------------------------------------------------------------------------- 1 | ..\ProjectItems\VCProject\VCProject.vstemplate|{002A2DE9-8BB6-484D-987F-7E4AD4084715}|D/C++ Win32 Application|30|#104|0|#1006|0|WindowsApp 2 | ..\ProjectItems\VDProject\VDProject.vstemplate|{002A2DE9-8BB6-484D-987F-7E4AD4084715}|Visual D Win32 Application|40|#103|0|#1000|0|WindowsApp 3 | -------------------------------------------------------------------------------- /visuald/Templates/Projects/DUB/DUBTemplates.VSTDIR: -------------------------------------------------------------------------------- 1 | 2 | 3 3 | 4 | -------------------------------------------------------------------------------- /visuald/Templates/Projects/DUB/DUBTemplates.vsdir: -------------------------------------------------------------------------------- 1 | ..\..\ProjectItems\DUB\vibe\dub_vibe_d.vstemplate|{002A2DE9-8BB6-484D-987F-7E4AD4084715}|vibe.d server using DUB|30|A simple vibe.d server application|0|#1004|0|ServerApp 2 | ..\..\ProjectItems\DUB\minimal\minimal.vstemplate|{002A2DE9-8BB6-484D-987F-7E4AD4084715}|Console application using DUB|30|A minimal D application using DUB for building|0|#1004|0|ConsoleApp 3 | -------------------------------------------------------------------------------- /visuald/Templates/Projects/DubTemplates.vsdir: -------------------------------------------------------------------------------- 1 | ..\ProjectItems\DUB\vibe\dub_vibe_d.vstemplate|{002A2DE9-8BB6-484D-987F-7E4AD4084715}|vibe.d server using DUB|50|A simple vibe.d server application|0|#1004|0|ServerApp 2 | ..\ProjectItems\DUB\minimal\minimal.vstemplate|{002A2DE9-8BB6-484D-987F-7E4AD4084715}|Console application using DUB|50|A minimal D application using DUB for building|0|#1004|0|ConsoleApp 3 | -------------------------------------------------------------------------------- /visuald/Templates/Projects_vs9/VDTemplates.VSTDIR: -------------------------------------------------------------------------------- 1 | 2 | 1 3 | 4 | -------------------------------------------------------------------------------- /visuald/Templates/Projects_vs9/VDTemplates.vsdir: -------------------------------------------------------------------------------- 1 | ..\ProjectItems_vs9\ConsoleApp\ConsoleApp.vstemplate|{002A2DE9-8BB6-484D-987F-7E4AD4084715}|Console Application|30|A project for creating a command-line application|0|#1000|0|ConsoleApp 2 | ..\ProjectItems_vs9\ConsoleDMDGDC\ConsoleApp.vstemplate|{002A2DE9-8BB6-484D-987F-7E4AD4084715}|Console Application DMD/GDC|30|A project for creating a command-line application with DMD/GDC for x86/x64|0|#1000|0|ConsoleApp 3 | ..\ProjectItems_vs9\ConsoleDMDLDC\ConsoleApp.vstemplate|{002A2DE9-8BB6-484D-987F-7E4AD4084715}|Console Application DMD/LDC|30|A project for creating a command-line application with DMD/LDC for x86/x64|0|#1000|0|ConsoleApp 4 | ..\ProjectItems_vs9\ConsoleDLG\ConsoleApp.vstemplate|{002A2DE9-8BB6-484D-987F-7E4AD4084715}|Console Application DMD/LDC/GDC|30|A project for creating a command-line application with DMD/LDC/GDC for x86/x64|0|#1000|0|ConsoleApp 5 | ..\ProjectItems_vs9\WindowsApp\WindowsApp.vstemplate|{002A2DE9-8BB6-484D-987F-7E4AD4084715}|Windows Application|30|A project for creating a Windows application|0|#1000|0|WindowsApp 6 | ..\ProjectItems_vs9\DynamicLib\DynamicLib.vstemplate|{002A2DE9-8BB6-484D-987F-7E4AD4084715}|Dynamic Library (DLL)|30|A project for creating a dynamic library|0|#1000|0|DynamicLib 7 | ..\ProjectItems_vs9\StaticLib\StaticLib.vstemplate|{002A2DE9-8BB6-484D-987F-7E4AD4084715}|Static Library|30|A project for creating a static library|0|#1000|0|StaticLib 8 | -------------------------------------------------------------------------------- /visuald/Templates/VCItems/ditems.vsdir: -------------------------------------------------------------------------------- 1 | ..\Items\empty.d|{002A2DE9-8BB6-484D-987F-7E4AD4084715}|Empty D Module|1|Create empty D module|0|#1000|0|dsource 2 | -------------------------------------------------------------------------------- /visuald/Templates/Wizards/package.vsz: -------------------------------------------------------------------------------- 1 | VSWizard 6.0 2 | Wizard={002A2DE9-8BB6-484D-980d-7E4AD4084715} 3 | -------------------------------------------------------------------------------- /visuald/visuald.def: -------------------------------------------------------------------------------- 1 | ; visuald.def : translates the module exports 2 | 3 | EXETYPE NT 4 | LIBRARY "visuald.dll" 5 | CODE PRELOAD DISCARDABLE 6 | DATA PRELOAD MULTIPLE 7 | 8 | 9 | EXPORTS 10 | DllCanUnloadNow = DllCanUnloadNow PRIVATE 11 | DllGetClassObject = DllGetClassObject PRIVATE 12 | DllRegisterServer = DllRegisterServer PRIVATE 13 | DllUnregisterServer = DllUnregisterServer PRIVATE 14 | VSDllRegisterServer = VSDllRegisterServer PRIVATE 15 | VSDllUnregisterServer = VSDllUnregisterServer PRIVATE 16 | VSDllRegisterServerUser = VSDllRegisterServerUser PRIVATE 17 | VSDllUnregisterServerUser = VSDllUnregisterServerUser PRIVATE 18 | RunDLLRegister = RunDLLRegister PRIVATE 19 | RunDLLUnregister = RunDLLUnregister PRIVATE 20 | RunDLLRegisterUser = RunDLLRegisterUser PRIVATE 21 | RunDLLUnregisterUser = RunDLLUnregisterUser PRIVATE 22 | VerifyMSObjW = VerifyMSObjW PRIVATE 23 | WritePackageDefW = WritePackageDefW PRIVATE 24 | GetCoverageData = GetCoverageData PRIVATE 25 | GenerateGeneralXMLW = GenerateGeneralXMLW PRIVATE 26 | GetTooltip = GetTooltip PRIVATE 27 | GetTooltipResult = GetTooltipResult PRIVATE 28 | GetParameterStorageLocs = GetParameterStorageLocs PRIVATE 29 | -------------------------------------------------------------------------------- /visuald/windows.d: -------------------------------------------------------------------------------- 1 | // This file is part of Visual D 2 | // 3 | // Visual D integrates the D programming language into Visual Studio 4 | // Copyright (c) 2010 by Rainer Schuetze, All Rights Reserved 5 | // 6 | // Distributed under the Boost Software License, Version 1.0. 7 | // See accompanying file LICENSE.txt or copy at http://www.boost.org/LICENSE_1_0.txt 8 | 9 | module visuald.windows; 10 | 11 | import sdk.win32.commctrl; 12 | 13 | pragma(lib,"ole32.lib"); 14 | pragma(lib,"comctl32.lib"); 15 | 16 | HRESULT HResultFromLastError() 17 | { 18 | return HRESULT_FROM_WIN32(GetLastError()); 19 | } 20 | 21 | int GET_X_LPARAM(LPARAM lp) 22 | { 23 | return cast(int)cast(short)LOWORD(lp); 24 | } 25 | 26 | int GET_Y_LPARAM(LPARAM lp) 27 | { 28 | return cast(int)cast(short)HIWORD(lp); 29 | } 30 | 31 | int MAKELPARAM(int lo, int hi) 32 | { 33 | return (lo & 0xffff) | (hi << 16); 34 | } 35 | 36 | COLORREF RGB(int r, int g, int b) 37 | { 38 | return cast(COLORREF)(cast(BYTE)r | ((cast(uint)cast(BYTE)g)<<8) | ((cast(uint)cast(BYTE)b)<<16)); 39 | } 40 | 41 | public import sdk.win32.shellapi; 42 | 43 | const WM_SYSTIMER = 0x118; 44 | 45 | public import sdk.port.base; 46 | 47 | extern(Windows) 48 | { 49 | uint GetThreadLocale(); 50 | 51 | UINT DragQueryFileW(HANDLE hDrop, UINT iFile, LPWSTR lpszFile, UINT cch); 52 | HINSTANCE ShellExecuteW(HWND hwnd, LPCWSTR lpOperation, LPCWSTR lpFile, LPCWSTR lpParameters, LPCWSTR lpDirectory, INT nShowCmd); 53 | } 54 | 55 | // use instead of ImageList_LoadImage to avoid reduction to 16 color bitmaps 56 | HIMAGELIST LoadImageList(HINSTANCE hi, LPCSTR lpbmp, int cx, int cy) 57 | { 58 | auto imglist = ImageList_Create(cx, cy, ILC_MASK | ILC_COLOR24, cx * 10, cx * 10); 59 | if(!imglist) 60 | return null; 61 | auto img = LoadImageA(hi, lpbmp, IMAGE_BITMAP, 0, 0, LR_LOADTRANSPARENT); 62 | if(!img) 63 | { 64 | ImageList_Destroy(imglist); 65 | return null; 66 | } 67 | ImageList_AddMasked(imglist, img, CLR_DEFAULT); 68 | DeleteObject(img); 69 | return imglist; 70 | } 71 | -------------------------------------------------------------------------------- /visuald/workaround.d: -------------------------------------------------------------------------------- 1 | module workaround; 2 | 3 | import std.conv; 4 | 5 | /////////////////////////////////////////////////////////////// 6 | // fix bad compilation order, causing inner function to be generated 7 | // before outer functions (bugzilla 2962) 8 | // this must be *parsed* before other usage of the template 9 | static if(__traits(compiles,std.conv.parse!(real,string))){} 10 | 11 | //__gshared int[string] x; 12 | 13 | version(none) debug 14 | { 15 | 16 | // drag in some debug symbols from libraries (see bugzilla ????) 17 | extern extern(C) 18 | { 19 | __gshared int D3vdc4util8TextSpan6__initZ; 20 | __gshared int D3sdk4port4base4GUID6__initZ; 21 | __gshared int D3std4json9JSONValue6__initZ; 22 | } 23 | shared static this() 24 | { 25 | auto x1 = &D3vdc4util8TextSpan6__initZ; 26 | auto x2 = &D3sdk4port4base4GUID6__initZ; 27 | auto x3 = &D3std4json9JSONValue6__initZ; 28 | } 29 | } 30 | --------------------------------------------------------------------------------