<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rneovim.git/src/nvim/event/pty_process.c, branch v0.3.2</title>
<subtitle>Neovim fork with Rahm's personal hacks.
</subtitle>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/'/>
<entry>
<title>pty_process: split into plat-specific files (#3976)</title>
<updated>2016-06-05T00:02:56+00:00</updated>
<author>
<name>Rui Abreu Ferreira</name>
<email>equalsraf@users.noreply.github.com</email>
</author>
<published>2016-06-05T00:02:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=6ed9d47a6e0a28d163e1cf78e521e1282b725a87'/>
<id>6ed9d47a6e0a28d163e1cf78e521e1282b725a87</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>pty_process: Make termios structure a static variable</title>
<updated>2015-08-13T11:52:17+00:00</updated>
<author>
<name>Thiago de Arruda</name>
<email>tpadilha84@gmail.com</email>
</author>
<published>2015-08-13T10:57:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=a816c726bbae4361a30c95b1226aaaa1dc76fd24'/>
<id>a816c726bbae4361a30c95b1226aaaa1dc76fd24</id>
<content type='text'>
The structure has a constant initializer and is only used for reading.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The structure has a constant initializer and is only used for reading.
</pre>
</div>
</content>
</entry>
<entry>
<title>process: Remove indeterminism that causes reordering of pty events</title>
<updated>2015-08-13T11:52:17+00:00</updated>
<author>
<name>oni-link</name>
<email>knil.ino@gmail.com</email>
</author>
<published>2015-08-08T02:26:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=166d8c799f367e64744cef4d9a6ddd386809ece8'/>
<id>166d8c799f367e64744cef4d9a6ddd386809ece8</id>
<content type='text'>
Since pty events are queued, it is possible that the reads will be reordered.
Example scenario:

In the terminal you have output combined from stdout and stderr. A program
generates output, first you have some output on stdout, then output on stderr,
output on stdout, output on stderr,...  The whole output should be interleaved
from both streams.

Each output generates a read_event and they are placed in the same queue. If the
queue is processed, the first read_event will send the whole stdout output to
the terminal (on_job_output() consumes the whole buffer). The next read_event is
similar for stderr. The remaining read events do nothing because now both
RBuffer are already empty. So the terminal would show first the stdout output
and after that the stderr output.

This commit fixes the problem by disabling stderr stream in pty processes.
That's ok because they all represent the same stream(duplicate file
descriptors), plus one stream is simpler to deal with.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Since pty events are queued, it is possible that the reads will be reordered.
Example scenario:

In the terminal you have output combined from stdout and stderr. A program
generates output, first you have some output on stdout, then output on stderr,
output on stdout, output on stderr,...  The whole output should be interleaved
from both streams.

Each output generates a read_event and they are placed in the same queue. If the
queue is processed, the first read_event will send the whole stdout output to
the terminal (on_job_output() consumes the whole buffer). The next read_event is
similar for stderr. The remaining read events do nothing because now both
RBuffer are already empty. So the terminal would show first the stdout output
and after that the stderr output.

This commit fixes the problem by disabling stderr stream in pty processes.
That's ok because they all represent the same stream(duplicate file
descriptors), plus one stream is simpler to deal with.
</pre>
</div>
</content>
</entry>
<entry>
<title>pty_process: Simplify cleanup after error during spawn</title>
<updated>2015-08-13T10:41:04+00:00</updated>
<author>
<name>Thiago de Arruda</name>
<email>tpadilha84@gmail.com</email>
</author>
<published>2015-07-18T12:46:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=b13011ff47d9af019c74681edb5a1a42736ee7d7'/>
<id>b13011ff47d9af019c74681edb5a1a42736ee7d7</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>job: Replace by a better process abstraction layer</title>
<updated>2015-07-17T03:32:07+00:00</updated>
<author>
<name>Thiago de Arruda</name>
<email>tpadilha84@gmail.com</email>
</author>
<published>2015-07-17T03:32:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=aa9cb48bf08af14068178619414590254b263882'/>
<id>aa9cb48bf08af14068178619414590254b263882</id>
<content type='text'>
- New libuv/pty process abstraction with simplified API and no globals.
- Remove nvim/os/job*. Jobs are now a concept that apply only to programs
  spawned by vimscript job* functions.
- Refactor shell.c/channel.c to use the new module, which brings a number of
  advantages:
  - Simplified API, less code
  - No slots in the user job table are used
  - Not possible to acidentally receive data from vimscript
- Implement job table in eval.c, which is now a hash table with unilimited job
  slots and unique job ids.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- New libuv/pty process abstraction with simplified API and no globals.
- Remove nvim/os/job*. Jobs are now a concept that apply only to programs
  spawned by vimscript job* functions.
- Refactor shell.c/channel.c to use the new module, which brings a number of
  advantages:
  - Simplified API, less code
  - No slots in the user job table are used
  - Not possible to acidentally receive data from vimscript
- Implement job table in eval.c, which is now a hash table with unilimited job
  slots and unique job ids.
</pre>
</div>
</content>
</entry>
</feed>
