diff options
author | Justin M. Keyes <justinkz@gmail.com> | 2019-04-10 03:27:25 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-04-10 03:27:25 +0200 |
commit | ddd0eb6f5120a09b97867d2561ea61309038ccd2 (patch) | |
tree | 78ba762f7f99840c318f128a73ee6f0e5477968f | |
parent | 9daa7d9978ac0249b61e823808cabbcbc997d5c7 (diff) | |
download | rneovim-ddd0eb6f5120a09b97867d2561ea61309038ccd2.tar.gz rneovim-ddd0eb6f5120a09b97867d2561ea61309038ccd2.tar.bz2 rneovim-ddd0eb6f5120a09b97867d2561ea61309038ccd2.zip |
startup: -es/-Es (silent/batch mode): skip swapfile #8540
To use Nvim as a scripting engine the side-effects of swapfiles and user
config should be avoided by default.
-rw-r--r-- | runtime/doc/starting.txt | 3 | ||||
-rw-r--r-- | runtime/doc/vim_diff.txt | 5 | ||||
-rw-r--r-- | src/nvim/main.c | 14 | ||||
-rw-r--r-- | test/functional/core/startup_spec.lua | 14 |
4 files changed, 28 insertions, 8 deletions
diff --git a/runtime/doc/starting.txt b/runtime/doc/starting.txt index 88aa4121e4..fd6eeccb4a 100644 --- a/runtime/doc/starting.txt +++ b/runtime/doc/starting.txt @@ -208,6 +208,7 @@ argument. echo foo | nvim -V1 -es < User |init.vim| is skipped (unless given with |-u|). + Swap file is skipped (like |-n|). |$TERM| is not used. If stdin is not a TTY: @@ -255,7 +256,7 @@ argument. {not available when compiled without the |+eval| feature} *-n* --n No swap file will be used. Recovery after a crash will be +-n No |swap-file| will be used. Recovery after a crash will be impossible. Handy if you want to view or edit a file on a very slow medium (e.g., a floppy). Can also be done with ":set updatecount=0". You can switch it diff --git a/runtime/doc/vim_diff.txt b/runtime/doc/vim_diff.txt index 1833c2cde3..b7974aa735 100644 --- a/runtime/doc/vim_diff.txt +++ b/runtime/doc/vim_diff.txt @@ -346,7 +346,10 @@ Shell: Startup: |-e| and |-es| invoke the same "improved Ex mode" as -E and -Es. - |-E| and |-Es| reads stdin as text (into buffer 1). + |-E| and |-Es| read stdin as text (into buffer 1). + |-es| and |-Es| have improved behavior: + - Quits automatically, don't need "-c qa!". + - Skips swap-file dialog. |-s| reads Normal commands from stdin if the script name is "-". Reading text (instead of commands) from stdin |--|: - works by default: "-" file is optional diff --git a/src/nvim/main.c b/src/nvim/main.c index 48feeea669..331cfc9f61 100644 --- a/src/nvim/main.c +++ b/src/nvim/main.c @@ -114,12 +114,12 @@ typedef struct { char *listen_addr; // --listen {address} } mparm_T; -/* Values for edit_type. */ -#define EDIT_NONE 0 /* no edit type yet */ -#define EDIT_FILE 1 /* file name argument[s] given, use argument list */ -#define EDIT_STDIN 2 /* read file from stdin */ -#define EDIT_TAG 3 /* tag name argument given, use tagname */ -#define EDIT_QF 4 /* start in quickfix mode */ +// Values for edit_type. +#define EDIT_NONE 0 // no edit type yet +#define EDIT_FILE 1 // file name argument[s] given, use argument list +#define EDIT_STDIN 2 // read file from stdin +#define EDIT_TAG 3 // tag name argument given, use tagname +#define EDIT_QF 4 // start in quickfix mode #ifdef INCLUDE_GENERATED_DECLARATIONS # include "main.c.generated.h" @@ -807,6 +807,7 @@ static void command_line_scan(mparm_T *parmp) if (exmode_active) { // "nvim -e -" silent mode silent_mode = true; + parmp->no_swap_file = true; } else { if (parmp->edit_type != EDIT_NONE && parmp->edit_type != EDIT_FILE @@ -990,6 +991,7 @@ static void command_line_scan(mparm_T *parmp) case 's': { if (exmode_active) { // "-es" silent (batch) Ex-mode silent_mode = true; + parmp->no_swap_file = true; } else { // "-s {scriptin}" read from script file want_argument = true; } diff --git a/test/functional/core/startup_spec.lua b/test/functional/core/startup_spec.lua index 8edb8fc014..76e242b1e2 100644 --- a/test/functional/core/startup_spec.lua +++ b/test/functional/core/startup_spec.lua @@ -203,6 +203,20 @@ describe('startup', function() { 'set encoding', '' })) end) + it('-es/-Es disables swapfile, user config #8540', function() + for _,arg in ipairs({'-es', '-Es'}) do + local out = funcs.system({nvim_prog, arg, + '+set swapfile? updatecount? shada?', + "+put =execute('scriptnames')", '+%print'}) + local line1 = string.match(out, '^.-\n') + -- updatecount=0 means swapfile was disabled. + eq(" swapfile updatecount=0 shada=!,'100,<50,s10,h\n", line1) + -- Standard plugins were loaded, but not user config. + eq('health.vim', string.match(out, 'health.vim')) + eq(nil, string.match(out, 'init.vim')) + end + end) + it('does not crash if --embed is given twice', function() clear{args={'--embed'}} eq(2, eval('1+1')) |