diff options
author | erw7 <erw7.github@gmail.com> | 2019-05-25 11:14:35 +0900 |
---|---|---|
committer | erw7 <erw7.github@gmail.com> | 2020-02-12 16:03:45 +0900 |
commit | aec3d7915c55fc0b7dc73f6186cf0ae45d416d33 (patch) | |
tree | 54d83b901dd4b31126b0cb250b84a062a61c086e /src/nvim/eval/funcs.c | |
parent | b015c4741caef37b3f89661e1d5d6a4a033b2856 (diff) | |
download | rneovim-aec3d7915c55fc0b7dc73f6186cf0ae45d416d33.tar.gz rneovim-aec3d7915c55fc0b7dc73f6186cf0ae45d416d33.tar.bz2 rneovim-aec3d7915c55fc0b7dc73f6186cf0ae45d416d33.zip |
vim-patch:8.1.0091: MS-Windows: Cannot interrupt gdb when program is running
Problem: MS-Windows: Cannot interrupt gdb when program is running.
Solution: Add debugbreak() and use it in the terminal debugger.
Respect 'modified' in a prompt buffer.
https://github.com/vim/vim/commit/4551c0a9fcdbdef52836d4852686d54b5e47fdaf
Diffstat (limited to 'src/nvim/eval/funcs.c')
-rw-r--r-- | src/nvim/eval/funcs.c | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/src/nvim/eval/funcs.c b/src/nvim/eval/funcs.c index 48e2ef8c51..36782e4223 100644 --- a/src/nvim/eval/funcs.c +++ b/src/nvim/eval/funcs.c @@ -1408,9 +1408,31 @@ static void f_cursor(typval_T *argvars, typval_T *rettv, FunPtr fptr) rettv->vval.v_number = 0; } -/* - * "deepcopy()" function - */ +// "debugbreak()" function +static void f_debugbreak(typval_T *argvars, typval_T *rettv, FunPtr fptr) +{ + int pid; + + rettv->vval.v_number = FAIL; + pid = (int)tv_get_number(&argvars[0]); + if (pid == 0) { + EMSG(_(e_invarg)); + } else { +#ifdef WIN32 + HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, 0, pid); + + if (hProcess != NULL) { + DebugBreakProcess(hProcess); + CloseHandle(hProcess); + rettv->vval.v_number = OK; + } +#else + uv_kill(pid, SIGINT); +#endif + } +} + +// "deepcopy()" function static void f_deepcopy(typval_T *argvars, typval_T *rettv, FunPtr fptr) { int noref = 0; |