| Age | Commit message (Collapse) | Author | 
 | 
 | 
 | 
This allows:
   map a passNextKey
   map b passNextKey
(Previously, we only picked up the first mapping.)
 | 
 | 
Previously, key event parsing was embedded in the normal-mode key
handlers.  Here, we move it to a new function (getKeyCharString) in
KeyboardUtils so that it can also be used from elsewhere... In
particular for detecting the pass-next-key key in insertmode.
 | 
 | 
We need the key mapped to passNextKey in the front end so that we can
activate pass-next-key from within insert mode too (without the need to
consult the background page).
 | 
 | 
 | 
 | 
These migrations are at least ten months old (since release).
 | 
 | 
 | 
 | 
 | 
 | 
For Ctrl-[, also require NOT Alt
 | 
 | 
 | 
 | 
 | 
 | 
Simplify hint string generation
 | 
 | 
 | 
 | 
When we `simulateSelect` an input and the selection is at the start, we
move it to the end.  This works well for single-line inputs.  However,
the UX is *bad* for multiline inputs (such as text areas), and doubly so
if the end of the input happens to be out of the viewport.
This commit simply disables the repositioning of the selection within
text areas.
 | 
 | 
See #1906.
It is not obvious that this is in fact correct.  In particular, it's not
clear how `Ctrl-[` should work on Mac keyboards.
 | 
 | 
 | 
 | 
Suppress trailing key events (after link hints).
 | 
 | 
This ensures that -- on leaving link hints mode -- we consume any trailing keyup events (and don't let the underlying page see them).
Additional notes:
- There are other places where we seem to be leaking keyup events.
- A separate bug... It looks like we're calling `exit()` on link-hints
  mode twice.
 | 
 | 
Rework to make match counting code for searches more DRY and easier to read
 | 
 | 
 | 
 | 
 | 
 | 
The fix for Chromium issue 483000 landed in this version, so it is no
longer necessary for #1611
 | 
 | 
Search completion; add support for Qwant completion
 | 
 | 
 | 
 | 
Useful for blogs where buttons are named "older posts" and "newer posts".
 | 
 | 
 | 
 | 
Run on XML pages (version 2)
 | 
 | 
1. We're not using Clipboard in the the content scripts, so don't import it.
2. Use consistent syntax for method calls.
This commit is a no-op.
 | 
 | 
On a XML view page, createElement will create an "Element" object
Otherwise, createElement('div') will get an object
 : HTMLDivElement >> HTMLElement >> Element
 | 
 | 
oh my god
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
remove Utils.createElementFromHtml since it's not in use
 | 
 | 
This implements @gdh1995's idea from #1796.
 | 
 | 
This fixes #1770.
 | 
 | 
 | 
 | 
 | 
 | 
Revert it.
 | 
 | 
This fixes two bugs in SimpleCache.
1. Rotate the cache on the next tick.  There is a marginally small
   chance that the cache will rotate between calls to .has() and .get().
   So, we do the rotation ansynchronously.  This guarantees that these
   two functions will always see the same cache state.
2. The implementation of .clear() (which is unused, I think) has at some
   point become out of date (and incorrect) w.r.t. the implementation of
   .rotate().
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
(@mrmr1993: This is yet another approach to the Settings problem.)
With the new Settings implemetation, settings which have a non-default
value and which are not in synced storage (that is, they have not been
changed since synced storage was introduced) are not currently
accessible to content scripts.  This commit makes such settings
accessible via chrome.storage.local.
Important:
- There's a change to the established settings data model here.
  Previously, settings with default values were not stored; here, they
  are.  This eliminates a considerable amount logic from Settings, but
  means that migrations will be required if default values are changed
  in future.  (Other than type changes, have we ever changed a default
  value?)
- There's also a change (bug fix?) to the behaviour when an affected
  setting is reset to its default value.  Previously, the change would
  *not* have been synced (whereas all other changes are).  Here, such
  changes *are* synced.  The previous behaviour was inconsistent with
  the syncing behaviour of all other options changes.
Note:
- This isn't particularly well tested.  It's being committed mainly just
  for consideration of the approach, initially.
 | 
 | 
 | 
 | 
Because we haven't had a default value for this setting, we never sync
it, which means -- when its not at its default value -- it isn't picked
up in content scripts by the new settings system.
Fixes #1731.
 | 
 | 
 | 
 | 
 |