]> git.gir.st - VimFx.git/log
VimFx.git
8 years agoMerge branch 'master' into develop
Simon Lydell [Sun, 22 Nov 2015 12:27:23 +0000 (13:27 +0100)]
Merge branch 'master' into develop

Conflicts:
  documentation/config-file.md

8 years agoVimFx v0.7.3 v0.7.3
Simon Lydell [Sun, 22 Nov 2015 12:18:42 +0000 (13:18 +0100)]
VimFx v0.7.3

8 years agoMention "Share your config file" wiki page in the docs
Simon Lydell [Sun, 22 Nov 2015 12:08:28 +0000 (13:08 +0100)]
Mention "Share your config file" wiki page in the docs

8 years agoFix hints mode not exiting when focusing text input
Simon Lydell [Sun, 22 Nov 2015 11:26:14 +0000 (12:26 +0100)]
Fix hints mode not exiting when focusing text input

`marker.type` (which is `undefined`) was used instead of `marker.wrapper.type`
when checking if it is `'text'`. This caused for example `af` not to exit hints
mode when typing the hint for a text input.

8 years agoImprove largest scrollable element detection
Simon Lydell [Sun, 22 Nov 2015 10:03:59 +0000 (11:03 +0100)]
Improve largest scrollable element detection

In commit f405054c a special case was added for the root element:

> Consider the entire page as largest if scrollable
>
> Its area may technically be less than other elements, but if it is scrollable
> that's what you expect to scroll.

However, if you embed such a page in a frame, the page won’t be scrollable
(because it is not the uppermost root element).

This made me realize that it makes the most sense to consider the _uppermost
scrollable element_ the largest. In other words, if a scrollable element
contains another scrollable element (or a frame containing one), the parent
should be considered largest even if the child has greater area.

8 years agoFix being unable to scroll in quirks mode
Simon Lydell [Sun, 22 Nov 2015 08:57:31 +0000 (09:57 +0100)]
Fix being unable to scroll in quirks mode

Alternatively:

Handle quirks mode in a better and more abstracted way.

In quirks mode, `<html>` might receive an 'overflow' event, but it is `<body>`
that is scrollable (and it does _not_ receive an 'overflow' event!) The
`ScrollableElements` class now automatically takes care of this case, storing
`<body>` instead if you try to store `<html>` in quirks mode. This way, only
actually scrollable elements are stored, which makes comparisons such as
`isScrollable` work without having to think about quirks mode. Previously, the
`isScrollable` check in the 'overflow' event handler failed on `<html>` in
quirks mode, making it impossible to scroll on quirky sites, such as Hackernews.

Fixes #621.

8 years agoAllow to customize which elements do and don't get hints
Simon Lydell [Sat, 21 Nov 2015 23:13:02 +0000 (00:13 +0100)]
Allow to customize which elements do and don't get hints

Fixes #565.

8 years agoUpdate release instructions in tools.md
Simon Lydell [Sat, 21 Nov 2015 14:58:47 +0000 (15:58 +0100)]
Update release instructions in tools.md

8 years agoRemove wrong content type for chrome.manifest in config-file.md
Simon Lydell [Sat, 21 Nov 2015 14:09:04 +0000 (15:09 +0100)]
Remove wrong content type for chrome.manifest in config-file.md

8 years agoAdd missing space in style.css
Simon Lydell [Sat, 21 Nov 2015 13:40:38 +0000 (14:40 +0100)]
Add missing space in style.css

8 years agoVimFx v0.7.2 v0.7.2
Simon Lydell [Sat, 21 Nov 2015 13:03:00 +0000 (14:03 +0100)]
VimFx v0.7.2

8 years agoFix text input focus problems since commit a197a16
Simon Lydell [Sat, 21 Nov 2015 12:57:04 +0000 (13:57 +0100)]
Fix text input focus problems since commit a197a16

Since that commit, and only in non-multi-process, when focusing a text input for
a second time it got styled as focused, but no blinking text caret appeared. You
could still type into the text input, though.

8 years agoVimFx v0.7.1 v0.7.1
Simon Lydell [Sat, 21 Nov 2015 10:59:39 +0000 (11:59 +0100)]
VimFx v0.7.1

8 years agoFix typo in tools.md
Simon Lydell [Sat, 21 Nov 2015 10:57:59 +0000 (11:57 +0100)]
Fix typo in tools.md

