mirror of
https://github.com/vim/vim.git
synced 2025-09-26 04:04:07 -04:00
updated for version 7.1-282
This commit is contained in:
@@ -24,7 +24,7 @@ gvimext.dll: gvimext.obj \
|
|||||||
gvimext.obj: gvimext.h
|
gvimext.obj: gvimext.h
|
||||||
|
|
||||||
.cpp.obj:
|
.cpp.obj:
|
||||||
$(cc) $(cflags) -DFEAT_GETTEXT $(cvarsdll) $*.cpp
|
$(cc) $(cflags) -DFEAT_GETTEXT $(cvarsmt) $*.cpp
|
||||||
|
|
||||||
gvimext.res: gvimext.rc
|
gvimext.res: gvimext.rc
|
||||||
$(rc) $(rcflags) $(rcvars) gvimext.rc
|
$(rc) $(rcflags) $(rcvars) gvimext.rc
|
||||||
|
@@ -82,9 +82,8 @@ To compile and debug Vim with the VC2003 Toolkit, you will also need
|
|||||||
|ms-platform-sdk|, |dotnet-1.1-redist|, |dotnet-1.1-sdk|,
|
|ms-platform-sdk|, |dotnet-1.1-redist|, |dotnet-1.1-sdk|,
|
||||||
and |windbg-download|.
|
and |windbg-download|.
|
||||||
|
|
||||||
It's easier to download Visual C++ 2005 Express Edition, |msvc-2005-express|.
|
It's easier to download Visual C++ 2008 Express Edition, |msvc-2008-express|,
|
||||||
The advantage of the VC 2003 Toolkit is that it will be freely available
|
which is freely available in perpetuity.
|
||||||
long after VC 2005 Express Edition stops being free in November 2006.
|
|
||||||
|
|
||||||
The free Code::Blocks IDE works with the VC2003 Toolkit, as described at
|
The free Code::Blocks IDE works with the VC2003 Toolkit, as described at
|
||||||
http://wiki.codeblocks.org/index.php?title=Integrating_Microsoft_Visual_Toolkit_2003_with_Code::Blocks_IDE
|
http://wiki.codeblocks.org/index.php?title=Integrating_Microsoft_Visual_Toolkit_2003_with_Code::Blocks_IDE
|
||||||
@@ -152,6 +151,14 @@ Instructions for integrating the Platform SDK into VC Express:
|
|||||||
http://msdn.microsoft.com/vstudio/express/visualc/usingpsdk/default.aspx
|
http://msdn.microsoft.com/vstudio/express/visualc/usingpsdk/default.aspx
|
||||||
|
|
||||||
|
|
||||||
|
Visual C++ 2008 Express Edition *msvc-2008-express*
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
|
Visual C++ 2008 Express Edition can be downloaded for free from:
|
||||||
|
http://msdn2.microsoft.com/en-us/express/default.aspx
|
||||||
|
This includes the IDE and the debugger. You can build Vim with Make_mvc.mak.
|
||||||
|
|
||||||
|
|
||||||
2. MinGW
|
2. MinGW
|
||||||
========
|
========
|
||||||
|
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
# Makefile for Vim on Win32 (Windows NT/2000/XP/2003 and Windows 95/98/Me)
|
# Makefile for Vim on Win32 (Windows NT/2000/XP/2003 and Windows 95/98/Me)
|
||||||
# and Win64, using the Microsoft Visual C++ compilers. Known to work with
|
# and Win64, using the Microsoft Visual C++ compilers. Known to work with
|
||||||
# VC5, VC6 (VS98), VC7.0 (VS2002), VC7.1 (VS2003), and VC8 (VS2005).
|
# VC5, VC6 (VS98), VC7.0 (VS2002), VC7.1 (VS2003), VC8 (VS2005),
|
||||||
|
# and VC9 (VS2008).
|
||||||
#
|
#
|
||||||
# To build using other Windows compilers, see INSTALLpc.txt
|
# To build using other Windows compilers, see INSTALLpc.txt
|
||||||
#
|
#
|
||||||
@@ -285,7 +286,8 @@ XPM_INC = -I $(XPM)\include
|
|||||||
# need shell32.lib for ExtractIcon()
|
# need shell32.lib for ExtractIcon()
|
||||||
# gdi32.lib and comdlg32.lib for printing support
|
# gdi32.lib and comdlg32.lib for printing support
|
||||||
# ole32.lib and uuid.lib are needed for FEAT_SHORTCUT
|
# ole32.lib and uuid.lib are needed for FEAT_SHORTCUT
|
||||||
CON_LIB = advapi32.lib shell32.lib gdi32.lib comdlg32.lib ole32.lib uuid.lib
|
CON_LIB = oldnames.lib kernel32.lib advapi32.lib shell32.lib gdi32.lib \
|
||||||
|
comdlg32.lib ole32.lib uuid.lib /machine:$(CPU) /nodefaultlib
|
||||||
!if "$(DELAYLOAD)" == "yes"
|
!if "$(DELAYLOAD)" == "yes"
|
||||||
CON_LIB = $(CON_LIB) /DELAYLOAD:comdlg32.dll /DELAYLOAD:ole32.dll DelayImp.lib
|
CON_LIB = $(CON_LIB) /DELAYLOAD:comdlg32.dll /DELAYLOAD:ole32.dll DelayImp.lib
|
||||||
!endif
|
!endif
|
||||||
@@ -331,6 +333,7 @@ MSVCVER = 5.0
|
|||||||
!endif
|
!endif
|
||||||
!if "$(_NMAKE_VER)" == "6.00.8168.0"
|
!if "$(_NMAKE_VER)" == "6.00.8168.0"
|
||||||
MSVCVER = 6.0
|
MSVCVER = 6.0
|
||||||
|
CPU = ix86
|
||||||
!endif
|
!endif
|
||||||
!if "$(_NMAKE_VER)" == "7.00.9466"
|
!if "$(_NMAKE_VER)" == "7.00.9466"
|
||||||
MSVCVER = 7.0
|
MSVCVER = 7.0
|
||||||
@@ -344,6 +347,9 @@ MSVCVER = 8.0
|
|||||||
!if "$(_NMAKE_VER)" == "8.00.50727.762"
|
!if "$(_NMAKE_VER)" == "8.00.50727.762"
|
||||||
MSVCVER = 8.0
|
MSVCVER = 8.0
|
||||||
!endif
|
!endif
|
||||||
|
!if "$(_NMAKE_VER)" == "9.00.20706.01"
|
||||||
|
MSVCVER = 9.0
|
||||||
|
!endif
|
||||||
!endif
|
!endif
|
||||||
|
|
||||||
# Abort bulding VIM if version of VC is unrecognised.
|
# Abort bulding VIM if version of VC is unrecognised.
|
||||||
@@ -352,13 +358,13 @@ MSVCVER = 8.0
|
|||||||
!message Cannot determine Visual C version being used. If you are using the
|
!message Cannot determine Visual C version being used. If you are using the
|
||||||
!message Windows SDK then you must have the environment variable MSVCVER set to
|
!message Windows SDK then you must have the environment variable MSVCVER set to
|
||||||
!message your version of the VC compiler. If you are not using the Express
|
!message your version of the VC compiler. If you are not using the Express
|
||||||
!message version of Visual C you van either set MSVCVER or update this makefile
|
!message version of Visual C, you can either set MSVCVER or update this makefile
|
||||||
!message to handle the new value for _NMAKE_VER.
|
!message to handle the new value for _NMAKE_VER, "$(_NMAKE_VER)".
|
||||||
!error Make aborted.
|
!error Make aborted.
|
||||||
!endif
|
!endif
|
||||||
|
|
||||||
# Convert processor ID to MVC-compatible number
|
# Convert processor ID to MVC-compatible number
|
||||||
!if "$(MSVCVER)" != "8.0"
|
!if ("$(MSVCVER)" != "8.0") && ("$(MSVCVER)" != "9.0")
|
||||||
!if "$(CPUNR)" == "i386"
|
!if "$(CPUNR)" == "i386"
|
||||||
CPUARG = /G3
|
CPUARG = /G3
|
||||||
!elseif "$(CPUNR)" == "i486"
|
!elseif "$(CPUNR)" == "i486"
|
||||||
@@ -373,7 +379,7 @@ CPUARG = /G7 /arch:SSE2
|
|||||||
CPUARG =
|
CPUARG =
|
||||||
!endif
|
!endif
|
||||||
!else
|
!else
|
||||||
# VC8 only allows specifying SSE architecture
|
# VC8/9 only allows specifying SSE architecture
|
||||||
!if "$(CPUNR)" == "pentium4"
|
!if "$(CPUNR)" == "pentium4"
|
||||||
CPUARG = /arch:SSE2
|
CPUARG = /arch:SSE2
|
||||||
!endif
|
!endif
|
||||||
@@ -391,7 +397,7 @@ OPTFLAG = /O2
|
|||||||
!else # MAXSPEED
|
!else # MAXSPEED
|
||||||
OPTFLAG = /Ox
|
OPTFLAG = /Ox
|
||||||
!endif
|
!endif
|
||||||
!if "$(MSVCVER)" == "8.0"
|
!if ("$(MSVCVER)" == "8.0") || ("$(MSVCVER)" == "9.0")
|
||||||
# Use link time code generation if not worried about size
|
# Use link time code generation if not worried about size
|
||||||
!if "$(OPTIMIZE)" != "SPACE"
|
!if "$(OPTIMIZE)" != "SPACE"
|
||||||
OPTFLAG = $(OPTFLAG) /GL
|
OPTFLAG = $(OPTFLAG) /GL
|
||||||
@@ -404,11 +410,11 @@ CFLAGS = $(CFLAGS) /MD
|
|||||||
LIBC = msvcrt.lib
|
LIBC = msvcrt.lib
|
||||||
! else
|
! else
|
||||||
LIBC = libcmt.lib
|
LIBC = libcmt.lib
|
||||||
CFLAGS = $(CFLAGS) /MT
|
CFLAGS = $(CFLAGS) /Zl /MT
|
||||||
! endif
|
! endif
|
||||||
!else # DEBUG
|
!else # DEBUG
|
||||||
VIM = vimd
|
VIM = vimd
|
||||||
! if "$(CPU)" == "i386"
|
! if ("$(CPU)" == "i386") || ("$(CPU)" == "ix86")
|
||||||
DEBUGINFO = /ZI
|
DEBUGINFO = /ZI
|
||||||
! endif
|
! endif
|
||||||
CFLAGS = $(CFLAGS) -D_DEBUG -DDEBUG /Od
|
CFLAGS = $(CFLAGS) -D_DEBUG -DDEBUG /Od
|
||||||
@@ -424,7 +430,7 @@ CFLAGS = $(CFLAGS) /MDd
|
|||||||
LIBC = $(LIBC) msvcrtd.lib
|
LIBC = $(LIBC) msvcrtd.lib
|
||||||
! else
|
! else
|
||||||
LIBC = $(LIBC) libcmtd.lib
|
LIBC = $(LIBC) libcmtd.lib
|
||||||
CFLAGS = $(CFLAGS) /MTd
|
CFLAGS = $(CFLAGS) /Zl /MTd
|
||||||
! endif
|
! endif
|
||||||
!endif # DEBUG
|
!endif # DEBUG
|
||||||
|
|
||||||
@@ -534,7 +540,7 @@ GUI_OBJ = \
|
|||||||
$(OUTDIR)\gui_w32.obj \
|
$(OUTDIR)\gui_w32.obj \
|
||||||
$(OUTDIR)\os_w32exe.obj
|
$(OUTDIR)\os_w32exe.obj
|
||||||
GUI_LIB = \
|
GUI_LIB = \
|
||||||
oldnames.lib kernel32.lib gdi32.lib version.lib $(IME_LIB) \
|
gdi32.lib version.lib $(IME_LIB) \
|
||||||
winspool.lib comctl32.lib advapi32.lib shell32.lib \
|
winspool.lib comctl32.lib advapi32.lib shell32.lib \
|
||||||
/machine:$(CPU) /nodefaultlib
|
/machine:$(CPU) /nodefaultlib
|
||||||
!else
|
!else
|
||||||
@@ -757,7 +763,7 @@ LINKARGS2 = $(CON_LIB) $(GUI_LIB) $(LIBC) $(OLE_LIB) user32.lib $(SNIFF_LIB) \
|
|||||||
|
|
||||||
# Report link time code generation progress if used.
|
# Report link time code generation progress if used.
|
||||||
!ifdef NODEBUG
|
!ifdef NODEBUG
|
||||||
!if "$(MSVCVER)" == "8.0"
|
!if ("$(MSVCVER)" == "8.0") || ("$(MSVCVER)" == "9.0")
|
||||||
!if "$(OPTIMIZE)" != "SPACE"
|
!if "$(OPTIMIZE)" != "SPACE"
|
||||||
LINKARGS1 = $(LINKARGS1) /LTCG:STATUS
|
LINKARGS1 = $(LINKARGS1) /LTCG:STATUS
|
||||||
!endif
|
!endif
|
||||||
|
@@ -1365,7 +1365,7 @@ install_registry(void)
|
|||||||
|
|
||||||
printf("Creating \"Edit with Vim\" popup menu entry\n");
|
printf("Creating \"Edit with Vim\" popup menu entry\n");
|
||||||
|
|
||||||
fprintf(fd, "HKEY_CLASSES_ROOT\\CLSID\\%s\n", vim_ext_clsid);
|
fprintf(fd, "[HKEY_CLASSES_ROOT\\CLSID\\%s]\n", vim_ext_clsid);
|
||||||
fprintf(fd, "@=\"%s\"\n", vim_ext_name);
|
fprintf(fd, "@=\"%s\"\n", vim_ext_name);
|
||||||
fprintf(fd, "[HKEY_CLASSES_ROOT\\CLSID\\%s\\InProcServer32]\n",
|
fprintf(fd, "[HKEY_CLASSES_ROOT\\CLSID\\%s\\InProcServer32]\n",
|
||||||
vim_ext_clsid);
|
vim_ext_clsid);
|
||||||
|
@@ -34,6 +34,12 @@ extern HWND s_hwnd;
|
|||||||
extern HWND vim_parent_hwnd;
|
extern HWND vim_parent_hwnd;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if _MSC_VER < 1300
|
||||||
|
/* Work around old versions of basetsd.h which wrongly declares
|
||||||
|
* UINT_PTR as unsigned long */
|
||||||
|
# define UINT_PTR UINT
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "if_ole.h" // Interface definitions
|
#include "if_ole.h" // Interface definitions
|
||||||
#include "iid_ole.c" // UUID definitions (compile here)
|
#include "iid_ole.c" // UUID definitions (compile here)
|
||||||
|
|
||||||
@@ -107,7 +113,7 @@ public:
|
|||||||
STDMETHOD(SendKeys)(BSTR keys);
|
STDMETHOD(SendKeys)(BSTR keys);
|
||||||
STDMETHOD(Eval)(BSTR expr, BSTR *result);
|
STDMETHOD(Eval)(BSTR expr, BSTR *result);
|
||||||
STDMETHOD(SetForeground)(void);
|
STDMETHOD(SetForeground)(void);
|
||||||
STDMETHOD(GetHwnd)(UINT *result);
|
STDMETHOD(GetHwnd)(UINT_PTR *result);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// Constructor is private - create using CVim::Create()
|
// Constructor is private - create using CVim::Create()
|
||||||
@@ -288,9 +294,9 @@ CVim::Invoke(
|
|||||||
}
|
}
|
||||||
|
|
||||||
STDMETHODIMP
|
STDMETHODIMP
|
||||||
CVim::GetHwnd(UINT *result)
|
CVim::GetHwnd(UINT_PTR *result)
|
||||||
{
|
{
|
||||||
*result = (UINT) s_hwnd;
|
*result = (UINT_PTR)s_hwnd;
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -79,7 +79,7 @@ EXTERN_C const IID IID_IVim;
|
|||||||
virtual HRESULT STDMETHODCALLTYPE SetForeground( void) = 0;
|
virtual HRESULT STDMETHODCALLTYPE SetForeground( void) = 0;
|
||||||
|
|
||||||
virtual HRESULT STDMETHODCALLTYPE GetHwnd(
|
virtual HRESULT STDMETHODCALLTYPE GetHwnd(
|
||||||
/* [retval][out] */ UINT __RPC_FAR *result) = 0;
|
/* [retval][out] */ UINT_PTR __RPC_FAR *result) = 0;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -143,7 +143,7 @@ EXTERN_C const IID IID_IVim;
|
|||||||
|
|
||||||
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetHwnd )(
|
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetHwnd )(
|
||||||
IVim __RPC_FAR * This,
|
IVim __RPC_FAR * This,
|
||||||
/* [retval][out] */ UINT __RPC_FAR *result);
|
/* [retval][out] */ UINT_PTR __RPC_FAR *result);
|
||||||
|
|
||||||
END_INTERFACE
|
END_INTERFACE
|
||||||
} IVimVtbl;
|
} IVimVtbl;
|
||||||
@@ -236,7 +236,7 @@ void __RPC_STUB IVim_SetForeground_Stub(
|
|||||||
|
|
||||||
HRESULT STDMETHODCALLTYPE IVim_GetHwnd_Proxy(
|
HRESULT STDMETHODCALLTYPE IVim_GetHwnd_Proxy(
|
||||||
IVim __RPC_FAR * This,
|
IVim __RPC_FAR * This,
|
||||||
/* [retval][out] */ UINT __RPC_FAR *result);
|
/* [retval][out] */ UINT_PTR __RPC_FAR *result);
|
||||||
|
|
||||||
|
|
||||||
void __RPC_STUB IVim_GetHwnd_Stub(
|
void __RPC_STUB IVim_GetHwnd_Stub(
|
||||||
|
@@ -20,7 +20,7 @@ interface IVim : IDispatch
|
|||||||
HRESULT SendKeys([in]BSTR keys);
|
HRESULT SendKeys([in]BSTR keys);
|
||||||
HRESULT Eval([in]BSTR expr, [out, retval]BSTR* result);
|
HRESULT Eval([in]BSTR expr, [out, retval]BSTR* result);
|
||||||
HRESULT SetForeground(void);
|
HRESULT SetForeground(void);
|
||||||
HRESULT GetHwnd([out, retval]UINT* result);
|
HRESULT GetHwnd([out, retval]UINT_PTR* result);
|
||||||
};
|
};
|
||||||
|
|
||||||
// Component and type library definitions
|
// Component and type library definitions
|
||||||
|
@@ -2856,7 +2856,7 @@ handler_routine(
|
|||||||
windgoto((int)Rows - 1, 0);
|
windgoto((int)Rows - 1, 0);
|
||||||
g_fForceExit = TRUE;
|
g_fForceExit = TRUE;
|
||||||
|
|
||||||
sprintf((char *)IObuff, _("Vim: Caught %s event\n"),
|
vim_snprintf((char *)IObuff, IOSIZE, _("Vim: Caught %s event\n"),
|
||||||
(dwCtrlType == CTRL_CLOSE_EVENT
|
(dwCtrlType == CTRL_CLOSE_EVENT
|
||||||
? _("close")
|
? _("close")
|
||||||
: dwCtrlType == CTRL_LOGOFF_EVENT
|
: dwCtrlType == CTRL_LOGOFF_EVENT
|
||||||
@@ -3282,12 +3282,13 @@ mch_call_shell(
|
|||||||
{
|
{
|
||||||
/* we use "command" or "cmd" to start the shell; slow but easy */
|
/* we use "command" or "cmd" to start the shell; slow but easy */
|
||||||
char_u *newcmd;
|
char_u *newcmd;
|
||||||
|
long_u cmdlen = (
|
||||||
newcmd = lalloc((long_u) (
|
|
||||||
#ifdef FEAT_GUI_W32
|
#ifdef FEAT_GUI_W32
|
||||||
STRLEN(vimrun_path) +
|
STRLEN(vimrun_path) +
|
||||||
#endif
|
#endif
|
||||||
STRLEN(p_sh) + STRLEN(p_shcf) + STRLEN(cmd) + 10), TRUE);
|
STRLEN(p_sh) + STRLEN(p_shcf) + STRLEN(cmd) + 10);
|
||||||
|
|
||||||
|
newcmd = lalloc(cmdlen, TRUE);
|
||||||
if (newcmd != NULL)
|
if (newcmd != NULL)
|
||||||
{
|
{
|
||||||
char_u *cmdbase = (*cmd == '"' ? cmd + 1 : cmd);
|
char_u *cmdbase = (*cmd == '"' ? cmd + 1 : cmd);
|
||||||
@@ -3373,14 +3374,15 @@ mch_call_shell(
|
|||||||
if (!s_dont_use_vimrun)
|
if (!s_dont_use_vimrun)
|
||||||
/* Use vimrun to execute the command. It opens a console
|
/* Use vimrun to execute the command. It opens a console
|
||||||
* window, which can be closed without killing Vim. */
|
* window, which can be closed without killing Vim. */
|
||||||
sprintf((char *)newcmd, "%s%s%s %s %s",
|
vim_snprintf((char *)newcmd, cmdlen, "%s%s%s %s %s",
|
||||||
vimrun_path,
|
vimrun_path,
|
||||||
(msg_silent != 0 || (options & SHELL_DOOUT))
|
(msg_silent != 0 || (options & SHELL_DOOUT))
|
||||||
? "-s " : "",
|
? "-s " : "",
|
||||||
p_sh, p_shcf, cmd);
|
p_sh, p_shcf, cmd);
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
sprintf((char *)newcmd, "%s %s %s", p_sh, p_shcf, cmd);
|
vim_snprintf((char *)newcmd, cmdlen, "%s %s %s",
|
||||||
|
p_sh, p_shcf, cmd);
|
||||||
x = mch_system((char *)newcmd, options);
|
x = mch_system((char *)newcmd, options);
|
||||||
}
|
}
|
||||||
vim_free(newcmd);
|
vim_free(newcmd);
|
||||||
@@ -4664,12 +4666,29 @@ mch_fopen(char *name, char *mode)
|
|||||||
# endif
|
# endif
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
# if defined(DEBUG) && _MSC_VER > 1200
|
||||||
|
/* Work around an annoying assertion in the Microsoft debug CRT
|
||||||
|
* when mode's text/binary setting doesn't match _get_fmode(). */
|
||||||
|
char newMode = mode[strlen(mode) - 1];
|
||||||
|
int oldMode = 0;
|
||||||
|
|
||||||
|
_get_fmode(&oldMode);
|
||||||
|
if (newMode == 't')
|
||||||
|
_set_fmode(_O_TEXT);
|
||||||
|
else if (newMode == 'b')
|
||||||
|
_set_fmode(_O_BINARY);
|
||||||
|
# endif
|
||||||
wn = enc_to_ucs2(name, NULL);
|
wn = enc_to_ucs2(name, NULL);
|
||||||
wm = enc_to_ucs2(mode, NULL);
|
wm = enc_to_ucs2(mode, NULL);
|
||||||
if (wn != NULL && wm != NULL)
|
if (wn != NULL && wm != NULL)
|
||||||
f = _wfopen(wn, wm);
|
f = _wfopen(wn, wm);
|
||||||
vim_free(wn);
|
vim_free(wn);
|
||||||
vim_free(wm);
|
vim_free(wm);
|
||||||
|
|
||||||
|
# if defined(DEBUG) && _MSC_VER > 1200
|
||||||
|
_set_fmode(oldMode);
|
||||||
|
# endif
|
||||||
|
|
||||||
if (f != NULL)
|
if (f != NULL)
|
||||||
return f;
|
return f;
|
||||||
/* Retry with non-wide function (for Windows 98). Can't use
|
/* Retry with non-wide function (for Windows 98). Can't use
|
||||||
|
@@ -666,6 +666,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
282,
|
||||||
/**/
|
/**/
|
||||||
281,
|
281,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user