GithubHelp home page GithubHelp logo

ionagamed / eiffel-idea Goto Github PK

View Code? Open in Web Editor NEW
3.0 6.0 0.0 1.11 MB

Eiffel support plugin for IntelliJ-platform based IDEs

License: MIT License

Java 96.70% Lex 3.30%
eiffel intellij-plugin

eiffel-idea's Introduction

eiffel-idea

IntelliJ IDEA plugin for Eiffel language support

Current status

Still under somewhat-active development (see last commit to see if it's still maintaned)

How to install

  • Download latest plugin release from releases page
  • Download Eiffel GOBO (we currently support only this one)
    • (Windows) Download Microsoft Visual Studio C++
    • (*nix) Download any C compiler that you like (chances are, you need to write apt install g++ or brew install g++ if you don't know what that means)
  • Build GOBO using your C compiler (refer to GOBO website for further instructions)
  • Install plugin using IDEA standard menu (IDEA -> Preferences -> Plugins -> Install from disk -> Select zip file)
  • Create new Eiffel project in IDEA (you won't miss its menu option)
  • Press Plus (Add new SDK) and select Eiffel GOBO SDK
    • (Windows) Customize the full path to Microsoft VS home
  • When creating procedure is done, go Run -> Edit configurations... and add Eiffel GOBO configuration using plus button
  • Enjoy! (Windows building may still be sometimes incorrect as a result of lack of Windows testers)

What is done

  • Kinda-full EBNF syntax (as of 2006 ECMA-367 with some additions) with parser by Grammar-Kit
  • Lexer for keywords and symbols
  • Syntax highlighting for keywords, literals, builtin types
  • Building support through GEC
  • Feature name completion with client visibility support (still under testing, but seems to work fine)
  • Project-wide and library-wide class name completion
Extensions of ECMA-367
  • Integer ranges using |..| binary operation.
  • Across-type boolean iteration in assertion clauses.

Both of the above can be shown on this example

...
ensure
    across 
        1 |..| n
    as
        it
    all
        it.item <= n
    end
end
  • Array literal expressions

Example:

local
    a: ARRAY [INTEGER]
do
    a := << 1, 2, 3, 4, 5 >>
end

What is currently being done or WIP (but may be for the time being)

  • Project Wizard
  • Formatting (kinda done, but still some minor issues)

What is not done (needs to be done)

  • Context-aware highlighting
  • Analysis

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.