8 years agoImprove state resetting when a frame changes
Simon Lydell [Sat, 21 Nov 2015 10:54:37 +0000 (11:54 +0100)]
Improve state resetting when a frame changes

8 years agoImprove scrollable element detection when zoomed
Simon Lydell [Sat, 21 Nov 2015 10:22:26 +0000 (11:22 +0100)]
Improve scrollable element detection when zoomed

Elements may overflow when zooming in or out. However, the `.scrollHeight` of
the element is not correctly updated when the 'overflow' event occurs, making it
possible for unscrollable elements to slip in. An example is Google Groups.
There, the entire page gets an 'overflow' event when zooming, and by then it
actually looks to be scrollable. When inspecting the element afterwards, though,
it becomes clear that it is not. Well, actually, then it looks like the element
is scrollable by 1px. So this commit also sets a minimum scroll to 5px.

The solution to the zoom problem is to check if the largest scrollable element
really is scrollable before trying to scroll it. If not, update it.

See #605.

8 years agoVimFx v0.7.0 v0.7.0
Simon Lydell [Thu, 19 Nov 2015 17:45:57 +0000 (18:45 +0100)]
VimFx v0.7.0

8 years agoMerge branch 'master' into develop
Simon Lydell [Wed, 18 Nov 2015 20:34:56 +0000 (21:34 +0100)]
Merge branch 'master' into develop

8 years agoFix scrolling issues on Gmail
Simon Lydell [Wed, 18 Nov 2015 19:45:54 +0000 (20:45 +0100)]
Fix scrolling issues on Gmail

8 years agoSimplify scrollable element rejection
Simon Lydell [Wed, 18 Nov 2015 18:11:02 +0000 (19:11 +0100)]
Simplify scrollable element rejection

One 'pagehide' event is fired for every removed frame, starting with the most
deeply nested one, so there's no need to do a deep containment check for
scrollable elements.

8 years agoMerge branch 'master' into develop
Simon Lydell [Wed, 18 Nov 2015 14:49:01 +0000 (15:49 +0100)]
Merge branch 'master' into develop

Conflicts:
extension/lib/utils.coffee

8 years agoMerge pull request #616 from akhodakivskiy/button-show-focus-type
Simon Lydell [Wed, 18 Nov 2015 14:44:50 +0000 (15:44 +0100)]
Merge pull request #616 from akhodakivskiy/button-show-focus-type

Make the button grey in "Insert mode"

8 years agoMake the button grey in "Insert mode"
Simon Lydell [Mon, 16 Nov 2015 22:38:43 +0000 (23:38 +0100)]
Make the button grey in "Insert mode"

See #608.

8 years agoConsider the entire page as largest if scrollable
Simon Lydell [Wed, 18 Nov 2015 14:12:14 +0000 (15:12 +0100)]
Consider the entire page as largest if scrollable

Its area may technically be less than other elements, but if it is scrollable
that's what you expect to scroll.

8 years agoEnhance `overflow` check for scrollable elements
Simon Lydell [Wed, 18 Nov 2015 13:54:20 +0000 (14:54 +0100)]
Enhance `overflow` check for scrollable elements

Checking the computed style for `overflow` proved to be a bit reliable.
Explicitly checking both `overflow-x` and `overflow-y` works better. If both are
set to `hidden` the element is not scrollable.

8 years agoFix state being lost on some pages
Simon Lydell [Tue, 17 Nov 2015 08:36:53 +0000 (09:36 +0100)]
Fix state being lost on some pages

... especially the largest scrollable element, usually `<html>`.

Since commit 87ece2ac we use the 'readystatechange' to detect location change in
a tab. While that seems to work fine, resetting state at that point does not.
Apparently, at least on some sites, a 'readystatechange' with `readyState ==
'interative'` is fired _after_ `<html>` has been detected as a scrollable
element, causing that scrollable element to be lost (because of a state reset).
If another scrollable element is detected after that, scrolling the entire page
becomes impossible.

Luckily, the 'pagehide' event seems to be exactly what we're looking for, when
it comes to resetting state. It also has the bonus of firing in frames, removing
the need for the `MutationObserver`s for frames added in commit ef5e2366.

<https://developer.mozilla.org/en-US/Firefox/Releases/1.5/Using_Firefox_1.5_caching#pagehide_event>

