Giter Site home page Giter Site logo

intellij-dlanguage / intellij-dlanguage Goto Github PK

View Code? Open in Web Editor NEW
325.0 18.0 52.0 36.06 MB

Intellij Plugin for the D Programming Language

License: MIT License

Java 36.08% Lex 0.60% D 45.89% Makefile 0.01% DTrace 0.01% Kotlin 17.39% HTML 0.04%
intellij intellij-plugin java kotlin dlang

intellij-dlanguage's Introduction

Intellij D Language

Support for the D Programming Language within IntelliJ IDEA (planned Clion support is experimental. See CLion issues)

JetBrains IntelliJ plugins

Branch Status
Master Build & Verify Coverage Status
Develop Build & Verify Coverage Status

Supported IntelliJ based IDEs:

The primary focus for the project is to support Intellij IDEA (both IC and IU) with some work being done to try and support CLion. It may work on other IDEs such as AppCode, Android Studio, PyCharm, etc but this is not tested by the dev team.

We are currently targeting Intellij 2023.2 and above.

For a list of older releases and their supported IDE versions see our Compatibility Matrix.

Installation

Assuming you have IntelliJ IDEA, CLion (or another Intellij based IDE installed), you can simply install the plugin via the IDE:

Go to Settings (Preferences on Mac) > Plugins > Browse Repositories and search For "D Language" (you may see 2 plugins, Choose the DLanguage one) then click install and restart IntelliJ

installation

You can also download the plugin jar to your local disk directly from the Jetbrains plugin repository and then in IntelliJ go to Preferences > Plugins > Install plugin from disk and choose the jar you downloaded

After the plugin has been installed you will need to set dmd up as project SDK and configure dub

A word on support, etc.

This plugin is maintained by a very small team of volunteers in their spare time. There are issues that need to be resolved both to add new features and simply keep the plugin compatible with new versions of Intellij. As the project relies on the good will of its contributors, progress can sometimes take a while. Please consider this when creating new issues. You can help by using the plugin and raising issues for feature requests and bugs. Even better get involved and submit pull requests.

Quick Usage

Import an existing DUB project

If you have an existing dub project you can import it via File > Import Project

Import

New Project with DUB

When you select this to create a new project with dub, if dub is on your path, it will attempt to use dub init to create a new dub project for you. If dub is not on your path it will create a source directory and you will have to create your sdl/json dub file manually or rename/delete the source folder and then use dub init to recreate it. Alternatively you can open an existing dub project by doing: File -> Open

Once a dub project is loaded, there is right click menu option to run with dub, or you can use the run config โ€“ run with Dub.

Before running go and configure the DTools in Settings -> Languages & Frameworks -> D Tools.

Basic DUB Dependency Support

There is very basic dub dependency support via Tools > Process D Libraries

It reads the dub dependencies and loads the libraries into the External Libraries

Dub  Dependency

Basic D-Unit Test Runner Support

If you add the d-unit dependency to your dub.json d-unit and then run Process D Libraries you will be able to run d-unit tests

Test Support

Configure DTools

The best option is to do and get the following tools and build them according to their GitHub page instructions:

If you put these tools on your path you can go to (Settings -> Languages & Frameworks -> D Tools) and just click autofind on each of the tools and it will find them. Otherwise you will need to select the correct path to the tool for each one.

There is a nice blog post about setting up the tools at: www.samael.me.uk

Configuring DCD

To configure DCD in the dcd-server add a comma separated list of paths that point to your libraries that you want to include in autocompletion.

For example:

    /Library/D/dmd/src/phobos,/Library/D/dmd/src/druntime/import,/Users/hendriki/.dub/packages/rainbow-master/src

This will add the phobos and druntime/import as well as my rainbow dub project. You can add other dub packages by adding the path to them. I should be able to autoconfigure this stuff in a future release.

UPDATE: all project files are now automatically added to DCD and if on MacOS/OSX/macOS the D sources are also added automatically. The position on Linux and Windows is not currently clear since this work was done on OSX.

DCD Server Restart Action

