This is equivalent to patches 7.4.396, 7.4.445 and 7.4.598.
vim-patch:7.4.396
Problem: When 'clipboard' is "unnamed", :g/pat/d is very slow.
(Praful)
Solution: Only set the clipboard after the last delete. (Christian
Brabandt)
1f285eb49a
vim-patch:7.4.445
Problem: Clipboard may be cleared on startup.
Solution: Set clip_did_set_selection to -1 during startup. (Christian
Brabandt)
1a19d37d90
vim-patch:7.4.598
Problem: ":tabdo windo echo 'hi'" causes "* register not to be
changed.
(Salman Halim)
Solution: Change how clip_did_set_selection is used and add
clipboard_needs_update and global_change_count. (Christian
Brabandt)
af6a579263
Co-Author: @bfredl
Problem: Commands like `:e term://top` display `term://.//PID:(null)`
instead of `term://.//PID:top`.
Solution: Remove the optional `name` argument (it allowed
ambiguous/potentially destructive cases, so it was problematic anyway).
Closes#3113Closes#2924
RETSIGTYPE, SIGRETURN, and SIGDEFARG are always defined the same, so
inline them for simplicity; SIGDUMMYARG, however, is unused, so remove
it.
Even if these things don't work on windows, the signal handler in
if_cscope.c is already wrapped with '#idef UNIX', as is its only call
site.
Reviewed-by: Justin M. Keyes <justinkz@gmail.com>
SIGHAS3ARGS appears in Vim's source code like this:
/* List 3 arg systems here. I guess __sgi, please test and correct me. jw. */
if defined(__sgi) && defined(HAVE_SIGCONTEXT)
define SIGHAS3ARGS
endif
Given we don't support SGI, remove it.
vim.h is too big, and these were missing parens around the arguments.
These may already be defined in <sys/param.h> or <windef.h>, so guard
them with an #ifndef.
extracted from #810
Problem: Accessing memory before an allocated block.
Solution: Check for not going before the start of a pattern. (Dominique Pelle)
https://github.com/vim/vim/commit/v7-4-799
In Windows there is no equivalent to the filesystem executable bit; the
documentation states that for Windows :executable() returns
1 for all files. But this behaviour was broken because is_executable()
checked for the UNIX bit.
When WIN32 is defined we now skip the S_IXUSR check.
After @250aca4f8938 it is possible that terminal_close will be called without
invoking the close_cb(which normally destroys the terminal structure). If this
happens, the terminal buffer will already be deleted so there's no need to call
`bwipeout!`.
The call to `event_init()` was too late. `command_line_scan()` in `main()` could
already need the loop initialized. Ref https://github.com/neovim/neovim/issues/3045#issuecomment-123405833.
A consequence of this change is that it was necessary to move the
`channel_from_stdio()` call to `command_line_scan()` when embedded_mode is set.
- Explicitly set the SignalWatcher event queue. Without this, the watcher will
publish events to the fast queue, resulting in resize bugs for certain
terminals(#2322).
- Set `async = false` to the `remote_ui_attach` handler(It was a deferred
before, this is the new equivalent)
It is possible for a processed event in the input loop of
terminal_enter() to destroy the terminal. But this is undetected by the
function and it still tries to use the freed terminal.
Use a reference count to delay the freeing of the terminal until
terminal_enter() returns.
Fixes#3112
os_file_is_readonly() in its current form is equivalent to
!os_file_is_writable(). This does not appear to be a bug, because Vim's
use of check_file_readonly() (which we changed to os_file_is_readonly())
is equivalent to !os_file_is_writable() in every case.
os_file_is_readonly() also fails this test:
returns false if the file is non-read, non-write
A more useful form would define behavior under these cases:
- path is executable (but not writable)
- path is non-existent
- path is directory
But there is no reason for os_file_is_readonly() to exist, so remove it.