Welcome!
This is the community forum for my apps Pythonista and Editorial.
For individual support questions, you can also send an email. If you have a very short question or just want to say hello — I'm @olemoritz on Twitter.
API to highlight search results in editor?
-
-
@enceladus thanks for that. I actually use that API already (for results of a style check, where line granularity is good enough).
For the word frequency I need to see the individual words in context (just like the native highlighted search results), to assess whether they need replacing.
Thank you.
-
I've been fiddling around with this, but still have had no luck.
If I start a search (using the UI) I can navigate around the results using:
import editor t = editor._get_editor_tab() v = t.editorView() v.selectFirstSearchResult() # moves forward v.highlightPrevSearchResult() # moves back
But if I try to set the search term with:
v.setSearchTerm_("text") v.applySearchTerm() v.highlightNextSearchResult()
It just moves through the original search term results.
Any thoughts or ideas would be appreciated.
Thanks
-
@emkay_online That will not help you but this line prints the search text
print(v.searchController().searchText())
-
Have you tried using on_main_thread?
-
Thanks for the on_main_thread idea - I gave it a go, but the search term didn't change and it just cycled through the old search results.
I'll keep playing with it. -
@emkay_online and @JonB Perhaps is it the same limitation as in my topic
-
@cvp that issue is due to the sandbox security limitations of the uidocumentpicker -- in this case the search bar is hosted by pythonista.
-
@JonB Ok, sorry, I said that due to the same try to set searchfield text...Bad thinking 😢
-
import editor, objc_util @objc_util.on_main_thread def setSearchTerm(txt): t=editor._get_editor_tab() v=t.editorView() v.searchController().searchView().searchBar().text=txt v.searchController().searchBar_textDidChange_(v.searchController().searchView().searchBar(),txt) def highlighNext(): t=editor._get_editor_tab() v=t.editorView() v.highlightNextSearchResult() setSearchTerm('tab')
Setting the searchbar text seems necessary.
-
@emkay_online @jonb just found this
import editor from objc_util import * t = editor._get_editor_tab() v = t.editorView() v.searchController().searchView().subviews()[0].setText_('test')
-
My example above used
v.searchController().searchView().searchBar().text=txtWhich is probably more robust than using subviews. Sorry I wasnt clear -- the above example is fully functional. (You need to also call the delegate method for the little arrows to show up)
-
@JonB That is fantastic. It took a second to realise I needed to open the search bar first, but now it works perfectly.
Thank you
ps. Sorry to only just reply, I wasn't getting alerts on your posts