I noticed that after a while the auto completion seemed to cause the editor to hang. As a first step I have added a menu action in Tools as the last option to Restart the DCD Server. This action will just kill the running process and restart it again which seems to fix the hanging issue. I will investigate further to find a way to prevent the hanging in the first place but this is a helpful restart action.

DFormat

To reformat D code use the shortcut or the menu item - Code -> Reformat Code with D Format (ctrl+alt+K) or on mac (cmd+alt+K)

Syntax Highlighting

Go to Preferences -> Editor -> Colors and Fonts -> D File

You can customize the syntax highlighting colours here. Save as a new theme - and then untick the inherit from checkbox and this will allow you to choose a colour for each item. Only the native items will show as changing in the code example. From function definition downwards the options are related to annotated highlighting which is based on the grammar and not the lexer. So these don't show as changing the code example but they do work.

Screenshots

Here are some screenshots of progress to date:

Recent Screenshots

Dtools configuration

improved highlighting

Autocompletion using DCD

improved highlighting

Compile checking

improved highlighting

Dscanner Code Linting

improved highlighting

Goto Class

improved highlighting

Configure Syntax Highlighting

highlighting settings

Older Screenshots

Improved Syntax Highlighting with Annotator:

improved highlighting

Syntax Highlighting and PSI Structure:

highlighting and psi structure

Create a new D project:

create a new d project

Module Settings - add D compiler:

module settings add d compiler

Module Settings - set D compiler in project:

module settings add compiler to project

Add new D file (from right click menu)

right click add new d file

D file editor:

d file editor

Run Configuration menus:

run configuration menus

Run Configuration create box:

run configuration create box

Run Configuration edit:

run configuration edit

Run Configuration running:

run configuration running

PSI Tree and Highlighting:

psi tree and highlighting

Develop

Contributions are accepted via fork and pull request but please co-ordinate via issues so we don't duplicate effort.

Instructions for Developers

read this document: developing custom language plugins for IntelliJ

also see this document for getting the environment setup: plugin development

this one is also helpful: make a plugin in less than 30 mins

Setup

The project uses Gradle with the gradle-intellij-plugin. Simply use the Gradle wrapper in the root of the project to build the plugin using the following:

./gradlew buildPlugin

You can also use the plugin to boot up a stand alone instance of IntelliJ with the plugin installed using:

./gradlew runIde

or to run against a specific Intellij version use:

./gradlew runIde -PideaVersion=2018.3.5

Copyright Notice

This plugin uses portions of code from another project. There original copyright statement is below:

Copyright (c) 2017 Patrick Scheibe
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
 
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
 
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

intellij-dlanguage's People

Contributors

abaga129 avatar aermicioi avatar amakeev avatar andre2007 avatar andrejp88 avatar bamarc avatar etienne02 avatar gitter-badger avatar hexeption avatar iammaxim avatar jamesmahler avatar jedzia avatar jephron avatar johnpjenkins avatar kingsleyh avatar landaire avatar madmax-inc avatar mokona avatar pirocks avatar rikkimax avatar rocex avatar russel avatar scellow avatar singingbush avatar sysint64 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

intellij-dlanguage's Issues

Ant managed project?

Is Ant still a thing? SHould this project be a Gradle one, or at least a Maven one?

autocompletion from dub packages

Could you please instruct me how can set up dcd to make auto complete work with external libraries imported with dub? I tried to set dcd client param -I/home/user/.dub/packages and adding symlinks to libraries inside project dir with no luck.

D project without DUB

After creating D project without DUB, default configuration uses dub to compile causing error - DUB path not set. "Configure" link on this error's pop up does not work.

BNF grammar/roadmap

I'm not sure if you'd like to avoid creating a BNF grammar if you can but I think that the current model using dcd is sustainable. I may be mistaken but it looks like the Haskell plugin uses a similar model with ghc-mod and it seems to work fine. It may be worth looking into.

section in README about editing Info.plist

The readme file recommends editing Info.plist to get IDEA to run with Java 7 or 8 on mac. As per info on JetBrains site:

Modifying Info.plist will break the application digital signature and prevent the patch updates. We do not recommend modifying Info.plist file to run under JDK 1.7 or 1.8. The recommended way of overriding JDK version via idea.properties file can be found here.

