Commit Graph

6125 Commits

Author SHA1 Message Date
Justin M. Keyes
6ca6a8134d intro: remove byline #6984 2017-08-18 21:29:01 +02: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
5b32bce73c Merge #7007 'Windows :terminal'
References #6383
Closes #4748
2017-08-16 21:35:51 +02:00
James McCoy
cea1248f7d Merge pull request #7052 from ckelsel/vim-8.0.0044
vim-patch:8.0.0044
2017-08-16 15:35:22 -04:00
James McCoy
6844ff7561 Merge pull request #7145 from ckelsel/vim-8.0.0174
vim-patch:8.0.0174
2017-08-16 15:16:19 -04:00
ckelsel
8dddf55907 vim-patch:8.0.0044
Problem:    In diff mode the cursor may end up below the last line, resulting
            in an ml_get error.
Solution:   Check the line to be valid.

025e3e0baf
2017-08-16 12:48:58 -04:00
Justin M. Keyes
1fb3339844 vim-patch:8.0.0679
Problem:    Using freed memory.
Solution:   Get the parent frame pointer earlier.

41cc038ff8
2017-08-16 12:22:41 -04:00
Justin M. Keyes
f0a9b7ff63 vim-patch:8.0.0678 closing a window does not trigger resizing
Closes #6748

Problem:    When 'equalalways' is set and closing a window in a separate
            frame, not all window sizes are adjusted. (Glacambre)