8 years agoFix broken notifications
Simon Lydell [Mon, 16 Nov 2015 20:54:21 +0000 (21:54 +0100)]
Fix broken notifications

I got it wrong in commit 340584c8 and believed that only one `<statuspanel>` was
needed per window, but one is actually needed for every _tab._ Luckily, the code
became a lot simpler.

8 years agoMerge pull request #603 from lydell/rework-gi-tab
Simon Lydell [Mon, 16 Nov 2015 19:17:53 +0000 (20:17 +0100)]
Merge pull request #603 from lydell/rework-gi-tab

Rework `gi` handling of `<tab>`

8 years agoMerge pull request #615 from akhodakivskiy/rework-notifications
Simon Lydell [Mon, 16 Nov 2015 19:16:42 +0000 (20:16 +0100)]
Merge pull request #615 from akhodakivskiy/rework-notifications

Rework how notifications are shown

8 years agoRework how notifications are shown
Simon Lydell [Wed, 11 Nov 2015 17:03:40 +0000 (18:03 +0100)]
Rework how notifications are shown

Users found `new Notification(message)` too intrusive. This commit shows
notifications in a `<statuspanel>` instead, like the "URL popup" (shown when
hovering or focusing links), but on the opposite side.

When pressing `n` or `N` and the search matches a link, the URL popup is shown.
Putting the VimFx notification on the opposite side allows both to be visible at
the same time.

Notifications are shown until you click them, press a key or switch tab.

See #576.

8 years agoProperly exit "`gi` mode"
Simon Lydell [Thu, 12 Nov 2015 18:55:08 +0000 (19:55 +0100)]
Properly exit "`gi` mode"

Before, if you pressed `gi`, blurred the text input and then focused a text
input (without using Hints mode, such as using `<tab>` or clicking), you would
still be in "`gi` mode", making `<tab>` only cycle between text inputs.

8 years agoRework `gi` handling of `<tab>`
Simon Lydell [Thu, 12 Nov 2015 08:31:08 +0000 (09:31 +0100)]
Rework `gi` handling of `<tab>`

The "Focus previous/next element" commands turned out to be too intrusive. This
commit removes them, and instead handles `<tab>` and `<s-tab>` especially. Those
keys are handled:

- _only_ in web page content.
- _only_ if in "`gi` mode".
- always "late", taking `event.defaultPrevented` into account.
- not if `<tab>` or `<s-tab>` was part of a command shortcut.

This commit removes some (theoretical) flexibility in order to stay true to our
goal not to interfere with the browser.

See #571, #572 and #599.

8 years agoUse `vim.state` instead of `storage` in frame commands
Simon Lydell [Thu, 12 Nov 2015 07:56:17 +0000 (08:56 +0100)]
Use `vim.state` instead of `storage` in frame commands

- The things that were stored in `storage` should be reset when browsing to a
  new page.
- Makes things simpler.

8 years agoFix not being able to type in `<select>`s
Simon Lydell [Mon, 16 Nov 2015 17:21:29 +0000 (18:21 +0100)]
Fix not being able to type in `<select>`s

Typing in a `<select>` should select the matching `<option>`. Regression since
commit 7b187a90.

8 years agoFix special keys applying to every shortcut of a command
Simon Lydell [Mon, 16 Nov 2015 17:15:07 +0000 (18:15 +0100)]
Fix special keys applying to every shortcut of a command

... instead of only to the shortcut in question.

Fixes #614.

8 years agoMerge branch 'master' into develop
Simon Lydell [Sun, 15 Nov 2015 19:48:04 +0000 (20:48 +0100)]
Merge branch 'master' into develop

Conflicts:
extension/lib/commands.coffee

8 years agoEnable the `braces_spacing` coffeelint rule
Simon Lydell [Sun, 15 Nov 2015 19:29:56 +0000 (20:29 +0100)]
Enable the `braces_spacing` coffeelint rule

The more lint rules enabled, the easier to collaborate.

Thank god for regex substitutions.

8 years agoIncrease the `max_line_length` rule to error
Simon Lydell [Sun, 15 Nov 2015 19:08:36 +0000 (20:08 +0100)]
Increase the `max_line_length` rule to error

