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