Giter Club home page Giter Club logo

ezargs's Introduction

EzArgs

Build Version Downloads

The EzArgs plugin provides option to pass arguments to C++ run configurations in convenient matter by simply writing them in dropdown box on the toolbar. This plugin duplicates feature of UnrealVS plugin: Command Line Arguments

Installation

  • Using IDE built-in plugin system:

    Preferences > Plugins > Marketplace > Search for "EzArgs" > Install Plugin

  • Manually:

    Download the latest release and install it manually using Preferences > Plugins > ⚙️ > Install plugin from disk...


Plugin based on the IntelliJ Platform Plugin Template.

ezargs's People

Contributors

actions-user avatar decoyrs avatar

Watchers

 avatar  avatar

ezargs's Issues

Code review

  1. ArgumentsInputField seem to misuse project field. Look: here you assign a new value to project every time someone calls update():

    If the action is used in multiple projects simultaneously, this field will get changed often, and document changes may leak from one component to another one.

    I recommend to create a separate implementation of DocumentListener which will capture the current Project.

  2. WrappedEditorComboBox.isInitialized won't be required if you initialize it right after component creation. Override createCustomComponent(@NotNull Presentation presentation, @NotNull String place, @NotNull DataContext dataContext) overload to access dataContext.project in ArgumentsInputField, and that's it.

  3. (minor) Instead of directly accessing project!!.getService(EzArgsService::class.java), better implement a static (companiuon object)_ method on EzArgsService. Like this:

    class EzArgsService […] {
      companion object {
        fun getInstance(project: Project): EzArgsService  = project.service()
      }
    }
  4. EzArgsService::addToHistory and EzArgsService::addHistoryListener deserve to be guarded with application.assertIsDispatchThread().

  5. It would be good design to add a Lifetime argument into EzArgsService::addHistoryListener. Something like this:

    fun addHistoryListener(listener: HistoryListener, lifetime: Lifetime) {
       lifetime.bracket(
         { historyListeners.add(listener) },
         { historyListeners.remove(listener) }
       )
    }

    This will help to avoid memory leaks (when handlers are still subscribed on project dispose). In most places, it will be enough to pass project.lifetime as a second argument, and it will work well.

  6. List<T>.lastOrElse could be implemented without throwing and catching exceptions:

    inline fun <T> kotlin.collections.List<T>.lastOrElse(defaultValue: () -> T): T =
      lastOrNull() ?: defaultValue()

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.