DUB init options

  • --format=<value> to choose between JSON and SDL configuration formats.
  • --type=<value> to select the project stub type.

Nullpointer Exception

null
java.lang.NullPointerException
    at net.masterthought.dlanguage.utils.DUtil.findDefinitionNode(DUtil.java:148)
    at net.masterthought.dlanguage.utils.DUtil.findDefinitionNode(DUtil.java:39)
    at net.masterthought.dlanguage.psi.references.DReference.multiResolve(DReference.java:49)
    at com.intellij.psi.impl.source.resolve.reference.impl.PsiMultiReference.resolves(PsiMultiReference.java:61)
    at com.intellij.psi.impl.source.resolve.reference.impl.PsiMultiReference.access$000(PsiMultiReference.java:37)
    at com.intellij.psi.impl.source.resolve.reference.impl.PsiMultiReference$1.compare(PsiMultiReference.java:45)
    at com.intellij.psi.impl.source.resolve.reference.impl.PsiMultiReference$1.compare(PsiMultiReference.java:38)
    at java.util.TimSort.countRunAndMakeAscending(TimSort.java:351)
    at java.util.TimSort.sort(TimSort.java:216)
    at java.util.Arrays.sort(Arrays.java:1438)
    at com.intellij.psi.impl.source.resolve.reference.impl.PsiMultiReference.chooseReference(PsiMultiReference.java:80)
    at com.intellij.psi.impl.source.resolve.reference.impl.PsiMultiReference.resolve(PsiMultiReference.java:128)
    at com.intellij.codeInsight.TargetElementUtil.doGetReferenceOrReferencedElement(TargetElementUtil.java:371)
    at com.intellij.codeInsight.TargetElementUtil.getReferenceOrReferencedElement(TargetElementUtil.java:348)
    at com.intellij.codeInsight.TargetElementUtil.doFindTargetElement(TargetElementUtil.java:215)
    at com.intellij.codeInsight.TargetElementUtil.findTargetElement(TargetElementUtil.java:184)
    at com.intellij.codeInsight.daemon.impl.IdentifierHighlighterPass.doCollectInformation(IdentifierHighlighterPass.java:91)
    at com.intellij.codeHighlighting.TextEditorHighlightingPass.collectInformation(TextEditorHighlightingPass.java:67)
    at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass$1$1.run(PassExecutorService.java:444)
    at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1169)
    at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass$1.run(PassExecutorService.java:435)
    at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:446)
    at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:392)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:54)
    at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.doRun(PassExecutorService.java:432)
    at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.run(PassExecutorService.java:408)
    at com.intellij.concurrency.JobLauncherImpl$VoidForkJoinTask$1.exec(JobLauncherImpl.java:206)
    at jsr166e.ForkJoinTask.doExec(ForkJoinTask.java:260)
    at jsr166e.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:858)
    at jsr166e.ForkJoinPool.scan(ForkJoinPool.java:1687)
    at jsr166e.ForkJoinPool.runWorker(ForkJoinPool.java:1642)
    at jsr166e.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:108)

I get this error when putting my cursor on "qualifiedInstance" on Line 146 of https://github.com/mbierlee/poodinis/blob/7d206e89646d9ab92b7a473cb0e110f94b064a42/source/poodinis/autowire.d#L146

But it seems to happen on pretty much anything symbol in this file.
Using IntelliJ 15.0.2 on Windows with D Language 1.5

Jump into D standard Libraries

For libraries, you want to call ProjectLibraryTable.getInstance and then get it's modifiable model and add libs there.

I'd recommend searching for uses of that class, and then looking at how it's used. Relevant classes are Library, LibraryTable (and their modifiable models), and then ModifiableRootModel and ModifiableModuleModel for adding roots to modules and modules to the project.

Feature requests