8 years agoEnable the `missing_fat_arrow` coffeelint rule
Simon Lydell [Sun, 15 Nov 2015 19:06:57 +0000 (20:06 +0100)]
Enable the `missing_fat_arrow` coffeelint rule

To prevent mistakes like the one fixed in commit 5d2a01bf5.

8 years agoFix error in the 'underflow' event
Simon Lydell [Sun, 15 Nov 2015 19:02:39 +0000 (20:02 +0100)]
Fix error in the 'underflow' event

8 years agoSimplify `utils.removeDuplicates`
Simon Lydell [Sun, 15 Nov 2015 17:57:57 +0000 (18:57 +0100)]
Simplify `utils.removeDuplicates`

8 years agoMake `gi` find text inputs in all frames
Simon Lydell [Sun, 15 Nov 2015 17:55:26 +0000 (18:55 +0100)]
Make `gi` find text inputs in all frames

8 years agoFix nothing happening when clicking some buttons
Simon Lydell [Sun, 15 Nov 2015 01:50:51 +0000 (02:50 +0100)]
Fix nothing happening when clicking some buttons

... using `f`. This was broken by commit 7b69d5f6.

8 years agoFix missing hints for links with floated children
Simon Lydell [Sun, 15 Nov 2015 01:19:38 +0000 (02:19 +0100)]
Fix missing hints for links with floated children

Previously, we used `nsIDOMWindowUtils#nodesFromRect()` to get markable element
candidates, because of its speed. However, it turned out that that method does
not return elements with zero area, such as links with floated children. That
caused those links to not get a hint.

This commit switches back to `document.getElementsByTagName('*')`. Due to some
reordering of element filtering there seems to be no difference in performance!

Fixes #584.

8 years agoMake Facebook's comment fields focusable using `f`
Simon Lydell [Sun, 15 Nov 2015 00:18:21 +0000 (01:18 +0100)]
Make Facebook's comment fields focusable using `f`

Fixes #524.

8 years agoFix un-blurrable comment fields on Facebook
Simon Lydell [Sun, 15 Nov 2015 00:04:10 +0000 (01:04 +0100)]
Fix un-blurrable comment fields on Facebook

We used to only blur focusable elements (`.tabIndex > -1`) to "interfere with
the browser as little as possible." However, this made it impossible to blur
Facebook's comment fields. _Not_ being able to blur things is what interferes.

Fixes #604.

8 years agoImprove count and wrap semantics for tab select/move
Simon Lydell [Sat, 14 Nov 2015 23:18:10 +0000 (00:18 +0100)]
Improve count and wrap semantics for tab select/move

When using one of `J`, `K`, `gJ` and `gK` with a count, you usually don't want
to wrap around the tab bar, in case you counted too large a number. Then it's
less confusing what happened if it stops at the edge of the tab bar. This is how
it already works.

However, if you're at one of the ends of the tab bar and cannot move in the
chosen direction, there is no reason to forbid a count. Before this commit we
did, making the command a no-op. Now it is allowed. As an example, you can
select the second to last tab by pressing `2J` if you're currently on the first
tab.

The commands only wrap _once._ In other words, if you're on the first of five
tabs, pressing `6J` takes you back to the first tab (five moves), discarding the
last move instead of wrapping again to the last tab. This is useful if you count
too large a number.

See #578.

8 years agoHandle {,non-}pinned tabs separately in `gJ` and `gK`
Simon Lydell [Sat, 14 Nov 2015 22:42:22 +0000 (23:42 +0100)]
Handle {,non-}pinned tabs separately in `gJ` and `gK`

Previously, it was possible to move a non-pinned tab into the pinned tabs,
making it pinned, and to move a pinnned tab into the non-pinned tabs, making it
non-pinned.

Now, that's not the case anymore. The first non-pinned tab wraps to the last
tab, and the last tab wraps to the first non-pinned tab, and vice versa for
pinned tabs.

In other words, you can no longer use `gJ` and `gK` to change the pinned state
of a tab. Only `gp` can.

See #606.

8 years agoFix issues with scrolling and frames
Simon Lydell [Sat, 14 Nov 2015 20:28:34 +0000 (21:28 +0100)]
Fix issues with scrolling and frames

Since commit 4958beb3b we use `MutationObserver`s to keep
`vim.state.scrollableElements` up-to-date when scrollable elements are removed.
However, there are two more ways elements can be removed if the are located
inside a frame:

