From bb1969b6ab28120c93b77817e7b6075e1aecf663 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Thu, 17 Jan 2019 15:45:25 +0100 Subject: patch 8.1.0763: nobody is using the Sun Workshop support Problem: Nobody is using the Sun Workshop support. Solution: Remove the Workshop support. --- runtime/doc/help.txt | 1 - runtime/doc/netbeans.txt | 18 +- runtime/doc/workshop.txt | 92 +-- src/Makefile | 42 +- src/auto/configure | 27 - src/beval.c | 4 - src/buffer.c | 5 - src/config.h.in | 3 - src/config.mk.in | 3 - src/configure.ac | 16 - src/evalfunc.c | 3 - src/ex_cmdidxs.h | 10 +- src/ex_cmds.c | 14 +- src/ex_cmds.h | 3 - src/ex_docmd.c | 3 - src/feature.h | 32 +- src/fileio.c | 5 - src/globals.h | 11 +- src/gui.c | 21 +- src/gui_beval.c | 5 +- src/gui_motif.c | 3 +- src/gui_x11.c | 51 +- src/integration.c | 1112 ---------------------------- src/integration.h | 452 ------------ src/main.c | 8 +- src/misc2.c | 2 +- src/nbdebug.c | 2 +- src/netbeans.c | 2 - src/proto.h | 3 - src/proto/workshop.pro | 49 -- src/ui.c | 5 +- src/version.c | 6 +- src/vim.h | 12 - src/workshop.c | 1830 ---------------------------------------------- src/workshop.h | 28 - src/wsdebug.c | 184 ----- src/wsdebug.h | 81 -- 37 files changed, 55 insertions(+), 4093 deletions(-) delete mode 100644 src/integration.c delete mode 100644 src/integration.h delete mode 100644 src/proto/workshop.pro delete mode 100644 src/workshop.c delete mode 100644 src/workshop.h delete mode 100644 src/wsdebug.c delete mode 100644 src/wsdebug.h diff --git a/runtime/doc/help.txt b/runtime/doc/help.txt index cefc7b1ac8..4c6567b16a 100644 --- a/runtime/doc/help.txt +++ b/runtime/doc/help.txt @@ -180,7 +180,6 @@ Interfaces ~ |if_ole.txt| OLE automation interface for Win32 |if_ruby.txt| Ruby interface |debugger.txt| Interface with a debugger -|workshop.txt| Sun Visual Workshop interface |netbeans.txt| NetBeans External Editor interface |sign.txt| debugging signs diff --git a/runtime/doc/netbeans.txt b/runtime/doc/netbeans.txt index 61e58c245d..495f0d4baf 100644 --- a/runtime/doc/netbeans.txt +++ b/runtime/doc/netbeans.txt @@ -1,10 +1,10 @@ -*netbeans.txt* For Vim version 8.1. Last change: 2016 Jul 15 +*netbeans.txt* For Vim version 8.1. Last change: 2019 Jan 17 VIM REFERENCE MANUAL by Gordon Prieur et al. - *netbeans* *netbeans-support* + *netbeans* *NetBeans* *netbeans-support* Vim NetBeans Protocol: a socket interface for Vim integration into an IDE. @@ -123,8 +123,18 @@ Currently the NetBeans interface is supported by Vim running in a terminal and by gvim when it is run with one of the following GUIs: GTK, GNOME, Windows, Athena and Motif. -If Motif support is required the user must supply XPM libraries. See -|workshop-xpm| for details on obtaining the latest version of XPM. + *netbeans-xpm* +If Motif support is required the user must supply XPM libraries. +The XPM library is required to show images within Vim with Motif or Athena. +Without it the toolbar and signs will be disabled. + +The XPM library is provided by Arnaud Le Hors of the French National Institute +for Research in Computer Science and Control. It can be downloaded from +http://cgit.freedesktop.org/xorg/lib/libXpm. The current release, as of this +writing, is xpm-3.4k-solaris.tgz, which is a gzip'ed tar file. If you create +the directory /usr/local/xpm and untar the file there you can use the +uncommented lines in the Makefile without changing them. If you use another +xpm directory you will need to change the XPM_DIR in src/Makefile. On MS-Windows: diff --git a/runtime/doc/workshop.txt b/runtime/doc/workshop.txt index bcdfcf4f17..fc35ce9f26 100644 --- a/runtime/doc/workshop.txt +++ b/runtime/doc/workshop.txt @@ -1,4 +1,4 @@ -*workshop.txt* For Vim version 8.1. Last change: 2013 Jul 06 +*workshop.txt* For Vim version 8.1. Last change: 2019 Jan 17 VIM REFERENCE MANUAL by Gordon Prieur @@ -6,93 +6,9 @@ Sun Visual WorkShop Features *workshop* *workshop-support* -1. Introduction |workshop-intro| -2. Commands |workshop-commands| -3. Compiling vim/gvim for WorkShop |workshop-compiling| -4. Configuring gvim for a WorkShop release tree |workshop-configure| -5. Obtaining the latest version of the XPM library |workshop-xpm| +The support for WorkShop was removed in patch 8.1.0763 in January 2019. +The product has not been available for a long time and has been replaced by +|NetBeans|. -{Vi does not have any of these features} -{only available when compiled with the |+sun_workshop| feature} - -============================================================================== -1. Introduction *workshop-intro* - -Sun Visual WorkShop has an "Editor of Choice" feature designed to let users -debug using their favorite editors. For the 6.0 release we have added support -for gvim. A workshop debug session will have a debugging window and an editor -window (possibly others as well). The user can do many debugging operations -from the editor window, minimizing the need to switch from window to window. - -The version of vim shipped with Sun Visual WorkShop 6 (also called Forte -Developer 6) is vim 5.3. The features in this release are much more reliable -than the vim/gvim shipped with Visual WorkShop. VWS users wishing to use vim -as their editor should compile these sources and install them in their -workshop release tree. - -============================================================================== -2. Commands *workshop-commands* - - *:ws* *:wsverb* -:ws[verb] verb Pass the verb to the verb executor - -Pass the verb to a workshop function which gathers some arguments and -sends the verb and data to workshop over an IPC connection. - -============================================================================== -3. Compiling vim/gvim for WorkShop *workshop-compiling* - -Compiling vim with FEAT_SUN_WORKSHOP turns on all compile time flags necessary -for building a vim to work with Visual WorkShop. The features required for VWS -have been built and tested using the Sun compilers from the VWS release. They -have not been built or tested using Gnu compilers. This does not mean the -features won't build and run if compiled with gcc, just that nothing is -guaranteed with gcc! - -============================================================================== -4. Configuring gvim for a WorkShop release tree *workshop-configure* - -There are several assumptions which must be met in order to compile a gvim for -use with Sun Visual WorkShop 6. - - o You should use the compiler in VWS rather than gcc. We have neither - built nor tested with gcc and cannot guarantee it will build properly. - - o You must supply your own XPM library. See |workshop-xpm| below for - details on obtaining the latest version of XPM. - - o Edit the Makefile in the src directory and uncomment the lines for Sun - Visual WorkShop. You can easily find these by searching for the string - FEAT_SUN_WORKSHOP - - o We also suggest you use Motif for your gui. This will provide gvim with - the same look-and-feel as the rest of Sun Visual WorkShop. - -The following configuration line can be used to configure vim to build for use -with Sun Visual WorkShop: - - $ CC=cc configure --enable-workshop --enable-gui=motif \ - -prefix=/contrib/contrib6/ - -The VWS-install-dir should be the base directory where your Sun Visual WorkShop -was installed. By default this is /opt/SUNWspro. It will normally require -root permissions to install the vim release. You will also need to change the -symlink /bin/gvim to point to the vim in your newly installed -directory. The should be a unique version string. I use "vim" -concatenated with the equivalent of version.h's VIM_VERSION_SHORT. - -============================================================================== -5. Obtaining the latest version of the XPM library *workshop-xpm* - -The XPM library is required to show images within Vim with Motif or Athena. -Without it the toolbar and signs will be disabled. - -The XPM library is provided by Arnaud Le Hors of the French National Institute -for Research in Computer Science and Control. It can be downloaded from -http://cgit.freedesktop.org/xorg/lib/libXpm. The current release, as of this -writing, is xpm-3.4k-solaris.tgz, which is a gzip'ed tar file. If you create -the directory /usr/local/xpm and untar the file there you can use the -uncommented lines in the Makefile without changing them. If you use another -xpm directory you will need to change the XPM_DIR in src/Makefile. vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/src/Makefile b/src/Makefile index cf409bd49a..23f01c38bc 100644 --- a/src/Makefile +++ b/src/Makefile @@ -317,7 +317,7 @@ CClink = $(CC) # You can give a lot of options to configure. # Change this to your desire and do 'make config' afterwards -# examples: +# examples you can uncomment: #CONF_ARGS1 = --exec-prefix=/usr #CONF_ARGS2 = --with-vim-name=vim8 --with-ex-name=ex8 --with-view-name=view8 #CONF_ARGS3 = --with-global-runtime=/etc/vim,/usr/share/vim @@ -781,7 +781,7 @@ SANITIZER_LIBS = $(SANITIZER_CFLAGS) #CC = /usr/ucb/cc #EXTRA_LIBS = -R/usr/ucblib -### Solaris with Forte Developer and FEAT_SUN_WORKSHOP +### Solaris with Forte Developer and NetBeans. # The Xpm library is available from http://koala.ilog.fr/ftp/pub/xpm. #CC = cc #XPM_DIR = /usr/local/xpm/xpm-3.4k-solaris @@ -791,10 +791,6 @@ SANITIZER_LIBS = $(SANITIZER_CFLAGS) #EXTRA_IPATHS = $(XPM_IPATH) #EXTRA_DEFS = -xCC -DHAVE_X11_XPM_H -### Solaris with workshop compilers: Vim is unstable when compiled with -# "-fast". Use this instead. (Shea Martin) -#CFLAGS = -x02 -xtarget=ultra - ### (R) for Solaris 2.5 (or 2.5.1) with gcc > 2.5.6 you might need this: #LDFLAGS = -lw -ldl -lXmu #GUI_LIB_LOC = -L/usr/local/lib @@ -1651,14 +1647,11 @@ SRC = $(BASIC_SRC) \ $(PERL_SRC) \ $(PYTHON_SRC) $(PYTHON3_SRC) \ $(TCL_SRC) \ - $(RUBY_SRC) \ - $(WORKSHOP_SRC) \ - $(WSDEBUG_SRC) + $(RUBY_SRC) EXTRA_SRC = hangulin.c if_lua.c if_mzsch.c auto/if_perl.c if_perlsfio.c \ if_python.c if_python3.c if_tcl.c if_ruby.c \ - gui_beval.c workshop.c wsdebug.c integration.c \ - netbeans.c channel.c \ + gui_beval.c netbeans.c channel.c \ $(GRESOURCE_SRC) # Unittest files @@ -1684,7 +1677,6 @@ ALL_SRC = $(BASIC_SRC) $(ALL_GUI_SRC) $(UNITTEST_SRC) \ # The perl sources also don't work well with lint. LINT_SRC = $(BASIC_SRC) $(GUI_SRC) $(HANGULIN_SRC) \ $(PYTHON_SRC) $(PYTHON3_SRC) $(TCL_SRC) \ - $(WORKSHOP_SRC) $(WSDEBUG_SRC) \ $(NETBEANS_SRC) $(CHANNEL_SRC) $(TERM_SRC) #LINT_SRC = $(SRC) #LINT_SRC = $(ALL_SRC) @@ -1761,11 +1753,9 @@ OBJ_COMMON = \ $(TCL_OBJ) \ $(RUBY_OBJ) \ $(OS_EXTRA_OBJ) \ - $(WORKSHOP_OBJ) \ $(NETBEANS_OBJ) \ $(CHANNEL_OBJ) \ - $(XDIFF_OBJS) \ - $(WSDEBUG_OBJ) + $(XDIFF_OBJS) # The files included by tests are not in OBJ_COMMON. OBJ_MAIN = \ @@ -1889,7 +1879,6 @@ PRO_AUTO = \ window.pro \ beval.pro \ gui_beval.pro \ - workshop.pro \ netbeans.pro \ channel.pro \ $(ALL_GUI_PRO) \ @@ -1932,7 +1921,7 @@ config auto/config.mk: auto/configure config.mk.in config.h.in $(CONF_OPT_PERL) $(CONF_OPT_PYTHON) $(CONF_OPT_PYTHON3) \ $(CONF_OPT_TCL) $(CONF_OPT_RUBY) $(CONF_OPT_NLS) \ $(CONF_OPT_CSCOPE) $(CONF_OPT_MULTIBYTE) $(CONF_OPT_INPUT) \ - $(CONF_OPT_OUTPUT) $(CONF_OPT_GPM) $(CONF_OPT_WORKSHOP) \ + $(CONF_OPT_OUTPUT) $(CONF_OPT_GPM) \ $(CONF_OPT_FEAT) $(CONF_TERM_LIB) \ $(CONF_OPT_COMPBY) $(CONF_OPT_ACL) $(CONF_OPT_NETBEANS) \ $(CONF_OPT_CHANNEL) $(CONF_OPT_TERMINAL) \ @@ -3098,9 +3087,6 @@ objects/if_ruby.o: if_ruby.c objects/if_tcl.o: if_tcl.c $(CCC_NF) $(TCL_CFLAGS) $(ALL_CFLAGS) -o $@ if_tcl.c -objects/integration.o: integration.c - $(CCC) -o $@ integration.c - objects/json.o: json.c $(CCC) -o $@ json.c @@ -3239,12 +3225,6 @@ objects/userfunc.o: userfunc.c objects/window.o: window.c $(CCC) -o $@ window.c -objects/workshop.o: workshop.c - $(CCC) -o $@ workshop.c - -objects/wsdebug.o: wsdebug.c - $(CCC) -o $@ wsdebug.c - objects/netbeans.o: netbeans.c $(CCC) -o $@ netbeans.c @@ -3784,16 +3764,6 @@ objects/gui_beval.o: gui_beval.c vim.h protodef.h auto/config.h feature.h \ os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \ proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \ proto.h globals.h farsi.h arabic.h -objects/workshop.o: workshop.c protodef.h auto/config.h integration.h vim.h \ - feature.h os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h \ - option.h beval.h proto/gui_beval.pro structs.h regexp.h gui.h alloc.h \ - ex_cmds.h spell.h proto.h globals.h farsi.h arabic.h version.h \ - workshop.h -objects/wsdebug.o: wsdebug.c -objects/integration.o: integration.c vim.h protodef.h auto/config.h feature.h \ - os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \ - proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \ - proto.h globals.h farsi.h arabic.h integration.h objects/netbeans.o: netbeans.c vim.h protodef.h auto/config.h feature.h os_unix.h \ auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \ proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \ diff --git a/src/auto/configure b/src/auto/configure index 4629b12485..0431addf0f 100755 --- a/src/auto/configure +++ b/src/auto/configure @@ -661,8 +661,6 @@ CHANNEL_OBJ CHANNEL_SRC NETBEANS_OBJ NETBEANS_SRC -WORKSHOP_OBJ -WORKSHOP_SRC RUBY_LIBS RUBY_CFLAGS RUBY_PRO @@ -812,7 +810,6 @@ with_tclsh enable_rubyinterp with_ruby_command enable_cscope -enable_workshop enable_netbeans enable_channel enable_terminal @@ -1494,7 +1491,6 @@ Optional Features: --enable-tclinterp=OPTS Include Tcl interpreter. default=no OPTS=no/yes/dynamic --enable-rubyinterp=OPTS Include Ruby interpreter. default=no OPTS=no/yes/dynamic --enable-cscope Include cscope interface. - --enable-workshop Include Sun Visual Workshop support. --disable-netbeans Disable NetBeans integration support. --disable-channel Disable process communication support. --enable-terminal Enable terminal emulation support. @@ -7665,29 +7661,6 @@ if test "$enable_cscope" = "yes"; then fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking --enable-workshop argument" >&5 -$as_echo_n "checking --enable-workshop argument... " >&6; } -# Check whether --enable-workshop was given. -if test "${enable_workshop+set}" = set; then : - enableval=$enable_workshop; -else - enable_workshop="no" -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_workshop" >&5 -$as_echo "$enable_workshop" >&6; } -if test "$enable_workshop" = "yes"; then - $as_echo "#define FEAT_SUN_WORKSHOP 1" >>confdefs.h - - WORKSHOP_SRC="workshop.c integration.c" - - WORKSHOP_OBJ="objects/workshop.o objects/integration.o" - - if test "${enable_gui-xxx}" = xxx; then - enable_gui=motif - fi -fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking --disable-netbeans argument" >&5 $as_echo_n "checking --disable-netbeans argument... " >&6; } # Check whether --enable-netbeans was given. diff --git a/src/beval.c b/src/beval.c index 3025b2cc97..c5fa22014f 100644 --- a/src/beval.c +++ b/src/beval.c @@ -273,10 +273,6 @@ general_beval_cb(BalloonEval *beval, int state UNUSED) if (bevalServers & BEVAL_NETBEANS) netbeans_beval_cb(beval, state); #endif -#ifdef FEAT_SUN_WORKSHOP - if (bevalServers & BEVAL_WORKSHOP) - workshop_beval_cb(beval, state); -#endif recursive = FALSE; } diff --git a/src/buffer.c b/src/buffer.c index 6bacb16384..c22773f7a4 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -658,11 +658,6 @@ aucmd_abort: */ if (wipe_buf) { -#ifdef FEAT_SUN_WORKSHOP - if (usingSunWorkShop) - workshop_file_closed_lineno((char *)buf->b_ffname, - (int)buf->b_last_cursor.lnum); -#endif if (buf->b_sfname != buf->b_ffname) VIM_CLEAR(buf->b_sfname); else diff --git a/src/config.h.in b/src/config.h.in index 4a5cb099e4..9a7ba51efc 100644 --- a/src/config.h.in +++ b/src/config.h.in @@ -441,9 +441,6 @@ /* Define if we have shl_load() */ #undef HAVE_SHL_LOAD -/* Define if you want to include Sun Visual Workshop support. */ -#undef FEAT_SUN_WORKSHOP - /* Define if you want to include NetBeans integration. */ #undef FEAT_NETBEANS_INTG diff --git a/src/config.mk.in b/src/config.mk.in index 84c1590928..b5d1ebd9b7 100644 --- a/src/config.mk.in +++ b/src/config.mk.in @@ -81,9 +81,6 @@ TCL_LIBS = @TCL_LIBS@ HANGULIN_SRC = @HANGULIN_SRC@ HANGULIN_OBJ = @HANGULIN_OBJ@ -WORKSHOP_SRC = @WORKSHOP_SRC@ -WORKSHOP_OBJ = @WORKSHOP_OBJ@ - NETBEANS_SRC = @NETBEANS_SRC@ NETBEANS_OBJ = @NETBEANS_OBJ@ CHANNEL_SRC = @CHANNEL_SRC@ diff --git a/src/configure.ac b/src/configure.ac index 39237b9081..2dcfe46cb3 100644 --- a/src/configure.ac +++ b/src/configure.ac @@ -1996,22 +1996,6 @@ if test "$enable_cscope" = "yes"; then AC_DEFINE(FEAT_CSCOPE) fi -AC_MSG_CHECKING(--enable-workshop argument) -AC_ARG_ENABLE(workshop, - [ --enable-workshop Include Sun Visual Workshop support.], , - [enable_workshop="no"]) -AC_MSG_RESULT($enable_workshop) -if test "$enable_workshop" = "yes"; then - AC_DEFINE(FEAT_SUN_WORKSHOP) - WORKSHOP_SRC="workshop.c integration.c" - AC_SUBST(WORKSHOP_SRC) - WORKSHOP_OBJ="objects/workshop.o objects/integration.o" - AC_SUBST(WORKSHOP_OBJ) - if test "${enable_gui-xxx}" = xxx; then - enable_gui=motif - fi -fi - AC_MSG_CHECKING(--disable-netbeans argument) AC_ARG_ENABLE(netbeans, [ --disable-netbeans Disable NetBeans integration support.], diff --git a/src/evalfunc.c b/src/evalfunc.c index 830700eaa4..1bdb722635 100644 --- a/src/evalfunc.c +++ b/src/evalfunc.c @@ -6512,9 +6512,6 @@ f_has(typval_T *argvars, typval_T *rettv) #ifdef FEAT_STL_OPT "statusline", #endif -#ifdef FEAT_SUN_WORKSHOP - "sun_workshop", -#endif #ifdef FEAT_NETBEANS_INTG "netbeans_intg", #endif diff --git a/src/ex_cmdidxs.h b/src/ex_cmdidxs.h index 8b7c85c0ce..867047f67a 100644 --- a/src/ex_cmdidxs.h +++ b/src/ex_cmdidxs.h @@ -28,9 +28,9 @@ static const unsigned short cmdidxs1[26] = /* u */ 481, /* v */ 492, /* w */ 510, - /* x */ 525, - /* y */ 534, - /* z */ 535 + /* x */ 524, + /* y */ 533, + /* z */ 534 }; /* @@ -63,10 +63,10 @@ static const unsigned char cmdidxs2[26][26] = /* t */ { 2, 0, 19, 0, 22, 24, 0, 25, 0, 26, 0, 27, 31, 34, 36, 37, 0, 38, 40, 0, 41, 0, 0, 0, 0, 0 }, /* u */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, /* v */ { 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 9, 12, 0, 0, 0, 0, 15, 0, 16, 0, 0, 0, 0, 0 }, - /* w */ { 2, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 8, 0, 9, 10, 0, 12, 0, 13, 14, 0, 0, 0, 0 }, + /* w */ { 2, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 8, 0, 9, 10, 0, 0, 0, 12, 13, 0, 0, 0, 0 }, /* x */ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 5, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0 }, /* y */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, /* z */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; -static const int command_count = 548; +static const int command_count = 547; diff --git a/src/ex_cmds.c b/src/ex_cmds.c index ddcd6107cd..25322c2bd8 100644 --- a/src/ex_cmds.c +++ b/src/ex_cmds.c @@ -3805,9 +3805,6 @@ do_ecmd( int newcol = -1; int solcol = -1; pos_T *pos; -#ifdef FEAT_SUN_WORKSHOP - char_u *cp; -#endif char_u *command = NULL; #ifdef FEAT_SPELL int did_get_winopts = FALSE; @@ -3881,11 +3878,6 @@ do_ecmd( if (free_fname != NULL) ffname = free_fname; other_file = otherfile(ffname); -#ifdef FEAT_SUN_WORKSHOP - if (usingSunWorkShop && p_acd - && (cp = vim_strrchr(sfname, '/')) != NULL) - sfname = ++cp; -#endif } } @@ -4457,13 +4449,9 @@ do_ecmd( } #endif -#if defined(FEAT_SUN_WORKSHOP) || defined(FEAT_NETBEANS_INTG) +#if defined(FEAT_NETBEANS_INTG) if (curbuf->b_ffname != NULL) { -# ifdef FEAT_SUN_WORKSHOP - if (gui.in_use && usingSunWorkShop) - workshop_file_opened((char *)curbuf->b_ffname, curbuf->b_p_ro); -# endif # ifdef FEAT_NETBEANS_INTG if ((flags & ECMD_SET_HELP) != ECMD_SET_HELP) netbeans_file_opened(curbuf); diff --git a/src/ex_cmds.h b/src/ex_cmds.h index a419a0508b..078af19af5 100644 --- a/src/ex_cmds.h +++ b/src/ex_cmds.h @@ -1670,9 +1670,6 @@ EX(CMD_wq, "wq", ex_exit, EX(CMD_wqall, "wqall", do_wqall, BANG|FILE1|ARGOPT|DFLALL|TRLBAR, ADDR_LINES), -EX(CMD_wsverb, "wsverb", ex_wsverb, - EXTRA|NOTADR|NEEDARG, - ADDR_LINES), EX(CMD_wundo, "wundo", ex_wundo, BANG|NEEDARG|FILE1, ADDR_LINES), diff --git a/src/ex_docmd.c b/src/ex_docmd.c index 7dc805ec1e..97976442eb 100644 --- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -411,9 +411,6 @@ static void ex_folddo(exarg_T *eap); #ifndef FEAT_SIGNS # define ex_sign ex_ni #endif -#ifndef FEAT_SUN_WORKSHOP -# define ex_wsverb ex_ni -#endif #ifndef FEAT_NETBEANS_INTG # define ex_nbclose ex_ni # define ex_nbkey ex_ni diff --git a/src/feature.h b/src/feature.h index c2e1dd47e4..d5a6853388 100644 --- a/src/feature.h +++ b/src/feature.h @@ -1232,7 +1232,6 @@ * +perl Perl interface: "--enable-perlinterp" * +python Python interface: "--enable-pythoninterp" * +tcl TCL interface: "--enable-tclinterp" - * +sun_workshop Sun Workshop integration * +netbeans_intg Netbeans integration * +channel Inter process communication */ @@ -1243,13 +1242,6 @@ * +tgetent */ -/* - * The Sun Workshop features currently only work with Motif. - */ -#if !defined(FEAT_GUI_MOTIF) && defined(FEAT_SUN_WORKSHOP) -# undef FEAT_SUN_WORKSHOP -#endif - /* * The Netbeans feature requires +eval. */ @@ -1279,8 +1271,7 @@ * +signs Allow signs to be displayed to the left of text lines. * Adds the ":sign" command. */ -#if defined(FEAT_BIG) || defined(FEAT_SUN_WORKSHOP) \ - || defined(FEAT_NETBEANS_INTG) +#if defined(FEAT_BIG) || defined(FEAT_NETBEANS_INTG) # define FEAT_SIGNS # if ((defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_ATHENA)) \ && defined(HAVE_X11_XPM_H)) \ @@ -1299,7 +1290,6 @@ || defined(FEAT_GUI_GTK) || defined(FEAT_GUI_W32)) \ && ( ((defined(FEAT_TOOLBAR) || defined(FEAT_GUI_TABLINE)) \ && !defined(FEAT_GUI_GTK) && !defined(FEAT_GUI_W32)) \ - || defined(FEAT_SUN_WORKSHOP) \ || defined(FEAT_NETBEANS_INTG) || defined(FEAT_EVAL)) # define FEAT_BEVAL_GUI # if !defined(FEAT_XFONTSET) && !defined(FEAT_GUI_GTK) \ @@ -1329,37 +1319,25 @@ # define FEAT_GUI_X11 #endif -#if defined(FEAT_SUN_WORKSHOP) || defined(FEAT_NETBEANS_INTG) -/* - * The following features are (currently) only used by Sun Visual WorkShop 6 - * and NetBeans. These features could be used with other integrations with - * debuggers so I've used separate feature defines. - */ +#if defined(FEAT_NETBEANS_INTG) +// NetBeans uses menus. # if !defined(FEAT_MENU) # define FEAT_MENU # endif #endif -#if defined(FEAT_SUN_WORKSHOP) -/* - * Use an alternative method of X input for a secondary - * command input. - */ -# define ALT_X_INPUT - +#if 0 /* * +footer Motif only: Add a message area at the bottom of the * main window area. */ # define FEAT_FOOTER - #endif /* * +autochdir 'autochdir' option. */ -#if defined(FEAT_SUN_WORKSHOP) || defined(FEAT_NETBEANS_INTG) \ - || defined(FEAT_BIG) +#if defined(FEAT_NETBEANS_INTG) || defined(FEAT_BIG) # define FEAT_AUTOCHDIR #endif diff --git a/src/fileio.c b/src/fileio.c index ae70caf978..0608625a4f 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -5094,11 +5094,6 @@ restore_backup: if (!p_bk && backup != NULL && mch_remove(backup) != 0) emsg(_("E207: Can't delete backup file")); -#ifdef FEAT_SUN_WORKSHOP - if (usingSunWorkShop) - workshop_file_saved((char *) ffname); -#endif - goto nofail; /* diff --git a/src/globals.h b/src/globals.h index 4a0c52ce4c..645c93608c 100644 --- a/src/globals.h +++ b/src/globals.h @@ -1218,10 +1218,9 @@ EXTERN int no_hlsearch INIT(= FALSE); #if defined(FEAT_BEVAL) && !defined(NO_X11_INCLUDES) EXTERN BalloonEval *balloonEval INIT(= NULL); EXTERN int balloonEvalForTerm INIT(= FALSE); -# if defined(FEAT_NETBEANS_INTG) || defined(FEAT_SUN_WORKSHOP) +# if defined(FEAT_NETBEANS_INTG) EXTERN int bevalServers INIT(= 0); # define BEVAL_NETBEANS 0x01 -# define BEVAL_WORKSHOP 0x02 # endif #endif @@ -1363,14 +1362,6 @@ EXTERN linenr_T spell_redraw_lnum INIT(= 0); EXTERN int need_cursor_line_redraw INIT(= FALSE); #endif -#ifdef ALT_X_INPUT -/* we need to be able to go into the dispatch loop while processing a command - * received via alternate input. However, we don't want to process another - * command until the first is completed. - */ -EXTERN int suppress_alternate_input INIT(= FALSE); -#endif - #ifdef USE_MCH_ERRMSG /* Grow array to collect error messages in until they can be displayed. */ EXTERN garray_T error_ga diff --git a/src/gui.c b/src/gui.c index ed89985f0e..cf1cee67ff 100644 --- a/src/gui.c +++ b/src/gui.c @@ -672,10 +672,6 @@ gui_init(void) #ifdef FEAT_MENU gui_create_initial_menus(root_menu); #endif -#ifdef FEAT_SUN_WORKSHOP - if (usingSunWorkShop) - workshop_init(); -#endif #ifdef FEAT_SIGN_ICONS sign_gui_started(); #endif @@ -1604,19 +1600,8 @@ gui_set_shellsize( /* Remember the original window position. */ (void)gui_mch_get_winpos(&x, &y); -#ifdef USE_SUN_WORKSHOP - if (!mustset && usingSunWorkShop - && workshop_get_width_height(&width, &height)) - { - Columns = (width - base_width + gui.char_width - 1) / gui.char_width; - Rows = (height - base_height + gui.char_height - 1) / gui.char_height; - } - else -#endif - { - width = Columns * gui.char_width + base_width; - height = Rows * gui.char_height + base_height; - } + width = Columns * gui.char_width + base_width; + height = Rows * gui.char_height + base_height; if (fit_to_display) { @@ -5128,7 +5113,7 @@ no_console_input(void) } #endif -#if defined(FIND_REPLACE_DIALOG) || defined(FEAT_SUN_WORKSHOP) \ +#if defined(FIND_REPLACE_DIALOG) \ || defined(NEED_GUI_UPDATE_SCREEN) \ || defined(PROTO) /* diff --git a/src/gui_beval.c b/src/gui_beval.c index 9af17a9287..3a282181ac 100644 --- a/src/gui_beval.c +++ b/src/gui_beval.c @@ -199,8 +199,7 @@ gui_mch_currently_showing_beval(void) #endif #endif /* !FEAT_GUI_W32 */ -#if defined(FEAT_SUN_WORKSHOP) || defined(FEAT_NETBEANS_INTG) \ - || defined(FEAT_EVAL) || defined(PROTO) +#if defined(FEAT_NETBEANS_INTG) || defined(FEAT_EVAL) || defined(PROTO) # if !defined(FEAT_GUI_W32) || defined(PROTO) /* @@ -216,7 +215,7 @@ gui_mch_post_balloon(BalloonEval *beval, char_u *mesg) undrawBalloon(beval); } # endif /* !FEAT_GUI_W32 */ -#endif /* FEAT_SUN_WORKSHOP || FEAT_NETBEANS_INTG || PROTO */ +#endif /* FEAT_NETBEANS_INTG || PROTO */ #if !defined(FEAT_GUI_W32) || defined(PROTO) #if defined(FEAT_BEVAL_TIP) || defined(PROTO) diff --git a/src/gui_motif.c b/src/gui_motif.c index b6c140be38..3f354096c1 100644 --- a/src/gui_motif.c +++ b/src/gui_motif.c @@ -698,8 +698,7 @@ manage_centered(Widget dialog_child) XtVaSetValues(shell, XmNmappedWhenManaged, mappedWhenManaged, NULL); } -#if defined(FEAT_MENU) || defined(FEAT_SUN_WORKSHOP) \ - || defined(FEAT_GUI_DIALOG) || defined(PROTO) +#if defined(FEAT_MENU) || defined(FEAT_GUI_DIALOG) || defined(PROTO) /* * Encapsulate the way an XmFontList is created. diff --git a/src/gui_x11.c b/src/gui_x11.c index 652bbec28a..9d8ea7e4a6 100644 --- a/src/gui_x11.c +++ b/src/gui_x11.c @@ -22,11 +22,11 @@ #include /* - * For Workshop XpmP.h is preferred, because it makes the signs drawn with a - * transparent background instead of black. + * XpmP.h is preferred, because it makes the signs drawn with a transparent + * background instead of black. */ #if defined(HAVE_XM_XPMP_H) && defined(FEAT_GUI_MOTIF) \ - && (!defined(HAVE_X11_XPM_H) || defined(FEAT_SUN_WORKSHOP)) + && !defined(HAVE_X11_XPM_H) # include #else # ifdef HAVE_X11_XPM_H @@ -469,7 +469,7 @@ static XtResource vim_resources[] = XtRString, DFLT_TOOLTIP_FONT }, - /* This one isn't really needed, keep for Sun Workshop? */ + /* This one may not be really needed? */ { "balloonEvalFontSet", XtCFontSet, @@ -636,8 +636,7 @@ gui_x11_expose_cb( gui_mch_update(); } -#if ((defined(FEAT_NETBEANS_INTG) || defined(FEAT_SUN_WORKSHOP)) \ - && defined(FEAT_GUI_MOTIF)) || defined(PROTO) +#if (defined(FEAT_NETBEANS_INTG) && defined(FEAT_GUI_MOTIF)) || defined(PROTO) /* * This function fills in the XRectangle object with the current x,y * coordinates and height, width so that an XtVaSetValues to the same shell of @@ -701,15 +700,6 @@ gui_x11_resize_window_cb( #endif ); } -#ifdef FEAT_SUN_WORKSHOP - if (usingSunWorkShop) - { - XRectangle rec; - - shellRectangle(w, &rec); - workshop_frame_moved(rec.x, rec.y, rec.width, rec.height); - } -#endif #if defined(FEAT_NETBEANS_INTG) && defined(FEAT_GUI_MOTIF) if (netbeans_active()) { @@ -1224,22 +1214,6 @@ gui_mch_prepare(int *argc, char **argv) argv[*argc] = NULL; } else -#ifdef FEAT_SUN_WORKSHOP - if (strcmp("-ws", argv[arg]) == 0) - { - usingSunWorkShop++; - p_acd = TRUE; - gui.dofork = FALSE; /* don't fork() when starting GUI */ - mch_memmove(&argv[arg], &argv[arg + 1], - (--*argc - arg) * sizeof(char *)); - argv[*argc] = NULL; -# ifdef WSDEBUG - wsdebug_wait(WT_ENV | WT_WAIT | WT_STOP, "SPRO_GVIM_WAIT", 20); - wsdebug_log_init("SPRO_GVIM_DEBUG", "SPRO_GVIM_DLEVEL"); -# endif - } - else -#endif #ifdef FEAT_NETBEANS_INTG if (strncmp("-nb", argv[arg], 3) == 0) { @@ -1543,11 +1517,6 @@ gui_mch_init(void) if (gui.color_approx) emsg(_("Vim E458: Cannot allocate colormap entry, some colors may be incorrect")); -#ifdef FEAT_SUN_WORKSHOP - if (usingSunWorkShop) - workshop_connect(app_context); -#endif - #ifdef FEAT_BEVAL_GUI gui_init_tooltip_font(); #endif @@ -1681,9 +1650,6 @@ gui_mch_open(void) #ifdef FEAT_XIM xim_init(); #endif -#ifdef FEAT_SUN_WORKSHOP - workshop_postinit(); -#endif return OK; } @@ -2748,12 +2714,7 @@ gui_mch_wait_for_chars(long wtime) #endif focus = gui.in_focus; -#ifdef ALT_X_INPUT - if (suppress_alternate_input) - desired = (XtIMXEvent | XtIMTimer); - else -#endif - desired = (XtIMAll); + desired = (XtIMAll); while (!timed_out) { /* Stop or start blinking when focus changes */ diff --git a/src/integration.c b/src/integration.c deleted file mode 100644 index eb6ccda0a9..0000000000 --- a/src/integration.c +++ /dev/null @@ -1,1112 +0,0 @@ -/* vi:set ts=8 sw=8 noet: - * - * VIM - Vi IMproved by Bram Moolenaar - * Visual Workshop integration by Gordon Prieur - * - * Do ":help uganda" in Vim to read copying and usage conditions. - * Do ":help credits" in Vim to see a list of people who contributed. - * See README.txt for an overview of the Vim source code. - */ - -/* - * Integration with Sun Workshop. - * - * This file should not change much, it's also used by other editors that - * connect to Workshop. Consider changing workshop.c instead. - */ -/* --> consider using MakeSelectionVisible instead of gotoLine hacks - to show the line properly - -> consider using glue instead of our own message wrapping functions - (but can only use glue if we don't have to distribute source) -*/ - -#include "vim.h" - -#include -#include - -#ifdef INET_SOCKETS -#include -#include -#else -#include -#endif - -#include -#include -#include -#ifdef HAVE_LIBGEN_H -# include -#endif -#include -#include - -#include -#include -#include -#include - -#ifdef HAVE_X11_XPM_H -# include -#else -# ifdef HAVE_XM_XPMP_H -# include -# endif -#endif - -#ifdef HAVE_UTIL_DEBUG_H -# include -#endif -#ifdef HAVE_UTIL_MSGI18N_H -# include -#endif - -#include "integration.h" /* */ -#ifdef HAVE_FRAME_H -# include -#endif - -#ifndef MAX -# define MAX(a, b) (a) > (b) ? (a) : (b) -#endif - -#ifndef NOCATGETS -# define NOCATGETS(x) x -#endif - -/* Functions private to this file */ -static void workshop_disconnect(void); -static void workshop_sensitivity(int num, char *table); -static void adjust_sign_name(char *filename); -static void process_menuItem(char *); -static void process_toolbarButton(char *); -static void workshop_set_option_first(char *name, char *value); - -static size_t dummy; /* to ignore return value of write() */ - -#define CMDBUFSIZ 2048 - -#ifdef DEBUG -static FILE *dfd; -static void pldebug(char *, ...); -static void unrecognised_message(char *); - -#define HANDLE_ERRORS(cmd) else unrecognised_message(cmd); -#else -#define HANDLE_ERRORS(cmd) -#endif - -/* - * Version number of the protocol between an editor and eserve. - * This number should be incremented when the protocol - * is changed. - */ -#define PROTOCOL_VERSION "4.0.0" - -static int sd = -1; -static XtInputId inputHandler; /* Cookie for input */ - -Boolean save_files = True; /* When true, save all files before build actions */ - - static void -workshop_connection_closed(void) -{ - /* - * socket closed on other end - */ - XtRemoveInput(inputHandler); - inputHandler = 0; - sd = -1; -} - - static char * -getCommand(void) -{ - int len; /* length of this command */ - char lenbuf[7]; /* get the length string here */ - char *newcb; /* used to realloc cmdbuf */ - static char *cmdbuf;/* get the command string here */ - static int cbsize;/* size of cmdbuf */ - - if ((len = read(sd, &lenbuf, 6)) == 6) { - lenbuf[6] = 0; /* Terminate buffer such that atoi() works right */ - len = atoi(lenbuf); - if (cbsize < (len + 1)) { - newcb = (char *) realloc(cmdbuf, - MAX((len + 256), CMDBUFSIZ)); - if (newcb != NULL) { - cmdbuf = newcb; - cbsize = MAX((len + 256), CMDBUFSIZ); - } - } - if (cbsize >= len && (len = read(sd, cmdbuf, len)) > 0) { - cmdbuf[len] = 0; - return cmdbuf; - } else { - return NULL; - } - } else { - if (len == 0) { /* EOF */ - workshop_connection_closed(); - } - return NULL; - } - -} - - static void -messageFromEserve(XtPointer clientData UNUSED, - int *dum1 UNUSED, - XtInputId *dum2 UNUSED) -{ - char *cmd; /* the 1st word of the command */ - - cmd = getCommand(); - if (cmd == NULL) { - /* We're being shut down by eserve and the "quit" message - * didn't arrive before the socket connection got closed */ - return; - } -#ifdef DEBUG - pldebug("%s\n", cmd); -#endif - switch (*cmd) { - case 'a': - if (cmd[1] == 'c' && - strncmp(cmd, NOCATGETS("ack "), 4) == 0) { - int ackNum; - char buf[20]; - - ackNum = atoi(&cmd[4]); - vim_snprintf(buf, sizeof(buf), - NOCATGETS("ack %d\n"), ackNum); - dummy = write(sd, buf, strlen(buf)); - } else if (strncmp(cmd, - NOCATGETS("addMarkType "), 12) == 0) { - int idx; - char *color; - char *sign; - - idx = atoi(strtok(&cmd[12], " ")); - color = strtok(NULL, NOCATGETS("\001")); - sign = strtok(NULL, NOCATGETS("\001")); - /* Skip space that separates names */ - if (color) { - color++; - } - if (sign) { - sign++; - } - /* Change sign name to accommodate a different size? */ - adjust_sign_name(sign); - workshop_add_mark_type(idx, color, sign); - } - HANDLE_ERRORS(cmd); - break; - - case 'b': - if (strncmp(cmd, - NOCATGETS("balloon "), 8) == 0) { - char *tip; - - tip = strtok(&cmd[8], NOCATGETS("\001")); - workshop_show_balloon_tip(tip); - } - HANDLE_ERRORS(cmd); - break; - - case 'c': - if (strncmp(cmd, - NOCATGETS("changeMarkType "), 15) == 0) { - char *file; - int markId; - int type; - - file = strtok(&cmd[15], " "); - markId = atoi(strtok(NULL, " ")); - type = atoi(strtok(NULL, " ")); - workshop_change_mark_type(file, markId, type); - } - HANDLE_ERRORS(cmd); - break; - - case 'd': - if (strncmp(cmd, NOCATGETS("deleteMark "), 11) == 0) { - char *file; - int markId; - - file = strtok(&cmd[11], " "); - markId = atoi(strtok(NULL, " ")); - workshop_delete_mark(file, markId); - } - HANDLE_ERRORS(cmd); - break; - - case 'f': - if (cmd[1] == 'o' && - strncmp(cmd, NOCATGETS("footerMsg "), 10) == 0) { - int severity; - char *message; - - severity = - atoi(strtok(&cmd[10], " ")); - message = strtok(NULL, NOCATGETS("\001")); - - workshop_footer_message(message, severity); - } else if (strncmp(cmd, - NOCATGETS("frontFile "), 10) == 0) { - char *file; - - file = strtok(&cmd[10], " "); - workshop_front_file(file); - } - HANDLE_ERRORS(cmd); - break; - - case 'g': - if (cmd[1] == 'e' && - strncmp(cmd, NOCATGETS("getMarkLine "), 12) == 0) { - char *file; - int markid; - int line; - char buf[100]; - - file = strtok(&cmd[12], " "); - markid = atoi(strtok(NULL, " ")); - line = workshop_get_mark_lineno(file, markid); - vim_snprintf(buf, sizeof(buf), - NOCATGETS("markLine %s %d %d\n"), - file, markid, line); - dummy = write(sd, buf, strlen(buf)); - } else if (cmd[1] == 'o' && cmd[4] == 'L' && - strncmp(cmd, NOCATGETS("gotoLine "), 9) == 0) { - char *file; - int lineno; - - file = strtok(&cmd[9], " "); - lineno = atoi(strtok(NULL, " ")); - workshop_goto_line(file, lineno); - } else if (strncmp(cmd, - NOCATGETS("gotoMark "), 9) == 0) { - char *file; - int markId; - char *message; - - file = strtok(&cmd[9], " "); - markId = atoi(strtok(NULL, " ")); - message = strtok(NULL, NOCATGETS("\001")); - workshop_goto_mark(file, markId, message); -#ifdef NOHANDS_SUPPORT_FUNCTIONS - } else if (strcmp(cmd, NOCATGETS("getCurrentFile")) == 0) { - char *f = workshop_test_getcurrentfile(); - char buffer[2*MAXPATHLEN]; - vim_snprintf(buffer, sizeof(buffer), - NOCATGETS("currentFile %d %s"), - f ? (int)strlen(f) : 0, f ? f : ""); - workshop_send_message(buffer); - } else if (strcmp(cmd, NOCATGETS("getCursorRow")) == 0) { - int row = workshop_test_getcursorrow(); - char buffer[2*MAXPATHLEN]; - vim_snprintf(buffer, sizeof(buffer), - NOCATGETS("cursorRow %d"), row); - workshop_send_message(buffer); - } else if (strcmp(cmd, NOCATGETS("getCursorCol")) == 0) { - int col = workshop_test_getcursorcol(); - char buffer[2*MAXPATHLEN]; - vim_snprintf(buffer, sizeof(buffer), - NOCATGETS("cursorCol %d"), col); - workshop_send_message(buffer); - } else if (strcmp(cmd, NOCATGETS("getCursorRowText")) == 0) { - char *t = workshop_test_getcursorrowtext(); - char buffer[2*MAXPATHLEN]; - vim_snprintf(buffer, sizeof(buffer), - NOCATGETS("cursorRowText %d %s"), - t ? (int)strlen(t) : 0, t ? t : ""); - workshop_send_message(buffer); - } else if (strcmp(cmd, NOCATGETS("getSelectedText")) == 0) { - char *t = workshop_test_getselectedtext(); - char buffer[2*MAXPATHLEN]; - vim_snprintf(buffer, sizeof(buffer), - NOCATGETS("selectedText %d %s"), - t ? (int)strlen(t) : 0, t ? t : ""); - workshop_send_message(buffer); -#endif - } - HANDLE_ERRORS(cmd); - break; - - case 'l': - if (strncmp(cmd, NOCATGETS("loadFile "), 9) == 0) { - char *file; - int line; - char *frameid; - - file = strtok(&cmd[9], " "); - line = atoi(strtok(NULL, " ")); - frameid = strtok(NULL, " "); - workshop_load_file(file, line, frameid); - } - HANDLE_ERRORS(cmd); - break; - - case 'm': /* Menu, minimize, maximize */ - if (cmd[1] == 'e' && cmd[4] == 'B' && - strncmp(cmd, NOCATGETS("menuBegin "), 10) == 0) { - workshop_menu_begin(&cmd[10]); - } else if (cmd[1] == 'e' && cmd[4] == 'I' && - strncmp(cmd, NOCATGETS("menuItem "), 9) == 0) { - process_menuItem(cmd); - } else if (cmd[1] == 'e' && cmd[4] == 'E' && - strcmp(cmd, NOCATGETS("menuEnd")) == 0) { - workshop_menu_end(); - } else if (cmd[1] == 'a' && - strcmp(cmd, NOCATGETS("maximize")) == 0) { - workshop_maximize(); - } else if (strcmp(cmd, NOCATGETS("minimize")) == 0) { - workshop_minimize(); - } - HANDLE_ERRORS(cmd); - break; - - case 'o': - if (cmd[1] == 'p' && - strcmp(cmd, NOCATGETS("option"))) { - char *name; - char *value; - - name = strtok(&cmd[7], " "); - value = strtok(NULL, " "); - workshop_set_option_first(name, value); - } - HANDLE_ERRORS(cmd); - break; - - case 'p': - if (strcmp(cmd, NOCATGETS("ping")) == 0) { -#if 0 - int pingNum; - - pingNum = atoi(&cmd[5]); - workshop_send_ack(ackNum); - /* WHAT DO I DO HERE? */ -#endif - } - HANDLE_ERRORS(cmd); - break; - - case 'q': - if (strncmp(cmd, NOCATGETS("quit"), 4) == 0) { - - /* Close the connection. It's important to do - * that now, since workshop_quit might be - * looking at open files. For example, if you - * have modified one of the files without - * saving, NEdit will ask you what you want to - * do, and spin loop by calling - * XtAppProcessEvent while waiting for your - * reply. In this case, if we still have an - * input handler and the socket has been - * closed on the other side when eserve - * expired, we will hang in IoWait. - */ - workshop_disconnect(); - - workshop_quit(); - } - HANDLE_ERRORS(cmd); - break; - - case 'r': - if (cmd[1] == 'e' && - strncmp(cmd, NOCATGETS("reloadFile "), 11) == 0) { - char *file; - int line; - - file = strtok(&cmd[11], " "); - line = atoi(strtok(NULL, " ")); - workshop_reload_file(file, line); - } - HANDLE_ERRORS(cmd); - break; - - case 's': - if (cmd[1] == 'e' && cmd[2] == 't' && - strncmp(cmd, NOCATGETS("setMark "), 8) == 0) { - char *file; - int line; - int markId; - int type; - - file = strtok(&cmd[8], " "); - line = atoi(strtok(NULL, " ")); - markId = atoi(strtok(NULL, " ")); - type = atoi(strtok(NULL, " ")); - workshop_set_mark(file, line, markId, type); - } else if (cmd[1] == 'h' && - strncmp(cmd, NOCATGETS("showFile "), 9) == 0) { - workshop_show_file(&cmd[9]); - } else if (cmd[1] == 'u' && - strncmp(cmd, NOCATGETS("subMenu "), 8) == 0) { - char *label; - - label = strtok(&cmd[8], NOCATGETS("\001")); - workshop_submenu_begin(label); - } else if (cmd[1] == 'u' && - strcmp(cmd, NOCATGETS("subMenuEnd")) == 0) { - workshop_submenu_end(); - } else if (cmd[1] == 'e' && cmd[2] == 'n' && - strncmp(cmd, NOCATGETS("sensitivity "), 12) == 0) { - int num; - char *bracket; - char *table; - - num = atoi(strtok(&cmd[12], " ")); - bracket = strtok(NULL, " "); - if (*bracket != '[') { - fprintf(stderr, NOCATGETS("Parsing " - "error for sensitivity\n")); - } else { - table = strtok(NULL, NOCATGETS("]")); - workshop_sensitivity(num, table); - } - } else if (cmd[1] == 'e' && cmd[2] == 'n' && cmd[3] == 'd' && - strncmp(cmd, NOCATGETS("sendVerb "), 9) == 0) { - /* Send the given verb back (used for the - * debug.lineno callback (such that other tools - * can obtain the position coordinates or the - * selection) */ - char *verb; - - verb = strtok(&cmd[9], " "); - workshop_perform_verb(verb, NULL); - } else if (cmd[1] == 'a' && - strncmp(cmd, NOCATGETS("saveFile "), 9) == 0) { - workshop_save_file(&cmd[9]); -#ifdef NOHANDS_SUPPORT_FUNCTIONS - } else if (strncmp(cmd, NOCATGETS("saveSensitivity "), 16) == 0) { - char *file; - - file = strtok(&cmd[16], " "); - workshop_save_sensitivity(file); -#endif - } - HANDLE_ERRORS(cmd); - break; - - case 't': /* Toolbar */ - if (cmd[8] == 'e' && - strncmp(cmd, NOCATGETS("toolbarBegin"), 12) == 0) { - workshop_toolbar_begin(); - } else if (cmd[8] == 'u' && - strncmp(cmd, NOCATGETS("toolbarButton"), 13) == 0) { - process_toolbarButton(cmd); - } else if (cmd[7] == 'E' && - strcmp(cmd, NOCATGETS("toolbarEnd")) == 0) { - workshop_toolbar_end(); - } - HANDLE_ERRORS(cmd); - break; - -#ifdef DEBUG - default: - unrecognised_message(cmd); - break; -#endif - } -} - - static void -process_menuItem( - char *cmd) -{ - char *label = strtok(&cmd[9], NOCATGETS("\001")); - char *verb = strtok(NULL, NOCATGETS("\001")); - char *acc = strtok(NULL, NOCATGETS("\001")); - char *accText = strtok(NULL, NOCATGETS("\001")); - char *name = strtok(NULL, NOCATGETS("\001")); - char *sense = strtok(NULL, NOCATGETS("\n")); - char *filepos = strtok(NULL, NOCATGETS("\n")); - if (*acc == '-') { - acc = NULL; - } - if (*accText == '-') { - accText = NULL; - } - workshop_menu_item(label, verb, acc, accText, name, filepos, sense); - -} - - - static void -process_toolbarButton( - char *cmd) /* button definition */ -{ - char *label = strtok(&cmd[14], NOCATGETS("\001")); - char *verb = strtok(NULL, NOCATGETS("\001")); - char *senseVerb = strtok(NULL, NOCATGETS("\001")); - char *filepos = strtok(NULL, NOCATGETS("\001")); - char *help = strtok(NULL, NOCATGETS("\001")); - char *sense = strtok(NULL, NOCATGETS("\001")); - char *file = strtok(NULL, NOCATGETS("\001")); - char *left = strtok(NULL, NOCATGETS("\n")); - - if (!strcmp(label, NOCATGETS("-"))) { - label = NULL; - } - if (!strcmp(help, NOCATGETS("-"))) { - help = NULL; - } - if (!strcmp(file, NOCATGETS("-"))) { - file = NULL; - } - if (!strcmp(senseVerb, NOCATGETS("-"))) { - senseVerb = NULL; - } - workshop_toolbar_button(label, verb, senseVerb, filepos, help, - sense, file, left); -} - - -#ifdef DEBUG - static void -unrecognised_message( - char *cmd) -{ - pldebug("Unrecognised eserve message:\n\t%s\n", cmd); - /* abort(); */ -} -#endif - - -/* Change sign name to accommodate a different size: - * Create the filename based on the height. The filename format - * of multisize icons are: - * x.xpm : largest icon - * x1.xpm : smaller icon - * x2.xpm : smallest icon */ - static void -adjust_sign_name(char *filename) -{ - char *s; - static int fontSize = -1; - - if (fontSize == -1) - fontSize = workshop_get_font_height(); - if (fontSize == 0) - return; - if (filename[0] == '-') - return; - - /* This is ugly: later we should instead pass the fontheight over - * to eserve on startup and let eserve just send the right filenames - * to us in the first place - - * I know that the filename will end with 1.xpm (see - * GuiEditor.cc`LispPrintSign if you wonder why) */ - s = filename+strlen(filename)-5; - if (fontSize <= 11) - strcpy(s, "2.xpm"); - else if (fontSize <= 15) - strcpy(s, "1.xpm"); - else - strcpy(s, ".xpm"); -} - -#if 0 -/* Were we invoked by WorkShop? This function can be used early during startup - if you want to do things differently if the editor is started standalone - or in WorkShop mode. For example, in standalone mode you may not want to - add a footer/message area or a sign gutter. */ - int -workshop_invoked(void) -{ - static int result = -1; - if (result == -1) { - result = (getenv(NOCATGETS("SPRO_EDITOR_SOCKET")) != NULL); - } - return result; -} -#endif - -/* Connect back to eserve */ -void workshop_connect(XtAppContext context) -{ -#ifdef INET_SOCKETS - struct sockaddr_in server; - struct hostent * host; - int port; -#else - struct sockaddr_un server; -#endif - char buf[32]; - char * address; -#ifdef DEBUG - char *file; -#endif - - address = getenv(NOCATGETS("SPRO_EDITOR_SOCKET")); - if (address == NULL) { - return; - } - -#ifdef INET_SOCKETS - port = atoi(address); - - if ((sd = socket(AF_INET, SOCK_STREAM, 0)) == -1) { - PERROR(NOCATGETS("workshop_connect")); - return; - } - - /* Get the server internet address and put into addr structure */ - /* fill in the socket address structure and connect to server */ - vim_memset((char *)&server, '\0', sizeof(server)); - server.sin_family = AF_INET; - server.sin_port = port; - if ((host = gethostbyname(NOCATGETS("localhost"))) == NULL) { - PERROR(NOCATGETS("gethostbyname")); - sd = -1; - return; - } - memcpy((char *)&server.sin_addr, host->h_addr, host->h_length); -#else - if ((sd = socket(AF_UNIX, SOCK_STREAM, 0)) == -1) { - PERROR(NOCATGETS("workshop_connect")); - return; - } - - server.sun_family = AF_UNIX; - strcpy(server.sun_path, address); -#endif - /* Connect to server */ - if (connect(sd, (struct sockaddr *)&server, sizeof(server))) { - if (errno == ECONNREFUSED) { - close(sd); -#ifdef INET_SOCKETS - if ((sd = socket(AF_INET, SOCK_STREAM, 0)) == -1) { - PERROR(NOCATGETS("workshop_connect")); - return; - } -#else - if ((sd = socket(AF_UNIX, SOCK_STREAM, 0)) == -1) { - PERROR(NOCATGETS("workshop_connect")); - return; - } -#endif - if (connect(sd, (struct sockaddr *)&server, - sizeof(server))) { - PERROR(NOCATGETS("workshop_connect")); - return; - } - - } else { - PERROR(NOCATGETS("workshop_connect")); - return; - } - } - - /* tell notifier we are interested in being called - * when there is input on the editor connection socket - */ - inputHandler = XtAppAddInput(context, sd, (XtPointer) XtInputReadMask, - messageFromEserve, NULL); -#ifdef DEBUG - if ((file = getenv(NOCATGETS("SPRO_PLUGIN_DEBUG"))) != NULL) { - char buf[BUFSIZ]; - - unlink(file); - vim_snprintf(buf, sizeof(buf), "date > %s", file); - system(buf); - dfd = fopen(file, "a"); - } else { - dfd = NULL; - } -#endif - - vim_snprintf(buf, sizeof(buf), NOCATGETS("connected %s %s %s\n"), - workshop_get_editor_name(), - PROTOCOL_VERSION, - workshop_get_editor_version()); - dummy = write(sd, buf, strlen(buf)); - - vim_snprintf(buf, sizeof(buf), NOCATGETS("ack 1\n")); - dummy = write(sd, buf, strlen(buf)); -} - - static void -workshop_disconnect(void) -{ - /* Probably need to send some message here */ - - /* - * socket closed on other end - */ - XtRemoveInput(inputHandler); - close(sd); - inputHandler = 0; - sd = -1; - -} - -/* - * Utility functions - */ - - -/* Minimize and maximize shells. From libutil's shell.cc. */ - -/* utility functions from libutil's shell.cc */ -static Boolean -isWindowMapped(Display *display, Window win) -{ - XWindowAttributes winAttrs; - XGetWindowAttributes(display, - win, - &winAttrs); - if (winAttrs.map_state == IsViewable) { - return(True); - } else { - return(False); - } -} - -static Boolean -isMapped(Widget widget) -{ - if (widget == NULL) { - return(False); - } - - if (XtIsRealized(widget) == False) { - return(False); - } - - return(isWindowMapped(XtDisplay(widget), XtWindow(widget))); -} - -static Boolean -widgetIsIconified( - Widget w) -{ - Atom wm_state; - Atom act_type; /* actual Atom type returned */ - int act_fmt; /* actual format returned */ - u_long nitems_ret; /* number of items returned */ - u_long bytes_after; /* number of bytes remaining */ - u_long *property; /* actual property returned */ - - /* - * If a window is iconified its WM_STATE is set to IconicState. See - * ICCCM Version 2.0, section 4.1.3.1 for more details. - */ - - wm_state = XmInternAtom(XtDisplay(w), NOCATGETS("WM_STATE"), False); - if (XtWindow(w) != 0) { /* only check if window exists! */ - XGetWindowProperty(XtDisplay(w), XtWindow(w), wm_state, 0L, 2L, - False, AnyPropertyType, &act_type, &act_fmt, &nitems_ret, - &bytes_after, (char_u **) &property); - if (nitems_ret == 2 && property[0] == IconicState) { - return True; - } - } - - return False; - -} /* end widgetIsIconified */ - -void -workshop_minimize_shell(Widget shell) -{ - if (shell != NULL && - XtIsObject(shell) && - XtIsRealized(shell) == True) { - if (isMapped(shell) == True) { - XIconifyWindow(XtDisplay(shell), XtWindow(shell), - XScreenNumberOfScreen(XtScreen(shell))); - } - XtVaSetValues(shell, - XmNiconic, True, - NULL); - } -} - -void workshop_maximize_shell(Widget shell) -{ - if (shell != NULL && - XtIsRealized(shell) == True && - widgetIsIconified(shell) == True && - isMapped(shell) == False) { - XtMapWidget(shell); - /* This used to be - XtPopdown(shell); - XtPopup(shell, XtGrabNone); - However, I found that that would drop any transient - windows that had been iconified with the window. - According to the ICCCM, XtMapWidget should be used - to bring a window from Iconic to Normal state. - However, Rich Mauri did a lot of work on this during - Bart, and found that XtPopDown,XtPopup was required - to fix several bugs involving multiple CDE workspaces. - I've tested it now and things seem to work fine but - I'm leaving this note for history in case this needs - to be revisited. - */ - } -} - - -Boolean workshop_get_width_height(int *width, int *height) -{ - static int wid = 0; - static int hgt = 0; - static Boolean firstTime = True; - static Boolean success = False; - - if (firstTime) { - char *settings; - - settings = getenv(NOCATGETS("SPRO_GUI_WIDTH_HEIGHT")); - if (settings != NULL) { - wid = atoi(settings); - settings = strrchr(settings, ':'); - if (settings++ != NULL) { - hgt = atoi(settings); - } - if (wid > 0 && hgt > 0) { - success = True; - } - firstTime = False; - } - } - - if (success) { - *width = wid; - *height = hgt; - } - return success; -} - -/* - * Toolbar code - */ - - static void -workshop_sensitivity(int num, char *table) -{ - /* build up a verb table */ - VerbSense *vs; - int i; - char *s; - if ((num < 1) || (num > 500)) { - return; - } - - vs = (VerbSense *)malloc((num+1)*sizeof(VerbSense)); - - /* Point to the individual names (destroys the table string, but - * that's okay -- this is more efficient than duplicating strings) */ - s = table; - for (i = 0; i < num; i++) { - while (*s == ' ') { - s++; - } - vs[i].verb = s; - while (*s && (*s != ' ') && (*s != '\001')) { - s++; - } - if (*s == 0) { - vs[i].verb = NULL; - break; - } - if (*s == '\001') { - *s = 0; - s++; - } - *s = 0; - s++; - while (*s == ' ') { - s++; - } - if (*s == '1') { - vs[i].sense = 1; - } else { - vs[i].sense = 0; - } - s++; - } - vs[i].verb = NULL; - - workshop_frame_sensitivities(vs); - - free(vs); -} - -/* - * Options code - */ -/* Set an editor option. - * IGNORE an option if you do not recognize it. - */ - static void -workshop_set_option_first(char *name, char *value) -{ - /* Currently value can only be on/off. This may change later (for - * example to set an option like "balloon evaluate delay", but - * for now just convert it into a boolean */ - Boolean on = !strcmp(value, "on"); - - if (!strcmp(name, "workshopkeys")) { - workshop_hotkeys(on); - } else if (!strcmp(name, "savefiles")) { - save_files = on; - } else if (!strcmp(name, "balloon")) { - workshop_balloon_mode(on); - } else if (!strcmp(name, "balloondelay")) { - int delay = atoi(value); - /* Should I validate the number here?? */ - workshop_balloon_delay(delay); - } else { - /* Let editor interpret it */ - workshop_set_option(name, value); - } -} - - -void workshop_file_closed_lineno(char *filename, int lineno) -{ - char buffer[2*MAXPATHLEN]; - vim_snprintf(buffer, sizeof(buffer), - NOCATGETS("deletedFile %s %d\n"), filename, lineno); - dummy = write(sd, buffer, strlen(buffer)); -} - -void workshop_file_opened(char *filename, int readOnly) -{ - char buffer[2*MAXPATHLEN]; - vim_snprintf(buffer, sizeof(buffer), - NOCATGETS("loadedFile %s %d\n"), filename, readOnly); - dummy = write(sd, buffer, strlen(buffer)); -} - - -void workshop_file_saved(char *filename) -{ - char buffer[2*MAXPATHLEN]; - vim_snprintf(buffer, sizeof(buffer), - NOCATGETS("savedFile %s\n"), filename); - dummy = write(sd, buffer, strlen(buffer)); - - /* Let editor report any moved marks that the eserve client - * should deal with (for example, moving location-based breakpoints) */ - workshop_moved_marks(filename); -} - -void workshop_frame_moved(int new_x, int new_y, int new_w, int new_h) -{ - char buffer[200]; - - if (sd >= 0) - { - vim_snprintf(buffer, sizeof(buffer), - NOCATGETS("frameAt %d %d %d %d\n"), - new_x, new_y, new_w, new_h); - dummy = write(sd, buffer, strlen(buffer)); - } -} - -/* A button in the toolbar has been pushed. - * Clientdata is a pointer used by the editor code to figure out the - * positions for this toolbar (probably by storing a window pointer, - * and then fetching the current buffer for that window and looking up - * cursor and selection positions etc.) */ -void workshop_perform_verb(char *verb, void *clientData) -{ - char *filename; - int curLine; - int curCol; - int selStartLine; - int selStartCol; - int selEndLine; - int selEndCol; - int selLength; - char *selection; - - char buf[2*MAXPATHLEN]; -/* Later: needsFilePos indicates whether or not we need to fetch all this - * info for this verb... for now, however, it looks as if - * eserve parsing routines depend on it always being present */ - - if (workshop_get_positions(clientData, - &filename, - &curLine, - &curCol, - &selStartLine, - &selStartCol, - &selEndLine, - &selEndCol, - &selLength, - &selection)) { - if (selection == NULL) { - selection = NOCATGETS(""); - } - - /* Should I save the files??? This is currently done by checking - if the verb is one of a few recognized ones. Later we can pass - this list from eserve to the editor (it's currently hardcoded in - vi and emacs as well). */ - if (save_files) { - if (!strcmp(verb, "build.build") || !strcmp(verb, "build.build-file") || - !strcmp(verb, "debug.fix") || !strcmp(verb, "debug.fix-all")) { - workshop_save_files(); - } - } - - vim_snprintf(buf, sizeof(buf), - NOCATGETS("toolVerb %s %s %d,%d %d,%d %d,%d %d %s\n"), - verb, - filename, - curLine, curCol, - selStartLine, selStartCol, - selEndLine, selEndCol, - selLength, - selection); - dummy = write(sd, buf, strlen(buf)); - if (*selection) { - free(selection); - } - } -} - -/* Send a message to eserve */ -#if defined(NOHANDS_SUPPORT_FUNCTIONS) || defined(FEAT_BEVAL_GUI) -void workshop_send_message(char *buf) -{ - dummy = write(sd, buf, strlen(buf)); -} -#endif - -/* Some methods, like currentFile, cursorPos, etc. are missing here. - * But it looks like these are used for NoHands testing only so we - * won't bother requiring editors to implement these - */ - - -#ifdef DEBUG - - static void -pldebug( - char *fmt, /* a printf style format line */ - ...) -{ - va_list ap; - - if (dfd != NULL) { - va_start(ap, fmt); - vfprintf(dfd, fmt, ap); - va_end(ap); - fflush(dfd); - } - -} /* end pldebug */ - -#endif diff --git a/src/integration.h b/src/integration.h deleted file mode 100644 index 817b683f65..0000000000 --- a/src/integration.h +++ /dev/null @@ -1,452 +0,0 @@ -/* vi:set ts=8 sts=4 sw=4 noet: - * - * VIM - Vi IMproved by Bram Moolenaar - * Visual Workshop integration by Gordon Prieur - * - * Do ":help uganda" in Vim to read copying and usage conditions. - * Do ":help credits" in Vim to see a list of people who contributed. - */ -/* - THIS IS AN UNSTABLE INTERFACE! It is unsupported and will likely - change in future releases, possibly breaking compatibility! -*/ - -#ifndef _INTEGRATION_H -#define _INTEGRATION_H - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Enable NoHands test support functions. Define this only if you want to - compile in support in the editor such that it can be run under - the WorkShop test suite. */ -#ifndef NOHANDS_SUPPORT_FUNCTIONS -#define NOHANDS_SUPPORT_FUNCTIONS -#endif - - -/* This header file has three parts. - * 1. Functions you need to implement; these are called by the integration - * library - * 2. Functions you need to call when certain events happen in the editor; - * these are implemented by the integration library - * 3. Utility functions provided by the integration library; these make - * task 1 a bit easier. - */ - -/* - * The following functions need to be implemented by the editor - * integration code (and will be editor-specific). Please see the - * sample workshop.c file for comments explaining what each functions - * needs to do, what the arguments mean, etc. - */ - -/* - * This string is recognized by eserve and should be all lower case. - * This is how the editor detects that it is talking to NEdit instead - * of Vim, for example, when the connection is initiated from the editor. - * Examples: "nedit", "gvim" - */ -char *workshop_get_editor_name(); - -/* - * Version number of the editor. - * This number is communicated along with the protocol - * version to the application. - * Examples: "5.0.2", "19.3" - */ -char *workshop_get_editor_version(); - - -/* Goto a given line in a given file */ -void workshop_goto_line(char *filename, int lineno); - - -/* Set mark in a given file */ -void workshop_set_mark(char *filename, int lineno, int markId, int type); - - -/* Change mark type (for example from current-pc to pc-and-breakpoint) */ -void workshop_change_mark_type(char *filename, int markId, int type); - -/* - * Goto the given mark in a file (e.g. show it). - * If message is not null, display it in the footer. - */ - -void workshop_goto_mark(char *filename, int markId, char *message); - - -/* Delete mark */ -void workshop_delete_mark(char *filename, int markId); - -/* Begin/end pair of messages indicating that a series of _set_mark and - * _delete_mark messages will be sent. This can/should be used to suppress gui - * redraws between the begin and end messages. For example, if you switch - * to a headerfile that has a class breakpoint set, there may be hundreds - * of marks that need to be added. You don't want to refresh the gui for each - * added sign, you want to wait until the final end message. - */ -void workshop_mark_batch_begin(); -void workshop_mark_batch_end(); - - -/* Load a given file into the WorkShop buffer. "frameid" is a token string - * that identifies which frame the file would like to be loaded into. This - * will usually be null, in which case you should use the default frame. - * However, if frameid is not null, you need to find a frame that has this - * frameid, and replace the file in that frame. Finally, if the frameid is - * one you haven't seen before, you should create a new frame for this file. - * Note that "frameid" is a string value, not just an opaque pointer, so - * you should use strcmp rather than == when testing for equality. - */ -void workshop_load_file(char *filename, int line, char *frameid); - - -/* Reload the WorkShop buffer */ -void workshop_reload_file(char *filename, int line); - - -/* Show the given file */ -void workshop_show_file(char *filename); - - -/* Front the given file */ -void workshop_front_file(char *filename); - - -/* Save the given file */ -void workshop_save_file(char *filename); - -/* Save all WorkShop edited files. You can ask user about modified files - * and skip saving any files the user doesn't want to save. - * This function is typically called when the user issues a build, a fix, - * etc. (and also if you select "Save All" from the File menu :-) - */ -void workshop_save_files(); - -/* Show a message in all footers. - Severity currently is not defined. */ -void workshop_footer_message(char *message, int severity); - -/* Minimize all windows */ -void workshop_minimize(); - - -/* Maximize all windows */ -void workshop_maximize(); - - -/* - * Create a new mark type, assign it a given index, a given textbackground - * color, and a given left-margin sign (where sign is a filename to an - * .xpm file) - */ -void workshop_add_mark_type(int idx, char *colorspec, char *sign); - - -/* Get mark line number */ -int workshop_get_mark_lineno(char *filename, int markId); - - -/* Exit editor; save confirmation dialogs are okay */ -void workshop_quit(); - -/* Set an editor option. - * For example, name="syntax",value="on" would enable syntax highlighting. - * The currently defined options are: - * lineno {on,off} show line numbers - * syntax {on,off} highlight syntax - * parentheses {on,off} show matching parentheses - * The following options are interpreted by the library for you (so you - * will never see the message. However, the implementation requires you - * to provide certain callbacks, like restore hotkeys