mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 12:27:24 +00:00 
			
		
		
		
	| @@ -14,7 +14,7 @@ low-risk/isolated tasks: | |||||||
| Developer guidelines | Developer guidelines | ||||||
| -------------------- | -------------------- | ||||||
|  |  | ||||||
| - Nvim developers should read `:help dev-help`. | - Nvim developers should read `:help dev`. | ||||||
| - External UI developers should read `:help dev-ui`. | - External UI developers should read `:help dev-ui`. | ||||||
|  |  | ||||||
| Reporting problems | Reporting problems | ||||||
| @@ -24,7 +24,7 @@ Reporting problems | |||||||
| - Search [existing issues][github-issues] (including closed!) | - Search [existing issues][github-issues] (including closed!) | ||||||
| - Update Neovim to the latest version to see if your problem persists. | - Update Neovim to the latest version to see if your problem persists. | ||||||
| - Disable plugins incrementally, to narrow down the cause of the issue. | - Disable plugins incrementally, to narrow down the cause of the issue. | ||||||
| - When reporting a crash, include a stacktrace. | - When reporting a crash, [include a stacktrace](https://github.com/neovim/neovim/wiki/Development-tips#backtrace-linux). | ||||||
| - [Bisect][git-bisect] to the cause of a regression, if you are able. This is _extremely_ helpful. | - [Bisect][git-bisect] to the cause of a regression, if you are able. This is _extremely_ helpful. | ||||||
| - Check `$NVIM_LOG_FILE`, if it exists. | - Check `$NVIM_LOG_FILE`, if it exists. | ||||||
| - Include `cmake --system-information` for **build** issues. | - Include `cmake --system-information` for **build** issues. | ||||||
| @@ -92,7 +92,7 @@ and [AppVeyor]. | |||||||
| - CI builds are compiled with [`-Werror`][gcc-warnings], so compiler warnings | - CI builds are compiled with [`-Werror`][gcc-warnings], so compiler warnings | ||||||
|   will fail the build. |   will fail the build. | ||||||
| - If any tests fail, the build will fail. | - If any tests fail, the build will fail. | ||||||
|   See [Building Neovim#running-tests][wiki-run-tests] to run tests locally. |   See [test/README.md#running-tests][run-tests] to run tests locally. | ||||||
|   Passing locally doesn't guarantee passing the CI build, because of the |   Passing locally doesn't guarantee passing the CI build, because of the | ||||||
|   different compilers and platforms tested against. |   different compilers and platforms tested against. | ||||||
| - CI runs [ASan] and other analyzers. | - CI runs [ASan] and other analyzers. | ||||||
| @@ -168,7 +168,7 @@ as context, use the `-W` argument as well. | |||||||
| [hygiene]: http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html | [hygiene]: http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html | ||||||
| [style-guide]: http://neovim.io/develop/style-guide.xml | [style-guide]: http://neovim.io/develop/style-guide.xml | ||||||
| [ASan]: http://clang.llvm.org/docs/AddressSanitizer.html | [ASan]: http://clang.llvm.org/docs/AddressSanitizer.html | ||||||
| [wiki-run-tests]: https://github.com/neovim/neovim/wiki/Building-Neovim#running-tests | [run-tests]: https://github.com/neovim/neovim/blob/master/test/README.md#running-tests | ||||||
| [wiki-faq]: https://github.com/neovim/neovim/wiki/FAQ | [wiki-faq]: https://github.com/neovim/neovim/wiki/FAQ | ||||||
| [review-checklist]: https://github.com/neovim/neovim/wiki/Code-review-checklist | [review-checklist]: https://github.com/neovim/neovim/wiki/Code-review-checklist | ||||||
| [3174]: https://github.com/neovim/neovim/issues/3174 | [3174]: https://github.com/neovim/neovim/issues/3174 | ||||||
|   | |||||||
| @@ -14,7 +14,7 @@ | |||||||
| [](https://neovim.io/doc/reports/pvs) | [](https://neovim.io/doc/reports/pvs) | ||||||
|  |  | ||||||
| [](https://buildd.debian.org/neovim) | [](https://buildd.debian.org/neovim) | ||||||
| [](https://github.com/neovim/neovim/releases/) | [](https://github.com/neovim/neovim/releases/) | ||||||
|  |  | ||||||
| Neovim is a project that seeks to aggressively refactor Vim in order to: | Neovim is a project that seeks to aggressively refactor Vim in order to: | ||||||
|  |  | ||||||
|   | |||||||
| @@ -60,8 +60,7 @@ External programs ("clients") can use the metadata to discover the |rpc-api|. | |||||||
| API contract                                                     *api-contract* | API contract                                                     *api-contract* | ||||||
|  |  | ||||||
| The API is made of functions and events. Clients call functions like those | The API is made of functions and events. Clients call functions like those | ||||||
| described at |api-global|, and may "attach" in order to receive rich events, | described at |api-global|, and may "attach" to receive rich |ui-events|. | ||||||
| described at |rpc-remote-ui|. |  | ||||||
|  |  | ||||||
| As Nvim develops, its API may change only according the following "contract": | As Nvim develops, its API may change only according the following "contract": | ||||||
|  |  | ||||||
| @@ -481,6 +480,84 @@ nvim_call_atomic({calls})                                 *nvim_call_atomic()* | |||||||
|                     error ocurred, the values from all preceding calls will |                     error ocurred, the values from all preceding calls will | ||||||
|                     still be returned. |                     still be returned. | ||||||
|  |  | ||||||
|  |                                                      *nvim_parse_expression()* | ||||||
|  | nvim_parse_expression({expr}, {flags}, {highlight}) | ||||||
|  |                 Parse a VimL expression | ||||||
|  |  | ||||||
|  |                 Attributes:~ | ||||||
|  |                     {async} | ||||||
|  |  | ||||||
|  |                 Parameters:~ | ||||||
|  |                     {expr}       Expression to parse. Is always treated as a | ||||||
|  |                                  single line. | ||||||
|  |                     {flags}      Flags:  - "m" if multiple expressions in a | ||||||
|  |                                  row are allowed (only the first one will be | ||||||
|  |                                  parsed), - "E" if EOC tokens are not allowed | ||||||
|  |                                  (determines whether they will stop parsing | ||||||
|  |                                  process or be recognized as an | ||||||
|  |                                  operator/space, though also yielding an | ||||||
|  |                                  error). - "l" when needing to start parsing | ||||||
|  |                                  with lvalues for ":let" or ":for". Common | ||||||
|  |                                  flag sets: - "m" to parse like for ":echo". - | ||||||
|  |                                  "E" to parse like for "<C-r>=". - empty | ||||||
|  |                                  string for ":call". - "lm" to parse for | ||||||
|  |                                  ":let". | ||||||
|  |                     {highlight}  If true, return value will also include | ||||||
|  |                                  "highlight" key containing array of 4-tuples | ||||||
|  |                                  (arrays) (Integer, Integer, Integer, String), | ||||||
|  |                                  where first three numbers define the | ||||||
|  |                                  highlighted region and represent line, | ||||||
|  |                                  starting column and ending column (latter | ||||||
|  |                                  exclusive: one should highlight region | ||||||
|  |                                  [start_col, end_col)). | ||||||
|  |  | ||||||
|  |                 Return:~ | ||||||
|  |                     AST: top-level dictionary holds keys "error": Dictionary | ||||||
|  |                     with error, present only if parser saw some error. | ||||||
|  |                     Contains the following keys: "message": String, error | ||||||
|  |                     message in printf format, translated. Must contain exactly | ||||||
|  |                     one "%.*s". "arg": String, error message argument. "len": | ||||||
|  |                     Amount of bytes successfully parsed. With flags equal to | ||||||
|  |                     "" that should be equal to the length of expr string. | ||||||
|  |                     @note: “Sucessfully parsed” here means “participated in | ||||||
|  |                     AST creation”, not “till the first error”. "ast": AST, | ||||||
|  |                     either nil or a dictionary with these keys: "type": node | ||||||
|  |                     type, one of the value names from ExprASTNodeType | ||||||
|  |                     stringified without "kExprNode" prefix. "start": a pair | ||||||
|  |                     [line, column] describing where node is “started” where | ||||||
|  |                     "line" is always 0 (will not be 0 if you will be using | ||||||
|  |                     nvim_parse_viml() on e.g. ":let", but that is not present | ||||||
|  |                     yet). Both elements are Integers. "len": “length” of the | ||||||
|  |                     node. This and "start" are there for debugging purposes | ||||||
|  |                     primary (debugging parser and providing debug | ||||||
|  |                     information). "children": a list of nodes described in | ||||||
|  |                     top/"ast". There always is zero, one or two children, key | ||||||
|  |                     will not be present if node has no children. Maximum | ||||||
|  |                     number of children may be found in node_maxchildren array. | ||||||
|  |                     Local values (present only for certain nodes): "scope": a | ||||||
|  |                     single Integer, specifies scope for "Option" and | ||||||
|  |                     "PlainIdentifier" nodes. For "Option" it is one of | ||||||
|  |                     ExprOptScope values, for "PlainIdentifier" it is one of | ||||||
|  |                     ExprVarScope values. "ident": identifier (without scope, | ||||||
|  |                     if any), present for "Option", "PlainIdentifier", | ||||||
|  |                     "PlainKey" and "Environment" nodes. "name": Integer, | ||||||
|  |                     register name (one character) or -1. Only present for | ||||||
|  |                     "Register" nodes. "cmp_type": String, comparison type, one | ||||||
|  |                     of the value names from ExprComparisonType, stringified | ||||||
|  |                     without "kExprCmp" prefix. Only present for "Comparison" | ||||||
|  |                     nodes. "ccs_strategy": String, case comparison strategy, | ||||||
|  |                     one of the value names from ExprCaseCompareStrategy, | ||||||
|  |                     stringified without "kCCStrategy" prefix. Only present for | ||||||
|  |                     "Comparison" nodes. "augmentation": String, augmentation | ||||||
|  |                     type for "Assignment" nodes. Is either an empty string, | ||||||
|  |                     "Add", "Subtract" or "Concat" for "=", "+=", "-=" or ".=" | ||||||
|  |                     respectively. "invert": Boolean, true if result of | ||||||
|  |                     comparison needs to be inverted. Only present for | ||||||
|  |                     "Comparison" nodes. "ivalue": Integer, integer value for | ||||||
|  |                     "Integer" nodes. "fvalue": Float, floating-point value for | ||||||
|  |                     "Float" nodes. "svalue": String, value for | ||||||
|  |                     "SingleQuotedString" and "DoubleQuotedString" nodes. | ||||||
|  |  | ||||||
| nvim__id({obj})                                                   *nvim__id()* | nvim__id({obj})                                                   *nvim__id()* | ||||||
|                 Returns object given as argument |                 Returns object given as argument | ||||||
|  |  | ||||||
| @@ -721,9 +798,10 @@ nvim_buf_add_highlight({buffer}, {src_id}, {hl_group}, {line}, | |||||||
|                                  or -1 for ungrouped highlight |                                  or -1 for ungrouped highlight | ||||||
|                     {hl_group}   Name of the highlight group to use |                     {hl_group}   Name of the highlight group to use | ||||||
|                     {line}       Line to highlight (zero-indexed) |                     {line}       Line to highlight (zero-indexed) | ||||||
|                     {col_start}  Start of range of columns to highlight |                     {col_start}  Start of (byte-indexed) column range to | ||||||
|                     {col_end}    End of range of columns to highlight, or -1 |                                  highlight | ||||||
|                                  to highlight to end of line |                     {col_end}    End of (byte-indexed) column range to | ||||||
|  |                                  highlight, or -1 to highlight to end of line | ||||||
|  |  | ||||||
|                 Return:~ |                 Return:~ | ||||||
|                     The src_id that was used |                     The src_id that was used | ||||||
| @@ -957,9 +1035,6 @@ nvim_tabpage_is_valid({tabpage})                     *nvim_tabpage_is_valid()* | |||||||
| ============================================================================== | ============================================================================== | ||||||
| UI Functions                                                          *api-ui* | UI Functions                                                          *api-ui* | ||||||
|  |  | ||||||
| remote_ui_disconnect()                                *remote_ui_disconnect()* |  | ||||||
|                 TODO: Documentation |  | ||||||
|  |  | ||||||
| nvim_ui_attach({width}, {height}, {options})                *nvim_ui_attach()* | nvim_ui_attach({width}, {height}, {options})                *nvim_ui_attach()* | ||||||
|                 TODO: Documentation |                 TODO: Documentation | ||||||
|  |  | ||||||
|   | |||||||
| @@ -259,13 +259,12 @@ Name			triggered by ~ | |||||||
| |BufNew|		just after creating a new buffer | |BufNew|		just after creating a new buffer | ||||||
|  |  | ||||||
| |SwapExists|		detected an existing swap file | |SwapExists|		detected an existing swap file | ||||||
| |TermOpen|		when a terminal buffer is starting | |TermOpen|		when a terminal job starts | ||||||
| |TermClose|		when a terminal buffer ends | |TermClose|		when a terminal job ends | ||||||
|  |  | ||||||
| 	Options | 	Options | ||||||
| |FileType|		when the 'filetype' option has been set | |FileType|		when the 'filetype' option has been set | ||||||
| |Syntax|		when the 'syntax' option has been set | |Syntax|		when the 'syntax' option has been set | ||||||
| |TermChanged|		after the value of 'term' has changed |  | ||||||
| |OptionSet|		after setting any option | |OptionSet|		after setting any option | ||||||
|  |  | ||||||
| 	Startup and exit | 	Startup and exit | ||||||
| @@ -933,26 +932,20 @@ TabEnter			Just after entering a tab page. |tab-page| | |||||||
| TabLeave			Just before leaving a tab page. |tab-page| | TabLeave			Just before leaving a tab page. |tab-page| | ||||||
| 				A WinLeave event will have been triggered | 				A WinLeave event will have been triggered | ||||||
| 				first. | 				first. | ||||||
| 						 {Nvim} *TabNew* | 							*TabNew* | ||||||
| TabNew				When creating a new tab page. |tab-page| | TabNew				When creating a new tab page. |tab-page| | ||||||
| 				After WinEnter and before TabEnter. | 				After WinEnter and before TabEnter. | ||||||
| 						 {Nvim} *TabNewEntered* | 							*TabNewEntered* | ||||||
| TabNewEntered			After entering a new tab page. |tab-page| | TabNewEntered			After entering a new tab page. |tab-page| | ||||||
| 				After BufEnter. | 				After BufEnter. | ||||||
| 						 {Nvim} *TabClosed* | 							*TabClosed* | ||||||
| TabClosed			After closing a tab page. <afile> can be used | TabClosed			After closing a tab page. <afile> can be used | ||||||
| 				for the tab page number. | 				for the tab page number. | ||||||
| 							*TermChanged* | 							*TermClose* | ||||||
| TermChanged			After the value of 'term' has changed.  Useful | TermClose			When a |terminal| job ends. | ||||||
| 				for re-loading the syntax file to update the | 							*TermOpen* | ||||||
| 				colors, fonts and other terminal-dependent | TermOpen			When a |terminal| job is starting.  Can be | ||||||
| 				settings.  Executed for all loaded buffers. | 				used to configure the terminal buffer. | ||||||
| 						 {Nvim} *TermClose* |  | ||||||
| TermClose			When a terminal buffer ends. |  | ||||||
| 						 {Nvim} *TermOpen* |  | ||||||
| TermOpen			When a terminal buffer is starting.  This can |  | ||||||
| 				be used to configure the terminal emulator by |  | ||||||
| 				setting buffer variables. |terminal| |  | ||||||
| 							*TermResponse* | 							*TermResponse* | ||||||
| TermResponse			After the response to |t_RV| is received from | TermResponse			After the response to |t_RV| is received from | ||||||
| 				the terminal.  The value of |v:termresponse| | 				the terminal.  The value of |v:termresponse| | ||||||
|   | |||||||
| @@ -4709,17 +4709,7 @@ ctermbg={color-nr}				*highlight-ctermbg* | |||||||
| 	"cterm".  For example, on some systems "cterm=bold ctermfg=3" gives | 	"cterm".  For example, on some systems "cterm=bold ctermfg=3" gives | ||||||
| 	another color, on others you just get color 3. | 	another color, on others you just get color 3. | ||||||
|  |  | ||||||
| 	For an xterm this depends on your resources, and is a bit | 	The following names are recognized, with the color number used: | ||||||
| 	unpredictable.	See your xterm documentation for the defaults.	The |  | ||||||
| 	colors for a color-xterm can be changed from the .Xdefaults file. |  | ||||||
| 	Unfortunately this means that it's not possible to get the same colors |  | ||||||
| 	for each user. |  | ||||||
|  |  | ||||||
| 	The MSDOS standard colors are fixed (in a console window), so these |  | ||||||
| 	have been used for the names.  But the meaning of color names in X11 |  | ||||||
| 	are fixed, so these color settings have been used, to make the |  | ||||||
| 	highlighting settings portable (complicated, isn't it?).  The |  | ||||||
| 	following names are recognized, with the color number used: |  | ||||||
|  |  | ||||||
| 							*cterm-colors* | 							*cterm-colors* | ||||||
| 	    NR-16   NR-8    COLOR NAME ~ | 	    NR-16   NR-8    COLOR NAME ~ | ||||||
|   | |||||||
| @@ -9,7 +9,7 @@ Nvim UI protocol							  *ui* | |||||||
|                                       Type |gO| to see the table of contents. |                                       Type |gO| to see the table of contents. | ||||||
|  |  | ||||||
| ============================================================================== | ============================================================================== | ||||||
| Introduction							     *ui-intro* | UI Events							    *ui-events* | ||||||
|  |  | ||||||
| GUIs can be implemented as external processes communicating with Nvim over the | GUIs can be implemented as external processes communicating with Nvim over the | ||||||
| RPC API. The UI model consists of a terminal-like grid with a single, | RPC API. The UI model consists of a terminal-like grid with a single, | ||||||
|   | |||||||
| @@ -207,21 +207,18 @@ g8			Print the hex values of the bytes used in the | |||||||
| :sh[ell]		Removed. |vim-differences| {Nvim} | :sh[ell]		Removed. |vim-differences| {Nvim} | ||||||
|  |  | ||||||
| 						  *:terminal* *:te* | 						  *:terminal* *:te* | ||||||
| :te[rminal][!] [{cmd}]	Execute {cmd} with 'shell' in a new |terminal| buffer. | :te[rminal][!] [{cmd}]	Execute {cmd} with 'shell' in a new |terminal-emulator| | ||||||
| 			Equivalent to: > | 			buffer. Without {cmd}, start an interactive 'shell'. | ||||||
| 			      :enew |  | ||||||
| 			      :call termopen('{cmd}') |  | ||||||
| < |  | ||||||
| 			See |termopen()|. |  | ||||||
|  |  | ||||||
| 			Without {cmd}, start an interactive shell. | 			Type |i| to enter |Terminal-mode|, then keys are sent to | ||||||
|  | 			the job running in the terminal. Type <C-\><C-N> to | ||||||
|  | 			leave Terminal-mode. |CTRL-\_CTRL-N| | ||||||
|  |  | ||||||
| 			Creating the terminal buffer fails when changes have been | 			Fails if changes have been made to the current buffer, | ||||||
| 			made to the current buffer, unless 'hidden' is set. | 			unless 'hidden' is set. | ||||||
|  |  | ||||||
| 			To enter |Terminal-mode| automatically: > | 			To enter |Terminal-mode| automatically: > | ||||||
| 			      autocmd BufEnter term://* startinsert | 			      autocmd TermOpen * startinsert | ||||||
| 			      autocmd BufLeave term://* stopinsert |  | ||||||
| < | < | ||||||
| 							*:!cmd* *:!* *E34* | 							*:!cmd* *:!* *E34* | ||||||
| :!{cmd}			Execute {cmd} with 'shell'. See also |:terminal|. | :!{cmd}			Execute {cmd} with 'shell'. See also |:terminal|. | ||||||
|   | |||||||
| @@ -302,7 +302,8 @@ Highlight groups: | |||||||
|   |hl-ColorColumn|, |hl-CursorColumn| are lower priority than most other |   |hl-ColorColumn|, |hl-CursorColumn| are lower priority than most other | ||||||
|   groups |   groups | ||||||
|  |  | ||||||
| The variable name "count" is no fallback for |v:count| anymore. | VimL (Vim script) compatibility: | ||||||
|  |   `count` does not alias to |v:count| | ||||||
|  |  | ||||||
| ============================================================================== | ============================================================================== | ||||||
| 5. Missing legacy features				 *nvim-features-missing* | 5. Missing legacy features				 *nvim-features-missing* | ||||||
|   | |||||||
| @@ -763,8 +763,8 @@ ArrayOf(Integer, 2) nvim_buf_get_mark(Buffer buffer, String name, Error *err) | |||||||
| ///                   or -1 for ungrouped highlight | ///                   or -1 for ungrouped highlight | ||||||
| /// @param hl_group   Name of the highlight group to use | /// @param hl_group   Name of the highlight group to use | ||||||
| /// @param line       Line to highlight (zero-indexed) | /// @param line       Line to highlight (zero-indexed) | ||||||
| /// @param col_start  Start of range of columns to highlight | /// @param col_start  Start of (byte-indexed) column range to highlight | ||||||
| /// @param col_end    End of range of columns to highlight, | /// @param col_end    End of (byte-indexed) column range to highlight, | ||||||
| ///                   or -1 to highlight to end of line | ///                   or -1 to highlight to end of line | ||||||
| /// @param[out] err   Error details, if any | /// @param[out] err   Error details, if any | ||||||
| /// @return The src_id that was used | /// @return The src_id that was used | ||||||
|   | |||||||
| @@ -1529,7 +1529,7 @@ static void patch_terminfo_bugs(TUIData *data, const char *term, | |||||||
|         || iterm || iterm_pretending_xterm |         || iterm || iterm_pretending_xterm | ||||||
|         || teraterm    // per TeraTerm "Supported Control Functions" doco |         || teraterm    // per TeraTerm "Supported Control Functions" doco | ||||||
|         // Some linux-type terminals (such as console-terminal-emulator |         // Some linux-type terminals (such as console-terminal-emulator | ||||||
|         // from the nosh toolset) implement implement the xterm extension. |         // from the nosh toolset) implement the xterm extension. | ||||||
|         || (linuxvt && (xterm_version || (vte_version > 0) || colorterm)))) { |         || (linuxvt && (xterm_version || (vte_version > 0) || colorterm)))) { | ||||||
|       data->unibi_ext.set_cursor_style = |       data->unibi_ext.set_cursor_style = | ||||||
|         (int)unibi_add_ext_str(ut, "Ss", "\x1b[%p1%d q"); |         (int)unibi_add_ext_str(ut, "Ss", "\x1b[%p1%d q"); | ||||||
|   | |||||||
| @@ -168,16 +168,13 @@ minutes](http://learnxinyminutes.com/docs/lua/). | |||||||
|   Do not silently skip the test with `if-else`. If a functional test depends on |   Do not silently skip the test with `if-else`. If a functional test depends on | ||||||
|   some external factor (e.g. the existence of `md5sum` on `$PATH`), *and* you |   some external factor (e.g. the existence of `md5sum` on `$PATH`), *and* you | ||||||
|   can't mock or fake the dependency, then skip the test via `pending()` if the |   can't mock or fake the dependency, then skip the test via `pending()` if the | ||||||
|   external factor is missing. This ensures that the *total* test-count (success |   external factor is missing. This ensures that the *total* test-count | ||||||
|   + fail + error + pending) is the same in all environments. |   (success + fail + error + pending) is the same in all environments. | ||||||
|     - *Note:* `pending()` is ignored if it is missing an argument _unless_ it is |     - *Note:* `pending()` is ignored if it is missing an argument _unless_ it is | ||||||
|       [contained in an `it()` |       [contained in an `it()` block](https://github.com/neovim/neovim/blob/d21690a66e7eb5ebef18046c7a79ef898966d786/test/functional/ex_cmds/grep_spec.lua#L11). | ||||||
|       block](https://github.com/neovim/neovim/blob/d21690a66e7eb5ebef18046c7a79ef898966d786/test/functional/ex_cmds/grep_spec.lua#L11). |       Provide empty function argument if the `pending()` call is outside of `it()` | ||||||
|       Provide empty function argument if the `pending()` call is outside of |  | ||||||
|       `it()` |  | ||||||
|       ([example](https://github.com/neovim/neovim/commit/5c1dc0fbe7388528875aff9d7b5055ad718014de#diff-bf80b24c724b0004e8418102f68b0679R18)). |       ([example](https://github.com/neovim/neovim/commit/5c1dc0fbe7388528875aff9d7b5055ad718014de#diff-bf80b24c724b0004e8418102f68b0679R18)). | ||||||
| - Use `make testlint` for using the shipped luacheck program ([supported by | - Use `make testlint` for using the shipped luacheck program ([supported by syntastic](https://github.com/scrooloose/syntastic/blob/d6b96c079be137c83009827b543a83aa113cc011/doc/syntastic-checkers.txt#L3546)) | ||||||
|   syntastic](https://github.com/scrooloose/syntastic/blob/d6b96c079be137c83009827b543a83aa113cc011/doc/syntastic-checkers.txt#L3546)) |  | ||||||
|   to lint all tests. |   to lint all tests. | ||||||
|  |  | ||||||
| ### Where tests go | ### Where tests go | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Justin M. Keyes
					Justin M. Keyes