| Commit message (Collapse) | Author | Age |
... | |
| | |
| | |
| | |
| | |
| | | |
os_system() returns a Pascal string, for example (it also NUL-terminates the
string, but that's neither here nor there).
|
| | |
| | |
| | |
| | | |
Easier testing.
|
| | |
| | |
| | |
| | |
| | | |
Apple seems to define some functions as `inline` but not `static` in
headers. The ghetto parser wasn't unbelievably happy with this.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Not necessary, as discussed in #980.
From the libuv mailing list:
https://groups.google.com/forum/#!topic/libuv/OD38PeGeVgQ
E.g. this could happen (red: on Windows):
> > alloc_cb(handle1);
> > alloc_cb(handle2);
> > read_cb(handle1);
> > read_cb(handle2);
But this couldn't:
> > alloc_cb(handle1);
> > alloc_cb(handle1);
> > read_cb(handle1);
> > read_cb(handle1);
Because each stream has a 1-to-1 correspondance with a libuv handle. The
code removed was never executed.
Closes #980.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
It used to be 1024 bytes, which is very tiny and slows down some operations
(imaging `cat`-ing a large file). Benchmarks show a large speedup for such
cases. ref #978.
For modern systems 0xFFFF bytes (65535 B = 64 KB = 0.0625 MB) per job
shouldn't be a big problem.
|
| | |
| | |
| | |
| | |
| | |
| | | |
This evades the tempfile problem (unless of course one manually adds
redirects to the shell commandline, which some plugins seem to do, e.g.:
vim-easytags).
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
With the goal to support pipe-only system() calls.
Notes on the second (vim) argument to f_system() (i.e.: redirected input)
and its implications:
- When calling system('cat -', ['some', 'list']), vanilla vim (before a
recent patch that added support for passing lists) just passes an empty
file to the process. This is the same as immediately closing the pipe,
which os_system does when no input is given. If we wouldn't close the
pipe, the process will linger forever (as is the case with `cat -`).
As of now, it's not allowed to pass a non-NULL pointer as the `output`
parameter. In other words, it's not possible to signal disinterst in the
process output. That may change in the future.
|
| | |
| | |
| | |
| | |
| | |
| | | |
- One can now manually close the in-pipe, without having to tear down the
job.
- One can be notified of write success/failure.
|
| | |
| | |
| | |
| | |
| | | |
Sometimes a wbuffer is not supposed to be free()'d (such as when it comes
from a constant (possibly static) string, for example.
|
| | |
| | |
| | |
| | | |
Now modules using the wstream can find out what's happening to their writes.
|
| | |
| | |
| | |
| | | |
Used to wait synchronously for a job to end.
|
|/ /
| |
| |
| | |
Minor fixes
|
|\ \
| | |
| | | |
remove gettimeofday() usage
|
| | |
| | |
| | |
| | | |
There are no more uses of gettimeofday, so remove the check in CMake.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
gettimeofday() is not portable, replace with os_hrtime() wherever possible.
The new code should behave equivalently to the old implementation.
Because of this, HAVE_GETTIMEOFDAY is no longer necessary To be able to
handle double clicks.
|
| | |
| | |
| | |
| | |
| | | |
gettimeofday() is not portable. I suspect os_hrtime() is also better as a
seed than gettimeofday() or time() were.
|
| | |
| | |
| | |
| | | |
Was removed in #699 but actually doesn't have anything to do with security.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Should fix the following travis error:
/usr/bin/ld: /opt/neovim-deps/lib/libluajit-5.1.a(lj_err.o): relocation R_X86_64_32S against `.rodata' can not be used when making a shared object; recompile with -fPIC
/opt/neovim-deps/lib/libluajit-5.1.a: could not read symbols: Bad value
|
| | |
| | |
| | |
| | |
| | |
| | | |
Fixes up gcc 4.1 (not specifically a supported compiler but it's standard
for varargs anyway so it's good to have it included and depend less on
implicit includes).
|
|\ \ \
| | | |
| | | | |
func_attr: clang/icc support NONNULL_* attr
|
| | |/
| |/|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Both clang and (apparently) icc support the nonnull attribute. So I'm not
sure why it wasn't enabled in the first place.
- clang: http://clang-analyzer.llvm.org/annotations.html#attr_nonnull
- icc: https://software.intel.com/en-us/forums/topic/280290 (not conclusive
evidence, but the best I could find, lacking docs)
|
|\ \ \
| |/ /
|/| | |
Fix some memory leaks in job.c and provider.c
|
| | |
| | |
| | |
| | |
| | | |
Free the data memory of process and pipe handles in the close callback
for a job.
|
|/ /
| |
| |
| |
| | |
If no channel can be found for a method, free argument arg before
returning.
|
|\ \
| |/
|/| |
Add unit tests for buffer.c and fileio.c
|
| | |
|
| | |
|
|/ |
|
|\ |
|
| |
| |
| |
| |
| |
| | |
- it makes no sense for these functions to take NULL pointers
- if `localtime()` on Windows returns a NULL pointer, the old code would try
to dereference it.
|
| |
| |
| |
| |
| |
| | |
gettimeofday() doesn't exist on Windows, as reported by @equalsraf. It seems
a call to time() would be sufficient here, as only the seconds since the
UNIX epoch are needed.
|
|/
|
|
| |
Include what you use, also in the positive direction.
|
|\ |
|
| | |
|
| |
| |
| |
| | |
Removes the STARTUPTIME define.
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Allow globals.h to be included without including vim.h. Another small piece
of the puzzle of dismantling vim.h.
Moving some extra `#define`'s to globals.h is no better than having them in
vim.h. We should, in a later PR, move them to the file where they belong or
to a separate `constants.h` or something.
|
| |
| |
| |
| | |
The upcoming decoupling of vim.h and globals.h needs this to compile.
|
| |
| |
| |
| |
| |
| | |
Reuse the profiling functions to implement the startuptime functions.
Decreases our dependency on `gettimeofday()` and thus gets us a little bit
closer to a clean port to Windows.
|
|/
|
|
|
| |
It's a better place to put it. Also slightly documented and reformatted, but
not changed.
|
| |
|
|
|
|
| |
As discussed here: https://github.com/neovim/neovim/pull/941/files#r15026398
|
|\ |
|
| |
| |
| |
| | |
This is required to run some tests of the python client
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
- Remove all *_set_defer methods and the 'defer' flag from rstream/jobs
- Added {signal,rstream,job}_event_source functions. Each return a pointer that
represent the event source for the object in question(For signals, a static
pointer is returned)
- Added a 'source' field to the Event struct, which is set to the appropriate
value by the code that created the event.
- Added a 'sources' parameter to `event_poll`. It should point to a
NULL-terminated array of event sources that will be used to decide which
events should be processed immediately
- Added a 'source_override' parameter to `rstream_new`. This was required to use
jobs as event sources of RStream instances(When "focusing" on a job, for
example).
- Extracted `process_from` static function from `event_process`.
- Remove 'defer' parameter from `event_process`, which now operates only on
deferred events.
- Refactor `channel_send_call` to use the new lock mechanism
What changed in a single sentence: Code that calls `event_poll` have to specify
which event sources should NOT be deferred. This change was necessary for a
number of reasons:
- To fix a bug where due to race conditions, a client request
could end in the deferred queue in the middle of a `channel_send_call`
invocation, resulting in a deadlock since the client process would never
receive a response, and channel_send_call would never return because
the client would still be waiting for the response.
- To handle "event locking" correctly in recursive `channel_send_call`
invocations when the frames are waiting for responses from different
clients. Not much of an issue now since there's only a python client, but
could break things later.
- To simplify the process of implementing synchronous functions that depend on
asynchronous events.
|
| |
| |
| |
| |
| |
| | |
Also changed the default log level to INFO so developers won't end up with big
log files without asking explicitly(DLOG statements were placed in really "hot"
code)
|
| |
| |
| |
| |
| | |
The `inchar` function could enter an infinite loop if there are events pending
to be processed when an interrupt is received.
|
| |
| |
| |
| |
| | |
This is for compatibility with python-vim interface: When passing an end index
with a value higher than the last index, assume the `include_end` flag
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This reimplements the '+'/'*' clipboard registers(both are aliases to the same
register, no dedicated storage for the X11 selection) on top of the provider
infrastructure.
This adds two new 'unnamedclip' option, has the same effect of setting
'clipboard' to 'unnamed/unnamedplus' in vim
The 'clipboard' option was not reused because all values(except 'unnamedplus')
seem to be useless for Neovim, and the code to parse the option was relatively
big. The option remains for vim compatibility but it's silently ignored.
|
| |
| |
| |
| |
| |
| |
| |
| | |
This uses the provider/scripting infrastructure to reintroduce python support
through the msgpack-rpc API.
A new 'initpython' option was added, and it must be set to a command that will
bootstrap the python provider the first time it's needed.
|
| |
| |
| |
| |
| |
| | |
This uses the provider module infrastructure to implement common code for
vimscript commands/functions that need to communicate with external
interpreters, eg: pydo, rubydo, pyfile, rubyfile, etc.
|