- If the whole frame is removed.
- If the `src` attribute of the frame is changed.

This caused "TypeError: can't access dead object" errors on gmail.com.

This commit takes care of those two frame cases as well.

See #605.

8 years agoRemove `utils.timeIt(fn)`
Simon Lydell [Sat, 14 Nov 2015 16:04:02 +0000 (17:04 +0100)]
Remove `utils.timeIt(fn)`

It required `fn` to be synchronous. Since the multi-process support, very little
is anymore, making it easier to add `console.time('foo')` and
`console.timeEnd('foo')` where needed.

8 years agoAdd count support to `g0`, `g^` and `g$` like Vimium
Simon Lydell [Sat, 14 Nov 2015 15:48:14 +0000 (16:48 +0100)]
Add count support to `g0`, `g^` and `g$` like Vimium

See #610.

8 years agoFix problem with counts and shortcut including `0`
Simon Lydell [Sat, 14 Nov 2015 15:49:05 +0000 (16:49 +0100)]
Fix problem with counts and shortcut including `0`

For instance, `5g0` didn't trigger the `g0` command. This was broken in commit
e552942c.

8 years agoFix lint errors
Simon Lydell [Sat, 14 Nov 2015 15:21:06 +0000 (16:21 +0100)]
Fix lint errors

8 years agoFix quirks after dragging tab to another window
Simon Lydell [Sat, 14 Nov 2015 15:05:57 +0000 (16:05 +0100)]
Fix quirks after dragging tab to another window

The quirks only happened in multi-process, where a new `vim` instance is not
instantiated for the dragged tab. We already update `.browser` and `.window`.
However, all frame script listeners were still using the message manager of the
old `<browser>`, making the `vim` instance miss out on its frame script
messages. For example, this caused the blacklist not to apply when reloading the
page in a tab dragged to another window. This commit adds the listeners for the
new `<browser>` as well.

8 years agoDon't lose state when loading tabs in the background
Simon Lydell [Sat, 14 Nov 2015 14:20:40 +0000 (15:20 +0100)]
Don't lose state when loading tabs in the background

'locationChange' used to be detected in a rather complicated fashion. While this
worked mostly it had problems with tabs loading in the background.
'locationChange' wouldn't fire until the a background tab was _selected,_
causing any state, such as scrollable elements, collected up to that point to be
lost. It also meant that the blacklist patterns were applied to late, which
could cause unwanted autofocus prevention, for example.

Using the 'readystatechange' inside frame scripts seems to do exactly what we
want. This commit switches to that technique, which also simplifies the code a
lot, removing many slightly hacky parts.

See #605.

8 years agoFix error in api.md
Simon Lydell [Sat, 14 Nov 2015 13:45:10 +0000 (14:45 +0100)]
Fix error in api.md

8 years agoStyle hints for scrollable elements differently
Simon Lydell [Sat, 14 Nov 2015 12:57:23 +0000 (13:57 +0100)]
Style hints for scrollable elements differently

Making it easier to understand which hints are for scrollable elements.

See #605.

8 years agoAllow to style markers based on the type of element
Simon Lydell [Sat, 14 Nov 2015 12:05:34 +0000 (13:05 +0100)]
Allow to style markers based on the type of element

... by adding `[data-type="scrollable"]` etc. to them.

See #605.

8 years agoKeep the largest scrollable element up-to-date
Simon Lydell [Sat, 14 Nov 2015 11:52:50 +0000 (12:52 +0100)]
Keep the largest scrollable element up-to-date

We used to not try to find a new largest scrollable element if the currently
largest scrollable element underflowed (stopped being scrollable), because it
was considered "unlikely". That might be true for "classic static" web pages,
but it is not for JavaScript-heavy sites, such as groups.google.com, which may
replace most of the DOM at any time. Therefore, we now _do_ try to find a new
largest scrollable element when the old stops being scrollable.

The above required changing the storage for the scrollable elements from a
`WeakSet` to a `Set`, in order to be able to enumerate the set. The reason
`WeakSet` was used before was to avoid memory leaks. However, that should not be
a problem, because we now remove elements removed from the DOM from the set,
because of the next paragraph. Also, all state is wiped when the page is left.

