Kotlin programming language is supported in a number of ways:
- Kotlin plugin donated by JetBrains
- Kotlin Language Server
...
JetBrains Kotlin plugin
Donated by JetBreains.
Original URL: https://github.com/JetBrains/kotlin-netbeans
...
Once you build the project, all Java and NetBeans dependencies should be resolved. However, the project also contains a lot of Kotlin code which throws a lot of compilation errors. The plugin contains Kotlin code that needs to be built/migrated to the latest Kotlin compiler version and all the compilation errors need to be fixed.
Language Feature Support | Status |
File type recognition | √ |
Project type | |
Semantic syntax highlighting | √ |
Formatting | √ |
Braces matching | √ |
Error Hints/Fixes/Suggestions | |
Code completion | |
Code templates | |
Refactoring | |
Debugging |
Sidenote: There are also contrib/groovy.grails
and contrib/groovy.grailsproject
.
Kotlin LSP
...
NetBeans 12.x and later already provide some basic support in the java/kotlin.editor
module. This should be the plugin that should be further developed. It uses With this plugin one can open a .kt
file via the Windows→Favourites tab.
Syntax highlighting of .kt
source files are provided using the Kotlin.tmLanguage.json
TextMate syntax. This JavaDoc explains how to integrate a TextMate lexer with NetBeans.
With this plugin one can open a .kt
file via the Windows→Favourites tab.
There are also contrib/groovy.grails
and contrib/groovy.grailsproject
.
Code completion, navigation etc. are provided by the Kotlin Language Server project. To use the Kotlin Language server:
- Download and build Kotlin Language Server with JDK 11 using the command:
./gradlew :server:installDist
(how can we addkotlin-language-server/server/build/install/server/bin/kotlin-language-server
) - Open
netbeans/java/kotlin.editor
module in NetBeans IDE - Add a new class:
package org.netbeans.modules.kotlin.editor.lsp;
import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.netbeans.api.editor.mimelookup.MimeRegistration;
import org.netbeans.modules.lsp.client.spi.LanguageServerProvider;
import org.openide.util.Lookup;
@MimeRegistration(mimeType="text/x-kotlin", service=LanguageServerProvider.class)
public class KotlinLSPServer implements LanguageServerProvider {
private static final Logger LOG = Logger.getLogger(KotlinLSPServer.class.getName());
@Override
public LanguageServerDescription startServer(Lookup lookup) {
File server = new File("<path_to_>/kotlin-language-server/server/build/install/server/bin/kotlin-language-server");
//InstalledFileLocator.getDefault().locate("typescript-lsp/node_modules/typescript-language-server/lib/cli.js", null, false);
try {
Process p = new ProcessBuilder(new String[] {server.getAbsolutePath()}).directory(server.getParentFile().getParentFile()).redirectError(ProcessBuilder.Redirect.INHERIT).start();
return LanguageServerDescription.create(p.getInputStream(), p.getOutputStream(), p);
} catch (IOException ex) {
LOG.log(Level.FINE, null, ex);
return null;
}
}
}
Language Feature Support | Status | |
File type recognition | √ | |
Project type | ||
Semantic syntax highlighting | √ | |
Formatting | √||
Braces matching | √ | |
Error Hints/Fixes/Suggestions | ||
Code completion | ||
Code templates | ||
Refactoring | ||
Debugging |
...