class

Anvil::App

Inherits Reference < Object

Die Inline-Anwendung: Blocklisten, Live-Region, Eingabezeile und modale Abfragen — das Modell von smith und Claude Code.

Fertige Blöcke wandern einmal in den Scrollback; die Region darunter wird neu gezeichnet, solange sich etwas ändert.

Constants

DOUBLE_INTERRUPT_WINDOW = 1.second

Constructors

new(surface : Surface, loop : Loop, *, history : Array(String) = Array(String).new)
Source

Instance methods

add_block(block : View::Block) : View::Block
Source
ask(header : Text::StyledLine, body : Array(Text::StyledLine), keys : Array(Char), hint : Text::StyledLine, cancel : Char | Nil = nil) : Char

Blockiert den rufenden Fiber, bis der Nutzer eine der Tasten drückt. Die Tastenschleife läuft derweil weiter — ohne das gäbe es keine Werkzeug-Freigabe mitten in einem laufenden Vorgang. cancel gibt an, womit Escape und Ctrl-C beantwortet werden. Ohne das ließe sich eine Frage nur mit einer der angebotenen Tasten verlassen — und "abbrechen" ist bei einer Rückfrage die Erwartung, nicht die Ausnahme.

Source
ask_sync(header : Text::StyledLine, body : Array(Text::StyledLine), keys : Array(Char), hint : Text::StyledLine, cancel : Char | Nil = nil) : Char

Wie ask, aber mit eigener Tastenschleife — für Fragen, die beantwortet sein müssen, bevor run überhaupt anläuft (ein Vertrauens-Dialog beim Start). Blockiert den rufenden Fiber, ohne dass die Hauptschleife läuft.

Source
ask_text(header : Text::StyledLine, body : Array(Text::StyledLine)) : String

Dasselbe für eine Zeile Text (Plan-Rückmeldung, freie Antwort).

Source
blocks
Source
busy!
Source
clear!

Alles wegräumen: Blöcke fallen weg, der Bildschirm wird gelöscht. Für ein ausdrückliches "von vorn" der Anwendung.

Source
editor
Source
handle_event(event : Termisu::Event::Any) : Nil

Öffentlich, damit Tests (und Einbettungen) Ereignisse einspeisen können, ohne ein Terminal zu brauchen.

Source
hidden_marker

Nach einer zur Ruhe gekommenen Größenänderung, wenn die Fläche schon nachgeführt und für ungültig erklärt ist. Ob darüber hinaus der ganze Bildschirm gelöscht gehört, weiß nur die Anwendung: das Terminal hat den Scrollback neu umbrochen, und ob das zumutbar ist, hängt davon ab, was dort steht. Der Wortlaut der Marke, die für weggekürzte Zeilen steht.

Source
hidden_marker=(hidden_marker : Proc(Int32, Text::StyledLine) | Nil)

Nach einer zur Ruhe gekommenen Größenänderung, wenn die Fläche schon nachgeführt und für ungültig erklärt ist. Ob darüber hinaus der ganze Bildschirm gelöscht gehört, weiß nur die Anwendung: das Terminal hat den Scrollback neu umbrochen, und ob das zumutbar ist, hängt davon ab, was dort steht. Der Wortlaut der Marke, die für weggekürzte Zeilen steht.

Source
idle!

Von dem Fiber zu rufen, der die Arbeit gemacht hat: der Prompt kommt zurück.

Source
loop

Die Schleife — für Anwendungen, die den Takt selbst beeinflussen wollen.

Source
mark_dirty
Source
notice(text : String, style : Text::Style = Text::Style.new(fg: Text::Palette::INFO)) : Nil
Source
notice(lines : Array(Text::StyledLine)) : Nil
Source
on_abort
Source
on_abort=(on_abort : Proc(Nil) | Nil)
Source
on_interrupt
Source
on_interrupt=(on_interrupt : Proc(Nil) | Nil)
Source
on_key

Sieht jede Taste vor der Zustandsmaschine. Gibt der Haken true zurück, gilt die Taste als verbraucht und die App rührt sie nicht an.

Dafür da, dass eine Anwendung Tastenbedeutungen behalten kann, die nur sie kennt — ein offenes Popup, das die Pfeiltasten beansprucht, oder ein Ctrl-C, das erst die Eingabe leert und dann beendet.

Source
on_key=(on_key : Proc(Termisu::Event::Key, Bool) | Nil)

Sieht jede Taste vor der Zustandsmaschine. Gibt der Haken true zurück, gilt die Taste als verbraucht und die App rührt sie nicht an.

Dafür da, dass eine Anwendung Tastenbedeutungen behalten kann, die nur sie kennt — ein offenes Popup, das die Pfeiltasten beansprucht, oder ein Ctrl-C, das erst die Eingabe leert und dann beendet.

Source
on_resize
Source
on_resize=(on_resize : Proc(Nil) | Nil)
Source
on_submit

Was mit einer abgesendeten Zeile geschieht. run setzt das aus seinem Block; direkt gesetzt lässt sich die App auch ohne Schleife treiben.

Source
on_submit=(on_submit : Proc(String, Nil) | Nil)

Was mit einer abgesendeten Zeile geschieht. run setzt das aus seinem Block; direkt gesetzt lässt sich die App auch ohne Schleife treiben.

Source
prompt
Source
prompt=(prompt : Text::StyledLine)
Source
quit
Source
redraw_all!

Bildschirm löschen und den gesamten Verlauf neu ausgeben.

Das Zurücksetzen des Commit-Zählers ist der Punkt: ohne das bliebe nach dem Löschen nur die Live-Region übrig und alles bereits Committete wäre vom Bild verschwunden. Gebraucht bei Ctrl-L (etwas hat an uns vorbei geschrieben) und nach einer Größenänderung (das Terminal hat den Scrollback neu umbrochen).

Source
render

Baut die Live-Region und zeichnet sie. Öffentlich aus demselben Grund.

Source
state
Source
status

Wie die Statuszeile aussieht, entscheidet die App — hier steht nur, dass es eine gibt und dass sie nie weggekürzt wird.

Source
status=(status : Proc(Int32, Text::StyledLine) | Nil)

Wie die Statuszeile aussieht, entscheidet die App — hier steht nur, dass es eine gibt und dass sie nie weggekürzt wird.

Source
surface
Source

Nested types