Age | Commit message (Collapse) | Author |
|
Problem: ch_readraw() waits for NL if channel mode is NL.
Solution: Pass a "raw" flag to channel_read_block(). (Yasuhiro Matsumoto)
|
|
Problem: Using termdebug results in 100% CPU time. (tomleb)
Solution: Use polling instead of select().
|
|
Problem: Terminal without job updates slowly in GUI.
Solution: Poll for input when a channel has the keep_open flag.
|
|
Problem: Cannot open a terminal without running a job in it.
Solution: Make ":terminal NONE" open a terminal with a pty.
|
|
Problem: When term_sendkeys() sends many keys it may get stuck in writing
to the job.
Solution: Make the write non-blocking, buffer keys to be sent.
|
|
Problem: MS-Windows: passing arglist to job has escaping problems.
Solution: Improve escaping. (Yasuhiro Matsumoto, closes #1954)
|
|
Problem: Cannot set terminal size with options.
Solution: Add "term_rows", "term_cols" and "vertical".
|
|
Problem: Using multiple ch_log functions is clumsy.
Solution: Use variable arguments. (Ozaki Kiichi, closes #1919)
|
|
Problem: Terminal feature does not work on MS-Windows.
Solution: Use libvterm and libwinpty on MS-Windows. (Yasuhiro Matsumoto)
|
|
Problem: The terminal structure is never freed.
Solution: Free the structure and unreference what it contains.
|
|
Problem: Output of job in terminal is not displayed.
Solution: Connect the job output to the terminal.
|
|
Problem: When reading channel output in a timer, messages may go missing.
(Skywind)
Solution: Add the "drop" option. Write error messages in the channel log.
Don't have ch_canread() check for the channel being open.
|
|
Problem: When using ch_read() with zero timeout, can't tell the difference
between reading an empty line and nothing available.
Solution: Add ch_canread().
|
|
Problem: May not process channel readahead. (skywind)
Solution: If there is readahead don't block on input.
|
|
Problem: A channel is closed when reading on stderr or stdout fails, but
there may still be something to read on another part.
Solution: Turn ch_to_be_closed into a bitfield. (Ozaki Kiichi)
|
|
Problem: When using ":sleep" channel input is not handled.
Solution: When there is a channel check for input also when not in raw mode.
Check every 100 msec.
|
|
Problem: Can't tell which part of a channel has "buffered" status.
Solution: Add an optional argument to ch_status(). Let ch_info() also
return "buffered" for out_status and err_status.
|
|
Problem: It is not possible to close the "in" part of a channel.
Solution: Add ch_close_in().
|
|
Problem: When writing buffer lines to a job there is no NL to NUL
conversion.
Solution: Make it work symmetrical with writing lines from a job into a
buffer.
|
|
Problem: Collapsing channel buffers and searching for NL does not work
properly. (Xavier de Gary, Ramel Eshed)
Solution: Do not assume the buffer contains a NUL or not. Change NUL bytes
to NL to avoid the string is truncated.
|
|
Problem: Channel reading very long lines is slow.
Solution: Collapse multiple buffers until a NL is found.
|
|
Problem: Whether a job has exited isn't detected until a character is
typed. After calling exit_cb the cursor is in the wrong place.
Solution: Don't wait forever for a character to be typed when there is a
pending job. Update the screen if neede after calling exit_cb.
|
|
Problem: Valgrind reports memory leak for job that is not freed.
Solution: Free all jobs on exit. Add test for failing job.
|
|
Problem: May try to access buffer that's already freed.
Solution: When freeing a buffer remove it from any channel.
|
|
Problem: A channel may be garbage collected while it's still being used by
a job. (James McCoy)
Solution: Mark the channel as used if the job is still used. Do the same
for channels that are still used.
|
|
Problem: Cannot use ch_read() in the close callback.
Solution: Do not discard the channel if there is readahead. Do not discard
readahead if there is a close callback.
|
|
Problem: When a job ends the close callback is invoked before other
callbacks. On Windows the close callback is not called.
Solution: First invoke out/err callbacks before the close callback.
Make the close callback work on Windows.
|
|
Problem: Leaking memory when there is a cycle involving a job and a
partial.
Solution: Add a copyID to job and channel. Set references in items referred
by them. Go through all jobs and channels to find unreferenced
items. Also, decrement reference counts when garbage collecting.
|
|
Problem: Leaking memory when opening a channel fails.
Solution: Unreference partials in job options.
|
|
Problem: When writing buffer lines to a pipe Vim may block.
Solution: Avoid blocking, write more lines later.
|
|
Problem: Can't get info about a channel.
Solution: Add ch_info().
|
|
Problem: All Channels share the message ID, it keeps getting bigger.
Solution: Use a message ID per channel.
|
|
Problem: Missing update to proto file.
Solution: Change the proto file.
|
|
Problem: Missing job_info().
Solution: Implement it.
|
|
Problem: Too much code in eval.c.
Solution: Move job and channel code to channel.c.
|
|
Problem: Cannot re-use a channel for another job.
Solution: Add the "channel" option to job_start().
|
|
Problem: Writing last-but-one line of buffer to a channel isn't implemented
yet.
Solution: Implement it. Fix leaving a swap file behind.
|
|
Problem: Job input from buffer is not implemented.
Solution: Implement it. Add "in-top" and "in-bot" options.
|
|
Problem: Vim hangs when a channel has a callback but isn't referenced.
Solution: Have channel_unref() only return TRUE when the channel was
actually freed.
|
|
Problem: May free a channel when a callback may need to be invoked.
Solution: Keep the channel when refcount is zero.
|
|
Problem: When calling ch_close() the close callback is invoked, even though
the docs say it isn't. (Christian J. Robinson)
Solution: Don't call the close callback.
|
|
Problem: The close-cb option is not implemented yet.
Solution: Implemente close-cb. (Yasuhiro Matsumoto)
|
|
Problem: channel read implementation is incomplete.
Solution: Add ch_read() and options for ch_readraw().
|
|
Problem: Channels don't have a queue for stderr.
Solution: Have a queue for each part of the channel.
|
|
Problem: Can't remove a callback with ch_setoptions().
Solution: When passing zero or an empty string remove the callback.
|
|
Problem: Job and channel options parsing is scattered.
Solution: Move all option value parsing to get_job_options();
|
|
Problem: Win32 console and GUI handle channels differently.
Solution: Consolidate code between Win32 console and GUI.
|
|
Problem: When the port isn't opened yet when ch_open() is called it may
fail instead of waiting for the specified time.
Solution: Loop when select() succeeds but when connect() failed. Also use
channel logging for jobs. Add ch_log().
|
|
Problem: It's difficult to add more arguments to ch_sendraw() and
ch_sendexpr().
Solution: Make the third option a dictionary.
|
|
Problem: Channel NL mode is not supported yet.
Solution: Add NL mode support to channels.
|