Álvaro Ramírez
ob-swiftui updates
While experimenting with delegating Markdown blocks to Org babel in Emacs chatgpt-shell, I resurrected ob-swiftui. A package I had written to execute and render SwiftUI blocks in org babel.
ob-swiftui has two modes of rendering SwiftUI blocks: :results window
, which runs outside of Emacs in a native window and :results file
, which renders and saves to a file. The latter can be viewed directly from Emacs.
:results file
was a little clunky. That is, it hardcoded dimensions I had to manually modify if the canvas wasn't big enough. It was also a little slow.
The clunkyness really came through with my chatgpt-shell experiments, so I took a closer look and made a few changes to remove hardcoding and speeds things up.
The results ain't too shabby.
Another tiny improvement is that if you'd like to compose a more complex layout made of multiple custom views, ob-swiftui
now looks for a ContentView
as that root view by default. Specifying another root view was already possible but it had to be explicitly requested via :view
param.
You can now omit the :view
param if you name the root view ContentView
:
#+begin_src swiftui struct ContentView: View { var body: some View { TopView() BottomView() } } struct TopView: View { var body: some View { Text("Top text") } } struct BottomView: View { var body: some View { Text("Bottom text") } } #+end_src
The improvements have been pushed to ob-swiftui and will soon be picked up on melpa.
Edit: Added ContentView details.