Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/intellij-frege/intellij-frege

IntelliJ IDEA plugin for Frege language
https://github.com/intellij-frege/intellij-frege

frege intellij-idea intellij-plugin

Last synced: 4 months ago
JSON representation

IntelliJ IDEA plugin for Frege language

Awesome Lists containing this project

README

        


Plugin logo

# IntelliJ IDEA plugin for Frege language
[![Frege Plugin Build & Test](https://github.com/IntelliJ-Frege/intellij-frege/actions/workflows/tests.yml/badge.svg)](https://github.com/IntelliJ-Frege/intellij-frege/actions/workflows/tests.yml)

## 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](https://github.com/Frege/frege).

## Installation

Plugin is available on [JetBrains plugin repository](https://plugins.jetbrains.com/plugin/17187-frege).

## 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](assets/images/Navigation1.png)


![Navigation example](assets/images/Navigation2.png)


![Navigation example](assets/images/Navigation3.png)

- Navigation depends on imports


![Navigation imports example](assets/gifs/NavigationImports.gif)

- Navigation to Java (and other JVM-languages)


![Navigation to Java example](assets/gifs/NavigationToJava.gif)

- Navigation from Java (and other JVM-languages)


![Navigation from Java example](assets/gifs/NavigationFromJava.gif)

- Line markers
- To type annotation


![Line marker annotation example](assets/gifs/LineMarkerAnnotation.gif)


- To instanced methods and vice versa


![Line marker to from instance](assets/gifs/LineMarkerToFromInstance.gif)


- Run Frege


![Line marker run Frege](assets/gifs/RunFrege.gif)

- Find usages


![Find usages](assets/images/FindUsages.png)

- Code completion


![Code completion](assets/images/CodeCompletion1.png)


![Code completion](assets/images/CodeCompletion2.png)



- Rename refactoring


![Rename refactoring](assets/gifs/Renaming.gif)

- Add import quickfix


![Add import quickfix](assets/gifs/AddImportQuickfix.gif)

- Documentation viewer


![Documentation viewer](assets/gifs/DocumentationViewer.gif)

- REPL integration


![REPL integration](assets/gifs/ReplIntegration.gif)

- REPL: execute parts of code


![REPL execution](assets/gifs/ReplExecution.gif)


## Contributors

[Peter Surkov](https://github.com/psurkov/)

[Kirill Karnaukhov](https://github.com/kkarnauk)

[Jura Khudyakov](https://github.com/23jura23/)

Special thanks to [Semyon Atamas](https://github.com/satamas) and [Dierk König](https://github.com/Dierk)!

## License

Apache-2.0