For me to make this actually a replacement for mono-d I need:

  • dub support
    Preferably with projects listed (dependencies) with both the package name and the sub package name in the format of package:subpackage (unlike mono-d).
    I don't need to run dub from IDE just load projects. Detect and reload as needed.
  • Some form of auto completion
  • Would be nice to have version support (profiles or something to set which to use) (mono-d doesn't really do this)

Also reasonably stable.
Also maybe start gitter.im conversation for project?

Go to declaration support

I have configured dcd-server with the path to my dmd installation headers (/usr/local/Cellar/dmd/2.069.2/include/d2). The auto-complete correctly suggests functions from the std modules I import. However, IntelliJ's 'go to declaration' and 'go to implementation' functionality does not appear to work.

Is the 'go to' functionality supported yet? If so, how does one enable it? Thanks for developing this plugin.

Missing DUB build options

The "Build with DUB" run configuration is rather useless right now, due to missing options.

The absolute must-have list, in my opinion, is:

  • --build=<value> to select release, debug, unittest, etc.
  • The ability to specify a sub-package to build, instead of locking it to the top level.
  • --compiler=<value> to choose between dmd, gdc, and ldc2.
  • DUB build parameters to cover options not added to the GUI form configuration yet.
  • Application parameters to feed to the generated binary, if Run after build is set.

Also nice to have would be:

  • --arch=<value> to select 32- or 64-bit.
  • --force to rebuild.

All of that should be trivial to add (except perhaps sub-package support), so I might look into setting this up myself if you don't want/have too much else on your plate.

Aside from this issue (and the nasty DCD bug which you already fixed), I am quite pleased with the DLanguage plugin. I think it will be replacing Mono-D for me. The only big thing missing is debug support, but for me, at least, Mono-D effectively doesn't have debug support anyway since it crashes constantly...

Thanks for your efforts!

Index of D files fails intermittently when starting intellij

the Assert fails - it seems a bit random which file fails though - perhaps the DLexer is not thread safe and intellij indexes concurrently?

Error while indexing /Users/kings/development/projects/DLanguage/tests/gold/lexer/string_dq.d
To reindex this file IDEA has to be restarted
AssertFailedException
at ddt.melnorme.utilbox.core.Assert$AssertHandler.handleAssert(Assert.java:58)
at ddt.melnorme.utilbox.core.Assert.checkAssertion(Assert.java:85)
at ddt.melnorme.utilbox.core.Assert$AssertNamespace.assertTrue(Assert.java:147)
at ddt.dtool.parser.common.AbstractLexer.next(AbstractLexer.java:68)
at net.masterthought.dlanguage.lexer.DLexer.advance(DLexer.java:75)
at com.intellij.lang.cacheBuilder.DefaultWordsScanner.processWords(DefaultWordsScanner.java:88)
at com.intellij.psi.impl.cache.impl.id.IdTableBuilding$WordsScannerFileTypeIdIndexerAdapter.map(IdTableBuilding.java:139)
at com.intellij.psi.impl.cache.impl.id.IdTableBuilding$WordsScannerFileTypeIdIndexerAdapter.map(IdTableBuilding.java:126)
at com.intellij.psi.impl.cache.impl.id.IdIndex$4.map(IdIndex.java:85)
at com.intellij.psi.impl.cache.impl.id.IdIndex$4.map(IdIndex.java:79)
at com.intellij.util.indexing.MapReduceIndex.update(MapReduceIndex.java:398)
at com.intellij.util.indexing.FileBasedIndexImpl.a(FileBasedIndexImpl.java:1749)
at com.intellij.util.indexing.FileBasedIndexImpl.a(FileBasedIndexImpl.java:1681)
at com.intellij.util.indexing.FileBasedIndexImpl.indexFileContent(FileBasedIndexImpl.java:1629)
at com.intellij.util.indexing.UnindexedFilesUpdater$2.consume(UnindexedFilesUpdater.java:101)
at com.intellij.util.indexing.UnindexedFilesUpdater$2.consume(UnindexedFilesUpdater.java:97)
at com.intellij.openapi.project.CacheUpdateRunner$MyRunnable$1.run(CacheUpdateRunner.java:274)
at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1143)
at com.intellij.openapi.project.CacheUpdateRunner$MyRunnable$2.run(CacheUpdateRunner.java:294)
at com.intellij.openapi.progress.impl.ProgressManagerImpl$3.run(ProgressManagerImpl.java:194)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.a(ProgressManagerImpl.java:281)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.a(ProgressManagerImpl.java:278)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:233)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.runProcess(ProgressManagerImpl.java:181)
at com.intellij.openapi.project.CacheUpdateRunner$MyRunnable.run(CacheUpdateRunner.java:288)
at com.intellij.openapi.application.impl.ApplicationImpl$8.run(ApplicationImpl.java:405)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
at org.jetbrains.ide.PooledThreadExecutor$1$1.run(PooledThreadExecutor.java:56)

