Commit Briefs
optimize redraw_window
don't redraw the page if no scrolling happened. There's still need to ``force'' the redraw sometimes, like after a resize or after toggling olivetti-mode, so add a buffer->force_redraw flag for it.
disentangle cmd_scroll_line_up/down and ncurses
cmd_scroll_line_up and down are the fundamental functions called every time there's a need to scroll the window. cmd_scroll_up/down calls them in a loop, cmd_next_line and cmd_previous_line calls them too. And so on. These two functions, historically predates some of the abstractions of the `struct buffer', and handle ncurses directly using wscrl and print_line. However, since dispatch_stdio calls redraw_tab anyway, there's no need to update the window content here. (Well, wscrl + one print_vline *may* be a bit faster than the loop over print_vline in redraw_window, but we can optimise the latter later.) This also (should) dis-entangle the cmd_* functions and ncurses completely \o/
move all styling to defaults.c
i.e. don't hardcode text attributes
link the parser in the build
and: * add some flags * document them * move the customizable stuff to defaults.c
remove urgent flag during switch_to_tab
when a tab is closed (C-t x 0) the previous one gets selected via switch_to_tab, but the TAB_URGENT flag is kept.
rename: s/window/buffer (but not always)
this aims to solve (albeit only partially) the confusion between telescope' ``struct window'' and ncurses WINDOW. It also brings some more emacs-like nomenclature, which may be a good thing.
rename (handle_resize) timeout -> nodelay
nodelay conveys better what the function do
fix toggle-help not drawing
After the change to debounce frequent handle_resize, the old hack wasn't working anymore.
ask to save a page when it can't be rendered
it's good for thing like images and text with weird encodings.