0
0
mirror of https://github.com/vim/vim.git synced 2025-07-26 11:04:33 -04:00

patch 8.0.0742: terminal feature does not work on MS-Windows

Problem:    Terminal feature does not work on MS-Windows.
Solution:   Use libvterm and libwinpty on MS-Windows. (Yasuhiro Matsumoto)
This commit is contained in:
Bram Moolenaar 2017-07-22 16:14:44 +02:00
parent 5f7e7bdcf8
commit 8f84c3a866
6 changed files with 655 additions and 406 deletions

View File

@ -29,10 +29,11 @@ Contents:
10. Building with Perl support 10. Building with Perl support
11. Building with Ruby support 11. Building with Ruby support
12. Building with Tcl support 12. Building with Tcl support
13. Windows 3.1 13. Building with Terminal support
14. MS-DOS 14. Windows 3.1
15. MS-DOS
15. Installing after building from sources 16. Installing after building from sources
The currently preferred method is using the free Visual C++ Toolkit 2008 The currently preferred method is using the free Visual C++ Toolkit 2008
@ -702,19 +703,35 @@ Or when using MinGW (as one line):
TCL=C:\Tcl86 DYNAMIC_TCL=yes TCL_VER=86 TCL_VER_LONG=8.6 TCL=C:\Tcl86 DYNAMIC_TCL=yes TCL_VER=86 TCL_VER_LONG=8.6
13. Windows 3.1x 13. Building with Terminal support
==================================
Vim with Terminal support can be built with MinGW or Cygwin.
Terminal support require winpty which provide following two files.
winpty.dll
winpty-agent.dll
You can download following page:
https://github.com/rprichard/winpty
It don't need header files or libraries. Just put them on your PATH.
14. Windows 3.1x
================ ================
The Windows 3.1x support was removed in patch 7.4.1364. The Windows 3.1x support was removed in patch 7.4.1364.
14. MS-DOS 15. MS-DOS
========== ==========
The MS-DOS support was removed in patch 7.4.1399. The MS-DOS support was removed in patch 7.4.1399.
15. Installing after building from sources 16. Installing after building from sources
========================================== ==========================================
[provided by Michael Soyka] [provided by Michael Soyka]

View File

@ -750,6 +750,7 @@ endif
ifeq ($(TERMINAL),yes) ifeq ($(TERMINAL),yes)
OBJ += $(OUTDIR)/terminal.o OBJ += $(OUTDIR)/terminal.o
VTERM_LIB = libvterm/.libs/libvterm.a
endif endif
@ -849,7 +850,7 @@ uninstal.exe: uninstal.c
$(CC) $(CFLAGS) -o uninstal.exe uninstal.c $(LIB) $(CC) $(CFLAGS) -o uninstal.exe uninstal.c $(LIB)
$(TARGET): $(OUTDIR) $(OBJ) $(TARGET): $(OUTDIR) $(OBJ)
$(CC) $(CFLAGS) $(LFLAGS) -o $@ $(OBJ) $(LIB) -lole32 -luuid $(LUA_LIB) $(MZSCHEME_LIBDIR) $(MZSCHEME_LIB) $(PYTHONLIB) $(PYTHON3LIB) $(RUBYLIB) $(CC) $(CFLAGS) $(LFLAGS) -o $@ $(OBJ) $(LIB) -lole32 -luuid $(LUA_LIB) $(MZSCHEME_LIBDIR) $(MZSCHEME_LIB) $(PYTHONLIB) $(PYTHON3LIB) $(RUBYLIB) $(VTERM_LIB)
upx: exes upx: exes
upx gvim.exe upx gvim.exe
@ -865,6 +866,9 @@ xxd/xxd.exe: xxd/xxd.c
GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h
$(MAKE) -C GvimExt -f Make_ming.mak CROSS=$(CROSS) CROSS_COMPILE=$(CROSS_COMPILE) CXX='$(CXX)' STATIC_STDCPLUS=$(STATIC_STDCPLUS) $(MAKE) -C GvimExt -f Make_ming.mak CROSS=$(CROSS) CROSS_COMPILE=$(CROSS_COMPILE) CXX='$(CXX)' STATIC_STDCPLUS=$(STATIC_STDCPLUS)
libvterm/.libs/libvterm.a :
cd libvterm && $(MAKE) libvterm.la
clean: clean:
-$(DEL) $(OUTDIR)$(DIRSLASH)*.o -$(DEL) $(OUTDIR)$(DIRSLASH)*.o
-$(DEL) $(OUTDIR)$(DIRSLASH)*.res -$(DEL) $(OUTDIR)$(DIRSLASH)*.res

View File

@ -4643,7 +4643,7 @@ job_still_useful(job_T *job)
* changed to JOB_ENDED (i.e. after job_status() returned "dead" first or * changed to JOB_ENDED (i.e. after job_status() returned "dead" first or
* mch_detect_ended_job() returned non-NULL). * mch_detect_ended_job() returned non-NULL).
*/ */
static void void
job_cleanup(job_T *job) job_cleanup(job_T *job)
{ {
if (job->jv_status != JOB_ENDED) if (job->jv_status != JOB_ENDED)
@ -4773,7 +4773,7 @@ free_unused_jobs(int copyID, int mask)
/* /*
* Allocate a job. Sets the refcount to one and sets options default. * Allocate a job. Sets the refcount to one and sets options default.
*/ */
static job_T * job_T *
job_alloc(void) job_alloc(void)
{ {
job_T *job; job_T *job;

View File

@ -55,6 +55,8 @@ void clear_job_options(jobopt_T *opt);
void free_job_options(jobopt_T *opt); void free_job_options(jobopt_T *opt);
int get_job_options(typval_T *tv, jobopt_T *opt, int supported); int get_job_options(typval_T *tv, jobopt_T *opt, int supported);
channel_T *get_channel_arg(typval_T *tv, int check_open, int reading, ch_part_T part); channel_T *get_channel_arg(typval_T *tv, int check_open, int reading, ch_part_T part);
job_T *job_alloc(void);
void job_cleanup(job_T *job);
void job_free_all(void); void job_free_all(void);
int set_ref_in_job(int copyID); int set_ref_in_job(int copyID);
void job_unref(job_T *job); void job_unref(job_T *job);

File diff suppressed because it is too large Load Diff

View File

@ -769,6 +769,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 */
/**/
742,
/**/ /**/
741, 741,
/**/ /**/