I’m working on a small app that manipulates text while it’s being edited. My issue is that whenever I update text in the Ace editor .value param, all the text gets highlighted.
Based on the the API, Ace provides a gotoLine method that let’s you move the cursor to the specified row/column. Unfortunately, I couldn’t figure out how to run this method from Panel. Any tips would be extremely appreciated.
Minimal example app that replaces any instances of ‘foo’ with ‘bar’ every three seconds:
import panel as pn
import param
class Editor(param.Parameterized):
def __init__(self, **kwrgs):
self.editor = pn.widgets.Ace()
self.cb = pn.state.add_periodic_callback(self.update_editor, period=3000)
super().__init__(**kwrgs)
def update_editor(self):
s = self.editor.value
s = "bar".join(s.split("foo"))
self.editor.value = s
def view(self):
template = pn.template.FastListTemplate(
site="FooEditor",
title="v1",
main=[
pn.Column(self.editor),
],
main_max_width="768px",
)
return template
def get_editor():
editor = Editor()
return editor.view()
# Start server
pn.serve(get_editor, port=9999, websocket_origin="*", verbose=True)