diff options
-rw-r--r-- | runtime/doc/print.txt | 12 | ||||
-rw-r--r-- | src/nvim/option.c | 21 |
2 files changed, 24 insertions, 9 deletions
diff --git a/runtime/doc/print.txt b/runtime/doc/print.txt index a6dce56c57..086d05613d 100644 --- a/runtime/doc/print.txt +++ b/runtime/doc/print.txt @@ -133,15 +133,17 @@ If there is no error, return zero or an empty string. The default for non MS-Windows systems is to simply use "lpr" to print the file: > - system('lpr' . (&printdevice == '' ? '' : ' -P' . &printdevice) - . ' ' . v:fname_in) . delete(v:fname_in) + v:shell_error + system(['lpr'] + + (empty(&printdevice)?[]:['-P', &printdevice]) + + [v:fname_in]) + . delete(v:fname_in) + + v:shell_error On MS-Dos and MS-Windows machines the default is to copy the file to the currently specified printdevice: > - system('copy' . ' ' . v:fname_in . (&printdevice == '' - ? ' LPT1:' : (' \"' . &printdevice . '\"'))) - . delete(v:fname_in) + system(['copy', v:fname_in, empty(&printdevice)?'LPT1':&printdevice]) + . delete(v:fname_in) If you change this option, using a function is an easy way to avoid having to escape all the spaces. Example: > diff --git a/src/nvim/option.c b/src/nvim/option.c index 7000fc4067..13ac1503d5 100644 --- a/src/nvim/option.c +++ b/src/nvim/option.c @@ -570,12 +570,25 @@ void set_init_1(void) #if defined(MSWIN) || defined(MAC) /* Set print encoding on platforms that don't default to latin1 */ - set_string_default("penc", "hp-roman8", false); + set_string_default("printencoding", "hp-roman8", false); #endif - /* 'printexpr' must be allocated to be able to evaluate it. */ - set_string_default("pexpr", "system('lpr' . (&printdevice == '' ? '' : ' -P' . &printdevice) . ' ' . v:fname_in) . delete(v:fname_in) + v:shell_error", false); - + // 'printexpr' must be allocated to be able to evaluate it. + set_string_default("printexpr", +#ifdef UNIX + "system(['lpr'] " + "+ (empty(&printdevice)?[]:['-P', &printdevice]) " + "+ [v:fname_in])" + ". delete(v:fname_in)" + "+ v:shell_error", +#elif defined(MSWIN) + "system(['copy', v:fname_in, " + "empty(&printdevice)?'LPT1':&printdevice])" + ". delete(v:fname_in)", +#else + "", +#endif + false); set_string_default("viewdir", stdpaths_user_data_subpath("view"), true); set_string_default("backupdir", stdpaths_user_data_subpath("backup"), true); |