Commit Graph

205 Commits

Author SHA1 Message Date
Justin M. Keyes
0cec184cd6 startup: ignore -X
closes #8285
2018-04-16 22:38:02 +02:00
Justin M. Keyes
777d34ec37 lint 2018-04-11 02:41:05 +02:00
Justin M. Keyes
507bda1c95 server: introduce --listen, deprecate $NVIM_LISTEN_ADDRESS 2018-04-11 02:41:05 +02:00
Justin M. Keyes
7362ca4430 cleanup: remove main_start_gui() 2018-04-11 01:58:42 +02:00
b-r-o-c-k
01fc02beee build/msvc: Add missing WIN32 macro
MSVC predefines `_WIN32`, but not `WIN32`. Also, some unnecessary includes have been removed.
2018-03-04 17:44:23 -06:00
b-r-o-c-k
60a341a05f build/msvc: Fix standard IO file number definitions
With MSVC, STDOUT_FILENO and STDERR_FILENO are defined as function calls instead of constants, meaning they can't be assigned to enum values. The enum was only used in one file, so it has been removed. A definition for STDIN_FILENO has been added that is consistent with the other two definitions.
2018-02-28 19:37:58 -06:00
Justin M. Keyes
538361955d exit: annotate FUNC_ATTR_NORETURN functions #7954 (#7954)
This should fix a particular false positive from clang 5.0.0 scan-build,
which thinks that nlua_init() can continue after preserve_exit().
2018-02-07 02:32:50 +01:00
George Zhao
3632f02564 Fix warning about variable length array. 2018-01-18 21:43:43 +08:00
George Zhao
5a594091dc Fix warning about unused value. 2018-01-18 21:30:06 +08:00
ZyX
9ea1752d60 *: Provide list length when allocating lists 2018-01-14 01:33:16 +03:00
James McCoy
c162bc6294 vim-patch:8.0.0420: text garbled when the system encoding differs from 'encoding'
Problem:    When running :make the output may be in the system encoding,
            different from 'encoding'.
Solution:   Add the 'makeencoding' option. (Ken Takata)

2c7292dc5b
2017-12-17 11:20:28 -05:00
Justin M. Keyes
9acd7bfe25 tui: job-control: use saved termios for pty jobs
On startup, if running in a terminal, save the termios properties.
Use the saved termios for `:terminal` and `jobstart()` pty jobs.

This won't affect nvim spawned outside of a terminal.

questions:

- This affects `:terminal` and `jobstart({'pty'✌️true})`.
  Should we be more conservative for `jobstart({'pty'✌️true})` (e.g.
  pass NULL to forkpty() and let the OS defaults prevail)?
  - Note: `iutf8` would not be set in that case.
