Commit Graph

263 Commits

Author SHA1 Message Date
Justin M. Keyes
7c38994ff2 aucmd_prepbuf: also restore prevwin #9741
bisected to f5d5da3917

Other test steps:

    nvim -u NORC
    :terminal tree /    " Produces lots of output
    :edit somefile.txt
    :vsplit
    :vsplit
    <c-w>l
    <c-w>l
    <c-w>h
    <c-w>p
2019-03-17 02:09:06 +01:00
Justin M. Keyes
b1f25ea187 autocmd: do not show empty section after ++once handlers expire
Problem: If autocmd pattern only contained `++once` handlers, and
         all of them completed, then there would be an empty group
         displayed by `:autocmd Foo`.
Solution: Delete the pattern if all of its commands were deleted.
2019-03-14 01:30:11 +01:00
Justin M. Keyes
3259e45f92 autocmd: rename: "++nested", "++once"
Based on feedback from upstream:
https://github.com/vim/vim/pull/4100
2019-03-14 01:30:11 +01:00
Justin M. Keyes
9312e2d06a autocmd: rename "once" => "-once" #9713
- Rename "nested" to "-nested", but continue to support "nested" for
  backwards-compatibility.
- Allow any order: "-once -nested" or "-nested -once".

ref https://github.com/neovim/neovim/pull/9706#issuecomment-471295747
2019-03-11 21:01:47 +01:00
Justin M. Keyes
c12cf5bde7 autocmd: introduce "once" feature
Adds a new feature to :autocmd which sets the handler to be executed at
most one times.

Before:

    augroup FooGroup
      autocmd!
      autocmd FileType foo call Foo() | autocmd! FooGroup * <buffer>
    augroup END

After:

    autocmd FileType foo once call Foo()
2019-03-10 04:58:30 +01:00
Justin M. Keyes
ed4132d7e9 cleanup: remove legacy enc_dbcs global #9660 2019-03-02 02:33:36 +01:00
Justin M. Keyes
996916277d I/O: ignore ENOTSUP for failed fsync()
Suggested by ZyX in https://github.com/neovim/neovim/issues/6725#issuecomment-312197691 :
> There already is an exception if writing to a “device” (e.g. FIFO).
> It makes sense to ignore certain errors like ENOTSUP or EOPNOTSUPP
> since it is not something we or user can do anything about.

ref #6725
2019-02-21 02:00:51 +01:00
Marco Hinz
70f6939fd4 events: add "Signal" event #9564
..which gets triggered when SIGUSR1 is sent to the nvim process.

Closes #9562
2019-02-04 02:39:05 +01:00
Justin M. Keyes
ddd4ed3ce5 clang/"Dead assignment" 2019-01-13 17:53:26 +01:00
Justin M. Keyes
a70fde1b45 build: enable -Wshadow
Note about shada.c:
- shada_read_next_item_start was intentionally shadowing `unpacked` and
  `i` because many of the macros (e.g. ADDITIONAL_KEY) implicitly
  depended on those variable names.
- Macros were changed to parameterize `unpacked` (but not `i`). Macros
  like CLEAR_GA_AND_ERROR_OUT do control-flow (goto), so any other
  approach is messy.
2019-01-02 21:06:37 +01:00
Jan Edmund Lazo
0930435fc3 vim-patch:8.0.1748: CmdlineEnter command uses backslash instead of slash
Problem:    CmdlineEnter command uses backslash instead of slash.
Solution:   Don't treat the character as a file name. (closes vim/vim#2837)
a4baf5b325
2018-12-12 19:14:16 -05:00
Anatolii Sakhnik
cf1ffa9166 vim-patch:8.1.0360: using an external diff program is slow and inflexible
Problem:    Using an external diff program is slow and inflexible.
Solution:   Include the xdiff library. (Christian Brabandt)
            Use it by default.

e828b7621c

vim-patch:8.1.0360
vim-patch:8.1.0364
vim-patch:8.1.0366
vim-patch:8.1.0370
vim-patch:8.1.0377
vim-patch:8.1.0378
vim-patch:8.1.0381
vim-patch:8.1.0396
vim-patch:8.1.0432
2018-12-09 19:45:56 +02:00
Jan Edmund Lazo
21824df3c6 lint 2018-11-12 11:12:44 -05:00
Jan Edmund Lazo
8fa7b6c8af vim-patch:8.1.0096: inconsistent use of the word autocommands
Problem:    Inconsistent use of the word autocommands.
Solution:   Don't use auto-commands or "auto commands".
8c55533c6f
2018-11-12 11:11:31 -05:00
Jan Edmund Lazo
42419e5a73 vim-patch:8.0.1620: reading spell file has no good EOF detection
Problem:    Reading spell file has no good EOF detection.
Solution:   Check for EOF at every character read for a length field.
e26e0d2b83
2018-11-12 08:45:03 -05:00
ckelsel
aeda13cfdf vim-patch:8.0.0685: when conversion fails written file may be truncated
Problem:    When making backups is disabled and conversion with iconv fails
            the written file is truncated. (Luo Chen)
