aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZyX <kp-pav@yandex.ru>2015-10-17 15:09:50 +0300
committerZyX <kp-pav@yandex.ru>2015-10-23 14:54:10 +0300
commit0a59c969cc2850940f0791ce2944fa7f4ee3de02 (patch)
tree506971a044cdfd63763a08740d4299d570819209
parent642a07ce2770428e5114200b4292f5a76bb90fa2 (diff)
downloadrneovim-0a59c969cc2850940f0791ce2944fa7f4ee3de02.tar.gz
rneovim-0a59c969cc2850940f0791ce2944fa7f4ee3de02.tar.bz2
rneovim-0a59c969cc2850940f0791ce2944fa7f4ee3de02.zip
option: Use proper printexpr
-rw-r--r--runtime/doc/print.txt12
-rw-r--r--src/nvim/option.c21
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);