Jan Edmund Lazo
131aad953c
win: defaults: 'shellcmdflag', 'shellxquote' #7343
...
closes #7698
Wrapping a command in double-quotes allows cmd.exe to safely dequote the
entire command as if the user entered the entire command in an
interactive prompt. This reduces the need to escape nested and uneven
double quotes.
The `/s` flag of cmd.exe makes the behaviour more reliable:
:set shellcmdflag=/s\ /c
Before this patch, cmd.exe cannot use cygwin echo.exe (as opposed to
cmd.exe `echo` builtin) even if it is wrapped in double quotes.
Example:
:: internal echo
> cmd /s /c " echo foo\:bar" "
foo\:bar"
:: cygwin echo.exe
> cmd /s /c " "echo" foo\:bar" "
foo:bar
2018-03-24 22:05:53 +01:00
Justin M. Keyes
6a7c904648
Merge #4419 'implement <Cmd> key'
2018-03-24 17:45:48 +01:00
Justin M. Keyes
7ae4144208
refactor/rename: path_try_shorten_fname()
2018-03-24 14:17:40 +01:00
Justin M. Keyes
998a16c926
refactor/rename: path_is_absolute()
2018-03-24 14:17:40 +01:00
Justin M. Keyes
189c5abeba
provider/RPC: apply_autocmds_group(): fix double-free
...
During provider dispatch, eval_call_provider() saves global
state--including pointers, such as `autocmd_fname`--into
`provider_caller_scope` which is later restored by f_rpcrequest().
But `autocmd_fname` is special-cased in eval_vars(), for performance
(see Vim patch 7.2.021; this is also the singular purpose of the
`autocmd_fname_full` global. Yay!)
If eval_vars() frees `autocmd_fname` then its provider-RPC-scoped alias
becomes a problem.
Solution: Don't free autocmd_fname in eval_vars(), just copy into it.
closes #5245
closes #5617
Reference
------------------------------------------------------------------------
Vim patch 7.2.021
f6dad43c98
Problem: When executing autocommands getting the full file name may be
slow. (David Kotchan)
Solution: Postpone calling FullName_save() until autocmd_fname is used.
vim_dev discussion (2008): "Problem with CursorMoved AutoCommand when
Editing Files on a Remote WIndows Share"
https://groups.google.com/d/msg/vim_dev/kj95weZa_eE/GTgj4aq5sIgJ
2018-03-24 11:01:24 +01:00
Björn Linse
d407a48665
getchar: implement <Cmd> key to invoke command in any mode
2018-03-23 14:01:49 +01:00
Justin M. Keyes
ae409b5042
test/win: use cmd.exe for test
...
Can revert this after #8120 .
2018-03-18 17:15:06 +01:00
Justin M. Keyes
167898a517
test: jobstop() kills entire process tree
...
Test correctly fails before 8d90171f8b
.
ref #6530
2018-03-18 17:03:05 +01:00
Justin M. Keyes
a034d4b69d
API: nvim_get_proc()
...
TODO: "exepath" field (win32: QueryFullProcessImageName())
On unix-likes `ps` is used because the platform-specific APIs are
a nightmare. For reference, below is a (incomplete) attempt:
diff --git a/src/nvim/os/process.c b/src/nvim/os/process.c
index 09769925aca5..99afbbf290c1 100644
--- a/src/nvim/os/process.c
+++ b/src/nvim/os/process.c
@@ -208,3 +210,60 @@ int os_proc_children(int ppid, int **proc_list, size_t *proc_count)
return 0;
}
+/// Gets various properties of the process identified by `pid`.
+///
+/// @param pid Process to inspect.
+/// @return Map of process properties, empty on error.
+Dictionary os_proc_info(int pid)
+{
+ Dictionary pinfo = ARRAY_DICT_INIT;
+#ifdef WIN32
+
+#elif defined(__APPLE__)
+ char buf[PROC_PIDPATHINFO_MAXSIZE];
+ if (proc_pidpath(pid, buf, sizeof(buf))) {
+ name = getName(buf);
+ PUT(pinfo, "exepath", STRING_OBJ(cstr_to_string(buf)));
+ return name;
+ } else {
+ ILOG("proc_pidpath() failed for pid: %d", pid);
+ }
+#elif defined(BSD)
+# if defined(__FreeBSD__)
+# define KP_COMM(o) o.ki_comm
+# else
+# define KP_COMM(o) o.p_comm
+# endif
+ struct kinfo_proc *proc = kinfo_getproc(pid);
+ if (proc) {
+ PUT(pinfo, "name", cstr_to_string(KP_COMM(proc)));
+ xfree(proc);
+ } else {
+ ILOG("kinfo_getproc() failed for pid: %d", pid);
+ }
+
+#elif defined(__linux__)
+ char fname[256] = { 0 };
+ char buf[MAXPATHL];
+ snprintf(fname, sizeof(fname), "/proc/%d/comm", pid);
+ FILE *fp = fopen(fname, "r");
+ // FileDescriptor *f = file_open_new(&error, fname, kFileReadOnly, 0);
+ // ptrdiff_t file_read(FileDescriptor *const fp, char *const ret_buf,
+ // const size_t size)
+ if (fp == NULL) {
+ ILOG("fopen() of /proc/%d/comm failed", pid);
+ } else {
+ size_t n = fread(buf, sizeof(char), sizeof(buf) - 1, fp);
+ if (n == 0) {
+ WLOG("fread() of /proc/%d/comm failed", pid);
+ } else {
+ size_t end = MIN(sizeof(buf) - 1, n);
+ end = (end > 0 && buf[end - 1] == '\n') ? end - 1 : end;
+ buf[end] = '\0';
+ PUT(pinfo, "name", STRING_OBJ(cstr_to_string(buf)));
+ }
+ }
+ fclose(fp);
+#endif
+ return pinfo;
+}
2018-03-18 00:11:45 +01:00
Justin M. Keyes
dbad797edd
API: nvim_get_proc_children()
...
ref https://github.com/libuv/libuv/pull/836
2018-03-16 10:55:12 +01:00
Justin M. Keyes
de47515477
test: use luv.now() instead of os.time()
2018-03-16 10:55:12 +01:00
Marco Hinz
cca407b43e
DirChanged: support <buffer> ( #8140 )
2018-03-16 07:29:20 +01:00
Matthew Malcomson
cc58ec9a80
Update documentation
...
Update vim_diff.txt with :lmap differences, update documentation on
'keymap', and add tests.
The tests added are to demonstrate the behaviour specified in the
documentation of :loadkeymap.
2018-03-14 10:39:14 +00:00
Matthew Malcomson
3b304fc04a
'keymap' now uses :lmap instead of :lnoremap
...
This means that the major way that :lmap mappings are applied works as
one would expect with macros.
This also means that having a translation with 'keymap' does not
preclude using mappings in insert mode with :imap.
2018-03-14 10:39:14 +00:00
Matthew Malcomson
d989051220
Split :lnoremap test into done and pending
...
There is some behaviour that we keep with the recent changes, and some
behaviour that we change.
Instetad of having one failing test covering all behaviour, we split
the test into two.
2018-03-14 10:39:14 +00:00
Matthew Malcomson
e01f35c4bb
:lnoremap mappings should not be remapped when replaying a recording
2018-03-14 10:39:14 +00:00
Matthew Malcomson
20bfe0f2a3
Account for :lmap in macros
...
close #5652
Start by adding some tests
2018-03-14 10:39:14 +00:00
Matthew Malcomson
1aefbff641
Add some basic tests for macros
2018-03-14 10:39:14 +00:00
Justin M. Keyes
496b0f944f
test: next_msg(): default timeout
to 10s
...
Infinite timeout results in hangs which waste time. If some test needs
longer than 10s to wait for a message, it should specify the timeout
explicitly.
2018-03-11 12:43:42 +01:00
Justin M. Keyes
fd4021387e
test: rename next_message() to next_msg()
2018-03-11 12:43:42 +01:00
Justin M. Keyes
2bf0869160
test: handle non-deterministic message cadence
2018-03-11 12:43:42 +01:00
Justin M. Keyes
9cefd83cc7
Merge #8084 'build/win: support MSVC'
2018-03-08 20:26:18 +01:00
b-r-o-c-k
c29a82c45f
build/msvc: Make shell-test fix only apply to MSCV
2018-03-06 20:38:10 -06:00
b-r-o-c-k
773f23e00d
build/msvc: Make shell-test work
...
MSVC doesn't have unistd.h or usleep() so it was replaced with the
Sleep() WinAPI function.
2018-03-04 17:44:23 -06:00
Björn Linse
cee9a8ce8a
message: don't output unprintable chars to screen
...
fixes #7586 #8070
2018-03-04 08:37:57 +01:00
geekodour
9f994bb699
api: nvim_list_uis #8004
...
ref #7438
closes #4842
2018-03-03 15:06:24 +01:00
James McCoy
158f8b7ce3
unittest: Ignore all _Float-prefixed types ( #8067 )
...
Previously, we ignored only _Float128. But glibc 2.27 added _Float32
and _Float32x. Rather than play whack-a-mole, ignore everything.
2018-02-25 10:23:12 +01:00
Matthieu Coudron
384a39479a
'fillchars': fix defaults logic; handle ambiwidth=double #7986
...
Update tests.
2018-02-23 00:48:35 +01:00
Björn Linse
c57d315963
Merge pull request #8031 from bfredl/gotintstatus
...
jobwait: return -2 on interrupt even with timeout
2018-02-20 15:15:06 +01:00
Björn Linse
04fdbfe17d
jobwait: return -2 on interrupt also with timeout
2018-02-20 12:32:23 +01:00
Jan Edmund Lazo
7fa69fb288
Resolve issues mentioned in PR review
2018-02-19 07:10:47 -05:00
Jan Edmund Lazo
795da343bb
test: win: emulate yes with for loop
2018-02-19 07:10:46 -05:00
Jan Edmund Lazo
07dfe0f5ea
test: win: enable ui/wildmode_spec.lua
2018-02-19 07:10:46 -05:00
Jan Edmund Lazo
8dcfd58e2c
test: win: enable termclose_spec.lua
2018-02-19 07:10:46 -05:00
Jan Edmund Lazo
d80bf3c656
test: enable ex_cmds/cd_spec.lua on Windows
2018-02-19 07:10:46 -05:00
Jan Edmund Lazo
df99ab461e
test: enable legacy/fixeol_spec in Windows
...
Try nvim's delete() for cross-platform file remove in Windows
2018-02-19 07:10:45 -05:00
Jan Edmund Lazo
55ce6bfffb
test: enable ex_cmds/write_spec.lua in Windows
2018-02-19 07:10:45 -05:00
Jan Edmund Lazo
6beb7ee77a
win: enable legacy test 051
2018-02-19 07:10:44 -05:00
Jan Edmund Lazo
f1e6828b7b
win: enable legacy test 059
2018-02-19 07:10:44 -05:00
Jan Edmund Lazo
2943056f75
win: enable legacy test 107
2018-02-19 07:10:44 -05:00
Jan Edmund Lazo
44dc8b4753
win: enable legacy test 093
2018-02-19 07:10:43 -05:00
Jan Edmund Lazo
10fbae086a
win: enable legacy/arglist_spec.lua
2018-02-19 07:10:43 -05:00
Jan Edmund Lazo
18a53b6502
win: enable legacy test 30
2018-02-19 07:10:43 -05:00
Jan Edmund Lazo
c5a7f451ce
win: enable legacy/getcwd_spec.lua
2018-02-19 07:10:43 -05:00
Jan Edmund Lazo
3c0cc9c2fb
win: enable legacy/wordcount_spec.lua
2018-02-19 07:10:43 -05:00
Jan Edmund Lazo
e55de56a99
win: enable legacy/packadd_spec.lua
2018-02-19 07:10:42 -05:00
Jan Edmund Lazo
f4d82c1438
win: enable legacy test 011
2018-02-19 07:10:42 -05:00
Jan Edmund Lazo
4f65cd7c0a
win: enable legacy/delete_spec.lua
2018-02-19 07:10:42 -05:00
Jan Edmund Lazo
bde32edefe
win: enable legacy test 097
2018-02-19 07:10:42 -05:00
Jan Edmund Lazo
0fd899aa07
win: enable legacy test 025
2018-02-19 07:10:41 -05:00