Commit graph

17 commits

Author SHA1 Message Date
glacambre
b9ff5703a2
{excmds,controller}.ts: Fix race condition in state.mode synchronization
This fixes https://github.com/cmcaine/tridactyl/issues/613.
This was a really fun bug. What happened was this:
- First, the content script set state.mode to "hint", which was then
  synchronized
- The event listener in the background script noticed the update and set
  state.mode to "hint" in the background script
- Then, the content script translated the hint selection into an excmd
  that needed to be executed in the background script and sent said
  command to the controller, which lives in the background script
- The content script then set state.mode to "normal"
- The background script executed the command and saved it in
  state.last_ex_str, which was then synchronized
- The event listener in the content script noticed the update and set
  last_ex_str to the last executed str and "state.mode" to "hint"

So basically, the problem was that the background script didn't notice
the state.mode update right after it happened. I fixed this by moving
last_ex_str out of "state" since it doesn't need to be synchronized with
the content script.

This means that the same kind of race condition can still happen. I'm
not sure how to fix this. We could just kill state completely and
instead have state be updated through message passing, but this probably
wouldn't be very ergonomic.
Another solution, the one envisioned for Tridactylv2, is to move to the
content script entirely. This is probably the best option.
2018-06-05 21:13:29 +02:00
Oliver Blanthorn
4e77b65123
Add jumplist for inputs bound to g;
Currently repeated use of `g;` will only take you to the most recently
used input. Cycling through recently used inputs is a WIP.
2018-04-20 17:05:15 +01:00
Oliver Blanthorn
095ce771ea
Formatting: run all typescript through prettier 2018-04-13 19:28:03 +01:00
Oliver Blanthorn
6d8fe17069
Add nascent find mode 2018-03-18 13:11:11 +00:00
Colin Caine
53e51497e7 logging: rewrite in OOP style 2017-12-30 00:46:26 +00:00
Colin Caine
f398895dce logging: introduce convenience functions 2017-12-29 23:58:23 +00:00
glacambre
e61358b63f src/{config,controller,excmds,state}.ts: Implement dot repeat. 2017-12-06 16:31:53 +00:00
Zhong Jianxin
01221f3052 Add inputmode
- Add `focusinput -n` and `focusinput -N`
- Press `gi` to focus input and enter inputmode
- When in inputmode, `Tab` to focus input after last focussed one, `Shift+Tab`
  to focus input before last focussed one
2017-12-05 22:12:34 +00:00
D.B
0a0c31230e add gobble mode and quickmarks 2017-11-20 23:23:25 +00:00
Oliver Blanthorn
49bbcb7fc9
Add rudimentary ignore mode bound to I 2017-11-15 00:03:34 +00:00
Colin Caine
21c06d9520 exmode: share history globally
On storage.local for now.
2017-11-09 08:04:05 +00:00
Colin Caine
927e19c818 hinting: First working version
state.ts also reworked into a sexy new machine. Check it out!
2017-11-09 05:44:48 +00:00
Colin Caine
fad94a697e parsers: split into real modules
This is to fix an issue with multiple imports of typescript namespaces.
2017-11-09 05:44:47 +00:00
Colin Caine
adfca7cf69 hinting WIP: plumb to background 2017-11-09 05:44:40 +00:00
Colin Caine
8897d8929b excmds: Macro-ify excmds_background and content
excmds_background/content are now generated by python. New dependency,
python3!
2017-10-19 04:40:36 +01:00
Colin Caine
7736042ea3 src: fix tsc -d; use insert mode for inputs
The input detection is very naive at the moment. Fix soon.
2017-10-05 18:15:27 +01:00
Oliver Blanthorn
75a33eb654
Include some extra files to stop Colin whining 2017-10-05 12:24:53 +01:00