Unfortunately, the 'underflow' event is not fired for scrollable elements
removed from the DOM. Therefore that is tracked separately using
`MutationObserver`s.

See #605.

8 years agoChoose which element to scroll more wisely
Simon Lydell [Sat, 14 Nov 2015 10:40:38 +0000 (11:40 +0100)]
Choose which element to scroll more wisely

'overflow' events _are_ triggered for `<html>`, if it overflows. This means that
there is no need to try to detect if `<html>` is scrollable in `commands.scroll`
using `.scrollHeight` and `.clientHeight`; we can simply use
`vim.state.largestScrollableElement`.

The above is not only a code cleanup; it also fixes a bug, mentioned in #605:

On some sites (such as groups.google.com), `<html>` might overflow, but not be
scrollable because of `overflow: hidden;`. The old `.scrollHeight` vs.
`.clientHeight` technique did not catch this, and wrongly tried to scroll
`<html>` when there was a more appropriate scrollable element on the page.
`overflow: hidden;` _is_ taken care of for `vim.state.scrollableElements` and
`vim.state.largestScrollableElement`, though, fixing the problem.

This clears the confusion from commit 59cb2a9a:

> Revert "Remove unnecessary code in commands.follow{,_focus}"
>
> This reverts commit 1a77a5d62036ee0d6029b36ee3c2ef33355b0d85.
>
> Apparently, I must be wrong. I get a hint marker for the entire page (if it is
> scrollable) after this commit. So confused now.

As noted above, `<html>` (`document.documentElement`) _does_ get 'overflow'
events, and thus ends up in `vim.state.scrollableElements`, so we _should_
exclude `document.documentElement` from getting a marker. There is no need to
deal with quirks mode here, though. In quirks mode, `<body>` is considered the
root element and must be scrolled instead of `<html>`, but 'overflow' events are
still triggered for `<html>`, and _not_ for `<body>`.

8 years agoRevert "Remove unnecessary code in commands.follow{,_focus}"
Simon Lydell [Thu, 12 Nov 2015 21:46:22 +0000 (22:46 +0100)]
Revert "Remove unnecessary code in commands.follow{,_focus}"

This reverts commit 1a77a5d62036ee0d6029b36ee3c2ef33355b0d85.

Apparently, I must be wrong. I get a hint marker for the entire page (if it is
scrollable) after this commit. So confused now.

8 years agoDon't stay in "`gi` mode" if only one text input
Simon Lydell [Thu, 12 Nov 2015 19:00:23 +0000 (20:00 +0100)]
Don't stay in "`gi` mode" if only one text input

8 years agoDon't consider `<select>`s as text inputs for `gi`
Simon Lydell [Thu, 12 Nov 2015 19:00:23 +0000 (20:00 +0100)]
Don't consider `<select>`s as text inputs for `gi`

8 years agoRemove unnecessary code in commands.follow{,_focus}
Simon Lydell [Thu, 12 Nov 2015 17:21:23 +0000 (18:21 +0100)]
Remove unnecessary code in commands.follow{,_focus}

`document.documentElement` never emits an 'overflow' event even if it is
scrollable, and will thus never exist in `vim.state.scrollableElements`.

8 years agoFix prev/next patterns order not respected
Simon Lydell [Thu, 12 Nov 2015 07:10:54 +0000 (08:10 +0100)]
Fix prev/next patterns order not respected

Fixes #602.

8 years agoAdd missing word in options.md
Simon Lydell [Wed, 11 Nov 2015 19:57:00 +0000 (20:57 +0100)]
Add missing word in options.md

8 years agoUpdate scroll documentation
Simon Lydell [Wed, 11 Nov 2015 19:55:00 +0000 (20:55 +0100)]
Update scroll documentation

8 years agoPrepare for Tab Groups being removed from Firefox
Simon Lydell [Wed, 11 Nov 2015 17:36:23 +0000 (18:36 +0100)]
Prepare for Tab Groups being removed from Firefox

- Make sure that nothing crashes if `window.TabView` ceases to exist.
- Add TODO comments reminding to remove unnecessary when it is time.

<https://support.mozilla.org/kb/tab-groups-removal>

8 years agoVimFx v0.6.2 v0.6.2
Simon Lydell [Wed, 11 Nov 2015 16:50:45 +0000 (17:50 +0100)]
VimFx v0.6.2

