Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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 SupportStatus
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:

  1. Download and build Kotlin Language Server with JDK 11 using the command: ./gradlew :server:installDist (how can we add kotlin-language-server/server/build/install/server/bin/kotlin-language-server)
  2. Open netbeans/java/kotlin.editor module in NetBeans IDE
  3. 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 SupportStatus
File type recognition
Project type
Semantic syntax highlighting
Formatting
Braces matching
Error Hints/Fixes/Suggestions
Code completion
Code templates
Refactoring
Debugging

...