This basic (though a bit complex) Vim argument should be supported by
all variants.
Additionally, drop the superfluous %f argument in the tui_editors Vim
definitions; the gui candidates (mvim, gvim) didn't have this, and it's
not necessary; appending the filename (the default) works just fine.
In order to apply the cursor positioning for the Vim editor as
documented for 'editorcmd', define a constant to avoid duplicating the
(rather complex) argument for all of the mvim / nvim / vim / gvim
variants. The argument needs to be quoted (at least on Unix, and there
single quotes have to be used to avoid history expansion (e.g. in Bash)
triggered by the "!" character), so another platform-specific constant
(arg_quote) is needed (as Windows only supports double quotes).
Problems with the original:
- Addressing the column with "l" assumes that "G" positions the cursor on the first column. But the default behavior already skips leading indent (so is wrong when there's leading whitespace), and with ":set nostartofline", the current column actually is kept (which completely and randomly messes up the column addressing).
- ":normal" without ! is affected by mappings; users may have tweaked the "G" and "l" (or in the worst case completely changed the behavior, e.g. for use with a different keyboard layout).
This change makes the mapping immune to mappings (with ":normal!") and uses the "|" command (which uses virtual column addressing independent of the current column or "G" behavior) instead of "c".
Additionally, "zv" makes the current line visible should it be obscured by folding. (Vim may detect a filetype and automatically enable folding.)
Instead of -c <cmd>, the shorter +<cmd> form is used. This is just a cosmetic change. Using just a single argument and avoiding any whitespace within it may prevent command-line argument parsing issues.
Move some actions of vimperator hinting into a global object so that
thirdparty can customize the vimperator hinting mode by overriding
methods of the global object.
`config.parseConfigHelper()` creates cmds for set nested keys as setting
key to a dict with single value.
js tri.config.set("followpagepatterns", {"next", "onemore"})
js tri.config.set("followpagepatterns", {"prev", "oneless"})
The about lines in `tridactylrc` will have the 2nd line override the
1st.
The same happens to `subconfigs` too.
When user unbind <space> in hint mode or bind hint.pushSpace and enter
spaces in vimperator hinting mode, the user input will be split by
space. Each part of the key sequence are matched to filter hintings.
For input 'pe l', 'personal' matches while 'person' don't.
If user defined functions are added into tri.excmds, the functions can
be called throught `controller_background/content` message.
The arguments are not converted so the args will all be passed as
strings.