Skip to content

💬 Identify Approach for Extension Preferences #420

Closed
@austincondiff

Description

@austincondiff

We need to identify an approach for extension preferences.

For context per #416 by @pkasila

@Angelk90 said:

If the newly installed "Hello world" extension had a settings window, how can I access it?

@pkasila gave 3 options:

  1. (code approach) We can add static func settings() -> ... function to ExtensionBuilder class and this function should return (one of):
    1.1. a set of settings (so CodeEdit handles settings in some unified way)
    1.2. a function for window to be created
    1.3. a NSViewController with extension's settings (extension handles its settings)
  2. (bundle resource approach) We can make extension developers add their settings fields to Info.plist or any other file in the extension's bundle, so CodeEdit will parse this file and handle settings in some unified way.
  3. Actually we can make it work with XIBs in the extension's bundle 😄

@jasonplatts pointed out how Nova handles this...

Great question @Angelk90. We will need to consider that many extensions will want to store both global and project-specific settings. @austincondiff, this is something that is really confusing for users in Nova. The first white window is where global settings are shown and the second darker project window is where project-specific settings are found.

nova extensions

In our concept (here and here), we planned to house our extension store and extension library (installed extensions) in the Extension Navigator (#355).

What happens when we click on an extension in this navigator? Here are some options:

  • A: A tab opens up with extension information and preferences
  • B: A sheet opens up on top of the workspace window that shows extension information and preferences
  • C: We have a separate extension store window similar to Nova
    • 1: Forgo the navigator in preference of this extension window, or...
    • 2: Use this window to supplement the navigator.
      • We would display a button in the navigator to show the window.
      • The navigator would enable quick access, while the window acts as a app store like experience.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status

    🏁 Complete

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions