mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
Merge #9796 from justinmk/doc
This commit is contained in:
commit
11bf89e3b5
@ -1,4 +1,4 @@
|
|||||||
[](https://neovim.io)
|
[](https://neovim.io)
|
||||||
|
|
||||||
[Wiki](https://github.com/neovim/neovim/wiki) |
|
[Wiki](https://github.com/neovim/neovim/wiki) |
|
||||||
[Documentation](https://neovim.io/doc) |
|
[Documentation](https://neovim.io/doc) |
|
||||||
@ -26,8 +26,6 @@ Neovim is a project that seeks to aggressively refactor Vim in order to:
|
|||||||
See the [Introduction](https://github.com/neovim/neovim/wiki/Introduction) wiki page and [Roadmap]
|
See the [Introduction](https://github.com/neovim/neovim/wiki/Introduction) wiki page and [Roadmap]
|
||||||
for more information.
|
for more information.
|
||||||
|
|
||||||
[](https://waffle.io/neovim/neovim/metrics)
|
|
||||||
|
|
||||||
Features
|
Features
|
||||||
--------
|
--------
|
||||||
|
|
||||||
|
@ -251,7 +251,7 @@ of some window, or a position relative to the current window cursor. The
|
|||||||
parameters for positioning are described in detail at |nvim_open_win()|.
|
parameters for positioning are described in detail at |nvim_open_win()|.
|
||||||
|
|
||||||
|nvim_open_win()| assumes an existing buffer to display in the window. To create
|
|nvim_open_win()| assumes an existing buffer to display in the window. To create
|
||||||
a scratch buffer for the float, |nvim_create_buffer()| can be used. The text in
|
a scratch buffer for the float, |nvim_create_buf()| can be used. The text in
|
||||||
the buffer can be highlighted using standard functionality, such as syntax
|
the buffer can be highlighted using standard functionality, such as syntax
|
||||||
highlighting, or |api-highlights|.
|
highlighting, or |api-highlights|.
|
||||||
|
|
||||||
|
@ -640,8 +640,9 @@ CursorHoldI Just like CursorHold, but in Insert mode.
|
|||||||
|
|
||||||
*CursorMoved*
|
*CursorMoved*
|
||||||
CursorMoved After the cursor was moved in Normal or Visual
|
CursorMoved After the cursor was moved in Normal or Visual
|
||||||
mode. Also when the text of the cursor line
|
mode or to another window. Also when the text
|
||||||
has been changed, e.g., with "x", "rx" or "p".
|
of the cursor line has been changed, e.g. with
|
||||||
|
"x", "rx" or "p".
|
||||||
Not triggered when there is typeahead or when
|
Not triggered when there is typeahead or when
|
||||||
an operator is pending.
|
an operator is pending.
|
||||||
For an example see |match-parens|.
|
For an example see |match-parens|.
|
||||||
|
@ -939,8 +939,6 @@ This replaces each 'E' character with a euro sign. Read more in |<Char->|.
|
|||||||
this (that's a good habit anyway).
|
this (that's a good habit anyway).
|
||||||
`:retab!` may also change a sequence of spaces by
|
`:retab!` may also change a sequence of spaces by
|
||||||
<Tab> characters, which can mess up a printf().
|
<Tab> characters, which can mess up a printf().
|
||||||
Not available when |+ex_extra| feature was disabled at
|
|
||||||
compile time.
|
|
||||||
|
|
||||||
*retab-example*
|
*retab-example*
|
||||||
Example for using autocommands and ":retab" to edit a file which is stored
|
Example for using autocommands and ":retab" to edit a file which is stored
|
||||||
@ -1291,21 +1289,15 @@ The next three commands always work on whole lines.
|
|||||||
:[range]ce[nter] [width] *:ce* *:center*
|
:[range]ce[nter] [width] *:ce* *:center*
|
||||||
Center lines in [range] between [width] columns
|
Center lines in [range] between [width] columns
|
||||||
(default 'textwidth' or 80 when 'textwidth' is 0).
|
(default 'textwidth' or 80 when 'textwidth' is 0).
|
||||||
Not available when |+ex_extra| feature was disabled at
|
|
||||||
compile time.
|
|
||||||
|
|
||||||
:[range]ri[ght] [width] *:ri* *:right*
|
:[range]ri[ght] [width] *:ri* *:right*
|
||||||
Right-align lines in [range] at [width] columns
|
Right-align lines in [range] at [width] columns
|
||||||
(default 'textwidth' or 80 when 'textwidth' is 0).
|
(default 'textwidth' or 80 when 'textwidth' is 0).
|
||||||
Not available when |+ex_extra| feature was disabled at
|
|
||||||
compile time.
|
|
||||||
|
|
||||||
*:le* *:left*
|
*:le* *:left*
|
||||||
:[range]le[ft] [indent]
|
:[range]le[ft] [indent]
|
||||||
Left-align lines in [range]. Sets the indent in the
|
Left-align lines in [range]. Sets the indent in the
|
||||||
lines to [indent] (default 0).
|
lines to [indent] (default 0).
|
||||||
Not available when |+ex_extra| feature was disabled at
|
|
||||||
compile time.
|
|
||||||
|
|
||||||
*gq*
|
*gq*
|
||||||
gq{motion} Format the lines that {motion} moves over.
|
gq{motion} Format the lines that {motion} moves over.
|
||||||
|
@ -789,7 +789,6 @@ function |expand()|.
|
|||||||
#<n (where n is a number > 0) is replaced with old *:_#<* *c_#<*
|
#<n (where n is a number > 0) is replaced with old *:_#<* *c_#<*
|
||||||
file name n. See |:oldfiles| or |v:oldfiles| to get the
|
file name n. See |:oldfiles| or |v:oldfiles| to get the
|
||||||
number. *E809*
|
number. *E809*
|
||||||
{only when compiled with the |+eval| and |+shada| features}
|
|
||||||
|
|
||||||
Note that these, except "#<n", give the file name as it was typed. If an
|
Note that these, except "#<n", give the file name as it was typed. If an
|
||||||
absolute path is needed (when using the file name from a different directory),
|
absolute path is needed (when using the file name from a different directory),
|
||||||
@ -858,8 +857,6 @@ Note: these are typed literally, they are not special keys!
|
|||||||
*%:8* *%:p* *%:.* *%:~* *%:h* *%:t* *%:r* *%:e* *%:s* *%:gs* *%:S*
|
*%:8* *%:p* *%:.* *%:~* *%:h* *%:t* *%:r* *%:e* *%:s* *%:gs* *%:S*
|
||||||
The file name modifiers can be used after "%", "#", "#n", "<cfile>", "<sfile>",
|
The file name modifiers can be used after "%", "#", "#n", "<cfile>", "<sfile>",
|
||||||
"<afile>" or "<abuf>". They are also used with the |fnamemodify()| function.
|
"<afile>" or "<abuf>". They are also used with the |fnamemodify()| function.
|
||||||
These are not available when Vim has been compiled without the |+modify_fname|
|
|
||||||
feature.
|
|
||||||
These modifiers can be given, in this order:
|
These modifiers can be given, in this order:
|
||||||
:p Make file name a full path. Must be the first modifier. Also
|
:p Make file name a full path. Must be the first modifier. Also
|
||||||
changes "~/" (and "~user/" for Unix) to the path for the home
|
changes "~/" (and "~user/" for Unix) to the path for the home
|
||||||
|
@ -123,7 +123,7 @@ autoload/provider/python.vim script; the provider#python#Call function is only
|
|||||||
defined if a valid external Python host is found. That works well with the
|
defined if a valid external Python host is found. That works well with the
|
||||||
`has('python')` expression (normally used by Python plugins) because if the
|
`has('python')` expression (normally used by Python plugins) because if the
|
||||||
Python host isn't installed then the plugin will "think" it is running in
|
Python host isn't installed then the plugin will "think" it is running in
|
||||||
a Vim compiled without the |+python| feature.
|
a Vim compiled without the "+python" feature.
|
||||||
|
|
||||||
DOCUMENTATION *dev-doc*
|
DOCUMENTATION *dev-doc*
|
||||||
|
|
||||||
|
@ -32,9 +32,6 @@ An alternative is using the 'keymap' option.
|
|||||||
first character, it has a special meaning in the
|
first character, it has a special meaning in the
|
||||||
future.
|
future.
|
||||||
|
|
||||||
Vim is normally compiled with the |+digraphs| feature. If the feature is
|
|
||||||
disabled, the ":digraph" command will display an error message.
|
|
||||||
|
|
||||||
Example of the output of ":digraphs": >
|
Example of the output of ":digraphs": >
|
||||||
TH Þ 222 ss ß 223 a! à 224 a' á 225 a> â 226 a? ã 227 a: ä 228
|
TH Þ 222 ss ß 223 a! à 224 a' á 225 a> â 226 a? ã 227 a: ä 228
|
||||||
|
|
||||||
@ -53,19 +50,6 @@ conversion to be available, it might fail. For the NUL character you will see
|
|||||||
"10". That's because NUL characters are internally represented with a NL
|
"10". That's because NUL characters are internally represented with a NL
|
||||||
character. When you write the file it will become a NUL character.
|
character. When you write the file it will become a NUL character.
|
||||||
|
|
||||||
When Vim was compiled without the |+multi_byte| feature, you need to specify
|
|
||||||
the character in the encoding given with 'encoding'. You might want to use
|
|
||||||
something like this: >
|
|
||||||
|
|
||||||
if has("multi_byte")
|
|
||||||
digraph oe 339
|
|
||||||
elseif &encoding == "iso-8859-15"
|
|
||||||
digraph oe 189
|
|
||||||
endif
|
|
||||||
|
|
||||||
This defines the "oe" digraph for a character that is number 339 in Unicode
|
|
||||||
and 189 in latin9 (iso-8859-15).
|
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
2. Using digraphs *digraphs-use*
|
2. Using digraphs *digraphs-use*
|
||||||
|
|
||||||
@ -155,8 +139,7 @@ a standard meaning:
|
|||||||
Example: a: is ä and o: is ö
|
Example: a: is ä and o: is ö
|
||||||
|
|
||||||
These are the RFC1345 digraphs for the one-byte characters. See the output of
|
These are the RFC1345 digraphs for the one-byte characters. See the output of
|
||||||
":digraphs" for the others. The characters above 255 are only available when
|
":digraphs" for the others.
|
||||||
Vim was compiled with the |+multi_byte| feature.
|
|
||||||
|
|
||||||
EURO
|
EURO
|
||||||
|
|
||||||
|
@ -1170,9 +1170,8 @@ If you want to always use ":confirm", set the 'confirm' option.
|
|||||||
and |:qall| if 'confirm' is set.
|
and |:qall| if 'confirm' is set.
|
||||||
{only in Win32 GUI}
|
{only in Win32 GUI}
|
||||||
When ":browse" is not possible you get an error
|
When ":browse" is not possible you get an error
|
||||||
message. If the |+browse| feature is missing or the
|
message. If {command} doesn't support browsing, the
|
||||||
{command} doesn't support browsing, the {command} is
|
{command} is executed without a dialog.
|
||||||
executed without a dialog.
|
|
||||||
":browse set" works like |:options|.
|
":browse set" works like |:options|.
|
||||||
See also |:oldfiles| for ":browse oldfiles".
|
See also |:oldfiles| for ":browse oldfiles".
|
||||||
|
|
||||||
@ -1460,8 +1459,6 @@ problem goes away the next day.
|
|||||||
==============================================================================
|
==============================================================================
|
||||||
11. File Searching *file-searching*
|
11. File Searching *file-searching*
|
||||||
|
|
||||||
{not available when compiled without the |+path_extra| feature}
|
|
||||||
|
|
||||||
The file searching is currently used for the 'path', 'cdpath' and 'tags'
|
The file searching is currently used for the 'path', 'cdpath' and 'tags'
|
||||||
options, for |finddir()| and |findfile()|. Other commands use |wildcards|
|
options, for |finddir()| and |findfile()|. Other commands use |wildcards|
|
||||||
which is slightly different.
|
which is slightly different.
|
||||||
|
@ -8,10 +8,6 @@ Expression evaluation *expression* *expr* *E15* *eval*
|
|||||||
|
|
||||||
Using expressions is introduced in chapter 41 of the user manual |usr_41.txt|.
|
Using expressions is introduced in chapter 41 of the user manual |usr_41.txt|.
|
||||||
|
|
||||||
Note: Expression evaluation can be disabled at compile time. If this has been
|
|
||||||
done, the features in this document are not available. See |+eval| and
|
|
||||||
|no-eval-feature|.
|
|
||||||
|
|
||||||
Type |gO| to see the table of contents.
|
Type |gO| to see the table of contents.
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
@ -22,8 +18,6 @@ done, the features in this document are not available. See |+eval| and
|
|||||||
There are six types of variables:
|
There are six types of variables:
|
||||||
|
|
||||||
Number A 32 or 64 bit signed number. |expr-number| *Number*
|
Number A 32 or 64 bit signed number. |expr-number| *Number*
|
||||||
64-bit Number is available only when compiled with the
|
|
||||||
|+num64| feature.
|
|
||||||
Examples: -123 0x10 0177 0b1011
|
Examples: -123 0x10 0177 0b1011
|
||||||
|
|
||||||
Float A floating point number. |floating-point-format| *Float*
|
Float A floating point number. |floating-point-format| *Float*
|
||||||
@ -1307,8 +1301,7 @@ is deleted when the window is closed.
|
|||||||
|
|
||||||
*tabpage-variable* *t:var* *t:*
|
*tabpage-variable* *t:var* *t:*
|
||||||
A variable name that is preceded with "t:" is local to the current tab page,
|
A variable name that is preceded with "t:" is local to the current tab page,
|
||||||
It is deleted when the tab page is closed. {not available when compiled
|
It is deleted when the tab page is closed.
|
||||||
without the |+windows| feature}
|
|
||||||
|
|
||||||
*global-variable* *g:var* *g:*
|
*global-variable* *g:var* *g:*
|
||||||
Inside functions global variables are accessed with "g:". Omitting this will
|
Inside functions global variables are accessed with "g:". Omitting this will
|
||||||
@ -1745,7 +1738,6 @@ v:oldfiles List of file names that is loaded from the |shada| file on
|
|||||||
The List can be modified, but this has no effect on what is
|
The List can be modified, but this has no effect on what is
|
||||||
stored in the |shada| file later. If you use values other
|
stored in the |shada| file later. If you use values other
|
||||||
than String this will cause trouble.
|
than String this will cause trouble.
|
||||||
{only when compiled with the |+shada| feature}
|
|
||||||
|
|
||||||
*v:option_new*
|
*v:option_new*
|
||||||
v:option_new New value of the option. Valid while executing an |OptionSet|
|
v:option_new New value of the option. Valid while executing an |OptionSet|
|
||||||
@ -1896,7 +1888,6 @@ v:termresponse The escape sequence returned by the terminal for the DA
|
|||||||
is the terminal type: 0 for vt100 and 1 for vt220. Pv is the
|
is the terminal type: 0 for vt100 and 1 for vt220. Pv is the
|
||||||
patch level (since this was introduced in patch 95, it's
|
patch level (since this was introduced in patch 95, it's
|
||||||
always 95 or bigger). Pc is always zero.
|
always 95 or bigger). Pc is always zero.
|
||||||
{only when compiled with |+termresponse| feature}
|
|
||||||
|
|
||||||
*v:testing* *testing-variable*
|
*v:testing* *testing-variable*
|
||||||
v:testing Must be set before using `test_garbagecollect_now()`.
|
v:testing Must be set before using `test_garbagecollect_now()`.
|
||||||
@ -3673,8 +3664,6 @@ finddir({name} [, {path} [, {count}]]) *finddir()*
|
|||||||
{name} in {path} instead of the first one.
|
{name} in {path} instead of the first one.
|
||||||
When {count} is negative return all the matches in a |List|.
|
When {count} is negative return all the matches in a |List|.
|
||||||
This is quite similar to the ex-command |:find|.
|
This is quite similar to the ex-command |:find|.
|
||||||
{only available when compiled with the |+file_in_path|
|
|
||||||
feature}
|
|
||||||
|
|
||||||
findfile({name} [, {path} [, {count}]]) *findfile()*
|
findfile({name} [, {path} [, {count}]]) *findfile()*
|
||||||
Just like |finddir()|, but find a file instead of a directory.
|
Just like |finddir()|, but find a file instead of a directory.
|
||||||
@ -3795,7 +3784,6 @@ foldtext() Returns a String, to be displayed for a closed fold. This is
|
|||||||
When used to draw the actual foldtext, the rest of the line
|
When used to draw the actual foldtext, the rest of the line
|
||||||
will be filled with the fold char from the 'fillchars'
|
will be filled with the fold char from the 'fillchars'
|
||||||
setting.
|
setting.
|
||||||
{not available when compiled without the |+folding| feature}
|
|
||||||
|
|
||||||
foldtextresult({lnum}) *foldtextresult()*
|
foldtextresult({lnum}) *foldtextresult()*
|
||||||
Returns the text that is displayed for the closed fold at line
|
Returns the text that is displayed for the closed fold at line
|
||||||
@ -3805,7 +3793,6 @@ foldtextresult({lnum}) *foldtextresult()*
|
|||||||
{lnum} is used like with |getline()|. Thus "." is the current
|
{lnum} is used like with |getline()|. Thus "." is the current
|
||||||
line, "'m" mark m, etc.
|
line, "'m" mark m, etc.
|
||||||
Useful when exporting folded text, e.g., to HTML.
|
Useful when exporting folded text, e.g., to HTML.
|
||||||
{not available when compiled without the |+folding| feature}
|
|
||||||
|
|
||||||
*foreground()*
|
*foreground()*
|
||||||
foreground() Move the Vim window to the foreground. Useful when sent from
|
foreground() Move the Vim window to the foreground. Useful when sent from
|
||||||
@ -4683,10 +4670,49 @@ globpath({path}, {expr} [, {nosuf} [, {list} [, {allinks}]]])
|
|||||||
supported, thus using 'path' will not always work properly.
|
supported, thus using 'path' will not always work properly.
|
||||||
|
|
||||||
*has()*
|
*has()*
|
||||||
has({feature}) The result is a Number, which is 1 if the feature {feature} is
|
has({feature}) Returns 1 if {feature} is supported, 0 otherwise. The
|
||||||
supported, zero otherwise. The {feature} argument is a
|
{feature} argument is a feature name like "nvim-0.2.1" or
|
||||||
string. See |feature-list| below.
|
"win32", see below. See also |exists()|.
|
||||||
Also see |exists()|.
|
|
||||||
|
Vim's compile-time feature names (prefixed with "+") are not
|
||||||
|
supported because Nvim is always compiled with ALL possible
|
||||||
|
features. |feature-compile|
|
||||||
|
|
||||||
|
Feature names can be:
|
||||||
|
1. Nvim version. For example the "nvim-0.2.1" feature means
|
||||||
|
that Nvim is version 0.2.1 or later: >
|
||||||
|
:if has("nvim-0.2.1")
|
||||||
|
|
||||||
|
< 2. Runtime condition or other pseudo-feature. For example the
|
||||||
|
"win32" feature checks if the current system is Windows: >
|
||||||
|
:if has("win32")
|
||||||
|
< *feature-list*
|
||||||
|
List of supported pseudo-feature names:
|
||||||
|
acl |ACL| support
|
||||||
|
iconv Can use |iconv()| for conversion.
|
||||||
|
+shellslash Can use backslashes in filenames (Windows)
|
||||||
|
clipboard |clipboard| provider is available.
|
||||||
|
nvim This is Nvim.
|
||||||
|
python2 Legacy Vim |python2| interface. |has-python|
|
||||||
|
python3 Legacy Vim |python3| interface. |has-python|
|
||||||
|
pythonx Legacy Vim |python_x| interface. |has-pythonx|
|
||||||
|
ttyin input is a terminal (tty)
|
||||||
|
ttyout output is a terminal (tty)
|
||||||
|
unix Unix system.
|
||||||
|
*vim_starting* True during |startup|.
|
||||||
|
win32 Windows system (32 or 64 bit).
|
||||||
|
wsl WSL (Windows Subsystem for Linux) system
|
||||||
|
|
||||||
|
*has-patch*
|
||||||
|
3. Vim patches. The "patch123" feature means that Vim patch
|
||||||
|
123 has been included. This does not check the Vim
|
||||||
|
version, you could check |v:version| for that.
|
||||||
|
Example: >
|
||||||
|
:if v:version > 602 || v:version == 602 && has("patch148")
|
||||||
|
|
||||||
|
< 5. Vim version. For example the "patch-7.4.237" feature means
|
||||||
|
that the Vim version is 7.4.237 or later. >
|
||||||
|
:if has("patch-7.4.237")
|
||||||
|
|
||||||
|
|
||||||
has_key({dict}, {key}) *has_key()*
|
has_key({dict}, {key}) *has_key()*
|
||||||
@ -8514,154 +8540,6 @@ xor({expr}, {expr}) *xor()*
|
|||||||
<
|
<
|
||||||
|
|
||||||
|
|
||||||
*feature-list*
|
|
||||||
There are four types of features:
|
|
||||||
1. Features that are only supported when they have been enabled when Vim
|
|
||||||
was compiled |+feature-list|. Example: >
|
|
||||||
:if has("cindent")
|
|
||||||
2. Features that are only supported when certain conditions have been met.
|
|
||||||
Example: >
|
|
||||||
:if has("win32")
|
|
||||||
< *has-patch*
|
|
||||||
3. Nvim version. The "nvim-0.2.1" feature means that the Nvim version is
|
|
||||||
0.2.1 or later. Example: >
|
|
||||||
:if has("nvim-0.2.1")
|
|
||||||
<
|
|
||||||
4. Included patches. The "patch123" feature means that patch 123 has been
|
|
||||||
included. Note that this form does not check the version of Vim, you need
|
|
||||||
to inspect |v:version| for that.
|
|
||||||
Example (checking version 6.2.148 or later): >
|
|
||||||
:if v:version > 602 || v:version == 602 && has("patch148")
|
|
||||||
< Note that it's possible for patch 147 to be omitted even though 148 is
|
|
||||||
included.
|
|
||||||
|
|
||||||
5. Beyond a certain version or at a certain version and including a specific
|
|
||||||
patch. The "patch-7.4.237" feature means that the Vim version is 7.5 or
|
|
||||||
later, or it is version 7.4 and patch 237 was included.
|
|
||||||
Note that this only works for patch 7.4.237 and later, before that you
|
|
||||||
need to use the example above that checks v:version. Example: >
|
|
||||||
:if has("patch-7.4.248")
|
|
||||||
< Note that it's possible for patch 147 to be omitted even though 148 is
|
|
||||||
included.
|
|
||||||
|
|
||||||
Hint: To find out if Vim supports backslashes in a file name (MS-Windows),
|
|
||||||
use: `if exists('+shellslash')`
|
|
||||||
|
|
||||||
|
|
||||||
acl Compiled with |ACL| support.
|
|
||||||
arabic Compiled with Arabic support |Arabic|.
|
|
||||||
autocmd Compiled with autocommand support. |autocommand|
|
|
||||||
browse Compiled with |:browse| support, and browse() will
|
|
||||||
work.
|
|
||||||
browsefilter Compiled with support for |browsefilter|.
|
|
||||||
byte_offset Compiled with support for 'o' in 'statusline'
|
|
||||||
cindent Compiled with 'cindent' support.
|
|
||||||
clipboard Compiled with 'clipboard' support.
|
|
||||||
cmdline_compl Compiled with |cmdline-completion| support.
|
|
||||||
cmdline_hist Compiled with |cmdline-history| support.
|
|
||||||
cmdline_info Compiled with 'showcmd' and 'ruler' support.
|
|
||||||
comments Compiled with |'comments'| support.
|
|
||||||
cscope Compiled with |cscope| support.
|
|
||||||
debug Compiled with "DEBUG" defined.
|
|
||||||
dialog_con Compiled with console dialog support.
|
|
||||||
digraphs Compiled with support for digraphs.
|
|
||||||
eval Compiled with expression evaluation support. Always
|
|
||||||
true, of course!
|
|
||||||
ex_extra |+ex_extra|, always true now
|
|
||||||
extra_search Compiled with support for |'incsearch'| and
|
|
||||||
|'hlsearch'|
|
|
||||||
file_in_path Compiled with support for |gf| and |<cfile>|
|
|
||||||
filterpipe When 'shelltemp' is off pipes are used for shell
|
|
||||||
read/write/filter commands
|
|
||||||
find_in_path Compiled with support for include file searches
|
|
||||||
|+find_in_path|.
|
|
||||||
float Compiled with support for |Float|.
|
|
||||||
fname_case Case in file names matters (for Windows this is not
|
|
||||||
present).
|
|
||||||
folding Compiled with |folding| support.
|
|
||||||
gettext Compiled with message translation |multi-lang|
|
|
||||||
iconv Can use iconv() for conversion.
|
|
||||||
insert_expand Compiled with support for CTRL-X expansion commands in
|
|
||||||
Insert mode.
|
|
||||||
jumplist Compiled with |jumplist| support.
|
|
||||||
keymap Compiled with 'keymap' support.
|
|
||||||
lambda Compiled with |lambda| support.
|
|
||||||
langmap Compiled with 'langmap' support.
|
|
||||||
libcall Compiled with |libcall()| support.
|
|
||||||
linebreak Compiled with 'linebreak', 'breakat', 'showbreak' and
|
|
||||||
'breakindent' support.
|
|
||||||
lispindent Compiled with support for lisp indenting.
|
|
||||||
listcmds Compiled with commands for the buffer list |:files|
|
|
||||||
and the argument list |arglist|.
|
|
||||||
localmap Compiled with local mappings and abbr. |:map-local|
|
|
||||||
mac macOS version of Nvim.
|
|
||||||
menu Compiled with support for |:menu|.
|
|
||||||
mksession Compiled with support for |:mksession|.
|
|
||||||
modify_fname Compiled with file name modifiers. |filename-modifiers|
|
|
||||||
mouse Compiled with support mouse.
|
|
||||||
mouseshape Compiled with support for 'mouseshape'.
|
|
||||||
multi_byte Compiled with support for 'encoding'
|
|
||||||
multi_byte_encoding 'encoding' is set to a multi-byte encoding.
|
|
||||||
multi_lang Compiled with support for multiple languages.
|
|
||||||
num64 Compiled with 64-bit |Number| support.
|
|
||||||
nvim This is Nvim. |has-patch|
|
|
||||||
path_extra Compiled with up/downwards search in 'path' and 'tags'
|
|
||||||
persistent_undo Compiled with support for persistent undo history.
|
|
||||||
postscript Compiled with PostScript file printing.
|
|
||||||
printer Compiled with |:hardcopy| support.
|
|
||||||
profile Compiled with |:profile| support.
|
|
||||||
python Legacy Vim Python 2.x API is available. |has-python|
|
|
||||||
python3 Legacy Vim Python 3.x API is available. |has-python|
|
|
||||||
pythonx Compiled with |python_x| interface. |has-pythonx|
|
|
||||||
quickfix Compiled with |quickfix| support.
|
|
||||||
reltime Compiled with |reltime()| support.
|
|
||||||
rightleft Compiled with 'rightleft' support.
|
|
||||||
scrollbind Compiled with 'scrollbind' support.
|
|
||||||
shada Compiled with shada support.
|
|
||||||
showcmd Compiled with 'showcmd' support.
|
|
||||||
signs Compiled with |:sign| support.
|
|
||||||
smartindent Compiled with 'smartindent' support.
|
|
||||||
spell Compiled with spell checking support |spell|.
|
|
||||||
startuptime Compiled with |--startuptime| support.
|
|
||||||
statusline Compiled with support for 'statusline', 'rulerformat'
|
|
||||||
and special formats of 'titlestring' and 'iconstring'.
|
|
||||||
syntax Compiled with syntax highlighting support |syntax|.
|
|
||||||
syntax_items There are active syntax highlighting items for the
|
|
||||||
current buffer.
|
|
||||||
tablineat 'tabline' option accepts %@Func@ items.
|
|
||||||
tag_binary Compiled with binary searching in tags files
|
|
||||||
|tag-binary-search|.
|
|
||||||
tag_old_static Compiled with support for old static tags
|
|
||||||
|tag-old-static|.
|
|
||||||
tag_any_white Compiled with support for any white characters in tags
|
|
||||||
files |tag-any-white|.
|
|
||||||
termresponse Compiled with support for t_RV and |v:termresponse|.
|
|
||||||
textobjects Compiled with support for |text-objects|.
|
|
||||||
timers Compiled with |timer_start()| support.
|
|
||||||
title Compiled with window title support |'title'|.
|
|
||||||
ttyin input is a terminal (tty)
|
|
||||||
ttyout output is a terminal (tty)
|
|
||||||
unix Unix version of Vim.
|
|
||||||
unnamedplus Compiled with support for "unnamedplus" in 'clipboard'
|
|
||||||
user_commands User-defined commands.
|
|
||||||
vertsplit Compiled with vertically split windows |:vsplit|.
|
|
||||||
vim_starting True while initial source'ing takes place. |startup|
|
|
||||||
*vim_starting*
|
|
||||||
virtualedit Compiled with 'virtualedit' option.
|
|
||||||
visual Compiled with Visual mode.
|
|
||||||
visualextra Compiled with extra Visual mode commands.
|
|
||||||
|blockwise-operators|.
|
|
||||||
vreplace Compiled with |gR| and |gr| commands.
|
|
||||||
vtp Compiled for vcon support |+vtp| (check vcon to find
|
|
||||||
out if it works in the current console)).
|
|
||||||
wildignore Compiled with 'wildignore' option.
|
|
||||||
wildmenu Compiled with 'wildmenu' option.
|
|
||||||
win32 Windows version of Vim (32 or 64 bit).
|
|
||||||
winaltkeys Compiled with 'winaltkeys' option.
|
|
||||||
windows Compiled with support for more than one window.
|
|
||||||
writebackup Compiled with 'writebackup' default on.
|
|
||||||
wsl WSL (Windows Subsystem for Linux) version of Vim.
|
|
||||||
|
|
||||||
*string-match*
|
*string-match*
|
||||||
Matching a pattern in a String
|
Matching a pattern in a String
|
||||||
|
|
||||||
|
@ -740,11 +740,10 @@ You tried to set an option after startup that only allows changes during
|
|||||||
startup.
|
startup.
|
||||||
|
|
||||||
*E943* >
|
*E943* >
|
||||||
Command table needs to be updated, run 'make cmdidxs'
|
Command table needs to be updated, run 'make'
|
||||||
|
|
||||||
This can only happen when changing the source code, when adding a command in
|
This can only happen when changing the source code, after adding a command in
|
||||||
src/ex_cmds.h. The lookup table then needs to be updated, by running: >
|
src/ex_cmds.lua. Update the lookup table by re-running the build. >
|
||||||
make cmdidxs
|
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
3. Messages *messages*
|
3. Messages *messages*
|
||||||
|
@ -35,13 +35,13 @@ itself).
|
|||||||
|
|
||||||
For Python 3 plugins:
|
For Python 3 plugins:
|
||||||
1. Make sure Python 3.4+ is available in your $PATH.
|
1. Make sure Python 3.4+ is available in your $PATH.
|
||||||
2. Install the module (try "pip" if "pip3" is missing): >
|
2. Install the module (try "python" if "python3" is missing): >
|
||||||
pip3 install --user --upgrade pynvim
|
python3 -m pip install --user --upgrade pynvim
|
||||||
|
|
||||||
For Python 2 plugins:
|
For Python 2 plugins:
|
||||||
1. Make sure Python 2.7 is available in your $PATH.
|
1. Make sure Python 2.7 is available in your $PATH.
|
||||||
2. Install the module (try "pip" if "pip2" is missing): >
|
2. Install the module (try "python" if "python2" is missing): >
|
||||||
pip2 install --user --upgrade pynvim
|
python2 -m pip install --user --upgrade pynvim
|
||||||
|
|
||||||
The pip `--upgrade` flag ensures that you get the latest version even if
|
The pip `--upgrade` flag ensures that you get the latest version even if
|
||||||
a previous version was already installed.
|
a previous version was already installed.
|
||||||
@ -51,8 +51,8 @@ See also |python-virtualenv|.
|
|||||||
Note: The old "neovim" module was renamed to "pynvim".
|
Note: The old "neovim" module was renamed to "pynvim".
|
||||||
https://github.com/neovim/neovim/wiki/Following-HEAD#20181118
|
https://github.com/neovim/neovim/wiki/Following-HEAD#20181118
|
||||||
If you run into problems, uninstall _both_ then install "pynvim" again: >
|
If you run into problems, uninstall _both_ then install "pynvim" again: >
|
||||||
pip uninstall neovim pynvim
|
python -m pip uninstall neovim pynvim
|
||||||
pip install pynvim
|
python -m pip install --user --upgrade pynvim
|
||||||
|
|
||||||
|
|
||||||
PYTHON PROVIDER CONFIGURATION ~
|
PYTHON PROVIDER CONFIGURATION ~
|
||||||
|
@ -325,9 +325,13 @@ numerical highlight `id`:s to the actual attributes.
|
|||||||
indicates the visible cursor position.
|
indicates the visible cursor position.
|
||||||
|
|
||||||
["grid_scroll", grid, top, bot, left, right, rows, cols]
|
["grid_scroll", grid, top, bot, left, right, rows, cols]
|
||||||
Scroll the text in the a region of `grid`. The diagrams below illustrate
|
Scroll a region of `grid`. This is semantically unrelated to editor
|
||||||
what will happen, depending on the scroll direction. "=" is used to
|
|scrolling|, rather this is an optimized way to say "copy these screen
|
||||||
represent the SR(scroll region) boundaries and "-" the moved rectangles.
|
cells".
|
||||||
|
|
||||||
|
The following diagrams show what happens per scroll direction.
|
||||||
|
"===" represents the SR (scroll region) boundaries.
|
||||||
|
"---" represents the moved rectangles.
|
||||||
Note that dst and src share a common region.
|
Note that dst and src share a common region.
|
||||||
|
|
||||||
If `rows` is bigger than 0, move a rectangle in the SR up, this can
|
If `rows` is bigger than 0, move a rectangle in the SR up, this can
|
||||||
|
@ -286,130 +286,12 @@ g8 Print the hex values of the bytes used in the
|
|||||||
:!! Repeat last ":!{cmd}".
|
:!! Repeat last ":!{cmd}".
|
||||||
|
|
||||||
*:ve* *:version*
|
*:ve* *:version*
|
||||||
:ve[rsion] Print the version number of the editor. The following
|
:ve[rsion] Print editor version and build information.
|
||||||
lines contain information about which features were
|
See also |feature-compile|.
|
||||||
enabled when Vim was compiled. When there is a
|
|
||||||
preceding '+', the feature is included, when there is
|
|
||||||
a '-' it is excluded. To change this, you have to
|
|
||||||
edit feature.h and recompile Vim. To check for this
|
|
||||||
in an expression, see |has()|. Here is an overview of
|
|
||||||
the features. The first column shows the smallest
|
|
||||||
version in which they are included:
|
|
||||||
T tiny
|
|
||||||
S small
|
|
||||||
N normal
|
|
||||||
B big
|
|
||||||
H huge
|
|
||||||
m manually enabled or depends on other features
|
|
||||||
(none) system dependent
|
|
||||||
Thus if a feature is marked with "N", it is included
|
|
||||||
in the normal, big and huge versions of Vim.
|
|
||||||
|
|
||||||
*+feature-list*
|
:ve[rsion] {nr} Ignored. Previously used to check the version number
|
||||||
*+acl* |ACL| support included
|
of a .vimrc file. You can now use the ":if" command
|
||||||
B *+arabic* |Arabic| language support
|
for version-dependent behavior.
|
||||||
N *+autocmd* |:autocmd|, automatic commands
|
|
||||||
N *+browse* |:browse| command
|
|
||||||
N *+byte_offset* support for 'o' flag in 'statusline' option, "go"
|
|
||||||
and ":goto" commands.
|
|
||||||
N *+cindent* |'cindent'|, C indenting
|
|
||||||
N *+clientserver* Unix and Win32: Remote invocation |clientserver|
|
|
||||||
*+clipboard* |clipboard| support
|
|
||||||
N *+cmdline_compl* command line completion |cmdline-completion|
|
|
||||||
S *+cmdline_hist* command line history |cmdline-history|
|
|
||||||
N *+cmdline_info* |'showcmd'| and |'ruler'|
|
|
||||||
N *+comments* |'comments'| support
|
|
||||||
B *+conceal* "conceal" support, see |conceal| |:syn-conceal| etc.
|
|
||||||
B *+cscope* |cscope| support
|
|
||||||
m *+cursorbind* |'cursorbind'| support
|
|
||||||
m *+debug* Compiled for debugging.
|
|
||||||
N *+dialog_gui* Support for |:confirm| with GUI dialog.
|
|
||||||
N *+dialog_con* Support for |:confirm| with console dialog.
|
|
||||||
N *+dialog_con_gui* Support for |:confirm| with GUI and console dialog.
|
|
||||||
N *+digraphs* |digraphs| *E196*
|
|
||||||
N *+eval* expression evaluation |eval.txt|
|
|
||||||
N *+ex_extra* always on now, used to be for Vim's extra Ex commands
|
|
||||||
N *+extra_search* |'hlsearch'| and |'incsearch'| options.
|
|
||||||
N *+file_in_path* |gf|, |CTRL-W_f| and |<cfile>|
|
|
||||||
N *+find_in_path* include file searches: |[I|, |:isearch|,
|
|
||||||
|CTRL-W_CTRL-I|, |:checkpath|, etc.
|
|
||||||
N *+folding* |folding|
|
|
||||||
N *+gettext* message translations |multi-lang|
|
|
||||||
*+iconv* Compiled with the |iconv()| function
|
|
||||||
*+iconv/dyn* Likewise |iconv-dynamic| |/dyn|
|
|
||||||
N *+insert_expand* |insert_expand| Insert mode completion
|
|
||||||
S *+jumplist* |jumplist|
|
|
||||||
B *+keymap* |'keymap'|
|
|
||||||
N *+lambda* |lambda| and |closure|
|
|
||||||
B *+langmap* |'langmap'|
|
|
||||||
N *+libcall* |libcall()|
|
|
||||||
N *+linebreak* |'linebreak'|, |'breakat'| and |'showbreak'|
|
|
||||||
N *+lispindent* |'lisp'|
|
|
||||||
N *+listcmds* Vim commands for the list of buffers |buffer-hidden|
|
|
||||||
and argument list |:argdelete|
|
|
||||||
N *+localmap* Support for mappings local to a buffer |:map-local|
|
|
||||||
N *+menu* |:menu|
|
|
||||||
N *+mksession* |:mksession|
|
|
||||||
N *+modify_fname* |filename-modifiers|
|
|
||||||
N *+mouse* Mouse handling |mouse-using|
|
|
||||||
N *+mouseshape* |'mouseshape'|
|
|
||||||
N *+multi_byte* 16 and 32 bit characters |multibyte|
|
|
||||||
*+multi_byte_ime* Win32 input method for multibyte chars |multibyte-ime|
|
|
||||||
N *+multi_lang* non-English language support |multi-lang|
|
|
||||||
*+num64* 64-bit Number support |Number|
|
|
||||||
N *+path_extra* Up/downwards search in 'path' and 'tags'
|
|
||||||
N *+persistent_undo* Persistent undo |undo-persistence|
|
|
||||||
*+postscript* |:hardcopy| writes a PostScript file
|
|
||||||
N *+printer* |:hardcopy| command
|
|
||||||
H *+profile* |:profile| command
|
|
||||||
m *+python* Python 2 interface |python|
|
|
||||||
m *+python3* Python 3 interface |python|
|
|
||||||
N *+quickfix* |:make| and |quickfix| commands
|
|
||||||
N *+reltime* |reltime()| function, 'hlsearch'/'incsearch' timeout,
|
|
||||||
'redrawtime' option
|
|
||||||
B *+rightleft* Right to left typing |'rightleft'|
|
|
||||||
N *+scrollbind* |'scrollbind'|
|
|
||||||
N *+shada* |'shada'|
|
|
||||||
B *+signs* |:sign|
|
|
||||||
N *+smartindent* |'smartindent'|
|
|
||||||
N *+startuptime* |--startuptime| argument
|
|
||||||
N *+statusline* Options 'statusline', 'rulerformat' and special
|
|
||||||
formats of 'titlestring' and 'iconstring'
|
|
||||||
N *+syntax* Syntax highlighting |syntax|
|
|
||||||
N *+tablineat* 'tabline' option recognizing %@Func@ items.
|
|
||||||
T *+tag_binary* binary searching in tags file |tag-binary-search|
|
|
||||||
N *+tag_old_static* old method for static tags |tag-old-static|
|
|
||||||
m *+tag_any_white* any white space allowed in tags file |tag-any-white|
|
|
||||||
B *+termguicolors* 24-bit color in xterm-compatible terminals support
|
|
||||||
N *+termresponse* support for t_RV and |v:termresponse|
|
|
||||||
N *+textobjects* |text-objects| selection
|
|
||||||
N *+timers* the |timer_start()| function
|
|
||||||
N *+title* Setting the window 'title' and 'icon'
|
|
||||||
N *+toolbar* |gui-toolbar|
|
|
||||||
N *+user_commands* User-defined commands. |user-commands|
|
|
||||||
*+vertsplit* Vertically split windows |:vsplit|
|
|
||||||
N *+virtualedit* |'virtualedit'|
|
|
||||||
S *+visual* Visual mode |Visual-mode| Always enabled since 7.4.200.
|
|
||||||
N *+visualextra* extra Visual mode commands |blockwise-operators|
|
|
||||||
N *+vreplace* |gR| and |gr|
|
|
||||||
*+vtp* on MS-Windows console: support for 'termguicolors'
|
|
||||||
N *+wildignore* |'wildignore'|
|
|
||||||
N *+wildmenu* |'wildmenu'|
|
|
||||||
*+windows* more than one window
|
|
||||||
m *+writebackup* |'writebackup'| is default on
|
|
||||||
m *+xim* X input method |xim|
|
|
||||||
*+xfontset* X fontset support |xfontset|
|
|
||||||
*+xpm* pixmap support
|
|
||||||
|
|
||||||
*/dyn* *E370* *E448*
|
|
||||||
To some of the features "/dyn" is added when the
|
|
||||||
feature is only available when the related library can
|
|
||||||
be dynamically loaded.
|
|
||||||
|
|
||||||
:ve[rsion] {nr} Is now ignored. This was previously used to check the
|
|
||||||
version number of a .vimrc file. It was removed,
|
|
||||||
because you can now use the ":if" command for
|
|
||||||
version-dependent behavior.
|
|
||||||
|
|
||||||
*:redi* *:redir*
|
*:redi* *:redir*
|
||||||
:redi[r][!] > {file} Redirect messages to file {file}. The messages which
|
:redi[r][!] > {file} Redirect messages to file {file}. The messages which
|
||||||
|
@ -1,5 +1,10 @@
|
|||||||
# Converts Vim/Nvim documentation to HTML.
|
# Converts Vim/Nvim documentation to HTML.
|
||||||
#
|
#
|
||||||
|
# USAGE:
|
||||||
|
# 1. python3 scripts/gen_help_html.py runtime/doc/ ~/neovim.github.io/t/
|
||||||
|
# 3. cd ~/neovim.github.io/ && jekyll serve --host 0.0.0.0
|
||||||
|
# 2. Visit http://localhost:4000/t/help.txt.html
|
||||||
|
#
|
||||||
# Adapted from https://github.com/c4rlo/vimhelp/
|
# Adapted from https://github.com/c4rlo/vimhelp/
|
||||||
# License: MIT
|
# License: MIT
|
||||||
#
|
#
|
||||||
|
@ -65,7 +65,6 @@ return {
|
|||||||
'InsertCharPre', -- before inserting a char
|
'InsertCharPre', -- before inserting a char
|
||||||
'InsertEnter', -- when entering Insert mode
|
'InsertEnter', -- when entering Insert mode
|
||||||
'InsertLeave', -- when leaving Insert mode
|
'InsertLeave', -- when leaving Insert mode
|
||||||
'JobActivity', -- when job sent some data
|
|
||||||
'MenuPopup', -- just before popup menu is displayed
|
'MenuPopup', -- just before popup menu is displayed
|
||||||
'OptionSet', -- after setting any option
|
'OptionSet', -- after setting any option
|
||||||
'QuickFixCmdPost', -- after :make, :grep etc.
|
'QuickFixCmdPost', -- after :make, :grep etc.
|
||||||
@ -89,7 +88,7 @@ return {
|
|||||||
'TabNew', -- when creating a new tab
|
'TabNew', -- when creating a new tab
|
||||||
'TabNewEntered', -- after entering a new tab
|
'TabNewEntered', -- after entering a new tab
|
||||||
'TermChanged', -- after changing 'term'
|
'TermChanged', -- after changing 'term'
|
||||||
'TermClose', -- after the processs exits
|
'TermClose', -- after the process exits
|
||||||
'TermOpen', -- after opening a terminal buffer
|
'TermOpen', -- after opening a terminal buffer
|
||||||
'TermResponse', -- after setting "v:termresponse"
|
'TermResponse', -- after setting "v:termresponse"
|
||||||
'TextChanged', -- text was modified
|
'TextChanged', -- text was modified
|
||||||
|
@ -1,6 +1,13 @@
|
|||||||
// This is an open source non-commercial project. Dear PVS-Studio, please check
|
// This is an open source non-commercial project. Dear PVS-Studio, please check
|
||||||
// it. PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
|
// it. PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
|
||||||
|
|
||||||
|
//
|
||||||
|
// Log module
|
||||||
|
//
|
||||||
|
// How Linux printk() handles recursion, buffering, etc:
|
||||||
|
// https://lwn.net/Articles/780556/
|
||||||
|
//
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
@ -99,9 +106,14 @@ void log_unlock(void)
|
|||||||
uv_mutex_unlock(&mutex);
|
uv_mutex_unlock(&mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @param context description of a shared context or subsystem
|
/// Logs a message to $NVIM_LOG_FILE.
|
||||||
/// @param func_name function name, or NULL
|
///
|
||||||
/// @param line_num source line number, or -1
|
/// @param log_level Log level (see log.h)
|
||||||
|
/// @param context Description of a shared context or subsystem
|
||||||
|
/// @param func_name Function name, or NULL
|
||||||
|
/// @param line_num Source line number, or -1
|
||||||
|
/// @param eol Append linefeed "\n"
|
||||||
|
/// @param fmt printf-style format string
|
||||||
bool logmsg(int log_level, const char *context, const char *func_name,
|
bool logmsg(int log_level, const char *context, const char *func_name,
|
||||||
int line_num, bool eol, const char *fmt, ...)
|
int line_num, bool eol, const char *fmt, ...)
|
||||||
FUNC_ATTR_UNUSED FUNC_ATTR_PRINTF(6, 7)
|
FUNC_ATTR_UNUSED FUNC_ATTR_PRINTF(6, 7)
|
||||||
@ -163,7 +175,8 @@ end:
|
|||||||
FILE *open_log_file(void)
|
FILE *open_log_file(void)
|
||||||
{
|
{
|
||||||
static bool opening_log_file = false;
|
static bool opening_log_file = false;
|
||||||
// check if it's a recursive call
|
// Disallow recursion. (This only matters for log_path_init; for logmsg and
|
||||||
|
// friends we use a mutex: log_lock).
|
||||||
if (opening_log_file) {
|
if (opening_log_file) {
|
||||||
do_log_to_file(stderr, ERROR_LOG_LEVEL, NULL, __func__, __LINE__, true,
|
do_log_to_file(stderr, ERROR_LOG_LEVEL, NULL, __func__, __LINE__, true,
|
||||||
"Cannot LOG() recursively.");
|
"Cannot LOG() recursively.");
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
// This is an open source non-commercial project. Dear PVS-Studio, please check
|
// This is an open source non-commercial project. Dear PVS-Studio, please check
|
||||||
// it. PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
|
// it. PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
|
||||||
|
|
||||||
///
|
//
|
||||||
/// map.c: khash.h wrapper
|
// map.c: khash.h wrapper
|
||||||
///
|
//
|
||||||
/// NOTE: Callers must manage memory (allocate) for keys and values.
|
// NOTE: Callers must manage memory (allocate) for keys and values.
|
||||||
/// khash.h does not make its own copy of the key or value.
|
// khash.h does not make its own copy of the key or value.
|
||||||
///
|
//
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
Loading…
Reference in New Issue
Block a user