]> git.gir.st - VimFx.git/blob - documentation/options.md
Merge branch 'master' into develop
[VimFx.git] / documentation / options.md
1 <!--
2 This is part of the VimFx documentation.
3 Copyright Simon Lydell 2015.
4 See the file README.md for copying conditions.
5 -->
6
7 # Options
8
9 VimFx has many options that can be configured, but they all have nice defaults
10 so you shouldn’t need to.
11
12 You might also be interested in [styling] VimFx and writing a [config file].
13
14 [styling]: styling.md
15 [config file]: config-file.md
16
17
18 ## Regular options
19
20 These options are available in VimFx’s settings page in the Add-ons Manager
21 (where you can also customize all [keyboard shortcuts]).
22
23 [keyboard shortcuts]: shortcuts.md
24
25 ### Hint chars
26
27 The characters used for the hints in Hints mode, which can be entered using one
28 of the many `f` commands. See also [The `f` commands].
29
30 [The `f` commands]: commands.md#the-f-commands-1
31
32 ### Previous/Next page patterns
33
34 Space separated lists of patterns that match links to the previous/next page.
35 Used by the `[` and `]` commands. Example:
36
37 *example.com* http://example.org/editor/*
38
39 There is a standardized way for websites to tell browsers the URLs to the
40 previous and next page. VimFx looks for that information in the first place.
41 Unfortunately, many websites don’t provide this information. Then VimFx falls
42 back on looking for links on the page that seem to go to the previous/next page
43 using patterns.
44
45 The patterns are matched at the beginning and end of link text (and the
46 attributes defined by the advanced setting [`pattern_attrs`]). The patterns do
47 not match in the middle of words, so “previous” does not match “previously”.
48 The matching is case <strong>in</strong>sensitive.
49
50 Actually, the patterns are regular expressions. If you do not know what a
51 regular expression is, that’s fine. You can type simple patterns like the
52 default ones without problems. If you do know what it is, though, you have the
53 possibility to create more advanced patterns if needed.
54
55 Some of the default patterns are English words. You might want to add
56 alternatives in your own language.
57
58 Note: If you need to include a space in your pattern, use `\s`. For example:
59 `next\spage`.
60
61 [`pattern_attrs`]: #pattern_attrs
62
63 ### Blacklist
64
65 Space separated list of URLs where VimFx should automatically enter Ignore mode.
66
67 Note that the URLs in the list must match the current URL _entirely_ for it to
68 apply. Therefore it is easiest to always use the `*` wildcard (which matches
69 zero or more characters).
70
71 (Set the option to `*` to make VimFx start out in Ignore mode _everywhere._)
72
73 You might also want to read about the [Ignore mode `<s-f1>` command][s-f1].
74
75 [s-f1]: commands.md#ignore-mode-s-f1
76
77 ### Prevent autofocus
78
79 Many sites autofocus their search box, for example. This might be annoying when
80 browsing using the keyboard, as you do with VimFx, because it often feels like
81 VimFx isn’t responding, until you realize that you are typing in a text box—not
82 running VimFx commands!
83
84 For this reason VimFx can prevent autofocus. It’s not enabled by default,
85 though, since one of VimFx’s key features is to be nice to your browser and your
86 habits.
87
88 If enabled, all focusing that occurs on page load, or after you’ve just switched
89 back to a tab from another, until you interact with the page is prevented.
90
91 #### Technical notes and trivia
92
93 Autofocus on page load and when coming back to a tab are the two most common
94 cases. Some sites, though, automatically focus a text input in other cases as
95 well. Trying to catch those cases as well, VimFx used to prevent all focusing
96 that didn’t occur within a fixed number of milliseconds after your last
97 interaction (click or keypress). However, this proved to be too aggressive,
98 preventing too much focusing. In other words, the time-based check was not
99 sufficent to distinguish between inteded focusing and automatic unwanted
100 focusing. It made things worse more than it helped. Since these cases are so
101 difficult (if not impossible) to detect, it is better to leave them. Thankfully
102 they are not very common.
103
104 On page load or when coming back to a tab, before you have interacted with the
105 page in any way, we can be _sure_ that any focusing is automatic (not caused by
106 you), which makes it safe to prevent all focusing in those time spans.
107
108 ### Ignore keyboard layout
109
110 If you use more than one keyboard layout, you probably want to enable this
111 option.
112
113 People who use a keyboard layout _without_ the letters A–Z usually also use the
114 standard en-US QWERTY layout as well.
115
116 This option makes VimFx ignore your current layout and pretend that the standard
117 en-US QWERTY layout is _always_ used. This way the default shortcuts work even
118 if your layout doesn’t contain the letters A–Z and all shorcuts can be typed by
119 the same physical keys on your keyboard regardless of your current keyboard
120 layout.
121
122 (If you’d like VimFx to pretend that some other keyboard layout than the
123 standard en-US QWERTY is always used, you may do so with the special option
124 [`translations`].)
125
126 [`translations`]: #translations
127
128 ### Timeout
129
130 The maximum amount of time (in milliseconds) that may pass between two
131 keypresses of a shortcut.
132
133 It’s easy to press, say, `a` by mistake while browsing. Without a timeout, you
134 might be surprised that all search results are highlighted when you a bit later
135 try to search using the `/` command. (That’s what `a/` does.) _With_ a timeout,
136 the `a` would be cancelled when the timeout has passed.
137
138
139 ## Advanced options
140
141 These options are _not_ available in VimFx’s settings page in the Add-ons
142 Manager. They can only be changed in [about:config] or using the [public API].
143 They all start with `extensions.VimFx.`.
144
145 (There are actually a few more advanced options than those listed here. You can
146 see them all in [defaults.coffee].)
147
148 [about:config]: http://kb.mozillazine.org/About:config
149 [public API]: api.md
150 [defaults.coffee]: ../extension/lib/defaults.coffee
151
152 ### `notifications_enabled`
153
154 Controls whether [notifications] should be shown or not.
155
156 You can also choose to show notifications any way you want by listening for the
157 [the `notification` and `hideNotification` events][notification-events].
158
159 [notifications]: notifications.md
160 [notification-events]: api.md#the-notification-and-hidenotification-events
161
162 ### `notify_entered_keys`
163
164 If enabled, a [notification] is shown with the the keys you have entered so far
165 of a command. This is only noticeable if you type a multi-key shortcut or use a
166 count.
167
168 [notification]: notifications.md
169
170 ### `prevent_target_blank`
171
172 You might have noticed that some links open in new tabs when you click them.
173 That is not the case if you “click” them using VimFx’s `f` command, though. If
174 you dislike that, disable this option.
175
176 ### `ignore_ctrl_alt`
177
178 This option is enabled by default on Windows, and disabled otherwise.
179
180 If enabled, ignores ctrl+alt for printable keys. `<a-c-$>` becomes `$` and
181 `<a-c-A>` becomes `A`, while `<a-c-enter>` stays the same.
182
183 This option is suitable on Windows, which treats [AltGr as
184 ctrl+alt][wikipedia-altgr]. For example, if a user of the sv-SE layout on
185 Windows holds AltGr and presses the key labeled `4`, in order to produce a `$`,
186 the result would be `<a-c-$>` without this option, making it impossible to
187 trigger a keyboard shortcut containing `$`. _With_ this option the result is
188 `$`, as expected (and as on GNU/Linux). On the other hand it won’t be possible
189 to trigger keyboard shortcuts such as `<a-c-a>`, but ctrl+alt keyboard shortcuts
190 are [discouraged on Windows][wikipedia-altgr] anyway because of this reason.
191
192 [wikipedia-altgr]: https://en.wikipedia.org/wiki/AltGr_key#Control_.2B_Alt_as_a_substitute
193
194 ### `prevent_autofocus_modes`
195
196 Space separated list of modes where `prevent_autofocus` should be used.
197
198 ### `hints_timeout`
199
200 The number of milliseconds a matched hint marker should stay on screen before
201 disappearing (or resetting).
202
203 ### Scrolling prefs
204
205 Apart from its own prefs, VimFx also respects a few built-in Firefox prefs.
206
207 #### Smooth scrolling
208
209 If you want to customize Firefox’s smooth scrolling, adjusting
210 `general.smoothScroll.{lines,pages,other}.duration{Min,Max}MS` is the way to
211 go. VimFx has similar prefs for the scrolling commands, but they work like
212 `layout.css.scroll-behavior.spring-constant`.
213
214 Basically, the higher the value, the faster the scrolling.
215
216 These are VimFx’s variants, and the commands they affect:
217
218 - `smoothScroll.lines.spring-constant`: `h`, `l`, `j`, `k`
219 - `smoothScroll.pages.spring-constant`: `d`, `u`, `<space>`, `<s-space>`
220 - `smoothScroll.other.spring-constant`: `gg`, `G`, `0`, `^`, `$`
221
222 Note that the value of these prefs are _strings,_ not numbers!
223
224 The Firefox pref `general.smoothScroll` lets you turn off smooth scrolling
225 entirely, including all of VimFx’s scrolling commands.
226
227 `general.smoothScroll.lines`, `general.smoothScroll.pages`, and
228 `general.smoothScroll.other` lets you selectively disable smooth scrolling.
229 VimFx’s scrolling commands follow the same “lines,” “pages” and “other”
230 categorization as in the above list.
231
232 #### Scroll step
233
234 By default you can scroll using the arrow keys in Firefox. You can control how
235 much they scroll by adjusting the following prefs:
236
237 - `toolkit.scrollbox.horizontalScrollDistance`: `<left>`, `<right>`, `h`, `l`
238 - `toolkit.scrollbox.verticalScrollDistance`: `<down>`, `<up>`, `j`, `k`
239
240 (VimFx used to have a `scroll_step` pref, but is has been replaced by the
241 above.)
242
243 #### `scroll.full_page_adjustment` and `scroll.half_page_adjustment`
244
245 An important use case for scrolling a full page down is to read an entire page
246 (a window-full) of text, press `<space>` and then continue reading the next
247 page. However, if you can only see, say, _half_ of the height the last line,
248 pressing `<space>` would give you the other half, but reading only the top or
249 bottom parts of letters is difficult. Even if the lines happen to line up with
250 the window edge to not be sliced horizontally, it might feel disorienting
251 pressing `<space>`.
252
253 For this reason, both VimFx and Firefox by default scroll _about a line less
254 than a whole page_ when pressing `<space>`. This solves the sliced-last-line
255 problem, and provides some context on where you are in the text you’re reading.
256
257 These two prefs control how many pixels “about a line” actually means for the
258 different page scrolling commands.
259
260 - `scroll.full_page_adjustment`: `<space>, `<s-space>`
261 - `scroll.half_page_adjustment`: `d`, `u`
262
263 #### `scroll.last_position_mark`
264
265 The special mark for the [`` ` ``][scroll-to-mark] command that takes you to the
266 last position.
267
268 [scroll-to-mark]: commands.md#marks-m-and-
269
270 ### `pattern_selector`
271
272 A CSS selector that targets candidates for a previous/next page link.
273
274 ### `pattern_attrs`
275
276 A space-separated list of attributes that the previous/next page patterns should
277 be matched against.
278
279 ### `hints_toggle_in_tab`
280
281 If the keypress that matched a hint starts with this string, toggle whether to
282 open the matched link in the current tab or a new tab. See [The `f` commands]
283 for more information.
284
285 ### `hints_toggle_in_background`
286
287 If the keypress that matched a hint starts with this string, open the matched
288 link in a new tab and toggle whether to open that tab in the background or
289 foreground. See [The `f` commands] for more information.
290
291 ### `activatable_element_keys`
292
293 Keys that should not trigger VimFx commands but be sent through to the page if
294 an “activatable” element (link or button) is focused.
295
296 ### `adjustable_element_keys`
297
298 Keys that should not trigger VimFx commands but be sent through to the page if
299 an “adjustable” element (form control or video player) is focused.
300
301 ### `focus_previous_key` and `focus_next_key`
302
303 The default values are `<s-tab` and `<tab>`, respectively. Those keys are
304 specially handled after focusing a text input using [`gi`]. To disable this
305 special handling, set the prefs to the empty string.
306
307 [`gi`]: commands.md#gi-1
308
309
310 ## Special options
311
312 These options are available in neither VimFx’s settings page in the Add-ons
313 Manager nor in [about:config]. The only way to change them is by using the
314 [public API].
315
316 ### `translations`
317
318 See the description of the `translations` option in [vim-like-key-notation].
319
320 [vim-like-key-notation]: https://github.com/lydell/vim-like-key-notation#api
321
322 ### `categories`
323
324 See the documentation for [`vimfx.get('categories')`][categories].
325
326 [categories]: api.md#vimfxgetcategories
Imprint / Impressum