8 years agoFix `P` compatibility with InstandFox
Simon Lydell [Wed, 11 Nov 2015 15:36:29 +0000 (16:36 +0100)]
Fix `P` compatibility with InstandFox

Fixes #595.

8 years agoFix commands not working on slowly-loading pages
Simon Lydell [Wed, 11 Nov 2015 11:48:33 +0000 (12:48 +0100)]
Fix commands not working on slowly-loading pages

This was broken in commit b50f5ea5.

See #588.

8 years agoConsistently use 2-space indentation in style.css
Simon Lydell [Wed, 11 Nov 2015 11:05:24 +0000 (12:05 +0100)]
Consistently use 2-space indentation in style.css

8 years agoDon't give the same hint to all `<a href="#?">`
Simon Lydell [Wed, 11 Nov 2015 10:46:31 +0000 (11:46 +0100)]
Don't give the same hint to all `<a href="#?">`

Fixes #596.

Many websites use `<a href="#">` instead of `<button>`. Apparently, some also
use `<a href="#?">`.

8 years agoFix toolbar button icon size in high dpi
Simon Lydell [Wed, 11 Nov 2015 09:56:37 +0000 (10:56 +0100)]
Fix toolbar button icon size in high dpi

Fixes #591.

8 years agoAdd an example to prev/next page patterns docs
Simon Lydell [Wed, 11 Nov 2015 08:54:58 +0000 (09:54 +0100)]
Add an example to prev/next page patterns docs

8 years agoEnhance scrolling when entire page isn't scrollable
Simon Lydell [Wed, 11 Nov 2015 07:23:09 +0000 (08:23 +0100)]
Enhance scrolling when entire page isn't scrollable

... by scrolling the largest scrollable element instead.

Fixes #585.

8 years agoFix hint markers placement when using Zoom text only
Simon Lydell [Wed, 11 Nov 2015 07:04:26 +0000 (08:04 +0100)]
Fix hint markers placement when using Zoom text only

Fixes #594.

8 years agoAllow to use numbers as shortcuts, overriding counts
Simon Lydell [Wed, 11 Nov 2015 06:51:49 +0000 (07:51 +0100)]
Allow to use numbers as shortcuts, overriding counts

... properly handling the special-case for `0`:

- `0J` is _not_ a count, because a count of zero makes no sense. It first
  invokes the `0` command, and then the `J` command.
- `20J` _is_ a count, repeating twenty times. In other words, pressing `2` and
  then `0` does _not_ run the `0` command (scroll to the far left) with a count
  of two. Instead, it sets the waiting count to twenty.

Fixes #587.

8 years agoImprove formatting of `<li>`s in `gulp {changelog,readme}`
Simon Lydell [Tue, 10 Nov 2015 19:37:46 +0000 (20:37 +0100)]
Improve formatting of `<li>`s in `gulp {changelog,readme}`

8 years agoDocument `gulp --silent`
Simon Lydell [Tue, 10 Nov 2015 19:26:09 +0000 (20:26 +0100)]
Document `gulp --silent`

8 years agoVimFx v0.6.1 v0.6.1
Simon Lydell [Tue, 10 Nov 2015 19:12:59 +0000 (20:12 +0100)]
VimFx v0.6.1

8 years agoFix `<tab>` behavior in browser UI
Simon Lydell [Tue, 10 Nov 2015 19:06:04 +0000 (20:06 +0100)]
Fix `<tab>` behavior in browser UI

Fixes #571. Also see #572, which suggested the method used in this commit.

8 years agoAdd migration to add `<force>` to `mode.normal.esc`
Simon Lydell [Tue, 10 Nov 2015 18:27:20 +0000 (19:27 +0100)]
Add migration to add `<force>` to `mode.normal.esc`

We already migrate old shortcut customizations to the new 0.6.0 format. However,
I forgot that if the user had customized the shortcut for the esc command, it
most likely needs `<force>` at the beginning as well.

This commit adds `<force>` to every shortcut for that command (if needed).
Ideally this should have been done already in the 0.6.0 release. Now we run the
tiny risk of adding `<force>` to a shortcut that the user actually intended not
to have `<force>` in, but it's worth it: See #577, #571, #582 and #583.

8 years agoAdd an advanced option to disable notifications
Simon Lydell [Tue, 10 Nov 2015 06:31:05 +0000 (07:31 +0100)]
Add an advanced option to disable notifications

