mirror of
https://github.com/vim/vim.git
synced 2025-07-24 10:45:12 -04:00
patch 8.1.0763: nobody is using the Sun Workshop support
Problem: Nobody is using the Sun Workshop support. Solution: Remove the Workshop support.
This commit is contained in:
parent
e40742526e
commit
bb1969b6ab
@ -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
|
||||
|
||||
|
@ -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:
|
||||
|
@ -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=<VWS-install-dir>/contrib/contrib6/<vim-version>
|
||||
|
||||
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 <VWS-install-dir>/bin/gvim to point to the vim in your newly installed
|
||||
directory. The <vim-version> 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:
|
||||
|
42
src/Makefile
42
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 \
|
||||
|
27
src/auto/configure
vendored
27
src/auto/configure
vendored
@ -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.
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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@
|
||||
|
@ -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.],
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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),
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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;
|
||||
|
||||
/*
|
||||
|
@ -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
|
||||
|
21
src/gui.c
21
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)
|
||||
/*
|
||||
|
@ -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)
|
||||
|
@ -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.
|
||||
|
@ -22,11 +22,11 @@
|
||||
#include <X11/cursorfont.h>
|
||||
|
||||
/*
|
||||
* 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 <Xm/XpmP.h>
|
||||
#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 */
|
||||
|
1112
src/integration.c
1112
src/integration.c
File diff suppressed because it is too large
Load Diff
@ -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 <X11/Intrinsic.h>
|
||||
#include <Xm/Xm.h>
|
||||
|
||||
#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 or save all files.
|
||||
* These are documented separately).
|
||||
* workshopkeys {on,off} set workshop hotkeys
|
||||
* savefiles {on,off} save all files before issuing a build
|
||||
* balloon {on,off} enable/disable balloon evaluate
|
||||
*
|
||||
* IGNORE an option if you do not recognize it.
|
||||
*/
|
||||
void workshop_set_option(char *name, char *value);
|
||||
|
||||
/*
|
||||
* (See workshop_add_frame first.) This function notifies the editor
|
||||
* that the frame for the given window (indicated by "frame", which
|
||||
* was supplied by the editor in workshop_add_frame) has been created.
|
||||
* This can happen much later than the workshop_add_frame message, since
|
||||
* often a window is created on editor startup, while the frame description
|
||||
* is passed over from eserve much later, when the connection is complete.
|
||||
* This gives the editor a chance to kick its GUI to show the frame
|
||||
* properly; typically you'll unmanage and remanage the parent widget to
|
||||
* force a geometry recalculation.
|
||||
*/
|
||||
|
||||
void workshop_reconfigure_frame(void *frame);
|
||||
|
||||
|
||||
/* Are there any moved marks? If so, call workshop_move_mark on
|
||||
* each of them now. This is how eserve can find out if for example
|
||||
* breakpoints have moved when a program has been recompiled and
|
||||
* reloaded into dbx.
|
||||
*/
|
||||
void workshop_moved_marks(char *filename);
|
||||
|
||||
|
||||
/* A button in the toolbar has been pushed. "frame" is provided
|
||||
* which should let you determine which toolbar had a button pushed
|
||||
* (you supplied this clientData when you created a toolbar). From
|
||||
* this you should be able to figure out which file the operation
|
||||
* applies to, and for that window the cursor line and column,
|
||||
* selection begin line and column, selection end line and column,
|
||||
* selection text and selection text length. The column numbers are
|
||||
* currently unused but implement it anyway in case we decide to use
|
||||
* them in the future.
|
||||
* Note that frame can be NULL. In this case, you should pick
|
||||
* a default window to translate coordinates for (ideally, the
|
||||
* last window the user has operated on.) This will be the case when
|
||||
* the user clicks on a Custom Button programmed to take the current
|
||||
* line number as an argument. Here it's ambiguous which buffer
|
||||
* to use, so you need to pick one.
|
||||
* (Interface consideration: Perhaps we instead should add smarts
|
||||
* into the library such that we remember which frame pointer
|
||||
* we last noticed (e.g. last call to get_positions, or perhaps
|
||||
* last add_frame) and then pass that instead? For example, we could
|
||||
* have all workshop operations return the clientData when passed
|
||||
* the filename (or add a filename-to-clientData converter?) and then
|
||||
* remember the last filename/clientData used.
|
||||
*/
|
||||
int workshop_get_positions(void *frame,
|
||||
char **filename,
|
||||
int *curLine,
|
||||
int *curCol,
|
||||
int *selStartLine,
|
||||
int *selStartCol,
|
||||
int *selEndLine,
|
||||
int *selEndCol,
|
||||
int *selLength,
|
||||
char **selection);
|
||||
|
||||
/* The following function should return the height of a character
|
||||
* in the text display. This is used to pick out a suitable size
|
||||
* for the signs to match the text (currently available in three
|
||||
* sizes). If you just return 0, WorkShop will use the default
|
||||
* sign size. (Use XmStringExtent on character "A" to get the height.)
|
||||
*/
|
||||
|
||||
int workshop_get_font_height(void);
|
||||
|
||||
/* The following function requests that you register the given
|
||||
* hotkey as a keyboard accelerator for all frames. Whenever the
|
||||
* hotkey is pressed, you should invoke workshop_hotkey_pressed
|
||||
* and pass the current frame pointer as an argument as well as
|
||||
* the clientData pointer passed in to this function.
|
||||
* The remove function unregisters the hotkey.
|
||||
*/
|
||||
void workshop_register_hotkey(Modifiers modifiers, KeySym keysym,
|
||||
void *clientData);
|
||||
void workshop_unregister_hotkey(Modifiers modifiers, KeySym keysym,
|
||||
void *clientData);
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
*
|
||||
* The following functions notify eserve of important editor events,
|
||||
* such as files being modified, files being saved, etc. You must
|
||||
* sprinkle your editor code with calls to these. For example, whenever
|
||||
* a file is modified (well, when its read-only status changes to modified),
|
||||
* call workshop_file_modified().
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
|
||||
/* Connect with eserve. Add this call after you editor initialization
|
||||
* is done, right before entering the event loop or blocking on input.
|
||||
* This will set up a socket connection with eserve.
|
||||
*/
|
||||
void workshop_connect(XtAppContext context);
|
||||
|
||||
/* A file has been opened. */
|
||||
void workshop_file_opened(char *filename, int readOnly);
|
||||
|
||||
|
||||
/* A file has been saved. Despite its name, eserve also uses this
|
||||
* message to mean a file has been reverted or unmodified.
|
||||
*/
|
||||
void workshop_file_saved(char *filename);
|
||||
|
||||
|
||||
#if 0
|
||||
/* A file has been closed */
|
||||
void workshop_file_closed(char *filename);
|
||||
#endif
|
||||
|
||||
/* Like workshop_file_closed, but also inform eserve what line the
|
||||
cursor was on when you left the file. That way eserve can put you
|
||||
back where you left off when you return to this file. */
|
||||
void workshop_file_closed_lineno(char *filename, int line);
|
||||
|
||||
#if 0
|
||||
/* A file has been modified */
|
||||
void workshop_file_modified(char *filename);
|
||||
|
||||
/*
|
||||
* A mark has been moved. Only call this as a response to
|
||||
* a workshop_moved_marks request call.
|
||||
*/
|
||||
void workshop_move_mark(char *filename, int markId, int newLineno);
|
||||
#endif
|
||||
|
||||
/* Tell the integration library about a new frame being added.
|
||||
* Supply a form for the toolbar, a label for the footer, and an
|
||||
* XmPulldown menu for the WorkShop menu to attach to. Top and bottom
|
||||
* are the widgets above and below the toolbar form widget, if
|
||||
* any. Call this function when you create a new window. It returns a
|
||||
* void *, a handle which you should keep and return when you delete
|
||||
* the window with workshop_delete_toolbar. The "footer" argument
|
||||
* points to a Label widget that is going to be used as a status
|
||||
* message area, and "menu" (if any) points to an Menu widget that
|
||||
* should contain a WorkShop menu. Clientdata is a pointer which is
|
||||
* only used by the editor. It will typically be a pointer to the
|
||||
* window object that the toolbar is placed in. If you have multiple
|
||||
* windows, you need to use this pointer to figure out which window
|
||||
* (and thus corresponding buffer) the user has clicked on to respond
|
||||
* to the workshop_get_positions message.
|
||||
* Each frame's clientData ("frame") should be unique.
|
||||
*/
|
||||
void *workshop_add_frame(void *frame, Widget form,
|
||||
Widget top, Widget bottom, Widget footer,
|
||||
Widget menu);
|
||||
|
||||
/* Delete a window/frame. Call this when an editor window is being deleted. */
|
||||
void workshop_delete_frame(void *handle);
|
||||
|
||||
/* Add a balloon evaluate text area. "frame" is used the same way
|
||||
* as in workshop_add_frame. This call is not part of workshop_add_frame because
|
||||
* a frame can have multiple tooltip areas (typically, an editor frame that
|
||||
* is split showing multiple buffers will have a separate tooltip area for
|
||||
* each text widget. Each such area is called a "window" (consistent with
|
||||
* XEmacs terminology). Separate these by the window argument if necessary.
|
||||
* You will need to implement workshop_get_balloon_text such that it uses
|
||||
* these two arguments to derive the file, line etc. for the tip.
|
||||
* Call the remove function if you delete this area such that the integration
|
||||
* library can update itself. You must call workshop_add_frame before you
|
||||
* call add_balloon_eval_area, and you must pass the same frame pointer.
|
||||
*/
|
||||
void workshop_add_balloon_eval_area(void *frame, void *window, Widget widget);
|
||||
void workshop_remove_balloon_eval_area(void *frame, void *window, Widget widget);
|
||||
|
||||
|
||||
/* For a given mouse position inside the balloon area (passed as x,y),
|
||||
* return the balloon text to be evaluated. There are two scenarios:
|
||||
* If the position is inside the selection, return the selection
|
||||
* string. Else, return the full line (or possibly the full line up
|
||||
* to the last semicolon (that's TBD), along with an index pointing to
|
||||
* where which character the mouse is over.
|
||||
* If we have the selection-scenario, set mouseIndex to -1 to indicate
|
||||
* that no autoexpansion should occur but that the selection should
|
||||
* be evaluated as is.
|
||||
*
|
||||
* XXX Does dbx need more information here, like the filename and line
|
||||
* number in order to determine the correct language and scope to be
|
||||
* used during evaluation?? Or should it just work like the p= button
|
||||
* (where the current scope and language is used, even if you are
|
||||
* pointing at a different file with a different scope) ?
|
||||
*/
|
||||
int workshop_get_balloon_text(Position x, Position y,
|
||||
void *frame,
|
||||
void *window,
|
||||
char **filename,
|
||||
int *line,
|
||||
char **text,
|
||||
int *mouseIndex);
|
||||
|
||||
|
||||
/* Window size and location
|
||||
* WorkShop will attempt to restore the size and location of a single
|
||||
* editor frame. For vi, this window is designated as the "reusable" one.
|
||||
* You can implement your own scheme for determining which window you
|
||||
* want to associate with WorkShop. Whenever the size and location of
|
||||
* this window is changed, call the following function to notify eserve.
|
||||
* Like workshop_invoked, this can be called before the workshop_connect()
|
||||
* call.
|
||||
*/
|
||||
void workshop_frame_moved(int new_x, int new_y, int new_w, int new_h);
|
||||
Boolean workshop_get_width_height(int *, int *);
|
||||
#if 0
|
||||
Boolean workshop_get_rows_cols(int *, int *);
|
||||
#endif
|
||||
|
||||
/* This function should be invoked when you press a hotkey
|
||||
* set up by workshop_register_hotkey. Pass the clientData
|
||||
* to it that was given to you with workshop_register_hotkey.
|
||||
*/
|
||||
void workshop_hotkey_pressed(void *frame, void *clientData);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Utility functions
|
||||
* These provide convenience functions to simplify implementing some
|
||||
* of the above functions.
|
||||
*
|
||||
*/
|
||||
|
||||
#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);
|
||||
#endif
|
||||
|
||||
|
||||
/* Minimize (iconify) the given shell */
|
||||
void workshop_minimize_shell(Widget shell);
|
||||
|
||||
/* Maximize (deiconify) the given shell */
|
||||
void workshop_maximize_shell(Widget shell);
|
||||
|
||||
/* Called by frame.cc -- editor shouldn't call this directly.
|
||||
* Perhaps we need an integrationP.h file ? */
|
||||
void workshop_perform_verb(char *verb, void *clientData);
|
||||
void workshop_send_message(char *buf);
|
||||
|
||||
|
||||
#ifdef NOHANDS_SUPPORT_FUNCTIONS
|
||||
/* The following functions are needed to run the WorkShop testsuite
|
||||
* with this editor. You don't need to implement these unless you
|
||||
* intend for your editor to be run by Workshop's testsuite.
|
||||
* getcursorrow should return the number of lines from the top of
|
||||
* the window the cursor is; similarly for getcursorcol.
|
||||
*/
|
||||
char *workshop_test_getcurrentfile();
|
||||
int workshop_test_getcursorrow();
|
||||
int workshop_test_getcursorcol();
|
||||
char *workshop_test_getcursorrowtext();
|
||||
char *workshop_test_getselectedtext();
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Struct used to set/unset the sensitivity of verbs.
|
||||
*/
|
||||
typedef struct {
|
||||
char *verb;
|
||||
Boolean sense;
|
||||
} VerbSense;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _INTEGRATION_H */
|
@ -628,10 +628,7 @@ vim_main2(void)
|
||||
*/
|
||||
if (gui.in_use)
|
||||
{
|
||||
# ifdef FEAT_SUN_WORKSHOP
|
||||
if (!usingSunWorkShop)
|
||||
# endif
|
||||
gui_wait_for_chars(50L, typebuf.tb_change_cnt);
|
||||
gui_wait_for_chars(50L, typebuf.tb_change_cnt);
|
||||
TIME_MSG("GUI delay");
|
||||
}
|
||||
#endif
|
||||
@ -983,9 +980,6 @@ common_init(mparm_T *paramp)
|
||||
*/
|
||||
early_arg_scan(paramp);
|
||||
|
||||
#ifdef FEAT_SUN_WORKSHOP
|
||||
findYourself(paramp->argv[0]);
|
||||
#endif
|
||||
#if defined(FEAT_GUI)
|
||||
/* Prepare for possibly starting GUI sometime */
|
||||
gui_prepare(¶mp->argc, paramp->argv);
|
||||
|
@ -3411,7 +3411,7 @@ same_directory(char_u *f1, char_u *f2)
|
||||
|
||||
#if defined(FEAT_SESSION) || defined(FEAT_AUTOCHDIR) \
|
||||
|| defined(MSWIN) || defined(FEAT_GUI_MAC) || defined(FEAT_GUI_GTK) \
|
||||
|| defined(FEAT_SUN_WORKSHOP) || defined(FEAT_NETBEANS_INTG) \
|
||||
|| defined(FEAT_NETBEANS_INTG) \
|
||||
|| defined(PROTO)
|
||||
/*
|
||||
* Change to a file's directory.
|
||||
|
@ -42,7 +42,7 @@ static int errorHandler(Display *, XErrorEvent *);
|
||||
/*
|
||||
* nbdebug_wait - This function can be used to delay or stop execution of vim.
|
||||
* It's normally used to delay startup while attaching a
|
||||
* debugger to a running process. Since workshop starts gvim
|
||||
* debugger to a running process. Since NetBeans starts gvim
|
||||
* from a background process this is the only way to debug
|
||||
* startup problems.
|
||||
*/
|
||||
|
@ -2273,9 +2273,7 @@ coloncmd(char *cmd, ...)
|
||||
|
||||
nbdebug((" COLONCMD %s\n", buf));
|
||||
|
||||
/* ALT_INPUT_LOCK_ON; */
|
||||
do_cmdline((char_u *)buf, NULL, NULL, DOCMD_NOWAIT | DOCMD_KEYTYPED);
|
||||
/* ALT_INPUT_LOCK_OFF; */
|
||||
|
||||
setcursor(); /* restore the cursor position */
|
||||
out_flush_cursor(TRUE, FALSE);
|
||||
|
@ -295,9 +295,6 @@ extern char *vim_SelFile(Widget toplevel, char *prompt, char *init_path, int (*s
|
||||
# ifdef FEAT_GUI_PHOTON
|
||||
# include "gui_photon.pro"
|
||||
# endif
|
||||
# ifdef FEAT_SUN_WORKSHOP
|
||||
# include "workshop.pro"
|
||||
# endif
|
||||
# endif /* FEAT_GUI */
|
||||
|
||||
# ifdef FEAT_OLE
|
||||
|
@ -1,49 +0,0 @@
|
||||
/* workshop.c */
|
||||
void workshop_init(void);
|
||||
void workshop_postinit(void);
|
||||
void ex_wsverb(exarg_T *eap);
|
||||
char *workshop_get_editor_name(void);
|
||||
char *workshop_get_editor_version(void);
|
||||
void workshop_load_file(char *filename, int line, char *frameid);
|
||||
void workshop_reload_file(char *filename, int line);
|
||||
void workshop_show_file(char *filename);
|
||||
void workshop_goto_line(char *filename, int lineno);
|
||||
void workshop_front_file(char *filename);
|
||||
void workshop_save_file(char *filename);
|
||||
void workshop_save_files(void);
|
||||
void workshop_quit(void);
|
||||
void workshop_minimize(void);
|
||||
void workshop_maximize(void);
|
||||
void workshop_add_mark_type(int idx, char *colorspec, char *sign);
|
||||
void workshop_set_mark(char *filename, int lineno, int markId, int idx);
|
||||
void workshop_change_mark_type(char *filename, int markId, int idx);
|
||||
void workshop_goto_mark(char *filename, int markId, char *message);
|
||||
void workshop_delete_mark(char *filename, int markId);
|
||||
int workshop_get_mark_lineno(char *filename, int markId);
|
||||
void workshop_moved_marks(char *filename);
|
||||
int workshop_get_font_height(void);
|
||||
void workshop_footer_message(char *message, int severity);
|
||||
void workshop_menu_begin(char *label);
|
||||
void workshop_submenu_begin(char *label);
|
||||
void workshop_submenu_end(void);
|
||||
void workshop_menu_item(char *label, char *verb, char *accelerator, char *acceleratorText, char *name, char *filepos, char *sensitive);
|
||||
void workshop_menu_end(void);
|
||||
void workshop_toolbar_begin(void);
|
||||
void workshop_toolbar_end(void);
|
||||
void workshop_toolbar_button(char *label, char *verb, char *senseVerb, char *filepos, char *help, char *sense, char *file, char *left);
|
||||
void workshop_frame_sensitivities(VerbSense *vs);
|
||||
void workshop_set_option(char *option, char *value);
|
||||
void workshop_balloon_mode(Boolean on);
|
||||
void workshop_balloon_delay(int delay);
|
||||
void workshop_show_balloon_tip(char *tip);
|
||||
void workshop_hotkeys(Boolean on);
|
||||
int workshop_get_positions(void *clientData, char **filename, int *curLine, int *curCol, int *selStartLine, int *selStartCol, int *selEndLine, int *selEndCol, int *selLength, char **selection);
|
||||
char *workshop_test_getcurrentfile(void);
|
||||
int workshop_test_getcursorrow(void);
|
||||
int workshop_test_getcursorcol(void);
|
||||
char *workshop_test_getcursorrowtext(void);
|
||||
char *workshop_test_getselectedtext(void);
|
||||
void workshop_save_sensitivity(char *filename);
|
||||
void workshop_beval_cb(BalloonEval *beval, int state);
|
||||
void findYourself(char *argv0);
|
||||
/* vim: set ft=c : */
|
5
src/ui.c
5
src/ui.c
@ -1625,10 +1625,9 @@ clip_gen_owner_exists(VimClipboard *cbd UNUSED)
|
||||
* descriptions which would otherwise overflow. The buffer is considered full
|
||||
* when only this extra space (or part of it) remains.
|
||||
*/
|
||||
#if defined(FEAT_SUN_WORKSHOP) || defined(FEAT_JOB_CHANNEL) \
|
||||
|| defined(FEAT_CLIENTSERVER)
|
||||
#if defined(FEAT_JOB_CHANNEL) || defined(FEAT_CLIENTSERVER)
|
||||
/*
|
||||
* Sun WorkShop and NetBeans stuff debugger commands into the input buffer.
|
||||
* NetBeans stuffs debugger commands into the input buffer.
|
||||
* This requires a larger buffer...
|
||||
* (Madsen) Go with this for remote input as well ...
|
||||
*/
|
||||
|
@ -598,11 +598,7 @@ static char *(features[]) =
|
||||
#else
|
||||
"-statusline",
|
||||
#endif
|
||||
#ifdef FEAT_SUN_WORKSHOP
|
||||
"+sun_workshop",
|
||||
#else
|
||||
"-sun_workshop",
|
||||
#endif
|
||||
#ifdef FEAT_SYN_HL
|
||||
"+syntax",
|
||||
#else
|
||||
@ -795,6 +791,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
763,
|
||||
/**/
|
||||
762,
|
||||
/**/
|
||||
|
12
src/vim.h
12
src/vim.h
@ -288,10 +288,6 @@
|
||||
# include "os_qnx.h"
|
||||
#endif
|
||||
|
||||
#ifdef FEAT_SUN_WORKSHOP
|
||||
# include "workshop.h"
|
||||
#endif
|
||||
|
||||
#ifdef X_LOCALE
|
||||
# include <X11/Xlocale.h>
|
||||
#else
|
||||
@ -2236,14 +2232,6 @@ typedef enum {
|
||||
# define vim_realloc(ptr, size) realloc((ptr), (size))
|
||||
#endif
|
||||
|
||||
/*
|
||||
* The following macros stop display/event loop nesting at the wrong time.
|
||||
*/
|
||||
#ifdef ALT_X_INPUT
|
||||
# define ALT_INPUT_LOCK_OFF suppress_alternate_input = FALSE
|
||||
# define ALT_INPUT_LOCK_ON suppress_alternate_input = TRUE
|
||||
#endif
|
||||
|
||||
#ifdef FEAT_MBYTE
|
||||
/*
|
||||
* Return byte length of character that starts with byte "b".
|
||||
|
1830
src/workshop.c
1830
src/workshop.c
File diff suppressed because it is too large
Load Diff
@ -1,28 +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.
|
||||
*/
|
||||
|
||||
#if !defined(WORKSHOP_H) && defined(FEAT_SUN_WORKSHOP)
|
||||
#define WORKSHOP_H
|
||||
|
||||
#include <X11/Intrinsic.h>
|
||||
#include <Xm/Xm.h>
|
||||
|
||||
#include "integration.h"
|
||||
|
||||
#ifdef WSDEBUG
|
||||
# include "wsdebug.h"
|
||||
#else
|
||||
# ifndef ASSERT
|
||||
# define ASSERT(c)
|
||||
# endif
|
||||
#endif
|
||||
|
||||
extern int usingSunWorkShop; /* set if -ws flag is used */
|
||||
|
||||
#endif
|
184
src/wsdebug.c
184
src/wsdebug.c
@ -1,184 +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.
|
||||
*/
|
||||
|
||||
/*
|
||||
* WorkShop Debugging Tools. What are these tools and why are they important?
|
||||
* There are two main tools here. The first tool is a tool for delaying or
|
||||
* stopping gvim during startup. The second tool is a protocol log tool.
|
||||
*
|
||||
* The startup delay tool is called wsdebug_wait(). This is very important for
|
||||
* debugging startup problems because gvim will be started automatically from
|
||||
* workshop and cannot be run directly from a debugger. The only way to debug
|
||||
* a gvim started by workshop is by attaching a debugger to it. Without this
|
||||
* tool all starup code will have completed before you can get the pid and
|
||||
* attach.
|
||||
*
|
||||
* The second tool is a protocol log tool. The workshop editor server and gvim
|
||||
* pass information back and forth during a workshop session. Sometimes it is
|
||||
* very important to peruse this conversation in order to understand what is
|
||||
* happening. The wsdebug_log_init() call sets up this protocol log tool and
|
||||
* wsdebug() and wstrace() calls output the information to the log.
|
||||
*
|
||||
* This code must have WSDEBUG defined for it to be compiled into vim/gvim.
|
||||
*/
|
||||
|
||||
#ifdef WSDEBUG
|
||||
|
||||
#include "vim.h"
|
||||
|
||||
FILE *ws_debug = NULL;
|
||||
u_int ws_dlevel = 0; /* ws_debug verbosity level */
|
||||
|
||||
void wsdebug(char *, ...);
|
||||
void wstrace(char *, ...);
|
||||
|
||||
static int lookup(char *);
|
||||
#ifdef USE_WS_ERRORHANDLER
|
||||
static int errorHandler(Display *, XErrorEvent *);
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* wsdebug_wait - This function can be used to delay or stop execution of vim.
|
||||
* It's normally used to delay startup while attaching a
|
||||
* debugger to a running process. Since workshop starts gvim
|
||||
* from a background process this is the only way to debug
|
||||
* startup problems.
|
||||
*/
|
||||
|
||||
void wsdebug_wait(
|
||||
u_int wait_flags, /* tells what to do */
|
||||
char *wait_var, /* wait environment variable */
|
||||
u_int wait_secs) /* how many seconds to wait */
|
||||
{
|
||||
|
||||
init_homedir(); /* not inited yet */
|
||||
#ifdef USE_WDDUMP
|
||||
WDDump(0, 0, 0);
|
||||
#endif
|
||||
|
||||
/* for debugging purposes only */
|
||||
if (wait_flags & WT_ENV && wait_var && getenv(wait_var) != NULL) {
|
||||
sleep(atoi(getenv(wait_var)));
|
||||
} else if (wait_flags & WT_WAIT && lookup("~/.gvimwait")) {
|
||||
sleep(wait_secs > 0 && wait_secs < 120 ? wait_secs : 20);
|
||||
} else if (wait_flags & WT_STOP && lookup("~/.gvimstop")) {
|
||||
int w = 1;
|
||||
while (w) {
|
||||
;
|
||||
}
|
||||
}
|
||||
} /* end wsdebug_wait */
|
||||
|
||||
|
||||
void
|
||||
wsdebug_log_init(
|
||||
char *log_var, /* env var with log file */
|
||||
char *level_var) /* env var with ws_debug level */
|
||||
{
|
||||
char *file; /* possible ws_debug output file */
|
||||
char *cp; /* ws_dlevel pointer */
|
||||
|
||||
if (log_var && (file = getenv(log_var)) != NULL)
|
||||
{
|
||||
char buf[BUFSIZ];
|
||||
|
||||
vim_snprintf(buf, sizeof(buf), "date > %s", file);
|
||||
system(buf);
|
||||
ws_debug = fopen(file, "a");
|
||||
if (level_var && (cp = getenv(level_var)) != NULL) {
|
||||
ws_dlevel = strtoul(cp, NULL, 0);
|
||||
} else {
|
||||
ws_dlevel = WS_TRACE; /* default level */
|
||||
}
|
||||
#ifdef USE_WS_ERRORHANDLER
|
||||
XSetErrorHandler(errorHandler);
|
||||
#endif
|
||||
}
|
||||
|
||||
} /* end wsdebug_log_init */
|
||||
|
||||
|
||||
|
||||
|
||||
void
|
||||
wstrace(
|
||||
char *fmt,
|
||||
...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
if (ws_debug!= NULL && (ws_dlevel & (WS_TRACE | WS_TRACE_VERBOSE))) {
|
||||
va_start(ap, fmt);
|
||||
vfprintf(ws_debug, fmt, ap);
|
||||
va_end(ap);
|
||||
fflush(ws_debug);
|
||||
}
|
||||
|
||||
} /* end wstrace */
|
||||
|
||||
|
||||
void
|
||||
wsdebug(
|
||||
char *fmt,
|
||||
...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
if (ws_debug != NULL) {
|
||||
va_start(ap, fmt);
|
||||
vfprintf(ws_debug, fmt, ap);
|
||||
va_end(ap);
|
||||
fflush(ws_debug);
|
||||
}
|
||||
|
||||
} /* end wsdebug */
|
||||
|
||||
|
||||
static int
|
||||
lookup(
|
||||
char *file)
|
||||
{
|
||||
char buf[BUFSIZ];
|
||||
|
||||
expand_env((char_u *) file, (char_u *) buf, BUFSIZ);
|
||||
return (access(buf, F_OK) == 0);
|
||||
|
||||
} /* end lookup */
|
||||
|
||||
#ifdef USE_WS_ERRORHANDLER
|
||||
static int
|
||||
errorHandler(
|
||||
Display *dpy,
|
||||
XErrorEvent *err)
|
||||
{
|
||||
char msg[256];
|
||||
char buf[256];
|
||||
|
||||
XGetErrorText(dpy, err->error_code, msg, sizeof(msg));
|
||||
wsdebug("\n\nWSDEBUG Vim: X Error of failed request: %s\n", msg);
|
||||
|
||||
sprintf(buf, "%d", err->request_code);
|
||||
XGetErrorDatabaseText(dpy,
|
||||
"XRequest", buf, "Unknown", msg, sizeof(msg));
|
||||
wsdebug("\tMajor opcode of failed request: %d (%s)\n",
|
||||
err->request_code, msg);
|
||||
if (err->request_code > 128) {
|
||||
wsdebug("\tMinor opcode of failed request: %d\n",
|
||||
err->minor_code);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#endif /* WSDEBUG */
|
@ -1,81 +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.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef WSDEBUG_H
|
||||
#define WSDEBUG_H
|
||||
|
||||
#ifdef WSDEBUG
|
||||
|
||||
#ifndef ASSERT
|
||||
#define ASSERT(c) \
|
||||
if (!(c)) { \
|
||||
fprintf(stderr, "Assertion failed: line %d, file %s\n", \
|
||||
__LINE__, __FILE__); \
|
||||
fflush(stderr); \
|
||||
abort(); \
|
||||
}
|
||||
#endif
|
||||
|
||||
#define WS_TRACE 0x00000001
|
||||
#define WS_TRACE_VERBOSE 0x00000002
|
||||
#define WS_TRACE_COLONCMD 0x00000004
|
||||
#define WS_DEBUG_ALL 0xffffffff
|
||||
|
||||
#define WSDLEVEL(flags) (ws_debug != NULL && (ws_dlevel & (flags)))
|
||||
|
||||
#ifdef USE_WDDUMP
|
||||
#include "wdump.h"
|
||||
#endif
|
||||
|
||||
#define WSDEBUG_TRACE 1
|
||||
//#define WSDEBUG_SENSE 2
|
||||
|
||||
typedef enum {
|
||||
WT_ENV = 1, /* look for env var if set */
|
||||
WT_WAIT, /* look for ~/.gvimwait if set */
|
||||
WT_STOP /* look for ~/.gvimstop if set */
|
||||
} WtWait;
|
||||
|
||||
|
||||
void wsdebug(char *, ...);
|
||||
void wstrace(char *, ...);
|
||||
|
||||
|
||||
extern FILE *ws_debug;
|
||||
extern u_int ws_dlevel; /* ws_debug verbosity level */
|
||||
|
||||
# else /* not WSDEBUG */
|
||||
|
||||
#ifndef ASSERT
|
||||
# define ASSERT(c)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* The following 2 stubs are needed because a macro cannot be used because of
|
||||
* the variable number of arguments.
|
||||
*/
|
||||
|
||||
void
|
||||
wsdebug(
|
||||
char *fmt,
|
||||
...)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
wstrace(
|
||||
char *fmt,
|
||||
...)
|
||||
{
|
||||
}
|
||||
|
||||
#endif /* WSDEBUG */
|
||||
#endif /* WSDEBUG_H */
|
Loading…
x
Reference in New Issue
Block a user