This weekend, I finnaly did something that I should have done long ago: I implemented text search for my gopher- and gemini-client ncgopher [1]. I've had this on my TODO list for ages, but in my head it was not so easy to implement. Turned out that I was totally wrong, and that it only took a couple of hours. Most of the time, I spent scratching my head over some Rust compiler errors. It's been a while that I've been written any Rust code... My aim was to provide a vim-like search where you just type '/' followed by your search query. So pressing '/' switches the status line at the bottom of the screen into an input field. You can type your search term. If you delete the term or press ESC, the input field will close and vanish. To trigger a search you press enter. (No incremental search for now, but that would be trivial to implement, just call the search function on every update). Once the search is executed, all occurrences of the search term will be highlighted and the current row is moved to the first occurrence of the search term. If no occurrences are below the current position, the first occurrence in the document will be highlighted instead (wrapping). If the search term is not found nothing happens (Should probably show a message). For navigation between search result I settled for the vim-keys n (goto next result) and N (goto previous result). It would also be easy to add backward search, but the '?'-shortcut is already taken for the help function. The 'n' key was originally used for jump-to-next-link (and 'p' for the opposite). I changed these to 'l' and 'L'. There are several ways to improve this search function: - Incremental search, maybe configurable. - Backward search. - Case-insensitive search - Highlighting of search terms is not optimal, because it's invisible on the currently selected line. - Search term history. Press '/' and arrow up to see previous search terms. The new editfield opens a lot of doors. Vim-like commands are possible now, like ':help'. Maybe ':bn' and ':bp' for switching between buffers ("tabs") would be cool. [1] http://github.com/jansc/ncgopher (DIR) Back ______________________________________________________________________________ Gophered by Gophernicus/3.0.1 on FreeBSD/amd64 12.3