Commits
- Commit:
1bcb8303e1b913df31980ca332a5619424a72b01
- From:
- Omar Polo <op@omarpolo.com>
- Date:
move load_page_from_str to telescope.c
I'd like to use parser{,_gophermap,_gemtext}.c in standalone testing
programs, and this function is getting in the way since it depends on
ui.c
- Commit:
bf5b33f40e876afe41fd486ff5d3eb182dfaf046
- From:
- Omar Polo <op@omarpolo.com>
- Date:
correctly save scrolling position
Before we didn't save the scrolling position before a refresh
(nohist=1) and that's annoying. This saves the scrolling position
only in the correct case, which is when changing from a page to
another, expect when switching to TAB_LAZY off.
- Commit:
fb8dcd1c494b0339067ca13f5bfc8ac8a1a43114
- From:
- Omar Polo <op@omarpolo.com>
- Date:
move TAB_LAZY flipping from switch_to_tab in load_url
load_url needs to know when a tab passes from lazy to not lazy to
correctly saves the scrolling position (see follow-up commit.)
- Commit:
e795e9355a607cbda3790e5c651c1a6f829e4326
- From:
- Omar Polo <op@omarpolo.com>
- Date:
save and restore scroll position
Save the offset to the first and current line of the buffers and restore
it when the page is loaded. This restores almost the exact viewport: we
save the offset of the *real* line in the document, but they get wrapped
before being displayed, so the actual restored position may be slightly
above from the original one (think of a long paragraph that gets wrapped
over multiple visual lines.) In practice, this isn't a drawback but
only an improvement over the current behaviour.
In the future we could save also the offset *inside* the line, to
restore the exact position, but that felt unnecessary for now.
Persisting the postion on the session file ensures that even when
re-opening telescope the scroll position is correct.
There are some very active pages, such as antenna or other aggregator,
where this feature doesn't really work well if you re-open the page
after a while, since new links are available, but otherwise is a god
sent!
See also github issue #1
- Commit:
52a99c568d70787741ab72597d29960acb78c738
- From:
- Omar Polo <op@omarpolo.com>
- Date:
avoid possible use after free
`url' may be a pointer to a string of the buffer which gets corrupted
upon tab_stop.
This bug shows when loadfn is load_about_url, because in
make_fs_request we first tab_stop, and then send the request, which
ends up sending to the fs process a free'd string. At least on
OpenBSD with Otto' malloc is (partially) corrupted and will either
make the fs process abort or return a not found page.
One solution may be to rework make_fs_request to process things in a
different order, but that would only hide the problem. Instead, use
the newly created history element as url given to the loadfns: that is
guaranteed to be valid up to the next load_url call.
Reported by Brian Callahan, thanks!
- Commit:
0259f38d36d8538ee723be82e20e5ccf29fcd385
- From:
- Omar Polo <op@omarpolo.com>
- Date:
simplify load_url_in_tab
- Commit:
9d65b1d9ae3209a8a2bc8e8c376dede4f71290ce
- From:
- Omar Polo <op@omarpolo.com>
- Date:
move util.c declarations in utils.h
it's not spelled `util.h' because otherwise it'd get included instead
of /usr/include/util.h
- Commit:
8f3c9af8369ac653695ca22777db99bfa1162cfe
- From:
- Omar Polo <op@omarpolo.com>
- Date:
simplify the caching API
- don't expose the evbuffer where we store the cached page
- cache to/from tabs instead of buffers
- Commit:
5df02e0d8d9027c56450c94857949b3826454369
- From:
- Omar Polo <op@omarpolo.com>
- Date:
fix start_loading_animation usage
the idiom
if (load_next_page(...))
start_loading_anim(...);
is fundamentally wrong because `load_next_page' (or previous page, or
anything else that call into load_url) *may* load all the page before
returning (thanks to the cache, but not only, cf. load_page_from_str.)
Instead, let's call start_loadign_anim at the start of make_request so
it's always called in the right moment. Cache and other special pages
don't end up calling make_request anyway, and we already call
stop_loading_anim when a request finishes (or fails.)
move start_loading_anim up in make_request.
- Commit:
ed21a9a1021f38c009ef8a0ea6049587e3b4373b
- From:
- Omar Polo <op@omarpolo.com>
- Date:
provide a way to bypass the cache
This changes the last argument of load_url to be a `mode' bitmap
instead of a boolean ``nohist''. LU_MODE_NOHIST is the old 1,
LU_MODE_NONE is provided just for readability and the new LU_MODE_NOCACHE
allows to bypass the caching when loading a page.
Telescope only uses the cache when:
- re-opens a closed tab
- navigates backward and forward in the history
All other situations result in the usual network request.
- Commit:
dc8e7bf65a6ca6deb0e7dec7ebcf22286604c321
- From:
- Omar Polo <op@omarpolo.com>
- Date:
cache only gemini:// and gopher:// pages
- Commit:
d5af38ccfe6c94218f4d7ab8d6aaf382e7dede80
- From:
- Omar Polo <op@omarpolo.com>
- Date:
add an in-memory cache store
see github issue #1
- Commit:
05de8ac36a0646bbcf74d36b25b96244ac1290ff
- From:
- Omar Polo <op@omarpolo.com>
- Date:
append killed tabs when parsing session to preserve the order
The other option, less intrusive, would be to send the killed tabs
in reverse order, but it'd seems strange when looking at the session
file otherwise. So, add a `append' flag to kill_tab to optionally
append the killed tab instead of pre-pending it.
- Commit:
6c74799d01bfb8706f1972917da936fc2eee66da
- From:
- Omar Polo <op@omarpolo.com>
- Date:
allow to re-open closed tabs
Save closed tabs to a "killed tabs" queue, for up to a max of
"max-killed-tabs", and allow to re-open them. Keep the tab history
but not its content.
This integrates nicely with the session file, just add the "killed"
flag as alias for TAB_KILLED and put it in the ktabshead queue upon
initalization. It's thus possible to re-open closed tabs even after
telescope has been closed, and tabs keeps their history!
Add a new cmd, cmd_tab_undo_close, to try to re-open the most
recently closed tab and bind it to `u'.
While here, add a TODO for the tab history memory leak.
- Commit:
eb722b5028dcd686244ecbca2ff4bfb0a29a6c68
- From:
- Omar Polo <op@omarpolo.com>
- Date:
move know_host parsing to the fs process and load the store via imsgs
Like previously did with the session file, now the main process doesn't
parse anything with the only exception being the configuration file.
With this in, the only bit from fs.h still used in the main process is
the path to the configuration file.