Solution:   Resize all windows if the new current window is not in the same
            frame as the closed window. (closes vim/vim#1707)

8eeeba8c02
2017-08-16 10:39:50 -04:00
Justin M. Keyes
8642f05fd9 single-includes: ignore os/pty_process_win.h 2017-08-16 09:13:44 +02:00
erw7
8c1782b840 pty_process_win: avoid quoting for cmd.exe 2017-08-16 09:13:44 +02:00
erw7
d3a8c4f992 win/pty: log errors 2017-08-16 09:13:44 +02:00
erw7
84fb794da6 win/pyt: cleanup 2017-08-16 09:13:44 +02:00
erw7
3b992f1688 win/pty: quote_cmd_arg(): check bounds 2017-08-16 09:13:43 +02:00
erw7
e635754e8e win/pty: jobstart, jobstop: fix null-pointer dereference
- Make sure that proc->in is not NULL, because nvim crashed when
  starting a job with pty.
- Make sure that proc->out is not NULL, because nvim crashed when stopping
  a job opened with pty.
2017-08-16 09:13:43 +02:00
erw7
4b1f21de75 win: support :terminal 2017-08-16 09:13:43 +02:00
Rui Abreu Ferreira
a797856755 win/install: winpty-agent.exe 2017-08-16 09:13:43 +02:00
Ryan Prichard
7f22a27a10 win: integrate winpty (WIP)
Handling of process exit is still broken.  It detects the moment when the
child process exits, then quickly stops polling for process output.  It
should continue polling for output until the agent has scraped all of the
process' output.  This problem is easy to notice by running a command like
"dir && exit", but even typing "exit<ENTER>" can manifest the problem --
the "t" might not appear.

winpty's Cygwin adapter handles shutdown by waiting for the agent to close
the CONOUT pipe, which it does after it has scraped the child's last
output.  AFAIK, neovim doesn't do anything interesting when winpty closes
the CONOUT pipe.
2017-08-16 09:13:43 +02:00
James McCoy
30cb66e8ba Merge pull request #7168 from teto/fix_coverty
Closes #7149
2017-08-15 19:55:24 -04:00
Justin M. Keyes
bb70eec177 Merge #6364 'command-line color hook' 2017-08-16 00:20:37 +02:00
Matthieu Coudron
1f4090011e coverty: solve  #7149 2017-08-15 21:43:23 +02:00
ZyX
b1a8dcefee lua/executor: Fix crash when first string contains NUL and second not 2017-08-15 17:18:05 +03:00
ZyX
93ef823f5e lua/executor: Move stricmp to vim “module” and document it 2017-08-15 16:34:51 +03:00
ZyX
ef6641ba69 lua/executor: Make stricmp function work with strings with NULs 2017-08-15 16:34:25 +03:00
Justin M. Keyes
f5938d9bcf doc: screen_resize(): remove mention of "mustset"
"mustset" is from Vim term.c:set_shellsize(), not relevant here: we
behave as if mustset=true always.
2017-08-14 03:09:40 +02:00
Justin M. Keyes
34e5654f21 ui: disable 'lazyredraw' during ui_refresh.
Could also try `do_redraw = true` instead of save/restore `p_lz`, but
the nice thing about save/restore of `p_lz` is that it is "atomic".
The semantics of `do_redraw` are not clear to me.

Closes #4884
References #6202
References https://github.com/neovim/neovim/pull/6202#issuecomment-284379503
References #3929 #5692 #6157
References #5866
2017-08-14 03:07:50 +02:00
ZyX
19a28352a9 ex_getln: Make error messages look better 2017-08-14 01:56:48 +03:00
Justin M. Keyes
d258ac8ed2 io: more guards against NULL filename (#7159)
References ac055d677a
References #4370
2017-08-13 18:46:09 +02:00
Nikolai Aleksandrovich Pavlov
bf1b1ea6ee lua/executor: Fix crash when printing empty string (#7157) 2017-08-13 17:37:35 +02:00
Sebastian Parborg
1f9c139fd3 tui: fix DECSCUSR logic #6997
Fix linuxvt cursor shape codes
Fix konsole cursor_shapes (even when inside tmux)
Do not trust old VTE terminal lies

Closes #6978
Closes #7002
Closes #7049
2017-08-13 01:13:28 +02:00
Justin M. Keyes
c87dbadc44 vim-patch:8.0.0235
Problem:    Memory leak detected when running tests for diff mode.
Solution:   Free p_extra_free.

b031c4ea04
2017-08-12 18:28:38 +02:00
Justin M. Keyes
7dc5e8fb8b oldtest: cannot :set term in Nvim 2017-08-12 17:39:07 +02:00
Justin M. Keyes
a0c7e35eee vim-patch:8.0.0524
Problem:    Folds are messed up when 'encodin' is "utf-8".
Solution:   Also set the fold character when it's not multi-byte.

8da1e6cedf
2017-08-12 17:39:07 +02:00
Justin M. Keyes
cddd4e613e vim-patch:8.0.0518
Closes #7086

Problem:    Storing a zero byte from a multi-byte character causes fold text
            to show up wrong.
Solution:   Avoid putting zero in ScreenLines. (Christian Brabandt,
            closes vim/vim#1567)

c6cd8409c2
2017-08-12 17:39:07 +02:00
Justin M. Keyes
49b671f8f1 vim-patch:8.0.0290 vim-patch:8.0.0394
vim-patch:8.0.0290: cursor positioning wrong if wide character wraps
Problem:    If a wide character doesn't fit at the end of the screen line, and
            the line doesn't fit on the screen, then the cursor position may
            be wrong. (anliting)
Solution:   Don't skip over wide character. (Christian Brabandt, closes vim/1408)

vim-patch:8.0.0394
Problem:    Tabs are not aligned when scrolling horizontally and a Tab doesn't
            fit. (Axel Bender)
Solution:   Handle a Tab as a not fitting character. (Christian Brabandt)
            Also fix that ":redraw" does not scroll horizontally to show the
            cursor.  And fix the test that depended on the old behavior.

abc39ab642
2017-08-12 17:39:07 +02:00
Justin M. Keyes
c747b53f84 vim-patch:8.0.0311
Problem:    Linebreak tests are old style.
Solution:   Turn the tests into new style. Share utility functions. (Ozaki
            Kiichi, closes vim/vim#1444)

544d3bc9f0
2017-08-12 17:39:06 +02:00
Justin M. Keyes
b7320471de vim-patch:8.0.0128
Problem:    Display test fails on MS-Windows.
Solution:   Set 'isprint' to "@".

7089237885
2017-08-12 17:39:06 +02:00
Justin M. Keyes
1bcb3ed0e2 vim-patch:8.0.0126
Problem:    Display problem with 'foldcolumn' and a wide character.
            (esiegerman)
Solution:   Don't use "extra" but an allocated buffer. (Christian Brabandt,
            closes vim/vim#1310)

6270660611
2017-08-12 17:39:06 +02:00
Justin M. Keyes
df02f9cc37 vim-patch:8.0.0090 fix breakindent bug
(original Vim commit-message is bogus)

6c896867c4
2017-08-12 17:39:06 +02:00
James McCoy
9edf00bddf coverity/166184: Check length of str, not term
32396b5879 add length checks to
TERMINAL_FAMILY/STARTS_WITH to ensure memcmp() wouldn't read past the
end of the string.  However, "term" was copy/pasted from TERMINAL_FAMILY
so STARTS_WITH() was unnecessarily reading the, potentially NULL, term
variable.
2017-08-11 10:30:38 -04:00
James McCoy
320b57311f Merge pull request #7143 from jamessan/log_callstack_to_file
log: Add log_callstack_to_file()
2017-08-11 10:02:51 -04:00
KunMing Xie
b7e84de7d2 vim-patch:8.0.0165 (#7132)
Problem:    Ubsan warns for integer overflow.
Solution:   Swap two conditions. (Dominique Pelle)

f446b48ff0
2017-08-10 04:20:55 +02:00
Justin M. Keyes
7ae744b93d buf_write(): handle NULL fname on non-unix 2017-08-10 03:43:38 +02:00
ckelsel
4cd2749b10 vim-patch:8.0.0174
Problem:    For completion "locale -a" is executed on MS-Windows, even though
            it most likely won't work.
Solution:   Skip executing "locale -a" on MS-Windows. (Ken Takata)

b8f7bd68f6
2017-08-10 08:53:22 +08:00
James McCoy
ac055d677a os_stat: return ENOENT on NULL filename arg
Closes #4370

Explication:

    In the backtrace in #4370, we see that `buf_write()` was called with
    non-NULL `fname` and `sfname` arguments, but they've since _become_
    NULL.

    #7  0x00000000004de09d in buf_write (buf=0x1dee040, fname=0x0, fname@entry=0x1e985b0 "/home/sean/src/github.com/snczl/virta/pkg/meld/segment.go",
                                         sfname=0x0, sfname@entry=0x1ddfa60 "segment.go", start=1, end=72, eap=eap@entry=0x7ffc6b032e60, append=0,
                                         forceit=0, reset_changed=1, filtering=0)
    at /home/travis/build/neovim/bot-ci/build/neovim/src/nvim/fileio.c:2576

    This is most likely due to the code that restores those values from
    `buf`, which happens just before the fatal call to `os_fileinfo`

    ```c
        /*
         * The autocommands may have changed the name of the buffer, which may
         * be kept in fname, ffname and sfname.
         */
        if (buf_ffname)
          ffname = buf->b_ffname;
        if (buf_sfname)
          sfname = buf->b_sfname;
        if (buf_fname_f)
          fname = buf->b_ffname;
        if (buf_fname_s)
          fname = buf->b_sfname;
    ```

    It's worth noting that at this point `ffname` is still non-NULL, so
    it _could_ be used.  However, our current code is purely more strict
    than Vim in this area, which has caused us problems before (e.g.,
    `getdigits()`).  The commentary for `struct file_buffer` clearly
    indicate that all of `b_ffname`, `b_sfname`, and `b_fname` may be
    NULL:

    ```c
      /*
       * b_ffname has the full path of the file (NULL for no name).
       * b_sfname is the name as the user typed it (or NULL).
       * b_fname is the same as b_sfname, unless ":cd" has been done,
       *		then it is the same as b_ffname (NULL for no name).
       */
      char_u      *b_ffname;        /* full path file name */
      char_u      *b_sfname;        /* short file name */
      char_u      *b_fname;         /* current file name */
    ```

    Vim directly calls `stat(2)` which, although it is annotated to tell
    the compiler that the path argument is non-NULL, does handle a NULL
    pointer by returning a `-1` value and setting `errno` to `EFAULT`.
    This satisfies Vim's check, since it treats any `-1` return from
    `stat(2)` to mean the file doesn't exist (at least in this code
    path).

    Note that Vim's mch_stat() implementations on win32 and solaris
    clearly cannot accept NULL `name`. But the codepaths that call
    mch_stat will NULL `name` tend to be unix-only (eg: u_read_undo)!
2017-08-10 00:56:07 +02:00
Justin M. Keyes
085102fadf Merge #7134 from justinmk/oldtest-tmpdir 2017-08-09 23:36:48 +02:00
James McCoy
17eb20b22e log: Add log_callstack_to_file()
This makes it trivial to log the callstack to, e.g., stderr, which can
simplify debug cycles.
2017-08-09 13:30:34 -04:00
James McCoy
f7e99fd8b0 oldtest: test_cmdline: Complete "Xtestf" so "Xtest-tmpdir" isn't matched 2017-08-09 11:02:35 -04:00
Justin M. Keyes
9854fc4657 oldtest: use TMPDIR 2017-08-09 11:02:15 -04:00
Justin M. Keyes
9506ee0370 buf_write(): wrong argument to os_fileinfo_hardlinks
This was broken in ye olde refactor from 2014:
e85fe0957d

References #4370
2017-08-09 10:45:17 +02:00
KunMing Xie
e13b4a21ca vim-patch:8.0.0149 (#7127)
Problem:    ":earlier" and ":later" do not work after startup or reading the
            undo file.
Solution:   Use absolute time stamps instead of relative to the Vim start
            time. (Christian Brabandt, Pavel Juhas, closes vim/vim#1300, closes
            vim/vim#1254)

cbd4de44e8
2017-08-08 03:32:47 +02:00