From c7b6d6019c7b4733625f7523dd7182e5266df2ae Mon Sep 17 00:00:00 2001 From: dongyuzhen Date: Fri, 22 Jul 2022 14:32:55 +0800 Subject: [PATCH] fix the error of backport-cannot-list-options-one-per-line.patch --- ...ort-cannot-list-options-one-per-line.patch | 328 +----------------- vim.spec | 8 +- 2 files changed, 17 insertions(+), 319 deletions(-) diff --git a/backport-cannot-list-options-one-per-line.patch b/backport-cannot-list-options-one-per-line.patch index 0671cbc..e1caaab 100644 --- a/backport-cannot-list-options-one-per-line.patch +++ b/backport-cannot-list-options-one-per-line.patch @@ -5,20 +5,16 @@ Subject: [PATCH] patch 8.2.0128: cannot list options one per line Problem: Cannot list options one per line. Solution: Use ":set!" to list one option per line. - --- - runtime/doc/options.txt | 12 +- - src/ex_cmds.h | 6 +- - src/ex_docmd.c | 18 --- - src/option.c | 34 ++++- - src/optiondefs.h | 2 +- - src/proto/option.pro | 1 + - src/testdir/test_options.vim | 9 +- - src/version.c | 2 + - src/vim.h | 13 +- - test.patch | 285 +++++++++++++++++++++++++++++++++++ - 10 files changed, 344 insertions(+), 38 deletions(-) - create mode 100644 test.patch + runtime/doc/options.txt | 12 ++++++++---- + src/ex_cmds.h | 6 +++--- + src/ex_docmd.c | 18 ------------------ + src/option.c | 34 +++++++++++++++++++++++++++++----- + src/optiondefs.h | 2 +- + src/proto/option.pro | 1 + + src/testdir/test_options.vim | 9 ++++++++- + src/vim.h | 13 +++++++------ + 8 files changed, 57 insertions(+), 38 deletions(-) diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index 2fced50..8f11253 100644 @@ -249,19 +245,6 @@ index d4213c1..7584465 100644 func Test_set_values() if filereadable('opt_test.vim') source opt_test.vim -diff --git a/src/version.c b/src/version.c -index bd45631..4b6cc17 100644 ---- a/src/version.c -+++ b/src/version.c -@@ -742,6 +742,8 @@ static char *(features[]) = - - static int included_patches[] = - { /* Add new patch number below this line */ -+/**/ -+ 128, - /**/ - 3741, - /**/ diff --git a/src/vim.h b/src/vim.h index cd917a3..171b5dc 100644 --- a/src/vim.h @@ -286,297 +269,6 @@ index cd917a3..171b5dc 100644 // Magic chars used in confirm dialog strings #define DLG_BUTTON_SEP '\n' -diff --git a/test.patch b/test.patch -new file mode 100644 -index 0000000..bb09977 ---- /dev/null -+++ b/test.patch -@@ -0,0 +1,285 @@ -+From 6b915c0c0ee7ef82f8d3d310a4345e098cb929b0 Mon Sep 17 00:00:00 2001 -+From: Bram Moolenaar -+Date: Sat, 18 Jan 2020 15:53:19 +0100 -+Subject: [PATCH] patch 8.2.0128: cannot list options one per line -+ -+Problem: Cannot list options one per line. -+Solution: Use ":set!" to list one option per line. -+--- -+ runtime/doc/options.txt | 12 ++++++++---- -+ src/ex_cmds.h | 6 +++--- -+ src/ex_docmd.c | 18 ------------------ -+ src/option.c | 34 +++++++++++++++++++++++++++++----- -+ src/optiondefs.h | 2 +- -+ src/proto/option.pro | 1 + -+ src/testdir/test_options.vim | 9 ++++++++- -+ src/version.c | 2 ++ -+ src/vim.h | 13 +++++++------ -+ 9 files changed, 59 insertions(+), 38 deletions(-) -+ -+diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt -+index b86244feaf4a..5ee2ce13ac76 100644 -+--- a/runtime/doc/options.txt -++++ b/runtime/doc/options.txt -+@@ -22,9 +22,13 @@ achieve special effects. These options come in three forms: -+ 1. Setting options *set-option* *E764* -+ -+ *:se* *:set* -+-:se[t] Show all options that differ from their default value. -++:se[t][!] Show all options that differ from their default value. -++ When [!] is present every option is on a separate -++ line. -+ -+-:se[t] all Show all but terminal options. -++:se[t][!] all Show all but terminal options. -++ When [!] is present every option is on a separate -++ line. -+ -+ :se[t] termcap Show all terminal options. Note that in the GUI the -+ key codes are not shown, because they are generated -+@@ -287,7 +291,7 @@ happens when the buffer is not loaded, but they are lost when the buffer is -+ wiped out |:bwipe|. -+ -+ *:setl* *:setlocal* -+-:setl[ocal] ... Like ":set" but set only the value local to the -++:setl[ocal][!] ... Like ":set" but set only the value local to the -+ current buffer or window. Not all options have a -+ local value. If the option does not have a local -+ value the global value is set. -+@@ -309,7 +313,7 @@ wiped out |:bwipe|. -+ {option}, so that the global value will be used. -+ -+ *:setg* *:setglobal* -+-:setg[lobal] ... Like ":set" but set only the global value for a local -++:setg[lobal][!] ... Like ":set" but set only the global value for a local -+ option without changing the local value. -+ When displaying an option, the global value is shown. -+ With the "all" argument: display global values for all -+diff --git a/src/ex_cmds.h b/src/ex_cmds.h -+index 36a8ad4c2c16..53e49d519cc6 100644 -+--- a/src/ex_cmds.h -++++ b/src/ex_cmds.h -+@@ -1307,16 +1307,16 @@ EXCMD(CMD_scscope, "scscope", ex_scscope, -+ EX_EXTRA|EX_NOTRLCOM, -+ ADDR_NONE), -+ EXCMD(CMD_set, "set", ex_set, -+- EX_TRLBAR|EX_EXTRA|EX_CMDWIN|EX_SBOXOK, -++ EX_BANG|EX_TRLBAR|EX_EXTRA|EX_CMDWIN|EX_SBOXOK, -+ ADDR_NONE), -+ EXCMD(CMD_setfiletype, "setfiletype", ex_setfiletype, -+ EX_TRLBAR|EX_EXTRA|EX_NEEDARG|EX_CMDWIN, -+ ADDR_NONE), -+ EXCMD(CMD_setglobal, "setglobal", ex_set, -+- EX_TRLBAR|EX_EXTRA|EX_CMDWIN|EX_SBOXOK, -++ EX_BANG|EX_TRLBAR|EX_EXTRA|EX_CMDWIN|EX_SBOXOK, -+ ADDR_NONE), -+ EXCMD(CMD_setlocal, "setlocal", ex_set, -+- EX_TRLBAR|EX_EXTRA|EX_CMDWIN|EX_SBOXOK, -++ EX_BANG|EX_TRLBAR|EX_EXTRA|EX_CMDWIN|EX_SBOXOK, -+ ADDR_NONE), -+ EXCMD(CMD_sfind, "sfind", ex_splitview, -+ EX_BANG|EX_FILE1|EX_RANGE|EX_CMDARG|EX_ARGOPT|EX_TRLBAR, -+diff --git a/src/ex_docmd.c b/src/ex_docmd.c -+index 51d85c3a2a0d..193cfcfdffab 100644 -+--- a/src/ex_docmd.c -++++ b/src/ex_docmd.c -+@@ -320,7 +320,6 @@ static void ex_setfiletype(exarg_T *eap); -+ # define ex_diffupdate ex_ni -+ #endif -+ static void ex_digraphs(exarg_T *eap); -+-static void ex_set(exarg_T *eap); -+ #ifdef FEAT_SEARCH_EXTRA -+ static void ex_nohlsearch(exarg_T *eap); -+ #else -+@@ -8488,23 +8487,6 @@ ex_digraphs(exarg_T *eap UNUSED) -+ #endif -+ } -+ -+- static void -+-ex_set(exarg_T *eap) -+-{ -+- int flags = 0; -+- -+- if (eap->cmdidx == CMD_setlocal) -+- flags = OPT_LOCAL; -+- else if (eap->cmdidx == CMD_setglobal) -+- flags = OPT_GLOBAL; -+-#if defined(FEAT_EVAL) && defined(FEAT_BROWSE) -+- if (cmdmod.browse && flags == 0) -+- ex_options(eap); -+- else -+-#endif -+- (void)do_set(eap->arg, flags); -+-} -+- -+ #if defined(FEAT_SEARCH_EXTRA) || defined(PROTO) -+ void -+ set_no_hlsearch(int flag) -+diff --git a/src/option.c b/src/option.c -+index 7c37326f931b..e24181af10ee 100644 -+--- a/src/option.c -++++ b/src/option.c -+@@ -1066,6 +1066,27 @@ set_title_defaults(void) -+ } -+ #endif -+ -++ void -++ex_set(exarg_T *eap) -++{ -++ int flags = 0; -++ -++ if (eap->cmdidx == CMD_setlocal) -++ flags = OPT_LOCAL; -++ else if (eap->cmdidx == CMD_setglobal) -++ flags = OPT_GLOBAL; -++#if defined(FEAT_EVAL) && defined(FEAT_BROWSE) -++ if (cmdmod.browse && flags == 0) -++ ex_options(eap); -++ else -++#endif -++ { -++ if (eap->forceit) -++ flags |= OPT_ONECOLUMN; -++ (void)do_set(eap->arg, flags); -++ } -++} -++ -+ /* -+ * Parse 'arg' for option settings. -+ * -+@@ -4349,7 +4370,7 @@ showoptions( -+ #define INC 20 -+ #define GAP 3 -+ -+- items = ALLOC_MULT(struct vimoption *, PARAM_COUNT); -++ items = ALLOC_MULT(struct vimoption *, OPTION_COUNT); -+ if (items == NULL) -+ return; -+ -+@@ -4364,9 +4385,10 @@ showoptions( -+ msg_puts_title(_("\n--- Options ---")); -+ -+ /* -+- * do the loop two times: -++ * Do the loop two times: -+ * 1. display the short items -+ * 2. display the long items (only strings and numbers) -++ * When "opt_flags" has OPT_ONECOLUMN do everything in run 2. -+ */ -+ for (run = 1; run <= 2 && !got_int; ++run) -+ { -+@@ -4377,12 +4399,12 @@ showoptions( -+ for (p = &options[0]; p->fullname != NULL; p++) -+ { -+ // apply :filter /pat/ -+- if (message_filtered((char_u *) p->fullname)) -++ if (message_filtered((char_u *)p->fullname)) -+ continue; -+ -+ varp = NULL; -+ isterm = istermoption(p); -+- if (opt_flags != 0) -++ if ((opt_flags & (OPT_LOCAL | OPT_GLOBAL)) != 0) -+ { -+ if (p->indir != PV_NONE && !isterm) -+ varp = get_varp_scope(p, opt_flags); -+@@ -4394,7 +4416,9 @@ showoptions( -+ || (all == 1 && !isterm) -+ || (all == 0 && !optval_default(p, varp, p_cp)))) -+ { -+- if (p->flags & P_BOOL) -++ if (opt_flags & OPT_ONECOLUMN) -++ len = Columns; -++ else if (p->flags & P_BOOL) -+ len = 1; // a toggle option fits always -+ else -+ { -+diff --git a/src/optiondefs.h b/src/optiondefs.h -+index 8fda8bff8cae..36701070dd11 100644 -+--- a/src/optiondefs.h -++++ b/src/optiondefs.h -+@@ -3009,7 +3009,7 @@ static struct vimoption options[] = -+ {NULL, NULL, 0, NULL, PV_NONE, {NULL, NULL} SCTX_INIT} -+ }; -+ -+-#define PARAM_COUNT (sizeof(options) / sizeof(struct vimoption)) -++#define OPTION_COUNT (sizeof(options) / sizeof(struct vimoption)) -+ -+ // The following is needed to make the gen_opt_test.vim script work. -+ // {" -+diff --git a/src/proto/option.pro b/src/proto/option.pro -+index dc07ee6b830f..7da2cbf982d8 100644 -+--- a/src/proto/option.pro -++++ b/src/proto/option.pro -+@@ -8,6 +8,7 @@ void set_init_2(void); -+ void set_init_3(void); -+ void set_helplang_default(char_u *lang); -+ void set_title_defaults(void); -++void ex_set(exarg_T *eap); -+ int do_set(char_u *arg, int opt_flags); -+ void did_set_option(int opt_idx, int opt_flags, int new_value, int value_checked); -+ int string_to_key(char_u *arg, int multi_byte); -+diff --git a/src/testdir/test_options.vim b/src/testdir/test_options.vim -+index 636a24d6e9a0..7a74af652acb 100644 -+--- a/src/testdir/test_options.vim -++++ b/src/testdir/test_options.vim -+@@ -44,7 +44,7 @@ func Test_wildchar() -+ set wildchar& -+ endfunc -+ -+-func Test_options() -++func Test_options_command() -+ let caught = 'ok' -+ try -+ options -+@@ -388,6 +388,13 @@ func Test_set_all() -+ set tw& iskeyword& splitbelow& -+ endfunc -+ -++func Test_set_one_column() -++ let out_mult = execute('set all')->split("\n") -++ let out_one = execute('set! all')->split("\n") -++ " one column should be two to four times as many lines -++ call assert_inrange(len(out_mult) * 2, len(out_mult) * 4, len(out_one)) -++endfunc -++ -+ func Test_set_values() -+ if filereadable('opt_test.vim') -+ source opt_test.vim -+diff --git a/src/version.c b/src/version.c -+index d6fa59c9e773..cae650837a61 100644 -+--- a/src/version.c -++++ b/src/version.c -+@@ -742,6 +742,8 @@ static char *(features[]) = -+ -+ static int included_patches[] = -+ { /* Add new patch number below this line */ -++/**/ -++ 128, -+ /**/ -+ 127, -+ /**/ -+diff --git a/src/vim.h b/src/vim.h -+index 16949ae291dd..d41db143990b 100644 -+--- a/src/vim.h -++++ b/src/vim.h -+@@ -1229,12 +1229,13 @@ typedef struct { -+ * When OPT_GLOBAL and OPT_LOCAL are both missing, set both local and global -+ * values, get local value. -+ */ -+-#define OPT_FREE 1 // free old value if it was allocated -+-#define OPT_GLOBAL 2 // use global value -+-#define OPT_LOCAL 4 // use local value -+-#define OPT_MODELINE 8 // option in modeline -+-#define OPT_WINONLY 16 // only set window-local options -+-#define OPT_NOWIN 32 // don't set window-local options -++#define OPT_FREE 0x01 // free old value if it was allocated -++#define OPT_GLOBAL 0x02 // use global value -++#define OPT_LOCAL 0x04 // use local value -++#define OPT_MODELINE 0x08 // option in modeline -++#define OPT_WINONLY 0x10 // only set window-local options -++#define OPT_NOWIN 0x20 // don't set window-local options -++#define OPT_ONECOLUMN 0x40 // list options one per line -+ -+ // Magic chars used in confirm dialog strings -+ #define DLG_BUTTON_SEP '\n' -- -2.27.0 +2.33.0 diff --git a/vim.spec b/vim.spec index f5fb853..34ac0f6 100644 --- a/vim.spec +++ b/vim.spec @@ -11,7 +11,7 @@ Name: vim Epoch: 2 Version: 8.2 -Release: 46 +Release: 47 Summary: Vim is a highly configurable text editor for efficiently creating and changing any kind of text. License: Vim and MIT URL: http://www.vim.org @@ -547,6 +547,12 @@ LC_ALL=en_US.UTF-8 make -j1 test %{_mandir}/man1/evim.* %changelog +* Fri Jul 22 2022 dongyuzhen - 2:8.2-47 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:fix the error of backport-cannot-list-options-one-per-line.patch + * Wed Jul 20 2022 shixuantong - 2:8.2-46 - Type:CVE - ID:CVE-2022-2343 -- Gitee