Skip to content

IntelliJ-Frege/intellij-frege

Repository files navigation

Plugin logo

IntelliJ IDEA plugin for Frege language

Frege Plugin Build & Test

What is Frege

Frege is a Haskell for the JVM. It is functional, has strong static type system and lazy evaluations, but Frege compiles to Java and runs on JVM. Also, it can use any Java library and can be used inside any Java project.

Read more at Frege github.

Installation

Plugin is available on JetBrains plugin repository.

Current progress

Features implemented partially or completely:

  • Lexer
  • Parser
  • Syntax highlighting and color schemes
  • Gradle-based build system
  • Navigation
  • Find usages
  • Code completion
  • Rename refactoring
  • File templates
  • Index files
  • Frege REPL
  • 'Add import' quickfix for unresolved references
  • Documentation viewer

Features desired:

  • Structure view
  • Formatter
  • More quickfixes
  • More refactorings
  • Type system
  • and more

Examples

Below you can see examples of our plugin:

  • Navigation

    Navigation example

    Navigation example

    Navigation example

  • Navigation depends on imports

    Navigation imports example

  • Navigation to Java (and other JVM-languages)

    Navigation to Java example

  • Navigation from Java (and other JVM-languages)

    Navigation from Java example

  • Line markers

    • To type annotation

      Line marker annotation example

    • To instanced methods and vice versa

      Line marker to from instance

    • Run Frege

      Line marker run Frege

  • Find usages

    Find usages

  • Code completion

    Code completion

    Code completion

  • Rename refactoring

    Rename refactoring

  • Add import quickfix

    Add import quickfix

  • Documentation viewer

    Documentation viewer

  • REPL integration

    REPL integration

  • REPL: execute parts of code

    REPL execution

Contributors

Peter Surkov

Kirill Karnaukhov

Jura Khudyakov

Special thanks to Semyon Atamas and Dierk König!

License

Apache-2.0