Comments (10)
One proposal is to add a costume QuickDocumentProvider
, where we can display the text. I'll link a small PR down below, on how it may look like.
This may clash with the existing KotlinQuickDocumentProvider
, that does the same job you see down below for Kotlin. We would need to suppress it for special KtElements, but I haven't find API's who do that.
If we solely care about the Text we would add it as a KDoc on the descriptor and facilitate the existing Kotlin implementation.
Bare with me I am adding more suggestions as I discover them.
from arrow-meta.
Another way to present Text using Side Panels like the one we see with Kotlin Bytcode
This is feature is a composition of AnAction
and a ToolWindow.
Here Kotlin Bytecode
is triggered through the Tools Panel and opens a Toolwindow on the left side.
it allows us to focus on the Content and how it is displayed rather than to create separate UI elements on top of Idea.
The advantage here is that we can move this Action
to different places, e.g.: wrap it into a LineMarker
and whenever a user clicks on it, it triggers the action. Toolwindows can be persistent as we see with Gradle
.
addAnAction(
"ExampleEmptyToolWindow",
anAction(
icon = ArrowIcons.PURE,
actionPerformed = {e ->
/**
* creates Toolwindow with [e]
* set's the icon
* ContentManager adds our Content
* This Content can be composed of [EditorTextField], which is IntelliJ's promoted editor component with syntax highlighting support, code completion, code folding and more.
*/
}
)
)
from arrow-meta.
Can we have the above linked icons rendered on the markdown table to see what they look like?
from arrow-meta.
We need a table that looks like this for all plugins and involve several people to fill this in.
Plugin | Action | Icon | Description | Expanded Description |
---|---|---|---|---|
Purity | Inspection | [pic here] | This function is impure... | This function is impure..., Docs to IO, suspend, Fx etc |
from arrow-meta.
Plugin | Feature | Icon | Description | Expanded Description |
---|---|---|---|---|
Comprehensions | LineMarker | arrow-meta-bind.svg |
"Bind" | - |
Nothing | LineMarker | arrow-meta-nothing.svg |
"Bottom Type" | - |
HigherKinds | LineMarker | arrow-meta-higher.svg |
${class.name} is a Higher Kinded Type that may be used in polymorphic functions expressed over [Kind<F, A>] and with the type classes. For more info visit https://arrow-kt.io/docs/patterns/glossary/#type-constructors | - |
HigherKinds | LineMarker | arrow-meta-polymorphic.svg |
here is an example | - |
Purity | Inspection | "Function should be suspended" | - | |
Optics | LineMarker | arrow-meta-optics.svg | "Optics" | - |
from arrow-meta.
Both approaches are things we can use for different purposes. What about embedded media like gifs or videos. Is that possible or does that require some other kind of panel?
from arrow-meta.
Gifs should be possible, but I can not confidently confirm whether videos are possible. There might be a workaround to do that.
from arrow-meta.
The editor defines it's UI with an initial wrapper, which holds it's Content.
We can use 4 existing UI wrappers/ templates from the editor:
- Tool Windows proposed here #131 (comment)
- Dialogs they provide visuals to then trigger
AnAction
with the supplied information of the user. They can look as simple as this(UserInput) -> AnAction
:
-
PopUps: They're similar to Dialogs, but without explicit closing buttons and reduce to a Function
(UserInput) -> AnAction
example from above -
Notifications: Can be invoked everywhere and display text, with an Icon.
addAnAction(
"ExampleNotification",
anAction(
icon = ArrowIcons.BIND,
actionPerformed = { e ->
Notifications.Bus.notify(
Notification("GroupDisplayId", "Arrow", "COntentLepsum",
NotificationType.WARNING)) // this Notificitation can hold an Icon
}
)
)
Or start from scratch with our own workflows. This requires us to maintain the lifecycle of the wrapper in the application in addition to the Content.
The initial four elements wrap our Content in templates, where we can focus on the Content.
Regardless of a design choice,
the UI is based on Swing Components wether for the Content or the wrapper. Interestingly enough, we could facilitate the existing wrapper, but still, have the freedom to define our own workflows in the Content element.
from arrow-meta.
I see on the table we are missing unions and type classes extensions. Also type proofs which even if not merged yet will be there by KC
from arrow-meta.
This PR provides drafts over the aforementioned UI wrappers
#214
from arrow-meta.
Related Issues (20)
- [BUG] Arrow Analysis: inability to parse require() statements is a compiler error
- [BUG] Android project won't compile with Analysis HOT 6
- [BUG] double negative incorrectly interpreted
- [BUG] Analysis crashes on lazy initialisation to anonymous object HOT 1
- [BUG] Analysis crashes on expect declaration
- An operation is not implemented: Missing impl for <app_clientDebug>[ModuleDescriptorImpl@2a566cc] HOT 2
- [BUG] "java.lang.IllegalStateException: Symbol for kotlinx.serialization.internal/LongSerializer|null[0] is unbound" exception on build with Arrow Analysis plugin HOT 6
- Maven support for Arrow Analysis plugins HOT 1
- [BUG] Analysis: java.lang.UnsupportedOperationException on multiply code.
- [BUG] Project builds with Arrow Ananlysis only with specific gradle version
- [BUG] de.uni_freiburg.informatik.ultimate.logic.SMTLIBException: Function field is already defined HOT 1
- [BUG] "List has more than one element" HOT 2
- [HELP] Using meta for project-reactor
- [BUG] Gradle build failing with `java.lang.NoSuchMethodError`
- [BUG] NoSuchMethod error on Kotlin 1.5.30 but works on 1.6.0 HOT 4
- [BUG] Resolution error with proofs plugin when using certain types from other packages. HOT 5
- Question: Where do I get BindingContext? HOT 1
- [Security] Workflow build_documentation.yml is using vulnerable action actions/checkout HOT 2
- [BUG] Documentation Analysis Wrappers
- [BUG] Crash in Arrow Analysis on large codebase HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from arrow-meta.