aboutsummaryrefslogtreecommitdiffstats
path: root/content_scripts/mode_find.coffee
AgeCommit message (Collapse)Author
2017-08-18Check whether events are trusted before executing listenersmrmr1993
2017-04-18Use event.code to detect/suppress keyup events.Stephen Blott
This avoids the possibility of leaking keyup events if the keys a released in a different order from that in which they were pressed. Also, replace suppressKeyupAfterEscape with this same mechanism. This fixes a bug (in master/1.59) whereby we leak the keyup event for `i` when entering insert mode. TODO: - `/`, `<Escape>` leaks a keyup event - `i` leaks a keyup event
2017-04-17Clarify postFindFocus and obviously separate it from the try..catchmrmr1993
2017-04-16Rework FindMode HUD refocusing to not depend directly on the HUDmrmr1993
2017-04-16Catch errors thrown by window.find when it wraps/fails on FFmrmr1993
This does NOT fix wrapping, only catches errors
2016-10-15enterNormalMode; new command - implementationStephen Blott
Here's the problem... Many sites define their own keyboard shortcuts, for example Google Play Music defines `gh` for "go home". On such sites, it's natural to set up pass keys for `g` and `h`. But that makes any Vimium key bindings which begin with `g` inaccessible. Here, we add a new command `enterNormalMode` which installs a new normal-mode instance (without any pass keys). This executes a single normal-mode command then exits. Example: map \ enterNormalMode map | enterNormalMode count=999999 Assuming `g` and `o` are pass keys: - `gh` or `o` - use the page's binding - `\gg` - scroll to top - `2\ggo` - scroll to the top and open the Vomnibar - `\g<Escape>o` - open the Vomnibar - `\<Escape>o` - use the page's bindings - `\\\\\\<Escape>o` - use the page's bindings (new normal-mode instances displace previous ones) This required some changes to the scroller. Previously, we only ever had one normal-mode instance, and could arrange statically that the scroller's key listeners were above normal-mode's key listeners in the handler stack. Here, we fix this by adding and removing the scroller's listeners dynamically, so they're always at the top of the handler stack.
2016-10-01Fix find-mode hangs.Stephen Blott
"/" followed immediately by "i" can hang Vimium. The problem is that launching find mode is asynchronous (we wait until the HUD is available). Because normal mode is still active, we can enter insert mode *before* the find-mode HUD receives the focus. The result is that we end up in both find mode and insert mode, the HUD has the focus, but the HUD is in insert mode, so it ignores keyboard events (including `Escape`). The only way out is to click the page's body and then type `Escape`. This commit demonstrates the problem: 7d2b00411eae3293fa4c7b1f61b384c0c495b5a2. This happens in practice, for example while a busy page is loading. This commit fixes this by ensuring that find-mode blocks keyboard events immediately (and synchronously) on launch.
2016-05-05install the real selectionchange listener after window.findgdh1995
2016-03-21Simplify singleton handling.Stephen Blott
While working on the visual-mode code, it became apparent that our current "singleton" implementation is unnecessarily complicated. This simplifies it. The keys are now required to be strings. (Previously, they could be any object; which meant we needed to gove objects an identity. All of which was complicated.)
2015-09-11Move repeated conditional FindMode code into one placemrmr1993
2015-09-11Move escaping regex special chars to its own utility functionmrmr1993
2015-06-26Fix oversight from #1693.Stephen Blott
(We need to use "this" inside this function.)
2015-06-13Clean up code after mergemrmr1993
2015-06-13Refactor duplicate code.Stephen Blott
2015-06-13Fix returnToViewport.Stephen Blott
The super-class's constructor sets @options, so we can't set it here; instead, we pass the options along.
2015-06-13Refactor findInPlace.Stephen Blott
This code belongs together, so we put it together.
2015-06-10Update rawQuery directly from FindMode.updateQuerymrmr1993
2015-06-10Integrate executeFind into FindMode as FindMode.executemrmr1993
2015-06-10Move findModeQuery to FindMode.querymrmr1993
2015-06-10Simplify executeFind by hardcoding default argumentsmrmr1993
2015-06-10Add FindMode.saveQuery to avoid addressing findModeQuery directlymrmr1993
2015-06-10Integrate functions exposed on window into FindModemrmr1993
2015-06-10Move getNextQueryFromFindModeMatches and getFindModeQuery into mode_findmrmr1993
2015-06-10Move updateFindModeQuery to FindMode.updateQuerymrmr1993
2015-06-10Move updateFindModeQuery to mode_find.coffeemrmr1993
2015-06-10Move findModeQueryHasResults to findModeQuery.hasResultsmrmr1993
2015-06-10Remove global findMode and pass new FindMode instances direct to the HUDmrmr1993
2015-06-10Move FindMode from vimium_frontend to mode_findmrmr1993
2015-04-18Mode indicator: strip all references to badges.Stephen Blott
2015-01-28Visual/edit modes: yet more minor changes.Stephen Blott
- Use a has for singletons (as it was previously), but with a distinct identity generated by Utils.getIdentity. - Fix counts not be using in a number of places.
2015-01-27Visual/edit modes: minor changes.Stephen Blott
- Minor changes. - Deactivate modes on inputs from focusInput().
2015-01-27Visual/edit modes: self code review.Stephen Blott
2015-01-18Modes; pre-merge clean up.Stephen Blott
2015-01-17Modes; yet more tweaks...Stephen Blott
- Mainly comments. - Rename chooseBadge to updateBadge (for consistency). - No badge for passkeys; also fix tests.
2015-01-16Modes; clean up.Stephen Blott
2015-01-16Modes; tweaks.Stephen Blott
2015-01-16Modes; refactoring.Stephen Blott
- refactor PostFindMode (to keep separate functionality separated).
2015-01-15Modes; yet more teaks and fiddles.Stephen Blott
2015-01-15Modes; tweaks and fiddles.Stephen Blott
2015-01-14Modes; rework PostFindMode (again).Stephen Blott
2015-01-14Modes; substantial reworking of insert mode (and friends).Stephen Blott
2015-01-13Modes; temporary commit.Stephen Blott
2015-01-13Modes; enter insert mode if the selection changes.Stephen Blott
See discussion in #1415.
2015-01-11Modes; rework debugging support.Stephen Blott
2015-01-10Modes; reinstate key blockers:Stephen Blott
- when the selection is contentEditable - in PostFindMode Restricted to printable characters.
2015-01-10Modes; revert to master's handling of #1415.Stephen Blott
The behaviour in the situations described in #1415 require more thought and discussion.
2015-01-10Modes; instrument for debugging...Stephen Blott
- Set Mode.debug to true to see mode activation/deactivation on the console. - Use Mode.log() to see a list of currently-active modes. - Use handlerStack.debugOn() to enable debugging of the handler stack.
2015-01-10Modes; more changes...Stephen Blott
- Better comments. - Strip unnecessary handlers for leaving post-find mode. - Simplify passKeys. - focusInput now re-bubbles its triggering keydown event.
2015-01-09Modes; various changes...Stephen Blott
- Refactor insert-mode constructor. - Gneralise focusInput.
2015-01-09Modes; fix click handling for all "overlay" modes.Stephen Blott
From #1413... Go here: http://jsfiddle.net/smblott/9u7geasd/ In the result window: Type /Fish (do not press enter). Click in one of the text areas. Press Esc. Type aaa - you're in insert mode. Type jk - hmm, where did they go? Type o - oops, you're also in normal mode.