2017-11-25 09:37:00 +01:00
Björn Linse
5af4703177 channels: stderr channel 2017-11-25 09:37:00 +01:00
Björn Linse
1ebc96fe10 channels: allow bytes sockets and stdio, and buffered bytes output 2017-11-24 14:54:15 +01:00
Justin M. Keyes
860ecd7055 vim-patch:8.0.0096: has('ttyin'), has('ttyout')
Nvim note: intentionally did not include `--ttyfail` since its purpose
is not clear. (And it isn't used in any Vim test files/scripts).

---

Problem:    When the input or output is not a tty Vim appears to hang.
Solution:   Add the --ttyfail argument.  Also add the "ttyin" and "ttyout"
            features to be able to check in Vim script.

2cab0e1910
2017-11-04 09:36:52 +01:00
Justin M. Keyes
73b50de925 'titleold': move logic to getout() 2017-10-05 09:49:17 +02:00
Justin M. Keyes
02e5eafa86 win: expect utf8-encoded argv when built as a library 2017-08-24 08:42:45 +02:00
Justin M. Keyes
71df5dde6d win: wmain(): use utf16_to_utf8() #7060 2017-08-24 08:42:45 +02:00
Yuto Tokunaga
e5565891af win: wmain(): locale-independent argv (#7180)
fix #7060
2017-08-23 00:55:00 +02:00
James McCoy
41d180abb4 vim-patch:8.0.0680
Problem:    Plugins in start packages are sourced twice. (mseplowitz)
Solution:   Use the unmodified runtime path when loading plugins (test by Ingo
            Karkat, closes vim/vim#1801)

07ecfa64a1
2017-08-21 20:29:49 -04:00
James McCoy
622c3454df vim-patch:8.0.0612
Problem:    Package directories are added to 'runtimepath' only after loading
            non-package plugins.
Solution:   Split off the code to add package directories to 'runtimepath'.
            (Ingo Karkat, closes vim/vim#1680)

ce876aaa9a
2017-08-21 20:29:49 -04:00
Justin M. Keyes
b2967a0320 nvim -h: omit special-case options
Group some options, and sort them alphabetically.
`nvim -h` should fit on one (smallish) screen.
Uncommon options don't need to be here, they live in the :help.
2017-08-18 21:29:01 +02:00
Justin M. Keyes
d258ac8ed2 io: more guards against NULL filename (#7159)
References ac055d677a
References #4370
2017-08-13 18:46:09 +02:00
Justin M. Keyes
3827d5bc71 input: skip dialogs if no UI is active
Treat dialogs in the same way as "silent mode" (`nvim -es`).

References #1984
References #3901
2017-08-06 04:22:45 +02:00
ZyX
7109f63e3c main: Flush file in place of closing it, also do error reporting
Apparently on travis OS X systems it crashes when cleaning up streams with
stdout closed:

    (lldb) bt all
    * thread #1: tid = 0x0000, 0x00007fff8703df06 libsystem_kernel.dylib`__pthread_kill + 10, stop reason = signal SIGSTOP
      * frame #0: 0x00007fff8703df06 libsystem_kernel.dylib`__pthread_kill + 10
        frame #1: 0x00007fff93a764ec libsystem_pthread.dylib`pthread_kill + 90
        frame #2: 0x00007fff97c056df libsystem_c.dylib`abort + 129
        frame #3: 0x00007fff97bccdd8 libsystem_c.dylib`__assert_rtn + 321
        frame #4: 0x0000000107a4e106 nvim`uv__close(fd=<unavailable>) + 102 at core.c:521
        frame #5: 0x0000000107a5307d nvim`uv__loop_close(loop=0x00007fff5847c018) + 77 at loop.c:118
        frame #6: 0x0000000107a4d149 nvim`uv_loop_close(loop=0x00007fff5847c018) + 57 at uv-common.c:626
        frame #7: 0x000000010783e5bc nvim`stream_set_blocking(fd=0, blocking=true) + 204 at stream.c:34
        frame #8: 0x000000010795d66b nvim`mch_exit(r=0) + 91 at os_unix.c:147
        frame #9: 0x00000001078d5663 nvim`command_line_scan(parmp=0x00007fff5847c760) + 1779 at main.c:787
        frame #10: 0x00000001078d4393 nvim`main(argc=2, argv=0x00007fff5847c898) + 163 at main.c:249
        frame #11: 0x00007fff8cdd65ad libdyld.dylib`start + 1
        frame #12: 0x00007fff8cdd65ad libdyld.dylib`start + 1
2017-07-04 19:58:02 +03:00
ZyX
605c8fb49c main: Use msgpack_file_write in place of “fbuffer”
Apparently the latter is not a part of the public C API.
2017-07-04 18:37:01 +03:00
ZyX
94bd0f9915 main: Fix V522: potential NULL dereference
It is useless to use sbuffer here and print that to stdout, just using “fbuffer”
instead.
2017-07-04 18:37:01 +03:00
Justin M. Keyes
698ec9eb6e loop_close: Avoid infinite loop, and log it.
Avoids a hang, and also helps diagnose issues like:

https://github.com/neovim/neovim/pull/6594#issuecomment-298321826
2017-06-07 00:26:21 +02:00
ZyX
40444e9186 main: Silence V522: potential NULL pointer dereference
AFAIK there is no way NULL can be there, including from the line it points to.
Dunno what analyser was thinking, but dereferencing of `argv[0]` happened just
before `get_number_arg()` call: in `ascii_isdigit()` two lines above. And `idx`
cannot possibly be NULL ever, it comes from `&varname`, this could not ever give
anything, but a valid pointer.
2017-05-20 04:21:00 +03:00
Justin M. Keyes
060ce0e0bc startup: init v:progpath before calling vim_getenv (#6755) 2017-05-17 03:23:34 +02:00
Justin M. Keyes
cc5a42a774 env_iter: Learn delim parameter. 2017-05-15 15:01:52 +02:00
Justin M. Keyes
4c5398bc40 startup: v:progpath fallback: path_guess_exepath
If procfs is missing then libuv cannot find the exe path.
Fallback to path_guess_exepath(), adapted from Vim findYourself().

Closes #6734
2017-05-15 15:01:52 +02:00
Björn Linse
7d6af9985c ui: cleanup UI_CALL wrappers
remove pointless control chars in the text stream
2017-05-10 16:14:12 +02:00
ZyX
c2f3e361c5 *: Add comment to all C files 2017-04-19 19:11:50 +03:00
Justin M. Keyes
e348e256f3 'guicursor': Disable by default for unknown terminals.
User can still set guicursor explicitly in init.vim.

Closes #5990
Closes #6403
2017-04-04 14:19:26 +02:00
ZyX
e18a578308 *: Move some dictionary functions to typval.h and use char*
Also fixes buffer reusage in setmatches() and complete().
2017-03-29 10:07:42 +03:00
ZyX
fb146e80aa eval: Split eval.c into smaller files 2017-03-29 10:05:06 +03:00
Justin M. Keyes
6baa669c10 vim-patch:7.4.2164 (#6326)
Problem:    It is not possible to use plugins in an "after" directory to tune
            the behavior of a package.
Solution:   First load plugins from non-after directories, then packages and
            finally plugins in after directories.
            Reset 'loadplugins' before executing --cmd arguments.

66459b7c98

vim-patch:7.4.2172
vim-patch:7.4.2169
vim-patch:7.4.2177
vim-patch:7.4.2178
vim-patch:7.4.2184
vim-patch:8.0.0050
vim-patch:8.0.0105
vim-patch:8.0.0400
vim-patch:8.0.0405

Closes #6034
2017-03-21 17:07:00 +01:00
Björn Linse
6a68a922b8 clipboard: set v:register after startup (#5708)
Fixes #5697
2017-03-18 19:33:25 +01:00
ZyX
9c1865c7f8 *: Fix linter errors 2017-02-23 19:48:41 +03:00
ZyX
4f10d42f82 buffer: Bind b:changedtick to b:['changedtick'], remove special cases 2017-02-23 19:46:44 +03:00
Michael Ennen
b0fc6108c9 vim-patch:7.4.1727
Problem:    Cannot detect a crash in tests when caused by garbagecollect().
Solution:   Add garbagecollect_for_testing().  Do not free a job if is still
            useful.

ebf7dfa6f1
2017-02-14 17:38:15 -07:00
James McCoy
11efbc80e3 Merge pull request #5913 from mhinz/buf-lookup-patches
vim-patch:7.4.2017,7.4.2018,7.4.2021,7.4.2022,7.4.2023,7.4.2024
2017-02-06 10:20:49 -05:00
Marco Hinz
c05e7f0fdd vim-patch:7.4.2024
Problem:  More buf_valid() calls can be optimized.
Solution: Use bufref_valid() instead.

NOTE: Some changes related to channels and the Python and Netbeans interfaces
were obviously left out.

7c0a2f367f
2017-02-04 17:55:46 -05:00
Justin M. Keyes
224f99b85d win: Append process dir to $PATH
This allows executables to be found by :!, system(), and executable() if
they live next to ("sibling" to) nvim.exe. This is what gvim on Windows
does, and also matches the behavior of Win32 SearchPath().

c4a249a736/src/os_win32.c (L354-L370)
2017-02-04 11:07:49 +01:00
Shougo
2380747ff2 vim-patch:7.4.1909 (#5748)
Problem:    Doubled semicolons.
Solution:   Reduce to one. (Dominique Pelle)

945ec093cd
2016-12-10 13:40:29 +01:00
Justin M. Keyes
97204e1cef os/shell: Throttle :! output, pulse "..." message.
Periodically skip :! spam. This is a "cheat" that works for all UIs and greatly
improves responsiveness when :! spams MB or GB of output:
    :!yes
    :!while true; do date; done
    :!git grep ''
    :grep -r '' *

After ~10KB of data is seen from a single :! invocation, output will be skipped
for ~1s and three dots "..." will pulse in the bottom-left. Thereafter the
behavior alternates at every:
    * 10KB received
    * ~1s throttled

This also avoids out-of-memory which could happen with large :! outputs.

Note: This commit does not change the behavior of execute(':!foo').
      execute(':!foo') returns the string ':!foo^M', it captures *only* Vim
      messages, *not* shell command output. Vim behaves the same way.
      Use system('foo') for capturing shell command output.

Closes #1234

Helped-by: oni-link <knil.ino@gmail.com>
2016-12-09 18:51:17 +01:00
Marco Hinz
147b03e7d0 Add v:exiting
Contains the exit value nvim will use.

Before exiting, it is v:null. That way jobs or autocmds (in VimLeavePre or
VimLeave) can check if Neovim is about to quit and with what exit value.

Closes #4666.
2016-12-01 14:57:22 +01:00
James McCoy
0b686e9b61 lint 2016-11-14 14:16:40 -05:00
James McCoy
9d2985ecba vim-patch:7.4.1658
Problem:    A plugin does not know when VimEnter autocommands were already
            triggered.
Solution:   Add the v:vim_did_enter variable.

1473551a44
2016-11-14 14:16:40 -05:00