https://github.com/tridactyl/tridactyl/issues/1345 describes a problem
where completion computation fails and fills the command line with an
error message.
This commit doesn't make the underlying problem disappear but prevents
Tridactyl from spamming the command line.
https://github.com/tridactyl/tridactyl/issues/1099 happened because of a
misconfigured $XDG_DATA_DIR. This could have been caught by checking
that the manifest and the messenger actually exist. This commit adds
these checks.
Closes#1099.
There were two problems: first, the format string used by terminator and
termite was wrong: tuicmd was appended after "%f", which resulted in
tridactyl telling the emulator to execute the file rather than the
tuicmd.
The second issue was that, as mentionned in
https://github.com/tridactyl/tridactyl/issues/1346, `-u` was missing
from terminator's options.
Before this commit, the following steps caused a completion option to be
wrongly inserted in the command line: `:h -e<Tab><Backspace>a<Space>`.
This commit fixes that by making sure that the completion sources forget
the selected completion option on changes.
In some cases, you might need to call isVisible on a text node. These
nodes don't have their own getClientRects method. It makes sense to
check the parent node's getClientRects method instead since its
visibility impacts its child node's.
https://github.com/tridactyl/tridactyl/issues/1329 describes a bug that
can be triggered with the following key presses:
:t<ArrowUp><ArrowDown><Backspace>w<ArrowUp>
This results in the commandline being filled with a command starting
with `t` rather than `w`. This is caused by not updating the
HISTORY_SEARCH_STRING variable on changes and is fixed by always
resetting it if the previous command did not call history().
Closes#1329.
These flags are -a, -b, -e, -s and can be used to help Tridactyl know
what it should jump to in case of conflicts (e.g. when there's an `h`
binding and an `h` alias).
The `sleep` command was added a long time ago to avoid race conditions
because tabprev didn't return a promise. Since tabprev now always
returns a promise which is resolved once a new tab is selected, it is
safe to remove the `sleep` call. This makes `D` feel smoother.
Tested on both a fast and a slow computer with high load.
https://github.com/tridactyl/tridactyl/issues/1295 reports that
sometimes, completions won't be offered for excmds even though they
should. This happened because of the following steps:
- A letter is pressed, triggering an "input" event which schedules
completion computation
- <Space> is pressed, which doesn't trigger an "input" event since it's
bound to an excmd. However, the excmd itself refreshes completions.
- The computation scheduled by the "input" event is run with the
previous exstr, even though it isn't up to date anymore.
This is fixed by replacing all the complicated timeoutId checking with
exstr checking, which makes a lot more sense, is simpler and all around
better.
Closes#1295.
Loadreplace will make openInTab() replace the current url in history if
possible. This is useful for winopen and tabopen as this will remove
Tridactyl's newtab page from history.
setsearchkeyword has been deprecated for a while now and it was the last
place where forceURI was used.
It doesn't make sense to keep forceURI because using it for its intended
purpose (opening new tabs/windows) would make Tridactyl inconsistent:
while openInTab() is able to use Firefox's search engines, forceURI
isn't and search engine usage can't be added to forceURI due to API
mismatches.