im_beginning_of_line is a function meant to be used when in insert/input
mode. It should be functionnally equivalent to readline's
beginning-of-line. It moves the cursor to the beginning of the line.
im_backward_kill_word is a function meant to be used when in
insert/input mode. It should be functionnally equivalent to readline's
kill-word. It removes the word before the cursor.
im_kill_word is a function meant to be used when in insert/input
mode. It should be functionnally equivalent to readline's
kill-word. It deletes every character from the cursor to the end of the
word.
im_kill_whole_line is a function meant to be used when in insert/input
mode. It should be functionnally equivalent to readline's
kill-whole-line. It removes every character of a line, including the
newline character.
im_backward_kill_line is a function meant to be used when in
insert/input mode. It should be functionnally equivalent to readline's
backward-kill-line. It removes every character from the beginning of the
line up to the cursor. If the cursor is at the beginning of the line, it
removes the newline before the cursor.
im_kill_line is a function meant to be used when in insert/input
mode. It should be functionnally equivalent to readline's
kill-line. It deletes every character from the cursor to the end of a
line, merging lines if the character right after the cursor is a
newline.
im_{upcase,downcase,capitalize}_word are functions meant to be used when
in insert/input mode. They should be equivalent to their readline
counterparts.
im_transpose_words is a function meant to be used when in insert/input
mode. It should be functionnally equivalent to readline's
transpose-words. It transposes the word the cursor is in (or, if the
cursor is not in a word, the word before it) with the next word (or the
previous word if the word to transpose is the last word of the text).
The notion of word is defined by the "wordpattern" setting, which is a
regex that matches every character that a word can contain. The default
pattern is [^\s], which means a word can be any character except
whitespace. Other useful patterns could be [^\s/] or
[^\s?,.;:/!()\[\]\\{}"'`+=].
im_transpose_chars is a function meant to be used when in insert/input
mode. It should be functionnally equivalent to readline's
transpose-chars. It transposes the character before the cursor with the
one after it and then moves the cursor one character to the right.
im_tab_insert is a function meant to be used when in insert/input mode.
It should be functionnally equivalent to readline's tab-insert. It
behaves like the <Tab> key.
im_delete_backward__char is a function meant to be used when in
insert/input mode. It should be functionnally equivalent to readline's
delete-backward-char. It behaves like the <BackSpace> key.
im_delete_char is a function meant to be used when in insert/input mode.
It should be functionnally equivalent to readline's delete-char. It
behaves like the <Del> key.
This commit moves url-specific config from its own object to a field in
the existing global user config, as suggested in
https://github.com/tridactyl/tridactyl/pull/999#issuecomment-420616758
This makes url-specific config play nicer with existing config
manipulation tools (e.g. :viewconfig).
`editor()` didn't return anything useful. This partially fixes#1005 by
letting users create commands to automatically delete a the temporary
file after `editor()` finishes.
a0ac1a2 upgraded Tridactyl's dependencies and webpack suddenly started
minifying the files it builds. This makes debugging much harder and thus
needs to be prevented. This is done by setting "mode" to "development"
in the module.exports object in webpack.config.js.
This PR implements site-specific settings. It requires multiple changes
and new features.
First, I needed to create a new value in `window.tri` named
`contentLocation`. This contentLocation object is either a Location or
URL object containing the URL of the currently selected tab of the
currently selected window. This is required because config.get() is not
asynchronous and we probably want to keep it that way, thus we can't
message the content script just to get the current url.
Then, we create a new object, URLCONFIGS, in content.ts. It behaves
exactly the same as USERCONFIG, except it has a level of indirection,
matching url patterns to config objects. This requires creating new
seturl, geturl and unseturl functions which behave mostly the same as
set, get and unset.
Last, we create a `seturl` ex command in order to interact with this new
object.
Using numbers instead of strings made things complicated when dealing
with logging (:set was more complex, :get returned a number instead of a
string...). This commit fixes this.
Note that this commit removes validation for logging levels. This means
that users can now set erroneous logging levels. Fixing this will
require better type info generation in the compiler and will happen in
another commit.