aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--runtime/doc/autocmd.txt1
-rw-r--r--runtime/doc/change.txt2
-rw-r--r--runtime/doc/deprecated.txt21
-rw-r--r--runtime/doc/map.txt5
-rw-r--r--runtime/doc/news.txt3
-rw-r--r--runtime/doc/options.txt97
-rw-r--r--runtime/doc/quickref.txt2
-rw-r--r--runtime/doc/vim_diff.txt1
-rw-r--r--runtime/optwin.vim20
-rw-r--r--src/nvim/getchar.c52
-rw-r--r--src/nvim/option.c21
-rw-r--r--src/nvim/option_defs.h1
-rw-r--r--src/nvim/options.lua3
-rw-r--r--src/nvim/optionstr.c18
-rw-r--r--test/functional/options/pastetoggle_spec.lua90
-rw-r--r--test/old/testdir/test_mksession.vim7
-rw-r--r--test/old/testdir/test_options.vim1
-rw-r--r--test/old/testdir/test_paste.vim17
18 files changed, 37 insertions, 325 deletions
diff --git a/runtime/doc/autocmd.txt b/runtime/doc/autocmd.txt
index e9a4196252..d0713ee18c 100644
--- a/runtime/doc/autocmd.txt
+++ b/runtime/doc/autocmd.txt
@@ -704,7 +704,6 @@ InsertCharPre When a character is typed in Insert mode,
inserted literally.
Cannot change the text. |textlock|
- Not triggered when 'paste' is set.
*InsertEnter*
InsertEnter Just before starting Insert mode. Also for
Replace mode and Virtual Replace mode. The
diff --git a/runtime/doc/change.txt b/runtime/doc/change.txt
index 3706612d52..91358a8cdd 100644
--- a/runtime/doc/change.txt
+++ b/runtime/doc/change.txt
@@ -1725,8 +1725,6 @@ Note that when 'textwidth' is 0, Vim does no automatic formatting anyway (but
does insert comment leaders according to the 'comments' option). An exception
is when the 'a' flag is present. |auto-format|
-Note that when 'paste' is on, Vim does no formatting at all.
-
Note that 'textwidth' can be non-zero even if Vim never performs auto-wrapping;
'textwidth' is still useful for formatting with "gq".
diff --git a/runtime/doc/deprecated.txt b/runtime/doc/deprecated.txt
index 5c8d7f044f..fe1d6f1645 100644
--- a/runtime/doc/deprecated.txt
+++ b/runtime/doc/deprecated.txt
@@ -146,6 +146,27 @@ OPTIONS
- 'viewoptions' Flags "unix", "slash" are ignored and always enabled.
- *'viminfo'* Deprecated alias to 'shada' option.
- *'viminfofile'* Deprecated alias to 'shadafile' option.
+- *'paste'* *'nopaste'* This option is obsolete; |paste| is handled automatically.
+ Enables "paste mode":
+ - mappings in Insert mode and Command-line mode are
+ disabled
+ - abbreviations are disabled
+ - 'autoindent' is reset
+ - 'expandtab' is reset
+ - 'formatoptions' is used like it is empty
+ - 'revins' is reset
+ - 'ruler' is reset
+ - 'showmatch' is reset
+ - 'smartindent' is reset
+ - 'smarttab' is reset
+ - 'softtabstop' is set to 0
+ - 'textwidth' is set to 0
+ - 'wrapmargin' is set to 0
+ These options keep their value, but their effect is
+ disabled:
+ - 'cindent'
+ - 'indentexpr'
+ - 'lisp'
UI EXTENSIONS
- *ui-wildmenu* Use |ui-cmdline| with |ui-popupmenu| instead. Enabled
diff --git a/runtime/doc/map.txt b/runtime/doc/map.txt
index 3a5223fa3a..c65007d1a4 100644
--- a/runtime/doc/map.txt
+++ b/runtime/doc/map.txt
@@ -695,8 +695,7 @@ this (see |<>|). Example: >
:map _ls :!ls -l %:S<CR>:echo "the end"<CR>
To avoid mapping of the characters you type in insert or Command-line mode,
-type a CTRL-V first. The mapping in Insert mode is disabled if the 'paste'
-option is on.
+type a CTRL-V first.
*map-error*
Note that when an error is encountered (that causes an error message or might
cause a beep) the rest of the mapping is not executed. This is Vi-compatible.
@@ -1070,8 +1069,6 @@ Abbreviations are never recursive. You can use ":ab f f-o-o" without any
problem. But abbreviations can be mapped. {some versions of Vi support
recursive abbreviations, for no apparent reason}
-Abbreviations are disabled if the 'paste' option is on.
-
*:abbreviate-local* *:abbreviate-<buffer>*
Just like mappings, abbreviations can be local to a buffer. This is mostly
used in a |filetype-plugin| file. Example for a C plugin file: >
diff --git a/runtime/doc/news.txt b/runtime/doc/news.txt
index 66e8e5ef9f..ee409d542a 100644
--- a/runtime/doc/news.txt
+++ b/runtime/doc/news.txt
@@ -45,6 +45,9 @@ The following changes may require adaptations in user config or plugins.
- `printheader`
- `printmbcharset`
+• 'paste' option is now deprecated and 'pastetoggle' is removed. |paste| works
+ automatically in GUI and terminal (TUI) Nvim. Just Paste It.™
+
• libiconv and intl are now required build dependencies.
• Unsaved changes are now preserved rather than discarded when |channel-stdio|
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index 6c5b168402..9fff5228f2 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -676,8 +676,6 @@ A jump table for the options with a short description can be found at |Q_op|.
line.
When 'smartindent' or 'cindent' is on the indent is changed in
a different way.
- The 'autoindent' option is reset when the 'paste' option is set and
- restored when 'paste' is reset.
{small difference from Vi: After the indent is deleted when typing
<Esc> or <CR>, the cursor position when moving up or down is after the
deleted indent; Vi puts the cursor somewhere in the deleted indent}.
@@ -1266,7 +1264,6 @@ A jump table for the options with a short description can be found at |Q_op|.
See |C-indenting|.
When you don't like the way 'cindent' works, try the 'smartindent'
option or 'indentexpr'.
- This option is not used when 'paste' is set.
*'cinkeys'* *'cink'*
'cinkeys' 'cink' string (default "0{,0},0),0],:,0#,!^F,o,O,e")
@@ -2246,8 +2243,6 @@ A jump table for the options with a short description can be found at |Q_op|.
<Tab>. Spaces are used in indents with the '>' and '<' commands and
when 'autoindent' is on. To insert a real tab when 'expandtab' is
on, use CTRL-V<Tab>. See also |:retab| and |ins-expandtab|.
- This option is reset when the 'paste' option is set and restored when
- the 'paste' option is reset.
*'exrc'* *'ex'* *'noexrc'* *'noex'*
'exrc' 'ex' boolean (default off)
@@ -2749,9 +2744,8 @@ A jump table for the options with a short description can be found at |Q_op|.
'formatoptions' 'fo' string (default: "tcqj")
local to buffer
This is a sequence of letters which describes how automatic
- formatting is to be done. See |fo-table|. When the 'paste' option is
- on, no formatting is done (like 'formatoptions' is empty). Commas can
- be inserted for readability.
+ formatting is to be done. See |fo-table|. Commas can be inserted for
+ readability.
To avoid problems with flags that are added in the future, use the
"+=" and "-=" feature of ":set" |add-option-flags|.
@@ -3392,7 +3386,6 @@ A jump table for the options with a short description can be found at |Q_op|.
When this option is not empty, it overrules the 'cindent' and
'smartindent' indenting. When 'lisp' is set, this option is
is only used when 'lispoptions' contains "expr:1".
- When 'paste' is set this option is not used for indenting.
The expression is evaluated with |v:lnum| set to the line number for
which the indent is to be computed. The cursor is also in this line
when the expression is evaluated (but it may be moved around).
@@ -3761,7 +3754,6 @@ A jump table for the options with a short description can be found at |Q_op|.
The '-' character is included in keyword characters. Redefines the
"=" operator to use this same indentation algorithm rather than
calling an external program if 'equalprg' is empty.
- This option is not used when 'paste' is set.
*'lispoptions'* *'lop'*
'lispoptions' 'lop' string (default "")
@@ -4474,77 +4466,6 @@ A jump table for the options with a short description can be found at |Q_op|.
Specifies the nroff macros that separate paragraphs. These are pairs
of two letters (see |object-motions|).
- *'paste'* *'nopaste'*
-'paste' boolean (default off)
- global
- This option is obsolete; |bracketed-paste-mode| is built-in.
-
- Put Vim in Paste mode. This is useful if you want to cut or copy
- some text from one window and paste it in Vim. This will avoid
- unexpected effects.
- Setting this option is useful when using Vim in a terminal, where Vim
- cannot distinguish between typed text and pasted text. In the GUI, Vim
- knows about pasting and will mostly do the right thing without 'paste'
- being set. The same is true for a terminal where Vim handles the
- mouse clicks itself.
- This option is reset when starting the GUI. Thus if you set it in
- your vimrc it will work in a terminal, but not in the GUI. Setting
- 'paste' in the GUI has side effects: e.g., the Paste toolbar button
- will no longer work in Insert mode, because it uses a mapping.
- When the 'paste' option is switched on (also when it was already on):
- - mapping in Insert mode and Command-line mode is disabled
- - abbreviations are disabled
- - 'autoindent' is reset
- - 'expandtab' is reset
- - 'hkmap' is reset
- - 'revins' is reset
- - 'ruler' is reset
- - 'showmatch' is reset
- - 'smarttab' is reset
- - 'softtabstop' is set to 0
- - 'textwidth' is set to 0
- - 'wrapmargin' is set to 0
- - 'varsofttabstop' is made empty
- These options keep their value, but their effect is disabled:
- - 'cindent'
- - 'formatoptions' is used like it is empty
- - 'indentexpr'
- - 'lisp'
- - 'smartindent'
- NOTE: When you start editing another file while the 'paste' option is
- on, settings from the modelines or autocommands may change the
- settings again, causing trouble when pasting text. You might want to
- set the 'paste' option again.
- When the 'paste' option is reset the mentioned options are restored to
- the value before the moment 'paste' was switched from off to on.
- Resetting 'paste' before ever setting it does not have any effect.
- Since mapping doesn't work while 'paste' is active, you need to use
- the 'pastetoggle' option to toggle the 'paste' option with some key.
-
- *'pastetoggle'* *'pt'*
-'pastetoggle' 'pt' string (default "")
- global
- When non-empty, specifies the key sequence that toggles the 'paste'
- option. This is like specifying a mapping: >
- :map {keys} :set invpaste<CR>
-< Where {keys} is the value of 'pastetoggle'.
- The difference is that it will work even when 'paste' is set.
- 'pastetoggle' works in Insert mode and Normal mode, but not in
- Command-line mode.
- Mappings are checked first, thus overrule 'pastetoggle'. However,
- when 'paste' is on mappings are ignored in Insert mode, thus you can do
- this: >
- :map <F10> :set paste<CR>
- :map <F11> :set nopaste<CR>
- :imap <F10> <C-O>:set paste<CR>
- :imap <F11> <nop>
- :set pastetoggle=<F11>
-< This will make <F10> start paste mode and <F11> stop paste mode.
- Note that typing <F10> in paste mode inserts "<F10>", since in paste
- mode everything is inserted literally, except the 'pastetoggle' key
- sequence.
- When the value has several bytes 'ttimeoutlen' applies.
-
*'pex'* *'patchexpr'*
'patchexpr' 'pex' string (default "")
global
@@ -4827,8 +4748,6 @@ A jump table for the options with a short description can be found at |Q_op|.
Inserting characters in Insert mode will work backwards. See "typing
backwards" |ins-reverse|. This option can be toggled with the CTRL-_
command in Insert mode, when 'allowrevins' is set.
- This option is reset when 'paste' is set and restored when 'paste' is
- reset.
*'rightleft'* *'rl'* *'norightleft'* *'norl'*
'rightleft' 'rl' boolean (default off)
@@ -4877,8 +4796,6 @@ A jump table for the options with a short description can be found at |Q_op|.
separated with a dash.
For an empty line "0-1" is shown.
For an empty buffer the line number will also be zero: "0,0-1".
- This option is reset when 'paste' is set and restored when 'paste' is
- reset.
If you don't want to see the ruler all the time but want to know where
you are, use "g CTRL-G" |g_CTRL-G|.
@@ -5610,8 +5527,6 @@ A jump table for the options with a short description can be found at |Q_op|.
show the match can be set with 'matchtime'.
A Beep is given if there is no match (no matter if the match can be
seen or not).
- This option is reset when 'paste' is set and restored when 'paste' is
- reset.
When the 'm' flag is not included in 'cpoptions', typing a character
will immediately move the cursor back to where it belongs.
See the "sm" field in 'guicursor' for setting the cursor shape and
@@ -5733,8 +5648,6 @@ A jump table for the options with a short description can be found at |Q_op|.
mapping: ":inoremap # X^H#", where ^H is entered with CTRL-V CTRL-H.
When using the ">>" command, lines starting with '#' are not shifted
right.
- This option is reset when 'paste' is set and restored when 'paste' is
- reset.
*'smarttab'* *'sta'* *'nosmarttab'* *'nosta'*
'smarttab' 'sta' boolean (default on)
@@ -5749,8 +5662,6 @@ A jump table for the options with a short description can be found at |Q_op|.
What gets inserted (a <Tab> or spaces) depends on the 'expandtab'
option. Also see |ins-expandtab|. When 'expandtab' is not set, the
number of spaces is minimized by using <Tab>s.
- This option is reset when 'paste' is set and restored when 'paste' is
- reset.
*'softtabstop'* *'sts'*
'softtabstop' 'sts' number (default 0)
@@ -5763,8 +5674,6 @@ A jump table for the options with a short description can be found at |Q_op|.
commands like "x" still work on the actual characters.
When 'sts' is zero, this feature is off.
When 'sts' is negative, the value of 'shiftwidth' is used.
- 'softtabstop' is set to 0 when the 'paste' option is set and restored
- when 'paste' is reset.
See also |ins-expandtab|. When 'expandtab' is not set, the number of
spaces is minimized by using <Tab>s.
The 'L' flag in 'cpoptions' changes how tabs are used when 'list' is
@@ -6579,8 +6488,6 @@ A jump table for the options with a short description can be found at |Q_op|.
Maximum width of text that is being inserted. A longer line will be
broken after white space to get this width. A zero value disables
this.
- 'textwidth' is set to 0 when the 'paste' option is set and restored
- when 'paste' is reset.
When 'textwidth' is zero, 'wrapmargin' may be used. See also
'formatoptions' and |ins-textwidth|.
When 'formatexpr' is set it will be used to break the line.
diff --git a/runtime/doc/quickref.txt b/runtime/doc/quickref.txt
index d17df3cd61..952f0064e6 100644
--- a/runtime/doc/quickref.txt
+++ b/runtime/doc/quickref.txt
@@ -812,8 +812,6 @@ Short explanation of each option: *option-list*
'operatorfunc' 'opfunc' function to be called for |g@| operator
'packpath' 'pp' list of directories used for packages
'paragraphs' 'para' nroff macros that separate paragraphs
-'paste' allow pasting text
-'pastetoggle' 'pt' key code that causes 'paste' to toggle
'patchexpr' 'pex' expression used to patch a file
'patchmode' 'pm' keep the oldest version of a file
'path' 'pa' list of directories searched with "gf" et.al.
diff --git a/runtime/doc/vim_diff.txt b/runtime/doc/vim_diff.txt
index 21736059c4..9c01e3dbc7 100644
--- a/runtime/doc/vim_diff.txt
+++ b/runtime/doc/vim_diff.txt
@@ -623,6 +623,7 @@ Options:
'highlight' (Names of builtin |highlight-groups| cannot be changed.)
*'hkmap'* *'hk'* use `set keymap=hebrew` instead.
*'hkmapp'* *'hkp'* use `set keymap=hebrewp` instead.
+ *'pastetoggle'* *'pt'*
*'imactivatefunc'* *'imaf'*
*'imactivatekey'* *'imak'*
diff --git a/runtime/optwin.vim b/runtime/optwin.vim
index 200254321e..0d10ac4758 100644
--- a/runtime/optwin.vim
+++ b/runtime/optwin.vim
@@ -106,11 +106,7 @@ func <SID>Update(lnum, line, local, thiswin)
else
let name = substitute(a:line, '^ \tset \(no\)\=\([a-z]*\).*', '\2', "")
endif
- if name == "pt" && &pt =~ "\x80"
- let val = <SID>PTvalue()
- else
- let val = escape(eval('&' . name), " \t\\\"|")
- endif
+ let val = escape(eval('&' . name), " \t\\\"|")
if a:local
exe a:thiswin . "wincmd w"
endif
@@ -211,14 +207,6 @@ func <SID>Header(text)
let s:lnum = s:lnum + 1
endfunc
-" Get the value of 'pastetoggle'. It could be a special key.
-func <SID>PTvalue()
- redir @a
- silent set pt
- redir END
- return substitute(@a, '[^=]*=\(.*\)', '\1', "")
-endfunc
-
" Restore the previous value of 'cpoptions' here, it's used below.
let &cpo = s:cpo_save
@@ -232,12 +220,6 @@ call <SID>AddOption("cpoptions", gettext("list of flags to specify Vi compatibil
call <SID>OptionG("cpo", &cpo)
call <SID>AddOption("paste", gettext("paste mode, insert typed text literally"))
call <SID>BinOptionG("paste", &paste)
-call <SID>AddOption("pastetoggle", gettext("key sequence to toggle paste mode"))
-if &pt =~ "\x80"
- call append("$", " \tset pt=" . <SID>PTvalue())
-else
- call <SID>OptionG("pt", &pt)
-endif
call <SID>AddOption("runtimepath", gettext("list of directories used for runtime files and plugins"))
call <SID>OptionG("rtp", &rtp)
call <SID>AddOption("packpath", gettext("list of directories used for plugin packages"))
diff --git a/src/nvim/getchar.c b/src/nvim/getchar.c
index ea541dbca4..605705e0e3 100644
--- a/src/nvim/getchar.c
+++ b/src/nvim/getchar.c
@@ -2073,39 +2073,6 @@ static int handle_mapping(int *keylenp, const bool *timedout, int *mapdepth)
}
}
- // Check for match with 'pastetoggle'
- if (*p_pt != NUL && mp == NULL && (State & (MODE_INSERT | MODE_NORMAL))) {
- bool match = typebuf_match_len((uint8_t *)p_pt, &mlen);
- if (match) {
- // write chars to script file(s)
- if (mlen > typebuf.tb_maplen) {
- gotchars(typebuf.tb_buf + typebuf.tb_off + typebuf.tb_maplen,
- (size_t)(mlen - typebuf.tb_maplen));
- }
-
- del_typebuf(mlen, 0); // remove the chars
- set_option_value_give_err("paste", !p_paste, NULL, 0);
- if (!(State & MODE_INSERT)) {
- msg_col = 0;
- msg_row = Rows - 1;
- msg_clr_eos(); // clear ruler
- }
- status_redraw_all();
- redraw_statuslines();
- showmode();
- setcursor();
- *keylenp = keylen;
- return map_result_retry;
- }
- // Need more chars for partly match.
- if (mlen == typebuf.tb_len) {
- keylen = KEYLEN_PART_KEY;
- } else if (max_mlen < mlen) {
- // no match, may have to check for termcode at next character
- max_mlen = mlen + 1;
- }
- }
-
if ((mp == NULL || max_mlen > mp_match_len) && keylen != KEYLEN_PART_MAP) {
// When no matching mapping found or found a non-matching mapping that
// matches at least what the matching mapping matched:
@@ -2116,13 +2083,6 @@ static int handle_mapping(int *keylenp, const bool *timedout, int *mapdepth)
|| (typebuf.tb_buf[typebuf.tb_off + 1] == KS_MODIFIER && typebuf.tb_len < 4))) {
// Incomplete modifier sequence: cannot decide whether to simplify yet.
keylen = KEYLEN_PART_KEY;
- } else if (keylen == KEYLEN_PART_KEY && !*timedout) {
- // If 'pastetoggle' matched partially, don't simplify.
- // When the last characters were not typed, don't wait for a typed character to
- // complete 'pastetoggle'.
- if (typebuf.tb_len == typebuf.tb_maplen) {
- keylen = 0;
- }
} else {
// Try to include the modifier into the key.
keylen = check_simplify_modifier(max_mlen + 1);
@@ -2923,18 +2883,6 @@ int fix_input_buffer(uint8_t *buf, int len)
return len;
}
-static bool typebuf_match_len(const uint8_t *str, int *mlen)
-{
- int i;
- for (i = 0; i < typebuf.tb_len && str[i]; i++) {
- if (str[i] != typebuf.tb_buf[typebuf.tb_off + i]) {
- break;
- }
- }
- *mlen = i;
- return str[i] == NUL; // matched the whole string
-}
-
/// Get command argument for <Cmd> key
char *getcmdkeycmd(int promptc, void *cookie, int indent, bool do_concat)
{
diff --git a/src/nvim/option.c b/src/nvim/option.c
index e4baddbeef..f9b7aa9f99 100644
--- a/src/nvim/option.c
+++ b/src/nvim/option.c
@@ -2918,11 +2918,7 @@ getoption_T get_option_value(const char *name, long *numval, char **stringval, u
return gov_hidden_string;
}
if (stringval != NULL) {
- if ((char **)varp == &p_pt) { // 'pastetoggle'
- *stringval = str2special_save(*(char **)(varp), false, false);
- } else {
- *stringval = xstrdup(*(char **)(varp));
- }
+ *stringval = xstrdup(*(char **)(varp));
}
return gov_string;
}
@@ -3532,17 +3528,7 @@ static int put_setstring(FILE *fd, char *cmd, char *name, char **valuep, uint64_
char_u *part = NULL;
if (*valuep != NULL) {
- // Output 'pastetoggle' as key names. For other
- // options some characters have to be escaped with
- // CTRL-V or backslash
- if (valuep == &p_pt) {
- char_u *s = (char_u *)(*valuep);
- while (*s != NUL) {
- if (put_escstr(fd, (char *)str2special((const char **)&s, false, false), 2) == FAIL) {
- return FAIL;
- }
- }
- } else if ((flags & P_EXPAND) != 0) {
+ if ((flags & P_EXPAND) != 0) {
size_t size = (size_t)strlen(*valuep) + 1;
// replace home directory in the whole option value into "buf"
@@ -4990,9 +4976,6 @@ static void option_value2string(vimoption_T *opp, int scope)
NameBuff[0] = NUL;
} else if (opp->flags & P_EXPAND) {
home_replace(NULL, varp, NameBuff, MAXPATHL, false);
- // Translate 'pastetoggle' into special key names.
- } else if ((char **)opp->var == &p_pt) {
- str2specialbuf((const char *)p_pt, NameBuff, MAXPATHL);
} else {
xstrlcpy(NameBuff, varp, MAXPATHL);
}
diff --git a/src/nvim/option_defs.h b/src/nvim/option_defs.h
index 470eae2090..de289fe54e 100644
--- a/src/nvim/option_defs.h
+++ b/src/nvim/option_defs.h
@@ -613,7 +613,6 @@ EXTERN char *p_nf; ///< 'nrformats'
EXTERN char *p_opfunc; // 'operatorfunc'
EXTERN char *p_para; // 'paragraphs'
EXTERN int p_paste; // 'paste'
-EXTERN char *p_pt; // 'pastetoggle'
EXTERN char *p_pex; // 'patchexpr'
EXTERN char *p_pm; // 'patchmode'
EXTERN char *p_path; // 'path'
diff --git a/src/nvim/options.lua b/src/nvim/options.lua
index a4ee114f39..bb673a2c58 100644
--- a/src/nvim/options.lua
+++ b/src/nvim/options.lua
@@ -1685,9 +1685,8 @@ return {
},
{
full_name='pastetoggle', abbreviation='pt',
- short_desc=N_("key code that causes 'paste' to toggle"),
+ short_desc=N_("No description"),
type='string', scope={'global'},
- varname='p_pt',
defaults={if_true=""}
},
{
diff --git a/src/nvim/optionstr.c b/src/nvim/optionstr.c
index 5127bb2097..cba95377a2 100644
--- a/src/nvim/optionstr.c
+++ b/src/nvim/optionstr.c
@@ -1306,22 +1306,6 @@ static void did_set_foldcolumn(char **varp, char **errmsg)
}
}
-static void did_set_pastetoggle(void)
-{
- // 'pastetoggle': translate key codes like in a mapping
- if (*p_pt) {
- char *p = NULL;
- (void)replace_termcodes(p_pt,
- strlen(p_pt),
- &p, REPTERM_FROM_PART | REPTERM_DO_LT, NULL,
- CPO_TO_CPO_FLAGS);
- if (p != NULL) {
- free_string_option(p_pt);
- p_pt = p;
- }
- }
-}
-
static void did_set_backspace(char **errmsg)
{
if (ascii_isdigit(*p_bs)) {
@@ -1778,8 +1762,6 @@ static char *did_set_string_option_for(buf_T *buf, win_T *win, int opt_idx, char
did_set_opt_strings(*varp, p_sloc_values, false, &errmsg);
} else if (gvarp == &win->w_allbuf_opt.wo_fdc) { // 'foldcolumn'
did_set_foldcolumn(varp, &errmsg);
- } else if (varp == &p_pt) { // 'pastetoggle'
- did_set_pastetoggle();
} else if (varp == &p_bs) { // 'backspace'
did_set_backspace(&errmsg);
} else if (varp == &p_bo) {
diff --git a/test/functional/options/pastetoggle_spec.lua b/test/functional/options/pastetoggle_spec.lua
deleted file mode 100644
index 40c14fa187..0000000000
--- a/test/functional/options/pastetoggle_spec.lua
+++ /dev/null
@@ -1,90 +0,0 @@
-local helpers = require('test.functional.helpers')(after_each)
-
-local clear = helpers.clear
-local feed = helpers.feed
-local command = helpers.command
-local eq = helpers.eq
-local expect = helpers.expect
-local eval = helpers.eval
-local insert = helpers.insert
-local meths = helpers.meths
-local sleep = helpers.sleep
-
-describe("'pastetoggle' option", function()
- before_each(clear)
- it("toggles 'paste'", function()
- command('set pastetoggle=a')
- eq(0, eval('&paste'))
- feed('a')
- -- Need another key so that the vgetorpeek() function returns.
- feed('j')
- eq(1, eval('&paste'))
- end)
- describe("multiple key 'pastetoggle'", function()
- before_each(function()
- eq(0, eval('&paste'))
- command('set timeoutlen=1 ttimeoutlen=10000')
- end)
- it('is waited for when chars are typed', function()
- local pastetoggle = 'lllll'
- command('set pastetoggle=' .. pastetoggle)
- feed(pastetoggle:sub(0, 2))
- -- sleep() for long enough that vgetorpeek() is gotten into, but short
- -- enough that ttimeoutlen is not reached.
- sleep(200)
- feed(pastetoggle:sub(3, -1))
- -- Need another key so that the vgetorpeek() function returns.
- feed('j')
- eq(1, eval('&paste'))
- end)
-
- it('is not waited for when there are no typed chars after mapped chars', function()
- command('set pastetoggle=abc')
- command('imap d a')
- meths.feedkeys('id', 't', true)
- -- sleep() for long enough that vgetorpeek() is gotten into, but short
- -- enough that ttimeoutlen is not reached.
- sleep(200)
- feed('bc')
- -- Need another key so that the vgetorpeek() function returns.
- feed('j')
- -- 'ttimeoutlen' should NOT apply
- eq(0, eval('&paste'))
- end)
-
- it('is waited for when there are typed chars after mapped chars', function()
- command('set pastetoggle=abc')
- command('imap d a')
- meths.feedkeys('idb', 't', true)
- -- sleep() for long enough that vgetorpeek() is gotten into, but short
- -- enough that ttimeoutlen is not reached.
- sleep(200)
- feed('c')
- -- Need another key so that the vgetorpeek() function returns.
- feed('j')
- -- 'ttimeoutlen' should apply
- eq(1, eval('&paste'))
- end)
-
- it('is waited for when there are typed chars after noremapped chars', function()
- command('set pastetoggle=abc')
- command('inoremap d a')
- meths.feedkeys('idb', 't', true)
- -- sleep() for long enough that vgetorpeek() is gotten into, but short
- -- enough that ttimeoutlen is not reached.
- sleep(200)
- feed('c')
- -- Need another key so that the vgetorpeek() function returns.
- feed('j')
- -- 'ttimeoutlen' should apply
- eq(1, eval('&paste'))
- end)
- end)
- it('does not interfere with character-find', function()
- insert('foo,bar')
- feed('0')
- command('set pastetoggle=,sp')
- feed('dt,')
- expect(',bar')
- end)
-end)
diff --git a/test/old/testdir/test_mksession.vim b/test/old/testdir/test_mksession.vim
index 972397cb91..f60d89faae 100644
--- a/test/old/testdir/test_mksession.vim
+++ b/test/old/testdir/test_mksession.vim
@@ -943,15 +943,16 @@ func Test_mkvimrc()
" the 'pastetoggle', 'wildchar' and 'wildcharm' option values should be
" stored as key names in the vimrc file
- set pastetoggle=<F5>
+ " set pastetoggle=<F5>
set wildchar=<F6>
set wildcharm=<F7>
call assert_fails('mkvimrc Xtestvimrc')
mkvimrc! Xtestvimrc
- call assert_notequal(-1, index(readfile('Xtestvimrc'), 'set pastetoggle=<F5>'))
+ " call assert_notequal(-1, index(readfile('Xtestvimrc'), 'set pastetoggle=<F5>'))
call assert_notequal(-1, index(readfile('Xtestvimrc'), 'set wildchar=<F6>'))
call assert_notequal(-1, index(readfile('Xtestvimrc'), 'set wildcharm=<F7>'))
- set pastetoggle& wildchar& wildcharm&
+ " set pastetoggle& wildchar& wildcharm&
+ set wildchar& wildcharm&
call delete('Xtestvimrc')
endfunc
diff --git a/test/old/testdir/test_options.vim b/test/old/testdir/test_options.vim
index b6b982e92e..d18802adc1 100644
--- a/test/old/testdir/test_options.vim
+++ b/test/old/testdir/test_options.vim
@@ -49,6 +49,7 @@ endfunc
" Test for getting the value of 'pastetoggle'
func Test_pastetoggle()
+ throw "Skipped: 'pastetoggle' is removed from Nvim"
" character with K_SPECIAL byte
let &pastetoggle = '…'
call assert_equal('…', &pastetoggle)
diff --git a/test/old/testdir/test_paste.vim b/test/old/testdir/test_paste.vim
index 923f4f42a6..9ed3adca9b 100644
--- a/test/old/testdir/test_paste.vim
+++ b/test/old/testdir/test_paste.vim
@@ -1,21 +1,4 @@
-" Test for 'pastetoggle'
-func Test_pastetoggle()
- new
- set pastetoggle=<F4>
- set nopaste
- call feedkeys("iHello\<F4>", 'xt')
- call assert_true(&paste)
- call feedkeys("i\<F4>", 'xt')
- call assert_false(&paste)
- call assert_equal('Hello', getline(1))
- " command-line completion for 'pastetoggle' value
- call feedkeys(":set pastetoggle=\<Tab>\<C-B>\"\<CR>", 'xt')
- call assert_equal('"set pastetoggle=<F4>', @:)
- set pastetoggle&
- bwipe!
-endfunc
-
" Test for restoring option values when 'paste' is disabled
func Test_paste_opt_restore()
set autoindent expandtab ruler showmatch