Giter VIP home page Giter VIP logo

darthints's Introduction

What are Inlay Hints?

They are a feature used to assist the writer of a code by eliminating the type ambiguity from the static code through adding local hints to variables or methods parameters, just like java or C# hints!

What is Dart Inlay Hints Project?

The project purpose is to implement one of a kind feature called (Dart Inlay Hints) on IntelliJ idea 2021.2.4 IDE as a (Plugin). It implements the missing inlay hints feature for dart code.

What Are the Currently Supported Versions?

The plugin currently support version 2021.2.4. Will update the plugin to the newer versions soon!

What Are the currently supported hints’ types?

The stable version of the plugin supports the variables hints completely. The methods are not well supported due to missing API endpoints for methods in dart analyzer. I will develop an extension for dart analyzer and custom endpoint for the required functionality then add the hints feature for the methods.

How To Use Dart Inlay Hints

Simply right click on any dart file and turn on dart inlay hints. Raw Code the generated hints will be displayed right before the variables and methods. Hints Code

Used Languages and Frameworks

This project is developed using java, and extends IntelliJ Idea plugins platform. It used dart SDK as a base to visit the required types and detect the static types.

Motivations Behind Implementation

When I was a university student, I started with c++ and java, one of the features that I really liked was the inlay hints in IntelliJ platform! It was very helpful as I was programming with java. When I started learning dart, it was missing this feature, so I decided to implement it as a plugin for IntelliJ Idea, and write a full academic documentation on it as a software.

What Are the Obstacles of Plugin Development?

When it comes to non-commercial development, the learning sources are very limited, and the official documentation barely touches the surface. The only way to learn plugin development is by reading third party plugins and observe how they work and try to understand the process.

Future Aspects

The project will continue to develop and implement the same feature for methods’ parameters.

How Does it Work?

this plugin relies on dart analyzer API from dart SDK, and several IntelliJ Idea packages

  • com.intellij.codeinsight: This package is used in the platform to present various in-editor information, such as documents, syntax error highlight, coloring, hints, indentations, folding, and more. For this project only hints functionalities were used (com.intellij.codeinsight.hints.*) which is used to add inline text ignored by the compiler and has other multiple properties.
  • com.intellij.openapi: This package is used in various functionalities in the platform, editor features, abstract IO features, IDE actions (every button in the IDE represents an action), It is major part of the IDE. Only editor and action features were used (com.intellij.openapi.editor.) which is used to access the editor and manipulate it, (com.intellij.openapi.actionsSystem.) which is used create a way for user to interact with the plugin behavior -a clickable button for example-.
  • com.intellij.psi: This package works as A layer between the language and all platform features. This project uses two different PSI layers, the first one is intellij idea implementation of PSI layer to communicate with all platform features, the second one is Dart language implementation of PSI layer to recognize Dart code and manipulate it. The libraries used are (com.intellij.psi.) which was used to manipulate intelij idea components as elements, files as this report will discuss later, (com.jetbrains.lang.dart.psi.).

Software Analysis UML Diagrams

this section will view the required diagram in order to understand the overall workflow of Dart Inlay Hints.

Use Case Diagram

DIH Use Case

Functional Flow Block Diagram

Dart Hints FFBD

Documentation

this documentation here, is a very detailed academic documentation on the plugin and it explains every details on the working packages, and how are they used.

darthints's People

Contributors

mohaamiry avatar actions-user avatar

Watchers

 avatar

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.