mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 12:27:24 +00:00 
			
		
		
		
	Merge #7171 from justinmk/doc
This commit is contained in:
		
							
								
								
									
										27
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										27
									
								
								README.md
									
									
									
									
									
								
							| @@ -48,17 +48,24 @@ and [more](https://github.com/neovim/neovim/wiki/Installing-Neovim)! | |||||||
| Project layout | Project layout | ||||||
| -------------- | -------------- | ||||||
|  |  | ||||||
|     ├─ ci/            Build server scripts |     ├─ ci/              build automation | ||||||
|     ├─ cmake/         Build scripts |     ├─ cmake/           build scripts | ||||||
|     ├─ runtime/       User plugins/docs |     ├─ runtime/         user plugins/docs | ||||||
|     ├─ src/           Source code |     ├─ src/             application source code (see src/nvim/README.md) | ||||||
|     ├─ third-party/   CMake subproject to build dependencies  |     │  ├─ api/          API subsystem | ||||||
|     └─ test/          Test code |     │  ├─ eval/         VimL subsystem | ||||||
|  |     │  ├─ event/        event-loop subsystem | ||||||
|  |     │  ├─ generators/   code generation (pre-compilation) | ||||||
|  |     │  ├─ lib/          generic data structures | ||||||
|  |     │  ├─ lua/          lua subsystem | ||||||
|  |     │  ├─ msgpack_rpc/  RPC subsystem | ||||||
|  |     │  ├─ os/           low-level platform code | ||||||
|  |     │  └─ tui/          built-in UI | ||||||
|  |     ├─ third-party/     cmake subproject to build dependencies | ||||||
|  |     └─ test/            tests (see test/README.md) | ||||||
|  |  | ||||||
| - `third-party/` is activated if `USE_BUNDLED_DEPS` is undefined or the | - To disable `third-party/` specify `USE_BUNDLED_DEPS=NO` or `USE_BUNDLED=NO` | ||||||
|   `USE_BUNDLED` CMake option is true. |   (CMake option). | ||||||
| - [Source README](src/nvim/README.md) |  | ||||||
| - [Test README](test/README.md) |  | ||||||
|  |  | ||||||
| Features | Features | ||||||
| -------- | -------- | ||||||
|   | |||||||
| @@ -171,8 +171,8 @@ nvim_replace_termcodes({str}, {from_part}, {do_lt}, {special}) | |||||||
|                 Parameters:~ |                 Parameters:~ | ||||||
|                     {str}        String to be converted. |                     {str}        String to be converted. | ||||||
|                     {from_part}  Legacy Vim parameter. Usually true. |                     {from_part}  Legacy Vim parameter. Usually true. | ||||||
|                     {do_lt}      Also translate <lt>. Does nothing if |                     {do_lt}      Also translate <lt>. Ignored if `special` is | ||||||
|                                  `special` is false. |                                  false. | ||||||
|                     {special}    Replace |keycodes|, e.g. <CR> becomes a "\n" |                     {special}    Replace |keycodes|, e.g. <CR> becomes a "\n" | ||||||
|                                  char. |                                  char. | ||||||
|  |  | ||||||
| @@ -309,20 +309,24 @@ nvim_set_option({name}, {value})                           *nvim_set_option()* | |||||||
|                     {value}  New option value |                     {value}  New option value | ||||||
|  |  | ||||||
| nvim_out_write({str})                                       *nvim_out_write()* | nvim_out_write({str})                                       *nvim_out_write()* | ||||||
|                 Writes a message to vim output buffer |                 Writes a message to the Vim output buffer. Does not append | ||||||
|  |                 "\n", the message is buffered (won't display) until a linefeed | ||||||
|  |                 is written. | ||||||
|  |  | ||||||
|                 Parameters:~ |                 Parameters:~ | ||||||
|                     {str}  Message |                     {str}  Message | ||||||
|  |  | ||||||
| nvim_err_write({str})                                       *nvim_err_write()* | nvim_err_write({str})                                       *nvim_err_write()* | ||||||
|                 Writes a message to vim error buffer |                 Writes a message to the Vim error buffer. Does not append | ||||||
|  |                 "\n", the message is buffered (won't display) until a linefeed | ||||||
|  |                 is written. | ||||||
|  |  | ||||||
|                 Parameters:~ |                 Parameters:~ | ||||||
|                     {str}  Message |                     {str}  Message | ||||||
|  |  | ||||||
| nvim_err_writeln({str})                                   *nvim_err_writeln()* | nvim_err_writeln({str})                                   *nvim_err_writeln()* | ||||||
|                 Writes a message to vim error buffer. Appends a linefeed to |                 Writes a message to the Vim error buffer. Appends "\n", so the | ||||||
|                 ensure all contents are written. |                 buffer is flushed (and displayed). | ||||||
|  |  | ||||||
|                 Parameters:~ |                 Parameters:~ | ||||||
|                     {str}  Message |                     {str}  Message | ||||||
|   | |||||||
| @@ -1522,14 +1522,16 @@ v:errors	Errors found by assert functions, such as |assert_true()|. | |||||||
|  |  | ||||||
| 					*v:event* *event-variable* | 					*v:event* *event-variable* | ||||||
| v:event		Dictionary of event data for the current |autocommand|.  Valid | v:event		Dictionary of event data for the current |autocommand|.  Valid | ||||||
| 		only during the autocommand lifetime: storing or passing | 		only during the event lifetime; storing or passing v:event is | ||||||
| 		`v:event` is invalid.  Copy it instead: > | 		invalid!  Copy it instead: > | ||||||
| 			au TextYankPost * let g:foo = deepcopy(v:event) | 			au TextYankPost * let g:foo = deepcopy(v:event) | ||||||
| <		Keys vary by event; see the documentation for the specific | <		Keys vary by event; see the documentation for the specific | ||||||
| 		event, e.g. |TextYankPost|. | 		event, e.g. |DirChanged| or |TextYankPost|. | ||||||
| 			KEY		DESCRIPTION ~ | 			KEY		DESCRIPTION ~ | ||||||
| 			operator	The current |operator|.  Also set for | 			cwd		Current working directory | ||||||
| 					Ex commands (unlike |v:operator|). For | 			scope		Event-specific scope name. | ||||||
|  | 			operator	Current |operator|.  Also set for Ex | ||||||
|  | 					commands (unlike |v:operator|). For | ||||||
| 					example if |TextYankPost| is triggered | 					example if |TextYankPost| is triggered | ||||||
| 					by the |:yank| Ex command then | 					by the |:yank| Ex command then | ||||||
| 					`v:event['operator']` is "y". | 					`v:event['operator']` is "y". | ||||||
| @@ -4726,7 +4728,8 @@ input({opts}) | |||||||
| 		"-complete=" argument.	Refer to |:command-completion| for | 		"-complete=" argument.	Refer to |:command-completion| for | ||||||
| 		more information.  Example: > | 		more information.  Example: > | ||||||
| 			let fname = input("File: ", "", "file") | 			let fname = input("File: ", "", "file") | ||||||
| <							*E5400* *E5402* |  | ||||||
|  | <					*input()-highlight* *E5400* *E5402* | ||||||
| 		The optional `highlight` key allows specifying function which | 		The optional `highlight` key allows specifying function which | ||||||
| 		will be used for highlighting user input.  This function | 		will be used for highlighting user input.  This function | ||||||
| 		receives user input as its only argument and must return | 		receives user input as its only argument and must return | ||||||
| @@ -4744,6 +4747,30 @@ input({opts}) | |||||||
| 		sections must be ordered so that next hl_start_col is greater | 		sections must be ordered so that next hl_start_col is greater | ||||||
| 		then or equal to previous hl_end_col. | 		then or equal to previous hl_end_col. | ||||||
|  |  | ||||||
|  | 		Example (try some input with parentheses): > | ||||||
|  | 			highlight RBP1 guibg=Red ctermbg=red | ||||||
|  | 			highlight RBP2 guibg=Yellow ctermbg=yellow | ||||||
|  | 			highlight RBP3 guibg=Green ctermbg=green | ||||||
|  | 			highlight RBP4 guibg=Blue ctermbg=blue | ||||||
|  | 			let g:rainbow_levels = 4 | ||||||
|  | 			function! RainbowParens(cmdline) | ||||||
|  | 			  let ret = [] | ||||||
|  | 			  let i = 0 | ||||||
|  | 			  let lvl = 0 | ||||||
|  | 			  while i < len(a:cmdline) | ||||||
|  | 			    if a:cmdline[i] is# '(' | ||||||
|  | 			      call add(ret, [i, i + 1, 'RBP' . ((lvl % g:rainbow_levels) + 1)]) | ||||||
|  | 			      let lvl += 1 | ||||||
|  | 			    elseif a:cmdline[i] is# ')' | ||||||
|  | 			      let lvl -= 1 | ||||||
|  | 			      call add(ret, [i, i + 1, 'RBP' . ((lvl % g:rainbow_levels) + 1)]) | ||||||
|  | 			    endif | ||||||
|  | 			    let i += 1 | ||||||
|  | 			  endwhile | ||||||
|  | 			  return ret | ||||||
|  | 			endfunction | ||||||
|  | 			call input({'prompt':'>','highlight':'RainbowParens'}) | ||||||
|  | < | ||||||
| 		Highlight function is called at least once for each new | 		Highlight function is called at least once for each new | ||||||
| 		displayed input string, before command-line is redrawn.  It is | 		displayed input string, before command-line is redrawn.  It is | ||||||
| 		expected that function is pure for the duration of one input() | 		expected that function is pure for the duration of one input() | ||||||
|   | |||||||
| @@ -6,9 +6,8 @@ | |||||||
|  |  | ||||||
| Differences between Nvim and Vim			       *vim-differences* | Differences between Nvim and Vim			       *vim-differences* | ||||||
|  |  | ||||||
| Throughout the help files, differences between Nvim and Vim are indicated via | Nvim differs from Vim in many ways, big and small.  This document is | ||||||
| the "{Nvim}" tag.  This document is a complete and centralized list of all | a complete and centralized reference of those differences. | ||||||
| these differences. |  | ||||||
|  |  | ||||||
| 				      Type <M-]> to see the table of contents. | 				      Type <M-]> to see the table of contents. | ||||||
|  |  | ||||||
| @@ -72,12 +71,18 @@ Clipboard integration		|provider-clipboard| | |||||||
|  |  | ||||||
| USER EXPERIENCE  ~ | USER EXPERIENCE  ~ | ||||||
|  |  | ||||||
| Working intuitively and consistently is a major goal of Nvim. Examples: | Working intuitively and consistently is a major goal of Nvim. | ||||||
|  |  | ||||||
| - Nvim does not have `-X`, a platform-specific option "sometimes" available in | 							*feature-compile* | ||||||
|   Vim (with potential surprises: http://stackoverflow.com/q/14635295). Nvim | - Nvim always includes ALL features, in contrast to Vim (which ships with | ||||||
|   avoids features that cannot be provided on all platforms--instead that is |   various combinations of 100+ optional features). Think of it as a leaner | ||||||
|   delegated to external plugins/extensions. |   version of Vim's "HUGE" build. This reduces surface area for bugs, and | ||||||
|  |   removes a common source of confusion and friction for users. | ||||||
|  |  | ||||||
|  | - Nvim avoids features that cannot be provided on all platforms; instead that | ||||||
|  |   is delegated to external plugins/extensions. E.g. the `-X` platform-specific | ||||||
|  |   option is "sometimes" available in Vim (with potential surprises: | ||||||
|  |   http://stackoverflow.com/q/14635295). | ||||||
|  |  | ||||||
| - Vim's internal test functions (test_autochdir(), test_settime(), etc.) are | - Vim's internal test functions (test_autochdir(), test_settime(), etc.) are | ||||||
|   not exposed (nor implemented); instead Nvim has a robust API. |   not exposed (nor implemented); instead Nvim has a robust API. | ||||||
| @@ -268,13 +273,12 @@ Lua interface (|if_lua.txt|): | |||||||
| - Lua has direct access to Nvim |API| via `vim.api`. | - Lua has direct access to Nvim |API| via `vim.api`. | ||||||
| - Lua package.path and package.cpath are automatically updated according to | - Lua package.path and package.cpath are automatically updated according to | ||||||
|   'runtimepath': |lua-require|. |   'runtimepath': |lua-require|. | ||||||
| - Currently, most legacy Vim features are missing. |  | ||||||
|  |  | ||||||
| |input()| and |inputdialog()| gained support for each other’s features (return  | |input()| and |inputdialog()| support for each other’s features (return on | ||||||
| on cancel and completion respectively) via dictionary argument (replaces all  | cancel and completion respectively) via dictionary argument (replaces all | ||||||
| other arguments if used). | other arguments if used). | ||||||
|  |  | ||||||
| |input()| and |inputdialog()| now support user-defined cmdline highlighting. | |input()| and |inputdialog()| support user-defined cmdline highlighting. | ||||||
|  |  | ||||||
| ============================================================================== | ============================================================================== | ||||||
| 5. Missing legacy features				 *nvim-features-missing* | 5. Missing legacy features				 *nvim-features-missing* | ||||||
| @@ -282,7 +286,7 @@ other arguments if used). | |||||||
| Some legacy Vim features are not implemented: | Some legacy Vim features are not implemented: | ||||||
|  |  | ||||||
| - |if_py|: vim.bindeval() and vim.Function() are not supported | - |if_py|: vim.bindeval() and vim.Function() are not supported | ||||||
| - |if_lua|: the `vim` object currently only supports `vim.api` | - |if_lua|: the `vim` object is missing most legacy methods | ||||||
| - *if_perl* | - *if_perl* | ||||||
| - *if_mzscheme* | - *if_mzscheme* | ||||||
| - *if_tcl* | - *if_tcl* | ||||||
| @@ -290,7 +294,7 @@ Some legacy Vim features are not implemented: | |||||||
| ============================================================================== | ============================================================================== | ||||||
| 6. Removed features					 *nvim-features-removed* | 6. Removed features					 *nvim-features-removed* | ||||||
|  |  | ||||||
| These features are in Vim, but have been intentionally removed from Nvim. | These Vim features were intentionally removed from Nvim. | ||||||
|  |  | ||||||
| 			*'cp'* *'nocompatible'* *'nocp'* *'compatible'* | 			*'cp'* *'nocompatible'* *'nocp'* *'compatible'* | ||||||
| Nvim is always "non-compatible" with Vi. | Nvim is always "non-compatible" with Vi. | ||||||
|   | |||||||
| @@ -484,7 +484,8 @@ void nvim_set_option(String name, Object value, Error *err) | |||||||
|   set_option_to(NULL, SREQ_GLOBAL, name, value, err); |   set_option_to(NULL, SREQ_GLOBAL, name, value, err); | ||||||
| } | } | ||||||
|  |  | ||||||
| /// Writes a message to vim output buffer | /// Writes a message to the Vim output buffer. Does not append "\n", the | ||||||
|  | /// message is buffered (won't display) until a linefeed is written. | ||||||
| /// | /// | ||||||
| /// @param str Message | /// @param str Message | ||||||
| void nvim_out_write(String str) | void nvim_out_write(String str) | ||||||
| @@ -493,7 +494,8 @@ void nvim_out_write(String str) | |||||||
|   write_msg(str, false); |   write_msg(str, false); | ||||||
| } | } | ||||||
|  |  | ||||||
| /// Writes a message to vim error buffer | /// Writes a message to the Vim error buffer. Does not append "\n", the | ||||||
|  | /// message is buffered (won't display) until a linefeed is written. | ||||||
| /// | /// | ||||||
| /// @param str Message | /// @param str Message | ||||||
| void nvim_err_write(String str) | void nvim_err_write(String str) | ||||||
| @@ -502,8 +504,8 @@ void nvim_err_write(String str) | |||||||
|   write_msg(str, true); |   write_msg(str, true); | ||||||
| } | } | ||||||
|  |  | ||||||
| /// Writes a message to vim error buffer. Appends a linefeed to ensure all | /// Writes a message to the Vim error buffer. Appends "\n", so the buffer is | ||||||
| /// contents are written. | /// flushed (and displayed). | ||||||
| /// | /// | ||||||
| /// @param str Message | /// @param str Message | ||||||
| /// @see nvim_err_write() | /// @see nvim_err_write() | ||||||
|   | |||||||
| @@ -1878,54 +1878,47 @@ static void usage(void) | |||||||
|   signal_stop();              // kill us with CTRL-C here, if you like |   signal_stop();              // kill us with CTRL-C here, if you like | ||||||
|  |  | ||||||
|   mch_msg(_("Usage:\n")); |   mch_msg(_("Usage:\n")); | ||||||
|   mch_msg(_("  nvim [arguments] [file ...]      Edit specified file(s)\n")); |   mch_msg(_("  nvim [options] [file ...]      Edit file(s)\n")); | ||||||
|   mch_msg(_("  nvim [arguments] -               Read text from stdin\n")); |   mch_msg(_("  nvim [options] -               Read text from stdin\n")); | ||||||
|   mch_msg(_("  nvim [arguments] -t <tag>        Edit file where tag is defined\n")); |   mch_msg(_("  nvim [options] -t <tag>        Edit file where tag is defined\n")); | ||||||
|   mch_msg(_("  nvim [arguments] -q [errorfile]  Edit file with first error\n")); |   mch_msg(_("  nvim [options] -q [errorfile]  Edit file with first error\n")); | ||||||
|   mch_msg(_("\nArguments:\n")); |   mch_msg(_("\nOptions:\n")); | ||||||
|   mch_msg(_("  --                    Only file names after this\n")); |   mch_msg(_("  --                    Only file names after this\n")); | ||||||
|  |   mch_msg(_("  +                     Start at end of file\n")); | ||||||
|  |   mch_msg(_("  --cmd <cmd>           Execute <cmd> before any config\n")); | ||||||
|  |   mch_msg(_("  +<cmd>, -c <cmd>      Execute <cmd> after config and first file\n")); | ||||||
|  |   mch_msg("\n"); | ||||||
|  |   mch_msg(_("  -b                    Binary mode\n")); | ||||||
|  |   mch_msg(_("  -d                    Diff mode\n")); | ||||||
|  |   mch_msg(_("  -e, -E                Ex mode, Improved Ex mode\n")); | ||||||
|  |   mch_msg(_("  -es                   Silent (batch) mode\n")); | ||||||
|  |   mch_msg(_("  -h, --help            Print this help message\n")); | ||||||
|  |   mch_msg(_("  -i <shada>            Use this shada file\n")); | ||||||
|  |   mch_msg(_("  -m                    Modifications (writing files) not allowed\n")); | ||||||
|  |   mch_msg(_("  -M                    Modifications in text not allowed\n")); | ||||||
|  |   mch_msg(_("  -n                    No swap file, use memory only\n")); | ||||||
|  |   mch_msg(_("  -o[N]                 Open N windows (default: one per file)\n")); | ||||||
|  |   mch_msg(_("  -O[N]                 Open N vertical windows (default: one per file)\n")); | ||||||
|  |   mch_msg(_("  -p[N]                 Open N tab pages (default: one per file)\n")); | ||||||
|  |   mch_msg(_("  -r, -L                List swap files\n")); | ||||||
|  |   mch_msg(_("  -r <file>             Recover edit state for this file\n")); | ||||||
|  |   mch_msg(_("  -R                    Read-only mode\n")); | ||||||
|  |   mch_msg(_("  -S <session>          Source <session> after loading the first file\n")); | ||||||
|  |   mch_msg(_("  -s <scriptin>         Read Normal mode commands from <scriptin>\n")); | ||||||
|  |   mch_msg(_("  -u <config>           Use this config file\n")); | ||||||
|  |   mch_msg(_("  -v, --version         Print version information\n")); | ||||||
|  |   mch_msg(_("  -V[N][file]           Verbose [level][file]\n")); | ||||||
|  |   mch_msg(_("  -Z                    Restricted mode\n")); | ||||||
|  |   mch_msg("\n"); | ||||||
|  |   mch_msg(_("  --api-info            Write msgpack-encoded API metadata to stdout\n")); | ||||||
|  |   mch_msg(_("  --embed               Use stdin/stdout as a msgpack-rpc channel\n")); | ||||||
|  |   mch_msg(_("  --headless            Don't start a user interface\n")); | ||||||
| #if !defined(UNIX) | #if !defined(UNIX) | ||||||
|   mch_msg(_("  --literal             Don't expand wildcards\n")); |   mch_msg(_("  --literal             Don't expand wildcards\n")); | ||||||
| #endif | #endif | ||||||
|   mch_msg(_("  -e                    Ex mode\n")); |   mch_msg(_("  --noplugin            Don't load plugins\n")); | ||||||
|   mch_msg(_("  -E                    Improved Ex mode\n")); |  | ||||||
|   mch_msg(_("  -s                    Silent (batch) mode (only for ex mode)\n")); |  | ||||||
|   mch_msg(_("  -d                    Diff mode\n")); |  | ||||||
|   mch_msg(_("  -R                    Read-only mode\n")); |  | ||||||
|   mch_msg(_("  -Z                    Restricted mode\n")); |  | ||||||
|   mch_msg(_("  -m                    Modifications (writing files) not allowed\n")); |  | ||||||
|   mch_msg(_("  -M                    Modifications in text not allowed\n")); |  | ||||||
|   mch_msg(_("  -b                    Binary mode\n")); |  | ||||||
|   mch_msg(_("  -l                    Lisp mode\n")); |  | ||||||
|   mch_msg(_("  -A                    Arabic mode\n")); |  | ||||||
|   mch_msg(_("  -F                    Farsi mode\n")); |  | ||||||
|   mch_msg(_("  -H                    Hebrew mode\n")); |  | ||||||
|   mch_msg(_("  -V[N][file]           Be verbose [level N][log messages to file]\n")); |  | ||||||
|   mch_msg(_("  -D                    Debugging mode\n")); |  | ||||||
|   mch_msg(_("  -n                    No swap file, use memory only\n")); |  | ||||||
|   mch_msg(_("  -r, -L                List swap files and exit\n")); |  | ||||||
|   mch_msg(_("  -r <file>             Recover crashed session\n")); |  | ||||||
|   mch_msg(_("  -u <vimrc>            Use <vimrc> instead of the default\n")); |  | ||||||
|   mch_msg(_("  -i <shada>            Use <shada> instead of the default\n")); |  | ||||||
|   mch_msg(_("  --noplugin            Don't load plugin scripts\n")); |  | ||||||
|   mch_msg(_("  -o[N]                 Open N windows (default: one for each file)\n")); |  | ||||||
|   mch_msg(_("  -O[N]                 Like -o but split vertically\n")); |  | ||||||
|   mch_msg(_("  -p[N]                 Open N tab pages (default: one for each file)\n")); |  | ||||||
|   mch_msg(_("  +                     Start at end of file\n")); |  | ||||||
|   mch_msg(_("  +<linenum>            Start at line <linenum>\n")); |  | ||||||
|   mch_msg(_("  +/<pattern>           Start at first occurrence of <pattern>\n")); |  | ||||||
|   mch_msg(_("  --cmd <command>       Execute <command> before loading any vimrc\n")); |  | ||||||
|   mch_msg(_("  -c <command>          Execute <command> after loading the first file\n")); |  | ||||||
|   mch_msg(_("  -S <session>          Source <session> after loading the first file\n")); |  | ||||||
|   mch_msg(_("  -s <scriptin>         Read Normal mode commands from <scriptin>\n")); |  | ||||||
|   mch_msg(_("  -w <scriptout>        Append all typed characters to <scriptout>\n")); |  | ||||||
|   mch_msg(_("  -W <scriptout>        Write all typed characters to <scriptout>\n")); |  | ||||||
|   mch_msg(_("  --startuptime <file>  Write startup timing messages to <file>\n")); |   mch_msg(_("  --startuptime <file>  Write startup timing messages to <file>\n")); | ||||||
|   mch_msg(_("  --api-info            Dump API metadata serialized to msgpack and exit\n")); |   mch_msg(_("\nSee \":help startup-options\" for all options.\n")); | ||||||
|   mch_msg(_("  --embed               Use stdin/stdout as a msgpack-rpc channel\n")); |  | ||||||
|   mch_msg(_("  --headless            Don't start a user interface\n")); |  | ||||||
|   mch_msg(_("  -v, --version         Print version information and exit\n")); |  | ||||||
|   mch_msg(_("  -h, --help            Print this help message and exit\n")); |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -79,7 +79,7 @@ func Test_help_arg() | |||||||
|         call add(found, 'Readonly mode') |         call add(found, 'Readonly mode') | ||||||
|       endif |       endif | ||||||
|       " Watch out for a second --version line in the Gnome version. |       " Watch out for a second --version line in the Gnome version. | ||||||
|       if line =~ '--version.*Print version information and exit' |       if line =~ '--version.*Print version information' | ||||||
|         call add(found, "--version") |         call add(found, "--version") | ||||||
|       endif |       endif | ||||||
|     endfor |     endfor | ||||||
|   | |||||||
| @@ -1089,13 +1089,7 @@ static void list_features(void) | |||||||
|           msg_putchar('\n'); |           msg_putchar('\n'); | ||||||
|         } |         } | ||||||
|       } else { |       } else { | ||||||
|         while (msg_col % width) { |  | ||||||
|           int old_msg_col = msg_col; |  | ||||||
|         msg_putchar(' '); |         msg_putchar(' '); | ||||||
|           if (old_msg_col == msg_col) { |  | ||||||
|             break;  // XXX: Avoid infinite loop. |  | ||||||
|           } |  | ||||||
|         } |  | ||||||
|       } |       } | ||||||
|     } else { |     } else { | ||||||
|       if (msg_col > 0) { |       if (msg_col > 0) { | ||||||
| @@ -1103,7 +1097,7 @@ static void list_features(void) | |||||||
|       } |       } | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|   MSG_PUTS("For differences from Vim, see :help vim-differences\n\n"); |   MSG_PUTS("See \":help feature-compile\"\n\n"); | ||||||
| } | } | ||||||
|  |  | ||||||
| void list_version(void) | void list_version(void) | ||||||
| @@ -1144,7 +1138,7 @@ void list_version(void) | |||||||
|   } |   } | ||||||
| #endif  // ifdef HAVE_PATHDEF | #endif  // ifdef HAVE_PATHDEF | ||||||
|  |  | ||||||
|   version_msg(_("\n\nOptional features included (+) or not (-): ")); |   version_msg(_("\n\nFeatures: ")); | ||||||
|  |  | ||||||
|   list_features(); |   list_features(); | ||||||
|  |  | ||||||
| @@ -1216,7 +1210,6 @@ void intro_message(int colon) | |||||||
|   static char *(lines[]) = { |   static char *(lines[]) = { | ||||||
|     N_(NVIM_VERSION_LONG), |     N_(NVIM_VERSION_LONG), | ||||||
|     "", |     "", | ||||||
|     N_("by al."), |  | ||||||
|     N_("Nvim is open source and freely distributable"), |     N_("Nvim is open source and freely distributable"), | ||||||
|     N_("https://neovim.io/community"), |     N_("https://neovim.io/community"), | ||||||
|     "", |     "", | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Justin M. Keyes
					Justin M. Keyes