Error:Cannot compile Groovy files: no Groovy library is defined for module 'DLanguage'

I am new to Java and IntelliJ IDEA, when I build the plugin it show me this error:

Error:Cannot compile Groovy files: no Groovy library is defined for module 'DLanguage'

I already set the SDK to the path and add community edition source path.

there is more error(around 1400 errors):

Error:Kotlin: Supertypes of the following classes cannot be resolved. Please make sure you have the required dependencies in the classpath:
    class org.jetbrains.io.Decoder, unresolved supertypes: ChannelInboundHandlerAdapter
    class com.intellij.openapi.components.impl.ComponentManagerImpl, unresolved supertypes: Disposable
    class com.intellij.util.containers.ObjectIntHashMap, unresolved supertypes: TObjectIntHashMap<K>
    class org.jetbrains.io.ChannelExceptionHandler, unresolved supertypes: ChannelHandlerAdapter
    class com.intellij.openapi.util.JDOMUtil.MyXMLOutputter, unresolved supertypes: XMLOutputter
    class com.intellij.util.containers.SmartHashSet, unresolved supertypes: THashSet<T>

/var/root/jprojects/intellij-community/java/java-tests/testSrc/com/intellij/psi/codeStyle/autodetect/FileIndentOptionsProviderTest.kt

creating D project with DUB

Choosing create new project, D project with DUB.
Project is created, there's project.iml and empty "source" dir. I cant just create main.d file and build project because dub throws error:
Please run DUB from the root directory of an existing package, or run
"dub init --help" to get information on creating a new package.

and also cant run dub init in this project - "The target directory already contains a 'source/' file. Aborting."

JDK version

I would hope that most people using a JDK are on JDK8: JDK8 should be seen as the standard platform with people on JDK7 being the minority, i.e. the README should not reflect an expectation of JDK7. Of course some of us are using JDK9.

Creating a run configuration on Ultimate fails with IAE

Steps to reproduce

  1. Cloned DLanguage plugin
  2. Opened project with IntelliJ IDEA Ultimate 14.1.5 (SDK IntelliJ IDEA IU-141.2735.5, compared to IDEA IC-139.659.2 which was configured in the repo)
  3. Created a run configuration and ran the plugin
  4. Created a some dummy D project
  5. Created a run configuration, first time it works
  6. Create another run configuration

Observation

  • From now on, when I try to add a run configuration - when I click nothing happens and the error below is shown in the event log
IllegalArgumentException: Argument for @NotNull parameter 'textWithBrowse' of net/masterthought/dlanguage/run/DLanguageApplicationRunConfigurationEditorForm.initDartFileTextWithBrowse must not be null

Full Stack Trace

