summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2016-02-27 18:13:23 +0100
committerBram Moolenaar <Bram@vim.org>2016-02-27 18:13:23 +0100
commit85b11769ab507c7df93f319fd964fa579701b76b (patch)
treeb4fdc6eb96c888e12159a007610a3d2cbab3f31c
parent4d1961783fdcb133b6b181acb7166b9f1872bf09 (diff)
downloadvim-git-85b11769ab507c7df93f319fd964fa579701b76b.tar.gz
patch 7.4.1433v7.4.1433
Problem: The Sniff interface is no longer useful, the tool has not been available for may years. Solution: Delete the Sniff interface and related code.
-rw-r--r--runtime/doc/if_sniff.txt90
-rw-r--r--src/Make_mvc.mak25
-rw-r--r--src/Make_vms.mms26
-rw-r--r--src/Makefile20
-rwxr-xr-xsrc/auto/configure24
-rw-r--r--src/charset.c3
-rw-r--r--src/config.h.in3
-rw-r--r--src/config.mk.in3
-rw-r--r--src/configure.in13
-rw-r--r--src/edit.c6
-rw-r--r--src/eval.c3
-rw-r--r--src/ex_cmds.h3
-rw-r--r--src/ex_cmds2.c7
-rw-r--r--src/ex_docmd.c9
-rw-r--r--src/ex_getln.c3
-rw-r--r--src/feature.h1
-rw-r--r--src/gui_gtk_x11.c36
-rw-r--r--src/gui_w32.c19
-rw-r--r--src/gui_x11.c36
-rw-r--r--src/if_sniff.c1201
-rw-r--r--src/if_sniff.h16
-rw-r--r--src/keymap.h4
-rw-r--r--src/normal.c18
-rw-r--r--src/os_unix.c41
-rw-r--r--src/os_win32.c21
-rw-r--r--src/structs.h4
-rw-r--r--src/term.c10
-rw-r--r--src/ui.c16
-rw-r--r--src/version.c7
-rw-r--r--src/vim.h4
30 files changed, 26 insertions, 1646 deletions
diff --git a/runtime/doc/if_sniff.txt b/runtime/doc/if_sniff.txt
index a3d52085f..6feaa53da 100644
--- a/runtime/doc/if_sniff.txt
+++ b/runtime/doc/if_sniff.txt
@@ -1,95 +1,11 @@
-*if_sniff.txt* For Vim version 7.4. Last change: 2005 Mar 29
+*if_sniff.txt* For Vim version 7.4. Last change: 2016 Feb 27
VIM REFERENCE MANUAL
by Anton Leherbauer (toni@takefive.co.at)
-SNiFF+ and Vim *sniff*
-
-1. Introduction |sniff-intro|
-2. Commands |sniff-commands|
-3. Compiling Vim with SNiFF+ interface |sniff-compiling|
-
-{Vi does not have any of these commands} *E275* *E274* *E276* *E278* *E279*
-
-The SNiFF+ interface only works, when Vim was compiled with the |+sniff|
-feature.
-
-==============================================================================
-1. Introduction *sniff-intro*
-
-The following features for the use with SNiFF+ are available:
-
- * Vim can be used for all editing requests
- * SNiFF+ recognizes and updates all browsers when a file is saved in Vim
- * SNiFF+ commands can be issued directly from Vim
-
-How to use Vim with SNiFF+
- 1. Make sure SNiFF+ is running.
- 2. In the Editor view of the Preferences dialog set the Field named
- 'External Editor' to 'Emacs/Vim'.
- 4. Start Vim
- 5. Connect to SNiFF+ (:sniff connect)
-
-Once a connection is established, SNiFF+ uses Vim for all requests to show or
-edit source code. On the other hand, you can send queries to SNiFF+ with the
-:sniff command.
-
-==============================================================================
-2. Commands *sniff-commands*
-
- *:sniff* *:sni*
-:sni[ff] request [symbol] Send request to sniff with optional symbol.
- {not in Vi}
-:sni[ff] Display all possible requests and the connection
- status
-
-Most requests require a symbol (identifier) as parameter. If it is omitted,
-Vim will use the current word under the cursor.
-The available requests are listed below:
-
-request mapping description
--------------------------------------------------------------------------------
-connect sc Establish connection with SNiFF+.
- Make sure SNiFF+ is prepared for this in the
- Preferences
-disconnect sq Disconnect from SNiFF+. You can reconnect any
- time with :sniff connect (or 'sc')
-toggle st Toggle between implementation
- and definition file
-find-symbol sf Load the symbol into a Symbol Browser
-browse-class sb Loads the class into a Class Browser
-superclass ss Edit superclass of symbol
-overridden so Edit overridden method of symbol
-retrieve-file srf Retrieve symbol in current file
-retrieve-project srp Retrieve symbol in current project
-retrieve-all-projects srP Retrieve symbol in all projects
-retrieve-next sR Retrieve symbol using current Retriever
- settings
-goto-symbol sg Goto definition or implementation of symbol
-hierarchy sh Load symbol into the Hierarchy Browser
-restr-hier sH same as above but show only related classes
-xref-to sxt Start a refers-to query on symbol and
- load the results into the Cross Referencer
-xref-by sxb Start a referred-by query on symbol
-xref-has sxh Start a refers-to components query on symbol
-xref-used-by sxu Start a referred-by as component query on
- symbol
-show-docu sd Show documentation of symbol
-gen-docu sD Generate documentation of symbol
-
-The mappings are defined in a file 'sniff.vim', which is part of every SNiFF+
-product ($SNIFF_DIR/config/sniff.vim). This file is sourced whenever Vim
-connects to SNiFF+.
-
-==============================================================================
-3. Compiling Vim with SNiFF+ interface *sniff-compiling*
-
-To compile Vim with SNiFF+ support, you need two source files of the extra
-archive: if_sniff.c and if_sniff.h.
-On Unix: Edit the Makefile and uncomment the line "--enable-sniff". Or run
-configure manually with this argument.
-On NT: Specify SNIFF=yes with your make command.
+The SNiFF+ support was removed at patch 7.4.1433. If you want to check it out
+sync to before that.
vim:tw=78:ts=8:ft=help:norl:
diff --git a/src/Make_mvc.mak b/src/Make_mvc.mak
index 0843d25c4..4378e0077 100644
--- a/src/Make_mvc.mak
+++ b/src/Make_mvc.mak
@@ -82,8 +82,6 @@
# TCL_VER_LONG=[Tcl version, eg 8.3] (default is 8.3)
# You must set TCL_VER_LONG when you set TCL_VER.
#
-# SNiFF+ interface: SNIFF=yes
-#
# Cscope support: CSCOPE=yes
#
# Iconv library support (always dynamically loaded):
@@ -269,16 +267,6 @@ WP64CHECK = /Wp64
CTAGS = ctags
!endif
-!if "$(SNIFF)" == "yes"
-# SNIFF - Include support for SNiFF+.
-SNIFF_INCL = if_sniff.h
-SNIFF_OBJ = $(OBJDIR)/if_sniff.obj
-SNIFF_LIB = shell32.lib
-SNIFF_DEFS = -DFEAT_SNIFF
-# The SNiFF integration needs multithreaded libraries!
-MULTITHREADED = yes
-!endif
-
!ifndef CSCOPE
CSCOPE = yes
!endif
@@ -380,7 +368,7 @@ WINVER = 0x0501
#VIMRUNTIMEDIR = somewhere
CFLAGS = -c /W3 /nologo $(CVARS) -I. -Iproto -DHAVE_PATHDEF -DWIN32 \
- $(SNIFF_DEFS) $(CSCOPE_DEFS) $(NETBEANS_DEFS) $(CHANNEL_DEFS) \
+ $(CSCOPE_DEFS) $(NETBEANS_DEFS) $(CHANNEL_DEFS) \
$(NBDEBUG_DEFS) $(XPM_DEFS) \
$(DEFINES) -DWINVER=$(WINVER) -D_WIN32_WINNT=$(WINVER) \
/Fo$(OUTDIR)/
@@ -528,7 +516,7 @@ CFLAGS = $(CFLAGS) /Zl /MTd
!endif # DEBUG
INCL = vim.h os_win32.h ascii.h feature.h globals.h keymap.h macros.h \
- proto.h option.h structs.h term.h $(SNIFF_INCL) $(CSCOPE_INCL) \
+ proto.h option.h structs.h term.h $(CSCOPE_INCL) \
$(NBDEBUG_INCL)
OBJ = \
@@ -997,7 +985,7 @@ conflags = $(conflags) /map /mapinfo:lines
!ENDIF
LINKARGS1 = $(linkdebug) $(conflags)
-LINKARGS2 = $(CON_LIB) $(GUI_LIB) $(NODEFAULTLIB) $(LIBC) $(OLE_LIB) user32.lib $(SNIFF_LIB) \
+LINKARGS2 = $(CON_LIB) $(GUI_LIB) $(NODEFAULTLIB) $(LIBC) $(OLE_LIB) user32.lib \
$(LUA_LIB) $(MZSCHEME_LIB) $(PERL_LIB) $(PYTHON_LIB) $(PYTHON3_LIB) $(RUBY_LIB) \
$(TCL_LIB) $(NETBEANS_LIB) $(XPM_LIB) $(LINK_PDB)
@@ -1020,12 +1008,12 @@ all: $(VIM).exe \
$(VIM).exe: $(OUTDIR) $(OBJ) $(GUI_OBJ) $(OLE_OBJ) $(OLE_IDL) $(MZSCHEME_OBJ) \
$(LUA_OBJ) $(PERL_OBJ) $(PYTHON_OBJ) $(PYTHON3_OBJ) $(RUBY_OBJ) $(TCL_OBJ) \
- $(SNIFF_OBJ) $(CSCOPE_OBJ) $(NETBEANS_OBJ) $(CHANNEL_OBJ) $(XPM_OBJ) \
+ $(CSCOPE_OBJ) $(NETBEANS_OBJ) $(CHANNEL_OBJ) $(XPM_OBJ) \
version.c version.h
$(CC) $(CFLAGS) version.c
$(link) $(LINKARGS1) -out:$(VIM).exe $(OBJ) $(GUI_OBJ) $(OLE_OBJ) \
$(LUA_OBJ) $(MZSCHEME_OBJ) $(PERL_OBJ) $(PYTHON_OBJ) $(PYTHON3_OBJ) $(RUBY_OBJ) \
- $(TCL_OBJ) $(SNIFF_OBJ) $(CSCOPE_OBJ) $(NETBEANS_OBJ) $(CHANNEL_OBJ) \
+ $(TCL_OBJ) $(CSCOPE_OBJ) $(NETBEANS_OBJ) $(CHANNEL_OBJ) \
$(XPM_OBJ) $(OUTDIR)\version.obj $(LINKARGS2)
if exist $(VIM).exe.manifest mt.exe -nologo -manifest $(VIM).exe.manifest -updateresource:$(VIM).exe;1
@@ -1212,9 +1200,6 @@ $(OUTDIR)/if_ole.obj: $(OUTDIR) if_ole.cpp $(INCL) if_ole.h
$(OUTDIR)/if_ruby.obj: $(OUTDIR) if_ruby.c $(INCL)
$(CC) $(CFLAGS) $(RUBY_INC) if_ruby.c
-$(OUTDIR)/if_sniff.obj: $(OUTDIR) if_sniff.c $(INCL)
- $(CC) $(CFLAGS) if_sniff.c
-
$(OUTDIR)/if_tcl.obj: $(OUTDIR) if_tcl.c $(INCL)
$(CC) $(CFLAGS) $(TCL_INC) if_tcl.c
diff --git a/src/Make_vms.mms b/src/Make_vms.mms
index da535b90f..35167cb78 100644
--- a/src/Make_vms.mms
+++ b/src/Make_vms.mms
@@ -2,7 +2,7 @@
# Makefile for Vim on OpenVMS
#
# Maintainer: Zoltan Arpadffy <arpadffy@polarhome.com>
-# Last change: 2016 Jan 22
+# Last change: 2016 Feb 27
#
# This has script been tested on VMS 6.2 to 8.2 on DEC Alpha, VAX and IA64
# with MMS and MMK
@@ -66,7 +66,6 @@ CCVER = YES
# VIM_PERL = YES
# VIM_PYTHON = YES
# VIM_RUBY = YES
-# VIM_SNIFF = YES
# X Input Method. For entering special languages like chinese and
# Japanese. Please define just one: VIM_XIM or VIM_HANGULIN
@@ -228,15 +227,6 @@ TCL_LIB = ,OS_VMS_TCL.OPT/OPT
TCL_INC = ,dka0:[tcl80.generic]
.ENDIF
-.IFDEF VIM_SNIFF
-# SNIFF related setup.
-SNIFF_DEF = ,"FEAT_SNIFF"
-SNIFF_SRC = if_sniff.c
-SNIFF_OBJ = if_sniff.obj
-SNIFF_LIB =
-SNIFF_INC =
-.ENDIF
-
.IFDEF VIM_RUBY
# RUBY related setup.
RUBY_DEF = ,"FEAT_RUBY"
@@ -293,7 +283,7 @@ VIMHOST = "''F$TRNLNM("SYS$NODE")'''F$TRNLNM("UCX$INET_HOST")'.''F$TRNLNM("UCX$I
.SUFFIXES : .obj .c
ALL_CFLAGS = /def=($(MODEL_DEF)$(DEFS)$(DEBUG_DEF)$(PERL_DEF)$(PYTHON_DEF) -
- $(TCL_DEF)$(SNIFF_DEF)$(RUBY_DEF)$(XIM_DEF)$(HANGULIN_DEF)$(TAG_DEF)$(MZSCH_DEF)$(ICONV_DEF)) -
+ $(TCL_DEF)$(RUBY_DEF)$(XIM_DEF)$(HANGULIN_DEF)$(TAG_DEF)$(MZSCH_DEF)$(ICONV_DEF)) -
$(CFLAGS)$(GUI_FLAG) -
/include=($(C_INC)$(GUI_INC_DIR)$(GUI_INC)$(PERL_INC)$(PYTHON_INC)$(TCL_INC))
@@ -302,12 +292,12 @@ ALL_CFLAGS = /def=($(MODEL_DEF)$(DEFS)$(DEBUG_DEF)$(PERL_DEF)$(PYTHON_DEF) -
# as $(GUI_INC) - replaced with $(GUI_INC_VER)
# Otherwise should not be any other difference.
ALL_CFLAGS_VER = /def=($(MODEL_DEF)$(DEFS)$(DEBUG_DEF)$(PERL_DEF)$(PYTHON_DEF) -
- $(TCL_DEF)$(SNIFF_DEF)$(RUBY_DEF)$(XIM_DEF)$(HANGULIN_DEF)$(TAG_DEF)$(MZSCH_DEF)$(ICONV_DEF)) -
+ $(TCL_DEF)$(RUBY_DEF)$(XIM_DEF)$(HANGULIN_DEF)$(TAG_DEF)$(MZSCH_DEF)$(ICONV_DEF)) -
$(CFLAGS)$(GUI_FLAG) -
/include=($(C_INC)$(GUI_INC_DIR)$(GUI_INC_VER)$(PERL_INC)$(PYTHON_INC)$(TCL_INC))
ALL_LIBS = $(LIBS) $(GUI_LIB_DIR) $(GUI_LIB) \
- $(PERL_LIB) $(PYTHON_LIB) $(TCL_LIB) $(SNIFF_LIB) $(RUBY_LIB)
+ $(PERL_LIB) $(PYTHON_LIB) $(TCL_LIB) $(RUBY_LIB)
SRC = blowfish.c buffer.c charset.c crypt.c, crypt_zip.c diff.c digraph.c edit.c eval.c ex_cmds.c ex_cmds2.c \
ex_docmd.c ex_eval.c ex_getln.c if_xcmdsrv.c fileio.c fold.c getchar.c \
@@ -315,7 +305,7 @@ SRC = blowfish.c buffer.c charset.c crypt.c, crypt_zip.c diff.c digraph.c edit.c
misc2.c move.c normal.c ops.c option.c popupmnu.c quickfix.c regexp.c search.c sha256.c\
spell.c syntax.c tag.c term.c termlib.c ui.c undo.c version.c screen.c \
window.c os_unix.c os_vms.c pathdef.c \
- $(GUI_SRC) $(PERL_SRC) $(PYTHON_SRC) $(TCL_SRC) $(SNIFF_SRC) \
+ $(GUI_SRC) $(PERL_SRC) $(PYTHON_SRC) $(TCL_SRC) \
$(RUBY_SRC) $(HANGULIN_SRC) $(MZSCH_SRC)
OBJ = blowfish.obj buffer.obj charset.obj crypt.obj, crypt_zip.obj diff.obj digraph.obj edit.obj eval.obj \
@@ -326,7 +316,7 @@ OBJ = blowfish.obj buffer.obj charset.obj crypt.obj, crypt_zip.obj diff.obj digr
regexp.obj search.obj sha256.obj spell.obj syntax.obj tag.obj term.obj termlib.obj \
ui.obj undo.obj screen.obj version.obj window.obj os_unix.obj \
os_vms.obj pathdef.obj if_mzsch.obj\
- $(GUI_OBJ) $(PERL_OBJ) $(PYTHON_OBJ) $(TCL_OBJ) $(SNIFF_OBJ) \
+ $(GUI_OBJ) $(PERL_OBJ) $(PYTHON_OBJ) $(TCL_OBJ) \
$(RUBY_OBJ) $(HANGULIN_OBJ) $(MZSCH_OBJ)
# Default target is making the executable
@@ -778,10 +768,6 @@ if_ruby.obj : if_ruby.c vim.h [.auto]config.h feature.h os_unix.h \
ascii.h keymap.h term.h macros.h structs.h regexp.h \
gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
globals.h farsi.h arabic.h version.h
-if_sniff.obj : if_sniff.c vim.h [.auto]config.h feature.h os_unix.h \
- ascii.h keymap.h term.h macros.h structs.h regexp.h \
- gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h os_unixx.h
gui_beval.obj : gui_beval.c vim.h [.auto]config.h feature.h os_unix.h \
ascii.h keymap.h term.h macros.h structs.h regexp.h \
gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
diff --git a/src/Makefile b/src/Makefile
index 1326cf06e..f460a6158 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -466,9 +466,6 @@ CClink = $(CC)
# Uncomment this when you do not want inter process communication.
#CONF_OPT_CHANNEL = --disable-channel
-# SNIFF - Include support for SNiFF+.
-#CONF_OPT_SNIFF = --enable-sniff
-
# MULTIBYTE - To edit multi-byte characters.
# Uncomment this when you want to edit a multibyte language.
# It's automatically enabled with normal features, GTK or IME support.
@@ -1391,7 +1388,7 @@ OSDEF_CFLAGS = $(PRE_DEFS) $(POST_DEFS)
LINT_CFLAGS = -DLINT -I. $(PRE_DEFS) $(POST_DEFS) $(RUBY_CFLAGS) $(LUA_CFLAGS) $(PERL_CFLAGS) $(PYTHON_CFLAGS) $(PYTHON3_CFLAGS) $(TCL_CFLAGS) -Dinline= -D__extension__= -Dalloca=alloca
-LINT_EXTRA = -DUSE_SNIFF -DHANGUL_INPUT -D"__attribute__(x)="
+LINT_EXTRA = -DHANGUL_INPUT -D"__attribute__(x)="
DEPEND_CFLAGS = -DPROTO -DDEPEND -DFEAT_GUI $(LINT_CFLAGS)
@@ -1532,14 +1529,13 @@ SRC = $(BASIC_SRC) \
$(PYTHON_SRC) $(PYTHON3_SRC) \
$(TCL_SRC) \
$(RUBY_SRC) \
- $(SNIFF_SRC) \
$(WORKSHOP_SRC) \
$(WSDEBUG_SRC)
TAGS_SRC = *.c *.cpp if_perl.xs
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 if_sniff.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 \
$(GRESOURCE_SRC)
@@ -1561,7 +1557,7 @@ ALL_SRC = $(BASIC_SRC) $(ALL_GUI_SRC) $(UNITTEST_SRC) $(EXTRA_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) \
- $(SNIFF_SRC) $(WORKSHOP_SRC) $(WSDEBUG_SRC) \
+ $(WORKSHOP_SRC) $(WSDEBUG_SRC) \
$(NETBEANS_SRC) $(CHANNEL_SRC)
#LINT_SRC = $(SRC)
#LINT_SRC = $(ALL_SRC)
@@ -1611,7 +1607,6 @@ OBJ_COMMON = \
objects/sha256.o \
objects/spell.o \
objects/syntax.o \
- $(SNIFF_OBJ) \
objects/tag.o \
objects/term.o \
objects/ui.o \
@@ -1750,7 +1745,7 @@ config auto/config.mk: auto/configure config.mk.in config.h.in
$(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_SNIFF) $(CONF_OPT_FEAT) $(CONF_TERM_LIB) \
+ $(CONF_OPT_FEAT) $(CONF_TERM_LIB) \
$(CONF_OPT_COMPBY) $(CONF_OPT_ACL) $(CONF_OPT_NETBEANS) \
$(CONF_OPT_CHANNEL) \
$(CONF_ARGS) $(CONF_OPT_MZSCHEME) $(CONF_OPT_PLTHOME) \
@@ -2815,9 +2810,6 @@ objects/if_python3.o: if_python3.c if_py_both.h
objects/if_ruby.o: if_ruby.c
$(CCC) $(RUBY_CFLAGS) -o $@ if_ruby.c
-objects/if_sniff.o: if_sniff.c
- $(CCC) -o $@ if_sniff.c
-
objects/if_tcl.o: if_tcl.c
$(CCC) $(TCL_CFLAGS) -o $@ if_tcl.c
@@ -3364,10 +3356,6 @@ objects/if_ruby.o: if_ruby.c auto/config.h vim.h feature.h os_unix.h auto/osdef.
ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h proto.h globals.h \
farsi.h arabic.h version.h
-objects/if_sniff.o: if_sniff.c vim.h auto/config.h feature.h os_unix.h \
- auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
- regexp.h gui.h gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h os_unixx.h
objects/gui_beval.o: gui_beval.c vim.h auto/config.h feature.h os_unix.h \
auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
regexp.h gui.h gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h proto.h \
diff --git a/src/auto/configure b/src/auto/configure
index a528ccbef..861fe4d94 100755
--- a/src/auto/configure
+++ b/src/auto/configure
@@ -653,8 +653,6 @@ X_PRE_LIBS
X_CFLAGS
XMKMF
xmkmfpath
-SNIFF_OBJ
-SNIFF_SRC
CHANNEL_OBJ
CHANNEL_SRC
NETBEANS_OBJ
@@ -812,7 +810,6 @@ enable_cscope
enable_workshop
enable_netbeans
enable_channel
-enable_sniff
enable_multibyte
enable_hangulinput
enable_xim
@@ -1477,7 +1474,6 @@ Optional Features:
--enable-workshop Include Sun Visual Workshop support.
--disable-netbeans Disable NetBeans integration support.
--disable-channel Disable process communication support.
- --enable-sniff Include Sniff interface.
--enable-multibyte Include multibyte editing support.
--enable-hangulinput Include Hangul input support.
--enable-xim Include XIM input support.
@@ -7439,26 +7435,6 @@ if test "$enable_channel" = "yes"; then
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking --enable-sniff argument" >&5
-$as_echo_n "checking --enable-sniff argument... " >&6; }
-# Check whether --enable-sniff was given.
-if test "${enable_sniff+set}" = set; then :
- enableval=$enable_sniff;
-else
- enable_sniff="no"
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_sniff" >&5
-$as_echo "$enable_sniff" >&6; }
-if test "$enable_sniff" = "yes"; then
- $as_echo "#define FEAT_SNIFF 1" >>confdefs.h
-
- SNIFF_SRC="if_sniff.c"
-
- SNIFF_OBJ="objects/if_sniff.o"
-
-fi
-
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking --enable-multibyte argument" >&5
$as_echo_n "checking --enable-multibyte argument... " >&6; }
# Check whether --enable-multibyte was given.
diff --git a/src/charset.c b/src/charset.c
index 2414b2a40..ad3f8bcfd 100644
--- a/src/charset.c
+++ b/src/charset.c
@@ -1761,8 +1761,7 @@ skiptowhite(char_u *p)
return p;
}
-#if defined(FEAT_LISTCMDS) || defined(FEAT_SIGNS) || defined(FEAT_SNIFF) \
- || defined(PROTO)
+#if defined(FEAT_LISTCMDS) || defined(FEAT_SIGNS) || defined(PROTO)
/*
* skiptowhite_esc: Like skiptowhite(), but also skip escaped chars
*/
diff --git a/src/config.h.in b/src/config.h.in
index fd45c7332..dc0e9b2ad 100644
--- a/src/config.h.in
+++ b/src/config.h.in
@@ -362,9 +362,6 @@
/* Define for linking via dlopen() or LoadLibrary() */
#undef DYNAMIC_TCL
-/* Define if you want to include the Sniff interface. */
-#undef FEAT_SNIFF
-
/* Define if you want to add support for ACL */
#undef HAVE_POSIX_ACL
#undef HAVE_SOLARIS_ZFS_ACL
diff --git a/src/config.mk.in b/src/config.mk.in
index b514f2bc2..7c0726c29 100644
--- a/src/config.mk.in
+++ b/src/config.mk.in
@@ -99,9 +99,6 @@ RUBY_PRO = @RUBY_PRO@
RUBY_CFLAGS = @RUBY_CFLAGS@
RUBY_LIBS = @RUBY_LIBS@
-SNIFF_SRC = @SNIFF_SRC@
-SNIFF_OBJ = @SNIFF_OBJ@
-
AWK = @AWK@
STRIP = @STRIP@
diff --git a/src/configure.in b/src/configure.in
index acbccdea3..fbfa37fe6 100644
--- a/src/configure.in
+++ b/src/configure.in
@@ -2021,19 +2021,6 @@ if test "$enable_channel" = "yes"; then
AC_SUBST(CHANNEL_OBJ)
fi
-AC_MSG_CHECKING(--enable-sniff argument)
-AC_ARG_ENABLE(sniff,
- [ --enable-sniff Include Sniff interface.], ,
- [enable_sniff="no"])
-AC_MSG_RESULT($enable_sniff)
-if test "$enable_sniff" = "yes"; then
- AC_DEFINE(FEAT_SNIFF)
- SNIFF_SRC="if_sniff.c"
- AC_SUBST(SNIFF_SRC)
- SNIFF_OBJ="objects/if_sniff.o"
- AC_SUBST(SNIFF_OBJ)
-fi
-
AC_MSG_CHECKING(--enable-multibyte argument)
AC_ARG_ENABLE(multibyte,
[ --enable-multibyte Include multibyte editing support.], ,
diff --git a/src/edit.c b/src/edit.c
index 60b652337..626d3272c 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -1052,12 +1052,6 @@ doESCkey:
case K_SELECT: /* end of Select mode mapping - ignore */
break;
-#ifdef FEAT_SNIFF
- case K_SNIFF: /* Sniff command received */
- stuffcharReadbuff(K_SNIFF);
- goto doESCkey;
-#endif
-
case K_HELP: /* Help key works like <ESC> <Help> */
case K_F1:
case K_XF1:
diff --git a/src/eval.c b/src/eval.c
index a6486374b..f69e81431 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -13930,9 +13930,6 @@ f_has(typval_T *argvars, typval_T *rettv)
#ifdef FEAT_SMARTINDENT
"smartindent",
#endif
-#ifdef FEAT_SNIFF
- "sniff",
-#endif
#ifdef STARTUPTIME
"startuptime",
#endif
diff --git a/src/ex_cmds.h b/src/ex_cmds.h
index 23c26fafb..d17f4d54e 100644
--- a/src/ex_cmds.h
+++ b/src/ex_cmds.h
@@ -1281,9 +1281,6 @@ EX(CMD_smenu, "smenu", ex_menu,
EX(CMD_snext, "snext", ex_next,
RANGE|NOTADR|BANG|FILES|EDITCMD|ARGOPT|TRLBAR,
ADDR_LINES),
-EX(CMD_sniff, "sniff", ex_sniff,
- EXTRA|TRLBAR,
- ADDR_LINES),
EX(CMD_snomagic, "snomagic", ex_submagic,
RANGE|WHOLEFOLD|EXTRA|CMDWIN,
ADDR_LINES),
diff --git a/src/ex_cmds2.c b/src/ex_cmds2.c
index 3f8c50816..88257ccdd 100644
--- a/src/ex_cmds2.c
+++ b/src/ex_cmds2.c
@@ -131,9 +131,6 @@ do_debug(char_u *cmd)
redir_off = TRUE; /* don't redirect debug commands */
State = NORMAL;
-#ifdef FEAT_SNIFF
- want_sniff_request = 0; /* No K_SNIFF wanted */
-#endif
if (!debug_did_msg)
MSG(_("Entering Debug mode. Type \"cont\" to continue."));
@@ -151,9 +148,7 @@ do_debug(char_u *cmd)
{
msg_scroll = TRUE;
need_wait_return = FALSE;
-#ifdef FEAT_SNIFF
- ProcessSniffRequests();
-#endif
+
/* Save the current typeahead buffer and replace it with an empty one.
* This makes sure we get input from the user here and don't interfere
* with the commands being executed. Reset "ex_normal_busy" to avoid
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 1f493ad1e..9900c1b6d 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -296,9 +296,6 @@ static void ex_popup(exarg_T *eap);
# define ex_rubydo ex_ni
# define ex_rubyfile ex_ni
#endif
-#ifndef FEAT_SNIFF
-# define ex_sniff ex_ni
-#endif
#ifndef FEAT_KEYMAP
# define ex_loadkeymap ex_ni
#endif
@@ -641,9 +638,6 @@ do_exmode(
/* Ignore scrollbar and mouse events in Ex mode */
++hold_gui_events;
#endif
-#ifdef FEAT_SNIFF
- want_sniff_request = 0; /* No K_SNIFF wanted */
-#endif
MSG(_("Entering Ex mode. Type \"visual\" to go to Normal mode."));
while (exmode_active)
@@ -661,9 +655,6 @@ do_exmode(
changedtick = curbuf->b_changedtick;
prev_msg_row = msg_row;
prev_line = curwin->w_cursor.lnum;
-#ifdef FEAT_SNIFF
- ProcessSniffRequests();
-#endif
if (improved)
{
cmdline_row = msg_row;
diff --git a/src/ex_getln.c b/src/ex_getln.c
index 6741e1119..8db37d997 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -206,9 +206,6 @@ getcmdline(
struct cmdline_info save_ccline;
#endif
-#ifdef FEAT_SNIFF
- want_sniff_request = 0;
-#endif
#ifdef FEAT_EVAL
if (firstc == -1)
{
diff --git a/src/feature.h b/src/feature.h
index 4150f07b5..f75322756 100644
--- a/src/feature.h
+++ b/src/feature.h
@@ -1221,7 +1221,6 @@
* +perl Perl interface: "--enable-perlinterp"
* +python Python interface: "--enable-pythoninterp"
* +tcl TCL interface: "--enable-tclinterp"
- * +sniff Sniff interface: "--enable-sniff"
* +sun_workshop Sun Workshop integration
* +netbeans_intg Netbeans integration
* +channel Inter process communication
diff --git a/src/gui_gtk_x11.c b/src/gui_gtk_x11.c
index 440b401ab..69e4e1824 100644
--- a/src/gui_gtk_x11.c
+++ b/src/gui_gtk_x11.c
@@ -6460,22 +6460,6 @@ input_timer_cb(gpointer data)
return FALSE; /* don't happen again */
}
-#ifdef FEAT_SNIFF
-/*
- * Callback function, used when data is available on the SNiFF connection.
- */
- static void
-sniff_request_cb(
- gpointer data UNUSED,
- gint source_fd UNUSED,
- GdkInputCondition condition UNUSED)
-{
- static char_u bytes[3] = {CSI, (int)KS_EXTRA, (int)KE_SNIFF};
-
- add_to_input_buf(bytes, 3);
-}
-#endif
-
/*
* GUI input routine called by gui_wait_for_chars(). Waits for a character
* from the keyboard.
@@ -6491,26 +6475,6 @@ gui_mch_wait_for_chars(long wtime)
int focus;
guint timer;
static int timed_out;
-#ifdef FEAT_SNIFF
- static int sniff_on = 0;
- static gint sniff_input_id = 0;
-#endif
-
-#ifdef FEAT_SNIFF
- if (sniff_on && !want_sniff_request)
- {
- if (sniff_input_id)
- gdk_input_remove(sniff_input_id);
- sniff_on = 0;
- }
- else if (!sniff_on && want_sniff_request)
- {
- /* Add fd_from_sniff to watch for available data in main loop. */
- sniff_input_id = gdk_input_add(fd_from_sniff,
- GDK_INPUT_READ, sniff_request_cb, NULL);
- sniff_on = 1;
- }
-#endif
timed_out = FALSE;
diff --git a/src/gui_w32.c b/src/gui_w32.c
index aff0ba26a..6cc2e0698 100644
--- a/src/gui_w32.c
+++ b/src/gui_w32.c
@@ -326,7 +326,7 @@ static int s_findrep_is_find; /* TRUE for find dialog, FALSE
#endif
static HINSTANCE s_hinst = NULL;
-#if !defined(FEAT_SNIFF) && !defined(FEAT_GUI)
+#if !defined(FEAT_GUI)
static
#endif
HWND s_hwnd = NULL;
@@ -1927,23 +1927,6 @@ process_message(void)
}
#endif
-#ifdef FEAT_SNIFF
- if (sniff_request_waiting && want_sniff_request)
- {
- static char_u bytes[3] = {CSI, (char_u)KS_EXTRA, (char_u)KE_SNIFF};
- add_to_input_buf(bytes, 3); /* K_SNIFF */
- sniff_request_waiting = 0;
- want_sniff_request = 0;
- /* request is handled in normal.c */
- }
- if (msg.message == WM_USER)
- {
- MyTranslateMessage(&msg);
- pDispatchMessage(&msg);
- return;
- }
-#endif
-
#ifdef MSWIN_FIND_REPLACE
/* Don't process messages used by the dialog */
if (s_findrep_hwnd != NULL && pIsDialogMessage(s_findrep_hwnd, &msg))
diff --git a/src/gui_x11.c b/src/gui_x11.c
index 5a0fe8d52..b525cf7a6 100644
--- a/src/gui_x11.c
+++ b/src/gui_x11.c
@@ -145,9 +145,6 @@ static void gui_x11_focus_change_cb(Widget w, XtPointer data, XEvent *event, Boo
static void gui_x11_enter_cb(Widget w, XtPointer data, XEvent *event, Boolean *dum);
static void gui_x11_leave_cb(Widget w, XtPointer data, XEvent *event, Boolean *dum);
static void gui_x11_mouse_cb(Widget w, XtPointer data, XEvent *event, Boolean *dum);
-#ifdef FEAT_SNIFF
-static void gui_x11_sniff_request_cb(XtPointer closure, int *source, XtInputId *id);
-#endif
static void gui_x11_check_copy_area(void);
#ifdef FEAT_CLIENTSERVER
static void gui_x11_send_event_handler(Widget, XtPointer, XEvent *, Boolean *);
@@ -1163,20 +1160,6 @@ gui_x11_mouse_cb(
gui_send_mouse_event(button, x, y, repeated_click, vim_modifiers);
}
-#ifdef FEAT_SNIFF
-/* ARGSUSED */
- static void
-gui_x11_sniff_request_cb(
- XtPointer closure UNUSED,
- int *source UNUSED,
- XtInputId *id UNUSED)
-{
- static char_u bytes[3] = {CSI, (int)KS_EXTRA, (int)KE_SNIFF};
-
- add_to_input_buf(bytes, 3);
-}
-#endif
-
/*
* End of call-back routines
*/
@@ -2818,28 +2801,9 @@ gui_mch_wait_for_chars(long wtime)
static int timed_out;
XtIntervalId timer = (XtIntervalId)0;
XtInputMask desired;
-#ifdef FEAT_SNIFF
- static int sniff_on = 0;
- static XtInputId sniff_input_id = 0;
-#endif
timed_out = FALSE;
-#ifdef FEAT_SNIFF
- if (sniff_on && !want_sniff_request)
- {
- if (sniff_input_id)
- XtRemoveInput(sniff_input_id);
- sniff_on = 0;
- }
- else if (!sniff_on && want_sniff_request)
- {
- sniff_input_id = XtAppAddInput(app_context, fd_from_sniff,
- (XtPointer)XtInputReadMask, gui_x11_sniff_request_cb, 0);
- sniff_on = 1;
- }
-#endif
-
if (wtime > 0)
timer = XtAppAddTimeOut(app_context, (long_u)wtime, gui_x11_timer_cb,
&timed_out);
diff --git a/src/if_sniff.c b/src/if_sniff.c
deleted file mode 100644
index 85c4755af..000000000
--- a/src/if_sniff.c
+++ /dev/null
@@ -1,1201 +0,0 @@
-/* vi:set ts=8 sts=4 sw=4:
- *
- * if_sniff.c Interface between Vim and SNiFF+
- *
- * See README.txt for an overview of the Vim source code.
- */
-
-#include "vim.h"
-
-#ifdef WIN32
-# include <stdio.h>
-# include <process.h>
-# include <string.h>
-# include <assert.h>
-#else
-# ifdef FEAT_GUI_X11
-# include "gui_x11.pro"
-# endif
-# include "os_unixx.h"
-#endif
-
-static int sniffemacs_pid;
-
-int fd_from_sniff;
-int sniff_connected = 0;
-int sniff_request_waiting = 0;
-int want_sniff_request = 0;
-
-#define MAX_REQUEST_LEN 512
-
-#define NEED_SYMBOL 2
-#define EMPTY_SYMBOL 4
-#define NEED_FILE 8
-#define SILENT 16
-#define DISCONNECT 32
-#define CONNECT 64
-
-#define RQ_NONE 0
-#define RQ_SIMPLE 1
-#define RQ_CONTEXT NEED_FILE + NEED_SYMBOL
-#define RQ_SCONTEXT NEED_FILE + NEED_SYMBOL + EMPTY_SYMBOL
-#define RQ_NOSYMBOL NEED_FILE
-#define RQ_SILENT RQ_NOSYMBOL + SILENT
-#define RQ_CONNECT RQ_NONE + CONNECT
-#define RQ_DISCONNECT RQ_SIMPLE + DISCONNECT
-
-struct sn_cmd
-{
- char *cmd_name;
- char cmd_code;
- char *cmd_msg;
- int cmd_type;
-};
-
-struct sn_cmd_list
-{
- struct sn_cmd* sniff_cmd;
- struct sn_cmd_list* next_cmd;
-};
-
-static struct sn_cmd sniff_cmds[] =
-{
- { "toggle", 'e', N_("Toggle implementation/definition"),RQ_SCONTEXT },
- { "superclass", 's', N_("Show base class of"), RQ_CONTEXT },
- { "overridden", 'm', N_("Show overridden member function"),RQ_SCONTEXT },
- { "retrieve-file", 'r', N_("Retrieve from file"), RQ_CONTEXT },
- { "retrieve-project",'p', N_("Retrieve from project"), RQ_CONTEXT },
- { "retrieve-all-projects",
- 'P', N_("Retrieve from all projects"), RQ_CONTEXT },
- { "retrieve-next", 'R', N_("Retrieve"), RQ_CONTEXT },
- { "goto-symbol", 'g', N_("Show source of"), RQ_CONTEXT },
- { "find-symbol", 'f', N_("Find symbol"), RQ_CONTEXT },
- { "browse-class", 'w', N_("Browse class"), RQ_CONTEXT },
- { "hierarchy", 't', N_("Show class in hierarchy"), RQ_CONTEXT },
- { "restr-hier", 'T', N_("Show class in restricted hierarchy"),RQ_CONTEXT },
- { "xref-to", 'x', N_("Xref refers to"), RQ_CONTEXT },
- { "xref-by", 'X', N_("Xref referred by"), RQ_CONTEXT },
- { "xref-has", 'c', N_("Xref has a"), RQ_CONTEXT },
- { "xref-used-by", 'C', N_("Xref used by"), RQ_CONTEXT },
- { "show-docu", 'd', N_("Show docu of"), RQ_CONTEXT },
- { "gen-docu", 'D', N_("Generate docu for"), RQ_CONTEXT },
- { "connect", 'y', NULL, RQ_CONNECT },
- { "disconnect", 'q', NULL, RQ_DISCONNECT },
- { "font-info", 'z', NULL, RQ_SILENT },
- { "update", 'u', NULL, RQ_SILENT },
- { NULL, '\0', NULL, 0}
-};
-
-
-static char *SniffEmacs[2] = {"sniffemacs", (char *)NULL}; /* Yes, Emacs! */
-static int fd_to_sniff;
-static int sniff_will_disconnect = 0;
-static char msg_sniff_disconnect[] = N_("Cannot connect to SNiFF+. Check environment (sniffemacs must be found in $PATH).\n");
-static char sniff_rq_sep[] = " ";
-static struct sn_cmd_list *sniff_cmd_ext = NULL;
-
-/* Initializing vim commands
- * executed each time vim connects to Sniff
- */
-static char *init_cmds[]= {
- "augroup sniff",
- "autocmd BufWritePost * sniff update",
- "autocmd BufReadPost * sniff font-info",
- "autocmd VimLeave * sniff disconnect",
- "augroup END",
-
- "let g:sniff_connected = 1",
-
- "if ! exists('g:sniff_mappings_sourced')|"
- "if ! exists('g:sniff_mappings')|"
- "if exists('$SNIFF_DIR4')|"
- "let g:sniff_mappings='$SNIFF_DIR4/config/integrations/vim/sniff.vim'|"
- "else|"
- "let g:sniff_mappings='$SNIFF_DIR/config/sniff.vim'|"
- "endif|"
- "endif|"
- "let g:sniff_mappings=expand(g:sniff_mappings)|"
- "if filereadable(g:sniff_mappings)|"
- "execute 'source' g:sniff_mappings|"
- "let g:sniff_mappings_sourced=1|"
- "endif|"
- "endif",
-
- NULL
-};
-
-/*-------- Function Prototypes ----------------------------------*/
-
-static int ConnectToSniffEmacs(void);
-static void sniff_connect(void);
-static void HandleSniffRequest(char* buffer);
-static int get_request(int fd, char *buf, int maxlen);
-static void WriteToSniff(char *str);
-static void SendRequest(struct sn_cmd *command, char* symbol);
-static void vi_msg(char *);
-static void vi_error_msg(char *);
-static char *vi_symbol_under_cursor(void);
-static void vi_open_file(char *);
-static char *vi_buffer_name(void);
-static buf_T *vi_find_buffer(char *);
-static void vi_exec_cmd(char *);
-static void vi_set_cursor_pos(long char_nr);
-static long vi_cursor_pos(void);
-
-/* debug trace */
-#if 0
-static FILE* _tracefile = NULL;
-#define SNIFF_TRACE_OPEN(file) if (!_tracefile) _tracefile = fopen(file, "w")
-#define SNIFF_TRACE(msg) fprintf(_tracefile, msg); fflush(_tracefile);
-#define SNIFF_TRACE1(msg, arg) fprintf(_tracefile, msg,arg); fflush(_tracefile);
-#define SNIFF_TRACE_CLOSE fclose(_tracefile); _tracefile=NULL;
-#else
-#define SNIFF_TRACE_OPEN(file)
-#define SNIFF_TRACE(msg)
-#define SNIFF_TRACE1(msg, arg)
-#define SNIFF_TRACE_CLOSE
-#endif
-
-/*-------- Windows Only Declarations -----------------------------*/
-#ifdef WIN32
-
-static int sniff_request_processed=1;
-static HANDLE sniffemacs_handle=NULL;
-static HANDLE readthread_handle=NULL;
-static HANDLE handle_to_sniff=NULL;
-static HANDLE handle_from_sniff=NULL;
-
-struct sniffBufNode
-{
- struct sniffBufNode *next;
- int bufLen;
- char buf[MAX_REQUEST_LEN];
-};
-static struct sniffBufNode *sniffBufStart=NULL;
-static struct sniffBufNode *sniffBufEnd=NULL;
-static HANDLE hBufferMutex=NULL;
-
-# ifdef FEAT_GUI_W32
- extern HWND s_hwnd; /* gvim's Window handle */
-# endif
-/*
- * some helper functions for Windows port only
- */
-
- static HANDLE
-ExecuteDetachedProgram(char *szBinary, char *szCmdLine,
- HANDLE hStdInput, HANDLE hStdOutput)
-{
- BOOL bResult;
- DWORD nError;
- PROCESS_INFORMATION aProcessInformation;
- PROCESS_INFORMATION *pProcessInformation= &aProcessInformation;
- STARTUPINFO aStartupInfo;
- STARTUPINFO *pStartupInfo= &aStartupInfo;
- DWORD dwCreationFlags= 0;
- char szPath[512];
- HINSTANCE hResult;
-
- hResult = FindExecutable(szBinary, ".", szPath);
- if ((int)hResult <= 32)
- {
- /* can't find the exe file */
- return NULL;
- }
-
- ZeroMemory(pStartupInfo, sizeof(*pStartupInfo));
- pStartupInfo->dwFlags= STARTF_USESHOWWINDOW|STARTF_USESTDHANDLES;
- pStartupInfo->hStdInput = hStdInput;
- pStartupInfo->hStdOutput = hStdOutput;
- pStartupInfo->wShowWindow= SW_HIDE;
- pStartupInfo->cb = sizeof(STARTUPINFO);
-
- bResult= CreateProcess(
- szPath,
- szCmdLine,
- NULL, /* security attr for process */
- NULL, /* security attr for primary thread */
- TRUE, /* DO inherit stdin and stdout */
- dwCreationFlags, /* creation flags */
- NULL, /* environment */
- ".", /* current directory */
- pStartupInfo, /* startup info: NULL crashes */
- pProcessInformation /* process information: NULL crashes */
- );
- nError= GetLastError();
- if (bResult)
- {
- CloseHandle(pProcessInformation->hThread);
- CloseHandle(hStdInput);
- CloseHandle(hStdOutput);
- return(pProcessInformation->hProcess);
- }
- else
- return(NULL);
-}
-
-/*
- * write to the internal Thread / Thread communications buffer.
- * Return TRUE if successful, FALSE else.
- */
- static BOOL
-writeToBuffer(char *msg, int len)
-{
- DWORD dwWaitResult; /* Request ownership of mutex. */
- struct sniffBufNode *bn;
- int bnSize;
-
- SNIFF_TRACE1("writeToBuffer %d\n", len);
- bnSize = sizeof(struct sniffBufNode) - MAX_REQUEST_LEN + len + 1;
- if (bnSize < 128) bnSize = 128; /* minimum length to avoid fragmentation */
- bn = (struct sniffBufNode *)malloc(bnSize);
- if (!bn)
- return FALSE;
-
- memcpy(bn->buf, msg, len);
- bn->buf[len]='\0'; /* terminate CString for added safety */
- bn->next = NULL;
- bn->bufLen = len;
- /* now, acquire a Mutex for adding the string to our linked list */
- dwWaitResult = WaitForSingleObject(
- hBufferMutex, /* handle of mutex */
- 1000L); /* one-second time-out interval */
- if (dwWaitResult == WAIT_OBJECT_0)
- {
- /* The thread got mutex ownership. */
- if (sniffBufEnd)
- {
- sniffBufEnd->next = bn;
- sniffBufEnd = bn;
- }
- else
- sniffBufStart = sniffBufEnd = bn;
- /* Release ownership of the mutex object. */
- if (! ReleaseMutex(hBufferMutex))
- {
- /* Deal with error. */
- }
- return TRUE;
- }
-
- /* Cannot get mutex ownership due to time-out or mutex object abandoned. */
- free(bn);
- return FALSE;
-}
-
-/*
- * read from the internal Thread / Thread communications buffer.
- * Return TRUE if successful, FALSE else.
- */
- static int
-ReadFromBuffer(char *buf, int maxlen)
-{
- DWORD dwWaitResult; /* Request ownership of mutex. */
- int theLen;
- struct sniffBufNode *bn;
-
- dwWaitResult = WaitForSingleObject(
- hBufferMutex, /* handle of mutex */
- 1000L); /* one-second time-out interval */
- if (dwWaitResult == WAIT_OBJECT_0)
- {
- if (!sniffBufStart)
- {
- /* all pending Requests Processed */
- theLen = 0;
- }
- else
- {
- bn = sniffBufStart;
- theLen = bn->bufLen;
- SNIFF_TRACE1("ReadFromBuffer %d\n", theLen);
- if (theLen >= maxlen)
- {
- /* notify the user of buffer overflow? */
- theLen = maxlen-1;
- }
- memcpy(buf, bn->buf, theLen);
- buf[theLen] = '\0';
- if (! (sniffBufStart = bn->next))
- {
- sniffBufEnd = NULL;
- sniff_request_processed = 1;
- }
- free(bn);
- }
- if (! ReleaseMutex(hBufferMutex))
- {
- /* Deal with error. */
- }
- return theLen;
- }
-
- /* Cannot get mutex ownership due to time-out or mutex object abandoned. */
- return -1;
-}
-
-/* on Win32, a separate Thread reads the input pipe. get_request is not needed here. */
- static void __cdecl
-SniffEmacsReadThread(void *dummy)
-{
- static char ReadThreadBuffer[MAX_REQUEST_LEN];
- int ReadThreadLen=0;
- int result=0;
- int msgLen=0;
- char *msgStart, *msgCur;
-
- SNIFF_TRACE("begin thread\n");
- /* Read from the pipe to SniffEmacs */
- while (sniff_connected)
- {
- if (!ReadFile(handle_from_sniff,
- ReadThreadBuffer + ReadThreadLen, /* acknowledge rest in buffer */
- MAX_REQUEST_LEN - ReadThreadLen,
- &result,
- NULL))
- {
- DWORD err = GetLastError();
- result = -1;
- }
-
- if (result < 0)
- {
- /* probably sniffemacs died... log the Error? */
- sniff_disconnect(1);
- }
- else if (result > 0)
- {
- ReadThreadLen += result-1; /* total length of valid chars */
- for(msgCur=msgStart=ReadThreadBuffer; ReadThreadLen > 0; msgCur++, ReadThreadLen--)
- {
- if (*msgCur == '\0' || *msgCur == '\r' || *msgCur == '\n')
- {
- msgLen = msgCur-msgStart; /* don't add the CR/LF chars */
- if (msgLen > 0)
- writeToBuffer(msgStart, msgLen);
- msgStart = msgCur + 1; /* over-read single CR/LF chars */
- }
- }
-
- /* move incomplete message to beginning of buffer */
- ReadThreadLen = msgCur - msgStart;
- if (ReadThreadLen > 0)
- mch_memmove(ReadThreadBuffer, msgStart, ReadThreadLen);
-
- if (sniff_request_processed)
- {
- /* notify others that new data has arrived */
- sniff_request_processed = 0;
- sniff_request_waiting = 1;
-#ifdef FEAT_GUI_W32
- PostMessage(s_hwnd, WM_USER, (WPARAM)0, (LPARAM)0);
-#endif
- }
- }
- }
- SNIFF_TRACE("end thread\n");
-}
-#endif /* WIN32 */
-/*-------- End of Windows Only Declarations ------------------------*/
-
-
-/* ProcessSniffRequests
- * Function that should be called from outside
- * to process the waiting sniff requests
- */
- void
-ProcessSniffRequests(void)
-{
- static char buf[MAX_REQUEST_LEN];
- int len;
-
- while (sniff_connected)
- {
-#ifdef WIN32
- len = ReadFromBuffer(buf, sizeof(buf));
-#else
- len = get_request(fd_from_sniff, buf, sizeof(buf));
-#endif
- if (len < 0)
- {
- vi_error_msg(_("E274: Sniff: Error during read. Disconnected"));
- sniff_disconnect(1);
- break;
- }
- else if (len > 0)
- HandleSniffRequest( buf );
- else
- break;
- }
-
- if (sniff_will_disconnect) /* Now the last msg has been processed */
- sniff_disconnect(1);
-}
-
- static struct sn_cmd *
-find_sniff_cmd(char *cmd)
-{
- struct sn_cmd *sniff_cmd = NULL;
- int i;
- for(i=0; sniff_cmds[i].cmd_name; i++)
- {
- if (!strcmp(cmd, sniff_cmds[i].cmd_name))
- {
- sniff_cmd = &sniff_cmds[i];
- break;
- }
- }
- if (!sniff_cmd)
- {
- struct sn_cmd_list *list = sniff_cmd_ext;
- while (list)
- {
- if (!strcmp(cmd, list->sniff_cmd->cmd_name))
- {
- sniff_cmd = list->sniff_cmd;
- break;
- }
- list = list->next_cmd;
- }
- }
- return sniff_cmd;
-}
-
- static int
-add_sniff_cmd(char *cmd, char *def, char *msg)
-{
- int rc = 0;
- if (def != NULL && def[0] != NUL && find_sniff_cmd(cmd) == NULL)
- {
- struct sn_cmd_list *list = sniff_cmd_ext;
- struct sn_cmd *sniff_cmd = (struct sn_cmd*)malloc(sizeof(struct sn_cmd));
- struct sn_cmd_list *cmd_node = (struct sn_cmd_list*)malloc(sizeof(struct sn_cmd_list));
- int rq_type = 0;
-
- /* unescape message text */
- char *p = msg;
- char *end = p+strlen(msg);
- while (*p)
- {
- if (*p == '\\')
- mch_memmove(p,p+1,end-p);
- p++;
- }
- SNIFF_TRACE1("request name = %s\n",cmd);
- SNIFF_TRACE1("request def = %s\n",def);
- SNIFF_TRACE1("request msg = %s\n",msg);
-
- while (list && list->next_cmd)
- list = list->next_cmd;
- if (!list)
- sniff_cmd_ext = cmd_node;
- else
- list->next_cmd = cmd_node;
-
- sniff_cmd->cmd_name = cmd;
- sniff_cmd->cmd_code = def[0];
- sniff_cmd->cmd_msg = msg;
- switch(def[1])
- {
- case 'f':
- rq_type = RQ_NOSYMBOL;
- break;
- case 's':
- rq_type = RQ_CONTEXT;
- break;
- case 'S':
- rq_type = RQ_SCONTEXT;
- break;
- default:
- rq_type = RQ_SIMPLE;
- break;
- }
- sniff_cmd->cmd_type = rq_type;
- cmd_node->sniff_cmd = sniff_cmd;
- cmd_node->next_cmd = NULL;
- rc = 1;
- }
- return rc;
-}
-
-/* ex_sniff
- * Handle ":sniff" command
- */
- void
-ex_sniff(exarg_T *eap)
-{
- char_u *arg = eap->arg;
- char_u *symbol = NULL;
- char_u *cmd = NULL;
-
- SNIFF_TRACE_OPEN("if_sniff.log");
- if (ends_excmd(*arg)) /* no request: print available commands */
- {
- int i;
- msg_start();
- msg_outtrans_attr((char_u *)"-- SNiFF+ commands --", hl_attr(HLF_T));
- for(i=0; sniff_cmds[i].cmd_name; i++)
- {
- msg_putchar('\n');
- msg_outtrans((char_u *)":sniff ");
- msg_outtrans((char_u *)sniff_cmds[i].cmd_name);
- }
- msg_putchar('\n');
- msg_outtrans((char_u *)_("SNiFF+ is currently "));
- if (!sniff_connected)
- msg_outtrans((char_u *)_("not "));
- msg_outtrans((char_u *)_("connected"));
- msg_end();
- }
- else /* extract command name and symbol if present */
- {
- symbol = skiptowhite(arg);
- cmd = vim_strnsave(arg, (int)(symbol-arg));
- symbol = skipwhite(symbol);
- if (ends_excmd(*symbol))
- symbol = NULL;
- if (!strcmp((char *)cmd, "addcmd"))
- {
- char_u *def = skiptowhite(symbol);
- char_u *name = vim_strnsave(symbol, (int)(def-symbol));
- char_u *msg;
- def = skipwhite(def);
- msg = skiptowhite(def);
- def = vim_strnsave(def, (int)(msg-def));
- msg = skipwhite(msg);
- if (ends_excmd(*msg))
- msg = vim_strsave(name);
- else
- msg = vim_strnsave(msg, (int)(skiptowhite_esc(msg)-msg));
- if (!add_sniff_cmd((char*)name, (char*)def, (char*)msg))
- {
- vim_free(msg);
- vim_free(def);
- vim_free(name);
- }
- }
- else
- {
- struct sn_cmd* sniff_cmd = find_sniff_cmd((char*)cmd);
- if (sniff_cmd)
- SendRequest(sniff_cmd, (char *)symbol);
- else
- EMSG2(_("E275: Unknown SNiFF+ request: %s"), cmd);
- }
- vim_free(cmd);
- }
-}
-
-
- static void
-sniff_connect(void)
-{
- if (sniff_connected)
- return;
- if (ConnectToSniffEmacs())
- vi_error_msg(_("E276: Error connecting to SNiFF+"));
- else
- {
- int i;
-
- for (i = 0; init_cmds[i]; i++)
- vi_exec_cmd(init_cmds[i]);
- }
-}
-
- void
-sniff_disconnect(int immediately)
-{
- if (!sniff_connected)
- return;
- if (immediately)
- {
- vi_exec_cmd("augroup sniff");
- vi_exec_cmd("au!");
- vi_exec_cmd("augroup END");
- vi_exec_cmd("unlet g:sniff_connected");
- sniff_connected = 0;
- want_sniff_request = 0;
- sniff_will_disconnect = 0;
-#ifdef FEAT_GUI
- if (gui.in_use)
- gui_mch_wait_for_chars(0L);
-#endif
-#ifdef WIN32
- while (sniffBufStart != NULL)
- {
- struct sniffBufNode *node = sniffBufStart;
- sniffBufStart = sniffBufStart->next;
- free(node);
- }
- sniffBufStart = sniffBufEnd = NULL;
- sniff_request_processed = 1;
- CloseHandle(handle_to_sniff);
- CloseHandle(handle_from_sniff);
- WaitForSingleObject(sniffemacs_handle, 1000L);
- CloseHandle(sniffemacs_handle);
- sniffemacs_handle = NULL;
- WaitForSingleObject(readthread_handle, 1000L);
- readthread_handle = NULL;
- CloseHandle(hBufferMutex);
- hBufferMutex = NULL;
- SNIFF_TRACE_CLOSE;
-#else
- close(fd_to_sniff);
- close(fd_from_sniff);
- wait(NULL);
-#endif
- }
- else
- {
-#ifdef WIN32
-# if (defined(_MSC_VER) && _MSC_VER >= 1400)
- Sleep(2);
-# else
- _sleep(2);
-# endif
- if (!sniff_request_processed)
- ProcessSniffRequests();
-#else
- sleep(2); /* Incoming msg could disturb edit */
-#endif
- sniff_will_disconnect = 1; /* We expect disconnect msg in 2 secs */
- }
-}
-
-
-/* ConnectToSniffEmacs
- * Connect to Sniff: returns 1 on error
- */
- static int
-ConnectToSniffEmacs(void)
-{
-#ifdef WIN32 /* Windows Version of the Code */
- HANDLE ToSniffEmacs[2], FromSniffEmacs[2];
- SECURITY_ATTRIBUTES sa;
-
- sa.nLength = sizeof(sa);
- sa.lpSecurityDescriptor = NULL;
- sa.bInheritHandle = TRUE;
-
- if (! CreatePipe(&ToSniffEmacs[0], &ToSniffEmacs[1], &sa, 0))
- return 1;
- if (! CreatePipe(&FromSniffEmacs[0], &FromSniffEmacs[1], &sa, 0))
- return 1;
-
- sniffemacs_handle = ExecuteDetachedProgram(SniffEmacs[0], SniffEmacs[0],
- ToSniffEmacs[0], FromSniffEmacs[1]);
-
- if (sniffemacs_handle)
- {
- handle_to_sniff = ToSniffEmacs[1];
- handle_from_sniff = FromSniffEmacs[0];
- sniff_connected = 1;
- hBufferMutex = CreateMutex(
- NULL, /* no security attributes */
- FALSE, /* initially not owned */
- "SniffReadBufferMutex"); /* name of mutex */
- if (hBufferMutex == NULL)
- {
- /* Check for error. */
- }
- readthread_handle = (HANDLE)_beginthread(SniffEmacsReadThread, 0, NULL);
- return 0;
- }
- else
- {
- /* error in spawn() */
- return 1;
- }
-
-#else /* UNIX Version of the Code */
- int ToSniffEmacs[2], FromSniffEmacs[2];
-
- if (pipe(ToSniffEmacs) != 0)
- return 1;
- if (pipe(FromSniffEmacs) != 0)
- return 1;
-
- /* fork */
- if ((sniffemacs_pid=fork()) == 0)
- {
- /* child */
-
- /* prepare communication pipes */
- close(ToSniffEmacs[1]);
- close(FromSniffEmacs[0]);
-
- dup2(ToSniffEmacs[0],fileno(stdin)); /* write to ToSniffEmacs[1] */
- dup2(FromSniffEmacs[1],fileno(stdout));/* read from FromSniffEmacs[0] */
-
- close(ToSniffEmacs[0]);
- close(FromSniffEmacs[1]);
-
- /* start sniffemacs */
- execvp (SniffEmacs[0], SniffEmacs);
- {
-/* FILE *out = fdopen(FromSniffEmacs[1], "w"); */
- sleep(1);
- fputs(_(msg_sniff_disconnect), stdout);
- fflush(stdout);
- sleep(3);
-#ifdef FEAT_GUI
- if (gui.in_use)
- gui_exit(1);
-#endif
- exit(1);
- }
- return 1;
- }
- else if (sniffemacs_pid > 0)
- {
- /* parent process */
- close(ToSniffEmacs[0]);
- fd_to_sniff = ToSniffEmacs[1];
- close(FromSniffEmacs[1]);
- fd_from_sniff = FromSniffEmacs[0];
- sniff_connected = 1;
- return 0;
- }
- else /* error in fork() */
- return 1;
-#endif /* UNIX Version of the Code */
-}
-
-
-/* HandleSniffRequest
- * Handle one request from SNiFF+
- */
- static void
-HandleSniffRequest(char *buffer)
-{
- char VICommand[MAX_REQUEST_LEN];
- char command;
- char *arguments;
- char *token;
- char *argv[3];
- int argc = 0;
- buf_T *buf;
-
- const char *SetTab = "set tabstop=%d";
- const char *SelectBuf = "buf %s";
- const char *DeleteBuf = "bd %s";
- const char *UnloadBuf = "bun %s";
- const char *GotoLine = "%d";
-
- command = buffer[0];
- arguments = &buffer[1];
- token = strtok(arguments, sniff_rq_sep);
- while (argc <3)
- {
- if (token)
- {
- argv[argc] = (char*)vim_strsave((char_u *)token);
- token = strtok(0, sniff_rq_sep);
- }
- else
- argv[argc] = strdup("");
- argc++;
- }
-
- switch (command)
- {
- case 'o' : /* visit file at char pos */
- case 'O' : /* visit file at line number */
- {
- char *file = argv[0];
- int position = atoi(argv[1]);
-
- buf = vi_find_buffer(file);
- setpcmark(); /* insert current pos in jump list [mark.c]*/
- if (!buf)
- vi_open_file(file);
- else if (buf!=curbuf)
- {
- vim_snprintf(VICommand, sizeof(VICommand),
- (char *)SelectBuf, file);
- vi_exec_cmd(VICommand);
- }
- if (command == 'o')
- vi_set_cursor_pos((long)position);
- else
- {
- vim_snprintf(VICommand, sizeof(VICommand),
- (char *)GotoLine, (int)position);
- vi_exec_cmd(VICommand);
- }
- checkpcmark(); /* [mark.c] */
-#if defined(FEAT_GUI_X11) || defined(FEAT_GUI_W32)
- if (gui.in_use && !gui.in_focus) /* Raise Vim Window */
- {
-# ifdef FEAT_GUI_W32
- SetForegroundWindow(s_hwnd);
-# else
- extern Widget vimShell;
-
- XSetInputFocus(gui.dpy, XtWindow(vimShell), RevertToNone,
- CurrentTime);
- XRaiseWindow(gui.dpy, XtWindow(vimShell));
-# endif
- }
-#endif
- break;
- }
- case 'p' : /* path of file has changed */
- /* when changing from shared to private WS (checkout) */
- {
- char *file = argv[0];
- char *new_path = argv[1];
-
- buf = vi_find_buffer(file);
- if (buf && !buf->b_changed) /* delete buffer only if not modified */
- {
- vim_snprintf(VICommand, sizeof(VICommand),
- (char *)DeleteBuf, file);
- vi_exec_cmd(VICommand);
- }
- vi_open_file(new_path);
- break;
- }
- case 'w' : /* writability has changed */
- /* Sniff sends request twice,
- * but only the last one is the right one */
- {
- char *file = argv[0];
- int writable = atoi(argv[1]);
-
- buf = vi_find_buffer(file);
- if (buf)
- {
- buf->b_p_ro = !writable;
- if (buf != curbuf)
- {
- buf->b_flags |= BF_CHECK_RO + BF_NEVERLOADED;
- if (writable && !buf->b_changed)
- {
- vim_snprintf(VICommand, sizeof(VICommand),
- (char *)UnloadBuf, file);
- vi_exec_cmd(VICommand);
- }
- }
- else if (writable && !buf->b_changed)
- {
- vi_exec_cmd("e");
- }
- }
- break;
- }
- case 'h' : /* highlight info */
- break; /* not implemented */
-
- case 't' : /* Set tab width */
- {
- int tab_width = atoi(argv[1]);
-
- if (tab_width > 0 && tab_width <= 16)
- {
- vim_snprintf(VICommand, sizeof(VICommand),
- (char *)SetTab, tab_width);
- vi_exec_cmd(VICommand);
- }
- break;
- }
- case '|':
- {
- /* change the request separator */
- sniff_rq_sep[0] = arguments[0];
- /* echo the request */
- WriteToSniff(buffer);
- break;
- }
- case 'A' : /* Warning/Info msg */
- vi_msg(arguments);
- if (!strncmp(arguments, "Disconnected", 12))
- sniff_disconnect(1); /* unexpected disconnection */
- break;
- case 'a' : /* Error msg */
- vi_error_msg(arguments);
- if (!strncmp(arguments, "Cannot connect", 14))
- sniff_disconnect(1);
- break;
-
- default :
- break;
- }
- while (argc)
- vim_free(argv[--argc]);
-}
-
-
-#ifndef WIN32
-/* get_request
- * read string from fd up to next newline (excluding the nl),
- * returns length of string
- * 0 if no data available or no complete line
- * <0 on error
- */
- static int
-get_request(int fd, char *buf, int maxlen)
-{
- static char inbuf[1024];
- static int pos = 0, bytes = 0;
- int len;
-#ifdef HAVE_SELECT
- struct timeval tval;
- fd_set rfds;
-
- FD_ZERO(&rfds);
- FD_SET(fd, &rfds);
- tval.tv_sec = 0;
- tval.tv_usec = 0;
-#else
- struct pollfd fds;
-
- fds.fd = fd;
- fds.events = POLLIN;
-#endif
-
- for (len = 0; len < maxlen; len++)
- {
- if (pos >= bytes) /* end of buffer reached? */
- {
-#ifdef HAVE_SELECT
- if (select(fd + 1, &rfds, NULL, NULL, &tval) > 0)
-#else
- if (poll(&fds, 1, 0) > 0)
-#endif
- {
- pos = 0;
- bytes = read(fd, inbuf, sizeof(inbuf));
- if (bytes <= 0)
- return bytes;
- }
- else
- {
- pos = pos-len;
- buf[0] = '\0';
- return 0;
- }
- }
- if ((buf[len] = inbuf[pos++]) =='\n')
- break;
- }
- buf[len] = '\0';
- return len;
-}
-#endif /* WIN32 */
-
-
- static void
-SendRequest(struct sn_cmd *command, char *symbol)
-{
- int cmd_type = command->cmd_type;
- static char cmdstr[MAX_REQUEST_LEN];
- static char msgtxt[MAX_REQUEST_LEN];
- char *buffer_name = NULL;
-
- if (cmd_type == RQ_CONNECT)
- {
- sniff_connect();
- return;
- }
- if (!sniff_connected && !(cmd_type & SILENT))
- {
- vi_error_msg(_("E278: SNiFF+ not connected"));
- return;
- }
-
- if (cmd_type & NEED_FILE)
- {
- if (!curbuf->b_sniff)
- {
- if (!(cmd_type & SILENT))
- vi_error_msg(_("E279: Not a SNiFF+ buffer"));
- return;
- }
- buffer_name = vi_buffer_name();
- if (buffer_name == NULL)
- return;
- if (cmd_type & NEED_SYMBOL)
- {
- if (cmd_type & EMPTY_SYMBOL)
- symbol = " ";
- else if (!symbol && !(symbol = vi_symbol_under_cursor()))
- return; /* error msg already displayed */
- }
-
- if (symbol)
- vim_snprintf(cmdstr, sizeof(cmdstr), "%c%s%s%ld%s%s\n",
- command->cmd_code,
- buffer_name,
- sniff_rq_sep,
- vi_cursor_pos(),
- sniff_rq_sep,
- symbol
- );
- else
- vim_snprintf(cmdstr, sizeof(cmdstr), "%c%s\n",
- command->cmd_code, buffer_name);
- }
- else /* simple request */
- {
- cmdstr[0] = command->cmd_code;
- cmdstr[1] = '\n';
- cmdstr[2] = '\0';
- }
- if (command->cmd_msg && !(cmd_type & SILENT))
- {
- if ((cmd_type & NEED_SYMBOL) && !(cmd_type & EMPTY_SYMBOL))
- {
- vim_snprintf(msgtxt, sizeof(msgtxt), "%s: %s",
- _(command->cmd_msg), symbol);
- vi_msg(msgtxt);
- }
- else
- vi_msg(_(command->cmd_msg));
- }
- WriteToSniff(cmdstr);
- if (cmd_type & DISCONNECT)
- sniff_disconnect(0);
-}
-
-
-
- static void
-WriteToSniff(char *str)
-{
- int bytes;
-#ifdef WIN32
- if (! WriteFile(handle_to_sniff, str, strlen(str), &bytes, NULL))
- {
- DWORD err=GetLastError();
- bytes = -1;
- }
-#else
- bytes = write(fd_to_sniff, str, strlen(str));
-#endif
- if (bytes<0)
- {
- vi_msg(_("Sniff: Error during write. Disconnected"));
- sniff_disconnect(1);
- }
-}
-
-/*-------- vim helping functions --------------------------------*/
-
- static void
-vi_msg(char *str)
-{
- if (str != NULL && *str != NUL)
- MSG((char_u *)str);
-}
-
- static void
-vi_error_msg(char *str)
-{
- if (str != NULL && *str != NUL)
- EMSG((char_u *)str);
-}
-
- static void
-vi_open_file(char *fname)
-{
- ++no_wait_return;
- do_ecmd(0, (char_u *)fname, NULL, NULL, ECMD_ONE, ECMD_HIDE+ECMD_OLDBUF,
- curwin);
- curbuf->b_sniff = TRUE;
- --no_wait_return; /* [ex_docmd.c] */
-}
-
- static buf_T *
-vi_find_buffer(char *fname)
-{ /* derived from buflist_findname() [buffer.c] */
- buf_T *buf;
-
- for (buf = firstbuf; buf != NULL; buf = buf->b_next)
- if (buf->b_sfname != NULL && fnamecmp(fname, buf->b_sfname) == 0)
- return (buf);
- return NULL;
-}
-
-
- static char *
-vi_symbol_under_cursor(void)
-{
- int len;
- char *symbolp;
- char *p;
- static char sniff_symbol[256];
-
- len = find_ident_under_cursor((char_u **)&symbolp, FIND_IDENT);
- /* [normal.c] */
- if (len <= 0)
- return NULL;
- for (p=sniff_symbol; len; len--)
- *p++ = *symbolp++;
- *p = '\0';
- return sniff_symbol;
-}
-
-
- static char *
-vi_buffer_name(void)
-{
- return (char *)curbuf->b_sfname;
-}
-
- static void
-vi_exec_cmd(char *vicmd)
-{
- do_cmdline_cmd((char_u *)vicmd); /* [ex_docmd.c] */
-}
-
-/*
- * Set cursor on character position
- * derived from cursor_pos_info() [buffer.c]
- */
- static void
-vi_set_cursor_pos(long char_pos)
-{
- linenr_T lnum;
- long char_count = 1; /* first position = 1 */
- int line_size;
- int eol_size;
-
- if (char_pos == 0)
- {
- char_pos = 1;
- }
- if (get_fileformat(curbuf) == EOL_DOS)
- eol_size = 2;
- else
- eol_size = 1;
- for (lnum = 1; lnum <= curbuf->b_ml.ml_line_count; ++lnum)
- {
- line_size = STRLEN(ml_get(lnum)) + eol_size;
- if (char_count+line_size > char_pos) break;
- char_count += line_size;
- }
- curwin->w_cursor.lnum = lnum;
- curwin->w_cursor.col = char_pos - char_count;
-}
-
- static long
-vi_cursor_pos(void)
-{
- linenr_T lnum;
- long char_count=1; /* sniff starts with pos 1 */
- int line_size;
- int eol_size;
-
- if (curbuf->b_p_tx)
- eol_size = 2;
- else
- eol_size = 1;
- for (lnum = 1; lnum < curwin->w_cursor.lnum; ++lnum)
- {
- line_size = STRLEN(ml_get(lnum)) + eol_size;
- char_count += line_size;
- }
- return char_count + curwin->w_cursor.col;
-}
diff --git a/src/if_sniff.h b/src/if_sniff.h
deleted file mode 100644
index 50186b80e..000000000
--- a/src/if_sniff.h
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
- * if_sniff.h Interface between Vim and SNiFF+
- */
-
-#ifndef __if_sniff_h__
-#define __if_sniff_h__
-
-extern int want_sniff_request;
-extern int sniff_request_waiting;
-extern int sniff_connected;
-extern int fd_from_sniff;
-extern void sniff_disconnect(int immediately);
-extern void ProcessSniffRequests(void);
-extern void ex_sniff(exarg_T *eap);
-
-#endif
diff --git a/src/keymap.h b/src/keymap.h
index 986006dc9..066aa29b5 100644
--- a/src/keymap.h
+++ b/src/keymap.h
@@ -211,8 +211,6 @@ enum key_extra
, KE_TAB /* unshifted TAB key */
, KE_S_TAB_OLD /* shifted TAB key (no longer used) */
- , KE_SNIFF /* SNiFF+ input waiting */
-
, KE_XF1 /* extra vt100 function keys for xterm */
, KE_XF2
, KE_XF3
@@ -449,8 +447,6 @@ enum key_extra
#define K_IGNORE TERMCAP2KEY(KS_EXTRA, KE_IGNORE)
#define K_NOP TERMCAP2KEY(KS_EXTRA, KE_NOP)
-#define K_SNIFF TERMCAP2KEY(KS_EXTRA, KE_SNIFF)
-
#define K_MOUSEDOWN TERMCAP2KEY(KS_EXTRA, KE_MOUSEDOWN)
#define K_MOUSEUP TERMCAP2KEY(KS_EXTRA, KE_MOUSEUP)
#define K_MOUSELEFT TERMCAP2KEY(KS_EXTRA, KE_MOUSELEFT)
diff --git a/src/normal.c b/src/normal.c
index d4b4b70fc..b57191ae0 100644
--- a/src/normal.c
+++ b/src/normal.c
@@ -163,9 +163,6 @@ static void nv_halfpage(cmdarg_T *cap);
static void nv_join(cmdarg_T *cap);
static void nv_put(cmdarg_T *cap);
static void nv_open(cmdarg_T *cap);
-#ifdef FEAT_SNIFF
-static void nv_sniff(cmdarg_T *cap);
-#endif
#ifdef FEAT_NETBEANS_INTG
static void nv_nbcmd(cmdarg_T *cap);
#endif
@@ -420,9 +417,6 @@ static const struct nv_cmd
{K_F8, farsi_fkey, 0, 0},
{K_F9, farsi_fkey, 0, 0},
#endif
-#ifdef FEAT_SNIFF
- {K_SNIFF, nv_sniff, 0, 0},
-#endif
#ifdef FEAT_NETBEANS_INTG
{K_F21, nv_nbcmd, NV_NCH_ALW, 0},
#endif
@@ -570,10 +564,6 @@ normal_cmd(
* remembered in "opcount". */
ca.opcount = opcount;
-#ifdef FEAT_SNIFF
- want_sniff_request = sniff_connected;
-#endif
-
/*
* If there is an operator pending, then the command we take this time
* will terminate it. Finish_op tells us to finish the operation before
@@ -9388,14 +9378,6 @@ nv_open(cmdarg_T *cap)
n_opencmd(cap);
}
-#ifdef FEAT_SNIFF
- static void
-nv_sniff(cmdarg_T *cap UNUSED)
-{
- ProcessSniffRequests();
-}
-#endif
-
#ifdef FEAT_NETBEANS_INTG
static void
nv_nbcmd(cmdarg_T *cap)
diff --git a/src/os_unix.c b/src/os_unix.c
index 3c0b48c35..360259a67 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -5340,7 +5340,6 @@ WaitForChar(long msec)
* "msec" == 0 will check for characters once.
* "msec" == -1 will block until a character is available.
* When a GUI is being used, this will not be used for input -- webb
- * Returns also, when a request from Sniff is waiting -- toni.
* Or when a Linux GPM mouse event is waiting.
* Or when a clientserver message is on the queue.
*/
@@ -5427,15 +5426,6 @@ RealWaitForChar(int fd, long msec, int *check_for_gpm UNUSED)
fds[0].events = POLLIN;
nfd = 1;
-# ifdef FEAT_SNIFF
-# define SNIFF_IDX 1
- if (want_sniff_request)
- {
- fds[SNIFF_IDX].fd = fd_from_sniff;
- fds[SNIFF_IDX].events = POLLIN;
- nfd++;
- }
-# endif
# ifdef FEAT_XCLIPBOARD
may_restore_clipboard();
if (xterm_Shell != (Widget)0)
@@ -5478,17 +5468,6 @@ RealWaitForChar(int fd, long msec, int *check_for_gpm UNUSED)
finished = FALSE;
# endif
-# ifdef FEAT_SNIFF
- if (ret < 0)
- sniff_disconnect(1);
- else if (want_sniff_request)
- {
- if (fds[SNIFF_IDX].revents & POLLHUP)
- sniff_disconnect(1);
- if (fds[SNIFF_IDX].revents & POLLIN)
- sniff_request_waiting = 1;
- }
-# endif
# ifdef FEAT_XCLIPBOARD
if (xterm_Shell != (Widget)0 && (fds[xterm_idx].revents & POLLIN))
{
@@ -5574,15 +5553,6 @@ select_eintr:
# endif
maxfd = fd;
-# ifdef FEAT_SNIFF
- if (want_sniff_request)
- {
- FD_SET(fd_from_sniff, &rfds);
- FD_SET(fd_from_sniff, &efds);
- if (maxfd < fd_from_sniff)
- maxfd = fd_from_sniff;
- }
-# endif
# ifdef FEAT_XCLIPBOARD
may_restore_clipboard();
if (xterm_Shell != (Widget)0)
@@ -5652,17 +5622,6 @@ select_eintr:
finished = FALSE;
# endif
-# ifdef FEAT_SNIFF
- if (ret < 0 )
- sniff_disconnect(1);
- else if (ret > 0 && want_sniff_request)
- {
- if (FD_ISSET(fd_from_sniff, &efds))
- sniff_disconnect(1);
- if (FD_ISSET(fd_from_sniff, &rfds))
- sniff_request_waiting = 1;
- }
-# endif
# ifdef FEAT_XCLIPBOARD
if (ret > 0 && xterm_Shell != (Widget)0
&& FD_ISSET(ConnectionNumber(xterm_dpy), &rfds))
diff --git a/src/os_win32.c b/src/os_win32.c
index b7b393083..28c026308 100644
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -1683,27 +1683,6 @@ mch_inchar(
if (typeaheadlen > 0)
goto theend;
-#ifdef FEAT_SNIFF
- if (want_sniff_request)
- {
- if (sniff_request_waiting)
- {
- /* return K_SNIFF */
- typeahead[typeaheadlen++] = CSI;
- typeahead[typeaheadlen++] = (char_u)KS_EXTRA;
- typeahead[typeaheadlen++] = (char_u)KE_SNIFF;
- sniff_request_waiting = 0;
- want_sniff_request = 0;
- goto theend;
- }
- else if (time < 0 || time > 250)
- {
- /* don't wait too long, a request might be pending */
- time = 250;
- }
- }
-#endif
-
if (time >= 0)
{
if (!WaitForChar(time)) /* no character available */
diff --git a/src/structs.h b/src/structs.h
index f3753306d..2989dcd9e 100644
--- a/src/structs.h
+++ b/src/structs.h
@@ -1639,10 +1639,6 @@ struct file_buffer
char b_fab_rat; /* Record attribute */
unsigned int b_fab_mrs; /* Max record size */
#endif
-#ifdef FEAT_SNIFF
- int b_sniff; /* file was loaded through Sniff */
-#endif
-
int b_fnum; /* buffer number for this file. */
int b_changed; /* 'modified': Set to TRUE if something in the
diff --git a/src/term.c b/src/term.c
index a97fe5484..d6ba5373b 100644
--- a/src/term.c
+++ b/src/term.c
@@ -1796,16 +1796,6 @@ set_termname(char_u *term)
# endif
#endif /* FEAT_MOUSE */
-#ifdef FEAT_SNIFF
- {
- char_u name[2];
-
- name[0] = (int)KS_EXTRA;
- name[1] = (int)KE_SNIFF;
- add_termcode(name, (char_u *)"\233sniff", FALSE);
- }
-#endif
-
#ifdef USE_TERM_CONSOLE
/* DEFAULT_TERM indicates that it is the machine console. */
if (STRCMP(term, DEFAULT_TERM) != 0)
diff --git a/src/ui.c b/src/ui.c
index 891da1bf4..be5d8c50f 100644
--- a/src/ui.c
+++ b/src/ui.c
@@ -1627,7 +1627,7 @@ set_input_buf(char_u *p)
#if defined(FEAT_GUI) \
|| defined(FEAT_MOUSE_GPM) || defined(FEAT_SYSMOUSE) \
|| defined(FEAT_XCLIPBOARD) || defined(VMS) \
- || defined(FEAT_SNIFF) || defined(FEAT_CLIENTSERVER) \
+ || defined(FEAT_CLIENTSERVER) \
|| defined(PROTO)
/*
* Add the given bytes to the input buffer
@@ -1772,17 +1772,7 @@ fill_input_buf(int exit_on_error UNUSED)
inbufcount = 0;
# else
-# ifdef FEAT_SNIFF
- if (sniff_request_waiting)
- {
- add_to_input_buf((char_u *)"\233sniff",6); /* results in K_SNIFF */
- sniff_request_waiting = 0;
- want_sniff_request = 0;
- return;
- }
-# endif
-
-# ifdef FEAT_MBYTE
+# ifdef FEAT_MBYTE
if (rest != NULL)
{
/* Use remainder of previous call, starts with an invalid character
@@ -1806,7 +1796,7 @@ fill_input_buf(int exit_on_error UNUSED)
}
else
unconverted = 0;
-#endif
+# endif
len = 0; /* to avoid gcc warning */
for (try = 0; try < 100; ++try)
diff --git a/src/version.c b/src/version.c
index 5ae9179d5..480fd8a7a 100644
--- a/src/version.c
+++ b/src/version.c
@@ -554,11 +554,6 @@ static char *(features[]) =
#else
"-smartindent",
#endif
-#ifdef FEAT_SNIFF
- "+sniff",
-#else
- "-sniff",
-#endif
#ifdef STARTUPTIME
"+startuptime",
#else
@@ -749,6 +744,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1433,
+/**/
1432,
/**/
1431,
diff --git a/src/vim.h b/src/vim.h
index fc693b39c..bf50dca6a 100644
--- a/src/vim.h
+++ b/src/vim.h
@@ -1972,10 +1972,6 @@ typedef int VimClipboard; /* This is required for the prototypes. */
#include "globals.h" /* global variables and messages */
-#ifdef FEAT_SNIFF
-# include "if_sniff.h"
-#endif
-
#ifndef FEAT_VIRTUALEDIT
# define getvvcol(w, p, s, c, e) getvcol(w, p, s, c, e)
# define virtual_active() FALSE