Solution:   First try converting the file and write the file only when it did
            not fail. (partly by Christian Brabandt)
e6bf655bc4
2018-10-12 19:49:14 -04:00
Jan Edmund Lazo
2bf1aa5628 vim-patch:8.0.1777: cannot cleanup before loading another colorscheme (#9104)
Problem:    Cannot cleanup before loading another colorscheme.
Solution:   Add the ColorSchemePre autocommand event.
60a68362aa
2018-10-11 08:27:37 +02:00
MichaHoffmann
2c84421de2 src/nvim/eval.c
src/nvim/eval/typval.c
src/nvim/fileio.c
src/nvim/main.c
src/nvim/regexp_nfa.c
src/nvim/spellfile.c

changed some EMSG[..] Macros to emsgf
2018-10-07 12:24:29 +02:00
MichaHoffmann
8cb04c2230 fixed lint errors 2018-09-24 22:05:01 +02:00
MichaHoffmann
affef0aab8 add func_attr_printf in :
log.c
message.c
strings.c

fixed some printf warnings in:

src/nvim/undo.c
src/nvim/eval.c
src/nvim/eval/encode.c
src/nvim/eval/typval.c
src/nvim/ex_getln.c
src/nvim/fileio.c
src/nvim/lua/executor.c
src/nvim/main.c
src/nvim/regexp_nfa.c
src/nvim/shada.c
src/nvim/spellfile.c
src/nvim/tui/terminfo.c
src/nvim/garray.h
2018-09-24 21:28:04 +02:00
Jan Edmund Lazo
db90c0c9bf globals: KeyTyped is bool 2018-09-14 01:01:00 -04:00
Jan Edmund Lazo
20354dbd75 vim-patch:8.0.1275: CmdlineLeave autocmd prevents fold from opening
Problem:    CmdlineLeave autocmd prevents fold from opening. (Waivek)
Solution:   Save and restore KeyTyped. (closes vim/vim#2305)
c9e9c71409
2018-09-13 23:08:16 -04:00
Justin M. Keyes
d9fcd43638 Merge #8967 'vim-patch:8.0.1781' 2018-09-10 09:24:16 +02:00
Andrzej Pacanowski
0c80fead86 vim-patch:8.0.1781: file names in quickfix window are not shortened
Problem:    File names in quickfix window are not always shortened.
Solution:   Shorten the file name when opening the quickfix window. (Yegappan
            Lakshmanan, closes vim/vim#2851, closes vim/vim#2846)
a796d46f29
2018-09-10 06:45:13 +02:00
Jan Edmund Lazo
e346c01c31 vim-patch:8.1.0161: buffer not updated with 'autoread' set if file was deleted
Problem:    Buffer not updated with 'autoread' set if file was deleted.
            (Michael Naumann)
Solution:   Don't set the timestamp to zero. (closes vim/vim#3165)
386bc82a3f

Sleep 2 seconds for autoread (https://github.com/neovim/neovim/pull/7592).
2018-08-13 11:33:04 -04:00
Jan Edmund Lazo
a4c957bab7 lint 2018-08-12 18:21:58 -04:00
Jan Edmund Lazo
7faf682525 vim-patch:8.0.1227: undefined left shift in readfile()
Problem:    Undefined left shift in readfile(). (Brian 'geeknik' Carpenter)
Solution:   Add cast to unsigned. (Dominique Pelle, closes vim/vim#2253)
dc1c981294
2018-08-12 17:56:23 -04:00
KunMing Xie
38fb835854 vim-patch:8.0.0548: saving the redo buffer only works one time (#8629)
Problem:    Saving the redo buffer only works one time, resulting in the "."
            command not working well for a function call inside another
            function call. (Ingo Karkat)
Solution:   Save the redo buffer at every user function call. (closes vim/vim#1619)
d4863aa99e
2018-06-24 22:16:57 +02:00
Justin M. Keyes
e1c6109e62 Merge #8618 'Replace b_changedtick with always-inline functions' 2018-06-22 08:35:28 +02:00
ZyX
eaf2a25f12 *: Replace b_changedtick with new always-inline functions
Ref #8474
2018-06-22 00:44:31 +03:00
Justin M. Keyes
4c3c04d03c Merge #8526 from janlazo/vim-8.0.0451 2018-06-16 11:55:40 +02:00
Marco Hinz
f4ba20d1c0 Fix implicit conversion warning (#8536) 2018-06-13 10:48:29 +02:00
Jan Edmund Lazo
3c7ea8d619 vim-patch:8.0.0451: some macros are in lower case
Problem:    Some macros are in lower case.
Solution:   Make a few more macros upper case. Avoid lower case macros use an
            argument twice.
91acfffc1e
2018-06-12 02:00:50 -04:00
Jan Edmund Lazo
bbb88607c9 vim-patch:8.0.0466: still macros that should be all-caps (#8510)
Problem:    There are still a few macros that should be all-caps.
Solution:   Make a few more macros all-caps.
8820b48654
2018-06-10 12:24:00 +02:00
Justin M. Keyes
d995825c66 Merge #8377 'TextChangedP autocommand' 2018-05-19 11:44:52 +02:00
Shougo Matsushita
021c5875c1 vim-patch:8.0.1494: no autocmd triggered in Insert mode with visible popup menu
Problem:    No autocmd triggered in Insert mode with visible popup menu.
Solution:   Add TextChangedP. (Prabir Shrestha, Christian Brabandt,
            closes vim/vim#2372, closes vim/vim#1691)
            Fix that the TextChanged autocommands are not always triggered
            when sourcing a script.

5a09343719
2018-05-14 19:14:25 +08:00
Justin M. Keyes
53f11dcfc7 Merge #8218 'Fix errors reported by PVS'
closes #4983
2018-04-27 09:25:02 +02:00
ZyX
4bab9d34e6 *: Fix clint errors 2018-04-22 20:31:40 +03:00
Justin M. Keyes
498731615c IO: let 'fsync' option control more cases
Vim has the 'swapsync' option which we removed in 62d137ce09.
Instead let 'fsync' control swapfile-fsync.

These cases ALWAYS force fsync (ignoring 'fsync' option):
- Idle (CursorHold).
- Exit caused by deadly signal.
- SIGPWR signal.
- Explicit :preserve command.
2018-04-21 12:51:27 +02:00
ZyX
3189841984 fileio: Silence PVS/V614: buffer is initialized if conv_restlen > 0 2018-04-15 20:32:21 +03:00
ZyX
cd27198526 fileio: Fix PVS/V547: split is not used
This is removed functionality, specifically no longer supported 16-bit integers.
2018-04-15 20:30:31 +03:00
ZyX
1fb4282f1c fileio: Fix PVS/V560: end was already checked
See condition at line 3309.
2018-04-15 20:27:41 +03:00
b-r-o-c-k
ee4e1fd8ec win: Fix reading content from stdin (#8267)
Fixes #6890 by reading from the Windows console input buffer after
stdin has been closed.

Vim defines HAVE_DUP for Windows and does the close-dup dance[1]:

    close(0);
    dup(2);

which always fails, then falls back to reading from the Windows console
input buffer[2].

[1] e7499ddc33/src/fileio.c (L2397-L2398)
[2] e7499ddc33/src/os_win32.c (L1703-L1714)
2018-04-14 21:59:07 +02:00
Marco Hinz
1fd54f29c1 Make vim_fgets() return the same values as in Vim
The implementation of vim_fgets() differs between Neovim and Vim.

Vim says that it only returns `true` for EOF. But it always returns `true` when
fgets() returns NULL. This happens for EOF _or_ errors.

That probably misguided the author of Neovim's vim_fgets(), which does NOT
return `true` for errors.

Since all the callers of vim_fgets() probably expect it to work as it does in
Vim (and not as it says), it now returns the same values as the Vim
implementation.

Fixes #8227
2018-04-04 21:13:14 +02:00
Justin M. Keyes
e25e552a3d vim-patch:8.0.1284: loading file type detection slows down startup
Problem:    Loading file type detection slows down startup.
Solution:   Store the last pattern of an autocommand event to make appending
            quicker.
462455ee8b
2018-04-02 23:59:49 +02:00
Justin M. Keyes
998a16c926 refactor/rename: path_is_absolute() 2018-03-24 14:17:40 +01:00
Justin M. Keyes
82cd0be2ea refactor: eliminate autocmd_fname_full global
It's a micro-optimization; check path_is_absolute_path(autocmd_fname)
instead.

The main optimization (which is still in place) afforded by Vim 7.2.021
was to avoid resolving <afile> when it is not needed.
2018-03-24 12:16:39 +01:00
Justin M. Keyes
189c5abeba provider/RPC: apply_autocmds_group(): fix double-free
During provider dispatch, eval_call_provider() saves global
state--including pointers, such as `autocmd_fname`--into
`provider_caller_scope` which is later restored by f_rpcrequest().

But `autocmd_fname` is special-cased in eval_vars(), for performance
(see Vim patch 7.2.021; this is also the singular purpose of the
`autocmd_fname_full` global. Yay!)

If eval_vars() frees `autocmd_fname` then its provider-RPC-scoped alias
becomes a problem.

Solution: Don't free autocmd_fname in eval_vars(), just copy into it.

closes #5245
closes #5617

Reference
------------------------------------------------------------------------

Vim patch 7.2.021
f6dad43c98
Problem:    When executing autocommands getting the full file name may be
            slow. (David Kotchan)
Solution:   Postpone calling FullName_save() until autocmd_fname is used.

vim_dev discussion (2008): "Problem with CursorMoved AutoCommand when
Editing Files on a Remote WIndows Share"
https://groups.google.com/d/msg/vim_dev/kj95weZa_eE/GTgj4aq5sIgJ
2018-03-24 11:01:24 +01:00
Justin M. Keyes
f26a4d484b lint 2018-02-11 19:03:29 +01:00
Justin M. Keyes
fd58863eb6 vim-patch:8.0.0703: illegal memory access with empty :doau command
Problem:    Illegal memory access with empty :doau command.
Solution:   Check the event for being out of range. (James McCoy)

faf29d7f91
2018-02-11 15:27:57 +01:00