Commit Graph

4171 Commits

Author SHA1 Message Date
Thiago de Arruda
bef0c03b25 terminal: Ensure terminal buffers are flushed on exit
When a terminal closed, make sure it is refreshed before the Terminal structure
is freed. Also extract `refresh_terminal` from `on_refresh`.
2015-08-13 07:41:04 -03:00
Thiago de Arruda
696f9c2759 process: Pass loop reference during initialization
Change the API so that it is passed to {uv,pty}_process_init instead of
`process_spawn`.
2015-08-13 07:41:04 -03:00
Thiago de Arruda
3f5af6c1c4 loop: Simplify loop.c and move some code to input.c
- Declare poll timer in Loop structure instead of a loop_poll_events local
  variable.
- Move deferred event management to input.c
2015-08-13 07:41:04 -03:00
Thiago de Arruda
ccdeb91e12 msgpack: Replace FUNC_ATTR_DEFERRED by FUNC_ATTR_ASYNC
API functions exposed via msgpack-rpc now fall into two categories:

- async functions, which are executed as soon as the request is parsed
- sync functions, which are invoked in nvim main loop when processing the
  `K_EVENT special key

Only a few functions which can be safely executed in any context are marked as
async.
2015-08-13 07:41:04 -03:00
Thiago de Arruda
b13011ff47 pty_process: Simplify cleanup after error during spawn 2015-08-13 07:41:04 -03:00
Thiago de Arruda
024b1f39a3 eval: Fixes to job control
- Ensure TerminalJobData is freed in case of error when spawning pty jobs
- Check if job was stopped in every function that receives a job id.
2015-08-13 07:41:04 -03:00
Thiago de Arruda
a10b327073 events: Add missing function attributes to some APIs 2015-08-13 07:41:04 -03:00
oni-link
c6af09c566 shell.c: A full RBuffer with no NL can freeze shell output. #3156
out_data_cb() can return without emptying the full RBuffer (no NL was
seen). Because the shell output stream is stopped until space in the
Rbuffer is freed up, no more shell output is written.

To prevent this, output the full RBuffer when write_output() did not
write anything.

write_output() can also process the same RBuffer content more than once,
if no NL was seen. To prevent NUL bytes from producing new lines (if
lines are not written to a buffer), translate NUL to SOH(1).

Fixes #2983
2015-08-11 09:36:06 -04:00
Felipe Morales
7d9472ab1b tui: avoid double-resize on SIGWINCH. #3145 2015-08-10 00:01:27 -04:00
Marco Hinz
21c0d87a24 vim-patch:7.4.781 #3065
Problem:  line2byte() returns one less when 'bin' and 'noeol' are set.
Solution: Only adjust the size for the last line. (Rob Wu)

Original patch:
  https://code.google.com/p/vim/source/detail?r=30c9301f33ed76d0b76b9e22362f5e78e26786da
2015-08-09 21:13:25 -04:00
Marco Hinz
990c0350ab vim-patch:7.4.773 #3066
Problem:  'langmap' is used in command-line mode when checking for mappings.
Solution: Do not use 'langmap' in command-line mode. (Larry Velazquez)

Original patch:
  https://code.google.com/p/vim/source/detail?r=5b1eefbf9a532f32a66fa13abbd671488aaafd5c
2015-08-09 21:12:11 -04:00
Marco Hinz
3df37a8424 vim-patch:7.4.776 #3062
Problem:  Equivalence class for 'd' does not work correctly.
Solution: Fix 0x1e0f and 0x1d0b. (Dominique Pelle)

Original patch:
  https://code.google.com/p/vim/source/detail?r=94b17958585153641ad1e813fa144cad57c7170f
2015-08-09 21:09:28 -04:00
Björn Linse
d4ebbaa91a clipboard: support clipboard=unnamedplus,unnamed 2015-08-07 13:06:13 +02:00
Björn Linse
162361abac clipboard: fixup inconsequential yet embarrassing mixup 2015-08-06 22:39:47 +02:00
ZyX
172272ef3f eval: Use proper refcount of msgpack type lists 2015-08-05 22:50:46 +03:00
oni-link
b732a27c4e channel.c: Only free a channel after close callbacks are executed #3132
parse_msgpack() closes a channel's stream on EOF error and the stream's
close callback close_cb() is queued for the next libuv loop iteration.
When parse_msgpack() returns, it has freed the channel and the queued
stream callback will access this freed memory.

To prevent this, increase the channel's reference count and let the
stream's close callback call decref().

Fixes #3128
2015-08-05 11:17:08 -04:00
Rui Abreu Ferreira
2e1a80563b os_get_user_name() for non UNIX system #2729
os_get_user_name() requires getuid(), which is only available in UNIX. Return
FAIL for non UNIX systems.

On FAIL os_get_user_name() fills the buffer with the uid.  In Windows libuv
uses 0 for uid in stat structs, so 0 is used here too.
2015-08-04 19:15:17 -04:00
Keerthan Jaic
5fc4c2d442 tui: Fix terminal detection for cursor shape #3129
Default to DECSCUSR, except for known cases where other codes are used
or changing cursor shape is unsupported
2015-08-04 12:33:43 -04:00
Justin M. Keyes
9f350e615c Merge pull request #3034 from ZyX-I/msgpack-eval
msgpack viml functions for dump/restore
2015-08-03 00:24:10 -04:00
ZyX
401ae724ea eval: Call list_append_allocated_string from list_append_string 2015-08-02 20:38:09 +03:00
ZyX
ec95a58377 vim_to_msgpack: Silence -Werror=unitialized compiler error
Compiler warning was found in [QuickBuild logs][1] from [this page][2]. GCC and
clang on travis appear to be fine. Relevant log parts:

    Step Log (master>buildall>build-node?testNode=linux-64>build-and-run-tests>build-and-run-tests-parameterized?buildType=Release>configure-neovim-and-build-nvim)
    <…>
    16:26:31,364 WARN  - /home/quickbuild/buildagent/workspace/root/neovim/pull-requests-automated/src/nvim/eval.c: In function ‘f_msgpackdump’:
    16:26:31,364 WARN  - /home/quickbuild/buildagent/workspace/root/neovim/pull-requests-automated/src/nvim/eval.c:12371:26: error: ‘cur_tv’ may be used uninitialized in this function [-Werror=uninitialized]
    16:26:31,364 WARN  - /home/quickbuild/buildagent/workspace/root/neovim/pull-requests-automated/src/nvim/eval.c:12328:21: note: ‘cur_tv’ was declared here
    16:26:31,938 WARN  - cc1: all warnings being treated as errors

[1]: http://neovim-qb.szakmeister.net/wicket/page?4-1.ILinkListener-content-buildTab-panel-errorContainer-steps-5-logLink
[2]: http://neovim-qb.szakmeister.net/build/2099/overview
2015-08-02 19:32:41 +03:00
ZyX
fea633d0fa ex_cmds*: Silence -Wstrict-prototypes warnings
Due to a number of places where headers generated from these files are included
gcc with -DEXITFREE produces *loads* of warnings for these functions.
2015-08-02 19:32:41 +03:00
ZyX
7fbefd585e eval: Remove most of msgpack* functions limitations 2015-08-02 19:32:41 +03:00
ZyX
5a7135fa1c eval: Add msgpackparse and msgpackdump functions 2015-08-02 19:32:41 +03:00
Justin M. Keyes
efa059c5a4 test: call scandir_next_with_dots() more than once
Also cosmetic reduction.
2015-08-01 23:33:54 -04:00
Felipe Morales
ea551044ea Add the . and .. entries to glob()
os_scandir() and os_scandir_next() skip over those, because of the
unverlying libuv funcitons behaviour.

Fixes #2954
2015-08-01 23:16:17 -04:00
Felipe Morales
746a4e9f84 Remove spurious warning when reading directories 2015-08-01 23:16:16 -04:00
cztchoice
d4396acedb vim-patch:7.4.600 #3081
Problem:    Memory wasted in struct because of aligning.
Solution:   Split pos in lnum and col. (Dominique Pelle)

https://github.com/vim/vim/commit/v7-4-600
2015-07-31 21:30:52 -04:00
Omar Sandoval
f79025b9de tui: Use underline cursor in Replace mode
This is a port of my original contribution to Vim, added in 7.4.687
(https://github.com/vim/vim/commit/v7-4-687). The TUI code has been
heavily refactored (see esp. 25ceadab37),
so this required some translation, but the logic is the same.
2015-07-26 23:45:41 -04:00
Omar Sandoval
fa48fc667a api: Simplify UI API on mode change
Currently, there are two functions in the UI API that are called when
the mode changes: insert_mode() and normal_mode(). These can be folded
into a single mode_change() entrypoint which can do whatever it wants
based on the mode it is passed, limited to INSERT and NORMAL for now.
2015-07-26 23:38:35 -04:00
ZyX
8f9b81059a Create script that downloads and commits UNIDATA files 2015-07-26 22:59:46 +03:00
ZyX
c31b3339ff Generate unicode tables with script when building 2015-07-26 22:59:46 +03:00
Justin M. Keyes
a497bf4bfd Merge pull request #2288 from ZyX-I/autovimsyn
Move part of syntax/vim.vim to syntax/vim/generated.vim
2015-07-26 15:42:42 -04:00
ZyX
853ba34103 syntax: List NeoVim-specific autocmd events
Note: list was copied from master (7a6bf3f418). 
I did not add more events there.
2015-07-26 21:28:32 +03:00
ZyX
7f6c14ed54 options: Move option definitions to options.lua 2015-07-26 12:58:00 +03:00
ZyX
8ed2dbf6e2 fileio: Move event definitions to the generator script 2015-07-26 12:39:01 +03:00
ZyX
1206ac953f os/fs: Move mkdir_recurse from eval.c to os/fs.c 2015-07-26 02:34:32 +03:00
ZyX
afd3e69e9f ex_docmd: Make E739 message contain strerror() output 2015-07-26 02:34:32 +03:00
ZyX
b56934e28d os/fs: Define os_strerror as an alias to uv_strerror
It is not needed to know that os/* uses libuv.
2015-07-26 02:34:32 +03:00
Felipe Morales
a39ce92f0b Use NVIM instead of VIM in default title. 2015-07-23 14:03:08 -03:00
Björn Linse
0e65caa40e Delete test86 and 87 #3074
The python-client has it's own test suite, and this isn't even run: see
the has('nvim') call.

Taken from
1acf4ace52
with minor modifications.

"Now that you've done the necessary cleanup, why not go ahead and merge
this." @bfredl
2015-07-22 15:31:27 -04:00
Robin Allen
5ad619a847 menu: Fix :emenu mode detection #2992
A menu item can have separate bindings for each Vim mode.

:emenu checks to see which binding it should execute. But, it assumes
it can only be called from Normal mode, so its mode detection is based
on some guesswork. For instance, it detects if you've just used C-O
and, if so, uses the Insert mode binding.

Now that :emenu can be called from any mode (via vim_command), this
commit has it check the actual mode we're in, and simply use the
binding for that mode if we aren't in Normal mode.
2015-07-22 10:13:49 -04:00
Felipe Morales
a95a5ba839 options,tui: don't hardcode default terminal size
also, include some checks.
2015-07-21 23:54:01 -04:00
Felipe Morales
5732340c20 tui: respect the 'co' and 'lines' options on startup
`nvim --cmd "set co=... lines="` didn't work as expected, and forced to
set those options on VimEnter or afterwards.
2015-07-21 23:52:09 -04:00
Felipe Morales
6048e95f33 tui: send resize sequences to the terminal
Neither setting the 'columns' and 'lines' options nor using the
`:winsize` command resized the terminal window, which caused display
glitches.

Re: #2863
2015-07-21 23:51:07 -04:00
Lucas Hoffmann
6571c84d54 tests: Migrate legacy test 80. #2989
The test is also split in several blocks and heavily modernized.  This was
done to prevent the following quoting and escaping problems during migration:
- the vim command `put =...` treats double quotes as the start of a comment so
  they have to be escaped with a backslash
- when inserting control characters on the command line they have to be
  escaped with <C-V>

The parts one and two of the test are functional identical so they are wrapped
in a local function. The only difference was which letters where used to test
the same feature.

Part six did test a flag in 'cpoptions' that has been removed in neovim.  It
has therefore been removed as well.

Reviewed-by: Michael Reed <Pyrohh@users.noreply.github.com>
2015-07-21 19:56:15 -04:00
crondog
d6c97a85ff tui: Unconditionally enable bracketed paste mode #3060
There are more terminals which have bracketed paste support and it
doesnt seem to do any harm with terminals that dont support it eg screen

Reviewed-by: Marco Hinz <mh.codebro@gmail.com>
Reviewed-by: Michael Reed <Pyrohh@users.noreply.github.com>
"+1 Let's see what happens" Justin M. Keyes <justinkz@gmail.com>
2015-07-21 19:36:21 -04:00
Wander Nauta
bf9f50942d eval.c: Only inline float_op_wrapper on non-i386 #3072
glibc on i386 seems to have an optimization that makes it harder to call
some math functions indirectly from inside an inlined function, causing
compile-time errors with some versions of gcc.  This removes inlining on
that platform.

Closes #3071
2015-07-21 18:49:16 -04:00
Marco Hinz
43f7eec0cd Uncomment merged patches in version.c
7.4.774 -> https://github.com/neovim/neovim/pull/2563
7.4.775 -> https://github.com/neovim/neovim/pull/2564
7.4.784 -> https://github.com/neovim/neovim/pull/2792
2015-07-21 13:48:36 +02:00
Thiago de Arruda
23cdebd559 rstream: Fix read_cb invocation
- Add missing call when the stream is a file
- NULL check because it is possible to call rstream_start with the callback set
  to NULL.
2015-07-21 07:00:38 -03:00