Fixes #576.

8 years agoAdd a question to question-and-answers.md
Simon Lydell [Fri, 23 Oct 2015 14:28:38 +0000 (16:28 +0200)]
Add a question to question-and-answers.md

8 years agoReset `text-shadow` for the help dialog
Simon Lydell [Mon, 9 Nov 2015 22:23:41 +0000 (23:23 +0100)]
Reset `text-shadow` for the help dialog

The dialog may inherit it from light-weight themes, making it almost unreadable.

See also commit 238dc6c.

8 years agoReset `text-shadow` for hint markers
Simon Lydell [Mon, 9 Nov 2015 22:04:38 +0000 (23:04 +0100)]
Reset `text-shadow` for hint markers

They may inherit it from light-weight themes, making them almost unreadable.

Fixes #574.

8 years agoUse consistent casing for all pref titles in en-US
Simon Lydell [Mon, 9 Nov 2015 19:53:07 +0000 (20:53 +0100)]
Use consistent casing for all pref titles in en-US

See #571.

8 years agoMake `gulp readme` and `gulp changelg` AMO compatible
Simon Lydell [Mon, 9 Nov 2015 19:09:41 +0000 (20:09 +0100)]
Make `gulp readme` and `gulp changelg` AMO compatible

AMO only allows a small subset of HTML, and converts newlines to `<br>`. This
commit makes the mentioned commands output such text.

8 years agoVimFx v0.6.0 v0.6.0
Simon Lydell [Mon, 9 Nov 2015 18:15:12 +0000 (19:15 +0100)]
VimFx v0.6.0

8 years agoSilence AMO `Function` warnings
Simon Lydell [Mon, 9 Nov 2015 18:01:39 +0000 (19:01 +0100)]
Silence AMO `Function` warnings

The AMO validator thinks that if `Function` appears anywhere, it is a type of
`eval`. However, we use it to access `Function.prototype.call`. This commit
replaces the `Function` occurances with other methods in order to silence those
warnings.

8 years agoFix invalid Firefox maximum version
Simon Lydell [Mon, 9 Nov 2015 17:53:12 +0000 (18:53 +0100)]
Fix invalid Firefox maximum version

The version has to be one of those listed here:

https://addons.mozilla.org/en-US/firefox/pages/appversions/

Commit c1bc315c tried to simplify the compatible Firefox version management by
using `*` as the maximum version. However, that is not allowed when uploading to
AMO.

8 years agoFix invalid Firefox minimum version
Simon Lydell [Mon, 9 Nov 2015 17:43:39 +0000 (18:43 +0100)]
Fix invalid Firefox minimum version

The version has to be one of those listed here:

https://addons.mozilla.org/en-US/firefox/pages/appversions/

Apparently, `40` is invalid, while `40.0` is valid.

8 years agoFix error in `gulp release`
Simon Lydell [Mon, 9 Nov 2015 07:52:59 +0000 (08:52 +0100)]
Fix error in `gulp release`

One shouldn't _both_ return a stream (thanks to CoffeeScript's implicit returns)
_and_ call the callback.

8 years agoUpdate API stability note
Simon Lydell [Mon, 9 Nov 2015 07:27:33 +0000 (08:27 +0100)]
Update API stability note

8 years agoUpdate CONTRIBUTING-CODE.md
Simon Lydell [Mon, 9 Nov 2015 06:50:05 +0000 (07:50 +0100)]
Update CONTRIBUTING-CODE.md

Update information about master vs. develop and versioning.

8 years agoPoint links in readme to master rather than develop
Simon Lydell [Mon, 9 Nov 2015 06:40:49 +0000 (07:40 +0100)]
Point links in readme to master rather than develop

8 years agoTiny code cleanup
Simon Lydell [Mon, 9 Nov 2015 06:38:14 +0000 (07:38 +0100)]
Tiny code cleanup

8 years agoAdd missing `return`s after `for` loops
Simon Lydell [Mon, 9 Nov 2015 06:33:08 +0000 (07:33 +0100)]
Add missing `return`s after `for` loops

8 years agoFix mailing list link error in readme
Simon Lydell [Sat, 7 Nov 2015 18:22:03 +0000 (19:22 +0100)]
Fix mailing list link error in readme

Imprint / Impressum