| Age | Commit message (Collapse) | Author | 
|---|
|  | It is common for link-hint markers to be close togother, and
overlapping.
Here, `<Space>` rotates hint markers such that hidden markers become
visible.
For filtered hints we additionally require a modifier (because `<space>`
on its own is already a token separator).
The calculation of overlapping hints is quite expensive: O(n^2) in the
best case and O(n^3) in the worst cast.  The worst case is
extraordinarily unlikely to arise in practice. | 
|  | Previously, we had two different approaches.  This seems like a simpler
approach.
We simply cache the Vimium CSS in chrome.storage.local (in the
background page) and fetch it from there (in UI components).
There is also a minor change in the we no longer cache the CSS in
memory.  This seems to be the right thing to do.  Caching the CSS in
memory consumes a small amount of memory.  However, it can only speed up
the fastest loads.  It cannot speed up the first load -- which is likely
the one that matters most.  So caching the CSS in memory seems to make
little sense. | 
|  | Problems:
  - The meanings of some of the Mode/handlerStack constant names is far
    from obvious.
  - The same thing is named different things in different places.
This changes various constant names such that:
  - the names used in the handler stack and in the modes are the same.
  - ditto vis-a-vis DomUtils.
Also, break out the core of the handler stacks' `bubbleEvent` method
into a switch statements.  This makes it more obvious that the cases are
mutually exclusive. | 
|  | This uses image data (instead of a path) for the page icon.  It also
only builds 19x19 and 38x38 icons, as per the
chrome.browserAction.setIcon() documentation.
This appears to fix a memory leak related to a recent Chrome regression
(versions 49+).
Fixes #2055. | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | Some of this code is showing its age, so these are just a number of
minor tweaks (to keep things clear, consistent and concise).
Also, add a couple of tests (while we're at it). | 
|  | The intention is to use this to clean up some of the initialisation
sequences in the front end. | 
|  |  | 
|  |  | 
|  |  | 
|  | ... and fix two bugs:
- not suppressing keyup event after keyChar matched in keydown.
- we cannot check the passKeys keyChar in keyup because the key state
  has changed; so we track what the next keyup response should be. | 
|  | The styles guide says not to use standalone `@`.  So this changes the
occurrences I could find (with sed) to `this`.  Occurrences within files
with major outstanding PRs are omitted. | 
|  |  | 
|  |  | 
|  | Certain background-page utilities are actually shared, and are therefore
best placed in place that reflects that.
Here, tabRecency is moved to the new gb_utils.coffee in preparation for
implementing a go-to-previous-tab command.  In particular, it is no
longer appropriate that tabRecency be embedded within the completion
code.
logMessage() from main.coffee is also a candidate for moving to
bg_utils.coffee. | 
|  | This tweaks @mrmr1993's logging ideas discussed in #1629:
- Do not generate log entries from the logging page itself.
- Use the logger for *all* logging (including from `commands.coffee`, and from `bgLog`).
@mrmr1993's original idea is 91fb337c9d92f6291ef42c55c4d29ca35b710203. | 
|  | The fix for Chromium issue 483000 landed in this version, so it is no
longer necessary for #1611 | 
|  |  | 
|  | This prevents issues like #1731 and is an (better) alternative to #1732. | 
|  | (@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. | 
|  |  | 
|  | This is a minor re-working of #1705 from @mrmr1993.
The main changes are:
   - Simplify initialisation logic.
   - Always initialise Settings immediately and automatically (ie. don't
     initialise Settings separately and manually in the background,
     content scripts, options and tests).
   - Get rid of addEventListener (it's only being used for on "load").
   - Add Settings.use() in its place. | 
|  | The Settings object used by the background page now uses 1 of 3 caches,
depending on the context it is available in:
* localStorage - in the background page
* a copy of localStorage - in non-background extension pages
  (options.html, popup.html, etc.)
* an empty object - in all other pages (where localStorage doesn't point
  to the extension's localStorage object).
For any extension page which is *not* the background page, a copy of
localStorage is used instead of true localStorage:
* Once localStorage is updated by one background page, the others can
  only see the updated copy.
  - Pages with an updated cache can't tell which changes are new, and so
    don't know which postUpdateHooks to run.
* By copying localStorage's contents into a new object, extension pages
  can still access settings synchronously.
  - This is especially important to options.html and popup.html; they
    will not work without it. | 
|  |  | 
|  |  | 
|  | This completely decouples settings.coffee from all other background
source files, so that it can (eventually) also be used in the frontend. | 
|  | This stops Sync from being referred to from anywhere except
settings.coffee and settings_test.coffee. | 
|  |  | 
|  |  | 
|  | Conflicts:
	background_scripts/completion.coffee | 
|  |  | 
|  | A custom search engine like this...
i: https://www.google.ie/search?q=%s&num=30&newwindow=1&biw=1918&bih=1015&tbm=isch Google image search
Should not match a URL like this...
https://www.google.ie/search?q=bbc+sport | 
|  | If the input is "w ", the user is going for something like "w query
terms" (a custom search engine).
So the domain completer should not offer completions if the user has
finished the first word. | 
|  |  | 
|  | This revamps how search-engine configuration is handled, and revises
some rather strange legacy code. | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | Fixed as per @mrmr1993's comment here:
https://github.com/philc/vimium/commit/1a1b8ec05aaca867261a3556317697d8cdaf7b6c | 
|  | This is @mrmr9393's suggestion from #1636. It mimic's Chrome's behaviour
when a javascript: URI is enetered into the omnibox (or clicked).
Fixes #1611. | 
|  |  | 
|  | The name "SearchEngineCompleter" is more appropriate for completions
actually delivered by a search engine.  Also, what was
SearchEngineCompleter is usually referred to as "custom search engines"
elsewhere. | 
|  |  | 
|  |  | 
|  |  |