Argument for @NotNull parameter 'textWithBrowse' of net/masterthought/dlanguage/run/DLanguageApplicationRunConfigurationEditorForm.initDartFileTextWithBrowse must not be null
java.lang.IllegalArgumentException: Argument for @NotNull parameter 'textWithBrowse' of net/masterthought/dlanguage/run/DLanguageApplicationRunConfigurationEditorForm.initDartFileTextWithBrowse must not be null
    at net.masterthought.dlanguage.run.DLanguageApplicationRunConfigurationEditorForm.initDartFileTextWithBrowse(DLanguageApplicationRunConfigurationEditorForm.java)
    at net.masterthought.dlanguage.run.DLanguageApplicationRunConfigurationEditorForm.<init>(DLanguageApplicationRunConfigurationEditorForm.java:40)
    at net.masterthought.dlanguage.run.DLanguageApplicationRunConfiguration.getConfigurationEditor(DLanguageApplicationRunConfiguration.java:38)
    at net.masterthought.dlanguage.run.DLanguageApplicationRunConfiguration.getConfigurationEditor(DLanguageApplicationRunConfiguration.java:18)
    at com.intellij.execution.impl.ConfigurationSettingsEditor.<init>(ConfigurationSettingsEditor.java:220)
    at com.intellij.execution.impl.ConfigurationSettingsEditorWrapper.<init>(ConfigurationSettingsEditorWrapper.java:67)
    at com.intellij.execution.impl.SingleConfigurationConfigurable.<init>(SingleConfigurationConfigurable.java:65)
    at com.intellij.execution.impl.SingleConfigurationConfigurable.editSettings(SingleConfigurationConfigurable.java:99)
    at com.intellij.execution.impl.RunConfigurable.a(RunConfigurable.java:374)
    at com.intellij.execution.impl.RunConfigurable.access$600(RunConfigurable.java:76)
    at com.intellij.execution.impl.RunConfigurable$4.valueChanged(RunConfigurable.java:263)
    at javax.swing.JTree.fireValueChanged(JTree.java:2926)
    at javax.swing.JTree$TreeSelectionRedirector.valueChanged(JTree.java:3387)
    at javax.swing.tree.DefaultTreeSelectionModel.fireValueChanged(DefaultTreeSelectionModel.java:635)
    at com.intellij.ui.treeStructure.Tree$MySelectionModel.fireValueChanged(Tree.java:654)
    at javax.swing.tree.DefaultTreeSelectionModel.notifyPathChange(DefaultTreeSelectionModel.java:1093)
    at javax.swing.tree.DefaultTreeSelectionModel.setSelectionPaths(DefaultTreeSelectionModel.java:294)
    at javax.swing.JTree.setSelectionPaths(JTree.java:1646)
    at javax.swing.JTree.setSelectionRows(JTree.java:1728)
    at javax.swing.JTree.setSelectionRow(JTree.java:1703)
    at com.intellij.util.ui.tree.TreeUtil$1.run(TreeUtil.java:523)
    at com.intellij.util.ui.tree.TreeUtil.showAndSelect(TreeUtil.java:574)
    at com.intellij.util.ui.tree.TreeUtil.showRowCentered(TreeUtil.java:466)
    at com.intellij.util.ui.tree.TreeUtil.showRowCentered(TreeUtil.java:457)
    at com.intellij.util.ui.tree.TreeUtil.showRowCentred(TreeUtil.java:452)
    at com.intellij.util.ui.tree.TreeUtil.selectPath(TreeUtil.java:383)
    at com.intellij.util.ui.tree.TreeUtil.selectInTree(TreeUtil.java:833)
    at com.intellij.util.ui.tree.TreeUtil.selectInTree(TreeUtil.java:821)
    at com.intellij.execution.impl.RunConfigurable$6.run(RunConfigurable.java:320)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:749)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:702)
    at java.awt.EventQueue$3.run(EventQueue.java:696)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:719)
    at com.intellij.ide.IdeEventQueue.e(IdeEventQueue.java:734)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:569)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:382)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:109)
    at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:184)
    at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:229)
    at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:227)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:227)
    at java.awt.Dialog.show(Dialog.java:1084)
    at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl$MyDialog.show(DialogWrapperPeerImpl.java:778)
    at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl.show(DialogWrapperPeerImpl.java:465)
    at com.intellij.openapi.ui.DialogWrapper.invokeShow(DialogWrapper.java:1614)
    at com.intellij.openapi.ui.DialogWrapper.show(DialogWrapper.java:1571)
    at com.intellij.execution.actions.EditRunConfigurationsAction.actionPerformed(EditRunConfigurationsAction.java:47)
    at com.intellij.ui.popup.PopupFactoryImpl$ActionPopupStep$1.run(PopupFactoryImpl.java:746)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:749)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:702)
    at java.awt.EventQueue$3.run(EventQueue.java:696)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:719)
    at com.intellij.ide.IdeEventQueue.e(IdeEventQueue.java:734)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:569)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:382)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

restart DCD Server action

Add an action to restart the DCD server - I found that after a while for some reason the DCD capability hangs and restarting the server seems to fix it.

Needs more investigation to see why it hangs after a period of time.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.