| 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 | |
| Back | |
| ______________________________________________________________________________ | |
| Gophered by Gophernicus/3.0.1 on FreeBSD/arm64 14.3 |