[6c5a343] | 1 | Submitted By: Joe Ciccone <jciccone@gmail.com>
|
---|
| 2 | Date: 01-08-2010
|
---|
| 3 | Initial Package Version: 7.3
|
---|
| 4 | Origin: Upstream
|
---|
| 5 | Upstream Status: From Upstream
|
---|
| 6 | Description: Contains all upstream patches between 7.3.001 and 7.3.099
|
---|
| 7 |
|
---|
| 8 | diff -Naur vim73.orig/runtime/doc/eval.txt vim73/runtime/doc/eval.txt
|
---|
| 9 | --- vim73.orig/runtime/doc/eval.txt 2010-08-15 08:23:20.000000000 -0400
|
---|
| 10 | +++ vim73/runtime/doc/eval.txt 2011-01-08 21:01:18.986656145 -0500
|
---|
| 11 | @@ -1657,6 +1657,15 @@
|
---|
| 12 | *v:warningmsg* *warningmsg-variable*
|
---|
| 13 | v:warningmsg Last given warning message. It's allowed to set this variable.
|
---|
| 14 |
|
---|
| 15 | + *v:windowid* *windowid-variable*
|
---|
| 16 | +v:windowid When any X11 based GUI is running or when running in a
|
---|
| 17 | + terminal and Vim connects to the X server (|-X|) this will be
|
---|
| 18 | + set to the window ID.
|
---|
| 19 | + When an MS-Windows GUI is running this will be set to the
|
---|
| 20 | + window handle.
|
---|
| 21 | + Otherwise the value is zero.
|
---|
| 22 | + Note: for windows inside Vim use |winnr()|.
|
---|
| 23 | +
|
---|
| 24 | ==============================================================================
|
---|
| 25 | 4. Builtin Functions *functions*
|
---|
| 26 |
|
---|
| 27 | @@ -1822,7 +1831,7 @@
|
---|
| 28 | log( {expr}) Float natural logarithm (base e) of {expr}
|
---|
| 29 | log10( {expr}) Float logarithm of Float {expr} to base 10
|
---|
| 30 | map( {expr}, {string}) List/Dict change each item in {expr} to {expr}
|
---|
| 31 | -maparg( {name}[, {mode} [, {abbr}]])
|
---|
| 32 | +maparg( {name}[, {mode} [, {abbr} [, {dict}]]])
|
---|
| 33 | String rhs of mapping {name} in mode {mode}
|
---|
| 34 | mapcheck( {name}[, {mode} [, {abbr}]])
|
---|
| 35 | String check for mappings matching {name}
|
---|
| 36 | @@ -3966,23 +3975,51 @@
|
---|
| 37 | further items in {expr} are processed.
|
---|
| 38 |
|
---|
| 39 |
|
---|
| 40 | -maparg({name}[, {mode} [, {abbr}]]) *maparg()*
|
---|
| 41 | - Return the rhs of mapping {name} in mode {mode}. When there
|
---|
| 42 | - is no mapping for {name}, an empty String is returned.
|
---|
| 43 | +maparg({name}[, {mode} [, {abbr} [, {dict}]]]) *maparg()*
|
---|
| 44 | + When {dict} is omitted or zero: Return the rhs of mapping
|
---|
| 45 | + {name} in mode {mode}. The returned String has special
|
---|
| 46 | + characters translated like in the output of the ":map" command
|
---|
| 47 | + listing.
|
---|
| 48 | +
|
---|
| 49 | + When there is no mapping for {name}, an empty String is
|
---|
| 50 | + returned.
|
---|
| 51 | +
|
---|
| 52 | + The {name} can have special key names, like in the ":map"
|
---|
| 53 | + command.
|
---|
| 54 | +
|
---|
| 55 | {mode} can be one of these strings:
|
---|
| 56 | "n" Normal
|
---|
| 57 | - "v" Visual
|
---|
| 58 | + "v" Visual (including Select)
|
---|
| 59 | "o" Operator-pending
|
---|
| 60 | "i" Insert
|
---|
| 61 | "c" Cmd-line
|
---|
| 62 | + "s" Select
|
---|
| 63 | + "x" Visual
|
---|
| 64 | "l" langmap |language-mapping|
|
---|
| 65 | "" Normal, Visual and Operator-pending
|
---|
| 66 | When {mode} is omitted, the modes for "" are used.
|
---|
| 67 | +
|
---|
| 68 | When {abbr} is there and it is non-zero use abbreviations
|
---|
| 69 | instead of mappings.
|
---|
| 70 | - The {name} can have special key names, like in the ":map"
|
---|
| 71 | - command. The returned String has special characters
|
---|
| 72 | - translated like in the output of the ":map" command listing.
|
---|
| 73 | +
|
---|
| 74 | + When {dict} is there and it is non-zero return a dictionary
|
---|
| 75 | + containing all the information of the mapping with the
|
---|
| 76 | + following items:
|
---|
| 77 | + "lhs" The {lhs} of the mapping.
|
---|
| 78 | + "rhs" The {rhs} of the mapping as typed.
|
---|
| 79 | + "silent" 1 for a |:map-silent| mapping, else 0.
|
---|
| 80 | + "noremap" 1 if the {rhs} of the mapping is remappable.
|
---|
| 81 | + "expr" 1 for an expression mapping (|:map-<expr>|).
|
---|
| 82 | + "buffer" 1 for a buffer local mapping (|:map-local|).
|
---|
| 83 | + "mode" Modes for which the mapping is defined. In
|
---|
| 84 | + addition to the modes mentioned above, these
|
---|
| 85 | + characters will be used:
|
---|
| 86 | + " " Normal, Visual and Operator-pending
|
---|
| 87 | + "!" Insert and Commandline mode
|
---|
| 88 | + (|mapmpde-ic|)
|
---|
| 89 | + "sid" the Script local ID, used for <sid> mappings
|
---|
| 90 | + (|<SID>|)
|
---|
| 91 | +
|
---|
| 92 | The mappings local to the current buffer are checked first,
|
---|
| 93 | then the global mappings.
|
---|
| 94 | This function can be used to map a key even when it's already
|
---|
| 95 | diff -Naur vim73.orig/runtime/doc/netbeans.txt vim73/runtime/doc/netbeans.txt
|
---|
| 96 | --- vim73.orig/runtime/doc/netbeans.txt 2010-08-15 08:23:21.000000000 -0400
|
---|
| 97 | +++ vim73/runtime/doc/netbeans.txt 2011-01-08 21:01:18.782656702 -0500
|
---|
| 98 | @@ -1,4 +1,4 @@
|
---|
| 99 | -*netbeans.txt* For Vim version 7.3. Last change: 2010 Jul 20
|
---|
| 100 | +*netbeans.txt* For Vim version 7.3. Last change: 2010 Aug 20
|
---|
| 101 |
|
---|
| 102 |
|
---|
| 103 | VIM REFERENCE MANUAL by Gordon Prieur et al.
|
---|
| 104 | @@ -118,7 +118,8 @@
|
---|
| 105 | uncommenting a line with "--disable-netbeans" in the Makefile.
|
---|
| 106 |
|
---|
| 107 | Currently the NetBeans interface is supported by Vim running in a terminal and
|
---|
| 108 | -by GVim when it is run with one of the following GUIs: GTK, GNOME, and Motif.
|
---|
| 109 | +by GVim when it is run with one of the following GUIs: GTK, GNOME, Windows,
|
---|
| 110 | +Athena and Motif.
|
---|
| 111 |
|
---|
| 112 | If Motif support is required the user must supply XPM libraries. See
|
---|
| 113 | |workshop-xpm| for details on obtaining the latest version of XPM.
|
---|
| 114 | diff -Naur vim73.orig/runtime/doc/options.txt vim73/runtime/doc/options.txt
|
---|
| 115 | --- vim73.orig/runtime/doc/options.txt 2010-08-15 08:23:21.000000000 -0400
|
---|
| 116 | +++ vim73/runtime/doc/options.txt 2011-01-08 21:01:19.258656350 -0500
|
---|
| 117 | @@ -1434,6 +1434,15 @@
|
---|
| 118 | explicitly accessed using the "* notation. Also see
|
---|
| 119 | |gui-clipboard|.
|
---|
| 120 |
|
---|
| 121 | + unnamedplus A variant of "unnamed" flag which uses the clipboard
|
---|
| 122 | + register '+' (|quoteplus|) instead of register '*' for
|
---|
| 123 | + all operations except yank. Yank shall copy the text
|
---|
| 124 | + into register '+' and also into '*' when "unnamed" is
|
---|
| 125 | + included.
|
---|
| 126 | + Only available with the |+x11| feature.
|
---|
| 127 | + Availability can be checked with: >
|
---|
| 128 | + if has('unnamedplus')
|
---|
| 129 | +<
|
---|
| 130 | autoselect Works like the 'a' flag in 'guioptions': If present,
|
---|
| 131 | then whenever Visual mode is started, or the Visual
|
---|
| 132 | area extended, Vim tries to become the owner of the
|
---|
| 133 | @@ -7530,8 +7539,9 @@
|
---|
| 134 | ! When included, save and restore global variables that start
|
---|
| 135 | with an uppercase letter, and don't contain a lowercase
|
---|
| 136 | letter. Thus "KEEPTHIS and "K_L_M" are stored, but "KeepThis"
|
---|
| 137 | - and "_K_L_M" are not. Only String and Number types are
|
---|
| 138 | - stored.
|
---|
| 139 | + and "_K_L_M" are not. Nested List and Dict items may not be
|
---|
| 140 | + read back correctly, you end up with a string representation
|
---|
| 141 | + instead.
|
---|
| 142 | " Maximum number of lines saved for each register. Old name of
|
---|
| 143 | the '<' item, with the disadvantage that you need to put a
|
---|
| 144 | backslash before the ", otherwise it will be recognized as the
|
---|
| 145 | @@ -7747,6 +7757,17 @@
|
---|
| 146 | a pattern from the list. This avoids problems when a future version
|
---|
| 147 | uses another default.
|
---|
| 148 |
|
---|
| 149 | +
|
---|
| 150 | + *'wildignorecase* *'wic'* *'nowildignorecase* *'nowic'*
|
---|
| 151 | +'wildignorecase' 'wic' boolean (default off)
|
---|
| 152 | + global
|
---|
| 153 | + {not in Vi}
|
---|
| 154 | + When set case is ignored when completing file names and directories.
|
---|
| 155 | + Has no effect on systems where file name case is generally ignored.
|
---|
| 156 | + Does not apply when the shell is used to expand wildcards, which
|
---|
| 157 | + happens when there are special characters.
|
---|
| 158 | +
|
---|
| 159 | +
|
---|
| 160 | *'wildmenu'* *'wmnu'* *'nowildmenu'* *'nowmnu'*
|
---|
| 161 | 'wildmenu' 'wmnu' boolean (default off)
|
---|
| 162 | global
|
---|
| 163 | diff -Naur vim73.orig/src/GvimExt/Make_ming.mak vim73/src/GvimExt/Make_ming.mak
|
---|
| 164 | --- vim73.orig/src/GvimExt/Make_ming.mak 2010-05-15 07:04:10.000000000 -0400
|
---|
| 165 | +++ vim73/src/GvimExt/Make_ming.mak 2011-01-08 21:01:19.490656530 -0500
|
---|
| 166 | @@ -17,6 +17,17 @@
|
---|
| 167 | # check also the executables
|
---|
| 168 | MINGWOLD = no
|
---|
| 169 |
|
---|
| 170 | +# Link against the shared versions of libgcc/libstdc++ by default. Set
|
---|
| 171 | +# STATIC_STDCPLUS to "yes" to link against static versions instead.
|
---|
| 172 | +STATIC_STDCPLUS=no
|
---|
| 173 | +#STATIC_STDCPLUS=yes
|
---|
| 174 | +
|
---|
| 175 | +# Note: -static-libstdc++ is not available until gcc 4.5.x.
|
---|
| 176 | +LDFLAGS += -shared
|
---|
| 177 | +ifeq (yes, $(STATIC_STDCPLUS))
|
---|
| 178 | +LDFLAGS += -static-libgcc -static-libstdc++
|
---|
| 179 | +endif
|
---|
| 180 | +
|
---|
| 181 | ifeq ($(CROSS),yes)
|
---|
| 182 | DEL = rm
|
---|
| 183 | ifeq ($(MINGWOLD),yes)
|
---|
| 184 | @@ -34,6 +45,8 @@
|
---|
| 185 | endif
|
---|
| 186 | CXX := $(CROSS_COMPILE)g++
|
---|
| 187 | WINDRES := $(CROSS_COMPILE)windres
|
---|
| 188 | +WINDRES_CXX = $(CXX)
|
---|
| 189 | +WINDRES_FLAGS = --preprocessor="$(WINDRES_CXX) -E -xc" -DRC_INVOKED
|
---|
| 190 | LIBS := -luuid
|
---|
| 191 | RES := gvimext.res
|
---|
| 192 | DEFFILE = gvimext_ming.def
|
---|
| 193 | @@ -46,7 +59,7 @@
|
---|
| 194 | all: all-before $(DLL) all-after
|
---|
| 195 |
|
---|
| 196 | $(DLL): $(OBJ) $(RES) $(DEFFILE)
|
---|
| 197 | - $(CXX) -shared $(CXXFLAGS) -s -o $@ \
|
---|
| 198 | + $(CXX) $(LDFLAGS) $(CXXFLAGS) -s -o $@ \
|
---|
| 199 | -Wl,--enable-auto-image-base \
|
---|
| 200 | -Wl,--enable-auto-import \
|
---|
| 201 | -Wl,--whole-archive \
|
---|
| 202 | @@ -58,7 +71,7 @@
|
---|
| 203 | $(CXX) $(CXXFLAGS) -DFEAT_GETTEXT -c $? -o $@
|
---|
| 204 |
|
---|
| 205 | $(RES): gvimext_ming.rc
|
---|
| 206 | - $(WINDRES) --input-format=rc --output-format=coff -DMING $? -o $@
|
---|
| 207 | + $(WINDRES) $(WINDRES_FLAGS) --input-format=rc --output-format=coff -DMING $? -o $@
|
---|
| 208 |
|
---|
| 209 | clean: clean-custom
|
---|
| 210 | -$(DEL) $(OBJ) $(RES) $(DLL)
|
---|
| 211 | diff -Naur vim73.orig/src/Make_cyg.mak vim73/src/Make_cyg.mak
|
---|
| 212 | --- vim73.orig/src/Make_cyg.mak 2010-08-02 15:09:22.000000000 -0400
|
---|
| 213 | +++ vim73/src/Make_cyg.mak 2011-01-08 21:01:19.102656144 -0500
|
---|
| 214 | @@ -1,6 +1,6 @@
|
---|
| 215 | #
|
---|
| 216 | # Makefile for VIM on Win32, using Cygnus gcc
|
---|
| 217 | -# Last updated by Dan Sharp. Last Change: 2010 Feb 24
|
---|
| 218 | +# Last updated by Dan Sharp. Last Change: 2010 Nov 03
|
---|
| 219 | #
|
---|
| 220 | # Also read INSTALLpc.txt!
|
---|
| 221 | #
|
---|
| 222 | @@ -27,6 +27,7 @@
|
---|
| 223 | # MZSCHEME_VER define to version of MzScheme being used (209_000)
|
---|
| 224 | # DYNAMIC_MZSCHEME no or yes: use yes to load the MzScheme DLLs dynamically (yes)
|
---|
| 225 | # MZSCHEME_DLLS path to MzScheme DLLs (libmzgc and libmzsch), for "static" build.
|
---|
| 226 | +# MZSCHEME_USE_RACKET define to use "racket" instead of "mzsch".
|
---|
| 227 | # LUA define to path to Lua dir to get Lua support (not defined)
|
---|
| 228 | # LUA_VER define to version of Lua being used (51)
|
---|
| 229 | # DYNAMIC_LUA no or yes: use yes to load the Lua DLL dynamically (yes)
|
---|
| 230 | @@ -254,16 +255,22 @@
|
---|
| 231 | MZSCHEME_GENERATE_BASE=no
|
---|
| 232 | endif
|
---|
| 233 |
|
---|
| 234 | +ifndef MZSCHEME_USE_RACKET
|
---|
| 235 | +MZSCHEME_MAIN_LIB=mzsch
|
---|
| 236 | +else
|
---|
| 237 | +MZSCHEME_MAIN_LIB=racket
|
---|
| 238 | +endif
|
---|
| 239 | +
|
---|
| 240 | ifeq (yes, $(DYNAMIC_MZSCHEME))
|
---|
| 241 | -DEFINES += -DDYNAMIC_MZSCHEME -DDYNAMIC_MZSCH_DLL=\"libmzsch$(MZSCHEME_VER).dll\" -DDYNAMIC_MZGC_DLL=\"libmzgc$(MZSCHEME_VER).dll\"
|
---|
| 242 | +DEFINES += -DDYNAMIC_MZSCHEME -DDYNAMIC_MZSCH_DLL=\"lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).dll\" -DDYNAMIC_MZGC_DLL=\"libmzgc$(MZSCHEME_VER).dll\"
|
---|
| 243 | else
|
---|
| 244 | ifndef MZSCHEME_DLLS
|
---|
| 245 | MZSCHEME_DLLS = $(MZSCHEME)
|
---|
| 246 | endif
|
---|
| 247 | ifeq (yes,$(MZSCHEME_PRECISE_GC))
|
---|
| 248 | -MZSCHEME_LIB=-lmzsch$(MZSCHEME_VER)
|
---|
| 249 | +MZSCHEME_LIB=-l$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER)
|
---|
| 250 | else
|
---|
| 251 | -MZSCHEME_LIB = -lmzsch$(MZSCHEME_VER) -lmzgc$(MZSCHEME_VER)
|
---|
| 252 | +MZSCHEME_LIB = -l$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER) -lmzgc$(MZSCHEME_VER)
|
---|
| 253 | endif
|
---|
| 254 | EXTRA_LIBS += -L$(MZSCHEME_DLLS) -L$(MZSCHEME_DLLS)/lib $(MZSCHEME_LIB)
|
---|
| 255 | endif
|
---|
| 256 | diff -Naur vim73.orig/src/Make_ming.mak vim73/src/Make_ming.mak
|
---|
| 257 | --- vim73.orig/src/Make_ming.mak 2010-08-02 15:09:43.000000000 -0400
|
---|
| 258 | +++ vim73/src/Make_ming.mak 2011-01-08 21:01:19.490656530 -0500
|
---|
| 259 | @@ -56,6 +56,12 @@
|
---|
| 260 | NETBEANS=$(GUI)
|
---|
| 261 |
|
---|
| 262 |
|
---|
| 263 | +# Link against the shared version of libstdc++ by default. Set
|
---|
| 264 | +# STATIC_STDCPLUS to "yes" to link against static version instead.
|
---|
| 265 | +ifndef STATIC_STDCPLUS
|
---|
| 266 | +STATIC_STDCPLUS=no
|
---|
| 267 | +endif
|
---|
| 268 | +
|
---|
| 269 | # If the user doesn't want gettext, undefine it.
|
---|
| 270 | ifeq (no, $(GETTEXT))
|
---|
| 271 | GETTEXT=
|
---|
| 272 | @@ -141,11 +147,17 @@
|
---|
| 273 | MZSCHEME_GENERATE_BASE=no
|
---|
| 274 | endif
|
---|
| 275 |
|
---|
| 276 | +ifndef MZSCHEME_USE_RACKET
|
---|
| 277 | +MZSCHEME_MAIN_LIB=mzsch
|
---|
| 278 | +else
|
---|
| 279 | +MZSCHEME_MAIN_LIB=racket
|
---|
| 280 | +endif
|
---|
| 281 | +
|
---|
| 282 | ifeq (no,$(DYNAMIC_MZSCHEME))
|
---|
| 283 | ifeq (yes,$(MZSCHEME_PRECISE_GC))
|
---|
| 284 | -MZSCHEME_LIB=-lmzsch$(MZSCHEME_VER)
|
---|
| 285 | +MZSCHEME_LIB=-l$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER)
|
---|
| 286 | else
|
---|
| 287 | -MZSCHEME_LIB = -lmzsch$(MZSCHEME_VER) -lmzgc$(MZSCHEME_VER)
|
---|
| 288 | +MZSCHEME_LIB = -l$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER) -lmzgc$(MZSCHEME_VER)
|
---|
| 289 | endif
|
---|
| 290 | # the modern MinGW can dynamically link to dlls directly.
|
---|
| 291 | # point MZSCHEME_DLLS to where you put libmzschXXXXXXX.dll and libgcXXXXXXX.dll
|
---|
| 292 | @@ -304,11 +316,13 @@
|
---|
| 293 | endif
|
---|
| 294 | CC := $(CROSS_COMPILE)gcc
|
---|
| 295 | WINDRES := $(CROSS_COMPILE)windres
|
---|
| 296 | +WINDRES_CC = $(CC)
|
---|
| 297 |
|
---|
| 298 | #>>>>> end of choices
|
---|
| 299 | ###########################################################################
|
---|
| 300 |
|
---|
| 301 | CFLAGS = -Iproto $(DEFINES) -pipe -w -march=$(ARCH) -Wall
|
---|
| 302 | +WINDRES_FLAGS = --preprocessor="$(WINDRES_CC) -E -xc" -DRC_INVOKED
|
---|
| 303 |
|
---|
| 304 | ifdef GETTEXT
|
---|
| 305 | DEFINES += -DHAVE_GETTEXT -DHAVE_LOCALE_H
|
---|
| 306 | @@ -343,7 +357,7 @@
|
---|
| 307 | ifdef MZSCHEME
|
---|
| 308 | CFLAGS += -I$(MZSCHEME)/include -DFEAT_MZSCHEME -DMZSCHEME_COLLECTS=\"$(MZSCHEME)/collects\"
|
---|
| 309 | ifeq (yes, $(DYNAMIC_MZSCHEME))
|
---|
| 310 | -CFLAGS += -DDYNAMIC_MZSCHEME -DDYNAMIC_MZSCH_DLL=\"libmzsch$(MZSCHEME_VER).dll\" -DDYNAMIC_MZGC_DLL=\"libmzgc$(MZSCHEME_VER).dll\"
|
---|
| 311 | +CFLAGS += -DDYNAMIC_MZSCHEME -DDYNAMIC_MZSCH_DLL=\"lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).dll\" -DDYNAMIC_MZGC_DLL=\"libmzgc$(MZSCHEME_VER).dll\"
|
---|
| 312 | endif
|
---|
| 313 | endif
|
---|
| 314 |
|
---|
| 315 | @@ -571,8 +585,13 @@
|
---|
| 316 | endif
|
---|
| 317 |
|
---|
| 318 | ifeq (yes, $(OLE))
|
---|
| 319 | -LIB += -loleaut32 -lstdc++
|
---|
| 320 | +LIB += -loleaut32
|
---|
| 321 | OBJ += $(OUTDIR)/if_ole.o
|
---|
| 322 | +ifeq (yes, $(STATIC_STDCPLUS))
|
---|
| 323 | +LIB += -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic
|
---|
| 324 | +else
|
---|
| 325 | +LIB += -lstdc++
|
---|
| 326 | +endif
|
---|
| 327 | endif
|
---|
| 328 |
|
---|
| 329 | ifeq (yes, $(MBYTE))
|
---|
| 330 | @@ -650,10 +669,10 @@
|
---|
| 331 | $(CC) -c $(CFLAGS) $< -o $@
|
---|
| 332 |
|
---|
| 333 | $(OUTDIR)/vimres.res: vim.rc version.h gui_w32_rc.h
|
---|
| 334 | - $(WINDRES) $(DEFINES) vim.rc $(OUTDIR)/vimres.res
|
---|
| 335 | + $(WINDRES) $(WINDRES_FLAGS) $(DEFINES) vim.rc $(OUTDIR)/vimres.res
|
---|
| 336 |
|
---|
| 337 | $(OUTDIR)/vimrc.o: $(OUTDIR)/vimres.res
|
---|
| 338 | - $(WINDRES) $(OUTDIR)/vimres.res $(OUTDIR)/vimrc.o
|
---|
| 339 | + $(WINDRES) $(WINDRES_FLAGS) $(OUTDIR)/vimres.res $(OUTDIR)/vimrc.o
|
---|
| 340 |
|
---|
| 341 | $(OUTDIR):
|
---|
| 342 | $(MKDIR) $(OUTDIR)
|
---|
| 343 | diff -Naur vim73.orig/src/Make_mvc.mak vim73/src/Make_mvc.mak
|
---|
| 344 | --- vim73.orig/src/Make_mvc.mak 2010-07-18 15:24:20.000000000 -0400
|
---|
| 345 | +++ vim73/src/Make_mvc.mak 2011-01-08 21:01:19.314657721 -0500
|
---|
| 346 | @@ -380,9 +380,6 @@
|
---|
| 347 | !if "$(_NMAKE_VER)" == "10.00.30319.01"
|
---|
| 348 | MSVCVER = 10.0
|
---|
| 349 | !endif
|
---|
| 350 | -!if "$(_NMAKE_VER)" == "9.00.30729.01"
|
---|
| 351 | -MSVCVER = 9.0
|
---|
| 352 | -!endif
|
---|
| 353 | !endif
|
---|
| 354 |
|
---|
| 355 | # Abort bulding VIM if version of VC is unrecognised.
|
---|
| 356 | @@ -705,12 +702,18 @@
|
---|
| 357 | MZSCHEME_VER = 205_000
|
---|
| 358 | !endif
|
---|
| 359 | CFLAGS = $(CFLAGS) -DFEAT_MZSCHEME -I $(MZSCHEME)\include
|
---|
| 360 | -!if EXIST("$(MZSCHEME)\collects\scheme\base.ss")
|
---|
| 361 | -# for MzScheme 4.x we need to include byte code for basic Scheme stuff
|
---|
| 362 | +!if EXIST("$(MZSCHEME)\collects\scheme\base.ss") \
|
---|
| 363 | + || EXIST("$(MZSCHEME)\collects\scheme\base.rkt")
|
---|
| 364 | +# for MzScheme >= 4 we need to include byte code for basic Scheme stuff
|
---|
| 365 | MZSCHEME_EXTRA_DEP = mzscheme_base.c
|
---|
| 366 | CFLAGS = $(CFLAGS) -DINCLUDE_MZSCHEME_BASE
|
---|
| 367 | !endif
|
---|
| 368 | -!if EXIST("$(MZSCHEME)\lib\msvc\libmzsch$(MZSCHEME_VER).lib") \
|
---|
| 369 | +!if EXIST("$(MZSCHEME)\lib\msvc\libmzsch$(MZSCHEME_VER).lib")
|
---|
| 370 | +MZSCHEME_MAIN_LIB=mzsch
|
---|
| 371 | +!else
|
---|
| 372 | +MZSCHEME_MAIN_LIB=racket
|
---|
| 373 | +!endif
|
---|
| 374 | +!if EXIST("$(MZSCHEME)\lib\msvc\lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).lib") \
|
---|
| 375 | && !EXIST("$(MZSCHEME)\lib\msvc\libmzgc$(MZSCHEME_VER).lib")
|
---|
| 376 | !message Building with Precise GC
|
---|
| 377 | MZSCHEME_PRECISE_GC = yes
|
---|
| 378 | @@ -722,7 +725,7 @@
|
---|
| 379 | !endif
|
---|
| 380 | !message MzScheme DLLs will be loaded dynamically
|
---|
| 381 | CFLAGS = $(CFLAGS) -DDYNAMIC_MZSCHEME \
|
---|
| 382 | - -DDYNAMIC_MZSCH_DLL=\"libmzsch$(MZSCHEME_VER).dll\" \
|
---|
| 383 | + -DDYNAMIC_MZSCH_DLL=\"lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).dll\" \
|
---|
| 384 | -DDYNAMIC_MZGC_DLL=\"libmzgc$(MZSCHEME_VER).dll\"
|
---|
| 385 | !else
|
---|
| 386 | !if "$(MZSCHEME_DEBUG)" == "yes"
|
---|
| 387 | @@ -730,10 +733,10 @@
|
---|
| 388 | !endif
|
---|
| 389 | !if "$(MZSCHEME_PRECISE_GC)" == "yes"
|
---|
| 390 | # Precise GC does not use separate dll
|
---|
| 391 | -MZSCHEME_LIB = $(MZSCHEME)\lib\msvc\libmzsch$(MZSCHEME_VER).lib
|
---|
| 392 | +MZSCHEME_LIB = $(MZSCHEME)\lib\msvc\lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).lib
|
---|
| 393 | !else
|
---|
| 394 | MZSCHEME_LIB = $(MZSCHEME)\lib\msvc\libmzgc$(MZSCHEME_VER).lib \
|
---|
| 395 | - $(MZSCHEME)\lib\msvc\libmzsch$(MZSCHEME_VER).lib
|
---|
| 396 | + $(MZSCHEME)\lib\msvc\lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).lib
|
---|
| 397 | !endif
|
---|
| 398 | !endif
|
---|
| 399 | MZSCHEME_OBJ = $(OUTDIR)\if_mzsch.obj
|
---|
| 400 | diff -Naur vim73.orig/src/Makefile vim73/src/Makefile
|
---|
| 401 | --- vim73.orig/src/Makefile 2010-08-15 08:56:15.000000000 -0400
|
---|
| 402 | +++ vim73/src/Makefile 2011-01-08 21:01:19.114655467 -0500
|
---|
| 403 | @@ -414,12 +414,16 @@
|
---|
| 404 | # However, this may still cause problems, such as "import termios" failing.
|
---|
| 405 | # Build two separate versions of Vim in that case.
|
---|
| 406 | #CONF_OPT_PYTHON = --enable-pythoninterp
|
---|
| 407 | +#CONF_OPT_PYTHON = --enable-pythoninterp=dynamic
|
---|
| 408 | #CONF_OPT_PYTHON3 = --enable-python3interp
|
---|
| 409 | +#CONF_OPT_PYTHON3 = --enable-python3interp=dynamic
|
---|
| 410 |
|
---|
| 411 | # RUBY
|
---|
| 412 | # Uncomment this when you want to include the Ruby interface.
|
---|
| 413 | +# First one for static linking, second one for loading when used.
|
---|
| 414 | # Note: you need the development package (e.g., ruby1.9.1-dev on Ubuntu).
|
---|
| 415 | #CONF_OPT_RUBY = --enable-rubyinterp
|
---|
| 416 | +#CONF_OPT_RUBY = --enable-rubyinterp=dynamic
|
---|
| 417 | #CONF_OPT_RUBY = --enable-rubyinterp --with-ruby-command=ruby1.9.1
|
---|
| 418 |
|
---|
| 419 | # TCL
|
---|
| 420 | @@ -1047,8 +1051,9 @@
|
---|
| 421 | INSTALL_DATA = cp
|
---|
| 422 | INSTALL_DATA_R = cp -r
|
---|
| 423 |
|
---|
| 424 | -### Program to run on installed binary
|
---|
| 425 | +### Program to run on installed binary. Use the second one to disable strip.
|
---|
| 426 | #STRIP = strip
|
---|
| 427 | +#STRIP = /bin/true
|
---|
| 428 |
|
---|
| 429 | ### Permissions for binaries {{{1
|
---|
| 430 | BINMOD = 755
|
---|
| 431 | @@ -1321,7 +1326,7 @@
|
---|
| 432 | .SUFFIXES: .c .o .pro
|
---|
| 433 |
|
---|
| 434 | PRE_DEFS = -Iproto $(DEFS) $(GUI_DEFS) $(GUI_IPATH) $(CPPFLAGS) $(EXTRA_IPATHS)
|
---|
| 435 | -POST_DEFS = $(X_CFLAGS) $(MZSCHEME_CFLAGS) $(TCL_CFLAGS) $(RUBY_CFLAGS) $(EXTRA_DEFS)
|
---|
| 436 | +POST_DEFS = $(X_CFLAGS) $(MZSCHEME_CFLAGS) $(TCL_CFLAGS) $(EXTRA_DEFS)
|
---|
| 437 |
|
---|
| 438 | ALL_CFLAGS = $(PRE_DEFS) $(CFLAGS) $(PROFILE_CFLAGS) $(POST_DEFS)
|
---|
| 439 |
|
---|
| 440 | @@ -1329,7 +1334,7 @@
|
---|
| 441 | # with "-E".
|
---|
| 442 | OSDEF_CFLAGS = $(PRE_DEFS) $(POST_DEFS)
|
---|
| 443 |
|
---|
| 444 | -LINT_CFLAGS = -DLINT -I. $(PRE_DEFS) $(POST_DEFS) $(LUA_CFLAGS) $(PERL_CFLAGS) $(PYTHON_CFLAGS) -Dinline= -D__extension__= -Dalloca=alloca
|
---|
| 445 | +LINT_CFLAGS = -DLINT -I. $(PRE_DEFS) $(POST_DEFS) $(RUBY_CFLAGS) $(LUA_CFLAGS) $(PERL_CFLAGS) $(PYTHON_CFLAGS) -Dinline= -D__extension__= -Dalloca=alloca
|
---|
| 446 |
|
---|
| 447 | LINT_EXTRA = -DUSE_SNIFF -DHANGUL_INPUT -D"__attribute__(x)="
|
---|
| 448 |
|
---|
| 449 | @@ -1695,7 +1700,8 @@
|
---|
| 450 | $(CCC) version.c -o objects/version.o
|
---|
| 451 | @LINK="$(PURIFY) $(SHRPENV) $(CClink) $(ALL_LIB_DIRS) $(LDFLAGS) \
|
---|
| 452 | -o $(VIMTARGET) $(OBJ) objects/version.o $(ALL_LIBS)" \
|
---|
| 453 | - MAKE="$(MAKE)" sh $(srcdir)/link.sh
|
---|
| 454 | + MAKE="$(MAKE)" LINK_AS_NEEDED=$(LINK_AS_NEEDED) \
|
---|
| 455 | + sh $(srcdir)/link.sh
|
---|
| 456 |
|
---|
| 457 | xxd/xxd$(EXEEXT): xxd/xxd.c
|
---|
| 458 | cd xxd; CC="$(CC)" CFLAGS="$(CPPFLAGS) $(CFLAGS)" \
|
---|
| 459 | @@ -2532,7 +2538,7 @@
|
---|
| 460 | $(CCC) $(PYTHON3_CFLAGS) $(PYTHON3_CFLAGS_EXTRA) -o $@ if_python3.c
|
---|
| 461 |
|
---|
| 462 | objects/if_ruby.o: if_ruby.c
|
---|
| 463 | - $(CCC) -o $@ if_ruby.c
|
---|
| 464 | + $(CCC) $(RUBY_CFLAGS) -o $@ if_ruby.c
|
---|
| 465 |
|
---|
| 466 | objects/if_sniff.o: if_sniff.c
|
---|
| 467 | $(CCC) -o $@ if_sniff.c
|
---|
| 468 | diff -Naur vim73.orig/src/auto/configure vim73/src/auto/configure
|
---|
| 469 | --- vim73.orig/src/auto/configure 2010-08-13 10:17:15.000000000 -0400
|
---|
| 470 | +++ vim73/src/auto/configure 2011-01-08 21:01:19.190656939 -0500
|
---|
| 471 | @@ -593,6 +593,7 @@
|
---|
| 472 |
|
---|
| 473 | ac_subst_vars='LTLIBOBJS
|
---|
| 474 | LIBOBJS
|
---|
| 475 | +LINK_AS_NEEDED
|
---|
| 476 | DEPEND_CFLAGS_FILTER
|
---|
| 477 | MAKEMO
|
---|
| 478 | MSGFMT
|
---|
| 479 | @@ -1427,7 +1428,7 @@
|
---|
| 480 | --enable-pythoninterp=OPTS Include Python interpreter. default=no OPTS=no/yes/dynamic
|
---|
| 481 | --enable-python3interp=OPTS Include Python3 interpreter. default=no OPTS=no/yes/dynamic
|
---|
| 482 | --enable-tclinterp Include Tcl interpreter.
|
---|
| 483 | - --enable-rubyinterp Include Ruby interpreter.
|
---|
| 484 | + --enable-rubyinterp=OPTS Include Ruby interpreter. default=no OPTS=no/yes/dynamic
|
---|
| 485 | --enable-cscope Include cscope interface.
|
---|
| 486 | --enable-workshop Include Sun Visual Workshop support.
|
---|
| 487 | --disable-netbeans Disable NetBeans integration support.
|
---|
| 488 | @@ -4862,16 +4863,36 @@
|
---|
| 489 | else
|
---|
| 490 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
---|
| 491 | $as_echo "no" >&6; }
|
---|
| 492 | - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if scheme.h can be found in /usr/include/plt/" >&5
|
---|
| 493 | -$as_echo_n "checking if scheme.h can be found in /usr/include/plt/... " >&6; }
|
---|
| 494 | - if test -f /usr/include/plt/scheme.h; then
|
---|
| 495 | + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/racket" >&5
|
---|
| 496 | +$as_echo_n "checking if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/racket... " >&6; }
|
---|
| 497 | + if test -f $vi_cv_path_mzscheme_pfx/include/racket/scheme.h; then
|
---|
| 498 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
|
---|
| 499 | $as_echo "yes" >&6; }
|
---|
| 500 | - SCHEME_INC=/usr/include/plt
|
---|
| 501 | + SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/racket
|
---|
| 502 | else
|
---|
| 503 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
---|
| 504 | $as_echo "no" >&6; }
|
---|
| 505 | - vi_cv_path_mzscheme_pfx=
|
---|
| 506 | + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if scheme.h can be found in /usr/include/plt/" >&5
|
---|
| 507 | +$as_echo_n "checking if scheme.h can be found in /usr/include/plt/... " >&6; }
|
---|
| 508 | + if test -f /usr/include/plt/scheme.h; then
|
---|
| 509 | + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
|
---|
| 510 | +$as_echo "yes" >&6; }
|
---|
| 511 | + SCHEME_INC=/usr/include/plt
|
---|
| 512 | + else
|
---|
| 513 | + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
---|
| 514 | +$as_echo "no" >&6; }
|
---|
| 515 | + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if scheme.h can be found in /usr/include/racket/" >&5
|
---|
| 516 | +$as_echo_n "checking if scheme.h can be found in /usr/include/racket/... " >&6; }
|
---|
| 517 | + if test -f /usr/include/racket/scheme.h; then
|
---|
| 518 | + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
|
---|
| 519 | +$as_echo "yes" >&6; }
|
---|
| 520 | + SCHEME_INC=/usr/include/racket
|
---|
| 521 | + else
|
---|
| 522 | + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
---|
| 523 | +$as_echo "no" >&6; }
|
---|
| 524 | + vi_cv_path_mzscheme_pfx=
|
---|
| 525 | + fi
|
---|
| 526 | + fi
|
---|
| 527 | fi
|
---|
| 528 | fi
|
---|
| 529 | fi
|
---|
| 530 | @@ -4883,12 +4904,22 @@
|
---|
| 531 | elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then
|
---|
| 532 | MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"
|
---|
| 533 | MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
|
---|
| 534 | - elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"; then
|
---|
| 535 | + elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"; then
|
---|
| 536 | + MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"
|
---|
| 537 | + MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
|
---|
| 538 | + elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.a"; then
|
---|
| 539 | + MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
|
---|
| 540 | + elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a"; then
|
---|
| 541 | MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
|
---|
| 542 | else
|
---|
| 543 | if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.so"; then
|
---|
| 544 | MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme3m"
|
---|
| 545 | MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
|
---|
| 546 | + elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.so"; then
|
---|
| 547 | + MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket3m"
|
---|
| 548 | + MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
|
---|
| 549 | + elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.so"; then
|
---|
| 550 | + MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket -lmzgc"
|
---|
| 551 | else
|
---|
| 552 | MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc"
|
---|
| 553 | fi
|
---|
| 554 | @@ -4901,10 +4932,20 @@
|
---|
| 555 | fi
|
---|
| 556 | if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then
|
---|
| 557 | SCHEME_COLLECTS=lib/plt/
|
---|
| 558 | + else
|
---|
| 559 | + if test -d $vi_cv_path_mzscheme_pfx/lib/racket/collects; then
|
---|
| 560 | + SCHEME_COLLECTS=lib/racket/
|
---|
| 561 | + fi
|
---|
| 562 | fi
|
---|
| 563 | if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.ss" ; then
|
---|
| 564 | - MZSCHEME_EXTRA="mzscheme_base.c"
|
---|
| 565 | - MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE"
|
---|
| 566 | + MZSCHEME_EXTRA="mzscheme_base.c"
|
---|
| 567 | + else
|
---|
| 568 | + if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.rkt" ; then
|
---|
| 569 | + MZSCHEME_EXTRA="mzscheme_base.c"
|
---|
| 570 | + fi
|
---|
| 571 | + fi
|
---|
| 572 | + if test "X$MZSCHEME_EXTRA" != "X" ; then
|
---|
| 573 | + MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE"
|
---|
| 574 | MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
|
---|
| 575 | fi
|
---|
| 576 | MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \
|
---|
| 577 | @@ -5285,9 +5326,9 @@
|
---|
| 578 |
|
---|
| 579 | PYTHON_LIBS="${vi_cv_path_python_plibs}"
|
---|
| 580 | if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
|
---|
| 581 | - PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version}"
|
---|
| 582 | + PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -DPYTHON_HOME=\\\"${vi_cv_path_python_pfx}\\\""
|
---|
| 583 | else
|
---|
| 584 | - PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -I${vi_cv_path_python_epfx}/include/python${vi_cv_var_python_version}"
|
---|
| 585 | + PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -I${vi_cv_path_python_epfx}/include/python${vi_cv_var_python_version} -DPYTHON_HOME=\\\"${vi_cv_path_python_pfx}\\\""
|
---|
| 586 | fi
|
---|
| 587 | PYTHON_SRC="if_python.c"
|
---|
| 588 | if test "x$MACOSX" = "xyes"; then
|
---|
| 589 | @@ -5298,7 +5339,7 @@
|
---|
| 590 | if test "${vi_cv_var_python_version}" = "1.4"; then
|
---|
| 591 | PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
|
---|
| 592 | fi
|
---|
| 593 | - PYTHON_GETPATH_CFLAGS="-DPYTHONPATH='\"${vi_cv_path_pythonpath}\"' -DPREFIX='\"${vi_cv_path_python_pfx}\"' -DEXEC_PREFIX='\"${vi_cv_path_python_epfx}\"'"
|
---|
| 594 | + PYTHON_GETPATH_CFLAGS="-DPYTHONPATH='\"${vi_cv_path_pythonpath}\"' -DPREFIX='\"${vi_cv_path_python_pfx}\"' -DEXEC_PREFIX='\"${vi_cv_path_python_epfx}\"'"
|
---|
| 595 |
|
---|
| 596 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking if -pthread should be used" >&5
|
---|
| 597 | $as_echo_n "checking if -pthread should be used... " >&6; }
|
---|
| 598 | @@ -5560,9 +5601,9 @@
|
---|
| 599 |
|
---|
| 600 | PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
|
---|
| 601 | if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
|
---|
| 602 | - PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}"
|
---|
| 603 | + PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
|
---|
| 604 | else
|
---|
| 605 | - PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version}"
|
---|
| 606 | + PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
|
---|
| 607 | fi
|
---|
| 608 | PYTHON3_SRC="if_python3.c"
|
---|
| 609 | if test "x$MACOSX" = "xyes"; then
|
---|
| 610 | @@ -5667,10 +5708,10 @@
|
---|
| 611 |
|
---|
| 612 | $as_echo "#define DYNAMIC_PYTHON3 1" >>confdefs.h
|
---|
| 613 |
|
---|
| 614 | - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we can do without RTLD_GLOBAL" >&5
|
---|
| 615 | -$as_echo_n "checking whether we can do without RTLD_GLOBAL... " >&6; }
|
---|
| 616 | + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we can do without RTLD_GLOBAL for Python" >&5
|
---|
| 617 | +$as_echo_n "checking whether we can do without RTLD_GLOBAL for Python... " >&6; }
|
---|
| 618 | cflags_save=$CFLAGS
|
---|
| 619 | - CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
|
---|
| 620 | + CFLAGS="$CFLAGS $PYTHON_CFLAGS"
|
---|
| 621 | ldflags_save=$LDFLAGS
|
---|
| 622 | LDFLAGS="$LDFLAGS -ldl"
|
---|
| 623 | if test "$cross_compiling" = yes; then :
|
---|
| 624 | @@ -5689,15 +5730,17 @@
|
---|
| 625 | * Only the first pyhton version used will be switched on.
|
---|
| 626 | */
|
---|
| 627 |
|
---|
| 628 | - int no_rtl_global_needed_for(char *python_instsoname)
|
---|
| 629 | + int no_rtl_global_needed_for(char *python_instsoname, char *prefix)
|
---|
| 630 | {
|
---|
| 631 | int needed = 0;
|
---|
| 632 | void* pylib = dlopen(python_instsoname, RTLD_LAZY);
|
---|
| 633 | if (pylib != 0)
|
---|
| 634 | {
|
---|
| 635 | + void (*pfx)(char *home) = dlsym(pylib, "Py_SetPythonHome");
|
---|
| 636 | void (*init)(void) = dlsym(pylib, "Py_Initialize");
|
---|
| 637 | int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
|
---|
| 638 | void (*final)(void) = dlsym(pylib, "Py_Finalize");
|
---|
| 639 | + (*pfx)(prefix);
|
---|
| 640 | (*init)();
|
---|
| 641 | needed = (*simple)("import termios") == -1;
|
---|
| 642 | (*final)();
|
---|
| 643 | @@ -5709,7 +5752,7 @@
|
---|
| 644 | int main(int argc, char** argv)
|
---|
| 645 | {
|
---|
| 646 | int not_needed = 0;
|
---|
| 647 | - if (no_rtl_global_needed_for("libpython2.7.so.1.0") && no_rtl_global_needed_for("libpython3.1.so.1.0"))
|
---|
| 648 | + if (no_rtl_global_needed_for("${python_INSTSONAME}", "${vi_cv_path_python_pfx}"))
|
---|
| 649 | not_needed = 1;
|
---|
| 650 | return !not_needed;
|
---|
| 651 | }
|
---|
| 652 | @@ -5726,8 +5769,76 @@
|
---|
| 653 | conftest.$ac_objext conftest.beam conftest.$ac_ext
|
---|
| 654 | fi
|
---|
| 655 |
|
---|
| 656 | +
|
---|
| 657 | CFLAGS=$cflags_save
|
---|
| 658 | LDFLAGS=$ldflags_save
|
---|
| 659 | +
|
---|
| 660 | + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we can do without RTLD_GLOBAL for Python3" >&5
|
---|
| 661 | +$as_echo_n "checking whether we can do without RTLD_GLOBAL for Python3... " >&6; }
|
---|
| 662 | + cflags_save=$CFLAGS
|
---|
| 663 | + CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
|
---|
| 664 | + ldflags_save=$LDFLAGS
|
---|
| 665 | + LDFLAGS="$LDFLAGS -ldl"
|
---|
| 666 | + if test "$cross_compiling" = yes; then :
|
---|
| 667 | + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
|
---|
| 668 | +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
|
---|
| 669 | +as_fn_error "cannot run test program while cross compiling
|
---|
| 670 | +See \`config.log' for more details." "$LINENO" 5; }
|
---|
| 671 | +else
|
---|
| 672 | + cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
---|
| 673 | +/* end confdefs.h. */
|
---|
| 674 | +
|
---|
| 675 | + #include <dlfcn.h>
|
---|
| 676 | + #include <wchar.h>
|
---|
| 677 | + /* If this program fails, then RTLD_GLOBAL is needed.
|
---|
| 678 | + * RTLD_GLOBAL will be used and then it is not possible to
|
---|
| 679 | + * have both python versions enabled in the same vim instance.
|
---|
| 680 | + * Only the first pyhton version used will be switched on.
|
---|
| 681 | + */
|
---|
| 682 | +
|
---|
| 683 | + int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix)
|
---|
| 684 | + {
|
---|
| 685 | + int needed = 0;
|
---|
| 686 | + void* pylib = dlopen(python_instsoname, RTLD_LAZY);
|
---|
| 687 | + if (pylib != 0)
|
---|
| 688 | + {
|
---|
| 689 | + void (*pfx)(wchar_t *home) = dlsym(pylib, "Py_SetPythonHome");
|
---|
| 690 | + void (*init)(void) = dlsym(pylib, "Py_Initialize");
|
---|
| 691 | + int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
|
---|
| 692 | + void (*final)(void) = dlsym(pylib, "Py_Finalize");
|
---|
| 693 | + (*pfx)(prefix);
|
---|
| 694 | + (*init)();
|
---|
| 695 | + needed = (*simple)("import termios") == -1;
|
---|
| 696 | + (*final)();
|
---|
| 697 | + dlclose(pylib);
|
---|
| 698 | + }
|
---|
| 699 | + return !needed;
|
---|
| 700 | + }
|
---|
| 701 | +
|
---|
| 702 | + int main(int argc, char** argv)
|
---|
| 703 | + {
|
---|
| 704 | + int not_needed = 0;
|
---|
| 705 | + if (no_rtl_global_needed_for("${python3_INSTSONAME}", L"${vi_cv_path_python3_pfx}"))
|
---|
| 706 | + not_needed = 1;
|
---|
| 707 | + return !not_needed;
|
---|
| 708 | + }
|
---|
| 709 | +_ACEOF
|
---|
| 710 | +if ac_fn_c_try_run "$LINENO"; then :
|
---|
| 711 | + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
|
---|
| 712 | +$as_echo "yes" >&6; };$as_echo "#define PY3_NO_RTLD_GLOBAL 1" >>confdefs.h
|
---|
| 713 | +
|
---|
| 714 | +else
|
---|
| 715 | + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
---|
| 716 | +$as_echo "no" >&6; }
|
---|
| 717 | +fi
|
---|
| 718 | +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
|
---|
| 719 | + conftest.$ac_objext conftest.beam conftest.$ac_ext
|
---|
| 720 | +fi
|
---|
| 721 | +
|
---|
| 722 | +
|
---|
| 723 | + CFLAGS=$cflags_save
|
---|
| 724 | + LDFLAGS=$ldflags_save
|
---|
| 725 | +
|
---|
| 726 | PYTHON_SRC="if_python.c"
|
---|
| 727 | PYTHON_OBJ="objects/if_python.o"
|
---|
| 728 | PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
|
---|
| 729 | @@ -6103,7 +6214,7 @@
|
---|
| 730 |
|
---|
| 731 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_rubyinterp" >&5
|
---|
| 732 | $as_echo "$enable_rubyinterp" >&6; }
|
---|
| 733 | -if test "$enable_rubyinterp" = "yes"; then
|
---|
| 734 | +if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
|
---|
| 735 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking --with-ruby-command argument" >&5
|
---|
| 736 | $as_echo_n "checking --with-ruby-command argument... " >&6; }
|
---|
| 737 |
|
---|
| 738 | @@ -6209,6 +6320,13 @@
|
---|
| 739 | RUBY_PRO="if_ruby.pro"
|
---|
| 740 | $as_echo "#define FEAT_RUBY 1" >>confdefs.h
|
---|
| 741 |
|
---|
| 742 | + if test "$enable_rubyinterp" = "dynamic"; then
|
---|
| 743 | + libruby=`$vi_cv_path_ruby -r rbconfig -e 'printf "lib%s.%s\n", Config::CONFIG["RUBY_SO_NAME"], Config::CONFIG["DLEXT"]'`
|
---|
| 744 | + $as_echo "#define DYNAMIC_RUBY 1" >>confdefs.h
|
---|
| 745 | +
|
---|
| 746 | + RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS"
|
---|
| 747 | + RUBY_LIBS=
|
---|
| 748 | + fi
|
---|
| 749 | else
|
---|
| 750 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found; disabling Ruby" >&5
|
---|
| 751 | $as_echo "not found; disabling Ruby" >&6; }
|
---|
| 752 | @@ -12357,6 +12475,23 @@
|
---|
| 753 | fi
|
---|
| 754 |
|
---|
| 755 |
|
---|
| 756 | +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking linker --as-needed support" >&5
|
---|
| 757 | +$as_echo_n "checking linker --as-needed support... " >&6; }
|
---|
| 758 | +LINK_AS_NEEDED=
|
---|
| 759 | +# Check if linker supports --as-needed and --no-as-needed options
|
---|
| 760 | +if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
|
---|
| 761 | + LDFLAGS="$LDFLAGS -Wl,--as-needed"
|
---|
| 762 | + LINK_AS_NEEDED=yes
|
---|
| 763 | +fi
|
---|
| 764 | +if test "$LINK_AS_NEEDED" = yes; then
|
---|
| 765 | + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
|
---|
| 766 | +$as_echo "yes" >&6; }
|
---|
| 767 | +else
|
---|
| 768 | + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
---|
| 769 | +$as_echo "no" >&6; }
|
---|
| 770 | +fi
|
---|
| 771 | +
|
---|
| 772 | +
|
---|
| 773 | ac_config_files="$ac_config_files auto/config.mk:config.mk.in"
|
---|
| 774 |
|
---|
| 775 | cat >confcache <<\_ACEOF
|
---|
| 776 | diff -Naur vim73.orig/src/buffer.c vim73/src/buffer.c
|
---|
| 777 | --- vim73.orig/src/buffer.c 2010-08-13 05:14:35.000000000 -0400
|
---|
| 778 | +++ vim73/src/buffer.c 2011-01-08 21:01:19.026657243 -0500
|
---|
| 779 | @@ -639,6 +639,9 @@
|
---|
| 780 | {
|
---|
| 781 | clear_wininfo(buf); /* including window-local options */
|
---|
| 782 | free_buf_options(buf, TRUE);
|
---|
| 783 | +#ifdef FEAT_SPELL
|
---|
| 784 | + ga_clear(&buf->b_s.b_langp);
|
---|
| 785 | +#endif
|
---|
| 786 | }
|
---|
| 787 | #ifdef FEAT_EVAL
|
---|
| 788 | vars_clear(&buf->b_vars.dv_hashtab); /* free all internal variables */
|
---|
| 789 | @@ -661,9 +664,6 @@
|
---|
| 790 | vim_free(buf->b_start_fenc);
|
---|
| 791 | buf->b_start_fenc = NULL;
|
---|
| 792 | #endif
|
---|
| 793 | -#ifdef FEAT_SPELL
|
---|
| 794 | - ga_clear(&buf->b_s.b_langp);
|
---|
| 795 | -#endif
|
---|
| 796 | }
|
---|
| 797 |
|
---|
| 798 | /*
|
---|
| 799 | @@ -1288,9 +1288,12 @@
|
---|
| 800 | /* Go to the other buffer. */
|
---|
| 801 | set_curbuf(buf, action);
|
---|
| 802 |
|
---|
| 803 | -#if defined(FEAT_LISTCMDS) && defined(FEAT_SCROLLBIND)
|
---|
| 804 | +#if defined(FEAT_LISTCMDS) \
|
---|
| 805 | + && (defined(FEAT_SCROLLBIND) || defined(FEAT_CURSORBIND))
|
---|
| 806 | if (action == DOBUF_SPLIT)
|
---|
| 807 | - curwin->w_p_scb = FALSE; /* reset 'scrollbind' */
|
---|
| 808 | + {
|
---|
| 809 | + RESET_BINDING(curwin); /* reset 'scrollbind' and 'cursorbind' */
|
---|
| 810 | + }
|
---|
| 811 | #endif
|
---|
| 812 |
|
---|
| 813 | #if defined(FEAT_AUTOCMD) && defined(FEAT_EVAL)
|
---|
| 814 | @@ -1917,9 +1920,7 @@
|
---|
| 815 | tabpage_new();
|
---|
| 816 | else if (win_split(0, 0) == FAIL) /* Open in a new window */
|
---|
| 817 | return FAIL;
|
---|
| 818 | -# ifdef FEAT_SCROLLBIND
|
---|
| 819 | - curwin->w_p_scb = FALSE;
|
---|
| 820 | -# endif
|
---|
| 821 | + RESET_BINDING(curwin);
|
---|
| 822 | }
|
---|
| 823 | }
|
---|
| 824 | #endif
|
---|
| 825 | diff -Naur vim73.orig/src/config.h.in vim73/src/config.h.in
|
---|
| 826 | --- vim73.orig/src/config.h.in 2010-08-13 09:45:27.000000000 -0400
|
---|
| 827 | +++ vim73/src/config.h.in 2011-01-08 21:01:19.038657206 -0500
|
---|
| 828 | @@ -349,6 +349,9 @@
|
---|
| 829 | /* Define if you want to include the Ruby interpreter. */
|
---|
| 830 | #undef FEAT_RUBY
|
---|
| 831 |
|
---|
| 832 | +/* Define for linking via dlopen() or LoadLibrary() */
|
---|
| 833 | +#undef DYNAMIC_RUBY
|
---|
| 834 | +
|
---|
| 835 | /* Define if you want to include the Tcl interpreter. */
|
---|
| 836 | #undef FEAT_TCL
|
---|
| 837 |
|
---|
| 838 | diff -Naur vim73.orig/src/config.mk.in vim73/src/config.mk.in
|
---|
| 839 | --- vim73.orig/src/config.mk.in 2010-07-17 11:28:51.000000000 -0400
|
---|
| 840 | +++ vim73/src/config.mk.in 2011-01-08 21:01:19.118661627 -0500
|
---|
| 841 | @@ -30,6 +30,7 @@
|
---|
| 842 | CPP = @CPP@
|
---|
| 843 | CPP_MM = @CPP_MM@
|
---|
| 844 | DEPEND_CFLAGS_FILTER = @DEPEND_CFLAGS_FILTER@
|
---|
| 845 | +LINK_AS_NEEDED = @LINK_AS_NEEDED@
|
---|
| 846 | X_CFLAGS = @X_CFLAGS@
|
---|
| 847 | X_LIBS_DIR = @X_LIBS@
|
---|
| 848 | X_PRE_LIBS = @X_PRE_LIBS@
|
---|
| 849 | diff -Naur vim73.orig/src/configure.in vim73/src/configure.in
|
---|
| 850 | --- vim73.orig/src/configure.in 2010-08-13 10:15:17.000000000 -0400
|
---|
| 851 | +++ vim73/src/configure.in 2011-01-08 21:01:19.186662333 -0500
|
---|
| 852 | @@ -568,13 +568,27 @@
|
---|
| 853 | SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/plt
|
---|
| 854 | else
|
---|
| 855 | AC_MSG_RESULT(no)
|
---|
| 856 | - AC_MSG_CHECKING(if scheme.h can be found in /usr/include/plt/)
|
---|
| 857 | - if test -f /usr/include/plt/scheme.h; then
|
---|
| 858 | + AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/racket)
|
---|
| 859 | + if test -f $vi_cv_path_mzscheme_pfx/include/racket/scheme.h; then
|
---|
| 860 | AC_MSG_RESULT(yes)
|
---|
| 861 | - SCHEME_INC=/usr/include/plt
|
---|
| 862 | + SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/racket
|
---|
| 863 | else
|
---|
| 864 | AC_MSG_RESULT(no)
|
---|
| 865 | - vi_cv_path_mzscheme_pfx=
|
---|
| 866 | + AC_MSG_CHECKING(if scheme.h can be found in /usr/include/plt/)
|
---|
| 867 | + if test -f /usr/include/plt/scheme.h; then
|
---|
| 868 | + AC_MSG_RESULT(yes)
|
---|
| 869 | + SCHEME_INC=/usr/include/plt
|
---|
| 870 | + else
|
---|
| 871 | + AC_MSG_RESULT(no)
|
---|
| 872 | + AC_MSG_CHECKING(if scheme.h can be found in /usr/include/racket/)
|
---|
| 873 | + if test -f /usr/include/racket/scheme.h; then
|
---|
| 874 | + AC_MSG_RESULT(yes)
|
---|
| 875 | + SCHEME_INC=/usr/include/racket
|
---|
| 876 | + else
|
---|
| 877 | + AC_MSG_RESULT(no)
|
---|
| 878 | + vi_cv_path_mzscheme_pfx=
|
---|
| 879 | + fi
|
---|
| 880 | + fi
|
---|
| 881 | fi
|
---|
| 882 | fi
|
---|
| 883 | fi
|
---|
| 884 | @@ -586,13 +600,23 @@
|
---|
| 885 | elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then
|
---|
| 886 | MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"
|
---|
| 887 | MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
|
---|
| 888 | - elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"; then
|
---|
| 889 | + elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"; then
|
---|
| 890 | + MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"
|
---|
| 891 | + MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
|
---|
| 892 | + elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.a"; then
|
---|
| 893 | + MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
|
---|
| 894 | + elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a"; then
|
---|
| 895 | MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
|
---|
| 896 | else
|
---|
| 897 | dnl Using shared objects
|
---|
| 898 | if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.so"; then
|
---|
| 899 | MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme3m"
|
---|
| 900 | MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
|
---|
| 901 | + elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.so"; then
|
---|
| 902 | + MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket3m"
|
---|
| 903 | + MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
|
---|
| 904 | + elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.so"; then
|
---|
| 905 | + MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket -lmzgc"
|
---|
| 906 | else
|
---|
| 907 | MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc"
|
---|
| 908 | fi
|
---|
| 909 | @@ -607,10 +631,20 @@
|
---|
| 910 | fi
|
---|
| 911 | if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then
|
---|
| 912 | SCHEME_COLLECTS=lib/plt/
|
---|
| 913 | + else
|
---|
| 914 | + if test -d $vi_cv_path_mzscheme_pfx/lib/racket/collects; then
|
---|
| 915 | + SCHEME_COLLECTS=lib/racket/
|
---|
| 916 | + fi
|
---|
| 917 | fi
|
---|
| 918 | if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.ss" ; then
|
---|
| 919 | - dnl need to generate bytecode for MzScheme base
|
---|
| 920 | MZSCHEME_EXTRA="mzscheme_base.c"
|
---|
| 921 | + else
|
---|
| 922 | + if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.rkt" ; then
|
---|
| 923 | + MZSCHEME_EXTRA="mzscheme_base.c"
|
---|
| 924 | + fi
|
---|
| 925 | + fi
|
---|
| 926 | + if test "X$MZSCHEME_EXTRA" != "X" ; then
|
---|
| 927 | + dnl need to generate bytecode for MzScheme base
|
---|
| 928 | MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE"
|
---|
| 929 | MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
|
---|
| 930 | fi
|
---|
| 931 | @@ -857,9 +891,9 @@
|
---|
| 932 |
|
---|
| 933 | PYTHON_LIBS="${vi_cv_path_python_plibs}"
|
---|
| 934 | if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
|
---|
| 935 | - PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version}"
|
---|
| 936 | + PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -DPYTHON_HOME=\\\"${vi_cv_path_python_pfx}\\\""
|
---|
| 937 | else
|
---|
| 938 | - PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -I${vi_cv_path_python_epfx}/include/python${vi_cv_var_python_version}"
|
---|
| 939 | + PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -I${vi_cv_path_python_epfx}/include/python${vi_cv_var_python_version} -DPYTHON_HOME=\\\"${vi_cv_path_python_pfx}\\\""
|
---|
| 940 | fi
|
---|
| 941 | PYTHON_SRC="if_python.c"
|
---|
| 942 | dnl For Mac OSX 10.2 config.o is included in the Python library.
|
---|
| 943 | @@ -871,7 +905,7 @@
|
---|
| 944 | if test "${vi_cv_var_python_version}" = "1.4"; then
|
---|
| 945 | PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
|
---|
| 946 | fi
|
---|
| 947 | - PYTHON_GETPATH_CFLAGS="-DPYTHONPATH='\"${vi_cv_path_pythonpath}\"' -DPREFIX='\"${vi_cv_path_python_pfx}\"' -DEXEC_PREFIX='\"${vi_cv_path_python_epfx}\"'"
|
---|
| 948 | + PYTHON_GETPATH_CFLAGS="-DPYTHONPATH='\"${vi_cv_path_pythonpath}\"' -DPREFIX='\"${vi_cv_path_python_pfx}\"' -DEXEC_PREFIX='\"${vi_cv_path_python_epfx}\"'"
|
---|
| 949 |
|
---|
| 950 | dnl On FreeBSD linking with "-pthread" is required to use threads.
|
---|
| 951 | dnl _THREAD_SAFE must be used for compiling then.
|
---|
| 952 | @@ -1029,9 +1063,9 @@
|
---|
| 953 |
|
---|
| 954 | PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
|
---|
| 955 | if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
|
---|
| 956 | - PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}"
|
---|
| 957 | + PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
|
---|
| 958 | else
|
---|
| 959 | - PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version}"
|
---|
| 960 | + PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
|
---|
| 961 | fi
|
---|
| 962 | PYTHON3_SRC="if_python3.c"
|
---|
| 963 | dnl For Mac OSX 10.2 config.o is included in the Python library.
|
---|
| 964 | @@ -1109,9 +1143,9 @@
|
---|
| 965 | if test "$python_ok" = yes && test "$python3_ok" = yes; then
|
---|
| 966 | AC_DEFINE(DYNAMIC_PYTHON)
|
---|
| 967 | AC_DEFINE(DYNAMIC_PYTHON3)
|
---|
| 968 | - AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL)
|
---|
| 969 | + AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python)
|
---|
| 970 | cflags_save=$CFLAGS
|
---|
| 971 | - CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
|
---|
| 972 | + CFLAGS="$CFLAGS $PYTHON_CFLAGS"
|
---|
| 973 | ldflags_save=$LDFLAGS
|
---|
| 974 | LDFLAGS="$LDFLAGS -ldl"
|
---|
| 975 | AC_RUN_IFELSE([
|
---|
| 976 | @@ -1122,15 +1156,17 @@
|
---|
| 977 | * Only the first pyhton version used will be switched on.
|
---|
| 978 | */
|
---|
| 979 |
|
---|
| 980 | - int no_rtl_global_needed_for(char *python_instsoname)
|
---|
| 981 | + int no_rtl_global_needed_for(char *python_instsoname, char *prefix)
|
---|
| 982 | {
|
---|
| 983 | int needed = 0;
|
---|
| 984 | void* pylib = dlopen(python_instsoname, RTLD_LAZY);
|
---|
| 985 | if (pylib != 0)
|
---|
| 986 | {
|
---|
| 987 | + void (*pfx)(char *home) = dlsym(pylib, "Py_SetPythonHome");
|
---|
| 988 | void (*init)(void) = dlsym(pylib, "Py_Initialize");
|
---|
| 989 | int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
|
---|
| 990 | void (*final)(void) = dlsym(pylib, "Py_Finalize");
|
---|
| 991 | + (*pfx)(prefix);
|
---|
| 992 | (*init)();
|
---|
| 993 | needed = (*simple)("import termios") == -1;
|
---|
| 994 | (*final)();
|
---|
| 995 | @@ -1142,13 +1178,60 @@
|
---|
| 996 | int main(int argc, char** argv)
|
---|
| 997 | {
|
---|
| 998 | int not_needed = 0;
|
---|
| 999 | - if (no_rtl_global_needed_for("libpython2.7.so.1.0") && no_rtl_global_needed_for("libpython3.1.so.1.0"))
|
---|
| 1000 | + if (no_rtl_global_needed_for("${python_INSTSONAME}", "${vi_cv_path_python_pfx}"))
|
---|
| 1001 | not_needed = 1;
|
---|
| 1002 | return !not_needed;
|
---|
| 1003 | }],
|
---|
| 1004 | [AC_MSG_RESULT(yes);AC_DEFINE(PY_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
|
---|
| 1005 | +
|
---|
| 1006 | + CFLAGS=$cflags_save
|
---|
| 1007 | + LDFLAGS=$ldflags_save
|
---|
| 1008 | +
|
---|
| 1009 | + AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python3)
|
---|
| 1010 | + cflags_save=$CFLAGS
|
---|
| 1011 | + CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
|
---|
| 1012 | + ldflags_save=$LDFLAGS
|
---|
| 1013 | + LDFLAGS="$LDFLAGS -ldl"
|
---|
| 1014 | + AC_RUN_IFELSE([
|
---|
| 1015 | + #include <dlfcn.h>
|
---|
| 1016 | + #include <wchar.h>
|
---|
| 1017 | + /* If this program fails, then RTLD_GLOBAL is needed.
|
---|
| 1018 | + * RTLD_GLOBAL will be used and then it is not possible to
|
---|
| 1019 | + * have both python versions enabled in the same vim instance.
|
---|
| 1020 | + * Only the first pyhton version used will be switched on.
|
---|
| 1021 | + */
|
---|
| 1022 | +
|
---|
| 1023 | + int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix)
|
---|
| 1024 | + {
|
---|
| 1025 | + int needed = 0;
|
---|
| 1026 | + void* pylib = dlopen(python_instsoname, RTLD_LAZY);
|
---|
| 1027 | + if (pylib != 0)
|
---|
| 1028 | + {
|
---|
| 1029 | + void (*pfx)(wchar_t *home) = dlsym(pylib, "Py_SetPythonHome");
|
---|
| 1030 | + void (*init)(void) = dlsym(pylib, "Py_Initialize");
|
---|
| 1031 | + int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
|
---|
| 1032 | + void (*final)(void) = dlsym(pylib, "Py_Finalize");
|
---|
| 1033 | + (*pfx)(prefix);
|
---|
| 1034 | + (*init)();
|
---|
| 1035 | + needed = (*simple)("import termios") == -1;
|
---|
| 1036 | + (*final)();
|
---|
| 1037 | + dlclose(pylib);
|
---|
| 1038 | + }
|
---|
| 1039 | + return !needed;
|
---|
| 1040 | + }
|
---|
| 1041 | +
|
---|
| 1042 | + int main(int argc, char** argv)
|
---|
| 1043 | + {
|
---|
| 1044 | + int not_needed = 0;
|
---|
| 1045 | + if (no_rtl_global_needed_for("${python3_INSTSONAME}", L"${vi_cv_path_python3_pfx}"))
|
---|
| 1046 | + not_needed = 1;
|
---|
| 1047 | + return !not_needed;
|
---|
| 1048 | + }],
|
---|
| 1049 | + [AC_MSG_RESULT(yes);AC_DEFINE(PY3_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
|
---|
| 1050 | +
|
---|
| 1051 | CFLAGS=$cflags_save
|
---|
| 1052 | LDFLAGS=$ldflags_save
|
---|
| 1053 | +
|
---|
| 1054 | PYTHON_SRC="if_python.c"
|
---|
| 1055 | PYTHON_OBJ="objects/if_python.o"
|
---|
| 1056 | PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
|
---|
| 1057 | @@ -1299,10 +1382,10 @@
|
---|
| 1058 |
|
---|
| 1059 | AC_MSG_CHECKING(--enable-rubyinterp argument)
|
---|
| 1060 | AC_ARG_ENABLE(rubyinterp,
|
---|
| 1061 | - [ --enable-rubyinterp Include Ruby interpreter.], ,
|
---|
| 1062 | + [ --enable-rubyinterp[=OPTS] Include Ruby interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
|
---|
| 1063 | [enable_rubyinterp="no"])
|
---|
| 1064 | AC_MSG_RESULT($enable_rubyinterp)
|
---|
| 1065 | -if test "$enable_rubyinterp" = "yes"; then
|
---|
| 1066 | +if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
|
---|
| 1067 | AC_MSG_CHECKING(--with-ruby-command argument)
|
---|
| 1068 | AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)],
|
---|
| 1069 | RUBY_CMD="$withval"; AC_MSG_RESULT($RUBY_CMD),
|
---|
| 1070 | @@ -1360,6 +1443,12 @@
|
---|
| 1071 | RUBY_OBJ="objects/if_ruby.o"
|
---|
| 1072 | RUBY_PRO="if_ruby.pro"
|
---|
| 1073 | AC_DEFINE(FEAT_RUBY)
|
---|
| 1074 | + if test "$enable_rubyinterp" = "dynamic"; then
|
---|
| 1075 | + libruby=`$vi_cv_path_ruby -r rbconfig -e 'printf "lib%s.%s\n", Config::CONFIG[["RUBY_SO_NAME"]], Config::CONFIG[["DLEXT"]]'`
|
---|
| 1076 | + AC_DEFINE(DYNAMIC_RUBY)
|
---|
| 1077 | + RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS"
|
---|
| 1078 | + RUBY_LIBS=
|
---|
| 1079 | + fi
|
---|
| 1080 | else
|
---|
| 1081 | AC_MSG_RESULT(not found; disabling Ruby)
|
---|
| 1082 | fi
|
---|
| 1083 | @@ -3487,6 +3576,23 @@
|
---|
| 1084 | fi
|
---|
| 1085 | AC_SUBST(DEPEND_CFLAGS_FILTER)
|
---|
| 1086 |
|
---|
| 1087 | +dnl link.sh tries to avoid overlinking in a hackish way.
|
---|
| 1088 | +dnl At least GNU ld supports --as-needed which provides the same functionality
|
---|
| 1089 | +dnl at linker level. Let's use it.
|
---|
| 1090 | +AC_MSG_CHECKING(linker --as-needed support)
|
---|
| 1091 | +LINK_AS_NEEDED=
|
---|
| 1092 | +# Check if linker supports --as-needed and --no-as-needed options
|
---|
| 1093 | +if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
|
---|
| 1094 | + LDFLAGS="$LDFLAGS -Wl,--as-needed"
|
---|
| 1095 | + LINK_AS_NEEDED=yes
|
---|
| 1096 | +fi
|
---|
| 1097 | +if test "$LINK_AS_NEEDED" = yes; then
|
---|
| 1098 | + AC_MSG_RESULT(yes)
|
---|
| 1099 | +else
|
---|
| 1100 | + AC_MSG_RESULT(no)
|
---|
| 1101 | +fi
|
---|
| 1102 | +AC_SUBST(LINK_AS_NEEDED)
|
---|
| 1103 | +
|
---|
| 1104 | dnl write output files
|
---|
| 1105 | AC_OUTPUT(auto/config.mk:config.mk.in)
|
---|
| 1106 |
|
---|
| 1107 | diff -Naur vim73.orig/src/diff.c vim73/src/diff.c
|
---|
| 1108 | --- vim73.orig/src/diff.c 2010-07-31 09:35:21.000000000 -0400
|
---|
| 1109 | +++ vim73/src/diff.c 2011-01-08 20:59:40.994788713 -0500
|
---|
| 1110 | @@ -1127,11 +1127,13 @@
|
---|
| 1111 | # endif
|
---|
| 1112 |
|
---|
| 1113 | wp->w_p_diff = TRUE;
|
---|
| 1114 | + /* Use 'scrollbind' and 'cursorbind' when available */
|
---|
| 1115 | +#ifdef FEAT_SCROLLBIND
|
---|
| 1116 | + wp->w_p_scb = TRUE;
|
---|
| 1117 | +#endif
|
---|
| 1118 | #ifdef FEAT_CURSORBIND
|
---|
| 1119 | - /* Use cursorbind if it's available */
|
---|
| 1120 | wp->w_p_crb = TRUE;
|
---|
| 1121 | #endif
|
---|
| 1122 | - wp->w_p_scb = TRUE;
|
---|
| 1123 | wp->w_p_wrap = FALSE;
|
---|
| 1124 | # ifdef FEAT_FOLDING
|
---|
| 1125 | curwin = wp;
|
---|
| 1126 | @@ -1177,10 +1179,7 @@
|
---|
| 1127 | {
|
---|
| 1128 | /* Set 'diff', 'scrollbind' off and 'wrap' on. */
|
---|
| 1129 | wp->w_p_diff = FALSE;
|
---|
| 1130 | -#ifdef FEAT_CURSORBIND
|
---|
| 1131 | - wp->w_p_crb = FALSE;
|
---|
| 1132 | -#endif
|
---|
| 1133 | - wp->w_p_scb = FALSE;
|
---|
| 1134 | + RESET_BINDING(wp);
|
---|
| 1135 | wp->w_p_wrap = TRUE;
|
---|
| 1136 | #ifdef FEAT_FOLDING
|
---|
| 1137 | curwin = wp;
|
---|
| 1138 | diff -Naur vim73.orig/src/edit.c vim73/src/edit.c
|
---|
| 1139 | --- vim73.orig/src/edit.c 2010-08-08 08:55:05.000000000 -0400
|
---|
| 1140 | +++ vim73/src/edit.c 2011-01-08 21:01:19.146656810 -0500
|
---|
| 1141 | @@ -58,6 +58,10 @@
|
---|
| 1142 | };
|
---|
| 1143 |
|
---|
| 1144 | static char e_hitend[] = N_("Hit end of paragraph");
|
---|
| 1145 | +#ifdef FEAT_COMPL_FUNC
|
---|
| 1146 | +static char e_complwin[] = N_("E839: Completion function changed window");
|
---|
| 1147 | +static char e_compldel[] = N_("E840: Completion function deleted text");
|
---|
| 1148 | +#endif
|
---|
| 1149 |
|
---|
| 1150 | /*
|
---|
| 1151 | * Structure used to store one match for insert completion.
|
---|
| 1152 | @@ -2658,6 +2662,7 @@
|
---|
| 1153 | if (stop_arrow() == FAIL)
|
---|
| 1154 | return;
|
---|
| 1155 |
|
---|
| 1156 | + compl_direction = FORWARD;
|
---|
| 1157 | if (startcol > curwin->w_cursor.col)
|
---|
| 1158 | startcol = curwin->w_cursor.col;
|
---|
| 1159 | compl_col = startcol;
|
---|
| 1160 | @@ -3833,6 +3838,8 @@
|
---|
| 1161 | char_u *args[2];
|
---|
| 1162 | char_u *funcname;
|
---|
| 1163 | pos_T pos;
|
---|
| 1164 | + win_T *curwin_save;
|
---|
| 1165 | + buf_T *curbuf_save;
|
---|
| 1166 |
|
---|
| 1167 | funcname = (type == CTRL_X_FUNCTION) ? curbuf->b_p_cfu : curbuf->b_p_ofu;
|
---|
| 1168 | if (*funcname == NUL)
|
---|
| 1169 | @@ -3843,13 +3850,27 @@
|
---|
| 1170 | args[1] = base;
|
---|
| 1171 |
|
---|
| 1172 | pos = curwin->w_cursor;
|
---|
| 1173 | + curwin_save = curwin;
|
---|
| 1174 | + curbuf_save = curbuf;
|
---|
| 1175 | matchlist = call_func_retlist(funcname, 2, args, FALSE);
|
---|
| 1176 | + if (curwin_save != curwin || curbuf_save != curbuf)
|
---|
| 1177 | + {
|
---|
| 1178 | + EMSG(_(e_complwin));
|
---|
| 1179 | + goto theend;
|
---|
| 1180 | + }
|
---|
| 1181 | curwin->w_cursor = pos; /* restore the cursor position */
|
---|
| 1182 | - if (matchlist == NULL)
|
---|
| 1183 | - return;
|
---|
| 1184 | + check_cursor();
|
---|
| 1185 | + if (!equalpos(curwin->w_cursor, pos))
|
---|
| 1186 | + {
|
---|
| 1187 | + EMSG(_(e_compldel));
|
---|
| 1188 | + goto theend;
|
---|
| 1189 | + }
|
---|
| 1190 | + if (matchlist != NULL)
|
---|
| 1191 | + ins_compl_add_list(matchlist);
|
---|
| 1192 |
|
---|
| 1193 | - ins_compl_add_list(matchlist);
|
---|
| 1194 | - list_unref(matchlist);
|
---|
| 1195 | +theend:
|
---|
| 1196 | + if (matchlist != NULL)
|
---|
| 1197 | + list_unref(matchlist);
|
---|
| 1198 | }
|
---|
| 1199 | #endif /* FEAT_COMPL_FUNC */
|
---|
| 1200 |
|
---|
| 1201 | @@ -3889,6 +3910,7 @@
|
---|
| 1202 | char_u *word;
|
---|
| 1203 | int icase = FALSE;
|
---|
| 1204 | int adup = FALSE;
|
---|
| 1205 | + int aempty = FALSE;
|
---|
| 1206 | char_u *(cptext[CPT_COUNT]);
|
---|
| 1207 |
|
---|
| 1208 | if (tv->v_type == VAR_DICT && tv->vval.v_dict != NULL)
|
---|
| 1209 | @@ -3906,13 +3928,15 @@
|
---|
| 1210 | icase = get_dict_number(tv->vval.v_dict, (char_u *)"icase");
|
---|
| 1211 | if (get_dict_string(tv->vval.v_dict, (char_u *)"dup", FALSE) != NULL)
|
---|
| 1212 | adup = get_dict_number(tv->vval.v_dict, (char_u *)"dup");
|
---|
| 1213 | + if (get_dict_string(tv->vval.v_dict, (char_u *)"empty", FALSE) != NULL)
|
---|
| 1214 | + aempty = get_dict_number(tv->vval.v_dict, (char_u *)"empty");
|
---|
| 1215 | }
|
---|
| 1216 | else
|
---|
| 1217 | {
|
---|
| 1218 | word = get_tv_string_chk(tv);
|
---|
| 1219 | vim_memset(cptext, 0, sizeof(cptext));
|
---|
| 1220 | }
|
---|
| 1221 | - if (word == NULL || *word == NUL)
|
---|
| 1222 | + if (word == NULL || (!aempty && *word == NUL))
|
---|
| 1223 | return FAIL;
|
---|
| 1224 | return ins_compl_add(word, -1, icase, NULL, cptext, dir, 0, adup);
|
---|
| 1225 | }
|
---|
| 1226 | @@ -4994,6 +5018,8 @@
|
---|
| 1227 | int col;
|
---|
| 1228 | char_u *funcname;
|
---|
| 1229 | pos_T pos;
|
---|
| 1230 | + win_T *curwin_save;
|
---|
| 1231 | + buf_T *curbuf_save;
|
---|
| 1232 |
|
---|
| 1233 | /* Call 'completefunc' or 'omnifunc' and get pattern length as a
|
---|
| 1234 | * string */
|
---|
| 1235 | @@ -5009,8 +5035,21 @@
|
---|
| 1236 | args[0] = (char_u *)"1";
|
---|
| 1237 | args[1] = NULL;
|
---|
| 1238 | pos = curwin->w_cursor;
|
---|
| 1239 | + curwin_save = curwin;
|
---|
| 1240 | + curbuf_save = curbuf;
|
---|
| 1241 | col = call_func_retnr(funcname, 2, args, FALSE);
|
---|
| 1242 | + if (curwin_save != curwin || curbuf_save != curbuf)
|
---|
| 1243 | + {
|
---|
| 1244 | + EMSG(_(e_complwin));
|
---|
| 1245 | + return FAIL;
|
---|
| 1246 | + }
|
---|
| 1247 | curwin->w_cursor = pos; /* restore the cursor position */
|
---|
| 1248 | + check_cursor();
|
---|
| 1249 | + if (!equalpos(curwin->w_cursor, pos))
|
---|
| 1250 | + {
|
---|
| 1251 | + EMSG(_(e_compldel));
|
---|
| 1252 | + return FAIL;
|
---|
| 1253 | + }
|
---|
| 1254 |
|
---|
| 1255 | if (col < 0)
|
---|
| 1256 | col = curs_col;
|
---|
| 1257 | diff -Naur vim73.orig/src/eval.c vim73/src/eval.c
|
---|
| 1258 | --- vim73.orig/src/eval.c 2010-08-09 16:12:14.000000000 -0400
|
---|
| 1259 | +++ vim73/src/eval.c 2011-01-08 21:01:19.506657797 -0500
|
---|
| 1260 | @@ -10,9 +10,6 @@
|
---|
| 1261 | /*
|
---|
| 1262 | * eval.c: Expression evaluation.
|
---|
| 1263 | */
|
---|
| 1264 | -#if defined(MSDOS) || defined(WIN16) || defined(WIN32) || defined(_WIN64)
|
---|
| 1265 | -# include "vimio.h" /* for mch_open(), must be before vim.h */
|
---|
| 1266 | -#endif
|
---|
| 1267 |
|
---|
| 1268 | #include "vim.h"
|
---|
| 1269 |
|
---|
| 1270 | @@ -362,6 +359,7 @@
|
---|
| 1271 | {VV_NAME("operator", VAR_STRING), VV_RO},
|
---|
| 1272 | {VV_NAME("searchforward", VAR_NUMBER), 0},
|
---|
| 1273 | {VV_NAME("oldfiles", VAR_LIST), 0},
|
---|
| 1274 | + {VV_NAME("windowid", VAR_NUMBER), VV_RO},
|
---|
| 1275 | };
|
---|
| 1276 |
|
---|
| 1277 | /* shorthand */
|
---|
| 1278 | @@ -433,9 +431,9 @@
|
---|
| 1279 | static void listitem_free __ARGS((listitem_T *item));
|
---|
| 1280 | static void listitem_remove __ARGS((list_T *l, listitem_T *item));
|
---|
| 1281 | static long list_len __ARGS((list_T *l));
|
---|
| 1282 | -static int list_equal __ARGS((list_T *l1, list_T *l2, int ic));
|
---|
| 1283 | -static int dict_equal __ARGS((dict_T *d1, dict_T *d2, int ic));
|
---|
| 1284 | -static int tv_equal __ARGS((typval_T *tv1, typval_T *tv2, int ic));
|
---|
| 1285 | +static int list_equal __ARGS((list_T *l1, list_T *l2, int ic, int recursive));
|
---|
| 1286 | +static int dict_equal __ARGS((dict_T *d1, dict_T *d2, int ic, int recursive));
|
---|
| 1287 | +static int tv_equal __ARGS((typval_T *tv1, typval_T *tv2, int ic, int recursive));
|
---|
| 1288 | static listitem_T *list_find __ARGS((list_T *l, long n));
|
---|
| 1289 | static long list_find_nr __ARGS((list_T *l, long idx, int *errorp));
|
---|
| 1290 | static long list_idx_of_item __ARGS((list_T *l, listitem_T *item));
|
---|
| 1291 | @@ -2325,7 +2323,7 @@
|
---|
| 1292 | else if (endchars != NULL
|
---|
| 1293 | && vim_strchr(endchars, *skipwhite(arg)) == NULL)
|
---|
| 1294 | EMSG(_(e_letunexp));
|
---|
| 1295 | - else
|
---|
| 1296 | + else if (!check_secure())
|
---|
| 1297 | {
|
---|
| 1298 | c1 = name[len];
|
---|
| 1299 | name[len] = NUL;
|
---|
| 1300 | @@ -3337,6 +3335,15 @@
|
---|
| 1301 | int failed = FALSE;
|
---|
| 1302 | funcdict_T fudi;
|
---|
| 1303 |
|
---|
| 1304 | + if (eap->skip)
|
---|
| 1305 | + {
|
---|
| 1306 | + /* trans_function_name() doesn't work well when skipping, use eval0()
|
---|
| 1307 | + * instead to skip to any following command, e.g. for:
|
---|
| 1308 | + * :if 0 | call dict.foo().bar() | endif */
|
---|
| 1309 | + eval0(eap->arg, &rettv, &eap->nextcmd, FALSE);
|
---|
| 1310 | + return;
|
---|
| 1311 | + }
|
---|
| 1312 | +
|
---|
| 1313 | tofree = trans_function_name(&arg, eap->skip, TFN_INT, &fudi);
|
---|
| 1314 | if (fudi.fd_newkey != NULL)
|
---|
| 1315 | {
|
---|
| 1316 | @@ -4349,7 +4356,8 @@
|
---|
| 1317 | else
|
---|
| 1318 | {
|
---|
| 1319 | /* Compare two Lists for being equal or unequal. */
|
---|
| 1320 | - n1 = list_equal(rettv->vval.v_list, var2.vval.v_list, ic);
|
---|
| 1321 | + n1 = list_equal(rettv->vval.v_list, var2.vval.v_list,
|
---|
| 1322 | + ic, FALSE);
|
---|
| 1323 | if (type == TYPE_NEQUAL)
|
---|
| 1324 | n1 = !n1;
|
---|
| 1325 | }
|
---|
| 1326 | @@ -4378,7 +4386,8 @@
|
---|
| 1327 | else
|
---|
| 1328 | {
|
---|
| 1329 | /* Compare two Dictionaries for being equal or unequal. */
|
---|
| 1330 | - n1 = dict_equal(rettv->vval.v_dict, var2.vval.v_dict, ic);
|
---|
| 1331 | + n1 = dict_equal(rettv->vval.v_dict, var2.vval.v_dict,
|
---|
| 1332 | + ic, FALSE);
|
---|
| 1333 | if (type == TYPE_NEQUAL)
|
---|
| 1334 | n1 = !n1;
|
---|
| 1335 | }
|
---|
| 1336 | @@ -5913,10 +5922,11 @@
|
---|
| 1337 | * Return TRUE when two lists have exactly the same values.
|
---|
| 1338 | */
|
---|
| 1339 | static int
|
---|
| 1340 | -list_equal(l1, l2, ic)
|
---|
| 1341 | +list_equal(l1, l2, ic, recursive)
|
---|
| 1342 | list_T *l1;
|
---|
| 1343 | list_T *l2;
|
---|
| 1344 | int ic; /* ignore case for strings */
|
---|
| 1345 | + int recursive; /* TRUE when used recursively */
|
---|
| 1346 | {
|
---|
| 1347 | listitem_T *item1, *item2;
|
---|
| 1348 |
|
---|
| 1349 | @@ -5930,7 +5940,7 @@
|
---|
| 1350 | for (item1 = l1->lv_first, item2 = l2->lv_first;
|
---|
| 1351 | item1 != NULL && item2 != NULL;
|
---|
| 1352 | item1 = item1->li_next, item2 = item2->li_next)
|
---|
| 1353 | - if (!tv_equal(&item1->li_tv, &item2->li_tv, ic))
|
---|
| 1354 | + if (!tv_equal(&item1->li_tv, &item2->li_tv, ic, recursive))
|
---|
| 1355 | return FALSE;
|
---|
| 1356 | return item1 == NULL && item2 == NULL;
|
---|
| 1357 | }
|
---|
| 1358 | @@ -5952,10 +5962,11 @@
|
---|
| 1359 | * Return TRUE when two dictionaries have exactly the same key/values.
|
---|
| 1360 | */
|
---|
| 1361 | static int
|
---|
| 1362 | -dict_equal(d1, d2, ic)
|
---|
| 1363 | +dict_equal(d1, d2, ic, recursive)
|
---|
| 1364 | dict_T *d1;
|
---|
| 1365 | dict_T *d2;
|
---|
| 1366 | int ic; /* ignore case for strings */
|
---|
| 1367 | + int recursive; /* TRUE when used recursively */
|
---|
| 1368 | {
|
---|
| 1369 | hashitem_T *hi;
|
---|
| 1370 | dictitem_T *item2;
|
---|
| 1371 | @@ -5976,7 +5987,7 @@
|
---|
| 1372 | item2 = dict_find(d2, hi->hi_key, -1);
|
---|
| 1373 | if (item2 == NULL)
|
---|
| 1374 | return FALSE;
|
---|
| 1375 | - if (!tv_equal(&HI2DI(hi)->di_tv, &item2->di_tv, ic))
|
---|
| 1376 | + if (!tv_equal(&HI2DI(hi)->di_tv, &item2->di_tv, ic, recursive))
|
---|
| 1377 | return FALSE;
|
---|
| 1378 | --todo;
|
---|
| 1379 | }
|
---|
| 1380 | @@ -5984,41 +5995,54 @@
|
---|
| 1381 | return TRUE;
|
---|
| 1382 | }
|
---|
| 1383 |
|
---|
| 1384 | +static int tv_equal_recurse_limit;
|
---|
| 1385 | +
|
---|
| 1386 | /*
|
---|
| 1387 | * Return TRUE if "tv1" and "tv2" have the same value.
|
---|
| 1388 | * Compares the items just like "==" would compare them, but strings and
|
---|
| 1389 | * numbers are different. Floats and numbers are also different.
|
---|
| 1390 | */
|
---|
| 1391 | static int
|
---|
| 1392 | -tv_equal(tv1, tv2, ic)
|
---|
| 1393 | +tv_equal(tv1, tv2, ic, recursive)
|
---|
| 1394 | typval_T *tv1;
|
---|
| 1395 | typval_T *tv2;
|
---|
| 1396 | - int ic; /* ignore case */
|
---|
| 1397 | + int ic; /* ignore case */
|
---|
| 1398 | + int recursive; /* TRUE when used recursively */
|
---|
| 1399 | {
|
---|
| 1400 | char_u buf1[NUMBUFLEN], buf2[NUMBUFLEN];
|
---|
| 1401 | char_u *s1, *s2;
|
---|
| 1402 | - static int recursive = 0; /* cach recursive loops */
|
---|
| 1403 | + static int recursive_cnt = 0; /* catch recursive loops */
|
---|
| 1404 | int r;
|
---|
| 1405 |
|
---|
| 1406 | if (tv1->v_type != tv2->v_type)
|
---|
| 1407 | return FALSE;
|
---|
| 1408 | +
|
---|
| 1409 | /* Catch lists and dicts that have an endless loop by limiting
|
---|
| 1410 | - * recursiveness to 1000. We guess they are equal then. */
|
---|
| 1411 | - if (recursive >= 1000)
|
---|
| 1412 | + * recursiveness to a limit. We guess they are equal then.
|
---|
| 1413 | + * A fixed limit has the problem of still taking an awful long time.
|
---|
| 1414 | + * Reduce the limit every time running into it. That should work fine for
|
---|
| 1415 | + * deeply linked structures that are not recursively linked and catch
|
---|
| 1416 | + * recursiveness quickly. */
|
---|
| 1417 | + if (!recursive)
|
---|
| 1418 | + tv_equal_recurse_limit = 1000;
|
---|
| 1419 | + if (recursive_cnt >= tv_equal_recurse_limit)
|
---|
| 1420 | + {
|
---|
| 1421 | + --tv_equal_recurse_limit;
|
---|
| 1422 | return TRUE;
|
---|
| 1423 | + }
|
---|
| 1424 |
|
---|
| 1425 | switch (tv1->v_type)
|
---|
| 1426 | {
|
---|
| 1427 | case VAR_LIST:
|
---|
| 1428 | - ++recursive;
|
---|
| 1429 | - r = list_equal(tv1->vval.v_list, tv2->vval.v_list, ic);
|
---|
| 1430 | - --recursive;
|
---|
| 1431 | + ++recursive_cnt;
|
---|
| 1432 | + r = list_equal(tv1->vval.v_list, tv2->vval.v_list, ic, TRUE);
|
---|
| 1433 | + --recursive_cnt;
|
---|
| 1434 | return r;
|
---|
| 1435 |
|
---|
| 1436 | case VAR_DICT:
|
---|
| 1437 | - ++recursive;
|
---|
| 1438 | - r = dict_equal(tv1->vval.v_dict, tv2->vval.v_dict, ic);
|
---|
| 1439 | - --recursive;
|
---|
| 1440 | + ++recursive_cnt;
|
---|
| 1441 | + r = dict_equal(tv1->vval.v_dict, tv2->vval.v_dict, ic, TRUE);
|
---|
| 1442 | + --recursive_cnt;
|
---|
| 1443 | return r;
|
---|
| 1444 |
|
---|
| 1445 | case VAR_FUNC:
|
---|
| 1446 | @@ -7075,7 +7099,7 @@
|
---|
| 1447 | }
|
---|
| 1448 |
|
---|
| 1449 | /*
|
---|
| 1450 | - * Add a list entry to dictionary "d".
|
---|
| 1451 | + * Add a list entry to dictionary "d".
|
---|
| 1452 | * Returns FAIL when out of memory and when key already exists.
|
---|
| 1453 | */
|
---|
| 1454 | int
|
---|
| 1455 | @@ -7097,6 +7121,7 @@
|
---|
| 1456 | dictitem_free(item);
|
---|
| 1457 | return FAIL;
|
---|
| 1458 | }
|
---|
| 1459 | + ++list->lv_refcount;
|
---|
| 1460 | return OK;
|
---|
| 1461 | }
|
---|
| 1462 |
|
---|
| 1463 | @@ -7802,7 +7827,7 @@
|
---|
| 1464 | {"log10", 1, 1, f_log10},
|
---|
| 1465 | #endif
|
---|
| 1466 | {"map", 2, 2, f_map},
|
---|
| 1467 | - {"maparg", 1, 3, f_maparg},
|
---|
| 1468 | + {"maparg", 1, 4, f_maparg},
|
---|
| 1469 | {"mapcheck", 1, 3, f_mapcheck},
|
---|
| 1470 | {"match", 2, 4, f_match},
|
---|
| 1471 | {"matchadd", 2, 4, f_matchadd},
|
---|
| 1472 | @@ -9389,7 +9414,7 @@
|
---|
| 1473 | }
|
---|
| 1474 |
|
---|
| 1475 | for ( ; li != NULL; li = li->li_next)
|
---|
| 1476 | - if (tv_equal(&li->li_tv, &argvars[1], ic))
|
---|
| 1477 | + if (tv_equal(&li->li_tv, &argvars[1], ic, FALSE))
|
---|
| 1478 | ++n;
|
---|
| 1479 | }
|
---|
| 1480 | }
|
---|
| 1481 | @@ -9416,7 +9441,7 @@
|
---|
| 1482 | if (!HASHITEM_EMPTY(hi))
|
---|
| 1483 | {
|
---|
| 1484 | --todo;
|
---|
| 1485 | - if (tv_equal(&HI2DI(hi)->di_tv, &argvars[1], ic))
|
---|
| 1486 | + if (tv_equal(&HI2DI(hi)->di_tv, &argvars[1], ic, FALSE))
|
---|
| 1487 | ++n;
|
---|
| 1488 | }
|
---|
| 1489 | }
|
---|
| 1490 | @@ -9857,7 +9882,7 @@
|
---|
| 1491 | char_u *s;
|
---|
| 1492 | int len;
|
---|
| 1493 | char_u *errormsg;
|
---|
| 1494 | - int flags = WILD_SILENT|WILD_USE_NL|WILD_LIST_NOTFOUND;
|
---|
| 1495 | + int options = WILD_SILENT|WILD_USE_NL|WILD_LIST_NOTFOUND;
|
---|
| 1496 | expand_T xpc;
|
---|
| 1497 | int error = FALSE;
|
---|
| 1498 |
|
---|
| 1499 | @@ -9875,12 +9900,14 @@
|
---|
| 1500 | * for 'wildignore' and don't put matches for 'suffixes' at the end. */
|
---|
| 1501 | if (argvars[1].v_type != VAR_UNKNOWN
|
---|
| 1502 | && get_tv_number_chk(&argvars[1], &error))
|
---|
| 1503 | - flags |= WILD_KEEP_ALL;
|
---|
| 1504 | + options |= WILD_KEEP_ALL;
|
---|
| 1505 | if (!error)
|
---|
| 1506 | {
|
---|
| 1507 | ExpandInit(&xpc);
|
---|
| 1508 | xpc.xp_context = EXPAND_FILES;
|
---|
| 1509 | - rettv->vval.v_string = ExpandOne(&xpc, s, NULL, flags, WILD_ALL);
|
---|
| 1510 | + if (p_wic)
|
---|
| 1511 | + options += WILD_ICASE;
|
---|
| 1512 | + rettv->vval.v_string = ExpandOne(&xpc, s, NULL, options, WILD_ALL);
|
---|
| 1513 | }
|
---|
| 1514 | else
|
---|
| 1515 | rettv->vval.v_string = NULL;
|
---|
| 1516 | @@ -11653,7 +11680,7 @@
|
---|
| 1517 | typval_T *argvars;
|
---|
| 1518 | typval_T *rettv;
|
---|
| 1519 | {
|
---|
| 1520 | - int flags = WILD_SILENT|WILD_USE_NL;
|
---|
| 1521 | + int options = WILD_SILENT|WILD_USE_NL;
|
---|
| 1522 | expand_T xpc;
|
---|
| 1523 | int error = FALSE;
|
---|
| 1524 |
|
---|
| 1525 | @@ -11661,14 +11688,16 @@
|
---|
| 1526 | * for 'wildignore' and don't put matches for 'suffixes' at the end. */
|
---|
| 1527 | if (argvars[1].v_type != VAR_UNKNOWN
|
---|
| 1528 | && get_tv_number_chk(&argvars[1], &error))
|
---|
| 1529 | - flags |= WILD_KEEP_ALL;
|
---|
| 1530 | + options |= WILD_KEEP_ALL;
|
---|
| 1531 | rettv->v_type = VAR_STRING;
|
---|
| 1532 | if (!error)
|
---|
| 1533 | {
|
---|
| 1534 | ExpandInit(&xpc);
|
---|
| 1535 | xpc.xp_context = EXPAND_FILES;
|
---|
| 1536 | + if (p_wic)
|
---|
| 1537 | + options += WILD_ICASE;
|
---|
| 1538 | rettv->vval.v_string = ExpandOne(&xpc, get_tv_string(&argvars[0]),
|
---|
| 1539 | - NULL, flags, WILD_ALL);
|
---|
| 1540 | + NULL, options, WILD_ALL);
|
---|
| 1541 | }
|
---|
| 1542 | else
|
---|
| 1543 | rettv->vval.v_string = NULL;
|
---|
| 1544 | @@ -12116,6 +12145,9 @@
|
---|
| 1545 | #ifdef FEAT_TOOLBAR
|
---|
| 1546 | "toolbar",
|
---|
| 1547 | #endif
|
---|
| 1548 | +#if defined(FEAT_CLIPBOARD) && defined(FEAT_X11)
|
---|
| 1549 | + "unnamedplus",
|
---|
| 1550 | +#endif
|
---|
| 1551 | #ifdef FEAT_USR_CMDS
|
---|
| 1552 | "user-commands", /* was accidentally included in 5.4 */
|
---|
| 1553 | "user_commands",
|
---|
| 1554 | @@ -12572,7 +12604,7 @@
|
---|
| 1555 | }
|
---|
| 1556 |
|
---|
| 1557 | for ( ; item != NULL; item = item->li_next, ++idx)
|
---|
| 1558 | - if (tv_equal(&item->li_tv, &argvars[1], ic))
|
---|
| 1559 | + if (tv_equal(&item->li_tv, &argvars[1], ic, FALSE))
|
---|
| 1560 | {
|
---|
| 1561 | rettv->vval.v_number = idx;
|
---|
| 1562 | break;
|
---|
| 1563 | @@ -13290,8 +13322,10 @@
|
---|
| 1564 | char_u *keys_buf = NULL;
|
---|
| 1565 | char_u *rhs;
|
---|
| 1566 | int mode;
|
---|
| 1567 | - garray_T ga;
|
---|
| 1568 | int abbr = FALSE;
|
---|
| 1569 | + int get_dict = FALSE;
|
---|
| 1570 | + mapblock_T *mp;
|
---|
| 1571 | + int buffer_local;
|
---|
| 1572 |
|
---|
| 1573 | /* return empty string for failure */
|
---|
| 1574 | rettv->v_type = VAR_STRING;
|
---|
| 1575 | @@ -13305,7 +13339,11 @@
|
---|
| 1576 | {
|
---|
| 1577 | which = get_tv_string_buf_chk(&argvars[1], buf);
|
---|
| 1578 | if (argvars[2].v_type != VAR_UNKNOWN)
|
---|
| 1579 | + {
|
---|
| 1580 | abbr = get_tv_number(&argvars[2]);
|
---|
| 1581 | + if (argvars[3].v_type != VAR_UNKNOWN)
|
---|
| 1582 | + get_dict = get_tv_number(&argvars[3]);
|
---|
| 1583 | + }
|
---|
| 1584 | }
|
---|
| 1585 | else
|
---|
| 1586 | which = (char_u *)"";
|
---|
| 1587 | @@ -13315,19 +13353,34 @@
|
---|
| 1588 | mode = get_map_mode(&which, 0);
|
---|
| 1589 |
|
---|
| 1590 | keys = replace_termcodes(keys, &keys_buf, TRUE, TRUE, FALSE);
|
---|
| 1591 | - rhs = check_map(keys, mode, exact, FALSE, abbr);
|
---|
| 1592 | + rhs = check_map(keys, mode, exact, FALSE, abbr, &mp, &buffer_local);
|
---|
| 1593 | vim_free(keys_buf);
|
---|
| 1594 | - if (rhs != NULL)
|
---|
| 1595 | - {
|
---|
| 1596 | - ga_init(&ga);
|
---|
| 1597 | - ga.ga_itemsize = 1;
|
---|
| 1598 | - ga.ga_growsize = 40;
|
---|
| 1599 |
|
---|
| 1600 | - while (*rhs != NUL)
|
---|
| 1601 | - ga_concat(&ga, str2special(&rhs, FALSE));
|
---|
| 1602 | + if (!get_dict)
|
---|
| 1603 | + {
|
---|
| 1604 | + /* Return a string. */
|
---|
| 1605 | + if (rhs != NULL)
|
---|
| 1606 | + rettv->vval.v_string = str2special_save(rhs, FALSE);
|
---|
| 1607 | +
|
---|
| 1608 | + }
|
---|
| 1609 | + else if (rettv_dict_alloc(rettv) != FAIL && rhs != NULL)
|
---|
| 1610 | + {
|
---|
| 1611 | + /* Return a dictionary. */
|
---|
| 1612 | + char_u *lhs = str2special_save(mp->m_keys, TRUE);
|
---|
| 1613 | + char_u *mapmode = map_mode_to_chars(mp->m_mode);
|
---|
| 1614 | + dict_T *dict = rettv->vval.v_dict;
|
---|
| 1615 | +
|
---|
| 1616 | + dict_add_nr_str(dict, "lhs", 0L, lhs);
|
---|
| 1617 | + dict_add_nr_str(dict, "rhs", 0L, mp->m_orig_str);
|
---|
| 1618 | + dict_add_nr_str(dict, "noremap", mp->m_noremap ? 1L : 0L , NULL);
|
---|
| 1619 | + dict_add_nr_str(dict, "expr", mp->m_expr ? 1L : 0L, NULL);
|
---|
| 1620 | + dict_add_nr_str(dict, "silent", mp->m_silent ? 1L : 0L, NULL);
|
---|
| 1621 | + dict_add_nr_str(dict, "sid", (long)mp->m_script_ID, NULL);
|
---|
| 1622 | + dict_add_nr_str(dict, "buffer", (long)buffer_local, NULL);
|
---|
| 1623 | + dict_add_nr_str(dict, "mode", 0L, mapmode);
|
---|
| 1624 |
|
---|
| 1625 | - ga_append(&ga, NUL);
|
---|
| 1626 | - rettv->vval.v_string = (char_u *)ga.ga_data;
|
---|
| 1627 | + vim_free(lhs);
|
---|
| 1628 | + vim_free(mapmode);
|
---|
| 1629 | }
|
---|
| 1630 | }
|
---|
| 1631 |
|
---|
| 1632 | @@ -22519,18 +22572,21 @@
|
---|
| 1633 | if (tab != NULL)
|
---|
| 1634 | {
|
---|
| 1635 | *tab++ = '\0'; /* isolate the variable name */
|
---|
| 1636 | - if (*tab == 'S') /* string var */
|
---|
| 1637 | - type = VAR_STRING;
|
---|
| 1638 | + switch (*tab)
|
---|
| 1639 | + {
|
---|
| 1640 | + case 'S': type = VAR_STRING; break;
|
---|
| 1641 | #ifdef FEAT_FLOAT
|
---|
| 1642 | - else if (*tab == 'F')
|
---|
| 1643 | - type = VAR_FLOAT;
|
---|
| 1644 | + case 'F': type = VAR_FLOAT; break;
|
---|
| 1645 | #endif
|
---|
| 1646 | + case 'D': type = VAR_DICT; break;
|
---|
| 1647 | + case 'L': type = VAR_LIST; break;
|
---|
| 1648 | + }
|
---|
| 1649 |
|
---|
| 1650 | tab = vim_strchr(tab, '\t');
|
---|
| 1651 | if (tab != NULL)
|
---|
| 1652 | {
|
---|
| 1653 | tv.v_type = type;
|
---|
| 1654 | - if (type == VAR_STRING)
|
---|
| 1655 | + if (type == VAR_STRING || type == VAR_DICT || type == VAR_LIST)
|
---|
| 1656 | tv.vval.v_string = viminfo_readstring(virp,
|
---|
| 1657 | (int)(tab - virp->vir_line + 1), TRUE);
|
---|
| 1658 | #ifdef FEAT_FLOAT
|
---|
| 1659 | @@ -22539,9 +22595,27 @@
|
---|
| 1660 | #endif
|
---|
| 1661 | else
|
---|
| 1662 | tv.vval.v_number = atol((char *)tab + 1);
|
---|
| 1663 | + if (type == VAR_DICT || type == VAR_LIST)
|
---|
| 1664 | + {
|
---|
| 1665 | + typval_T *etv = eval_expr(tv.vval.v_string, NULL);
|
---|
| 1666 | +
|
---|
| 1667 | + if (etv == NULL)
|
---|
| 1668 | + /* Failed to parse back the dict or list, use it as a
|
---|
| 1669 | + * string. */
|
---|
| 1670 | + tv.v_type = VAR_STRING;
|
---|
| 1671 | + else
|
---|
| 1672 | + {
|
---|
| 1673 | + vim_free(tv.vval.v_string);
|
---|
| 1674 | + tv = *etv;
|
---|
| 1675 | + }
|
---|
| 1676 | + }
|
---|
| 1677 | +
|
---|
| 1678 | set_var(virp->vir_line + 1, &tv, FALSE);
|
---|
| 1679 | - if (type == VAR_STRING)
|
---|
| 1680 | +
|
---|
| 1681 | + if (tv.v_type == VAR_STRING)
|
---|
| 1682 | vim_free(tv.vval.v_string);
|
---|
| 1683 | + else if (tv.v_type == VAR_DICT || tv.v_type == VAR_LIST)
|
---|
| 1684 | + clear_tv(&tv);
|
---|
| 1685 | }
|
---|
| 1686 | }
|
---|
| 1687 | }
|
---|
| 1688 | @@ -22583,8 +22657,10 @@
|
---|
| 1689 | case VAR_STRING: s = "STR"; break;
|
---|
| 1690 | case VAR_NUMBER: s = "NUM"; break;
|
---|
| 1691 | #ifdef FEAT_FLOAT
|
---|
| 1692 | - case VAR_FLOAT: s = "FLO"; break;
|
---|
| 1693 | + case VAR_FLOAT: s = "FLO"; break;
|
---|
| 1694 | #endif
|
---|
| 1695 | + case VAR_DICT: s = "DIC"; break;
|
---|
| 1696 | + case VAR_LIST: s = "LIS"; break;
|
---|
| 1697 | default: continue;
|
---|
| 1698 | }
|
---|
| 1699 | fprintf(fp, "!%s\t%s\t", this_var->di_key, s);
|
---|
| 1700 | diff -Naur vim73.orig/src/ex_cmds.c vim73/src/ex_cmds.c
|
---|
| 1701 | --- vim73.orig/src/ex_cmds.c 2010-08-13 05:14:35.000000000 -0400
|
---|
| 1702 | +++ vim73/src/ex_cmds.c 2011-01-08 21:01:19.370657515 -0500
|
---|
| 1703 | @@ -11,10 +11,6 @@
|
---|
| 1704 | * ex_cmds.c: some functions for command line commands
|
---|
| 1705 | */
|
---|
| 1706 |
|
---|
| 1707 | -#if defined(MSDOS) || defined(WIN16) || defined(WIN32) || defined(_WIN64)
|
---|
| 1708 | -# include "vimio.h" /* for mch_open(), must be before vim.h */
|
---|
| 1709 | -#endif
|
---|
| 1710 | -
|
---|
| 1711 | #include "vim.h"
|
---|
| 1712 | #include "version.h"
|
---|
| 1713 |
|
---|
| 1714 | @@ -323,7 +319,8 @@
|
---|
| 1715 | /* When sorting numbers "start_col_nr" is the number, not the column
|
---|
| 1716 | * number. */
|
---|
| 1717 | if (sort_nr)
|
---|
| 1718 | - result = l1.start_col_nr - l2.start_col_nr;
|
---|
| 1719 | + result = l1.start_col_nr == l2.start_col_nr ? 0
|
---|
| 1720 | + : l1.start_col_nr > l2.start_col_nr ? 1 : -1;
|
---|
| 1721 | else
|
---|
| 1722 | {
|
---|
| 1723 | /* We need to copy one line into "sortbuf1", because there is no
|
---|
| 1724 | @@ -482,7 +479,7 @@
|
---|
| 1725 | * of the match, by temporarily terminating the string there */
|
---|
| 1726 | s2 = s + end_col;
|
---|
| 1727 | c = *s2;
|
---|
| 1728 | - (*s2) = 0;
|
---|
| 1729 | + *s2 = NUL;
|
---|
| 1730 | /* Sorting on number: Store the number itself. */
|
---|
| 1731 | p = s + start_col;
|
---|
| 1732 | if (sort_hex)
|
---|
| 1733 | @@ -491,9 +488,13 @@
|
---|
| 1734 | s = skiptodigit(p);
|
---|
| 1735 | if (s > p && s[-1] == '-')
|
---|
| 1736 | --s; /* include preceding negative sign */
|
---|
| 1737 | - vim_str2nr(s, NULL, NULL, sort_oct, sort_hex,
|
---|
| 1738 | - &nrs[lnum - eap->line1].start_col_nr, NULL);
|
---|
| 1739 | - (*s2) = c;
|
---|
| 1740 | + if (*s == NUL)
|
---|
| 1741 | + /* empty line should sort before any number */
|
---|
| 1742 | + nrs[lnum - eap->line1].start_col_nr = -MAXLNUM;
|
---|
| 1743 | + else
|
---|
| 1744 | + vim_str2nr(s, NULL, NULL, sort_oct, sort_hex,
|
---|
| 1745 | + &nrs[lnum - eap->line1].start_col_nr, NULL);
|
---|
| 1746 | + *s2 = c;
|
---|
| 1747 | }
|
---|
| 1748 | else
|
---|
| 1749 | {
|
---|
| 1750 | @@ -2700,6 +2701,10 @@
|
---|
| 1751 | TRUE);
|
---|
| 1752 | do_modelines(0);
|
---|
| 1753 | }
|
---|
| 1754 | +
|
---|
| 1755 | + /* Autocommands may have changed buffer names, esp. when
|
---|
| 1756 | + * 'autochdir' is set. */
|
---|
| 1757 | + fname = curbuf->b_sfname;
|
---|
| 1758 | #endif
|
---|
| 1759 | }
|
---|
| 1760 |
|
---|
| 1761 | @@ -3498,9 +3503,7 @@
|
---|
| 1762 | curbuf->b_p_bin = FALSE; /* reset 'bin' before reading file */
|
---|
| 1763 | curwin->w_p_nu = 0; /* no line numbers */
|
---|
| 1764 | curwin->w_p_rnu = 0; /* no relative line numbers */
|
---|
| 1765 | -#ifdef FEAT_SCROLLBIND
|
---|
| 1766 | - curwin->w_p_scb = FALSE; /* no scroll binding */
|
---|
| 1767 | -#endif
|
---|
| 1768 | + RESET_BINDING(curwin); /* no scroll or cursor binding */
|
---|
| 1769 | #ifdef FEAT_ARABIC
|
---|
| 1770 | curwin->w_p_arab = FALSE; /* no arabic mode */
|
---|
| 1771 | #endif
|
---|
| 1772 | @@ -5471,9 +5474,8 @@
|
---|
| 1773 | return FALSE;
|
---|
| 1774 | curwin->w_p_pvw = TRUE;
|
---|
| 1775 | curwin->w_p_wfh = TRUE;
|
---|
| 1776 | -# ifdef FEAT_SCROLLBIND
|
---|
| 1777 | - curwin->w_p_scb = FALSE; /* don't take over 'scrollbind' */
|
---|
| 1778 | -# endif
|
---|
| 1779 | + RESET_BINDING(curwin); /* don't take over 'scrollbind'
|
---|
| 1780 | + and 'cursorbind' */
|
---|
| 1781 | # ifdef FEAT_DIFF
|
---|
| 1782 | curwin->w_p_diff = FALSE; /* no 'diff' */
|
---|
| 1783 | # endif
|
---|
| 1784 | @@ -6559,8 +6561,7 @@
|
---|
| 1785 | struct sign
|
---|
| 1786 | {
|
---|
| 1787 | sign_T *sn_next; /* next sign in list */
|
---|
| 1788 | - int sn_typenr; /* type number of sign (negative if not equal
|
---|
| 1789 | - to name) */
|
---|
| 1790 | + int sn_typenr; /* type number of sign */
|
---|
| 1791 | char_u *sn_name; /* name of sign */
|
---|
| 1792 | char_u *sn_icon; /* name of pixmap */
|
---|
| 1793 | #ifdef FEAT_SIGN_ICONS
|
---|
| 1794 | @@ -6572,7 +6573,7 @@
|
---|
| 1795 | };
|
---|
| 1796 |
|
---|
| 1797 | static sign_T *first_sign = NULL;
|
---|
| 1798 | -static int last_sign_typenr = MAX_TYPENR; /* is decremented */
|
---|
| 1799 | +static int next_sign_typenr = 1;
|
---|
| 1800 |
|
---|
| 1801 | static int sign_cmd_idx __ARGS((char_u *begin_cmd, char_u *end_cmd));
|
---|
| 1802 | static void sign_list_defined __ARGS((sign_T *sp));
|
---|
| 1803 | @@ -6654,9 +6655,14 @@
|
---|
| 1804 | EMSG(_("E156: Missing sign name"));
|
---|
| 1805 | else
|
---|
| 1806 | {
|
---|
| 1807 | + /* Isolate the sign name. If it's a number skip leading zeroes,
|
---|
| 1808 | + * so that "099" and "99" are the same sign. But keep "0". */
|
---|
| 1809 | p = skiptowhite(arg);
|
---|
| 1810 | if (*p != NUL)
|
---|
| 1811 | *p++ = NUL;
|
---|
| 1812 | + while (arg[0] == '0' && arg[1] != NUL)
|
---|
| 1813 | + ++arg;
|
---|
| 1814 | +
|
---|
| 1815 | sp_prev = NULL;
|
---|
| 1816 | for (sp = first_sign; sp != NULL; sp = sp->sn_next)
|
---|
| 1817 | {
|
---|
| 1818 | @@ -6669,46 +6675,52 @@
|
---|
| 1819 | /* ":sign define {name} ...": define a sign */
|
---|
| 1820 | if (sp == NULL)
|
---|
| 1821 | {
|
---|
| 1822 | + sign_T *lp;
|
---|
| 1823 | + int start = next_sign_typenr;
|
---|
| 1824 | +
|
---|
| 1825 | /* Allocate a new sign. */
|
---|
| 1826 | sp = (sign_T *)alloc_clear((unsigned)sizeof(sign_T));
|
---|
| 1827 | if (sp == NULL)
|
---|
| 1828 | return;
|
---|
| 1829 | - if (sp_prev == NULL)
|
---|
| 1830 | - first_sign = sp;
|
---|
| 1831 | - else
|
---|
| 1832 | - sp_prev->sn_next = sp;
|
---|
| 1833 | - sp->sn_name = vim_strnsave(arg, (int)(p - arg));
|
---|
| 1834 |
|
---|
| 1835 | - /* If the name is a number use that for the typenr,
|
---|
| 1836 | - * otherwise use a negative number. */
|
---|
| 1837 | - if (VIM_ISDIGIT(*arg))
|
---|
| 1838 | - sp->sn_typenr = atoi((char *)arg);
|
---|
| 1839 | - else
|
---|
| 1840 | + /* Check that next_sign_typenr is not already being used.
|
---|
| 1841 | + * This only happens after wrapping around. Hopefully
|
---|
| 1842 | + * another one got deleted and we can use its number. */
|
---|
| 1843 | + for (lp = first_sign; lp != NULL; )
|
---|
| 1844 | {
|
---|
| 1845 | - sign_T *lp;
|
---|
| 1846 | - int start = last_sign_typenr;
|
---|
| 1847 | -
|
---|
| 1848 | - for (lp = first_sign; lp != NULL; lp = lp->sn_next)
|
---|
| 1849 | + if (lp->sn_typenr == next_sign_typenr)
|
---|
| 1850 | {
|
---|
| 1851 | - if (lp->sn_typenr == last_sign_typenr)
|
---|
| 1852 | + ++next_sign_typenr;
|
---|
| 1853 | + if (next_sign_typenr == MAX_TYPENR)
|
---|
| 1854 | + next_sign_typenr = 1;
|
---|
| 1855 | + if (next_sign_typenr == start)
|
---|
| 1856 | {
|
---|
| 1857 | - --last_sign_typenr;
|
---|
| 1858 | - if (last_sign_typenr == 0)
|
---|
| 1859 | - last_sign_typenr = MAX_TYPENR;
|
---|
| 1860 | - if (last_sign_typenr == start)
|
---|
| 1861 | - {
|
---|
| 1862 | - EMSG(_("E612: Too many signs defined"));
|
---|
| 1863 | - return;
|
---|
| 1864 | - }
|
---|
| 1865 | - lp = first_sign;
|
---|
| 1866 | - continue;
|
---|
| 1867 | + vim_free(sp);
|
---|
| 1868 | + EMSG(_("E612: Too many signs defined"));
|
---|
| 1869 | + return;
|
---|
| 1870 | }
|
---|
| 1871 | + lp = first_sign; /* start all over */
|
---|
| 1872 | + continue;
|
---|
| 1873 | }
|
---|
| 1874 | + lp = lp->sn_next;
|
---|
| 1875 | + }
|
---|
| 1876 | +
|
---|
| 1877 | + sp->sn_typenr = next_sign_typenr;
|
---|
| 1878 | + if (++next_sign_typenr == MAX_TYPENR)
|
---|
| 1879 | + next_sign_typenr = 1; /* wrap around */
|
---|
| 1880 |
|
---|
| 1881 | - sp->sn_typenr = last_sign_typenr--;
|
---|
| 1882 | - if (last_sign_typenr == 0)
|
---|
| 1883 | - last_sign_typenr = MAX_TYPENR; /* wrap around */
|
---|
| 1884 | + sp->sn_name = vim_strsave(arg);
|
---|
| 1885 | + if (sp->sn_name == NULL) /* out of memory */
|
---|
| 1886 | + {
|
---|
| 1887 | + vim_free(sp);
|
---|
| 1888 | + return;
|
---|
| 1889 | }
|
---|
| 1890 | +
|
---|
| 1891 | + /* add the new sign to the list of signs */
|
---|
| 1892 | + if (sp_prev == NULL)
|
---|
| 1893 | + first_sign = sp;
|
---|
| 1894 | + else
|
---|
| 1895 | + sp_prev->sn_next = sp;
|
---|
| 1896 | }
|
---|
| 1897 |
|
---|
| 1898 | /* set values for a defined sign. */
|
---|
| 1899 | @@ -6886,6 +6898,8 @@
|
---|
| 1900 | arg = skiptowhite(arg);
|
---|
| 1901 | if (*arg != NUL)
|
---|
| 1902 | *arg++ = NUL;
|
---|
| 1903 | + while (sign_name[0] == '0' && sign_name[1] != NUL)
|
---|
| 1904 | + ++sign_name;
|
---|
| 1905 | }
|
---|
| 1906 | else if (STRNCMP(arg, "file=", 5) == 0)
|
---|
| 1907 | {
|
---|
| 1908 | diff -Naur vim73.orig/src/ex_cmds2.c vim73/src/ex_cmds2.c
|
---|
| 1909 | --- vim73.orig/src/ex_cmds2.c 2010-07-27 15:43:38.000000000 -0400
|
---|
| 1910 | +++ vim73/src/ex_cmds2.c 2011-01-08 21:01:19.374658068 -0500
|
---|
| 1911 | @@ -11,10 +11,6 @@
|
---|
| 1912 | * ex_cmds2.c: some more functions for command line commands
|
---|
| 1913 | */
|
---|
| 1914 |
|
---|
| 1915 | -#if defined(MSDOS) || defined(WIN16) || defined(WIN32) || defined(_WIN64)
|
---|
| 1916 | -# include "vimio.h" /* for mch_open(), must be before vim.h */
|
---|
| 1917 | -#endif
|
---|
| 1918 | -
|
---|
| 1919 | #include "vim.h"
|
---|
| 1920 | #include "version.h"
|
---|
| 1921 |
|
---|
| 1922 | @@ -2165,9 +2161,7 @@
|
---|
| 1923 | {
|
---|
| 1924 | if (win_split(0, 0) == FAIL)
|
---|
| 1925 | return;
|
---|
| 1926 | -# ifdef FEAT_SCROLLBIND
|
---|
| 1927 | - curwin->w_p_scb = FALSE;
|
---|
| 1928 | -# endif
|
---|
| 1929 | + RESET_BINDING(curwin);
|
---|
| 1930 | }
|
---|
| 1931 | else
|
---|
| 1932 | #endif
|
---|
| 1933 | diff -Naur vim73.orig/src/ex_docmd.c vim73/src/ex_docmd.c
|
---|
| 1934 | --- vim73.orig/src/ex_docmd.c 2010-08-07 10:59:47.000000000 -0400
|
---|
| 1935 | +++ vim73/src/ex_docmd.c 2011-01-08 21:01:19.234657608 -0500
|
---|
| 1936 | @@ -733,7 +733,7 @@
|
---|
| 1937 | * do_cmdline(): execute one Ex command line
|
---|
| 1938 | *
|
---|
| 1939 | * 1. Execute "cmdline" when it is not NULL.
|
---|
| 1940 | - * If "cmdline" is NULL, or more lines are needed, getline() is used.
|
---|
| 1941 | + * If "cmdline" is NULL, or more lines are needed, fgetline() is used.
|
---|
| 1942 | * 2. Split up in parts separated with '|'.
|
---|
| 1943 | *
|
---|
| 1944 | * This function can be called recursively!
|
---|
| 1945 | @@ -741,7 +741,7 @@
|
---|
| 1946 | * flags:
|
---|
| 1947 | * DOCMD_VERBOSE - The command will be included in the error message.
|
---|
| 1948 | * DOCMD_NOWAIT - Don't call wait_return() and friends.
|
---|
| 1949 | - * DOCMD_REPEAT - Repeat execution until getline() returns NULL.
|
---|
| 1950 | + * DOCMD_REPEAT - Repeat execution until fgetline() returns NULL.
|
---|
| 1951 | * DOCMD_KEYTYPED - Don't reset KeyTyped.
|
---|
| 1952 | * DOCMD_EXCRESET - Reset the exception environment (used for debugging).
|
---|
| 1953 | * DOCMD_KEEPLINE - Store first typed line (for repeating with ".").
|
---|
| 1954 | @@ -749,15 +749,15 @@
|
---|
| 1955 | * return FAIL if cmdline could not be executed, OK otherwise
|
---|
| 1956 | */
|
---|
| 1957 | int
|
---|
| 1958 | -do_cmdline(cmdline, getline, cookie, flags)
|
---|
| 1959 | +do_cmdline(cmdline, fgetline, cookie, flags)
|
---|
| 1960 | char_u *cmdline;
|
---|
| 1961 | - char_u *(*getline) __ARGS((int, void *, int));
|
---|
| 1962 | - void *cookie; /* argument for getline() */
|
---|
| 1963 | + char_u *(*fgetline) __ARGS((int, void *, int));
|
---|
| 1964 | + void *cookie; /* argument for fgetline() */
|
---|
| 1965 | int flags;
|
---|
| 1966 | {
|
---|
| 1967 | char_u *next_cmdline; /* next cmd to execute */
|
---|
| 1968 | char_u *cmdline_copy = NULL; /* copy of cmd line */
|
---|
| 1969 | - int used_getline = FALSE; /* used "getline" to obtain command */
|
---|
| 1970 | + int used_getline = FALSE; /* used "fgetline" to obtain command */
|
---|
| 1971 | static int recursive = 0; /* recursive depth */
|
---|
| 1972 | int msg_didout_before_start = 0;
|
---|
| 1973 | int count = 0; /* line number count */
|
---|
| 1974 | @@ -775,14 +775,14 @@
|
---|
| 1975 | struct msglist **saved_msg_list = NULL;
|
---|
| 1976 | struct msglist *private_msg_list;
|
---|
| 1977 |
|
---|
| 1978 | - /* "getline" and "cookie" passed to do_one_cmd() */
|
---|
| 1979 | + /* "fgetline" and "cookie" passed to do_one_cmd() */
|
---|
| 1980 | char_u *(*cmd_getline) __ARGS((int, void *, int));
|
---|
| 1981 | void *cmd_cookie;
|
---|
| 1982 | struct loop_cookie cmd_loop_cookie;
|
---|
| 1983 | void *real_cookie;
|
---|
| 1984 | int getline_is_func;
|
---|
| 1985 | #else
|
---|
| 1986 | -# define cmd_getline getline
|
---|
| 1987 | +# define cmd_getline fgetline
|
---|
| 1988 | # define cmd_cookie cookie
|
---|
| 1989 | #endif
|
---|
| 1990 | static int call_depth = 0; /* recursiveness */
|
---|
| 1991 | @@ -822,10 +822,10 @@
|
---|
| 1992 | cstack.cs_lflags = 0;
|
---|
| 1993 | ga_init2(&lines_ga, (int)sizeof(wcmd_T), 10);
|
---|
| 1994 |
|
---|
| 1995 | - real_cookie = getline_cookie(getline, cookie);
|
---|
| 1996 | + real_cookie = getline_cookie(fgetline, cookie);
|
---|
| 1997 |
|
---|
| 1998 | /* Inside a function use a higher nesting level. */
|
---|
| 1999 | - getline_is_func = getline_equal(getline, cookie, get_func_line);
|
---|
| 2000 | + getline_is_func = getline_equal(fgetline, cookie, get_func_line);
|
---|
| 2001 | if (getline_is_func && ex_nesting_level == func_level(real_cookie))
|
---|
| 2002 | ++ex_nesting_level;
|
---|
| 2003 |
|
---|
| 2004 | @@ -837,7 +837,7 @@
|
---|
| 2005 | breakpoint = func_breakpoint(real_cookie);
|
---|
| 2006 | dbg_tick = func_dbg_tick(real_cookie);
|
---|
| 2007 | }
|
---|
| 2008 | - else if (getline_equal(getline, cookie, getsourceline))
|
---|
| 2009 | + else if (getline_equal(fgetline, cookie, getsourceline))
|
---|
| 2010 | {
|
---|
| 2011 | fname = sourcing_name;
|
---|
| 2012 | breakpoint = source_breakpoint(real_cookie);
|
---|
| 2013 | @@ -881,7 +881,8 @@
|
---|
| 2014 | * KeyTyped is only set when calling vgetc(). Reset it here when not
|
---|
| 2015 | * calling vgetc() (sourced command lines).
|
---|
| 2016 | */
|
---|
| 2017 | - if (!(flags & DOCMD_KEYTYPED) && !getline_equal(getline, cookie, getexline))
|
---|
| 2018 | + if (!(flags & DOCMD_KEYTYPED)
|
---|
| 2019 | + && !getline_equal(fgetline, cookie, getexline))
|
---|
| 2020 | KeyTyped = FALSE;
|
---|
| 2021 |
|
---|
| 2022 | /*
|
---|
| 2023 | @@ -894,7 +895,7 @@
|
---|
| 2024 | do
|
---|
| 2025 | {
|
---|
| 2026 | #ifdef FEAT_EVAL
|
---|
| 2027 | - getline_is_func = getline_equal(getline, cookie, get_func_line);
|
---|
| 2028 | + getline_is_func = getline_equal(fgetline, cookie, get_func_line);
|
---|
| 2029 | #endif
|
---|
| 2030 |
|
---|
| 2031 | /* stop skipping cmds for an error msg after all endif/while/for */
|
---|
| 2032 | @@ -909,7 +910,7 @@
|
---|
| 2033 |
|
---|
| 2034 | /*
|
---|
| 2035 | * 1. If repeating a line in a loop, get a line from lines_ga.
|
---|
| 2036 | - * 2. If no line given: Get an allocated line with getline().
|
---|
| 2037 | + * 2. If no line given: Get an allocated line with fgetline().
|
---|
| 2038 | * 3. If a line is given: Make a copy, so we can mess with it.
|
---|
| 2039 | */
|
---|
| 2040 |
|
---|
| 2041 | @@ -938,12 +939,12 @@
|
---|
| 2042 | }
|
---|
| 2043 | #ifdef FEAT_PROFILE
|
---|
| 2044 | else if (do_profiling == PROF_YES
|
---|
| 2045 | - && getline_equal(getline, cookie, getsourceline))
|
---|
| 2046 | + && getline_equal(fgetline, cookie, getsourceline))
|
---|
| 2047 | script_line_end();
|
---|
| 2048 | #endif
|
---|
| 2049 |
|
---|
| 2050 | /* Check if a sourced file hit a ":finish" command. */
|
---|
| 2051 | - if (source_finished(getline, cookie))
|
---|
| 2052 | + if (source_finished(fgetline, cookie))
|
---|
| 2053 | {
|
---|
| 2054 | retval = FAIL;
|
---|
| 2055 | break;
|
---|
| 2056 | @@ -954,7 +955,7 @@
|
---|
| 2057 | && *dbg_tick != debug_tick)
|
---|
| 2058 | {
|
---|
| 2059 | *breakpoint = dbg_find_breakpoint(
|
---|
| 2060 | - getline_equal(getline, cookie, getsourceline),
|
---|
| 2061 | + getline_equal(fgetline, cookie, getsourceline),
|
---|
| 2062 | fname, sourcing_lnum);
|
---|
| 2063 | *dbg_tick = debug_tick;
|
---|
| 2064 | }
|
---|
| 2065 | @@ -969,7 +970,7 @@
|
---|
| 2066 | dbg_breakpoint(fname, sourcing_lnum);
|
---|
| 2067 | /* Find next breakpoint. */
|
---|
| 2068 | *breakpoint = dbg_find_breakpoint(
|
---|
| 2069 | - getline_equal(getline, cookie, getsourceline),
|
---|
| 2070 | + getline_equal(fgetline, cookie, getsourceline),
|
---|
| 2071 | fname, sourcing_lnum);
|
---|
| 2072 | *dbg_tick = debug_tick;
|
---|
| 2073 | }
|
---|
| 2074 | @@ -978,7 +979,7 @@
|
---|
| 2075 | {
|
---|
| 2076 | if (getline_is_func)
|
---|
| 2077 | func_line_start(real_cookie);
|
---|
| 2078 | - else if (getline_equal(getline, cookie, getsourceline))
|
---|
| 2079 | + else if (getline_equal(fgetline, cookie, getsourceline))
|
---|
| 2080 | script_line_start();
|
---|
| 2081 | }
|
---|
| 2082 | # endif
|
---|
| 2083 | @@ -987,7 +988,7 @@
|
---|
| 2084 | if (cstack.cs_looplevel > 0)
|
---|
| 2085 | {
|
---|
| 2086 | /* Inside a while/for loop we need to store the lines and use them
|
---|
| 2087 | - * again. Pass a different "getline" function to do_one_cmd()
|
---|
| 2088 | + * again. Pass a different "fgetline" function to do_one_cmd()
|
---|
| 2089 | * below, so that it stores lines in or reads them from
|
---|
| 2090 | * "lines_ga". Makes it possible to define a function inside a
|
---|
| 2091 | * while/for loop. */
|
---|
| 2092 | @@ -995,27 +996,27 @@
|
---|
| 2093 | cmd_cookie = (void *)&cmd_loop_cookie;
|
---|
| 2094 | cmd_loop_cookie.lines_gap = &lines_ga;
|
---|
| 2095 | cmd_loop_cookie.current_line = current_line;
|
---|
| 2096 | - cmd_loop_cookie.getline = getline;
|
---|
| 2097 | + cmd_loop_cookie.getline = fgetline;
|
---|
| 2098 | cmd_loop_cookie.cookie = cookie;
|
---|
| 2099 | cmd_loop_cookie.repeating = (current_line < lines_ga.ga_len);
|
---|
| 2100 | }
|
---|
| 2101 | else
|
---|
| 2102 | {
|
---|
| 2103 | - cmd_getline = getline;
|
---|
| 2104 | + cmd_getline = fgetline;
|
---|
| 2105 | cmd_cookie = cookie;
|
---|
| 2106 | }
|
---|
| 2107 | #endif
|
---|
| 2108 |
|
---|
| 2109 | - /* 2. If no line given, get an allocated line with getline(). */
|
---|
| 2110 | + /* 2. If no line given, get an allocated line with fgetline(). */
|
---|
| 2111 | if (next_cmdline == NULL)
|
---|
| 2112 | {
|
---|
| 2113 | /*
|
---|
| 2114 | * Need to set msg_didout for the first line after an ":if",
|
---|
| 2115 | * otherwise the ":if" will be overwritten.
|
---|
| 2116 | */
|
---|
| 2117 | - if (count == 1 && getline_equal(getline, cookie, getexline))
|
---|
| 2118 | + if (count == 1 && getline_equal(fgetline, cookie, getexline))
|
---|
| 2119 | msg_didout = TRUE;
|
---|
| 2120 | - if (getline == NULL || (next_cmdline = getline(':', cookie,
|
---|
| 2121 | + if (fgetline == NULL || (next_cmdline = fgetline(':', cookie,
|
---|
| 2122 | #ifdef FEAT_EVAL
|
---|
| 2123 | cstack.cs_idx < 0 ? 0 : (cstack.cs_idx + 1) * 2
|
---|
| 2124 | #else
|
---|
| 2125 | @@ -1142,7 +1143,7 @@
|
---|
| 2126 | * If the command was typed, remember it for the ':' register.
|
---|
| 2127 | * Do this AFTER executing the command to make :@: work.
|
---|
| 2128 | */
|
---|
| 2129 | - if (getline_equal(getline, cookie, getexline)
|
---|
| 2130 | + if (getline_equal(fgetline, cookie, getexline)
|
---|
| 2131 | && new_last_cmdline != NULL)
|
---|
| 2132 | {
|
---|
| 2133 | vim_free(last_cmdline);
|
---|
| 2134 | @@ -1163,7 +1164,7 @@
|
---|
| 2135 | #ifdef FEAT_EVAL
|
---|
| 2136 | /* reset did_emsg for a function that is not aborted by an error */
|
---|
| 2137 | if (did_emsg && !force_abort
|
---|
| 2138 | - && getline_equal(getline, cookie, get_func_line)
|
---|
| 2139 | + && getline_equal(fgetline, cookie, get_func_line)
|
---|
| 2140 | && !func_has_abort(real_cookie))
|
---|
| 2141 | did_emsg = FALSE;
|
---|
| 2142 |
|
---|
| 2143 | @@ -1202,7 +1203,7 @@
|
---|
| 2144 | if (breakpoint != NULL)
|
---|
| 2145 | {
|
---|
| 2146 | *breakpoint = dbg_find_breakpoint(
|
---|
| 2147 | - getline_equal(getline, cookie, getsourceline),
|
---|
| 2148 | + getline_equal(fgetline, cookie, getsourceline),
|
---|
| 2149 | fname,
|
---|
| 2150 | ((wcmd_T *)lines_ga.ga_data)[current_line].lnum-1);
|
---|
| 2151 | *dbg_tick = debug_tick;
|
---|
| 2152 | @@ -1296,8 +1297,8 @@
|
---|
| 2153 | #endif
|
---|
| 2154 | )
|
---|
| 2155 | && !(did_emsg && used_getline
|
---|
| 2156 | - && (getline_equal(getline, cookie, getexmodeline)
|
---|
| 2157 | - || getline_equal(getline, cookie, getexline)))
|
---|
| 2158 | + && (getline_equal(fgetline, cookie, getexmodeline)
|
---|
| 2159 | + || getline_equal(fgetline, cookie, getexline)))
|
---|
| 2160 | && (next_cmdline != NULL
|
---|
| 2161 | #ifdef FEAT_EVAL
|
---|
| 2162 | || cstack.cs_idx >= 0
|
---|
| 2163 | @@ -1316,9 +1317,9 @@
|
---|
| 2164 | * unclosed conditional.
|
---|
| 2165 | */
|
---|
| 2166 | if (!got_int && !did_throw
|
---|
| 2167 | - && ((getline_equal(getline, cookie, getsourceline)
|
---|
| 2168 | - && !source_finished(getline, cookie))
|
---|
| 2169 | - || (getline_equal(getline, cookie, get_func_line)
|
---|
| 2170 | + && ((getline_equal(fgetline, cookie, getsourceline)
|
---|
| 2171 | + && !source_finished(fgetline, cookie))
|
---|
| 2172 | + || (getline_equal(fgetline, cookie, get_func_line)
|
---|
| 2173 | && !func_has_ended(real_cookie))))
|
---|
| 2174 | {
|
---|
| 2175 | if (cstack.cs_flags[cstack.cs_idx] & CSF_TRY)
|
---|
| 2176 | @@ -1354,7 +1355,7 @@
|
---|
| 2177 | /* If a missing ":endtry", ":endwhile", ":endfor", or ":endif" or a memory
|
---|
| 2178 | * lack was reported above and the error message is to be converted to an
|
---|
| 2179 | * exception, do this now after rewinding the cstack. */
|
---|
| 2180 | - do_errthrow(&cstack, getline_equal(getline, cookie, get_func_line)
|
---|
| 2181 | + do_errthrow(&cstack, getline_equal(fgetline, cookie, get_func_line)
|
---|
| 2182 | ? (char_u *)"endfunction" : (char_u *)NULL);
|
---|
| 2183 |
|
---|
| 2184 | if (trylevel == 0)
|
---|
| 2185 | @@ -1449,9 +1450,9 @@
|
---|
| 2186 | */
|
---|
| 2187 | if (did_throw)
|
---|
| 2188 | need_rethrow = TRUE;
|
---|
| 2189 | - if ((getline_equal(getline, cookie, getsourceline)
|
---|
| 2190 | + if ((getline_equal(fgetline, cookie, getsourceline)
|
---|
| 2191 | && ex_nesting_level > source_level(real_cookie))
|
---|
| 2192 | - || (getline_equal(getline, cookie, get_func_line)
|
---|
| 2193 | + || (getline_equal(fgetline, cookie, get_func_line)
|
---|
| 2194 | && ex_nesting_level > func_level(real_cookie) + 1))
|
---|
| 2195 | {
|
---|
| 2196 | if (!did_throw)
|
---|
| 2197 | @@ -1460,16 +1461,16 @@
|
---|
| 2198 | else
|
---|
| 2199 | {
|
---|
| 2200 | /* When leaving a function, reduce nesting level. */
|
---|
| 2201 | - if (getline_equal(getline, cookie, get_func_line))
|
---|
| 2202 | + if (getline_equal(fgetline, cookie, get_func_line))
|
---|
| 2203 | --ex_nesting_level;
|
---|
| 2204 | /*
|
---|
| 2205 | * Go to debug mode when returning from a function in which we are
|
---|
| 2206 | * single-stepping.
|
---|
| 2207 | */
|
---|
| 2208 | - if ((getline_equal(getline, cookie, getsourceline)
|
---|
| 2209 | - || getline_equal(getline, cookie, get_func_line))
|
---|
| 2210 | + if ((getline_equal(fgetline, cookie, getsourceline)
|
---|
| 2211 | + || getline_equal(fgetline, cookie, get_func_line))
|
---|
| 2212 | && ex_nesting_level + 1 <= debug_break_level)
|
---|
| 2213 | - do_debug(getline_equal(getline, cookie, getsourceline)
|
---|
| 2214 | + do_debug(getline_equal(fgetline, cookie, getsourceline)
|
---|
| 2215 | ? (char_u *)_("End of sourced file")
|
---|
| 2216 | : (char_u *)_("End of function"));
|
---|
| 2217 | }
|
---|
| 2218 | @@ -2871,8 +2872,10 @@
|
---|
| 2219 | }
|
---|
| 2220 |
|
---|
| 2221 | #ifdef FEAT_USR_CMDS
|
---|
| 2222 | - /* Look for a user defined command as a last resort */
|
---|
| 2223 | - if (eap->cmdidx == CMD_SIZE && *eap->cmd >= 'A' && *eap->cmd <= 'Z')
|
---|
| 2224 | + /* Look for a user defined command as a last resort. Let ":Print" be
|
---|
| 2225 | + * overruled by a user defined command. */
|
---|
| 2226 | + if ((eap->cmdidx == CMD_SIZE || eap->cmdidx == CMD_Print)
|
---|
| 2227 | + && *eap->cmd >= 'A' && *eap->cmd <= 'Z')
|
---|
| 2228 | {
|
---|
| 2229 | /* User defined commands may contain digits. */
|
---|
| 2230 | while (ASCII_ISALNUM(*p))
|
---|
| 2231 | @@ -3465,7 +3468,8 @@
|
---|
| 2232 | case CMD_find:
|
---|
| 2233 | case CMD_sfind:
|
---|
| 2234 | case CMD_tabfind:
|
---|
| 2235 | - xp->xp_context = EXPAND_FILES_IN_PATH;
|
---|
| 2236 | + if (xp->xp_context == EXPAND_FILES)
|
---|
| 2237 | + xp->xp_context = EXPAND_FILES_IN_PATH;
|
---|
| 2238 | break;
|
---|
| 2239 | case CMD_cd:
|
---|
| 2240 | case CMD_chdir:
|
---|
| 2241 | @@ -4520,12 +4524,14 @@
|
---|
| 2242 | else /* n == 2 */
|
---|
| 2243 | {
|
---|
| 2244 | expand_T xpc;
|
---|
| 2245 | + int options = WILD_LIST_NOTFOUND|WILD_ADD_SLASH;
|
---|
| 2246 |
|
---|
| 2247 | ExpandInit(&xpc);
|
---|
| 2248 | xpc.xp_context = EXPAND_FILES;
|
---|
| 2249 | + if (p_wic)
|
---|
| 2250 | + options += WILD_ICASE;
|
---|
| 2251 | p = ExpandOne(&xpc, eap->arg, NULL,
|
---|
| 2252 | - WILD_LIST_NOTFOUND|WILD_ADD_SLASH,
|
---|
| 2253 | - WILD_EXPAND_FREE);
|
---|
| 2254 | + options, WILD_EXPAND_FREE);
|
---|
| 2255 | if (p == NULL)
|
---|
| 2256 | return FAIL;
|
---|
| 2257 | }
|
---|
| 2258 | @@ -5587,6 +5593,7 @@
|
---|
| 2259 | int compl = EXPAND_NOTHING;
|
---|
| 2260 | char_u *compl_arg = NULL;
|
---|
| 2261 | int has_attr = (eap->arg[0] == '-');
|
---|
| 2262 | + int name_len;
|
---|
| 2263 |
|
---|
| 2264 | p = eap->arg;
|
---|
| 2265 |
|
---|
| 2266 | @@ -5612,6 +5619,7 @@
|
---|
| 2267 | return;
|
---|
| 2268 | }
|
---|
| 2269 | end = p;
|
---|
| 2270 | + name_len = (int)(end - name);
|
---|
| 2271 |
|
---|
| 2272 | /* If there is nothing after the name, and no attributes were specified,
|
---|
| 2273 | * we are listing commands
|
---|
| 2274 | @@ -5626,6 +5634,13 @@
|
---|
| 2275 | EMSG(_("E183: User defined commands must start with an uppercase letter"));
|
---|
| 2276 | return;
|
---|
| 2277 | }
|
---|
| 2278 | + else if ((name_len == 1 && *name == 'X')
|
---|
| 2279 | + || (name_len <= 4
|
---|
| 2280 | + && STRNCMP(name, "Next", name_len > 4 ? 4 : name_len) == 0))
|
---|
| 2281 | + {
|
---|
| 2282 | + EMSG(_("E841: Reserved name, cannot be used for user defined command"));
|
---|
| 2283 | + return;
|
---|
| 2284 | + }
|
---|
| 2285 | else
|
---|
| 2286 | uc_add_command(name, end - name, p, argt, def, flags, compl, compl_arg,
|
---|
| 2287 | eap->forceit);
|
---|
| 2288 | @@ -6897,9 +6912,7 @@
|
---|
| 2289 | # ifdef FEAT_WINDOWS
|
---|
| 2290 | if (win_split(0, 0) == FAIL)
|
---|
| 2291 | return;
|
---|
| 2292 | -# ifdef FEAT_SCROLLBIND
|
---|
| 2293 | - curwin->w_p_scb = FALSE;
|
---|
| 2294 | -# endif
|
---|
| 2295 | + RESET_BINDING(curwin);
|
---|
| 2296 |
|
---|
| 2297 | /* When splitting the window, create a new alist. Otherwise the
|
---|
| 2298 | * existing one is overwritten. */
|
---|
| 2299 | @@ -7299,7 +7312,9 @@
|
---|
| 2300 | || cmdmod.browse
|
---|
| 2301 | # endif
|
---|
| 2302 | )
|
---|
| 2303 | - curwin->w_p_scb = FALSE;
|
---|
| 2304 | + {
|
---|
| 2305 | + RESET_BINDING(curwin);
|
---|
| 2306 | + }
|
---|
| 2307 | else
|
---|
| 2308 | do_check_scrollbind(FALSE);
|
---|
| 2309 | # endif
|
---|
| 2310 | @@ -9393,7 +9408,7 @@
|
---|
| 2311 | ex_ptag(eap)
|
---|
| 2312 | exarg_T *eap;
|
---|
| 2313 | {
|
---|
| 2314 | - g_do_tagpreview = p_pvh;
|
---|
| 2315 | + g_do_tagpreview = p_pvh; /* will be reset to 0 in ex_tag_cmd() */
|
---|
| 2316 | ex_tag_cmd(eap, cmdnames[eap->cmdidx].cmd_name + 1);
|
---|
| 2317 | }
|
---|
| 2318 |
|
---|
| 2319 | @@ -9525,17 +9540,23 @@
|
---|
| 2320 | #define SPEC_CFILE 4
|
---|
| 2321 | "<sfile>", /* ":so" file name */
|
---|
| 2322 | #define SPEC_SFILE 5
|
---|
| 2323 | + "<slnum>", /* ":so" file line number */
|
---|
| 2324 | +#define SPEC_SLNUM 6
|
---|
| 2325 | #ifdef FEAT_AUTOCMD
|
---|
| 2326 | "<afile>", /* autocommand file name */
|
---|
| 2327 | -# define SPEC_AFILE 6
|
---|
| 2328 | +# define SPEC_AFILE 7
|
---|
| 2329 | "<abuf>", /* autocommand buffer number */
|
---|
| 2330 | -# define SPEC_ABUF 7
|
---|
| 2331 | +# define SPEC_ABUF 8
|
---|
| 2332 | "<amatch>", /* autocommand match name */
|
---|
| 2333 | -# define SPEC_AMATCH 8
|
---|
| 2334 | +# define SPEC_AMATCH 9
|
---|
| 2335 | #endif
|
---|
| 2336 | #ifdef FEAT_CLIENTSERVER
|
---|
| 2337 | "<client>"
|
---|
| 2338 | -# define SPEC_CLIENT 9
|
---|
| 2339 | +# ifdef FEAT_AUTOCMD
|
---|
| 2340 | +# define SPEC_CLIENT 10
|
---|
| 2341 | +# else
|
---|
| 2342 | +# define SPEC_CLIENT 7
|
---|
| 2343 | +# endif
|
---|
| 2344 | #endif
|
---|
| 2345 | };
|
---|
| 2346 |
|
---|
| 2347 | @@ -9560,6 +9581,7 @@
|
---|
| 2348 | * '<cWORD>' to WORD under the cursor
|
---|
| 2349 | * '<cfile>' to path name under the cursor
|
---|
| 2350 | * '<sfile>' to sourced file name
|
---|
| 2351 | + * '<slnum>' to sourced file line number
|
---|
| 2352 | * '<afile>' to file name for autocommand
|
---|
| 2353 | * '<abuf>' to buffer number for autocommand
|
---|
| 2354 | * '<amatch>' to matching name for autocommand
|
---|
| 2355 | @@ -9591,10 +9613,7 @@
|
---|
| 2356 | #ifdef FEAT_MODIFY_FNAME
|
---|
| 2357 | int skip_mod = FALSE;
|
---|
| 2358 | #endif
|
---|
| 2359 | -
|
---|
| 2360 | -#if defined(FEAT_AUTOCMD) || defined(FEAT_CLIENTSERVER)
|
---|
| 2361 | char_u strbuf[30];
|
---|
| 2362 | -#endif
|
---|
| 2363 |
|
---|
| 2364 | *errormsg = NULL;
|
---|
| 2365 | if (escaped != NULL)
|
---|
| 2366 | @@ -9783,6 +9802,15 @@
|
---|
| 2367 | return NULL;
|
---|
| 2368 | }
|
---|
| 2369 | break;
|
---|
| 2370 | + case SPEC_SLNUM: /* line in file for ":so" command */
|
---|
| 2371 | + if (sourcing_name == NULL || sourcing_lnum == 0)
|
---|
| 2372 | + {
|
---|
| 2373 | + *errormsg = (char_u *)_("E842: no line number to use for \"<slnum>\"");
|
---|
| 2374 | + return NULL;
|
---|
| 2375 | + }
|
---|
| 2376 | + sprintf((char *)strbuf, "%ld", (long)sourcing_lnum);
|
---|
| 2377 | + result = strbuf;
|
---|
| 2378 | + break;
|
---|
| 2379 | #if defined(FEAT_CLIENTSERVER)
|
---|
| 2380 | case SPEC_CLIENT: /* Source of last submitted input */
|
---|
| 2381 | sprintf((char *)strbuf, PRINTF_HEX_LONG_U,
|
---|
| 2382 | @@ -10707,7 +10735,7 @@
|
---|
| 2383 | * Write a file name to the session file.
|
---|
| 2384 | * Takes care of the "slash" option in 'sessionoptions' and escapes special
|
---|
| 2385 | * characters.
|
---|
| 2386 | - * Returns FAIL if writing fails.
|
---|
| 2387 | + * Returns FAIL if writing fails or out of memory.
|
---|
| 2388 | */
|
---|
| 2389 | static int
|
---|
| 2390 | ses_put_fname(fd, name, flagp)
|
---|
| 2391 | @@ -10716,49 +10744,32 @@
|
---|
| 2392 | unsigned *flagp;
|
---|
| 2393 | {
|
---|
| 2394 | char_u *sname;
|
---|
| 2395 | + char_u *p;
|
---|
| 2396 | int retval = OK;
|
---|
| 2397 | - int c;
|
---|
| 2398 |
|
---|
| 2399 | sname = home_replace_save(NULL, name);
|
---|
| 2400 | - if (sname != NULL)
|
---|
| 2401 | - name = sname;
|
---|
| 2402 | - while (*name != NUL)
|
---|
| 2403 | - {
|
---|
| 2404 | -#ifdef FEAT_MBYTE
|
---|
| 2405 | - {
|
---|
| 2406 | - int l;
|
---|
| 2407 | + if (sname == NULL)
|
---|
| 2408 | + return FAIL;
|
---|
| 2409 |
|
---|
| 2410 | - if (has_mbyte && (l = (*mb_ptr2len)(name)) > 1)
|
---|
| 2411 | - {
|
---|
| 2412 | - /* copy a multibyte char */
|
---|
| 2413 | - while (--l >= 0)
|
---|
| 2414 | - {
|
---|
| 2415 | - if (putc(*name, fd) != *name)
|
---|
| 2416 | - retval = FAIL;
|
---|
| 2417 | - ++name;
|
---|
| 2418 | - }
|
---|
| 2419 | - continue;
|
---|
| 2420 | - }
|
---|
| 2421 | - }
|
---|
| 2422 | -#endif
|
---|
| 2423 | - c = *name++;
|
---|
| 2424 | - if (c == '\\' && (*flagp & SSOP_SLASH))
|
---|
| 2425 | - /* change a backslash to a forward slash */
|
---|
| 2426 | - c = '/';
|
---|
| 2427 | - else if ((vim_strchr(escape_chars, c) != NULL
|
---|
| 2428 | -#ifdef BACKSLASH_IN_FILENAME
|
---|
| 2429 | - && c != '\\'
|
---|
| 2430 | -#endif
|
---|
| 2431 | - ) || c == '#' || c == '%')
|
---|
| 2432 | - {
|
---|
| 2433 | - /* escape a special character with a backslash */
|
---|
| 2434 | - if (putc('\\', fd) != '\\')
|
---|
| 2435 | - retval = FAIL;
|
---|
| 2436 | - }
|
---|
| 2437 | - if (putc(c, fd) != c)
|
---|
| 2438 | - retval = FAIL;
|
---|
| 2439 | + if (*flagp & SSOP_SLASH)
|
---|
| 2440 | + {
|
---|
| 2441 | + /* change all backslashes to forward slashes */
|
---|
| 2442 | + for (p = sname; *p != NUL; mb_ptr_adv(p))
|
---|
| 2443 | + if (*p == '\\')
|
---|
| 2444 | + *p = '/';
|
---|
| 2445 | }
|
---|
| 2446 | +
|
---|
| 2447 | + /* escapse special characters */
|
---|
| 2448 | + p = vim_strsave_fnameescape(sname, FALSE);
|
---|
| 2449 | vim_free(sname);
|
---|
| 2450 | + if (p == NULL)
|
---|
| 2451 | + return FAIL;
|
---|
| 2452 | +
|
---|
| 2453 | + /* write the result */
|
---|
| 2454 | + if (fputs((char *)p, fd) < 0)
|
---|
| 2455 | + retval = FAIL;
|
---|
| 2456 | +
|
---|
| 2457 | + vim_free(p);
|
---|
| 2458 | return retval;
|
---|
| 2459 | }
|
---|
| 2460 |
|
---|
| 2461 | diff -Naur vim73.orig/src/ex_getln.c vim73/src/ex_getln.c
|
---|
| 2462 | --- vim73.orig/src/ex_getln.c 2010-08-14 11:25:45.000000000 -0400
|
---|
| 2463 | +++ vim73/src/ex_getln.c 2011-01-08 21:01:19.238657508 -0500
|
---|
| 2464 | @@ -688,28 +688,35 @@
|
---|
| 2465 | p = get_expr_line();
|
---|
| 2466 | --textlock;
|
---|
| 2467 | restore_cmdline(&save_ccline);
|
---|
| 2468 | - len = (int)STRLEN(p);
|
---|
| 2469 |
|
---|
| 2470 | - if (p != NULL && realloc_cmdbuff(len + 1) == OK)
|
---|
| 2471 | + if (p != NULL)
|
---|
| 2472 | {
|
---|
| 2473 | - ccline.cmdlen = len;
|
---|
| 2474 | - STRCPY(ccline.cmdbuff, p);
|
---|
| 2475 | - vim_free(p);
|
---|
| 2476 | -
|
---|
| 2477 | - /* Restore the cursor or use the position set with
|
---|
| 2478 | - * set_cmdline_pos(). */
|
---|
| 2479 | - if (new_cmdpos > ccline.cmdlen)
|
---|
| 2480 | - ccline.cmdpos = ccline.cmdlen;
|
---|
| 2481 | - else
|
---|
| 2482 | - ccline.cmdpos = new_cmdpos;
|
---|
| 2483 | -
|
---|
| 2484 | - KeyTyped = FALSE; /* Don't do p_wc completion. */
|
---|
| 2485 | - redrawcmd();
|
---|
| 2486 | - goto cmdline_changed;
|
---|
| 2487 | + len = (int)STRLEN(p);
|
---|
| 2488 | + if (realloc_cmdbuff(len + 1) == OK)
|
---|
| 2489 | + {
|
---|
| 2490 | + ccline.cmdlen = len;
|
---|
| 2491 | + STRCPY(ccline.cmdbuff, p);
|
---|
| 2492 | + vim_free(p);
|
---|
| 2493 | +
|
---|
| 2494 | + /* Restore the cursor or use the position set with
|
---|
| 2495 | + * set_cmdline_pos(). */
|
---|
| 2496 | + if (new_cmdpos > ccline.cmdlen)
|
---|
| 2497 | + ccline.cmdpos = ccline.cmdlen;
|
---|
| 2498 | + else
|
---|
| 2499 | + ccline.cmdpos = new_cmdpos;
|
---|
| 2500 | +
|
---|
| 2501 | + KeyTyped = FALSE; /* Don't do p_wc completion. */
|
---|
| 2502 | + redrawcmd();
|
---|
| 2503 | + goto cmdline_changed;
|
---|
| 2504 | + }
|
---|
| 2505 | }
|
---|
| 2506 | }
|
---|
| 2507 | beep_flush();
|
---|
| 2508 | - c = ESC;
|
---|
| 2509 | + got_int = FALSE; /* don't abandon the command line */
|
---|
| 2510 | + did_emsg = FALSE;
|
---|
| 2511 | + emsg_on_display = FALSE;
|
---|
| 2512 | + redrawcmd();
|
---|
| 2513 | + goto cmdline_not_changed;
|
---|
| 2514 | }
|
---|
| 2515 | #endif
|
---|
| 2516 | else
|
---|
| 2517 | @@ -2342,15 +2349,31 @@
|
---|
| 2518 | windgoto(msg_row, msg_col);
|
---|
| 2519 | pend = (char_u *)(line_ga.ga_data) + line_ga.ga_len;
|
---|
| 2520 |
|
---|
| 2521 | - /* we are done when a NL is entered, but not when it comes after a
|
---|
| 2522 | - * backslash */
|
---|
| 2523 | - if (line_ga.ga_len > 0 && pend[-1] == '\n'
|
---|
| 2524 | - && (line_ga.ga_len <= 1 || pend[-2] != '\\'))
|
---|
| 2525 | - {
|
---|
| 2526 | - --line_ga.ga_len;
|
---|
| 2527 | - --pend;
|
---|
| 2528 | - *pend = NUL;
|
---|
| 2529 | - break;
|
---|
| 2530 | + /* We are done when a NL is entered, but not when it comes after an
|
---|
| 2531 | + * odd number of backslashes, that results in a NUL. */
|
---|
| 2532 | + if (line_ga.ga_len > 0 && pend[-1] == '\n')
|
---|
| 2533 | + {
|
---|
| 2534 | + int bcount = 0;
|
---|
| 2535 | +
|
---|
| 2536 | + while (line_ga.ga_len - 2 >= bcount && pend[-2 - bcount] == '\\')
|
---|
| 2537 | + ++bcount;
|
---|
| 2538 | +
|
---|
| 2539 | + if (bcount > 0)
|
---|
| 2540 | + {
|
---|
| 2541 | + /* Halve the number of backslashes: "\NL" -> "NUL", "\\NL" ->
|
---|
| 2542 | + * "\NL", etc. */
|
---|
| 2543 | + line_ga.ga_len -= (bcount + 1) / 2;
|
---|
| 2544 | + pend -= (bcount + 1) / 2;
|
---|
| 2545 | + pend[-1] = '\n';
|
---|
| 2546 | + }
|
---|
| 2547 | +
|
---|
| 2548 | + if ((bcount & 1) == 0)
|
---|
| 2549 | + {
|
---|
| 2550 | + --line_ga.ga_len;
|
---|
| 2551 | + --pend;
|
---|
| 2552 | + *pend = NUL;
|
---|
| 2553 | + break;
|
---|
| 2554 | + }
|
---|
| 2555 | }
|
---|
| 2556 | }
|
---|
| 2557 |
|
---|
| 2558 | @@ -3316,10 +3339,14 @@
|
---|
| 2559 | p2 = NULL;
|
---|
| 2560 | else
|
---|
| 2561 | {
|
---|
| 2562 | + int use_options = options |
|
---|
| 2563 | + WILD_HOME_REPLACE|WILD_ADD_SLASH|WILD_SILENT|WILD_ESCAPE;
|
---|
| 2564 | +
|
---|
| 2565 | + if (p_wic)
|
---|
| 2566 | + use_options += WILD_ICASE;
|
---|
| 2567 | p2 = ExpandOne(xp, p1,
|
---|
| 2568 | vim_strnsave(&ccline.cmdbuff[i], xp->xp_pattern_len),
|
---|
| 2569 | - WILD_HOME_REPLACE|WILD_ADD_SLASH|WILD_SILENT|WILD_ESCAPE
|
---|
| 2570 | - |options, type);
|
---|
| 2571 | + use_options, type);
|
---|
| 2572 | vim_free(p1);
|
---|
| 2573 | /* longest match: make sure it is not shorter, happens with :help */
|
---|
| 2574 | if (p2 != NULL && type == WILD_LONGEST)
|
---|
| 2575 | @@ -3405,6 +3432,7 @@
|
---|
| 2576 | * options = WILD_KEEP_ALL: don't remove 'wildignore' entries
|
---|
| 2577 | * options = WILD_SILENT: don't print warning messages
|
---|
| 2578 | * options = WILD_ESCAPE: put backslash before special chars
|
---|
| 2579 | + * options = WILD_ICASE: ignore case for files
|
---|
| 2580 | *
|
---|
| 2581 | * The variables xp->xp_context and xp->xp_backslash must have been set!
|
---|
| 2582 | */
|
---|
| 2583 | @@ -4338,6 +4366,7 @@
|
---|
| 2584 | char_u ***matches; /* return: array of pointers to matches */
|
---|
| 2585 | {
|
---|
| 2586 | char_u *file_str = NULL;
|
---|
| 2587 | + int options = WILD_ADD_SLASH|WILD_SILENT;
|
---|
| 2588 |
|
---|
| 2589 | if (xp->xp_context == EXPAND_UNSUCCESSFUL)
|
---|
| 2590 | {
|
---|
| 2591 | @@ -4356,9 +4385,11 @@
|
---|
| 2592 | if (file_str == NULL)
|
---|
| 2593 | return EXPAND_UNSUCCESSFUL;
|
---|
| 2594 |
|
---|
| 2595 | + if (p_wic)
|
---|
| 2596 | + options += WILD_ICASE;
|
---|
| 2597 | +
|
---|
| 2598 | /* find all files that match the description */
|
---|
| 2599 | - if (ExpandFromContext(xp, file_str, matchcount, matches,
|
---|
| 2600 | - WILD_ADD_SLASH|WILD_SILENT) == FAIL)
|
---|
| 2601 | + if (ExpandFromContext(xp, file_str, matchcount, matches, options) == FAIL)
|
---|
| 2602 | {
|
---|
| 2603 | *matchcount = 0;
|
---|
| 2604 | *matches = NULL;
|
---|
| 2605 | @@ -4410,7 +4441,7 @@
|
---|
| 2606 | char_u *pat;
|
---|
| 2607 | int *num_file;
|
---|
| 2608 | char_u ***file;
|
---|
| 2609 | - int options;
|
---|
| 2610 | + int options; /* EW_ flags */
|
---|
| 2611 | {
|
---|
| 2612 | #ifdef FEAT_CMDL_COMPL
|
---|
| 2613 | regmatch_T regmatch;
|
---|
| 2614 | @@ -4464,6 +4495,9 @@
|
---|
| 2615 | flags |= (EW_FILE | EW_PATH);
|
---|
| 2616 | else
|
---|
| 2617 | flags = (flags | EW_DIR) & ~EW_FILE;
|
---|
| 2618 | + if (options & WILD_ICASE)
|
---|
| 2619 | + flags |= EW_ICASE;
|
---|
| 2620 | +
|
---|
| 2621 | /* Expand wildcards, supporting %:h and the like. */
|
---|
| 2622 | ret = expand_wildcards_eval(&pat, num_file, file, flags);
|
---|
| 2623 | if (free_pat)
|
---|
| 2624 | @@ -4728,7 +4762,11 @@
|
---|
| 2625 | || (pat[1] == '.' && vim_ispathsep(pat[2])))))
|
---|
| 2626 | path = (char_u *)".";
|
---|
| 2627 | else
|
---|
| 2628 | + {
|
---|
| 2629 | path = vim_getenv((char_u *)"PATH", &mustfree);
|
---|
| 2630 | + if (path == NULL)
|
---|
| 2631 | + path = (char_u *)"";
|
---|
| 2632 | + }
|
---|
| 2633 |
|
---|
| 2634 | /*
|
---|
| 2635 | * Go over all directories in $PATH. Expand matches in that directory and
|
---|
| 2636 | @@ -6147,9 +6185,7 @@
|
---|
| 2637 | curwin->w_p_rl = cmdmsg_rl;
|
---|
| 2638 | cmdmsg_rl = FALSE;
|
---|
| 2639 | # endif
|
---|
| 2640 | -# ifdef FEAT_SCROLLBIND
|
---|
| 2641 | - curwin->w_p_scb = FALSE;
|
---|
| 2642 | -# endif
|
---|
| 2643 | + RESET_BINDING(curwin);
|
---|
| 2644 |
|
---|
| 2645 | # ifdef FEAT_AUTOCMD
|
---|
| 2646 | /* Do execute autocommands for setting the filetype (load syntax). */
|
---|
| 2647 | diff -Naur vim73.orig/src/fileio.c vim73/src/fileio.c
|
---|
| 2648 | --- vim73.orig/src/fileio.c 2010-08-14 08:20:54.000000000 -0400
|
---|
| 2649 | +++ vim73/src/fileio.c 2011-01-08 21:01:19.374658068 -0500
|
---|
| 2650 | @@ -11,14 +11,6 @@
|
---|
| 2651 | * fileio.c: read from and write to a file
|
---|
| 2652 | */
|
---|
| 2653 |
|
---|
| 2654 | -#if defined(MSDOS) || defined(WIN16) || defined(WIN32) || defined(_WIN64)
|
---|
| 2655 | -# include "vimio.h" /* for lseek(), must be before vim.h */
|
---|
| 2656 | -#endif
|
---|
| 2657 | -
|
---|
| 2658 | -#if defined __EMX__
|
---|
| 2659 | -# include "vimio.h" /* for mktemp(), CJW 1997-12-03 */
|
---|
| 2660 | -#endif
|
---|
| 2661 | -
|
---|
| 2662 | #include "vim.h"
|
---|
| 2663 |
|
---|
| 2664 | #if defined(__TANDEM) || defined(__MINT__)
|
---|
| 2665 | @@ -918,7 +910,7 @@
|
---|
| 2666 | {
|
---|
| 2667 | /* Read the first line (and a bit more). Immediately rewind to
|
---|
| 2668 | * the start of the file. If the read() fails "len" is -1. */
|
---|
| 2669 | - len = vim_read(fd, firstline, 80);
|
---|
| 2670 | + len = read_eintr(fd, firstline, 80);
|
---|
| 2671 | lseek(fd, (off_t)0L, SEEK_SET);
|
---|
| 2672 | for (p = firstline; p < firstline + len; ++p)
|
---|
| 2673 | if (*p >= 0x80)
|
---|
| 2674 | @@ -1373,7 +1365,7 @@
|
---|
| 2675 | /*
|
---|
| 2676 | * Read bytes from the file.
|
---|
| 2677 | */
|
---|
| 2678 | - size = vim_read(fd, ptr, size);
|
---|
| 2679 | + size = read_eintr(fd, ptr, size);
|
---|
| 2680 | }
|
---|
| 2681 |
|
---|
| 2682 | if (size <= 0)
|
---|
| 2683 | @@ -4000,7 +3992,7 @@
|
---|
| 2684 | #ifdef HAS_BW_FLAGS
|
---|
| 2685 | write_info.bw_flags = FIO_NOCONVERT;
|
---|
| 2686 | #endif
|
---|
| 2687 | - while ((write_info.bw_len = vim_read(fd, copybuf,
|
---|
| 2688 | + while ((write_info.bw_len = read_eintr(fd, copybuf,
|
---|
| 2689 | BUFSIZE)) > 0)
|
---|
| 2690 | {
|
---|
| 2691 | if (buf_write_bytes(&write_info) == FAIL)
|
---|
| 2692 | @@ -4813,7 +4805,7 @@
|
---|
| 2693 | #ifdef HAS_BW_FLAGS
|
---|
| 2694 | write_info.bw_flags = FIO_NOCONVERT;
|
---|
| 2695 | #endif
|
---|
| 2696 | - while ((write_info.bw_len = vim_read(fd, smallbuf,
|
---|
| 2697 | + while ((write_info.bw_len = read_eintr(fd, smallbuf,
|
---|
| 2698 | SMBUFSIZE)) > 0)
|
---|
| 2699 | if (buf_write_bytes(&write_info) == FAIL)
|
---|
| 2700 | break;
|
---|
| 2701 | @@ -5330,7 +5322,7 @@
|
---|
| 2702 |
|
---|
| 2703 | /*
|
---|
| 2704 | * Call write() to write a number of bytes to the file.
|
---|
| 2705 | - * Also handles encryption and 'encoding' conversion.
|
---|
| 2706 | + * Handles encryption and 'encoding' conversion.
|
---|
| 2707 | *
|
---|
| 2708 | * Return FAIL for failure, OK otherwise.
|
---|
| 2709 | */
|
---|
| 2710 | @@ -5702,16 +5694,8 @@
|
---|
| 2711 | crypt_encode(buf, len, buf);
|
---|
| 2712 | #endif
|
---|
| 2713 |
|
---|
| 2714 | - /* Repeat the write(), it may be interrupted by a signal. */
|
---|
| 2715 | - while (len > 0)
|
---|
| 2716 | - {
|
---|
| 2717 | - wlen = vim_write(ip->bw_fd, buf, len);
|
---|
| 2718 | - if (wlen <= 0) /* error! */
|
---|
| 2719 | - return FAIL;
|
---|
| 2720 | - len -= wlen;
|
---|
| 2721 | - buf += wlen;
|
---|
| 2722 | - }
|
---|
| 2723 | - return OK;
|
---|
| 2724 | + wlen = write_eintr(ip->bw_fd, buf, len);
|
---|
| 2725 | + return (wlen < len) ? FAIL : OK;
|
---|
| 2726 | }
|
---|
| 2727 |
|
---|
| 2728 | #ifdef FEAT_MBYTE
|
---|
| 2729 | @@ -6662,8 +6646,8 @@
|
---|
| 2730 | return -1;
|
---|
| 2731 | }
|
---|
| 2732 |
|
---|
| 2733 | - while ((n = vim_read(fd_in, buffer, BUFSIZE)) > 0)
|
---|
| 2734 | - if (vim_write(fd_out, buffer, n) != n)
|
---|
| 2735 | + while ((n = read_eintr(fd_in, buffer, BUFSIZE)) > 0)
|
---|
| 2736 | + if (write_eintr(fd_out, buffer, n) != n)
|
---|
| 2737 | {
|
---|
| 2738 | errmsg = _("E208: Error writing to \"%s\"");
|
---|
| 2739 | break;
|
---|
| 2740 | @@ -10304,3 +10288,55 @@
|
---|
| 2741 | }
|
---|
| 2742 | return reg_pat;
|
---|
| 2743 | }
|
---|
| 2744 | +
|
---|
| 2745 | +#if defined(EINTR) || defined(PROTO)
|
---|
| 2746 | +/*
|
---|
| 2747 | + * Version of read() that retries when interrupted by EINTR (possibly
|
---|
| 2748 | + * by a SIGWINCH).
|
---|
| 2749 | + */
|
---|
| 2750 | + long
|
---|
| 2751 | +read_eintr(fd, buf, bufsize)
|
---|
| 2752 | + int fd;
|
---|
| 2753 | + void *buf;
|
---|
| 2754 | + size_t bufsize;
|
---|
| 2755 | +{
|
---|
| 2756 | + long ret;
|
---|
| 2757 | +
|
---|
| 2758 | + for (;;)
|
---|
| 2759 | + {
|
---|
| 2760 | + ret = vim_read(fd, buf, bufsize);
|
---|
| 2761 | + if (ret >= 0 || errno != EINTR)
|
---|
| 2762 | + break;
|
---|
| 2763 | + }
|
---|
| 2764 | + return ret;
|
---|
| 2765 | +}
|
---|
| 2766 | +
|
---|
| 2767 | +/*
|
---|
| 2768 | + * Version of write() that retries when interrupted by EINTR (possibly
|
---|
| 2769 | + * by a SIGWINCH).
|
---|
| 2770 | + */
|
---|
| 2771 | + long
|
---|
| 2772 | +write_eintr(fd, buf, bufsize)
|
---|
| 2773 | + int fd;
|
---|
| 2774 | + void *buf;
|
---|
| 2775 | + size_t bufsize;
|
---|
| 2776 | +{
|
---|
| 2777 | + long ret = 0;
|
---|
| 2778 | + long wlen;
|
---|
| 2779 | +
|
---|
| 2780 | + /* Repeat the write() so long it didn't fail, other than being interrupted
|
---|
| 2781 | + * by a signal. */
|
---|
| 2782 | + while (ret < (long)bufsize)
|
---|
| 2783 | + {
|
---|
| 2784 | + wlen = vim_write(fd, (char *)buf + ret, bufsize - ret);
|
---|
| 2785 | + if (wlen < 0)
|
---|
| 2786 | + {
|
---|
| 2787 | + if (errno != EINTR)
|
---|
| 2788 | + break;
|
---|
| 2789 | + }
|
---|
| 2790 | + else
|
---|
| 2791 | + ret += wlen;
|
---|
| 2792 | + }
|
---|
| 2793 | + return ret;
|
---|
| 2794 | +}
|
---|
| 2795 | +#endif
|
---|
| 2796 | diff -Naur vim73.orig/src/getchar.c vim73/src/getchar.c
|
---|
| 2797 | --- vim73.orig/src/getchar.c 2010-08-08 09:00:33.000000000 -0400
|
---|
| 2798 | +++ vim73/src/getchar.c 2011-01-08 21:01:19.462656564 -0500
|
---|
| 2799 | @@ -1506,9 +1506,6 @@
|
---|
| 2800 | }
|
---|
| 2801 | }
|
---|
| 2802 |
|
---|
| 2803 | -#define KL_PART_KEY -1 /* keylen value for incomplete key-code */
|
---|
| 2804 | -#define KL_PART_MAP -2 /* keylen value for incomplete mapping */
|
---|
| 2805 | -
|
---|
| 2806 | /*
|
---|
| 2807 | * Get the next input character.
|
---|
| 2808 | * Can return a special key or a multi-byte character.
|
---|
| 2809 | @@ -2171,7 +2168,7 @@
|
---|
| 2810 | if (!timedout)
|
---|
| 2811 | {
|
---|
| 2812 | /* break at a partly match */
|
---|
| 2813 | - keylen = KL_PART_MAP;
|
---|
| 2814 | + keylen = KEYLEN_PART_MAP;
|
---|
| 2815 | break;
|
---|
| 2816 | }
|
---|
| 2817 | }
|
---|
| 2818 | @@ -2192,7 +2189,7 @@
|
---|
| 2819 |
|
---|
| 2820 | /* If no partly match found, use the longest full
|
---|
| 2821 | * match. */
|
---|
| 2822 | - if (keylen != KL_PART_MAP)
|
---|
| 2823 | + if (keylen != KEYLEN_PART_MAP)
|
---|
| 2824 | {
|
---|
| 2825 | mp = mp_match;
|
---|
| 2826 | keylen = mp_match_len;
|
---|
| 2827 | @@ -2230,7 +2227,7 @@
|
---|
| 2828 | }
|
---|
| 2829 | /* Need more chars for partly match. */
|
---|
| 2830 | if (mlen == typebuf.tb_len)
|
---|
| 2831 | - keylen = KL_PART_KEY;
|
---|
| 2832 | + keylen = KEYLEN_PART_KEY;
|
---|
| 2833 | else if (max_mlen < mlen)
|
---|
| 2834 | /* no match, may have to check for termcode at
|
---|
| 2835 | * next character */
|
---|
| 2836 | @@ -2238,7 +2235,7 @@
|
---|
| 2837 | }
|
---|
| 2838 |
|
---|
| 2839 | if ((mp == NULL || max_mlen >= mp_match_len)
|
---|
| 2840 | - && keylen != KL_PART_MAP)
|
---|
| 2841 | + && keylen != KEYLEN_PART_MAP)
|
---|
| 2842 | {
|
---|
| 2843 | int save_keylen = keylen;
|
---|
| 2844 |
|
---|
| 2845 | @@ -2264,8 +2261,8 @@
|
---|
| 2846 | /* If no termcode matched but 'pastetoggle'
|
---|
| 2847 | * matched partially it's like an incomplete key
|
---|
| 2848 | * sequence. */
|
---|
| 2849 | - if (keylen == 0 && save_keylen == KL_PART_KEY)
|
---|
| 2850 | - keylen = KL_PART_KEY;
|
---|
| 2851 | + if (keylen == 0 && save_keylen == KEYLEN_PART_KEY)
|
---|
| 2852 | + keylen = KEYLEN_PART_KEY;
|
---|
| 2853 |
|
---|
| 2854 | /*
|
---|
| 2855 | * When getting a partial match, but the last
|
---|
| 2856 | @@ -2302,7 +2299,7 @@
|
---|
| 2857 | continue;
|
---|
| 2858 | }
|
---|
| 2859 | if (*s == NUL) /* need more characters */
|
---|
| 2860 | - keylen = KL_PART_KEY;
|
---|
| 2861 | + keylen = KEYLEN_PART_KEY;
|
---|
| 2862 | }
|
---|
| 2863 | if (keylen >= 0)
|
---|
| 2864 | #endif
|
---|
| 2865 | @@ -2339,7 +2336,8 @@
|
---|
| 2866 | if (keylen > 0) /* full matching terminal code */
|
---|
| 2867 | {
|
---|
| 2868 | #if defined(FEAT_GUI) && defined(FEAT_MENU)
|
---|
| 2869 | - if (typebuf.tb_buf[typebuf.tb_off] == K_SPECIAL
|
---|
| 2870 | + if (typebuf.tb_len >= 2
|
---|
| 2871 | + && typebuf.tb_buf[typebuf.tb_off] == K_SPECIAL
|
---|
| 2872 | && typebuf.tb_buf[typebuf.tb_off + 1]
|
---|
| 2873 | == KS_MENU)
|
---|
| 2874 | {
|
---|
| 2875 | @@ -2381,7 +2379,7 @@
|
---|
| 2876 | /* Partial match: get some more characters. When a
|
---|
| 2877 | * matching mapping was found use that one. */
|
---|
| 2878 | if (mp == NULL || keylen < 0)
|
---|
| 2879 | - keylen = KL_PART_KEY;
|
---|
| 2880 | + keylen = KEYLEN_PART_KEY;
|
---|
| 2881 | else
|
---|
| 2882 | keylen = mp_match_len;
|
---|
| 2883 | }
|
---|
| 2884 | @@ -2553,7 +2551,8 @@
|
---|
| 2885 | #endif
|
---|
| 2886 | && typebuf.tb_maplen == 0
|
---|
| 2887 | && (State & INSERT)
|
---|
| 2888 | - && (p_timeout || (keylen == KL_PART_KEY && p_ttimeout))
|
---|
| 2889 | + && (p_timeout
|
---|
| 2890 | + || (keylen == KEYLEN_PART_KEY && p_ttimeout))
|
---|
| 2891 | && (c = inchar(typebuf.tb_buf + typebuf.tb_off
|
---|
| 2892 | + typebuf.tb_len, 3, 25L,
|
---|
| 2893 | typebuf.tb_change_cnt)) == 0)
|
---|
| 2894 | @@ -2783,9 +2782,9 @@
|
---|
| 2895 | ? 0
|
---|
| 2896 | : ((typebuf.tb_len == 0
|
---|
| 2897 | || !(p_timeout || (p_ttimeout
|
---|
| 2898 | - && keylen == KL_PART_KEY)))
|
---|
| 2899 | + && keylen == KEYLEN_PART_KEY)))
|
---|
| 2900 | ? -1L
|
---|
| 2901 | - : ((keylen == KL_PART_KEY && p_ttm >= 0)
|
---|
| 2902 | + : ((keylen == KEYLEN_PART_KEY && p_ttm >= 0)
|
---|
| 2903 | ? p_ttm
|
---|
| 2904 | : p_tm)), typebuf.tb_change_cnt);
|
---|
| 2905 |
|
---|
| 2906 | @@ -3168,6 +3167,7 @@
|
---|
| 2907 | int expr = FALSE;
|
---|
| 2908 | #endif
|
---|
| 2909 | int noremap;
|
---|
| 2910 | + char_u *orig_rhs;
|
---|
| 2911 |
|
---|
| 2912 | keys = arg;
|
---|
| 2913 | map_table = maphash;
|
---|
| 2914 | @@ -3266,6 +3266,7 @@
|
---|
| 2915 | }
|
---|
| 2916 | if (*p != NUL)
|
---|
| 2917 | *p++ = NUL;
|
---|
| 2918 | +
|
---|
| 2919 | p = skipwhite(p);
|
---|
| 2920 | rhs = p;
|
---|
| 2921 | hasarg = (*rhs != NUL);
|
---|
| 2922 | @@ -3288,6 +3289,7 @@
|
---|
| 2923 | */
|
---|
| 2924 | if (haskey)
|
---|
| 2925 | keys = replace_termcodes(keys, &keys_buf, TRUE, TRUE, special);
|
---|
| 2926 | + orig_rhs = rhs;
|
---|
| 2927 | if (hasarg)
|
---|
| 2928 | {
|
---|
| 2929 | if (STRICMP(rhs, "<nop>") == 0) /* "<Nop>" means nothing */
|
---|
| 2930 | @@ -3298,7 +3300,7 @@
|
---|
| 2931 |
|
---|
| 2932 | #ifdef FEAT_FKMAP
|
---|
| 2933 | /*
|
---|
| 2934 | - * when in right-to-left mode and alternate keymap option set,
|
---|
| 2935 | + * When in right-to-left mode and alternate keymap option set,
|
---|
| 2936 | * reverse the character flow in the rhs in Farsi.
|
---|
| 2937 | */
|
---|
| 2938 | if (p_altkeymap && curwin->w_p_rl)
|
---|
| 2939 | @@ -3556,6 +3558,8 @@
|
---|
| 2940 | }
|
---|
| 2941 | vim_free(mp->m_str);
|
---|
| 2942 | mp->m_str = newstr;
|
---|
| 2943 | + vim_free(mp->m_orig_str);
|
---|
| 2944 | + mp->m_orig_str = vim_strsave(orig_rhs);
|
---|
| 2945 | mp->m_noremap = noremap;
|
---|
| 2946 | mp->m_silent = silent;
|
---|
| 2947 | mp->m_mode = mode;
|
---|
| 2948 | @@ -3633,10 +3637,12 @@
|
---|
| 2949 |
|
---|
| 2950 | mp->m_keys = vim_strsave(keys);
|
---|
| 2951 | mp->m_str = vim_strsave(rhs);
|
---|
| 2952 | + mp->m_orig_str = vim_strsave(orig_rhs);
|
---|
| 2953 | if (mp->m_keys == NULL || mp->m_str == NULL)
|
---|
| 2954 | {
|
---|
| 2955 | vim_free(mp->m_keys);
|
---|
| 2956 | vim_free(mp->m_str);
|
---|
| 2957 | + vim_free(mp->m_orig_str);
|
---|
| 2958 | vim_free(mp);
|
---|
| 2959 | retval = 4; /* no mem */
|
---|
| 2960 | goto theend;
|
---|
| 2961 | @@ -3682,6 +3688,7 @@
|
---|
| 2962 | mp = *mpp;
|
---|
| 2963 | vim_free(mp->m_keys);
|
---|
| 2964 | vim_free(mp->m_str);
|
---|
| 2965 | + vim_free(mp->m_orig_str);
|
---|
| 2966 | *mpp = mp->m_next;
|
---|
| 2967 | vim_free(mp);
|
---|
| 2968 | }
|
---|
| 2969 | @@ -3851,12 +3858,57 @@
|
---|
| 2970 | }
|
---|
| 2971 | }
|
---|
| 2972 |
|
---|
| 2973 | +/*
|
---|
| 2974 | + * Return characters to represent the map mode in an allocated string.
|
---|
| 2975 | + * Returns NULL when out of memory.
|
---|
| 2976 | + */
|
---|
| 2977 | + char_u *
|
---|
| 2978 | +map_mode_to_chars(mode)
|
---|
| 2979 | + int mode;
|
---|
| 2980 | +{
|
---|
| 2981 | + garray_T mapmode;
|
---|
| 2982 | +
|
---|
| 2983 | + ga_init2(&mapmode, 1, 7);
|
---|
| 2984 | +
|
---|
| 2985 | + if ((mode & (INSERT + CMDLINE)) == INSERT + CMDLINE)
|
---|
| 2986 | + ga_append(&mapmode, '!'); /* :map! */
|
---|
| 2987 | + else if (mode & INSERT)
|
---|
| 2988 | + ga_append(&mapmode, 'i'); /* :imap */
|
---|
| 2989 | + else if (mode & LANGMAP)
|
---|
| 2990 | + ga_append(&mapmode, 'l'); /* :lmap */
|
---|
| 2991 | + else if (mode & CMDLINE)
|
---|
| 2992 | + ga_append(&mapmode, 'c'); /* :cmap */
|
---|
| 2993 | + else if ((mode & (NORMAL + VISUAL + SELECTMODE + OP_PENDING))
|
---|
| 2994 | + == NORMAL + VISUAL + SELECTMODE + OP_PENDING)
|
---|
| 2995 | + ga_append(&mapmode, ' '); /* :map */
|
---|
| 2996 | + else
|
---|
| 2997 | + {
|
---|
| 2998 | + if (mode & NORMAL)
|
---|
| 2999 | + ga_append(&mapmode, 'n'); /* :nmap */
|
---|
| 3000 | + if (mode & OP_PENDING)
|
---|
| 3001 | + ga_append(&mapmode, 'o'); /* :omap */
|
---|
| 3002 | + if ((mode & (VISUAL + SELECTMODE)) == VISUAL + SELECTMODE)
|
---|
| 3003 | + ga_append(&mapmode, 'v'); /* :vmap */
|
---|
| 3004 | + else
|
---|
| 3005 | + {
|
---|
| 3006 | + if (mode & VISUAL)
|
---|
| 3007 | + ga_append(&mapmode, 'x'); /* :xmap */
|
---|
| 3008 | + if (mode & SELECTMODE)
|
---|
| 3009 | + ga_append(&mapmode, 's'); /* :smap */
|
---|
| 3010 | + }
|
---|
| 3011 | + }
|
---|
| 3012 | +
|
---|
| 3013 | + ga_append(&mapmode, NUL);
|
---|
| 3014 | + return (char_u *)mapmode.ga_data;
|
---|
| 3015 | +}
|
---|
| 3016 | +
|
---|
| 3017 | static void
|
---|
| 3018 | showmap(mp, local)
|
---|
| 3019 | mapblock_T *mp;
|
---|
| 3020 | int local; /* TRUE for buffer-local map */
|
---|
| 3021 | {
|
---|
| 3022 | - int len = 1;
|
---|
| 3023 | + int len = 1;
|
---|
| 3024 | + char_u *mapchars;
|
---|
| 3025 |
|
---|
| 3026 | if (msg_didout || msg_silent != 0)
|
---|
| 3027 | {
|
---|
| 3028 | @@ -3864,49 +3916,15 @@
|
---|
| 3029 | if (got_int) /* 'q' typed at MORE prompt */
|
---|
| 3030 | return;
|
---|
| 3031 | }
|
---|
| 3032 | - if ((mp->m_mode & (INSERT + CMDLINE)) == INSERT + CMDLINE)
|
---|
| 3033 | - msg_putchar('!'); /* :map! */
|
---|
| 3034 | - else if (mp->m_mode & INSERT)
|
---|
| 3035 | - msg_putchar('i'); /* :imap */
|
---|
| 3036 | - else if (mp->m_mode & LANGMAP)
|
---|
| 3037 | - msg_putchar('l'); /* :lmap */
|
---|
| 3038 | - else if (mp->m_mode & CMDLINE)
|
---|
| 3039 | - msg_putchar('c'); /* :cmap */
|
---|
| 3040 | - else if ((mp->m_mode & (NORMAL + VISUAL + SELECTMODE + OP_PENDING))
|
---|
| 3041 | - == NORMAL + VISUAL + SELECTMODE + OP_PENDING)
|
---|
| 3042 | - msg_putchar(' '); /* :map */
|
---|
| 3043 | - else
|
---|
| 3044 | +
|
---|
| 3045 | + mapchars = map_mode_to_chars(mp->m_mode);
|
---|
| 3046 | + if (mapchars != NULL)
|
---|
| 3047 | {
|
---|
| 3048 | - len = 0;
|
---|
| 3049 | - if (mp->m_mode & NORMAL)
|
---|
| 3050 | - {
|
---|
| 3051 | - msg_putchar('n'); /* :nmap */
|
---|
| 3052 | - ++len;
|
---|
| 3053 | - }
|
---|
| 3054 | - if (mp->m_mode & OP_PENDING)
|
---|
| 3055 | - {
|
---|
| 3056 | - msg_putchar('o'); /* :omap */
|
---|
| 3057 | - ++len;
|
---|
| 3058 | - }
|
---|
| 3059 | - if ((mp->m_mode & (VISUAL + SELECTMODE)) == VISUAL + SELECTMODE)
|
---|
| 3060 | - {
|
---|
| 3061 | - msg_putchar('v'); /* :vmap */
|
---|
| 3062 | - ++len;
|
---|
| 3063 | - }
|
---|
| 3064 | - else
|
---|
| 3065 | - {
|
---|
| 3066 | - if (mp->m_mode & VISUAL)
|
---|
| 3067 | - {
|
---|
| 3068 | - msg_putchar('x'); /* :xmap */
|
---|
| 3069 | - ++len;
|
---|
| 3070 | - }
|
---|
| 3071 | - if (mp->m_mode & SELECTMODE)
|
---|
| 3072 | - {
|
---|
| 3073 | - msg_putchar('s'); /* :smap */
|
---|
| 3074 | - ++len;
|
---|
| 3075 | - }
|
---|
| 3076 | - }
|
---|
| 3077 | + msg_puts(mapchars);
|
---|
| 3078 | + len = (int)STRLEN(mapchars);
|
---|
| 3079 | + vim_free(mapchars);
|
---|
| 3080 | }
|
---|
| 3081 | +
|
---|
| 3082 | while (++len <= 3)
|
---|
| 3083 | msg_putchar(' ');
|
---|
| 3084 |
|
---|
| 3085 | @@ -3931,8 +3949,7 @@
|
---|
| 3086 | msg_putchar(' ');
|
---|
| 3087 |
|
---|
| 3088 | /* Use FALSE below if we only want things like <Up> to show up as such on
|
---|
| 3089 | - * the rhs, and not M-x etc, TRUE gets both -- webb
|
---|
| 3090 | - */
|
---|
| 3091 | + * the rhs, and not M-x etc, TRUE gets both -- webb */
|
---|
| 3092 | if (*mp->m_str == NUL)
|
---|
| 3093 | msg_puts_attr((char_u *)"<Nop>", hl_attr(HLF_8));
|
---|
| 3094 | else
|
---|
| 3095 | @@ -4995,19 +5012,21 @@
|
---|
| 3096 | sourcing_name = save_name;
|
---|
| 3097 | }
|
---|
| 3098 |
|
---|
| 3099 | -#ifdef FEAT_EVAL
|
---|
| 3100 | +#if defined(FEAT_EVAL) || defined(PROTO)
|
---|
| 3101 | /*
|
---|
| 3102 | - * Check the string "keys" against the lhs of all mappings
|
---|
| 3103 | - * Return pointer to rhs of mapping (mapblock->m_str)
|
---|
| 3104 | - * NULL otherwise
|
---|
| 3105 | + * Check the string "keys" against the lhs of all mappings.
|
---|
| 3106 | + * Return pointer to rhs of mapping (mapblock->m_str).
|
---|
| 3107 | + * NULL when no mapping found.
|
---|
| 3108 | */
|
---|
| 3109 | char_u *
|
---|
| 3110 | -check_map(keys, mode, exact, ign_mod, abbr)
|
---|
| 3111 | +check_map(keys, mode, exact, ign_mod, abbr, mp_ptr, local_ptr)
|
---|
| 3112 | char_u *keys;
|
---|
| 3113 | int mode;
|
---|
| 3114 | int exact; /* require exact match */
|
---|
| 3115 | int ign_mod; /* ignore preceding modifier */
|
---|
| 3116 | int abbr; /* do abbreviations */
|
---|
| 3117 | + mapblock_T **mp_ptr; /* return: pointer to mapblock or NULL */
|
---|
| 3118 | + int *local_ptr; /* return: buffer-local mapping or NULL */
|
---|
| 3119 | {
|
---|
| 3120 | int hash;
|
---|
| 3121 | int len, minlen;
|
---|
| 3122 | @@ -5062,7 +5081,17 @@
|
---|
| 3123 | minlen = mp->m_keylen - 3;
|
---|
| 3124 | }
|
---|
| 3125 | if (STRNCMP(s, keys, minlen) == 0)
|
---|
| 3126 | + {
|
---|
| 3127 | + if (mp_ptr != NULL)
|
---|
| 3128 | + *mp_ptr = mp;
|
---|
| 3129 | + if (local_ptr != NULL)
|
---|
| 3130 | +#ifdef FEAT_LOCALMAP
|
---|
| 3131 | + *local_ptr = local;
|
---|
| 3132 | +#else
|
---|
| 3133 | + *local_ptr = 0;
|
---|
| 3134 | +#endif
|
---|
| 3135 | return mp->m_str;
|
---|
| 3136 | + }
|
---|
| 3137 | }
|
---|
| 3138 | }
|
---|
| 3139 | }
|
---|
| 3140 | diff -Naur vim73.orig/src/globals.h vim73/src/globals.h
|
---|
| 3141 | --- vim73.orig/src/globals.h 2010-07-23 15:20:45.000000000 -0400
|
---|
| 3142 | +++ vim73/src/globals.h 2011-01-08 21:01:19.278656842 -0500
|
---|
| 3143 | @@ -510,8 +510,13 @@
|
---|
| 3144 | EXTERN VimClipboard clip_plus; /* CLIPBOARD selection in X11 */
|
---|
| 3145 | # else
|
---|
| 3146 | # define clip_plus clip_star /* there is only one clipboard */
|
---|
| 3147 | +# define ONE_CLIPBOARD
|
---|
| 3148 | # endif
|
---|
| 3149 | -EXTERN int clip_unnamed INIT(= FALSE);
|
---|
| 3150 | +
|
---|
| 3151 | +#define CLIP_UNNAMED 1
|
---|
| 3152 | +#define CLIP_UNNAMED_PLUS 2
|
---|
| 3153 | +EXTERN int clip_unnamed INIT(= 0); /* above two values or'ed */
|
---|
| 3154 | +
|
---|
| 3155 | EXTERN int clip_autoselect INIT(= FALSE);
|
---|
| 3156 | EXTERN int clip_autoselectml INIT(= FALSE);
|
---|
| 3157 | EXTERN int clip_html INIT(= FALSE);
|
---|
| 3158 | diff -Naur vim73.orig/src/gui.c vim73/src/gui.c
|
---|
| 3159 | --- vim73.orig/src/gui.c 2010-08-08 09:01:18.000000000 -0400
|
---|
| 3160 | +++ vim73/src/gui.c 2011-01-08 21:01:18.886656411 -0500
|
---|
| 3161 | @@ -105,8 +105,18 @@
|
---|
| 3162 |
|
---|
| 3163 | #if defined(FEAT_GUI_GTK) || defined(FEAT_GUI_X11)
|
---|
| 3164 | if (gui.in_use)
|
---|
| 3165 | + {
|
---|
| 3166 | +# ifdef FEAT_EVAL
|
---|
| 3167 | + Window x11_window;
|
---|
| 3168 | + Display *x11_display;
|
---|
| 3169 | +
|
---|
| 3170 | + if (gui_get_x11_windis(&x11_window, &x11_display) == OK)
|
---|
| 3171 | + set_vim_var_nr(VV_WINDOWID, (long)x11_window);
|
---|
| 3172 | +# endif
|
---|
| 3173 | +
|
---|
| 3174 | /* Display error messages in a dialog now. */
|
---|
| 3175 | display_errors();
|
---|
| 3176 | + }
|
---|
| 3177 | #endif
|
---|
| 3178 |
|
---|
| 3179 | #if defined(MAY_FORK) && !defined(__QNXNTO__)
|
---|
| 3180 | @@ -2352,7 +2362,7 @@
|
---|
| 3181 | if (draw_sign)
|
---|
| 3182 | /* Draw the sign on top of the spaces. */
|
---|
| 3183 | gui_mch_drawsign(gui.row, col, gui.highlight_mask);
|
---|
| 3184 | -# if defined(FEAT_NETBEANS_INTG) && (defined(FEAT_GUI_MOTIF) \
|
---|
| 3185 | +# if defined(FEAT_NETBEANS_INTG) && (defined(FEAT_GUI_X11) \
|
---|
| 3186 | || defined(FEAT_GUI_GTK) || defined(FEAT_GUI_W32))
|
---|
| 3187 | if (multi_sign)
|
---|
| 3188 | netbeans_draw_multisign_indicator(gui.row);
|
---|
| 3189 | diff -Naur vim73.orig/src/gui_gtk.c vim73/src/gui_gtk.c
|
---|
| 3190 | --- vim73.orig/src/gui_gtk.c 2010-07-20 07:15:22.000000000 -0400
|
---|
| 3191 | +++ vim73/src/gui_gtk.c 2011-01-08 21:01:19.298658878 -0500
|
---|
| 3192 | @@ -1287,6 +1287,9 @@
|
---|
| 3193 | entry = gtk_entry_new();
|
---|
| 3194 | gtk_widget_show(entry);
|
---|
| 3195 |
|
---|
| 3196 | + /* Make Enter work like pressing OK. */
|
---|
| 3197 | + gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE);
|
---|
| 3198 | +
|
---|
| 3199 | text = CONVERT_TO_UTF8(textfield);
|
---|
| 3200 | gtk_entry_set_text(GTK_ENTRY(entry), (const char *)text);
|
---|
| 3201 | CONVERT_TO_UTF8_FREE(text);
|
---|
| 3202 | @@ -1795,7 +1798,6 @@
|
---|
| 3203 | char_u *repl_text;
|
---|
| 3204 | gboolean direction_down;
|
---|
| 3205 | SharedFindReplace *sfr;
|
---|
| 3206 | - int rc;
|
---|
| 3207 |
|
---|
| 3208 | flags = (int)(long)data; /* avoid a lint warning here */
|
---|
| 3209 |
|
---|
| 3210 | @@ -1821,7 +1823,7 @@
|
---|
| 3211 |
|
---|
| 3212 | repl_text = CONVERT_FROM_UTF8(repl_text);
|
---|
| 3213 | find_text = CONVERT_FROM_UTF8(find_text);
|
---|
| 3214 | - rc = gui_do_findrepl(flags, find_text, repl_text, direction_down);
|
---|
| 3215 | + gui_do_findrepl(flags, find_text, repl_text, direction_down);
|
---|
| 3216 | CONVERT_FROM_UTF8_FREE(repl_text);
|
---|
| 3217 | CONVERT_FROM_UTF8_FREE(find_text);
|
---|
| 3218 | }
|
---|
| 3219 | diff -Naur vim73.orig/src/gui_mac.c vim73/src/gui_mac.c
|
---|
| 3220 | --- vim73.orig/src/gui_mac.c 2010-08-14 15:39:54.000000000 -0400
|
---|
| 3221 | +++ vim73/src/gui_mac.c 2011-01-08 21:01:18.766656221 -0500
|
---|
| 3222 | @@ -1480,7 +1480,7 @@
|
---|
| 3223 | *
|
---|
| 3224 | * Returns the index inside the menu wher
|
---|
| 3225 | */
|
---|
| 3226 | - short /* Shoulde we return MenuItemIndex? */
|
---|
| 3227 | + short /* Should we return MenuItemIndex? */
|
---|
| 3228 | gui_mac_get_menu_item_index(vimmenu_T *pMenu)
|
---|
| 3229 | {
|
---|
| 3230 | short index;
|
---|
| 3231 | @@ -1823,7 +1823,7 @@
|
---|
| 3232 | p.h += gui.scrollbar_width;
|
---|
| 3233 | if (gui.which_scrollbars[SBAR_RIGHT])
|
---|
| 3234 | p.h += gui.scrollbar_width;
|
---|
| 3235 | - /* ideal height is as heigh as we can get */
|
---|
| 3236 | + /* ideal height is as high as we can get */
|
---|
| 3237 | p.v = 15 * 1024;
|
---|
| 3238 |
|
---|
| 3239 | thePart = IsWindowInStandardState(whichWindow, &p, &r)
|
---|
| 3240 | @@ -4481,7 +4481,7 @@
|
---|
| 3241 | * event arrives. No need to check for input_buf_full because we are
|
---|
| 3242 | * returning as soon as it contains a single char.
|
---|
| 3243 | */
|
---|
| 3244 | - /* TODO: reduce wtime accordinly??? */
|
---|
| 3245 | + /* TODO: reduce wtime accordingly??? */
|
---|
| 3246 | if (wtime > -1)
|
---|
| 3247 | sleeppyTick = 60 * wtime / 1000;
|
---|
| 3248 | else
|
---|
| 3249 | @@ -5723,13 +5723,13 @@
|
---|
| 3250 | iconDITL = GetResource('DITL', 131);
|
---|
| 3251 | switch (type)
|
---|
| 3252 | {
|
---|
| 3253 | - case VIM_GENERIC: useIcon = kNoteIcon;
|
---|
| 3254 | - case VIM_ERROR: useIcon = kStopIcon;
|
---|
| 3255 | - case VIM_WARNING: useIcon = kCautionIcon;
|
---|
| 3256 | - case VIM_INFO: useIcon = kNoteIcon;
|
---|
| 3257 | - case VIM_QUESTION: useIcon = kNoteIcon;
|
---|
| 3258 | - default: useIcon = kStopIcon;
|
---|
| 3259 | - };
|
---|
| 3260 | + case VIM_GENERIC:
|
---|
| 3261 | + case VIM_INFO:
|
---|
| 3262 | + case VIM_QUESTION: useIcon = kNoteIcon; break;
|
---|
| 3263 | + case VIM_WARNING: useIcon = kCautionIcon; break;
|
---|
| 3264 | + case VIM_ERROR: useIcon = kStopIcon; break;
|
---|
| 3265 | + default: useIcon = kStopIcon;
|
---|
| 3266 | + }
|
---|
| 3267 | AppendDITL(theDialog, iconDITL, overlayDITL);
|
---|
| 3268 | ReleaseResource(iconDITL);
|
---|
| 3269 | GetDialogItem(theDialog, iconItm.idx, &itemType, &itemHandle, &box);
|
---|
| 3270 | @@ -5892,7 +5892,7 @@
|
---|
| 3271 |
|
---|
| 3272 | return itemHit;
|
---|
| 3273 | /*
|
---|
| 3274 | - * Usefull thing which could be used
|
---|
| 3275 | + * Useful thing which could be used
|
---|
| 3276 | * SetDialogTimeout(): Auto click a button after timeout
|
---|
| 3277 | * SetDialogTracksCursor() : Get the I-beam cursor over input box
|
---|
| 3278 | * MoveDialogItem(): Probably better than SetDialogItem
|
---|
| 3279 | @@ -6100,7 +6100,7 @@
|
---|
| 3280 | #endif
|
---|
| 3281 |
|
---|
| 3282 | /*
|
---|
| 3283 | - * Transfered from os_mac.c for MacOS X using os_unix.c prep work
|
---|
| 3284 | + * Transferred from os_mac.c for MacOS X using os_unix.c prep work
|
---|
| 3285 | */
|
---|
| 3286 |
|
---|
| 3287 | int
|
---|
| 3288 | @@ -6543,7 +6543,7 @@
|
---|
| 3289 | static ControlRef dataBrowser = NULL;
|
---|
| 3290 |
|
---|
| 3291 | // when the tabline is hidden, vim doesn't call update_tabline(). When
|
---|
| 3292 | -// the tabline is shown again, show_tabline() is called before upate_tabline(),
|
---|
| 3293 | +// the tabline is shown again, show_tabline() is called before update_tabline(),
|
---|
| 3294 | // and because of this, the tab labels and vims internal tabs are out of sync
|
---|
| 3295 | // for a very short time. to prevent inconsistent state, we store the labels
|
---|
| 3296 | // of the tabs, not pointers to the tabs (which are invalid for a short time).
|
---|
| 3297 | diff -Naur vim73.orig/src/gui_w32.c vim73/src/gui_w32.c
|
---|
| 3298 | --- vim73.orig/src/gui_w32.c 2010-08-08 09:05:26.000000000 -0400
|
---|
| 3299 | +++ vim73/src/gui_w32.c 2011-01-08 21:01:18.990656516 -0500
|
---|
| 3300 | @@ -289,13 +289,13 @@
|
---|
| 3301 |
|
---|
| 3302 | #ifdef FEAT_MENU
|
---|
| 3303 | static UINT s_menu_id = 100;
|
---|
| 3304 | +#endif
|
---|
| 3305 |
|
---|
| 3306 | /*
|
---|
| 3307 | * Use the system font for dialogs and tear-off menus. Remove this line to
|
---|
| 3308 | * use DLG_FONT_NAME.
|
---|
| 3309 | */
|
---|
| 3310 | -# define USE_SYSMENU_FONT
|
---|
| 3311 | -#endif
|
---|
| 3312 | +#define USE_SYSMENU_FONT
|
---|
| 3313 |
|
---|
| 3314 | #define VIM_NAME "vim"
|
---|
| 3315 | #define VIM_CLASS "Vim"
|
---|
| 3316 | @@ -1260,7 +1260,7 @@
|
---|
| 3317 |
|
---|
| 3318 | /* try and load the user32.dll library and get the entry points for
|
---|
| 3319 | * multi-monitor-support. */
|
---|
| 3320 | - if ((user32_lib = LoadLibrary("User32.dll")) != NULL)
|
---|
| 3321 | + if ((user32_lib = vimLoadLib("User32.dll")) != NULL)
|
---|
| 3322 | {
|
---|
| 3323 | pMonitorFromWindow = (TMonitorFromWindow)GetProcAddress(user32_lib,
|
---|
| 3324 | "MonitorFromWindow");
|
---|
| 3325 | @@ -1573,6 +1573,11 @@
|
---|
| 3326 | # endif
|
---|
| 3327 | #endif
|
---|
| 3328 |
|
---|
| 3329 | +#ifdef FEAT_EVAL
|
---|
| 3330 | + /* set the v:windowid variable */
|
---|
| 3331 | + set_vim_var_nr(VV_WINDOWID, (long)s_hwnd);
|
---|
| 3332 | +#endif
|
---|
| 3333 | +
|
---|
| 3334 | theend:
|
---|
| 3335 | /* Display any pending error messages */
|
---|
| 3336 | display_errors();
|
---|
| 3337 | @@ -4188,7 +4193,7 @@
|
---|
| 3338 | static void
|
---|
| 3339 | dyn_imm_load(void)
|
---|
| 3340 | {
|
---|
| 3341 | - hLibImm = LoadLibrary("imm32.dll");
|
---|
| 3342 | + hLibImm = vimLoadLib("imm32.dll");
|
---|
| 3343 | if (hLibImm == NULL)
|
---|
| 3344 | return;
|
---|
| 3345 |
|
---|
| 3346 | diff -Naur vim73.orig/src/gui_w48.c vim73/src/gui_w48.c
|
---|
| 3347 | --- vim73.orig/src/gui_w48.c 2010-07-27 15:46:04.000000000 -0400
|
---|
| 3348 | +++ vim73/src/gui_w48.c 2011-01-08 21:01:18.918658776 -0500
|
---|
| 3349 | @@ -1810,7 +1810,8 @@
|
---|
| 3350 | * mapped we want to use the mapping instead. */
|
---|
| 3351 | if (vk == VK_F10
|
---|
| 3352 | && gui.menu_is_active
|
---|
| 3353 | - && check_map(k10, State, FALSE, TRUE, FALSE) == NULL)
|
---|
| 3354 | + && check_map(k10, State, FALSE, TRUE, FALSE,
|
---|
| 3355 | + NULL, NULL) == NULL)
|
---|
| 3356 | break;
|
---|
| 3357 | #endif
|
---|
| 3358 | if (GetKeyState(VK_SHIFT) & 0x8000)
|
---|
| 3359 | @@ -1924,7 +1925,8 @@
|
---|
| 3360 | /* Check for <F10>: Default effect is to select the menu. When <F10> is
|
---|
| 3361 | * mapped we need to stop it here to avoid strange effects (e.g., for the
|
---|
| 3362 | * key-up event) */
|
---|
| 3363 | - if (vk != VK_F10 || check_map(k10, State, FALSE, TRUE, FALSE) == NULL)
|
---|
| 3364 | + if (vk != VK_F10 || check_map(k10, State, FALSE, TRUE, FALSE,
|
---|
| 3365 | + NULL, NULL) == NULL)
|
---|
| 3366 | #endif
|
---|
| 3367 | DispatchMessage(&msg);
|
---|
| 3368 | }
|
---|
| 3369 | diff -Naur vim73.orig/src/gui_x11.c vim73/src/gui_x11.c
|
---|
| 3370 | --- vim73.orig/src/gui_x11.c 2010-08-08 09:05:45.000000000 -0400
|
---|
| 3371 | +++ vim73/src/gui_x11.c 2011-01-08 21:01:19.178657868 -0500
|
---|
| 3372 | @@ -2895,6 +2895,11 @@
|
---|
| 3373 | focus = gui.in_focus;
|
---|
| 3374 | }
|
---|
| 3375 |
|
---|
| 3376 | +#if defined(FEAT_NETBEANS_INTG)
|
---|
| 3377 | + /* Process any queued netbeans messages. */
|
---|
| 3378 | + netbeans_parse_messages();
|
---|
| 3379 | +#endif
|
---|
| 3380 | +
|
---|
| 3381 | /*
|
---|
| 3382 | * Don't use gui_mch_update() because then we will spin-lock until a
|
---|
| 3383 | * char arrives, instead we use XtAppProcessEvent() to hang until an
|
---|
| 3384 | diff -Naur vim73.orig/src/if_cscope.c vim73/src/if_cscope.c
|
---|
| 3385 | --- vim73.orig/src/if_cscope.c 2010-07-25 10:32:31.000000000 -0400
|
---|
| 3386 | +++ vim73/src/if_cscope.c 2011-01-08 21:01:19.458660505 -0500
|
---|
| 3387 | @@ -13,16 +13,11 @@
|
---|
| 3388 |
|
---|
| 3389 | #if defined(FEAT_CSCOPE) || defined(PROTO)
|
---|
| 3390 |
|
---|
| 3391 | -#include <string.h>
|
---|
| 3392 | -#include <errno.h>
|
---|
| 3393 | #include <assert.h>
|
---|
| 3394 | #include <sys/types.h>
|
---|
| 3395 | #include <sys/stat.h>
|
---|
| 3396 | #if defined(UNIX)
|
---|
| 3397 | # include <sys/wait.h>
|
---|
| 3398 | -#else
|
---|
| 3399 | - /* not UNIX, must be WIN32 */
|
---|
| 3400 | -# include "vimio.h"
|
---|
| 3401 | #endif
|
---|
| 3402 | #include "if_cscope.h"
|
---|
| 3403 |
|
---|
| 3404 | @@ -1274,9 +1269,7 @@
|
---|
| 3405 | {
|
---|
| 3406 | win_split(postponed_split > 0 ? postponed_split : 0,
|
---|
| 3407 | postponed_split_flags);
|
---|
| 3408 | -# ifdef FEAT_SCROLLBIND
|
---|
| 3409 | - curwin->w_p_scb = FALSE;
|
---|
| 3410 | -# endif
|
---|
| 3411 | + RESET_BINDING(curwin);
|
---|
| 3412 | postponed_split = 0;
|
---|
| 3413 | }
|
---|
| 3414 | # endif
|
---|
| 3415 | @@ -1353,7 +1346,7 @@
|
---|
| 3416 | " g: Find this definition\n"
|
---|
| 3417 | " i: Find files #including this file\n"
|
---|
| 3418 | " s: Find this C symbol\n"
|
---|
| 3419 | - " t: Find assignments to\n"));
|
---|
| 3420 | + " t: Find this text string\n"));
|
---|
| 3421 |
|
---|
| 3422 | cmdp++;
|
---|
| 3423 | }
|
---|
| 3424 | @@ -1664,7 +1657,7 @@
|
---|
| 3425 | /*
|
---|
| 3426 | * PRIVATE: cs_make_vim_style_matches
|
---|
| 3427 | *
|
---|
| 3428 | - * convert the cscope output into into a ctags style entry (as might be found
|
---|
| 3429 | + * convert the cscope output into a ctags style entry (as might be found
|
---|
| 3430 | * in a ctags tags file). there's one catch though: cscope doesn't tell you
|
---|
| 3431 | * the type of the tag you are looking for. for example, in Darren Hiebert's
|
---|
| 3432 | * ctags (the one that comes with vim), #define's use a line number to find the
|
---|
| 3433 | diff -Naur vim73.orig/src/if_lua.c vim73/src/if_lua.c
|
---|
| 3434 | --- vim73.orig/src/if_lua.c 2010-08-12 16:12:04.000000000 -0400
|
---|
| 3435 | +++ vim73/src/if_lua.c 2011-01-08 21:01:18.922656581 -0500
|
---|
| 3436 | @@ -49,7 +49,7 @@
|
---|
| 3437 | # define symbol_from_dll dlsym
|
---|
| 3438 | # define close_dll dlclose
|
---|
| 3439 | #else
|
---|
| 3440 | -# define load_dll LoadLibrary
|
---|
| 3441 | +# define load_dll vimLoadLib
|
---|
| 3442 | # define symbol_from_dll GetProcAddress
|
---|
| 3443 | # define close_dll FreeLibrary
|
---|
| 3444 | #endif
|
---|
| 3445 | diff -Naur vim73.orig/src/if_mzsch.c vim73/src/if_mzsch.c
|
---|
| 3446 | --- vim73.orig/src/if_mzsch.c 2010-06-25 23:56:17.000000000 -0400
|
---|
| 3447 | +++ vim73/src/if_mzsch.c 2011-01-08 21:01:19.114655467 -0500
|
---|
| 3448 | @@ -556,8 +556,8 @@
|
---|
| 3449 |
|
---|
| 3450 | if (hMzGC && hMzSch)
|
---|
| 3451 | return OK;
|
---|
| 3452 | - hMzSch = LoadLibrary(sch_dll);
|
---|
| 3453 | - hMzGC = LoadLibrary(gc_dll);
|
---|
| 3454 | + hMzSch = vimLoadLib(sch_dll);
|
---|
| 3455 | + hMzGC = vimLoadLib(gc_dll);
|
---|
| 3456 |
|
---|
| 3457 | if (!hMzSch)
|
---|
| 3458 | {
|
---|
| 3459 | @@ -794,9 +794,16 @@
|
---|
| 3460 | #endif
|
---|
| 3461 | }
|
---|
| 3462 |
|
---|
| 3463 | +#if MZSCHEME_VERSION_MAJOR >= 500 && defined(WIN32) && defined(USE_THREAD_LOCAL)
|
---|
| 3464 | +static __declspec(thread) void *tls_space;
|
---|
| 3465 | +#endif
|
---|
| 3466 | +
|
---|
| 3467 | void
|
---|
| 3468 | mzscheme_main(void)
|
---|
| 3469 | {
|
---|
| 3470 | +#if MZSCHEME_VERSION_MAJOR >= 500 && defined(WIN32) && defined(USE_THREAD_LOCAL)
|
---|
| 3471 | + scheme_register_tls_space(&tls_space, 0);
|
---|
| 3472 | +#endif
|
---|
| 3473 | #if defined(MZ_PRECISE_GC) && MZSCHEME_VERSION_MAJOR >= 400
|
---|
| 3474 | /* use trampoline for precise GC in MzScheme >= 4.x */
|
---|
| 3475 | scheme_main_setup(TRUE, mzscheme_env_main, 0, NULL);
|
---|
| 3476 | diff -Naur vim73.orig/src/if_perl.xs vim73/src/if_perl.xs
|
---|
| 3477 | --- vim73.orig/src/if_perl.xs 2010-07-22 05:33:37.000000000 -0400
|
---|
| 3478 | +++ vim73/src/if_perl.xs 2011-01-08 21:01:18.926655661 -0500
|
---|
| 3479 | @@ -106,7 +106,7 @@
|
---|
| 3480 | #define close_dll dlclose
|
---|
| 3481 | #else
|
---|
| 3482 | #define PERL_PROC FARPROC
|
---|
| 3483 | -#define load_dll LoadLibrary
|
---|
| 3484 | +#define load_dll vimLoadLib
|
---|
| 3485 | #define symbol_from_dll GetProcAddress
|
---|
| 3486 | #define close_dll FreeLibrary
|
---|
| 3487 | #endif
|
---|
| 3488 | diff -Naur vim73.orig/src/if_py_both.h vim73/src/if_py_both.h
|
---|
| 3489 | --- vim73.orig/src/if_py_both.h 2010-08-08 07:06:29.000000000 -0400
|
---|
| 3490 | +++ vim73/src/if_py_both.h 2011-01-08 21:01:18.982656784 -0500
|
---|
| 3491 | @@ -34,6 +34,7 @@
|
---|
| 3492 | static PyObject *OutputWrite(PyObject *, PyObject *);
|
---|
| 3493 | static PyObject *OutputWritelines(PyObject *, PyObject *);
|
---|
| 3494 |
|
---|
| 3495 | +/* Function to write a line, points to either msg() or emsg(). */
|
---|
| 3496 | typedef void (*writefn)(char_u *);
|
---|
| 3497 | static void writer(writefn fn, char_u *str, PyInt n);
|
---|
| 3498 |
|
---|
| 3499 | @@ -122,52 +123,19 @@
|
---|
| 3500 | return Py_None;
|
---|
| 3501 | }
|
---|
| 3502 |
|
---|
| 3503 | -static char_u *buffer = NULL;
|
---|
| 3504 | -static PyInt buffer_len = 0;
|
---|
| 3505 | -static PyInt buffer_size = 0;
|
---|
| 3506 | -
|
---|
| 3507 | +/* Buffer IO, we write one whole line at a time. */
|
---|
| 3508 | +static garray_T io_ga = {0, 0, 1, 80, NULL};
|
---|
| 3509 | static writefn old_fn = NULL;
|
---|
| 3510 |
|
---|
| 3511 | static void
|
---|
| 3512 | -buffer_ensure(PyInt n)
|
---|
| 3513 | -{
|
---|
| 3514 | - PyInt new_size;
|
---|
| 3515 | - char_u *new_buffer;
|
---|
| 3516 | -
|
---|
| 3517 | - if (n < buffer_size)
|
---|
| 3518 | - return;
|
---|
| 3519 | -
|
---|
| 3520 | - new_size = buffer_size;
|
---|
| 3521 | - while (new_size < n)
|
---|
| 3522 | - new_size += 80;
|
---|
| 3523 | -
|
---|
| 3524 | - if (new_size != buffer_size)
|
---|
| 3525 | - {
|
---|
| 3526 | - new_buffer = alloc((unsigned)new_size);
|
---|
| 3527 | - if (new_buffer == NULL)
|
---|
| 3528 | - return;
|
---|
| 3529 | -
|
---|
| 3530 | - if (buffer)
|
---|
| 3531 | - {
|
---|
| 3532 | - memcpy(new_buffer, buffer, buffer_len);
|
---|
| 3533 | - vim_free(buffer);
|
---|
| 3534 | - }
|
---|
| 3535 | -
|
---|
| 3536 | - buffer = new_buffer;
|
---|
| 3537 | - buffer_size = new_size;
|
---|
| 3538 | - }
|
---|
| 3539 | -}
|
---|
| 3540 | -
|
---|
| 3541 | - static void
|
---|
| 3542 | PythonIO_Flush(void)
|
---|
| 3543 | {
|
---|
| 3544 | - if (old_fn && buffer_len)
|
---|
| 3545 | + if (old_fn != NULL && io_ga.ga_len > 0)
|
---|
| 3546 | {
|
---|
| 3547 | - buffer[buffer_len] = 0;
|
---|
| 3548 | - old_fn(buffer);
|
---|
| 3549 | + ((char_u *)io_ga.ga_data)[io_ga.ga_len] = NUL;
|
---|
| 3550 | + old_fn((char_u *)io_ga.ga_data);
|
---|
| 3551 | }
|
---|
| 3552 | -
|
---|
| 3553 | - buffer_len = 0;
|
---|
| 3554 | + io_ga.ga_len = 0;
|
---|
| 3555 | }
|
---|
| 3556 |
|
---|
| 3557 | static void
|
---|
| 3558 | @@ -175,30 +143,34 @@
|
---|
| 3559 | {
|
---|
| 3560 | char_u *ptr;
|
---|
| 3561 |
|
---|
| 3562 | - if (fn != old_fn && old_fn != NULL)
|
---|
| 3563 | + /* Flush when switching output function. */
|
---|
| 3564 | + if (fn != old_fn)
|
---|
| 3565 | PythonIO_Flush();
|
---|
| 3566 | -
|
---|
| 3567 | old_fn = fn;
|
---|
| 3568 |
|
---|
| 3569 | + /* Write each NL separated line. Text after the last NL is kept for
|
---|
| 3570 | + * writing later. */
|
---|
| 3571 | while (n > 0 && (ptr = memchr(str, '\n', n)) != NULL)
|
---|
| 3572 | {
|
---|
| 3573 | PyInt len = ptr - str;
|
---|
| 3574 |
|
---|
| 3575 | - buffer_ensure(buffer_len + len + 1);
|
---|
| 3576 | + if (ga_grow(&io_ga, (int)(len + 1)) == FAIL)
|
---|
| 3577 | + break;
|
---|
| 3578 |
|
---|
| 3579 | - memcpy(buffer + buffer_len, str, len);
|
---|
| 3580 | - buffer_len += len;
|
---|
| 3581 | - buffer[buffer_len] = 0;
|
---|
| 3582 | - fn(buffer);
|
---|
| 3583 | + mch_memmove(((char *)io_ga.ga_data) + io_ga.ga_len, str, (size_t)len);
|
---|
| 3584 | + ((char *)io_ga.ga_data)[io_ga.ga_len + len] = NUL;
|
---|
| 3585 | + fn((char_u *)io_ga.ga_data);
|
---|
| 3586 | str = ptr + 1;
|
---|
| 3587 | n -= len + 1;
|
---|
| 3588 | - buffer_len = 0;
|
---|
| 3589 | + io_ga.ga_len = 0;
|
---|
| 3590 | }
|
---|
| 3591 |
|
---|
| 3592 | - /* Put the remaining text into the buffer for later printing */
|
---|
| 3593 | - buffer_ensure(buffer_len + n + 1);
|
---|
| 3594 | - memcpy(buffer + buffer_len, str, n);
|
---|
| 3595 | - buffer_len += n;
|
---|
| 3596 | + /* Put the remaining text into io_ga for later printing. */
|
---|
| 3597 | + if (n > 0 && ga_grow(&io_ga, (int)(n + 1)) == OK)
|
---|
| 3598 | + {
|
---|
| 3599 | + mch_memmove(((char *)io_ga.ga_data) + io_ga.ga_len, str, (size_t)n);
|
---|
| 3600 | + io_ga.ga_len += (int)n;
|
---|
| 3601 | + }
|
---|
| 3602 | }
|
---|
| 3603 |
|
---|
| 3604 | /***************/
|
---|
| 3605 | diff -Naur vim73.orig/src/if_python.c vim73/src/if_python.c
|
---|
| 3606 | --- vim73.orig/src/if_python.c 2010-08-13 09:59:41.000000000 -0400
|
---|
| 3607 | +++ vim73/src/if_python.c 2011-01-08 21:01:19.190656939 -0500
|
---|
| 3608 | @@ -102,7 +102,7 @@
|
---|
| 3609 | # include <dlfcn.h>
|
---|
| 3610 | # define FARPROC void*
|
---|
| 3611 | # define HINSTANCE void*
|
---|
| 3612 | -# ifdef PY_NO_RTLD_GLOBAL
|
---|
| 3613 | +# if defined(PY_NO_RTLD_GLOBAL) && defined(PY3_NO_RTLD_GLOBAL)
|
---|
| 3614 | # define load_dll(n) dlopen((n), RTLD_LAZY)
|
---|
| 3615 | # else
|
---|
| 3616 | # define load_dll(n) dlopen((n), RTLD_LAZY|RTLD_GLOBAL)
|
---|
| 3617 | @@ -110,7 +110,7 @@
|
---|
| 3618 | # define close_dll dlclose
|
---|
| 3619 | # define symbol_from_dll dlsym
|
---|
| 3620 | # else
|
---|
| 3621 | -# define load_dll LoadLibrary
|
---|
| 3622 | +# define load_dll vimLoadLib
|
---|
| 3623 | # define close_dll FreeLibrary
|
---|
| 3624 | # define symbol_from_dll GetProcAddress
|
---|
| 3625 | # endif
|
---|
| 3626 | @@ -168,6 +168,7 @@
|
---|
| 3627 | # define Py_BuildValue dll_Py_BuildValue
|
---|
| 3628 | # define Py_FindMethod dll_Py_FindMethod
|
---|
| 3629 | # define Py_InitModule4 dll_Py_InitModule4
|
---|
| 3630 | +# define Py_SetPythonHome dll_Py_SetPythonHome
|
---|
| 3631 | # define Py_Initialize dll_Py_Initialize
|
---|
| 3632 | # define Py_Finalize dll_Py_Finalize
|
---|
| 3633 | # define Py_IsInitialized dll_Py_IsInitialized
|
---|
| 3634 | @@ -226,6 +227,7 @@
|
---|
| 3635 | static PyObject*(*dll_Py_BuildValue)(char *, ...);
|
---|
| 3636 | static PyObject*(*dll_Py_FindMethod)(struct PyMethodDef[], PyObject *, char *);
|
---|
| 3637 | static PyObject*(*dll_Py_InitModule4)(char *, struct PyMethodDef *, char *, PyObject *, int);
|
---|
| 3638 | +static void(*dll_Py_SetPythonHome)(char *home);
|
---|
| 3639 | static void(*dll_Py_Initialize)(void);
|
---|
| 3640 | static void(*dll_Py_Finalize)(void);
|
---|
| 3641 | static int(*dll_Py_IsInitialized)(void);
|
---|
| 3642 | @@ -310,6 +312,7 @@
|
---|
| 3643 | # else
|
---|
| 3644 | {"Py_InitModule4", (PYTHON_PROC*)&dll_Py_InitModule4},
|
---|
| 3645 | # endif
|
---|
| 3646 | + {"Py_SetPythonHome", (PYTHON_PROC*)&dll_Py_SetPythonHome},
|
---|
| 3647 | {"Py_Initialize", (PYTHON_PROC*)&dll_Py_Initialize},
|
---|
| 3648 | {"Py_Finalize", (PYTHON_PROC*)&dll_Py_Finalize},
|
---|
| 3649 | {"Py_IsInitialized", (PYTHON_PROC*)&dll_Py_IsInitialized},
|
---|
| 3650 | @@ -349,7 +352,7 @@
|
---|
| 3651 | {
|
---|
| 3652 | int i;
|
---|
| 3653 |
|
---|
| 3654 | -#if !defined(PY_NO_RTLD_GLOBAL) && defined(UNIX) && defined(FEAT_PYTHON3)
|
---|
| 3655 | +#if !(defined(PY_NO_RTLD_GLOBAL) && defined(PY3_NO_RTLD_GLOBAL)) && defined(UNIX) && defined(FEAT_PYTHON3)
|
---|
| 3656 | /* Can't have Python and Python3 loaded at the same time.
|
---|
| 3657 | * It cause a crash, because RTLD_GLOBAL is needed for
|
---|
| 3658 | * standard C extension libraries of one or both python versions. */
|
---|
| 3659 | @@ -543,6 +546,10 @@
|
---|
| 3660 | }
|
---|
| 3661 | #endif
|
---|
| 3662 |
|
---|
| 3663 | +#ifdef PYTHON_HOME
|
---|
| 3664 | + Py_SetPythonHome(PYTHON_HOME);
|
---|
| 3665 | +#endif
|
---|
| 3666 | +
|
---|
| 3667 | init_structs();
|
---|
| 3668 |
|
---|
| 3669 | #if !defined(MACOS) || defined(MACOS_X_UNIX)
|
---|
| 3670 | diff -Naur vim73.orig/src/if_python3.c vim73/src/if_python3.c
|
---|
| 3671 | --- vim73.orig/src/if_python3.c 2010-08-13 09:59:40.000000000 -0400
|
---|
| 3672 | +++ vim73/src/if_python3.c 2011-01-08 21:01:19.190656939 -0500
|
---|
| 3673 | @@ -80,7 +80,7 @@
|
---|
| 3674 | # include <dlfcn.h>
|
---|
| 3675 | # define FARPROC void*
|
---|
| 3676 | # define HINSTANCE void*
|
---|
| 3677 | -# ifdef PY_NO_RTLD_GLOBAL
|
---|
| 3678 | +# if defined(PY_NO_RTLD_GLOBAL) && defined(PY3_NO_RTLD_GLOBAL)
|
---|
| 3679 | # define load_dll(n) dlopen((n), RTLD_LAZY)
|
---|
| 3680 | # else
|
---|
| 3681 | # define load_dll(n) dlopen((n), RTLD_LAZY|RTLD_GLOBAL)
|
---|
| 3682 | @@ -88,7 +88,7 @@
|
---|
| 3683 | # define close_dll dlclose
|
---|
| 3684 | # define symbol_from_dll dlsym
|
---|
| 3685 | # else
|
---|
| 3686 | -# define load_dll LoadLibrary
|
---|
| 3687 | +# define load_dll vimLoadLib
|
---|
| 3688 | # define close_dll FreeLibrary
|
---|
| 3689 | # define symbol_from_dll GetProcAddress
|
---|
| 3690 | # endif
|
---|
| 3691 | @@ -132,6 +132,7 @@
|
---|
| 3692 | # define PyType_Ready py3_PyType_Ready
|
---|
| 3693 | #undef Py_BuildValue
|
---|
| 3694 | # define Py_BuildValue py3_Py_BuildValue
|
---|
| 3695 | +# define Py_SetPythonHome py3_Py_SetPythonHome
|
---|
| 3696 | # define Py_Initialize py3_Py_Initialize
|
---|
| 3697 | # define Py_Finalize py3_Py_Finalize
|
---|
| 3698 | # define Py_IsInitialized py3_Py_IsInitialized
|
---|
| 3699 | @@ -170,6 +171,7 @@
|
---|
| 3700 | * Pointers for dynamic link
|
---|
| 3701 | */
|
---|
| 3702 | static int (*py3_PySys_SetArgv)(int, wchar_t **);
|
---|
| 3703 | +static void (*py3_Py_SetPythonHome)(wchar_t *home);
|
---|
| 3704 | static void (*py3_Py_Initialize)(void);
|
---|
| 3705 | static PyObject* (*py3_PyList_New)(Py_ssize_t size);
|
---|
| 3706 | static PyGILState_STATE (*py3_PyGILState_Ensure)(void);
|
---|
| 3707 | @@ -254,6 +256,7 @@
|
---|
| 3708 | } py3_funcname_table[] =
|
---|
| 3709 | {
|
---|
| 3710 | {"PySys_SetArgv", (PYTHON_PROC*)&py3_PySys_SetArgv},
|
---|
| 3711 | + {"Py_SetPythonHome", (PYTHON_PROC*)&py3_Py_SetPythonHome},
|
---|
| 3712 | {"Py_Initialize", (PYTHON_PROC*)&py3_Py_Initialize},
|
---|
| 3713 | {"PyArg_ParseTuple", (PYTHON_PROC*)&py3_PyArg_ParseTuple},
|
---|
| 3714 | {"PyList_New", (PYTHON_PROC*)&py3_PyList_New},
|
---|
| 3715 | @@ -336,7 +339,7 @@
|
---|
| 3716 | int i;
|
---|
| 3717 | void *ucs_from_string, *ucs_from_string_and_size;
|
---|
| 3718 |
|
---|
| 3719 | -# if !defined(PY_NO_RTLD_GLOBAL) && defined(UNIX) && defined(FEAT_PYTHON)
|
---|
| 3720 | +# if !(defined(PY_NO_RTLD_GLOBAL) && defined(PY3_NO_RTLD_GLOBAL)) && defined(UNIX) && defined(FEAT_PYTHON)
|
---|
| 3721 | /* Can't have Python and Python3 loaded at the same time.
|
---|
| 3722 | * It cause a crash, because RTLD_GLOBAL is needed for
|
---|
| 3723 | * standard C extension libraries of one or both python versions. */
|
---|
| 3724 | @@ -539,6 +542,11 @@
|
---|
| 3725 |
|
---|
| 3726 | init_structs();
|
---|
| 3727 |
|
---|
| 3728 | +
|
---|
| 3729 | +#ifdef PYTHON3_HOME
|
---|
| 3730 | + Py_SetPythonHome(PYTHON3_HOME);
|
---|
| 3731 | +#endif
|
---|
| 3732 | +
|
---|
| 3733 | /* initialise threads */
|
---|
| 3734 | PyEval_InitThreads();
|
---|
| 3735 |
|
---|
| 3736 | diff -Naur vim73.orig/src/if_ruby.c vim73/src/if_ruby.c
|
---|
| 3737 | --- vim73.orig/src/if_ruby.c 2010-06-30 15:33:12.000000000 -0400
|
---|
| 3738 | +++ vim73/src/if_ruby.c 2011-01-08 21:01:19.442657935 -0500
|
---|
| 3739 | @@ -4,6 +4,7 @@
|
---|
| 3740 | *
|
---|
| 3741 | * Ruby interface by Shugo Maeda
|
---|
| 3742 | * with improvements by SegPhault (Ryan Paul)
|
---|
| 3743 | + * with improvements by Jon Maken
|
---|
| 3744 | *
|
---|
| 3745 | * Do ":help uganda" in Vim to read copying and usage conditions.
|
---|
| 3746 | * Do ":help credits" in Vim to see a list of people who contributed.
|
---|
| 3747 | @@ -13,6 +14,10 @@
|
---|
| 3748 | #include <stdio.h>
|
---|
| 3749 | #include <string.h>
|
---|
| 3750 |
|
---|
| 3751 | +#ifdef HAVE_CONFIG_H
|
---|
| 3752 | +# include "auto/config.h"
|
---|
| 3753 | +#endif
|
---|
| 3754 | +
|
---|
| 3755 | #ifdef _WIN32
|
---|
| 3756 | # if !defined(DYNAMIC_RUBY_VER) || (DYNAMIC_RUBY_VER < 18)
|
---|
| 3757 | # define NT
|
---|
| 3758 | @@ -26,12 +31,12 @@
|
---|
| 3759 | # define RUBYEXTERN extern
|
---|
| 3760 | #endif
|
---|
| 3761 |
|
---|
| 3762 | +#ifdef DYNAMIC_RUBY
|
---|
| 3763 | /*
|
---|
| 3764 | * This is tricky. In ruby.h there is (inline) function rb_class_of()
|
---|
| 3765 | * definition. This function use these variables. But we want function to
|
---|
| 3766 | * use dll_* variables.
|
---|
| 3767 | */
|
---|
| 3768 | -#ifdef DYNAMIC_RUBY
|
---|
| 3769 | # define rb_cFalseClass (*dll_rb_cFalseClass)
|
---|
| 3770 | # define rb_cFixnum (*dll_rb_cFixnum)
|
---|
| 3771 | # define rb_cNilClass (*dll_rb_cNilClass)
|
---|
| 3772 | @@ -46,8 +51,23 @@
|
---|
| 3773 | */
|
---|
| 3774 | # define RUBY_EXPORT
|
---|
| 3775 | # endif
|
---|
| 3776 | +
|
---|
| 3777 | +#if !(defined(WIN32) || defined(_WIN64))
|
---|
| 3778 | +# include <dlfcn.h>
|
---|
| 3779 | +# define HINSTANCE void*
|
---|
| 3780 | +# define RUBY_PROC void*
|
---|
| 3781 | +# define load_dll(n) dlopen((n), RTLD_LAZY|RTLD_GLOBAL)
|
---|
| 3782 | +# define symbol_from_dll dlsym
|
---|
| 3783 | +# define close_dll dlclose
|
---|
| 3784 | +#else
|
---|
| 3785 | +# define RUBY_PROC FARPROC
|
---|
| 3786 | +# define load_dll vimLoadLib
|
---|
| 3787 | +# define symbol_from_dll GetProcAddress
|
---|
| 3788 | +# define close_dll FreeLibrary
|
---|
| 3789 | #endif
|
---|
| 3790 |
|
---|
| 3791 | +#endif /* ifdef DYNAMIC_RUBY */
|
---|
| 3792 | +
|
---|
| 3793 | /* suggested by Ariya Mizutani */
|
---|
| 3794 | #if (_MSC_VER == 1200)
|
---|
| 3795 | # undef _WIN32_WINNT
|
---|
| 3796 | @@ -70,6 +90,7 @@
|
---|
| 3797 | # include <ruby/encoding.h>
|
---|
| 3798 | #endif
|
---|
| 3799 |
|
---|
| 3800 | +#undef off_t /* ruby defines off_t as _int64, Mingw uses long */
|
---|
| 3801 | #undef EXTERN
|
---|
| 3802 | #undef _
|
---|
| 3803 |
|
---|
| 3804 | @@ -160,28 +181,35 @@
|
---|
| 3805 | #define rb_lastline_get dll_rb_lastline_get
|
---|
| 3806 | #define rb_lastline_set dll_rb_lastline_set
|
---|
| 3807 | #define rb_load_protect dll_rb_load_protect
|
---|
| 3808 | +#ifndef RUBY19_OR_LATER
|
---|
| 3809 | #define rb_num2long dll_rb_num2long
|
---|
| 3810 | +#endif
|
---|
| 3811 | #define rb_num2ulong dll_rb_num2ulong
|
---|
| 3812 | #define rb_obj_alloc dll_rb_obj_alloc
|
---|
| 3813 | #define rb_obj_as_string dll_rb_obj_as_string
|
---|
| 3814 | #define rb_obj_id dll_rb_obj_id
|
---|
| 3815 | #define rb_raise dll_rb_raise
|
---|
| 3816 | -#define rb_str2cstr dll_rb_str2cstr
|
---|
| 3817 | #define rb_str_cat dll_rb_str_cat
|
---|
| 3818 | #define rb_str_concat dll_rb_str_concat
|
---|
| 3819 | #define rb_str_new dll_rb_str_new
|
---|
| 3820 | #ifdef rb_str_new2
|
---|
| 3821 | /* Ruby may #define rb_str_new2 to use rb_str_new_cstr. */
|
---|
| 3822 | # define need_rb_str_new_cstr 1
|
---|
| 3823 | +/* Ruby's headers #define rb_str_new_cstr to make use of GCC's
|
---|
| 3824 | + * __builtin_constant_p extension. */
|
---|
| 3825 | +# undef rb_str_new_cstr
|
---|
| 3826 | # define rb_str_new_cstr dll_rb_str_new_cstr
|
---|
| 3827 | #else
|
---|
| 3828 | # define rb_str_new2 dll_rb_str_new2
|
---|
| 3829 | #endif
|
---|
| 3830 | #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18
|
---|
| 3831 | +# define rb_string_value dll_rb_string_value
|
---|
| 3832 | # define rb_string_value_ptr dll_rb_string_value_ptr
|
---|
| 3833 | # define rb_float_new dll_rb_float_new
|
---|
| 3834 | # define rb_ary_new dll_rb_ary_new
|
---|
| 3835 | # define rb_ary_push dll_rb_ary_push
|
---|
| 3836 | +#else
|
---|
| 3837 | +# define rb_str2cstr dll_rb_str2cstr
|
---|
| 3838 | #endif
|
---|
| 3839 | #ifdef RUBY19_OR_LATER
|
---|
| 3840 | # define rb_errinfo dll_rb_errinfo
|
---|
| 3841 | @@ -190,9 +218,11 @@
|
---|
| 3842 | #endif
|
---|
| 3843 | #define ruby_init dll_ruby_init
|
---|
| 3844 | #define ruby_init_loadpath dll_ruby_init_loadpath
|
---|
| 3845 | -#define NtInitialize dll_NtInitialize
|
---|
| 3846 | -#if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18
|
---|
| 3847 | -# define rb_w32_snprintf dll_rb_w32_snprintf
|
---|
| 3848 | +#ifdef WIN3264
|
---|
| 3849 | +# define NtInitialize dll_NtInitialize
|
---|
| 3850 | +# if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18
|
---|
| 3851 | +# define rb_w32_snprintf dll_rb_w32_snprintf
|
---|
| 3852 | +# endif
|
---|
| 3853 | #endif
|
---|
| 3854 |
|
---|
| 3855 | #ifdef RUBY19_OR_LATER
|
---|
| 3856 | @@ -201,7 +231,9 @@
|
---|
| 3857 | # define rb_enc_find dll_rb_enc_find
|
---|
| 3858 | # define rb_enc_str_new dll_rb_enc_str_new
|
---|
| 3859 | # define rb_sprintf dll_rb_sprintf
|
---|
| 3860 | +# define rb_require dll_rb_require
|
---|
| 3861 | # define ruby_init_stack dll_ruby_init_stack
|
---|
| 3862 | +# define ruby_process_options dll_ruby_process_options
|
---|
| 3863 | #endif
|
---|
| 3864 |
|
---|
| 3865 | /*
|
---|
| 3866 | @@ -246,7 +278,11 @@
|
---|
| 3867 | static VALUE (*dll_rb_obj_as_string) (VALUE);
|
---|
| 3868 | static VALUE (*dll_rb_obj_id) (VALUE);
|
---|
| 3869 | static void (*dll_rb_raise) (VALUE, const char*, ...);
|
---|
| 3870 | +#if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18
|
---|
| 3871 | +static VALUE (*dll_rb_string_value) (volatile VALUE*);
|
---|
| 3872 | +#else
|
---|
| 3873 | static char *(*dll_rb_str2cstr) (VALUE,int*);
|
---|
| 3874 | +#endif
|
---|
| 3875 | static VALUE (*dll_rb_str_cat) (VALUE, const char*, long);
|
---|
| 3876 | static VALUE (*dll_rb_str_concat) (VALUE, VALUE);
|
---|
| 3877 | static VALUE (*dll_rb_str_new) (const char*, long);
|
---|
| 3878 | @@ -263,7 +299,12 @@
|
---|
| 3879 | #endif
|
---|
| 3880 | static void (*dll_ruby_init) (void);
|
---|
| 3881 | static void (*dll_ruby_init_loadpath) (void);
|
---|
| 3882 | +#ifdef WIN3264
|
---|
| 3883 | static void (*dll_NtInitialize) (int*, char***);
|
---|
| 3884 | +# if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18
|
---|
| 3885 | +static int (*dll_rb_w32_snprintf)(char*, size_t, const char*, ...);
|
---|
| 3886 | +# endif
|
---|
| 3887 | +#endif
|
---|
| 3888 | #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18
|
---|
| 3889 | static char * (*dll_rb_string_value_ptr) (volatile VALUE*);
|
---|
| 3890 | static VALUE (*dll_rb_float_new) (double);
|
---|
| 3891 | @@ -273,9 +314,6 @@
|
---|
| 3892 | #ifdef RUBY19_OR_LATER
|
---|
| 3893 | static VALUE (*dll_rb_int2big)(SIGNED_VALUE);
|
---|
| 3894 | #endif
|
---|
| 3895 | -#if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18
|
---|
| 3896 | -static int (*dll_rb_w32_snprintf)(char*, size_t, const char*, ...);
|
---|
| 3897 | -#endif
|
---|
| 3898 |
|
---|
| 3899 | #ifdef RUBY19_OR_LATER
|
---|
| 3900 | static void (*dll_ruby_script) (const char*);
|
---|
| 3901 | @@ -283,7 +321,9 @@
|
---|
| 3902 | static rb_encoding* (*dll_rb_enc_find) (const char*);
|
---|
| 3903 | static VALUE (*dll_rb_enc_str_new) (const char*, long, rb_encoding*);
|
---|
| 3904 | static VALUE (*dll_rb_sprintf) (const char*, ...);
|
---|
| 3905 | +static VALUE (*dll_rb_require) (const char*);
|
---|
| 3906 | static void (*ruby_init_stack)(VALUE*);
|
---|
| 3907 | +static void* (*ruby_process_options)(int, char**);
|
---|
| 3908 | #endif
|
---|
| 3909 |
|
---|
| 3910 | #ifdef RUBY19_OR_LATER
|
---|
| 3911 | @@ -297,12 +337,11 @@
|
---|
| 3912 | }
|
---|
| 3913 | #endif
|
---|
| 3914 |
|
---|
| 3915 | -static HINSTANCE hinstRuby = 0; /* Instance of ruby.dll */
|
---|
| 3916 | +static HINSTANCE hinstRuby = NULL; /* Instance of ruby.dll */
|
---|
| 3917 |
|
---|
| 3918 | /*
|
---|
| 3919 | * Table of name to function pointer of ruby.
|
---|
| 3920 | */
|
---|
| 3921 | -#define RUBY_PROC FARPROC
|
---|
| 3922 | static struct
|
---|
| 3923 | {
|
---|
| 3924 | char *name;
|
---|
| 3925 | @@ -347,7 +386,11 @@
|
---|
| 3926 | {"rb_obj_as_string", (RUBY_PROC*)&dll_rb_obj_as_string},
|
---|
| 3927 | {"rb_obj_id", (RUBY_PROC*)&dll_rb_obj_id},
|
---|
| 3928 | {"rb_raise", (RUBY_PROC*)&dll_rb_raise},
|
---|
| 3929 | +#if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18
|
---|
| 3930 | + {"rb_string_value", (RUBY_PROC*)&dll_rb_string_value},
|
---|
| 3931 | +#else
|
---|
| 3932 | {"rb_str2cstr", (RUBY_PROC*)&dll_rb_str2cstr},
|
---|
| 3933 | +#endif
|
---|
| 3934 | {"rb_str_cat", (RUBY_PROC*)&dll_rb_str_cat},
|
---|
| 3935 | {"rb_str_concat", (RUBY_PROC*)&dll_rb_str_concat},
|
---|
| 3936 | {"rb_str_new", (RUBY_PROC*)&dll_rb_str_new},
|
---|
| 3937 | @@ -363,15 +406,17 @@
|
---|
| 3938 | #endif
|
---|
| 3939 | {"ruby_init", (RUBY_PROC*)&dll_ruby_init},
|
---|
| 3940 | {"ruby_init_loadpath", (RUBY_PROC*)&dll_ruby_init_loadpath},
|
---|
| 3941 | +#ifdef WIN3264
|
---|
| 3942 | {
|
---|
| 3943 | -#if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER < 19
|
---|
| 3944 | +# if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER < 19
|
---|
| 3945 | "NtInitialize",
|
---|
| 3946 | -#else
|
---|
| 3947 | +# else
|
---|
| 3948 | "ruby_sysinit",
|
---|
| 3949 | -#endif
|
---|
| 3950 | +# endif
|
---|
| 3951 | (RUBY_PROC*)&dll_NtInitialize},
|
---|
| 3952 | -#if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18
|
---|
| 3953 | +# if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18
|
---|
| 3954 | {"rb_w32_snprintf", (RUBY_PROC*)&dll_rb_w32_snprintf},
|
---|
| 3955 | +# endif
|
---|
| 3956 | #endif
|
---|
| 3957 | #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18
|
---|
| 3958 | {"rb_string_value_ptr", (RUBY_PROC*)&dll_rb_string_value_ptr},
|
---|
| 3959 | @@ -386,7 +431,9 @@
|
---|
| 3960 | {"rb_enc_find", (RUBY_PROC*)&dll_rb_enc_find},
|
---|
| 3961 | {"rb_enc_str_new", (RUBY_PROC*)&dll_rb_enc_str_new},
|
---|
| 3962 | {"rb_sprintf", (RUBY_PROC*)&dll_rb_sprintf},
|
---|
| 3963 | + {"rb_require", (RUBY_PROC*)&dll_rb_require},
|
---|
| 3964 | {"ruby_init_stack", (RUBY_PROC*)&dll_ruby_init_stack},
|
---|
| 3965 | + {"ruby_process_options", (RUBY_PROC*)&dll_ruby_process_options},
|
---|
| 3966 | #endif
|
---|
| 3967 | {"", NULL},
|
---|
| 3968 | };
|
---|
| 3969 | @@ -399,8 +446,8 @@
|
---|
| 3970 | {
|
---|
| 3971 | if (hinstRuby)
|
---|
| 3972 | {
|
---|
| 3973 | - FreeLibrary(hinstRuby);
|
---|
| 3974 | - hinstRuby = 0;
|
---|
| 3975 | + close_dll(hinstRuby);
|
---|
| 3976 | + hinstRuby = NULL;
|
---|
| 3977 | }
|
---|
| 3978 | }
|
---|
| 3979 |
|
---|
| 3980 | @@ -416,7 +463,7 @@
|
---|
| 3981 |
|
---|
| 3982 | if (hinstRuby)
|
---|
| 3983 | return OK;
|
---|
| 3984 | - hinstRuby = LoadLibrary(libname);
|
---|
| 3985 | + hinstRuby = load_dll(libname);
|
---|
| 3986 | if (!hinstRuby)
|
---|
| 3987 | {
|
---|
| 3988 | if (verbose)
|
---|
| 3989 | @@ -426,11 +473,11 @@
|
---|
| 3990 |
|
---|
| 3991 | for (i = 0; ruby_funcname_table[i].ptr; ++i)
|
---|
| 3992 | {
|
---|
| 3993 | - if (!(*ruby_funcname_table[i].ptr = GetProcAddress(hinstRuby,
|
---|
| 3994 | + if (!(*ruby_funcname_table[i].ptr = symbol_from_dll(hinstRuby,
|
---|
| 3995 | ruby_funcname_table[i].name)))
|
---|
| 3996 | {
|
---|
| 3997 | - FreeLibrary(hinstRuby);
|
---|
| 3998 | - hinstRuby = 0;
|
---|
| 3999 | + close_dll(hinstRuby);
|
---|
| 4000 | + hinstRuby = NULL;
|
---|
| 4001 | if (verbose)
|
---|
| 4002 | EMSG2(_(e_loadfunc), ruby_funcname_table[i].name);
|
---|
| 4003 | return FAIL;
|
---|
| 4004 | @@ -539,9 +586,9 @@
|
---|
| 4005 | if (u_save(eap->line1 - 1, eap->line2 + 1) != OK)
|
---|
| 4006 | return;
|
---|
| 4007 | for (i = eap->line1; i <= eap->line2; i++) {
|
---|
| 4008 | - VALUE line, oldline;
|
---|
| 4009 | + VALUE line;
|
---|
| 4010 |
|
---|
| 4011 | - line = oldline = vim_str2rb_enc_str((char *)ml_get(i));
|
---|
| 4012 | + line = vim_str2rb_enc_str((char *)ml_get(i));
|
---|
| 4013 | rb_lastline_set(line);
|
---|
| 4014 | eval_enc_string_protect((char *) eap->arg, &state);
|
---|
| 4015 | if (state) {
|
---|
| 4016 | @@ -616,13 +663,16 @@
|
---|
| 4017 | ruby_init();
|
---|
| 4018 | }
|
---|
| 4019 | #ifdef RUBY19_OR_LATER
|
---|
| 4020 | + {
|
---|
| 4021 | + int dummy_argc = 2;
|
---|
| 4022 | + char *dummy_argv[] = {"vim-ruby", "-e0"};
|
---|
| 4023 | + ruby_process_options(dummy_argc, dummy_argv);
|
---|
| 4024 | + }
|
---|
| 4025 | ruby_script("vim-ruby");
|
---|
| 4026 | -#endif
|
---|
| 4027 | +#else
|
---|
| 4028 | ruby_init_loadpath();
|
---|
| 4029 | - ruby_io_init();
|
---|
| 4030 | -#ifdef RUBY19_OR_LATER
|
---|
| 4031 | - rb_enc_find_index("encdb");
|
---|
| 4032 | #endif
|
---|
| 4033 | + ruby_io_init();
|
---|
| 4034 | ruby_vim_init();
|
---|
| 4035 | ruby_initialized = 1;
|
---|
| 4036 | #ifdef DYNAMIC_RUBY
|
---|
| 4037 | @@ -906,15 +956,9 @@
|
---|
| 4038 |
|
---|
| 4039 | static VALUE get_buffer_line(buf_T *buf, linenr_T n)
|
---|
| 4040 | {
|
---|
| 4041 | - if (n > 0 && n <= buf->b_ml.ml_line_count)
|
---|
| 4042 | - {
|
---|
| 4043 | - char *line = (char *)ml_get_buf(buf, n, FALSE);
|
---|
| 4044 | - return line ? vim_str2rb_enc_str(line) : Qnil;
|
---|
| 4045 | - }
|
---|
| 4046 | - rb_raise(rb_eIndexError, "line number %ld out of range", (long)n);
|
---|
| 4047 | -#ifndef __GNUC__
|
---|
| 4048 | - return Qnil; /* For stop warning */
|
---|
| 4049 | -#endif
|
---|
| 4050 | + if (n <= 0 || n > buf->b_ml.ml_line_count)
|
---|
| 4051 | + rb_raise(rb_eIndexError, "line number %ld out of range", (long)n);
|
---|
| 4052 | + return vim_str2rb_enc_str((char *)ml_get_buf(buf, n, FALSE));
|
---|
| 4053 | }
|
---|
| 4054 |
|
---|
| 4055 | static VALUE buffer_aref(VALUE self, VALUE num)
|
---|
| 4056 | @@ -953,9 +997,6 @@
|
---|
| 4057 | else
|
---|
| 4058 | {
|
---|
| 4059 | rb_raise(rb_eIndexError, "line number %ld out of range", (long)n);
|
---|
| 4060 | -#ifndef __GNUC__
|
---|
| 4061 | - return Qnil; /* For stop warning */
|
---|
| 4062 | -#endif
|
---|
| 4063 | }
|
---|
| 4064 | return str;
|
---|
| 4065 | }
|
---|
| 4066 | @@ -1010,7 +1051,8 @@
|
---|
| 4067 | long n = NUM2LONG(num);
|
---|
| 4068 | aco_save_T aco;
|
---|
| 4069 |
|
---|
| 4070 | - if (line == NULL) {
|
---|
| 4071 | + if (line == NULL)
|
---|
| 4072 | + {
|
---|
| 4073 | rb_raise(rb_eIndexError, "NULL line");
|
---|
| 4074 | }
|
---|
| 4075 | else if (n >= 0 && n <= buf->b_ml.ml_line_count)
|
---|
| 4076 | @@ -1034,7 +1076,8 @@
|
---|
| 4077 |
|
---|
| 4078 | update_curbuf(NOT_VALID);
|
---|
| 4079 | }
|
---|
| 4080 | - else {
|
---|
| 4081 | + else
|
---|
| 4082 | + {
|
---|
| 4083 | rb_raise(rb_eIndexError, "line number %ld out of range", n);
|
---|
| 4084 | }
|
---|
| 4085 | return str;
|
---|
| 4086 | diff -Naur vim73.orig/src/if_sniff.c vim73/src/if_sniff.c
|
---|
| 4087 | --- vim73.orig/src/if_sniff.c 2010-05-15 07:04:06.000000000 -0400
|
---|
| 4088 | +++ vim73/src/if_sniff.c 2011-01-08 21:01:19.378657342 -0500
|
---|
| 4089 | @@ -9,7 +9,6 @@
|
---|
| 4090 |
|
---|
| 4091 | #ifdef WIN32
|
---|
| 4092 | # include <stdio.h>
|
---|
| 4093 | -# include "vimio.h"
|
---|
| 4094 | # include <process.h>
|
---|
| 4095 | # include <string.h>
|
---|
| 4096 | # include <assert.h>
|
---|
| 4097 | diff -Naur vim73.orig/src/if_tcl.c vim73/src/if_tcl.c
|
---|
| 4098 | --- vim73.orig/src/if_tcl.c 2010-08-08 09:07:25.000000000 -0400
|
---|
| 4099 | +++ vim73/src/if_tcl.c 2011-01-08 21:01:19.434656677 -0500
|
---|
| 4100 | @@ -74,7 +74,6 @@
|
---|
| 4101 | #endif
|
---|
| 4102 |
|
---|
| 4103 | #include <tcl.h>
|
---|
| 4104 | -#include <errno.h>
|
---|
| 4105 | #include <string.h>
|
---|
| 4106 |
|
---|
| 4107 | typedef struct
|
---|
| 4108 | diff -Naur vim73.orig/src/integration.c vim73/src/integration.c
|
---|
| 4109 | --- vim73.orig/src/integration.c 2010-08-08 09:09:21.000000000 -0400
|
---|
| 4110 | +++ vim73/src/integration.c 2011-01-08 21:01:19.434656677 -0500
|
---|
| 4111 | @@ -33,7 +33,6 @@
|
---|
| 4112 | #include <sys/un.h>
|
---|
| 4113 | #endif
|
---|
| 4114 |
|
---|
| 4115 | -#include <errno.h>
|
---|
| 4116 | #include <sys/types.h>
|
---|
| 4117 | #include <sys/socket.h>
|
---|
| 4118 | #include <sys/param.h>
|
---|
| 4119 | diff -Naur vim73.orig/src/link.sh vim73/src/link.sh
|
---|
| 4120 | --- vim73.orig/src/link.sh 2010-07-21 15:43:29.000000000 -0400
|
---|
| 4121 | +++ vim73/src/link.sh 2011-01-08 21:01:19.122658259 -0500
|
---|
| 4122 | @@ -5,7 +5,7 @@
|
---|
| 4123 | # libraries when they exist, but this doesn't mean they are needed for Vim.
|
---|
| 4124 | #
|
---|
| 4125 | # Author: Bram Moolenaar
|
---|
| 4126 | -# Last change: 2006 Sep 26
|
---|
| 4127 | +# Last change: 2010 Nov 03
|
---|
| 4128 | # License: Public domain
|
---|
| 4129 | #
|
---|
| 4130 | # Warning: This fails miserably if the linker doesn't return an error code!
|
---|
| 4131 | @@ -16,11 +16,23 @@
|
---|
| 4132 | echo "$LINK " >link.cmd
|
---|
| 4133 | exit_value=0
|
---|
| 4134 |
|
---|
| 4135 | +if test "$LINK_AS_NEEDED" = yes; then
|
---|
| 4136 | + echo "link.sh: \$LINK_AS_NEEDED set to 'yes': invoking linker directly."
|
---|
| 4137 | + cat link.cmd
|
---|
| 4138 | + if sh link.cmd; then
|
---|
| 4139 | + exit_value=0
|
---|
| 4140 | + echo "link.sh: Linked fine"
|
---|
| 4141 | + else
|
---|
| 4142 | + exit_value=$?
|
---|
| 4143 | + echo "link.sh: Linking failed"
|
---|
| 4144 | + fi
|
---|
| 4145 | +else
|
---|
| 4146 | + if test -f auto/link.sed; then
|
---|
| 4147 | +
|
---|
| 4148 | #
|
---|
| 4149 | # If auto/link.sed already exists, use it. We assume a previous run of
|
---|
| 4150 | # link.sh has found the correct set of libraries.
|
---|
| 4151 | #
|
---|
| 4152 | -if test -f auto/link.sed; then
|
---|
| 4153 | echo "link.sh: The file 'auto/link.sed' exists, which is going to be used now."
|
---|
| 4154 | echo "link.sh: If linking fails, try deleting the auto/link.sed file."
|
---|
| 4155 | echo "link.sh: If this fails too, try creating an empty auto/link.sed file."
|
---|
| 4156 | @@ -124,6 +136,8 @@
|
---|
| 4157 | fi
|
---|
| 4158 | fi
|
---|
| 4159 |
|
---|
| 4160 | +fi
|
---|
| 4161 | +
|
---|
| 4162 | #
|
---|
| 4163 | # cleanup
|
---|
| 4164 | #
|
---|
| 4165 | diff -Naur vim73.orig/src/macros.h vim73/src/macros.h
|
---|
| 4166 | --- vim73.orig/src/macros.h 2010-07-17 15:41:21.000000000 -0400
|
---|
| 4167 | +++ vim73/src/macros.h 2011-01-08 20:59:41.002656834 -0500
|
---|
| 4168 | @@ -285,3 +285,17 @@
|
---|
| 4169 | #else
|
---|
| 4170 | # define DO_AUTOCHDIR
|
---|
| 4171 | #endif
|
---|
| 4172 | +
|
---|
| 4173 | +#if defined(FEAT_SCROLLBIND) && defined(FEAT_CURSORBIND)
|
---|
| 4174 | +# define RESET_BINDING(wp) (wp)->w_p_scb = FALSE; (wp)->w_p_crb = FALSE
|
---|
| 4175 | +#else
|
---|
| 4176 | +# if defined(FEAT_SCROLLBIND)
|
---|
| 4177 | +# define RESET_BINDING(wp) (wp)->w_p_scb = FALSE
|
---|
| 4178 | +# else
|
---|
| 4179 | +# if defined(FEAT_CURSORBIND)
|
---|
| 4180 | +# define RESET_BINDING(wp) (wp)->w_p_crb = FALSE
|
---|
| 4181 | +# else
|
---|
| 4182 | +# define RESET_BINDING(wp)
|
---|
| 4183 | +# endif
|
---|
| 4184 | +# endif
|
---|
| 4185 | +#endif
|
---|
| 4186 | diff -Naur vim73.orig/src/main.c vim73/src/main.c
|
---|
| 4187 | --- vim73.orig/src/main.c 2010-08-08 09:09:55.000000000 -0400
|
---|
| 4188 | +++ vim73/src/main.c 2011-01-08 21:01:19.378657342 -0500
|
---|
| 4189 | @@ -7,10 +7,6 @@
|
---|
| 4190 | * See README.txt for an overview of the Vim source code.
|
---|
| 4191 | */
|
---|
| 4192 |
|
---|
| 4193 | -#if defined(MSDOS) || defined(WIN16) || defined(WIN32) || defined(_WIN64)
|
---|
| 4194 | -# include "vimio.h" /* for close() and dup() */
|
---|
| 4195 | -#endif
|
---|
| 4196 | -
|
---|
| 4197 | #define EXTERN
|
---|
| 4198 | #include "vim.h"
|
---|
| 4199 |
|
---|
| 4200 | @@ -940,7 +936,7 @@
|
---|
| 4201 | if (netbeansArg != NULL && strncmp("-nb", netbeansArg, 3) == 0)
|
---|
| 4202 | {
|
---|
| 4203 | # ifdef FEAT_GUI
|
---|
| 4204 | -# if !defined(FEAT_GUI_MOTIF) && !defined(FEAT_GUI_GTK) \
|
---|
| 4205 | +# if !defined(FEAT_GUI_X11) && !defined(FEAT_GUI_GTK) \
|
---|
| 4206 | && !defined(FEAT_GUI_W32)
|
---|
| 4207 | if (gui.in_use)
|
---|
| 4208 | {
|
---|
| 4209 | @@ -3817,6 +3813,8 @@
|
---|
| 4210 | /* Check if we have at least one argument. */
|
---|
| 4211 | if (filec <= 0)
|
---|
| 4212 | mainerr_arg_missing((char_u *)filev[-1]);
|
---|
| 4213 | +
|
---|
| 4214 | + /* Temporarily cd to the current directory to handle relative file names. */
|
---|
| 4215 | if (mch_dirname(cwd, MAXPATHL) != OK)
|
---|
| 4216 | return NULL;
|
---|
| 4217 | if ((p = vim_strsave_escaped_ext(cwd,
|
---|
| 4218 | @@ -3858,13 +3856,20 @@
|
---|
| 4219 | ga_concat(&ga, p);
|
---|
| 4220 | vim_free(p);
|
---|
| 4221 | }
|
---|
| 4222 | + ga_concat(&ga, (char_u *)"|if exists('*inputrestore')|call inputrestore()|endif<CR>");
|
---|
| 4223 | +
|
---|
| 4224 | /* The :drop commands goes to Insert mode when 'insertmode' is set, use
|
---|
| 4225 | * CTRL-\ CTRL-N again. */
|
---|
| 4226 | - ga_concat(&ga, (char_u *)"|if exists('*inputrestore')|call inputrestore()|endif<CR>");
|
---|
| 4227 | - ga_concat(&ga, (char_u *)"<C-\\><C-N>:cd -");
|
---|
| 4228 | + ga_concat(&ga, (char_u *)"<C-\\><C-N>");
|
---|
| 4229 | +
|
---|
| 4230 | + /* Switch back to the correct current directory (prior to temporary path
|
---|
| 4231 | + * switch) unless 'autochdir' is set, in which case it will already be
|
---|
| 4232 | + * correct after the :drop command. */
|
---|
| 4233 | + ga_concat(&ga, (char_u *)":if !exists('+acd')||!&acd|cd -|endif<CR>");
|
---|
| 4234 | +
|
---|
| 4235 | if (sendReply)
|
---|
| 4236 | - ga_concat(&ga, (char_u *)"<CR>:call SetupRemoteReplies()");
|
---|
| 4237 | - ga_concat(&ga, (char_u *)"<CR>:");
|
---|
| 4238 | + ga_concat(&ga, (char_u *)":call SetupRemoteReplies()<CR>");
|
---|
| 4239 | + ga_concat(&ga, (char_u *)":");
|
---|
| 4240 | if (inicmd != NULL)
|
---|
| 4241 | {
|
---|
| 4242 | /* Can't use <CR> after "inicmd", because an "startinsert" would cause
|
---|
| 4243 | diff -Naur vim73.orig/src/mbyte.c vim73/src/mbyte.c
|
---|
| 4244 | --- vim73.orig/src/mbyte.c 2010-07-18 09:05:44.000000000 -0400
|
---|
| 4245 | +++ vim73/src/mbyte.c 2011-01-08 21:01:19.006657043 -0500
|
---|
| 4246 | @@ -3124,6 +3124,9 @@
|
---|
| 4247 | /* If one of the two characters is incomplete return -1. */
|
---|
| 4248 | if (incomplete || i + utf_byte2len(s2[i]) > n)
|
---|
| 4249 | return -1;
|
---|
| 4250 | + /* Don't case-fold illegal bytes or truncated characters. */
|
---|
| 4251 | + if (utf_ptr2len(s1 + i) < l || utf_ptr2len(s2 + i) < l)
|
---|
| 4252 | + return -1;
|
---|
| 4253 | cdiff = utf_fold(utf_ptr2char(s1 + i))
|
---|
| 4254 | - utf_fold(utf_ptr2char(s2 + i));
|
---|
| 4255 | if (cdiff != 0)
|
---|
| 4256 | @@ -4159,11 +4162,11 @@
|
---|
| 4257 | {
|
---|
| 4258 | if (hIconvDLL != 0 && hMsvcrtDLL != 0)
|
---|
| 4259 | return TRUE;
|
---|
| 4260 | - hIconvDLL = LoadLibrary(DYNAMIC_ICONV_DLL);
|
---|
| 4261 | + hIconvDLL = vimLoadLib(DYNAMIC_ICONV_DLL);
|
---|
| 4262 | if (hIconvDLL == 0) /* sometimes it's called libiconv.dll */
|
---|
| 4263 | - hIconvDLL = LoadLibrary(DYNAMIC_ICONV_DLL_ALT);
|
---|
| 4264 | + hIconvDLL = vimLoadLib(DYNAMIC_ICONV_DLL_ALT);
|
---|
| 4265 | if (hIconvDLL != 0)
|
---|
| 4266 | - hMsvcrtDLL = LoadLibrary(DYNAMIC_MSVCRT_DLL);
|
---|
| 4267 | + hMsvcrtDLL = vimLoadLib(DYNAMIC_MSVCRT_DLL);
|
---|
| 4268 | if (hIconvDLL == 0 || hMsvcrtDLL == 0)
|
---|
| 4269 | {
|
---|
| 4270 | /* Only give the message when 'verbose' is set, otherwise it might be
|
---|
| 4271 | @@ -5167,16 +5170,16 @@
|
---|
| 4272 | void
|
---|
| 4273 | xim_set_preedit()
|
---|
| 4274 | {
|
---|
| 4275 | - if (xic == NULL)
|
---|
| 4276 | - return;
|
---|
| 4277 | -
|
---|
| 4278 | - xim_set_focus(TRUE);
|
---|
| 4279 | -
|
---|
| 4280 | XVaNestedList attr_list;
|
---|
| 4281 | XRectangle spot_area;
|
---|
| 4282 | XPoint over_spot;
|
---|
| 4283 | int line_space;
|
---|
| 4284 |
|
---|
| 4285 | + if (xic == NULL)
|
---|
| 4286 | + return;
|
---|
| 4287 | +
|
---|
| 4288 | + xim_set_focus(TRUE);
|
---|
| 4289 | +
|
---|
| 4290 | if (!xim_has_focus)
|
---|
| 4291 | {
|
---|
| 4292 | /* hide XIM cursor */
|
---|
| 4293 | @@ -5554,12 +5557,12 @@
|
---|
| 4294 | void
|
---|
| 4295 | xim_set_status_area()
|
---|
| 4296 | {
|
---|
| 4297 | - if (xic == NULL)
|
---|
| 4298 | - return;
|
---|
| 4299 | -
|
---|
| 4300 | XVaNestedList preedit_list = 0, status_list = 0, list = 0;
|
---|
| 4301 | XRectangle pre_area, status_area;
|
---|
| 4302 |
|
---|
| 4303 | + if (xic == NULL)
|
---|
| 4304 | + return;
|
---|
| 4305 | +
|
---|
| 4306 | if (input_style & XIMStatusArea)
|
---|
| 4307 | {
|
---|
| 4308 | if (input_style & XIMPreeditArea)
|
---|
| 4309 | diff -Naur vim73.orig/src/memfile.c vim73/src/memfile.c
|
---|
| 4310 | --- vim73.orig/src/memfile.c 2010-06-20 22:59:57.000000000 -0400
|
---|
| 4311 | +++ vim73/src/memfile.c 2011-01-08 21:01:19.378657342 -0500
|
---|
| 4312 | @@ -32,10 +32,6 @@
|
---|
| 4313 | * file is opened.
|
---|
| 4314 | */
|
---|
| 4315 |
|
---|
| 4316 | -#if defined(MSDOS) || defined(WIN16) || defined(WIN32) || defined(_WIN64)
|
---|
| 4317 | -# include "vimio.h" /* for lseek(), must be before vim.h */
|
---|
| 4318 | -#endif
|
---|
| 4319 | -
|
---|
| 4320 | #include "vim.h"
|
---|
| 4321 |
|
---|
| 4322 | /*
|
---|
| 4323 | @@ -1049,7 +1045,7 @@
|
---|
| 4324 | PERROR(_("E294: Seek error in swap file read"));
|
---|
| 4325 | return FAIL;
|
---|
| 4326 | }
|
---|
| 4327 | - if ((unsigned)vim_read(mfp->mf_fd, hp->bh_data, size) != size)
|
---|
| 4328 | + if ((unsigned)read_eintr(mfp->mf_fd, hp->bh_data, size) != size)
|
---|
| 4329 | {
|
---|
| 4330 | PERROR(_("E295: Read error in swap file"));
|
---|
| 4331 | return FAIL;
|
---|
| 4332 | @@ -1168,7 +1164,7 @@
|
---|
| 4333 | }
|
---|
| 4334 | #endif
|
---|
| 4335 |
|
---|
| 4336 | - if ((unsigned)vim_write(mfp->mf_fd, data, size) != size)
|
---|
| 4337 | + if ((unsigned)write_eintr(mfp->mf_fd, data, size) != size)
|
---|
| 4338 | result = FAIL;
|
---|
| 4339 |
|
---|
| 4340 | #ifdef FEAT_CRYPT
|
---|
| 4341 | diff -Naur vim73.orig/src/memline.c vim73/src/memline.c
|
---|
| 4342 | --- vim73.orig/src/memline.c 2010-08-08 09:11:46.000000000 -0400
|
---|
| 4343 | +++ vim73/src/memline.c 2011-01-08 21:01:19.434656677 -0500
|
---|
| 4344 | @@ -42,10 +42,6 @@
|
---|
| 4345 | * mf_get().
|
---|
| 4346 | */
|
---|
| 4347 |
|
---|
| 4348 | -#if defined(MSDOS) || defined(WIN16) || defined(WIN32) || defined(_WIN64)
|
---|
| 4349 | -# include "vimio.h" /* for mch_open(), must be before vim.h */
|
---|
| 4350 | -#endif
|
---|
| 4351 | -
|
---|
| 4352 | #include "vim.h"
|
---|
| 4353 |
|
---|
| 4354 | #ifndef UNIX /* it's in os_unix.h for Unix */
|
---|
| 4355 | @@ -56,10 +52,6 @@
|
---|
| 4356 | # include <proto/dos.h> /* for Open() and Close() */
|
---|
| 4357 | #endif
|
---|
| 4358 |
|
---|
| 4359 | -#ifdef HAVE_ERRNO_H
|
---|
| 4360 | -# include <errno.h>
|
---|
| 4361 | -#endif
|
---|
| 4362 | -
|
---|
| 4363 | typedef struct block0 ZERO_BL; /* contents of the first block */
|
---|
| 4364 | typedef struct pointer_block PTR_BL; /* contents of a pointer block */
|
---|
| 4365 | typedef struct data_block DATA_BL; /* contents of a data block */
|
---|
| 4366 | @@ -582,6 +574,9 @@
|
---|
| 4367 | idx = ip->ip_index + 1; /* go to next index */
|
---|
| 4368 | page_count = 1;
|
---|
| 4369 | }
|
---|
| 4370 | +
|
---|
| 4371 | + if (error > 0)
|
---|
| 4372 | + EMSG(_("E843: Error while updating swap file crypt"));
|
---|
| 4373 | }
|
---|
| 4374 |
|
---|
| 4375 | mfp->mf_old_key = NULL;
|
---|
| 4376 | @@ -2059,7 +2054,7 @@
|
---|
| 4377 | fd = mch_open((char *)fname, O_RDONLY | O_EXTRA, 0);
|
---|
| 4378 | if (fd >= 0)
|
---|
| 4379 | {
|
---|
| 4380 | - if (read(fd, (char *)&b0, sizeof(b0)) == sizeof(b0))
|
---|
| 4381 | + if (read_eintr(fd, &b0, sizeof(b0)) == sizeof(b0))
|
---|
| 4382 | {
|
---|
| 4383 | if (STRNCMP(b0.b0_version, "VIM 3.0", 7) == 0)
|
---|
| 4384 | {
|
---|
| 4385 | @@ -2384,7 +2379,7 @@
|
---|
| 4386 | * Make a copy of the line if necessary.
|
---|
| 4387 | */
|
---|
| 4388 | /*
|
---|
| 4389 | - * get a pointer to a (read-only copy of a) line
|
---|
| 4390 | + * Return a pointer to a (read-only copy of a) line.
|
---|
| 4391 | *
|
---|
| 4392 | * On failure an error message is given and IObuff is returned (to avoid
|
---|
| 4393 | * having to check for error everywhere).
|
---|
| 4394 | @@ -2397,7 +2392,7 @@
|
---|
| 4395 | }
|
---|
| 4396 |
|
---|
| 4397 | /*
|
---|
| 4398 | - * ml_get_pos: get pointer to position 'pos'
|
---|
| 4399 | + * Return pointer to position "pos".
|
---|
| 4400 | */
|
---|
| 4401 | char_u *
|
---|
| 4402 | ml_get_pos(pos)
|
---|
| 4403 | @@ -2407,7 +2402,7 @@
|
---|
| 4404 | }
|
---|
| 4405 |
|
---|
| 4406 | /*
|
---|
| 4407 | - * ml_get_curline: get pointer to cursor line.
|
---|
| 4408 | + * Return pointer to cursor line.
|
---|
| 4409 | */
|
---|
| 4410 | char_u *
|
---|
| 4411 | ml_get_curline()
|
---|
| 4412 | @@ -2416,7 +2411,7 @@
|
---|
| 4413 | }
|
---|
| 4414 |
|
---|
| 4415 | /*
|
---|
| 4416 | - * ml_get_cursor: get pointer to cursor position
|
---|
| 4417 | + * Return pointer to cursor position.
|
---|
| 4418 | */
|
---|
| 4419 | char_u *
|
---|
| 4420 | ml_get_cursor()
|
---|
| 4421 | @@ -2426,7 +2421,7 @@
|
---|
| 4422 | }
|
---|
| 4423 |
|
---|
| 4424 | /*
|
---|
| 4425 | - * get a pointer to a line in a specific buffer
|
---|
| 4426 | + * Return a pointer to a line in a specific buffer
|
---|
| 4427 | *
|
---|
| 4428 | * "will_change": if TRUE mark the buffer dirty (chars in the line will be
|
---|
| 4429 | * changed)
|
---|
| 4430 | @@ -4389,7 +4384,7 @@
|
---|
| 4431 | fd = mch_open((char *)fname, O_RDONLY | O_EXTRA, 0);
|
---|
| 4432 | if (fd >= 0)
|
---|
| 4433 | {
|
---|
| 4434 | - if (read(fd, (char *)&b0, sizeof(b0)) == sizeof(b0))
|
---|
| 4435 | + if (read_eintr(fd, &b0, sizeof(b0)) == sizeof(b0))
|
---|
| 4436 | {
|
---|
| 4437 | /*
|
---|
| 4438 | * If the swapfile has the same directory as the
|
---|
| 4439 | diff -Naur vim73.orig/src/menu.c vim73/src/menu.c
|
---|
| 4440 | --- vim73.orig/src/menu.c 2010-07-14 10:49:01.000000000 -0400
|
---|
| 4441 | +++ vim73/src/menu.c 2011-01-08 21:01:19.494656637 -0500
|
---|
| 4442 | @@ -1512,8 +1512,8 @@
|
---|
| 4443 | {
|
---|
| 4444 | #ifdef FEAT_MULTI_LANG
|
---|
| 4445 | if (menu->en_name != NULL
|
---|
| 4446 | - && (menu_namecmp(name,menu->en_name)
|
---|
| 4447 | - || menu_namecmp(name,menu->en_dname)))
|
---|
| 4448 | + && (menu_namecmp(name, menu->en_name)
|
---|
| 4449 | + || menu_namecmp(name, menu->en_dname)))
|
---|
| 4450 | return TRUE;
|
---|
| 4451 | #endif
|
---|
| 4452 | return menu_namecmp(name, menu->name) || menu_namecmp(name, menu->dname);
|
---|
| 4453 | @@ -2342,7 +2342,7 @@
|
---|
| 4454 |
|
---|
| 4455 | while (menu != NULL)
|
---|
| 4456 | {
|
---|
| 4457 | - if (STRCMP(name, menu->name) == 0 || STRCMP(name, menu->dname) == 0)
|
---|
| 4458 | + if (menu_name_equal(name, menu))
|
---|
| 4459 | {
|
---|
| 4460 | if (menu->children == NULL)
|
---|
| 4461 | {
|
---|
| 4462 | diff -Naur vim73.orig/src/message.c vim73/src/message.c
|
---|
| 4463 | --- vim73.orig/src/message.c 2010-08-04 14:10:02.000000000 -0400
|
---|
| 4464 | +++ vim73/src/message.c 2011-01-08 21:01:19.510657932 -0500
|
---|
| 4465 | @@ -569,6 +569,10 @@
|
---|
| 4466 | int severe;
|
---|
| 4467 | #endif
|
---|
| 4468 |
|
---|
| 4469 | + /* Skip this if not giving error messages at the moment. */
|
---|
| 4470 | + if (emsg_not_now())
|
---|
| 4471 | + return TRUE;
|
---|
| 4472 | +
|
---|
| 4473 | called_emsg = TRUE;
|
---|
| 4474 | ex_exitval = 1;
|
---|
| 4475 |
|
---|
| 4476 | @@ -581,10 +585,6 @@
|
---|
| 4477 | emsg_severe = FALSE;
|
---|
| 4478 | #endif
|
---|
| 4479 |
|
---|
| 4480 | - /* Skip this if not giving error messages at the moment. */
|
---|
| 4481 | - if (emsg_not_now())
|
---|
| 4482 | - return TRUE;
|
---|
| 4483 | -
|
---|
| 4484 | if (!emsg_off || vim_strchr(p_debug, 't') != NULL)
|
---|
| 4485 | {
|
---|
| 4486 | #ifdef FEAT_EVAL
|
---|
| 4487 | @@ -1477,6 +1477,27 @@
|
---|
| 4488 | return retval;
|
---|
| 4489 | }
|
---|
| 4490 |
|
---|
| 4491 | +#if defined(FEAT_EVAL) || defined(PROTO)
|
---|
| 4492 | +/*
|
---|
| 4493 | + * Return the lhs or rhs of a mapping, with the key codes turned into printable
|
---|
| 4494 | + * strings, in an allocated string.
|
---|
| 4495 | + */
|
---|
| 4496 | + char_u *
|
---|
| 4497 | +str2special_save(str, is_lhs)
|
---|
| 4498 | + char_u *str;
|
---|
| 4499 | + int is_lhs; /* TRUE for lhs, FALSE for rhs */
|
---|
| 4500 | +{
|
---|
| 4501 | + garray_T ga;
|
---|
| 4502 | + char_u *p = str;
|
---|
| 4503 | +
|
---|
| 4504 | + ga_init2(&ga, 1, 40);
|
---|
| 4505 | + while (*p != NUL)
|
---|
| 4506 | + ga_concat(&ga, str2special(&p, is_lhs));
|
---|
| 4507 | + ga_append(&ga, NUL);
|
---|
| 4508 | + return (char_u *)ga.ga_data;
|
---|
| 4509 | +}
|
---|
| 4510 | +#endif
|
---|
| 4511 | +
|
---|
| 4512 | /*
|
---|
| 4513 | * Return the printable string for the key codes at "*sp".
|
---|
| 4514 | * Used for translating the lhs or rhs of a mapping to printable chars.
|
---|
| 4515 | diff -Naur vim73.orig/src/misc1.c vim73/src/misc1.c
|
---|
| 4516 | --- vim73.orig/src/misc1.c 2010-08-15 07:24:05.000000000 -0400
|
---|
| 4517 | +++ vim73/src/misc1.c 2011-01-08 21:01:19.466658112 -0500
|
---|
| 4518 | @@ -3114,10 +3114,11 @@
|
---|
| 4519 | && (!p_ttimeout || waited * 100L < (p_ttm < 0 ? p_tm : p_ttm)))
|
---|
| 4520 | continue;
|
---|
| 4521 |
|
---|
| 4522 | - /* found a termcode: adjust length */
|
---|
| 4523 | - if (n > 0)
|
---|
| 4524 | + if (n == KEYLEN_REMOVED) /* key code removed */
|
---|
| 4525 | + continue;
|
---|
| 4526 | + if (n > 0) /* found a termcode: adjust length */
|
---|
| 4527 | len = n;
|
---|
| 4528 | - if (len == 0) /* nothing typed yet */
|
---|
| 4529 | + if (len == 0) /* nothing typed yet */
|
---|
| 4530 | continue;
|
---|
| 4531 |
|
---|
| 4532 | /* Handle modifier and/or special key code. */
|
---|
| 4533 | @@ -9161,7 +9162,10 @@
|
---|
| 4534 | #ifdef CASE_INSENSITIVE_FILENAME
|
---|
| 4535 | regmatch.rm_ic = TRUE; /* Behave like Terminal.app */
|
---|
| 4536 | #else
|
---|
| 4537 | - regmatch.rm_ic = FALSE; /* Don't ever ignore case */
|
---|
| 4538 | + if (flags & EW_ICASE)
|
---|
| 4539 | + regmatch.rm_ic = TRUE; /* 'wildignorecase' set */
|
---|
| 4540 | + else
|
---|
| 4541 | + regmatch.rm_ic = FALSE; /* Don't ignore case */
|
---|
| 4542 | #endif
|
---|
| 4543 | regmatch.regprog = vim_regcomp(pat, RE_MAGIC);
|
---|
| 4544 | vim_free(pat);
|
---|
| 4545 | @@ -9317,7 +9321,8 @@
|
---|
| 4546 | continue; /* it's different when it's shorter */
|
---|
| 4547 |
|
---|
| 4548 | rival = other_paths[j] + other_path_len - candidate_len;
|
---|
| 4549 | - if (fnamecmp(maybe_unique, rival) == 0)
|
---|
| 4550 | + if (fnamecmp(maybe_unique, rival) == 0
|
---|
| 4551 | + && (rival == other_paths[j] || vim_ispathsep(*(rival - 1))))
|
---|
| 4552 | return FALSE; /* match */
|
---|
| 4553 | }
|
---|
| 4554 |
|
---|
| 4555 | @@ -9642,7 +9647,7 @@
|
---|
| 4556 | if (paths == NULL)
|
---|
| 4557 | return 0;
|
---|
| 4558 |
|
---|
| 4559 | - files = globpath(paths, pattern, 0);
|
---|
| 4560 | + files = globpath(paths, pattern, (flags & EW_ICASE) ? WILD_ICASE : 0);
|
---|
| 4561 | vim_free(paths);
|
---|
| 4562 | if (files == NULL)
|
---|
| 4563 | return 0;
|
---|
| 4564 | diff -Naur vim73.orig/src/misc2.c vim73/src/misc2.c
|
---|
| 4565 | --- vim73.orig/src/misc2.c 2010-08-13 05:14:35.000000000 -0400
|
---|
| 4566 | +++ vim73/src/misc2.c 2011-01-08 21:01:19.302660568 -0500
|
---|
| 4567 | @@ -200,7 +200,6 @@
|
---|
| 4568 | }
|
---|
| 4569 | #endif
|
---|
| 4570 |
|
---|
| 4571 | - idx = -1;
|
---|
| 4572 | ptr = line;
|
---|
| 4573 | while (col <= wcol && *ptr != NUL)
|
---|
| 4574 | {
|
---|
| 4575 | @@ -1223,7 +1222,7 @@
|
---|
| 4576 | #endif
|
---|
| 4577 |
|
---|
| 4578 | /*
|
---|
| 4579 | - * copy a string into newly allocated memory
|
---|
| 4580 | + * Copy "string" into newly allocated memory.
|
---|
| 4581 | */
|
---|
| 4582 | char_u *
|
---|
| 4583 | vim_strsave(string)
|
---|
| 4584 | @@ -1239,6 +1238,12 @@
|
---|
| 4585 | return p;
|
---|
| 4586 | }
|
---|
| 4587 |
|
---|
| 4588 | +/*
|
---|
| 4589 | + * Copy up to "len" bytes of "string" into newly allocated memory and
|
---|
| 4590 | + * terminate with a NUL.
|
---|
| 4591 | + * The allocated memory always has size "len + 1", also when "string" is
|
---|
| 4592 | + * shorter.
|
---|
| 4593 | + */
|
---|
| 4594 | char_u *
|
---|
| 4595 | vim_strnsave(string, len)
|
---|
| 4596 | char_u *string;
|
---|
| 4597 | diff -Naur vim73.orig/src/netbeans.c vim73/src/netbeans.c
|
---|
| 4598 | --- vim73.orig/src/netbeans.c 2010-08-09 16:48:09.000000000 -0400
|
---|
| 4599 | +++ vim73/src/netbeans.c 2011-01-08 21:01:19.498658408 -0500
|
---|
| 4600 | @@ -16,10 +16,6 @@
|
---|
| 4601 | * See ":help netbeans-protocol" for explanation.
|
---|
| 4602 | */
|
---|
| 4603 |
|
---|
| 4604 | -#if defined(MSDOS) || defined(WIN16) || defined(WIN32) || defined(_WIN64)
|
---|
| 4605 | -# include "vimio.h" /* for mch_open(), must be before vim.h */
|
---|
| 4606 | -#endif
|
---|
| 4607 | -
|
---|
| 4608 | #include "vim.h"
|
---|
| 4609 |
|
---|
| 4610 | #if defined(FEAT_NETBEANS_INTG) || defined(PROTO)
|
---|
| 4611 | @@ -87,7 +83,7 @@
|
---|
| 4612 | static void nb_init_graphics __ARGS((void));
|
---|
| 4613 | static void coloncmd __ARGS((char *cmd, ...));
|
---|
| 4614 | static void nb_set_curbuf __ARGS((buf_T *buf));
|
---|
| 4615 | -#ifdef FEAT_GUI_MOTIF
|
---|
| 4616 | +#ifdef FEAT_GUI_X11
|
---|
| 4617 | static void messageFromNetbeans __ARGS((XtPointer, int *, XtInputId *));
|
---|
| 4618 | #endif
|
---|
| 4619 | #ifdef FEAT_GUI_GTK
|
---|
| 4620 | @@ -112,7 +108,7 @@
|
---|
| 4621 | static NBSOCK nbsock = -1; /* socket fd for Netbeans connection */
|
---|
| 4622 | #define NETBEANS_OPEN (nbsock != -1)
|
---|
| 4623 |
|
---|
| 4624 | -#ifdef FEAT_GUI_MOTIF
|
---|
| 4625 | +#ifdef FEAT_GUI_X11
|
---|
| 4626 | static XtInputId inputHandler = (XtInputId)NULL; /* Cookie for input */
|
---|
| 4627 | #endif
|
---|
| 4628 | #ifdef FEAT_GUI_GTK
|
---|
| 4629 | @@ -135,15 +131,13 @@
|
---|
| 4630 | static int needupdate = 0;
|
---|
| 4631 | static int inAtomic = 0;
|
---|
| 4632 |
|
---|
| 4633 | +/*
|
---|
| 4634 | + * Close the socket and remove the input handlers.
|
---|
| 4635 | + */
|
---|
| 4636 | static void
|
---|
| 4637 | -netbeans_close(void)
|
---|
| 4638 | +nb_close_socket(void)
|
---|
| 4639 | {
|
---|
| 4640 | - if (!NETBEANS_OPEN)
|
---|
| 4641 | - return;
|
---|
| 4642 | -
|
---|
| 4643 | - netbeans_send_disconnect();
|
---|
| 4644 | -
|
---|
| 4645 | -#ifdef FEAT_GUI_MOTIF
|
---|
| 4646 | +#ifdef FEAT_GUI_X11
|
---|
| 4647 | if (inputHandler != (XtInputId)NULL)
|
---|
| 4648 | {
|
---|
| 4649 | XtRemoveInput(inputHandler);
|
---|
| 4650 | @@ -167,13 +161,27 @@
|
---|
| 4651 | # endif
|
---|
| 4652 | #endif
|
---|
| 4653 |
|
---|
| 4654 | + sock_close(nbsock);
|
---|
| 4655 | + nbsock = -1;
|
---|
| 4656 | +}
|
---|
| 4657 | +
|
---|
| 4658 | +/*
|
---|
| 4659 | + * Close the connection and cleanup.
|
---|
| 4660 | + * May be called when nb_close_socket() was called earlier.
|
---|
| 4661 | + */
|
---|
| 4662 | + static void
|
---|
| 4663 | +netbeans_close(void)
|
---|
| 4664 | +{
|
---|
| 4665 | + if (NETBEANS_OPEN)
|
---|
| 4666 | + {
|
---|
| 4667 | + netbeans_send_disconnect();
|
---|
| 4668 | + nb_close_socket();
|
---|
| 4669 | + }
|
---|
| 4670 | +
|
---|
| 4671 | #ifdef FEAT_BEVAL
|
---|
| 4672 | bevalServers &= ~BEVAL_NETBEANS;
|
---|
| 4673 | #endif
|
---|
| 4674 |
|
---|
| 4675 | - sock_close(nbsock);
|
---|
| 4676 | - nbsock = -1;
|
---|
| 4677 | -
|
---|
| 4678 | needupdate = 0;
|
---|
| 4679 | inAtomic = 0;
|
---|
| 4680 | nb_free();
|
---|
| 4681 | @@ -311,14 +319,9 @@
|
---|
| 4682 | server.sin_port = htons(port);
|
---|
| 4683 | if ((host = gethostbyname(hostname)) == NULL)
|
---|
| 4684 | {
|
---|
| 4685 | - if (mch_access(hostname, R_OK) >= 0)
|
---|
| 4686 | - {
|
---|
| 4687 | - /* DEBUG: input file */
|
---|
| 4688 | - sd = mch_open(hostname, O_RDONLY, 0);
|
---|
| 4689 | - goto theend;
|
---|
| 4690 | - }
|
---|
| 4691 | nbdebug(("error in gethostbyname() in netbeans_connect()\n"));
|
---|
| 4692 | PERROR("gethostbyname() in netbeans_connect()");
|
---|
| 4693 | + sock_close(sd);
|
---|
| 4694 | goto theend;
|
---|
| 4695 | }
|
---|
| 4696 | memcpy((char *)&server.sin_addr, host->h_addr, host->h_length);
|
---|
| 4697 | @@ -368,15 +371,12 @@
|
---|
| 4698 | || (errno == EINTR)))
|
---|
| 4699 | {
|
---|
| 4700 | nbdebug(("retrying...\n"));
|
---|
| 4701 | - sleep(5);
|
---|
| 4702 | - if (!doabort)
|
---|
| 4703 | + mch_delay(3000L, TRUE);
|
---|
| 4704 | + ui_breakcheck();
|
---|
| 4705 | + if (got_int)
|
---|
| 4706 | {
|
---|
| 4707 | - ui_breakcheck();
|
---|
| 4708 | - if (got_int)
|
---|
| 4709 | - {
|
---|
| 4710 | - errno = EINTR;
|
---|
| 4711 | - break;
|
---|
| 4712 | - }
|
---|
| 4713 | + errno = EINTR;
|
---|
| 4714 | + break;
|
---|
| 4715 | }
|
---|
| 4716 | if (connect(sd, (struct sockaddr *)&server,
|
---|
| 4717 | sizeof(server)) == 0)
|
---|
| 4718 | @@ -391,6 +391,7 @@
|
---|
| 4719 | /* Get here when the server can't be found. */
|
---|
| 4720 | nbdebug(("Cannot connect to Netbeans #2\n"));
|
---|
| 4721 | PERROR(_("Cannot connect to Netbeans #2"));
|
---|
| 4722 | + sock_close(sd);
|
---|
| 4723 | if (doabort)
|
---|
| 4724 | getout(1);
|
---|
| 4725 | goto theend;
|
---|
| 4726 | @@ -401,6 +402,7 @@
|
---|
| 4727 | {
|
---|
| 4728 | nbdebug(("Cannot connect to Netbeans\n"));
|
---|
| 4729 | PERROR(_("Cannot connect to Netbeans"));
|
---|
| 4730 | + sock_close(sd);
|
---|
| 4731 | if (doabort)
|
---|
| 4732 | getout(1);
|
---|
| 4733 | goto theend;
|
---|
| 4734 | @@ -631,9 +633,7 @@
|
---|
| 4735 | {
|
---|
| 4736 | char_u *p;
|
---|
| 4737 | queue_T *node;
|
---|
| 4738 | -
|
---|
| 4739 | - if (!NETBEANS_OPEN)
|
---|
| 4740 | - return;
|
---|
| 4741 | + int own_node;
|
---|
| 4742 |
|
---|
| 4743 | while (head.next != NULL && head.next != &head)
|
---|
| 4744 | {
|
---|
| 4745 | @@ -672,20 +672,25 @@
|
---|
| 4746 | *p++ = NUL;
|
---|
| 4747 | if (*p == NUL)
|
---|
| 4748 | {
|
---|
| 4749 | + own_node = TRUE;
|
---|
| 4750 | head.next = node->next;
|
---|
| 4751 | node->next->prev = node->prev;
|
---|
| 4752 | }
|
---|
| 4753 | + else
|
---|
| 4754 | + own_node = FALSE;
|
---|
| 4755 |
|
---|
| 4756 | /* now, parse and execute the commands */
|
---|
| 4757 | nb_parse_cmd(node->buffer);
|
---|
| 4758 |
|
---|
| 4759 | - if (*p == NUL)
|
---|
| 4760 | + if (own_node)
|
---|
| 4761 | {
|
---|
| 4762 | /* buffer finished, dispose of the node and buffer */
|
---|
| 4763 | vim_free(node->buffer);
|
---|
| 4764 | vim_free(node);
|
---|
| 4765 | }
|
---|
| 4766 | - else
|
---|
| 4767 | + /* Check that "head" wasn't changed under our fingers, e.g. when a
|
---|
| 4768 | + * DETACH command was handled. */
|
---|
| 4769 | + else if (head.next == node)
|
---|
| 4770 | {
|
---|
| 4771 | /* more follows, move to the start */
|
---|
| 4772 | STRMOVE(node->buffer, p);
|
---|
| 4773 | @@ -700,7 +705,7 @@
|
---|
| 4774 | /*
|
---|
| 4775 | * Read a command from netbeans.
|
---|
| 4776 | */
|
---|
| 4777 | -#ifdef FEAT_GUI_MOTIF
|
---|
| 4778 | +#ifdef FEAT_GUI_X11
|
---|
| 4779 | static void
|
---|
| 4780 | messageFromNetbeans(XtPointer clientData UNUSED,
|
---|
| 4781 | int *unused1 UNUSED,
|
---|
| 4782 | @@ -720,15 +725,14 @@
|
---|
| 4783 | }
|
---|
| 4784 | #endif
|
---|
| 4785 |
|
---|
| 4786 | +#define DETACH_MSG "DETACH\n"
|
---|
| 4787 | +
|
---|
| 4788 | void
|
---|
| 4789 | netbeans_read()
|
---|
| 4790 | {
|
---|
| 4791 | static char_u *buf = NULL;
|
---|
| 4792 | int len = 0;
|
---|
| 4793 | int readlen = 0;
|
---|
| 4794 | -#if defined(NB_HAS_GUI) && !defined(FEAT_GUI_GTK) && !defined(FEAT_GUI_W32)
|
---|
| 4795 | - static int level = 0;
|
---|
| 4796 | -#endif
|
---|
| 4797 | #ifdef HAVE_SELECT
|
---|
| 4798 | struct timeval tval;
|
---|
| 4799 | fd_set rfds;
|
---|
| 4800 | @@ -744,13 +748,6 @@
|
---|
| 4801 | return;
|
---|
| 4802 | }
|
---|
| 4803 |
|
---|
| 4804 | -#if defined(NB_HAS_GUI) && !defined(FEAT_GUI_GTK) && !defined(FEAT_GUI_W32)
|
---|
| 4805 | - /* recursion guard; this will be called from the X event loop at unknown
|
---|
| 4806 | - * moments */
|
---|
| 4807 | - if (NB_HAS_GUI)
|
---|
| 4808 | - ++level;
|
---|
| 4809 | -#endif
|
---|
| 4810 | -
|
---|
| 4811 | /* Allocate a buffer to read into. */
|
---|
| 4812 | if (buf == NULL)
|
---|
| 4813 | {
|
---|
| 4814 | @@ -790,34 +787,32 @@
|
---|
| 4815 | break; /* did read everything that's available */
|
---|
| 4816 | }
|
---|
| 4817 |
|
---|
| 4818 | + /* Reading a socket disconnection (readlen == 0), or a socket error. */
|
---|
| 4819 | if (readlen <= 0)
|
---|
| 4820 | {
|
---|
| 4821 | - /* read error or didn't read anything */
|
---|
| 4822 | - netbeans_close();
|
---|
| 4823 | - nbdebug(("messageFromNetbeans: Error in read() from socket\n"));
|
---|
| 4824 | + /* Queue a "DETACH" netbeans message in the command queue in order to
|
---|
| 4825 | + * terminate the netbeans session later. Do not end the session here
|
---|
| 4826 | + * directly as we may be running in the context of a call to
|
---|
| 4827 | + * netbeans_parse_messages():
|
---|
| 4828 | + * netbeans_parse_messages
|
---|
| 4829 | + * -> autocmd triggered while processing the netbeans cmd
|
---|
| 4830 | + * -> ui_breakcheck
|
---|
| 4831 | + * -> gui event loop or select loop
|
---|
| 4832 | + * -> netbeans_read()
|
---|
| 4833 | + */
|
---|
| 4834 | + save((char_u *)DETACH_MSG, (int)strlen(DETACH_MSG));
|
---|
| 4835 | + nb_close_socket();
|
---|
| 4836 | +
|
---|
| 4837 | if (len < 0)
|
---|
| 4838 | {
|
---|
| 4839 | nbdebug(("read from Netbeans socket\n"));
|
---|
| 4840 | PERROR(_("read from Netbeans socket"));
|
---|
| 4841 | }
|
---|
| 4842 | - return; /* don't try to parse it */
|
---|
| 4843 | }
|
---|
| 4844 |
|
---|
| 4845 | -#if defined(NB_HAS_GUI) && !defined(FEAT_GUI_W32)
|
---|
| 4846 | - /* Let the main loop handle messages. */
|
---|
| 4847 | - if (NB_HAS_GUI)
|
---|
| 4848 | - {
|
---|
| 4849 | -# ifdef FEAT_GUI_GTK
|
---|
| 4850 | - if (gtk_main_level() > 0)
|
---|
| 4851 | - gtk_main_quit();
|
---|
| 4852 | -# else
|
---|
| 4853 | - /* Parse the messages now, but avoid recursion. */
|
---|
| 4854 | - if (level == 1)
|
---|
| 4855 | - netbeans_parse_messages();
|
---|
| 4856 | -
|
---|
| 4857 | - --level;
|
---|
| 4858 | -# endif
|
---|
| 4859 | - }
|
---|
| 4860 | +#if defined(NB_HAS_GUI) && defined(FEAT_GUI_GTK)
|
---|
| 4861 | + if (NB_HAS_GUI && gtk_main_level() > 0)
|
---|
| 4862 | + gtk_main_quit();
|
---|
| 4863 | #endif
|
---|
| 4864 | }
|
---|
| 4865 |
|
---|
| 4866 | @@ -955,7 +950,6 @@
|
---|
| 4867 | keyQ_T *key_node = keyHead.next;
|
---|
| 4868 | queue_T *cmd_node = head.next;
|
---|
| 4869 | nbbuf_T buf;
|
---|
| 4870 | - buf_T *bufp;
|
---|
| 4871 | int i;
|
---|
| 4872 |
|
---|
| 4873 | /* free the netbeans buffer list */
|
---|
| 4874 | @@ -964,7 +958,7 @@
|
---|
| 4875 | buf = buf_list[i];
|
---|
| 4876 | vim_free(buf.displayname);
|
---|
| 4877 | vim_free(buf.signmap);
|
---|
| 4878 | - if ((bufp=buf.bufp) != NULL)
|
---|
| 4879 | + if (buf.bufp != NULL)
|
---|
| 4880 | {
|
---|
| 4881 | buf.bufp->b_netbeans_file = FALSE;
|
---|
| 4882 | buf.bufp->b_was_netbeans_file = FALSE;
|
---|
| 4883 | @@ -1186,6 +1180,10 @@
|
---|
| 4884 |
|
---|
| 4885 | nbdebug(("REP %d: <none>\n", cmdno));
|
---|
| 4886 |
|
---|
| 4887 | + /* Avoid printing an annoying error message. */
|
---|
| 4888 | + if (!NETBEANS_OPEN)
|
---|
| 4889 | + return;
|
---|
| 4890 | +
|
---|
| 4891 | sprintf(reply, "%d\n", cmdno);
|
---|
| 4892 | nb_send(reply, "nb_reply_nil");
|
---|
| 4893 | }
|
---|
| 4894 | @@ -2773,6 +2771,16 @@
|
---|
| 4895 | ex_nbstart(eap)
|
---|
| 4896 | exarg_T *eap;
|
---|
| 4897 | {
|
---|
| 4898 | +#ifdef FEAT_GUI
|
---|
| 4899 | +# if !defined(FEAT_GUI_X11) && !defined(FEAT_GUI_GTK) \
|
---|
| 4900 | + && !defined(FEAT_GUI_W32)
|
---|
| 4901 | + if (gui.in_use)
|
---|
| 4902 | + {
|
---|
| 4903 | + EMSG(_("E838: netbeans is not supported with this GUI"));
|
---|
| 4904 | + return;
|
---|
| 4905 | + }
|
---|
| 4906 | +# endif
|
---|
| 4907 | +#endif
|
---|
| 4908 | netbeans_open((char *)eap->arg, FALSE);
|
---|
| 4909 | }
|
---|
| 4910 |
|
---|
| 4911 | @@ -2937,7 +2945,7 @@
|
---|
| 4912 | if (!NB_HAS_GUI || !NETBEANS_OPEN)
|
---|
| 4913 | return;
|
---|
| 4914 |
|
---|
| 4915 | -# ifdef FEAT_GUI_MOTIF
|
---|
| 4916 | +# ifdef FEAT_GUI_X11
|
---|
| 4917 | /* tell notifier we are interested in being called
|
---|
| 4918 | * when there is input on the editor connection socket
|
---|
| 4919 | */
|
---|
| 4920 | @@ -3027,7 +3035,7 @@
|
---|
| 4921 | }
|
---|
| 4922 | }
|
---|
| 4923 |
|
---|
| 4924 | -#if defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_W32) || defined(PROTO)
|
---|
| 4925 | +#if defined(FEAT_GUI_X11) || defined(FEAT_GUI_W32) || defined(PROTO)
|
---|
| 4926 | /*
|
---|
| 4927 | * Tell netbeans that the window was moved or resized.
|
---|
| 4928 | */
|
---|
| 4929 | @@ -3458,7 +3466,7 @@
|
---|
| 4930 | return FALSE;
|
---|
| 4931 | }
|
---|
| 4932 |
|
---|
| 4933 | -#if defined(FEAT_GUI_MOTIF) || defined(PROTO)
|
---|
| 4934 | +#if defined(FEAT_GUI_X11) || defined(PROTO)
|
---|
| 4935 | /*
|
---|
| 4936 | * We have multiple signs to draw at the same location. Draw the
|
---|
| 4937 | * multi-sign indicator instead. This is the Motif version.
|
---|
| 4938 | @@ -3487,7 +3495,7 @@
|
---|
| 4939 | XDrawPoint(gui.dpy, gui.wid, gui.text_gc, x+3, y++);
|
---|
| 4940 | XDrawPoint(gui.dpy, gui.wid, gui.text_gc, x+2, y);
|
---|
| 4941 | }
|
---|
| 4942 | -#endif /* FEAT_GUI_MOTIF */
|
---|
| 4943 | +#endif /* FEAT_GUI_X11 */
|
---|
| 4944 |
|
---|
| 4945 | #if defined(FEAT_GUI_GTK) && !defined(PROTO)
|
---|
| 4946 | /*
|
---|
| 4947 | diff -Naur vim73.orig/src/normal.c vim73/src/normal.c
|
---|
| 4948 | --- vim73.orig/src/normal.c 2010-07-31 09:25:19.000000000 -0400
|
---|
| 4949 | +++ vim73/src/normal.c 2011-01-08 21:01:19.390656741 -0500
|
---|
| 4950 | @@ -25,6 +25,9 @@
|
---|
| 4951 | static int restart_VIsual_select = 0;
|
---|
| 4952 | #endif
|
---|
| 4953 |
|
---|
| 4954 | +#ifdef FEAT_EVAL
|
---|
| 4955 | +static void set_vcount_ca __ARGS((cmdarg_T *cap, int *set_prevcount));
|
---|
| 4956 | +#endif
|
---|
| 4957 | static int
|
---|
| 4958 | # ifdef __BORLANDC__
|
---|
| 4959 | _RTLENTRYF
|
---|
| 4960 | @@ -648,6 +651,14 @@
|
---|
| 4961 | dont_scroll = FALSE; /* allow scrolling here */
|
---|
| 4962 | #endif
|
---|
| 4963 |
|
---|
| 4964 | +#ifdef FEAT_EVAL
|
---|
| 4965 | + /* Set v:count here, when called from main() and not a stuffed
|
---|
| 4966 | + * command, so that v:count can be used in an expression mapping
|
---|
| 4967 | + * when there is no count. */
|
---|
| 4968 | + if (toplevel && stuff_empty())
|
---|
| 4969 | + set_vcount_ca(&ca, &set_prevcount);
|
---|
| 4970 | +#endif
|
---|
| 4971 | +
|
---|
| 4972 | /*
|
---|
| 4973 | * Get the command character from the user.
|
---|
| 4974 | */
|
---|
| 4975 | @@ -725,15 +736,7 @@
|
---|
| 4976 | * command, so that v:count can be used in an expression mapping
|
---|
| 4977 | * right after the count. */
|
---|
| 4978 | if (toplevel && stuff_empty())
|
---|
| 4979 | - {
|
---|
| 4980 | - long count = ca.count0;
|
---|
| 4981 | -
|
---|
| 4982 | - /* multiply with ca.opcount the same way as below */
|
---|
| 4983 | - if (ca.opcount != 0)
|
---|
| 4984 | - count = ca.opcount * (count == 0 ? 1 : count);
|
---|
| 4985 | - set_vcount(count, count == 0 ? 1 : count, set_prevcount);
|
---|
| 4986 | - set_prevcount = FALSE; /* only set v:prevcount once */
|
---|
| 4987 | - }
|
---|
| 4988 | + set_vcount_ca(&ca, &set_prevcount);
|
---|
| 4989 | #endif
|
---|
| 4990 | if (ctrl_w)
|
---|
| 4991 | {
|
---|
| 4992 | @@ -1386,6 +1389,26 @@
|
---|
| 4993 | opcount = ca.opcount;
|
---|
| 4994 | }
|
---|
| 4995 |
|
---|
| 4996 | +#ifdef FEAT_EVAL
|
---|
| 4997 | +/*
|
---|
| 4998 | + * Set v:count and v:count1 according to "cap".
|
---|
| 4999 | + * Set v:prevcount only when "set_prevcount" is TRUE.
|
---|
| 5000 | + */
|
---|
| 5001 | + static void
|
---|
| 5002 | +set_vcount_ca(cap, set_prevcount)
|
---|
| 5003 | + cmdarg_T *cap;
|
---|
| 5004 | + int *set_prevcount;
|
---|
| 5005 | +{
|
---|
| 5006 | + long count = cap->count0;
|
---|
| 5007 | +
|
---|
| 5008 | + /* multiply with cap->opcount the same way as above */
|
---|
| 5009 | + if (cap->opcount != 0)
|
---|
| 5010 | + count = cap->opcount * (count == 0 ? 1 : count);
|
---|
| 5011 | + set_vcount(count, count == 0 ? 1 : count, *set_prevcount);
|
---|
| 5012 | + *set_prevcount = FALSE; /* only set v:prevcount once */
|
---|
| 5013 | +}
|
---|
| 5014 | +#endif
|
---|
| 5015 | +
|
---|
| 5016 | /*
|
---|
| 5017 | * Handle an operator after visual mode or when the movement is finished
|
---|
| 5018 | */
|
---|
| 5019 | @@ -5666,8 +5689,13 @@
|
---|
| 5020 | else if (cmdchar == '#')
|
---|
| 5021 | aux_ptr = (char_u *)(p_magic ? "/?.*~[^$\\" : "/?^$\\");
|
---|
| 5022 | else if (tag_cmd)
|
---|
| 5023 | - /* Don't escape spaces and Tabs in a tag with a backslash */
|
---|
| 5024 | - aux_ptr = (char_u *)"\\|\"\n[";
|
---|
| 5025 | + {
|
---|
| 5026 | + if (curbuf->b_help)
|
---|
| 5027 | + /* ":help" handles unescaped argument */
|
---|
| 5028 | + aux_ptr = (char_u *)"";
|
---|
| 5029 | + else
|
---|
| 5030 | + aux_ptr = (char_u *)"\\|\"\n[";
|
---|
| 5031 | + }
|
---|
| 5032 | else
|
---|
| 5033 | aux_ptr = (char_u *)"\\|\"\n*?[";
|
---|
| 5034 |
|
---|
| 5035 | @@ -8524,7 +8552,7 @@
|
---|
| 5036 | else
|
---|
| 5037 | curwin->w_curswant = 0;
|
---|
| 5038 | /* keep curswant at the column where we wanted to go, not where
|
---|
| 5039 | - we ended; differs if line is too short */
|
---|
| 5040 | + * we ended; differs if line is too short */
|
---|
| 5041 | curwin->w_set_curswant = FALSE;
|
---|
| 5042 | }
|
---|
| 5043 |
|
---|
| 5044 | diff -Naur vim73.orig/src/ops.c vim73/src/ops.c
|
---|
| 5045 | --- vim73.orig/src/ops.c 2010-08-01 08:16:08.000000000 -0400
|
---|
| 5046 | +++ vim73/src/ops.c 2011-01-08 21:01:19.314657721 -0500
|
---|
| 5047 | @@ -1584,9 +1584,11 @@
|
---|
| 5048 | adjust_clip_reg(rp)
|
---|
| 5049 | int *rp;
|
---|
| 5050 | {
|
---|
| 5051 | - /* If no reg. specified, and "unnamed" is in 'clipboard', use '*' reg. */
|
---|
| 5052 | - if (*rp == 0 && clip_unnamed)
|
---|
| 5053 | - *rp = '*';
|
---|
| 5054 | + /* If no reg. specified, and "unnamed" or "unnamedplus" is in 'clipboard',
|
---|
| 5055 | + * use '*' or '+' reg, respectively. "unnamedplus" prevails. */
|
---|
| 5056 | + if (*rp == 0 && clip_unnamed != 0)
|
---|
| 5057 | + *rp = ((clip_unnamed & CLIP_UNNAMED_PLUS) && clip_plus.available)
|
---|
| 5058 | + ? '+' : '*';
|
---|
| 5059 | if (!clip_star.available && *rp == '*')
|
---|
| 5060 | *rp = 0;
|
---|
| 5061 | if (!clip_plus.available && *rp == '+')
|
---|
| 5062 | @@ -2842,6 +2844,9 @@
|
---|
| 5063 | char_u *p;
|
---|
| 5064 | char_u *pnew;
|
---|
| 5065 | struct block_def bd;
|
---|
| 5066 | +#if defined(FEAT_CLIPBOARD) && defined(FEAT_X11)
|
---|
| 5067 | + int did_star = FALSE;
|
---|
| 5068 | +#endif
|
---|
| 5069 |
|
---|
| 5070 | /* check for read-only register */
|
---|
| 5071 | if (oap->regname != 0 && !valid_yank_reg(oap->regname, TRUE))
|
---|
| 5072 | @@ -3115,7 +3120,8 @@
|
---|
| 5073 | */
|
---|
| 5074 | if (clip_star.available
|
---|
| 5075 | && (curr == &(y_regs[STAR_REGISTER])
|
---|
| 5076 | - || (!deleting && oap->regname == 0 && clip_unnamed)))
|
---|
| 5077 | + || (!deleting && oap->regname == 0
|
---|
| 5078 | + && (clip_unnamed & CLIP_UNNAMED))))
|
---|
| 5079 | {
|
---|
| 5080 | if (curr != &(y_regs[STAR_REGISTER]))
|
---|
| 5081 | /* Copy the text from register 0 to the clipboard register. */
|
---|
| 5082 | @@ -3123,6 +3129,9 @@
|
---|
| 5083 |
|
---|
| 5084 | clip_own_selection(&clip_star);
|
---|
| 5085 | clip_gen_set_selection(&clip_star);
|
---|
| 5086 | +# ifdef FEAT_X11
|
---|
| 5087 | + did_star = TRUE;
|
---|
| 5088 | +# endif
|
---|
| 5089 | }
|
---|
| 5090 |
|
---|
| 5091 | # ifdef FEAT_X11
|
---|
| 5092 | @@ -3130,12 +3139,19 @@
|
---|
| 5093 | * If we were yanking to the '+' register, send result to selection.
|
---|
| 5094 | * Also copy to the '*' register, in case auto-select is off.
|
---|
| 5095 | */
|
---|
| 5096 | - else if (clip_plus.available && curr == &(y_regs[PLUS_REGISTER]))
|
---|
| 5097 | + if (clip_plus.available
|
---|
| 5098 | + && (curr == &(y_regs[PLUS_REGISTER])
|
---|
| 5099 | + || (!deleting && oap->regname == 0
|
---|
| 5100 | + && (clip_unnamed & CLIP_UNNAMED_PLUS))))
|
---|
| 5101 | {
|
---|
| 5102 | + if (curr != &(y_regs[PLUS_REGISTER]))
|
---|
| 5103 | + /* Copy the text from register 0 to the clipboard register. */
|
---|
| 5104 | + copy_yank_reg(&(y_regs[PLUS_REGISTER]));
|
---|
| 5105 | +
|
---|
| 5106 | /* No need to copy to * register upon 'unnamed' now - see below */
|
---|
| 5107 | clip_own_selection(&clip_plus);
|
---|
| 5108 | clip_gen_set_selection(&clip_plus);
|
---|
| 5109 | - if (!clip_isautosel())
|
---|
| 5110 | + if (!clip_isautosel() && !did_star)
|
---|
| 5111 | {
|
---|
| 5112 | copy_yank_reg(&(y_regs[STAR_REGISTER]));
|
---|
| 5113 | clip_own_selection(&clip_star);
|
---|
| 5114 | @@ -3979,7 +3995,12 @@
|
---|
| 5115 | for (i = -1; i < NUM_REGISTERS && !got_int; ++i)
|
---|
| 5116 | {
|
---|
| 5117 | name = get_register_name(i);
|
---|
| 5118 | - if (arg != NULL && vim_strchr(arg, name) == NULL)
|
---|
| 5119 | + if (arg != NULL && vim_strchr(arg, name) == NULL
|
---|
| 5120 | +#ifdef ONE_CLIPBOARD
|
---|
| 5121 | + /* Star register and plus register contain the same thing. */
|
---|
| 5122 | + && (name != '*' || vim_strchr(arg, '+') == NULL)
|
---|
| 5123 | +#endif
|
---|
| 5124 | + )
|
---|
| 5125 | continue; /* did not ask for this register */
|
---|
| 5126 |
|
---|
| 5127 | #ifdef FEAT_CLIPBOARD
|
---|
| 5128 | @@ -4153,9 +4174,10 @@
|
---|
| 5129 | int save_undo;
|
---|
| 5130 | {
|
---|
| 5131 | char_u *curr = NULL;
|
---|
| 5132 | + char_u *curr_start = NULL;
|
---|
| 5133 | char_u *cend;
|
---|
| 5134 | char_u *newp;
|
---|
| 5135 | - char_u *spaces; /* number of spaces inserte before a line */
|
---|
| 5136 | + char_u *spaces; /* number of spaces inserted before a line */
|
---|
| 5137 | int endcurr1 = NUL;
|
---|
| 5138 | int endcurr2 = NUL;
|
---|
| 5139 | int currsize = 0; /* size of the current line */
|
---|
| 5140 | @@ -4181,7 +4203,7 @@
|
---|
| 5141 | */
|
---|
| 5142 | for (t = 0; t < count; ++t)
|
---|
| 5143 | {
|
---|
| 5144 | - curr = ml_get((linenr_T)(curwin->w_cursor.lnum + t));
|
---|
| 5145 | + curr = curr_start = ml_get((linenr_T)(curwin->w_cursor.lnum + t));
|
---|
| 5146 | if (insert_space && t > 0)
|
---|
| 5147 | {
|
---|
| 5148 | curr = skipwhite(curr);
|
---|
| 5149 | @@ -4265,10 +4287,10 @@
|
---|
| 5150 | copy_spaces(cend, (size_t)(spaces[t]));
|
---|
| 5151 | }
|
---|
| 5152 | mark_col_adjust(curwin->w_cursor.lnum + t, (colnr_T)0, (linenr_T)-t,
|
---|
| 5153 | - (long)(cend - newp + spaces[t]));
|
---|
| 5154 | + (long)(cend - newp + spaces[t] - (curr - curr_start)));
|
---|
| 5155 | if (t == 0)
|
---|
| 5156 | break;
|
---|
| 5157 | - curr = ml_get((linenr_T)(curwin->w_cursor.lnum + t - 1));
|
---|
| 5158 | + curr = curr_start = ml_get((linenr_T)(curwin->w_cursor.lnum + t - 1));
|
---|
| 5159 | if (insert_space && t > 1)
|
---|
| 5160 | curr = skipwhite(curr);
|
---|
| 5161 | currsize = (int)STRLEN(curr);
|
---|
| 5162 | diff -Naur vim73.orig/src/option.c vim73/src/option.c
|
---|
| 5163 | --- vim73.orig/src/option.c 2010-08-04 14:49:18.000000000 -0400
|
---|
| 5164 | +++ vim73/src/option.c 2011-01-08 21:01:19.282656400 -0500
|
---|
| 5165 | @@ -2740,7 +2740,7 @@
|
---|
| 5166 | (char_u *)&p_wc, PV_NONE,
|
---|
| 5167 | {(char_u *)(long)Ctrl_E, (char_u *)(long)TAB}
|
---|
| 5168 | SCRIPTID_INIT},
|
---|
| 5169 | - {"wildcharm", "wcm", P_NUM|P_VI_DEF,
|
---|
| 5170 | + {"wildcharm", "wcm", P_NUM|P_VI_DEF,
|
---|
| 5171 | (char_u *)&p_wcm, PV_NONE,
|
---|
| 5172 | {(char_u *)0L, (char_u *)0L} SCRIPTID_INIT},
|
---|
| 5173 | {"wildignore", "wig", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
|
---|
| 5174 | @@ -2750,6 +2750,9 @@
|
---|
| 5175 | (char_u *)NULL, PV_NONE,
|
---|
| 5176 | #endif
|
---|
| 5177 | {(char_u *)"", (char_u *)0L} SCRIPTID_INIT},
|
---|
| 5178 | + {"wildignorecase", "wic", P_BOOL|P_VI_DEF,
|
---|
| 5179 | + (char_u *)&p_wic, PV_NONE,
|
---|
| 5180 | + {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
|
---|
| 5181 | {"wildmenu", "wmnu", P_BOOL|P_VI_DEF,
|
---|
| 5182 | #ifdef FEAT_WILDMENU
|
---|
| 5183 | (char_u *)&p_wmnu, PV_NONE,
|
---|
| 5184 | @@ -7304,7 +7307,7 @@
|
---|
| 5185 | static char_u *
|
---|
| 5186 | check_clipboard_option()
|
---|
| 5187 | {
|
---|
| 5188 | - int new_unnamed = FALSE;
|
---|
| 5189 | + int new_unnamed = 0;
|
---|
| 5190 | int new_autoselect = FALSE;
|
---|
| 5191 | int new_autoselectml = FALSE;
|
---|
| 5192 | int new_html = FALSE;
|
---|
| 5193 | @@ -7316,9 +7319,15 @@
|
---|
| 5194 | {
|
---|
| 5195 | if (STRNCMP(p, "unnamed", 7) == 0 && (p[7] == ',' || p[7] == NUL))
|
---|
| 5196 | {
|
---|
| 5197 | - new_unnamed = TRUE;
|
---|
| 5198 | + new_unnamed |= CLIP_UNNAMED;
|
---|
| 5199 | p += 7;
|
---|
| 5200 | }
|
---|
| 5201 | + else if (STRNCMP(p, "unnamedplus", 11) == 0
|
---|
| 5202 | + && (p[11] == ',' || p[11] == NUL))
|
---|
| 5203 | + {
|
---|
| 5204 | + new_unnamed |= CLIP_UNNAMED_PLUS;
|
---|
| 5205 | + p += 11;
|
---|
| 5206 | + }
|
---|
| 5207 | else if (STRNCMP(p, "autoselect", 10) == 0
|
---|
| 5208 | && (p[10] == ',' || p[10] == NUL))
|
---|
| 5209 | {
|
---|
| 5210 | @@ -9756,6 +9765,9 @@
|
---|
| 5211 | #ifdef FEAT_SCROLLBIND
|
---|
| 5212 | to->wo_scb = from->wo_scb;
|
---|
| 5213 | #endif
|
---|
| 5214 | +#ifdef FEAT_CURSORBIND
|
---|
| 5215 | + to->wo_crb = from->wo_crb;
|
---|
| 5216 | +#endif
|
---|
| 5217 | #ifdef FEAT_SPELL
|
---|
| 5218 | to->wo_spell = from->wo_spell;
|
---|
| 5219 | #endif
|
---|
| 5220 | @@ -10011,7 +10023,7 @@
|
---|
| 5221 | buf->b_p_smc = p_smc;
|
---|
| 5222 | #endif
|
---|
| 5223 | #ifdef FEAT_SPELL
|
---|
| 5224 | - buf->b_s.b_p_spc = vim_strsave(p_spf);
|
---|
| 5225 | + buf->b_s.b_p_spc = vim_strsave(p_spc);
|
---|
| 5226 | (void)compile_cap_prog(&buf->b_s);
|
---|
| 5227 | buf->b_s.b_p_spf = vim_strsave(p_spf);
|
---|
| 5228 | buf->b_s.b_p_spl = vim_strsave(p_spl);
|
---|
| 5229 | diff -Naur vim73.orig/src/option.h vim73/src/option.h
|
---|
| 5230 | --- vim73.orig/src/option.h 2010-07-25 10:15:02.000000000 -0400
|
---|
| 5231 | +++ vim73/src/option.h 2011-01-08 21:01:19.246657477 -0500
|
---|
| 5232 | @@ -872,6 +872,7 @@
|
---|
| 5233 | EXTERN char_u *p_ww; /* 'whichwrap' */
|
---|
| 5234 | EXTERN long p_wc; /* 'wildchar' */
|
---|
| 5235 | EXTERN long p_wcm; /* 'wildcharm' */
|
---|
| 5236 | +EXTERN long p_wic; /* 'wildignorecase' */
|
---|
| 5237 | EXTERN char_u *p_wim; /* 'wildmode' */
|
---|
| 5238 | #ifdef FEAT_WILDMENU
|
---|
| 5239 | EXTERN int p_wmnu; /* 'wildmenu' */
|
---|
| 5240 | diff -Naur vim73.orig/src/os_macosx.m vim73/src/os_macosx.m
|
---|
| 5241 | --- vim73.orig/src/os_macosx.m 2010-08-15 06:56:50.000000000 -0400
|
---|
| 5242 | +++ vim73/src/os_macosx.m 2011-01-08 21:01:18.806655841 -0500
|
---|
| 5243 | @@ -15,6 +15,10 @@
|
---|
| 5244 | Error: MACOS 9 is no longer supported in Vim 7
|
---|
| 5245 | #endif
|
---|
| 5246 |
|
---|
| 5247 | +/* Avoid a conflict for the definition of Boolean between Mac header files and
|
---|
| 5248 | + * X11 header files. */
|
---|
| 5249 | +#define NO_X11_INCLUDES
|
---|
| 5250 | +
|
---|
| 5251 | #include "vim.h"
|
---|
| 5252 | #import <Cocoa/Cocoa.h>
|
---|
| 5253 |
|
---|
| 5254 | diff -Naur vim73.orig/src/os_msdos.c vim73/src/os_msdos.c
|
---|
| 5255 | --- vim73.orig/src/os_msdos.c 2010-05-15 07:04:07.000000000 -0400
|
---|
| 5256 | +++ vim73/src/os_msdos.c 2011-01-08 21:01:19.382657751 -0500
|
---|
| 5257 | @@ -21,7 +21,6 @@
|
---|
| 5258 | * Some functions are also used for Win16 (MS-Windows 3.1).
|
---|
| 5259 | */
|
---|
| 5260 |
|
---|
| 5261 | -#include "vimio.h"
|
---|
| 5262 | #include "vim.h"
|
---|
| 5263 |
|
---|
| 5264 | #include <conio.h>
|
---|
| 5265 | diff -Naur vim73.orig/src/os_mswin.c vim73/src/os_mswin.c
|
---|
| 5266 | --- vim73.orig/src/os_mswin.c 2010-07-27 15:39:05.000000000 -0400
|
---|
| 5267 | +++ vim73/src/os_mswin.c 2011-01-08 21:01:19.434656677 -0500
|
---|
| 5268 | @@ -22,7 +22,6 @@
|
---|
| 5269 | # endif
|
---|
| 5270 | #endif
|
---|
| 5271 |
|
---|
| 5272 | -#include "vimio.h"
|
---|
| 5273 | #include "vim.h"
|
---|
| 5274 |
|
---|
| 5275 | #ifdef WIN16
|
---|
| 5276 | @@ -31,7 +30,6 @@
|
---|
| 5277 | # include <string.h>
|
---|
| 5278 | #endif
|
---|
| 5279 | #include <sys/types.h>
|
---|
| 5280 | -#include <errno.h>
|
---|
| 5281 | #include <signal.h>
|
---|
| 5282 | #include <limits.h>
|
---|
| 5283 | #include <process.h>
|
---|
| 5284 | @@ -817,7 +815,11 @@
|
---|
| 5285 | BOOL fRunTimeLinkSuccess = FALSE;
|
---|
| 5286 |
|
---|
| 5287 | // Get a handle to the DLL module.
|
---|
| 5288 | +# ifdef WIN16
|
---|
| 5289 | hinstLib = LoadLibrary(libname);
|
---|
| 5290 | +# else
|
---|
| 5291 | + hinstLib = vimLoadLib(libname);
|
---|
| 5292 | +# endif
|
---|
| 5293 |
|
---|
| 5294 | // If the handle is valid, try to get the function address.
|
---|
| 5295 | if (hinstLib != NULL)
|
---|
| 5296 | diff -Naur vim73.orig/src/os_unix.c vim73/src/os_unix.c
|
---|
| 5297 | --- vim73.orig/src/os_unix.c 2010-08-08 09:14:04.000000000 -0400
|
---|
| 5298 | +++ vim73/src/os_unix.c 2011-01-08 21:01:19.358658475 -0500
|
---|
| 5299 | @@ -1123,6 +1123,30 @@
|
---|
| 5300 | }
|
---|
| 5301 | #endif
|
---|
| 5302 |
|
---|
| 5303 | +# if defined(FEAT_CLIPBOARD) && defined(FEAT_X11)
|
---|
| 5304 | +static void loose_clipboard __ARGS((void));
|
---|
| 5305 | +
|
---|
| 5306 | +/*
|
---|
| 5307 | + * Called when Vim is going to sleep or execute a shell command.
|
---|
| 5308 | + * We can't respond to requests for the X selections. Lose them, otherwise
|
---|
| 5309 | + * other applications will hang. But first copy the text to cut buffer 0.
|
---|
| 5310 | + */
|
---|
| 5311 | + static void
|
---|
| 5312 | +loose_clipboard()
|
---|
| 5313 | +{
|
---|
| 5314 | + if (clip_star.owned || clip_plus.owned)
|
---|
| 5315 | + {
|
---|
| 5316 | + x11_export_final_selection();
|
---|
| 5317 | + if (clip_star.owned)
|
---|
| 5318 | + clip_lose_selection(&clip_star);
|
---|
| 5319 | + if (clip_plus.owned)
|
---|
| 5320 | + clip_lose_selection(&clip_plus);
|
---|
| 5321 | + if (x11_display != NULL)
|
---|
| 5322 | + XFlush(x11_display);
|
---|
| 5323 | + }
|
---|
| 5324 | +}
|
---|
| 5325 | +#endif
|
---|
| 5326 | +
|
---|
| 5327 | /*
|
---|
| 5328 | * If the machine has job control, use it to suspend the program,
|
---|
| 5329 | * otherwise fake it by starting a new shell.
|
---|
| 5330 | @@ -1137,19 +1161,7 @@
|
---|
| 5331 | out_flush(); /* needed to disable mouse on some systems */
|
---|
| 5332 |
|
---|
| 5333 | # if defined(FEAT_CLIPBOARD) && defined(FEAT_X11)
|
---|
| 5334 | - /* Since we are going to sleep, we can't respond to requests for the X
|
---|
| 5335 | - * selections. Lose them, otherwise other applications will hang. But
|
---|
| 5336 | - * first copy the text to cut buffer 0. */
|
---|
| 5337 | - if (clip_star.owned || clip_plus.owned)
|
---|
| 5338 | - {
|
---|
| 5339 | - x11_export_final_selection();
|
---|
| 5340 | - if (clip_star.owned)
|
---|
| 5341 | - clip_lose_selection(&clip_star);
|
---|
| 5342 | - if (clip_plus.owned)
|
---|
| 5343 | - clip_lose_selection(&clip_plus);
|
---|
| 5344 | - if (x11_display != NULL)
|
---|
| 5345 | - XFlush(x11_display);
|
---|
| 5346 | - }
|
---|
| 5347 | + loose_clipboard();
|
---|
| 5348 | # endif
|
---|
| 5349 |
|
---|
| 5350 | # if defined(_REENTRANT) && defined(SIGCONT)
|
---|
| 5351 | @@ -1726,6 +1738,11 @@
|
---|
| 5352 | }
|
---|
| 5353 | if (x11_window == 0 || x11_display == NULL)
|
---|
| 5354 | return (result = FAIL);
|
---|
| 5355 | +
|
---|
| 5356 | +# ifdef FEAT_EVAL
|
---|
| 5357 | + set_vim_var_nr(VV_WINDOWID, (long)x11_window);
|
---|
| 5358 | +# endif
|
---|
| 5359 | +
|
---|
| 5360 | return (result = OK);
|
---|
| 5361 | }
|
---|
| 5362 |
|
---|
| 5363 | @@ -3706,6 +3723,10 @@
|
---|
| 5364 | if (options & SHELL_COOKED)
|
---|
| 5365 | settmode(TMODE_COOK); /* set to normal mode */
|
---|
| 5366 |
|
---|
| 5367 | +# if defined(FEAT_CLIPBOARD) && defined(FEAT_X11)
|
---|
| 5368 | + loose_clipboard();
|
---|
| 5369 | +# endif
|
---|
| 5370 | +
|
---|
| 5371 | # ifdef __EMX__
|
---|
| 5372 | if (cmd == NULL)
|
---|
| 5373 | x = system(""); /* this starts an interactive shell in emx */
|
---|
| 5374 | @@ -3814,13 +3835,17 @@
|
---|
| 5375 | # endif
|
---|
| 5376 | int did_settmode = FALSE; /* settmode(TMODE_RAW) called */
|
---|
| 5377 |
|
---|
| 5378 | + newcmd = vim_strsave(p_sh);
|
---|
| 5379 | + if (newcmd == NULL) /* out of memory */
|
---|
| 5380 | + goto error;
|
---|
| 5381 | +
|
---|
| 5382 | out_flush();
|
---|
| 5383 | if (options & SHELL_COOKED)
|
---|
| 5384 | settmode(TMODE_COOK); /* set to normal mode */
|
---|
| 5385 |
|
---|
| 5386 | - newcmd = vim_strsave(p_sh);
|
---|
| 5387 | - if (newcmd == NULL) /* out of memory */
|
---|
| 5388 | - goto error;
|
---|
| 5389 | +# if defined(FEAT_CLIPBOARD) && defined(FEAT_X11)
|
---|
| 5390 | + loose_clipboard();
|
---|
| 5391 | +# endif
|
---|
| 5392 |
|
---|
| 5393 | /*
|
---|
| 5394 | * Do this loop twice:
|
---|
| 5395 | @@ -4148,7 +4173,6 @@
|
---|
| 5396 | # ifdef FEAT_GUI
|
---|
| 5397 | if (pty_master_fd >= 0)
|
---|
| 5398 | {
|
---|
| 5399 | - close(pty_slave_fd); /* close slave side of pty */
|
---|
| 5400 | fromshell_fd = pty_master_fd;
|
---|
| 5401 | toshell_fd = dup(pty_master_fd);
|
---|
| 5402 | }
|
---|
| 5403 | @@ -4430,7 +4454,7 @@
|
---|
| 5404 | ++noread_cnt;
|
---|
| 5405 | while (RealWaitForChar(fromshell_fd, 10L, NULL))
|
---|
| 5406 | {
|
---|
| 5407 | - len = read(fromshell_fd, (char *)buffer
|
---|
| 5408 | + len = read_eintr(fromshell_fd, buffer
|
---|
| 5409 | # ifdef FEAT_MBYTE
|
---|
| 5410 | + buffer_off, (size_t)(BUFLEN - buffer_off)
|
---|
| 5411 | # else
|
---|
| 5412 | @@ -4617,6 +4641,14 @@
|
---|
| 5413 | break;
|
---|
| 5414 | }
|
---|
| 5415 |
|
---|
| 5416 | +# ifdef FEAT_GUI
|
---|
| 5417 | + /* Close slave side of pty. Only do this after the child has
|
---|
| 5418 | + * exited, otherwise the child may hang when it tries to write on
|
---|
| 5419 | + * the pty. */
|
---|
| 5420 | + if (pty_master_fd >= 0)
|
---|
| 5421 | + close(pty_slave_fd);
|
---|
| 5422 | +# endif
|
---|
| 5423 | +
|
---|
| 5424 | /* Make sure the child that writes to the external program is
|
---|
| 5425 | * dead. */
|
---|
| 5426 | if (wpid > 0)
|
---|
| 5427 | diff -Naur vim73.orig/src/os_win16.c vim73/src/os_win16.c
|
---|
| 5428 | --- vim73.orig/src/os_win16.c 2010-06-26 00:03:31.000000000 -0400
|
---|
| 5429 | +++ vim73/src/os_win16.c 2011-01-08 21:01:19.434656677 -0500
|
---|
| 5430 | @@ -20,13 +20,11 @@
|
---|
| 5431 | # pragma warn -obs
|
---|
| 5432 | #endif
|
---|
| 5433 |
|
---|
| 5434 | -#include "vimio.h"
|
---|
| 5435 | #include "vim.h"
|
---|
| 5436 |
|
---|
| 5437 | #include <dos.h>
|
---|
| 5438 | #include <string.h>
|
---|
| 5439 | #include <sys/types.h>
|
---|
| 5440 | -#include <errno.h>
|
---|
| 5441 | #include <signal.h>
|
---|
| 5442 | #include <limits.h>
|
---|
| 5443 | #include <process.h>
|
---|
| 5444 | diff -Naur vim73.orig/src/os_win32.c vim73/src/os_win32.c
|
---|
| 5445 | --- vim73.orig/src/os_win32.c 2010-07-14 10:49:36.000000000 -0400
|
---|
| 5446 | +++ vim73/src/os_win32.c 2011-01-08 21:01:19.438656953 -0500
|
---|
| 5447 | @@ -20,7 +20,6 @@
|
---|
| 5448 | * Roger Knobbe <rogerk@wonderware.com> did the initial port of Vim 3.0.
|
---|
| 5449 | */
|
---|
| 5450 |
|
---|
| 5451 | -#include "vimio.h"
|
---|
| 5452 | #include "vim.h"
|
---|
| 5453 |
|
---|
| 5454 | #ifdef FEAT_MZSCHEME
|
---|
| 5455 | @@ -28,7 +27,6 @@
|
---|
| 5456 | #endif
|
---|
| 5457 |
|
---|
| 5458 | #include <sys/types.h>
|
---|
| 5459 | -#include <errno.h>
|
---|
| 5460 | #include <signal.h>
|
---|
| 5461 | #include <limits.h>
|
---|
| 5462 | #include <process.h>
|
---|
| 5463 | @@ -206,42 +204,73 @@
|
---|
| 5464 | static int suppress_winsize = 1; /* don't fiddle with console */
|
---|
| 5465 | #endif
|
---|
| 5466 |
|
---|
| 5467 | +static char_u *exe_path = NULL;
|
---|
| 5468 | +
|
---|
| 5469 | static void
|
---|
| 5470 | get_exe_name(void)
|
---|
| 5471 | {
|
---|
| 5472 | - char temp[256];
|
---|
| 5473 | - static int did_set_PATH = FALSE;
|
---|
| 5474 | + /* Maximum length of $PATH is more than MAXPATHL. 8191 is often mentioned
|
---|
| 5475 | + * as the maximum length that works (plus a NUL byte). */
|
---|
| 5476 | +#define MAX_ENV_PATH_LEN 8192
|
---|
| 5477 | + char temp[MAX_ENV_PATH_LEN];
|
---|
| 5478 | + char_u *p;
|
---|
| 5479 |
|
---|
| 5480 | if (exe_name == NULL)
|
---|
| 5481 | {
|
---|
| 5482 | /* store the name of the executable, may be used for $VIM */
|
---|
| 5483 | - GetModuleFileName(NULL, temp, 255);
|
---|
| 5484 | + GetModuleFileName(NULL, temp, MAX_ENV_PATH_LEN - 1);
|
---|
| 5485 | if (*temp != NUL)
|
---|
| 5486 | exe_name = FullName_save((char_u *)temp, FALSE);
|
---|
| 5487 | }
|
---|
| 5488 |
|
---|
| 5489 | - if (!did_set_PATH && exe_name != NULL)
|
---|
| 5490 | + if (exe_path == NULL && exe_name != NULL)
|
---|
| 5491 | {
|
---|
| 5492 | - char_u *p;
|
---|
| 5493 | - char_u *newpath;
|
---|
| 5494 | -
|
---|
| 5495 | - /* Append our starting directory to $PATH, so that when doing "!xxd"
|
---|
| 5496 | - * it's found in our starting directory. Needed because SearchPath()
|
---|
| 5497 | - * also looks there. */
|
---|
| 5498 | - p = mch_getenv("PATH");
|
---|
| 5499 | - newpath = alloc((unsigned)(STRLEN(p) + STRLEN(exe_name) + 2));
|
---|
| 5500 | - if (newpath != NULL)
|
---|
| 5501 | - {
|
---|
| 5502 | - STRCPY(newpath, p);
|
---|
| 5503 | - STRCAT(newpath, ";");
|
---|
| 5504 | - vim_strncpy(newpath + STRLEN(newpath), exe_name,
|
---|
| 5505 | - gettail_sep(exe_name) - exe_name);
|
---|
| 5506 | - vim_setenv((char_u *)"PATH", newpath);
|
---|
| 5507 | - vim_free(newpath);
|
---|
| 5508 | + exe_path = vim_strnsave(exe_name,
|
---|
| 5509 | + (int)(gettail_sep(exe_name) - exe_name));
|
---|
| 5510 | + if (exe_path != NULL)
|
---|
| 5511 | + {
|
---|
| 5512 | + /* Append our starting directory to $PATH, so that when doing
|
---|
| 5513 | + * "!xxd" it's found in our starting directory. Needed because
|
---|
| 5514 | + * SearchPath() also looks there. */
|
---|
| 5515 | + p = mch_getenv("PATH");
|
---|
| 5516 | + if (p == NULL
|
---|
| 5517 | + || STRLEN(p) + STRLEN(exe_path) + 2 < MAX_ENV_PATH_LEN)
|
---|
| 5518 | + {
|
---|
| 5519 | + if (p == NULL || *p == NUL)
|
---|
| 5520 | + temp[0] = NUL;
|
---|
| 5521 | + else
|
---|
| 5522 | + {
|
---|
| 5523 | + STRCPY(temp, p);
|
---|
| 5524 | + STRCAT(temp, ";");
|
---|
| 5525 | + }
|
---|
| 5526 | + STRCAT(temp, exe_path);
|
---|
| 5527 | + vim_setenv((char_u *)"PATH", temp);
|
---|
| 5528 | + }
|
---|
| 5529 | }
|
---|
| 5530 | + }
|
---|
| 5531 | +}
|
---|
| 5532 | +
|
---|
| 5533 | +/*
|
---|
| 5534 | + * Load library "name".
|
---|
| 5535 | + */
|
---|
| 5536 | + HINSTANCE
|
---|
| 5537 | +vimLoadLib(char *name)
|
---|
| 5538 | +{
|
---|
| 5539 | + HINSTANCE dll = NULL;
|
---|
| 5540 | + char old_dir[MAXPATHL];
|
---|
| 5541 |
|
---|
| 5542 | - did_set_PATH = TRUE;
|
---|
| 5543 | + if (exe_path == NULL)
|
---|
| 5544 | + get_exe_name();
|
---|
| 5545 | + if (exe_path != NULL && mch_dirname(old_dir, MAXPATHL) == OK)
|
---|
| 5546 | + {
|
---|
| 5547 | + /* Change directory to where the executable is, both to make sure we
|
---|
| 5548 | + * find a .dll there and to avoid looking for a .dll in the current
|
---|
| 5549 | + * directory. */
|
---|
| 5550 | + mch_chdir(exe_path);
|
---|
| 5551 | + dll = LoadLibrary(name);
|
---|
| 5552 | + mch_chdir(old_dir);
|
---|
| 5553 | }
|
---|
| 5554 | + return dll;
|
---|
| 5555 | }
|
---|
| 5556 |
|
---|
| 5557 | #if defined(DYNAMIC_GETTEXT) || defined(PROTO)
|
---|
| 5558 | @@ -254,7 +283,7 @@
|
---|
| 5559 | static char *null_libintl_bindtextdomain(const char *, const char *);
|
---|
| 5560 | static char *null_libintl_bind_textdomain_codeset(const char *, const char *);
|
---|
| 5561 |
|
---|
| 5562 | -static HINSTANCE hLibintlDLL = 0;
|
---|
| 5563 | +static HINSTANCE hLibintlDLL = NULL;
|
---|
| 5564 | char *(*dyn_libintl_gettext)(const char *) = null_libintl_gettext;
|
---|
| 5565 | char *(*dyn_libintl_textdomain)(const char *) = null_libintl_textdomain;
|
---|
| 5566 | char *(*dyn_libintl_bindtextdomain)(const char *, const char *)
|
---|
| 5567 | @@ -282,26 +311,16 @@
|
---|
| 5568 | if (hLibintlDLL)
|
---|
| 5569 | return 1;
|
---|
| 5570 | /* Load gettext library (libintl.dll) */
|
---|
| 5571 | - hLibintlDLL = LoadLibrary(libname != NULL ? libname : GETTEXT_DLL);
|
---|
| 5572 | + hLibintlDLL = vimLoadLib(libname != NULL ? libname : GETTEXT_DLL);
|
---|
| 5573 | if (!hLibintlDLL)
|
---|
| 5574 | {
|
---|
| 5575 | - char_u dirname[_MAX_PATH];
|
---|
| 5576 | -
|
---|
| 5577 | - /* Try using the path from gvim.exe to find the .dll there. */
|
---|
| 5578 | - get_exe_name();
|
---|
| 5579 | - STRCPY(dirname, exe_name);
|
---|
| 5580 | - STRCPY(gettail(dirname), GETTEXT_DLL);
|
---|
| 5581 | - hLibintlDLL = LoadLibrary((char *)dirname);
|
---|
| 5582 | - if (!hLibintlDLL)
|
---|
| 5583 | + if (p_verbose > 0)
|
---|
| 5584 | {
|
---|
| 5585 | - if (p_verbose > 0)
|
---|
| 5586 | - {
|
---|
| 5587 | - verbose_enter();
|
---|
| 5588 | - EMSG2(_(e_loadlib), GETTEXT_DLL);
|
---|
| 5589 | - verbose_leave();
|
---|
| 5590 | - }
|
---|
| 5591 | - return 0;
|
---|
| 5592 | + verbose_enter();
|
---|
| 5593 | + EMSG2(_(e_loadlib), GETTEXT_DLL);
|
---|
| 5594 | + verbose_leave();
|
---|
| 5595 | }
|
---|
| 5596 | + return 0;
|
---|
| 5597 | }
|
---|
| 5598 | for (i = 0; libintl_entry[i].name != NULL
|
---|
| 5599 | && libintl_entry[i].ptr != NULL; ++i)
|
---|
| 5600 | @@ -430,7 +449,7 @@
|
---|
| 5601 | * Seems like a lot of overhead to load/unload ADVAPI32.DLL each
|
---|
| 5602 | * time we verify security...
|
---|
| 5603 | */
|
---|
| 5604 | - advapi_lib = LoadLibrary("ADVAPI32.DLL");
|
---|
| 5605 | + advapi_lib = vimLoadLib("ADVAPI32.DLL");
|
---|
| 5606 | if (advapi_lib != NULL)
|
---|
| 5607 | {
|
---|
| 5608 | pSetNamedSecurityInfo = (PSNSECINFO)GetProcAddress(advapi_lib,
|
---|
| 5609 | @@ -1615,6 +1634,35 @@
|
---|
| 5610 | return TRUE;
|
---|
| 5611 | }
|
---|
| 5612 |
|
---|
| 5613 | +#if ((defined(__MINGW32__) || defined (__CYGWIN32__)) && \
|
---|
| 5614 | + __MSVCRT_VERSION__ >= 0x800) || (defined(_MSC_VER) && _MSC_VER >= 1400)
|
---|
| 5615 | +/*
|
---|
| 5616 | + * Bad parameter handler.
|
---|
| 5617 | + *
|
---|
| 5618 | + * Certain MS CRT functions will intentionally crash when passed invalid
|
---|
| 5619 | + * parameters to highlight possible security holes. Setting this function as
|
---|
| 5620 | + * the bad parameter handler will prevent the crash.
|
---|
| 5621 | + *
|
---|
| 5622 | + * In debug builds the parameters contain CRT information that might help track
|
---|
| 5623 | + * down the source of a problem, but in non-debug builds the arguments are all
|
---|
| 5624 | + * NULL/0. Debug builds will also produce assert dialogs from the CRT, it is
|
---|
| 5625 | + * worth allowing these to make debugging of issues easier.
|
---|
| 5626 | + */
|
---|
| 5627 | + static void
|
---|
| 5628 | +bad_param_handler(const wchar_t *expression,
|
---|
| 5629 | + const wchar_t *function,
|
---|
| 5630 | + const wchar_t *file,
|
---|
| 5631 | + unsigned int line,
|
---|
| 5632 | + uintptr_t pReserved)
|
---|
| 5633 | +{
|
---|
| 5634 | +}
|
---|
| 5635 | +
|
---|
| 5636 | +# define SET_INVALID_PARAM_HANDLER \
|
---|
| 5637 | + ((void)_set_invalid_parameter_handler(bad_param_handler))
|
---|
| 5638 | +#else
|
---|
| 5639 | +# define SET_INVALID_PARAM_HANDLER
|
---|
| 5640 | +#endif
|
---|
| 5641 | +
|
---|
| 5642 | #ifdef FEAT_GUI_W32
|
---|
| 5643 |
|
---|
| 5644 | /*
|
---|
| 5645 | @@ -1627,6 +1675,9 @@
|
---|
| 5646 | extern int _fmode;
|
---|
| 5647 | #endif
|
---|
| 5648 |
|
---|
| 5649 | + /* Silently handle invalid parameters to CRT functions */
|
---|
| 5650 | + SET_INVALID_PARAM_HANDLER;
|
---|
| 5651 | +
|
---|
| 5652 | /* Let critical errors result in a failure, not in a dialog box. Required
|
---|
| 5653 | * for the timestamp test to work on removed floppies. */
|
---|
| 5654 | SetErrorMode(SEM_FAILCRITICALERRORS);
|
---|
| 5655 | @@ -2103,6 +2154,9 @@
|
---|
| 5656 | extern int _fmode;
|
---|
| 5657 | #endif
|
---|
| 5658 |
|
---|
| 5659 | + /* Silently handle invalid parameters to CRT functions */
|
---|
| 5660 | + SET_INVALID_PARAM_HANDLER;
|
---|
| 5661 | +
|
---|
| 5662 | /* Let critical errors result in a failure, not in a dialog box. Required
|
---|
| 5663 | * for the timestamp test to work on removed floppies. */
|
---|
| 5664 | SetErrorMode(SEM_FAILCRITICALERRORS);
|
---|
| 5665 | @@ -2273,12 +2327,14 @@
|
---|
| 5666 | int len)
|
---|
| 5667 | {
|
---|
| 5668 | char szTrueName[_MAX_PATH + 2];
|
---|
| 5669 | + char szTrueNameTemp[_MAX_PATH + 2];
|
---|
| 5670 | char *ptrue, *ptruePrev;
|
---|
| 5671 | char *porig, *porigPrev;
|
---|
| 5672 | int flen;
|
---|
| 5673 | WIN32_FIND_DATA fb;
|
---|
| 5674 | HANDLE hFind;
|
---|
| 5675 | int c;
|
---|
| 5676 | + int slen;
|
---|
| 5677 |
|
---|
| 5678 | flen = (int)STRLEN(name);
|
---|
| 5679 | if (flen == 0 || flen > _MAX_PATH)
|
---|
| 5680 | @@ -2323,12 +2379,19 @@
|
---|
| 5681 | }
|
---|
| 5682 | *ptrue = NUL;
|
---|
| 5683 |
|
---|
| 5684 | + /* To avoid a slow failure append "\*" when searching a directory,
|
---|
| 5685 | + * server or network share. */
|
---|
| 5686 | + STRCPY(szTrueNameTemp, szTrueName);
|
---|
| 5687 | + slen = (int)strlen(szTrueNameTemp);
|
---|
| 5688 | + if (*porig == psepc && slen + 2 < _MAX_PATH)
|
---|
| 5689 | + STRCPY(szTrueNameTemp + slen, "\\*");
|
---|
| 5690 | +
|
---|
| 5691 | /* Skip "", "." and "..". */
|
---|
| 5692 | if (ptrue > ptruePrev
|
---|
| 5693 | && (ptruePrev[0] != '.'
|
---|
| 5694 | || (ptruePrev[1] != NUL
|
---|
| 5695 | && (ptruePrev[1] != '.' || ptruePrev[2] != NUL)))
|
---|
| 5696 | - && (hFind = FindFirstFile(szTrueName, &fb))
|
---|
| 5697 | + && (hFind = FindFirstFile(szTrueNameTemp, &fb))
|
---|
| 5698 | != INVALID_HANDLE_VALUE)
|
---|
| 5699 | {
|
---|
| 5700 | c = *porig;
|
---|
| 5701 | @@ -3120,9 +3183,10 @@
|
---|
| 5702 | * It's nicer to run a filter command in a minimized window, but in
|
---|
| 5703 | * Windows 95 this makes the command MUCH slower. We can't do it under
|
---|
| 5704 | * Win32s either as it stops the synchronous spawn workaround working.
|
---|
| 5705 | + * Don't activate the window to keep focus on Vim.
|
---|
| 5706 | */
|
---|
| 5707 | if ((options & SHELL_DOOUT) && !mch_windows95() && !gui_is_win32s())
|
---|
| 5708 | - si.wShowWindow = SW_SHOWMINIMIZED;
|
---|
| 5709 | + si.wShowWindow = SW_SHOWMINNOACTIVE;
|
---|
| 5710 | else
|
---|
| 5711 | si.wShowWindow = SW_SHOWNORMAL;
|
---|
| 5712 | si.cbReserved2 = 0;
|
---|
| 5713 | diff -Naur vim73.orig/src/popupmnu.c vim73/src/popupmnu.c
|
---|
| 5714 | --- vim73.orig/src/popupmnu.c 2010-08-08 09:14:58.000000000 -0400
|
---|
| 5715 | +++ vim73/src/popupmnu.c 2011-01-08 21:01:19.046656594 -0500
|
---|
| 5716 | @@ -558,8 +558,11 @@
|
---|
| 5717 | win_T *curwin_save = curwin;
|
---|
| 5718 | int res = OK;
|
---|
| 5719 |
|
---|
| 5720 | - /* Open a preview window. 3 lines by default. */
|
---|
| 5721 | + /* Open a preview window. 3 lines by default. Prefer
|
---|
| 5722 | + * 'previewheight' if set and smaller. */
|
---|
| 5723 | g_do_tagpreview = 3;
|
---|
| 5724 | + if (p_pvh > 0 && p_pvh < g_do_tagpreview)
|
---|
| 5725 | + g_do_tagpreview = p_pvh;
|
---|
| 5726 | resized = prepare_tagpreview(FALSE);
|
---|
| 5727 | g_do_tagpreview = 0;
|
---|
| 5728 |
|
---|
| 5729 | diff -Naur vim73.orig/src/proto/fileio.pro vim73/src/proto/fileio.pro
|
---|
| 5730 | --- vim73.orig/src/proto/fileio.pro 2010-08-15 08:30:28.000000000 -0400
|
---|
| 5731 | +++ vim73/src/proto/fileio.pro 2011-01-08 21:01:19.354659886 -0500
|
---|
| 5732 | @@ -54,4 +54,6 @@
|
---|
| 5733 | int match_file_pat __ARGS((char_u *pattern, regprog_T *prog, char_u *fname, char_u *sfname, char_u *tail, int allow_dirs));
|
---|
| 5734 | int match_file_list __ARGS((char_u *list, char_u *sfname, char_u *ffname));
|
---|
| 5735 | char_u *file_pat_to_reg_pat __ARGS((char_u *pat, char_u *pat_end, char *allow_dirs, int no_bslash));
|
---|
| 5736 | +long read_eintr __ARGS((int fd, void *buf, size_t bufsize));
|
---|
| 5737 | +long write_eintr __ARGS((int fd, void *buf, size_t bufsize));
|
---|
| 5738 | /* vim: set ft=c : */
|
---|
| 5739 | diff -Naur vim73.orig/src/proto/getchar.pro vim73/src/proto/getchar.pro
|
---|
| 5740 | --- vim73.orig/src/proto/getchar.pro 2010-08-15 08:30:29.000000000 -0400
|
---|
| 5741 | +++ vim73/src/proto/getchar.pro 2011-01-08 21:01:18.918658776 -0500
|
---|
| 5742 | @@ -51,6 +51,7 @@
|
---|
| 5743 | int get_map_mode __ARGS((char_u **cmdp, int forceit));
|
---|
| 5744 | void map_clear __ARGS((char_u *cmdp, char_u *arg, int forceit, int abbr));
|
---|
| 5745 | void map_clear_int __ARGS((buf_T *buf, int mode, int local, int abbr));
|
---|
| 5746 | +char_u *map_mode_to_chars __ARGS((int mode));
|
---|
| 5747 | int map_to_exists __ARGS((char_u *str, char_u *modechars, int abbr));
|
---|
| 5748 | int map_to_exists_mode __ARGS((char_u *rhs, int mode, int abbr));
|
---|
| 5749 | char_u *set_context_in_map_cmd __ARGS((expand_T *xp, char_u *cmd, char_u *arg, int forceit, int isabbrev, int isunmap, cmdidx_T cmdidx));
|
---|
| 5750 | @@ -61,7 +62,7 @@
|
---|
| 5751 | int makemap __ARGS((FILE *fd, buf_T *buf));
|
---|
| 5752 | int put_escstr __ARGS((FILE *fd, char_u *strstart, int what));
|
---|
| 5753 | void check_map_keycodes __ARGS((void));
|
---|
| 5754 | -char_u *check_map __ARGS((char_u *keys, int mode, int exact, int ign_mod, int abbr));
|
---|
| 5755 | +char_u *check_map __ARGS((char_u *keys, int mode, int exact, int ign_mod, int abbr, mapblock_T **mp_ptr, int *local_ptr));
|
---|
| 5756 | void init_mappings __ARGS((void));
|
---|
| 5757 | void add_map __ARGS((char_u *map, int mode));
|
---|
| 5758 | /* vim: set ft=c : */
|
---|
| 5759 | diff -Naur vim73.orig/src/proto/message.pro vim73/src/proto/message.pro
|
---|
| 5760 | --- vim73.orig/src/proto/message.pro 2010-08-15 08:30:41.000000000 -0400
|
---|
| 5761 | +++ vim73/src/proto/message.pro 2011-01-08 21:01:18.918658776 -0500
|
---|
| 5762 | @@ -33,6 +33,7 @@
|
---|
| 5763 | int msg_outtrans_len_attr __ARGS((char_u *msgstr, int len, int attr));
|
---|
| 5764 | void msg_make __ARGS((char_u *arg));
|
---|
| 5765 | int msg_outtrans_special __ARGS((char_u *strstart, int from));
|
---|
| 5766 | +char_u *str2special_save __ARGS((char_u *str, int is_lhs));
|
---|
| 5767 | char_u *str2special __ARGS((char_u **sp, int from));
|
---|
| 5768 | void str2specialbuf __ARGS((char_u *sp, char_u *buf, int len));
|
---|
| 5769 | void msg_prt_line __ARGS((char_u *s, int list));
|
---|
| 5770 | diff -Naur vim73.orig/src/proto/os_win32.pro vim73/src/proto/os_win32.pro
|
---|
| 5771 | --- vim73.orig/src/proto/os_win32.pro 2010-08-15 08:31:14.000000000 -0400
|
---|
| 5772 | +++ vim73/src/proto/os_win32.pro 2011-01-08 21:01:18.926655661 -0500
|
---|
| 5773 | @@ -1,4 +1,5 @@
|
---|
| 5774 | /* os_win32.c */
|
---|
| 5775 | +HINSTANCE vimLoadLib __ARGS((char *name));
|
---|
| 5776 | int dyn_libintl_init __ARGS((char *libname));
|
---|
| 5777 | void dyn_libintl_end __ARGS((void));
|
---|
| 5778 | void PlatformId __ARGS((void));
|
---|
| 5779 | diff -Naur vim73.orig/src/quickfix.c vim73/src/quickfix.c
|
---|
| 5780 | --- vim73.orig/src/quickfix.c 2010-08-09 16:12:14.000000000 -0400
|
---|
| 5781 | +++ vim73/src/quickfix.c 2011-01-08 21:01:19.226656888 -0500
|
---|
| 5782 | @@ -1656,9 +1656,7 @@
|
---|
| 5783 | opened_window = TRUE; /* close it when fail */
|
---|
| 5784 | p_swb = empty_option; /* don't split again */
|
---|
| 5785 | swb_flags = 0;
|
---|
| 5786 | -# ifdef FEAT_SCROLLBIND
|
---|
| 5787 | - curwin->w_p_scb = FALSE;
|
---|
| 5788 | -# endif
|
---|
| 5789 | + RESET_BINDING(curwin);
|
---|
| 5790 | if (ll_ref != NULL)
|
---|
| 5791 | {
|
---|
| 5792 | /* The new window should use the location list from the
|
---|
| 5793 | @@ -2125,6 +2123,7 @@
|
---|
| 5794 | --qi->qf_lists[idx].qf_count;
|
---|
| 5795 | }
|
---|
| 5796 | vim_free(qi->qf_lists[idx].qf_title);
|
---|
| 5797 | + qi->qf_lists[idx].qf_title = NULL;
|
---|
| 5798 | }
|
---|
| 5799 |
|
---|
| 5800 | /*
|
---|
| 5801 | @@ -2333,9 +2332,7 @@
|
---|
| 5802 | win_goto(lastwin);
|
---|
| 5803 | if (win_split(height, WSP_BELOW | WSP_NEWLOC) == FAIL)
|
---|
| 5804 | return; /* not enough room for window */
|
---|
| 5805 | -#ifdef FEAT_SCROLLBIND
|
---|
| 5806 | - curwin->w_p_scb = FALSE;
|
---|
| 5807 | -#endif
|
---|
| 5808 | + RESET_BINDING(curwin);
|
---|
| 5809 |
|
---|
| 5810 | if (eap->cmdidx == CMD_lopen || eap->cmdidx == CMD_lwindow)
|
---|
| 5811 | {
|
---|
| 5812 | @@ -2362,6 +2359,7 @@
|
---|
| 5813 | set_option_value((char_u *)"bt", 0L, (char_u *)"quickfix",
|
---|
| 5814 | OPT_LOCAL);
|
---|
| 5815 | set_option_value((char_u *)"bh", 0L, (char_u *)"wipe", OPT_LOCAL);
|
---|
| 5816 | + RESET_BINDING(curwin);
|
---|
| 5817 | #ifdef FEAT_DIFF
|
---|
| 5818 | curwin->w_p_diff = FALSE;
|
---|
| 5819 | #endif
|
---|
| 5820 | @@ -3435,6 +3433,7 @@
|
---|
| 5821 | char_u *fname;
|
---|
| 5822 | {
|
---|
| 5823 | buf_T *newbuf;
|
---|
| 5824 | + buf_T *newbuf_to_wipe = NULL;
|
---|
| 5825 | int failed = TRUE;
|
---|
| 5826 | aco_save_T aco;
|
---|
| 5827 |
|
---|
| 5828 | @@ -3471,15 +3470,19 @@
|
---|
| 5829 | failed = FALSE;
|
---|
| 5830 | if (curbuf != newbuf)
|
---|
| 5831 | {
|
---|
| 5832 | - /* Bloody autocommands changed the buffer! */
|
---|
| 5833 | - if (buf_valid(newbuf))
|
---|
| 5834 | - wipe_buffer(newbuf, FALSE);
|
---|
| 5835 | + /* Bloody autocommands changed the buffer! Can happen when
|
---|
| 5836 | + * using netrw and editing a remote file. Use the current
|
---|
| 5837 | + * buffer instead, delete the dummy one after restoring the
|
---|
| 5838 | + * window stuff. */
|
---|
| 5839 | + newbuf_to_wipe = newbuf;
|
---|
| 5840 | newbuf = curbuf;
|
---|
| 5841 | }
|
---|
| 5842 | }
|
---|
| 5843 |
|
---|
| 5844 | /* restore curwin/curbuf and a few other things */
|
---|
| 5845 | aucmd_restbuf(&aco);
|
---|
| 5846 | + if (newbuf_to_wipe != NULL && buf_valid(newbuf_to_wipe))
|
---|
| 5847 | + wipe_buffer(newbuf_to_wipe, FALSE);
|
---|
| 5848 | }
|
---|
| 5849 |
|
---|
| 5850 | if (!buf_valid(newbuf))
|
---|
| 5851 | diff -Naur vim73.orig/src/regexp.c vim73/src/regexp.c
|
---|
| 5852 | --- vim73.orig/src/regexp.c 2010-07-12 16:41:48.000000000 -0400
|
---|
| 5853 | +++ vim73/src/regexp.c 2011-01-08 20:59:37.790766680 -0500
|
---|
| 5854 | @@ -3538,6 +3538,7 @@
|
---|
| 5855 |
|
---|
| 5856 | regline = line;
|
---|
| 5857 | reglnum = 0;
|
---|
| 5858 | + reg_toolong = FALSE;
|
---|
| 5859 |
|
---|
| 5860 | /* Simplest case: Anchored match need be tried only once. */
|
---|
| 5861 | if (prog->reganch)
|
---|
| 5862 | diff -Naur vim73.orig/src/screen.c vim73/src/screen.c
|
---|
| 5863 | --- vim73.orig/src/screen.c 2010-08-13 09:21:27.000000000 -0400
|
---|
| 5864 | +++ vim73/src/screen.c 2011-01-08 21:01:19.494656637 -0500
|
---|
| 5865 | @@ -2317,7 +2317,7 @@
|
---|
| 5866 | num = (long)lnum;
|
---|
| 5867 | else
|
---|
| 5868 | /* 'relativenumber', don't use negative numbers */
|
---|
| 5869 | - num = (long)abs((int)get_cursor_rel_lnum(wp, lnum));
|
---|
| 5870 | + num = labs((long)get_cursor_rel_lnum(wp, lnum));
|
---|
| 5871 |
|
---|
| 5872 | sprintf((char *)buf, "%*ld ", w, num);
|
---|
| 5873 | #ifdef FEAT_RIGHTLEFT
|
---|
| 5874 | @@ -3405,9 +3405,9 @@
|
---|
| 5875 | # endif
|
---|
| 5876 | )
|
---|
| 5877 | {
|
---|
| 5878 | - int_u text_sign;
|
---|
| 5879 | + int text_sign;
|
---|
| 5880 | # ifdef FEAT_SIGN_ICONS
|
---|
| 5881 | - int_u icon_sign;
|
---|
| 5882 | + int icon_sign;
|
---|
| 5883 | # endif
|
---|
| 5884 |
|
---|
| 5885 | /* Draw two cells with the sign value or blank. */
|
---|
| 5886 | @@ -3475,8 +3475,7 @@
|
---|
| 5887 | num = (long)lnum;
|
---|
| 5888 | else
|
---|
| 5889 | /* 'relativenumber', don't use negative numbers */
|
---|
| 5890 | - num = (long)abs((int)get_cursor_rel_lnum(wp,
|
---|
| 5891 | - lnum));
|
---|
| 5892 | + num = labs((long)get_cursor_rel_lnum(wp, lnum));
|
---|
| 5893 |
|
---|
| 5894 | sprintf((char *)extra, "%*ld ",
|
---|
| 5895 | number_width(wp), num);
|
---|
| 5896 | @@ -6522,8 +6521,17 @@
|
---|
| 5897 | stl, use_sandbox,
|
---|
| 5898 | fillchar, maxwidth, hltab, tabtab);
|
---|
| 5899 | vim_free(stl);
|
---|
| 5900 | - len = (int)STRLEN(buf);
|
---|
| 5901 |
|
---|
| 5902 | + /* Make all characters printable. */
|
---|
| 5903 | + p = transstr(buf);
|
---|
| 5904 | + if (p != NULL)
|
---|
| 5905 | + {
|
---|
| 5906 | + vim_strncpy(buf, p, sizeof(buf) - 1);
|
---|
| 5907 | + vim_free(p);
|
---|
| 5908 | + }
|
---|
| 5909 | +
|
---|
| 5910 | + /* fill up with "fillchar" */
|
---|
| 5911 | + len = (int)STRLEN(buf);
|
---|
| 5912 | while (width < maxwidth && len < (int)sizeof(buf) - 1)
|
---|
| 5913 | {
|
---|
| 5914 | #ifdef FEAT_MBYTE
|
---|
| 5915 | diff -Naur vim73.orig/src/search.c vim73/src/search.c
|
---|
| 5916 | --- vim73.orig/src/search.c 2010-07-14 10:49:41.000000000 -0400
|
---|
| 5917 | +++ vim73/src/search.c 2011-01-08 20:59:41.002656834 -0500
|
---|
| 5918 | @@ -5075,9 +5075,7 @@
|
---|
| 5919 | if (win_split(0, 0) == FAIL)
|
---|
| 5920 | #endif
|
---|
| 5921 | break;
|
---|
| 5922 | -#ifdef FEAT_SCROLLBIND
|
---|
| 5923 | - curwin->w_p_scb = FALSE;
|
---|
| 5924 | -#endif
|
---|
| 5925 | + RESET_BINDING(curwin);
|
---|
| 5926 | }
|
---|
| 5927 | if (depth == -1)
|
---|
| 5928 | {
|
---|
| 5929 | diff -Naur vim73.orig/src/spell.c vim73/src/spell.c
|
---|
| 5930 | --- vim73.orig/src/spell.c 2010-08-01 09:43:01.000000000 -0400
|
---|
| 5931 | +++ vim73/src/spell.c 2011-01-08 21:01:19.386656778 -0500
|
---|
| 5932 | @@ -303,10 +303,6 @@
|
---|
| 5933 | * few bytes as possible, see offset2bytes())
|
---|
| 5934 | */
|
---|
| 5935 |
|
---|
| 5936 | -#if defined(MSDOS) || defined(WIN16) || defined(WIN32) || defined(_WIN64)
|
---|
| 5937 | -# include "vimio.h" /* for lseek(), must be before vim.h */
|
---|
| 5938 | -#endif
|
---|
| 5939 | -
|
---|
| 5940 | #include "vim.h"
|
---|
| 5941 |
|
---|
| 5942 | #if defined(FEAT_SPELL) || defined(PROTO)
|
---|
| 5943 | @@ -327,6 +323,16 @@
|
---|
| 5944 | typedef long idx_T;
|
---|
| 5945 | #endif
|
---|
| 5946 |
|
---|
| 5947 | +#ifdef VMS
|
---|
| 5948 | +# define SPL_FNAME_TMPL "%s_%s.spl"
|
---|
| 5949 | +# define SPL_FNAME_ADD "_add."
|
---|
| 5950 | +# define SPL_FNAME_ASCII "_ascii."
|
---|
| 5951 | +#else
|
---|
| 5952 | +# define SPL_FNAME_TMPL "%s.%s.spl"
|
---|
| 5953 | +# define SPL_FNAME_ADD ".add."
|
---|
| 5954 | +# define SPL_FNAME_ASCII ".ascii."
|
---|
| 5955 | +#endif
|
---|
| 5956 | +
|
---|
| 5957 | /* Flags used for a word. Only the lowest byte can be used, the region byte
|
---|
| 5958 | * comes above it. */
|
---|
| 5959 | #define WF_REGION 0x01 /* region byte follows */
|
---|
| 5960 | @@ -2471,14 +2477,24 @@
|
---|
| 5961 | * Find the first spell file for "lang" in 'runtimepath' and load it.
|
---|
| 5962 | */
|
---|
| 5963 | vim_snprintf((char *)fname_enc, sizeof(fname_enc) - 5,
|
---|
| 5964 | - "spell/%s.%s.spl", lang, spell_enc());
|
---|
| 5965 | +#ifdef VMS
|
---|
| 5966 | + "spell/%s_%s.spl",
|
---|
| 5967 | +#else
|
---|
| 5968 | + "spell/%s.%s.spl",
|
---|
| 5969 | +#endif
|
---|
| 5970 | + lang, spell_enc());
|
---|
| 5971 | r = do_in_runtimepath(fname_enc, FALSE, spell_load_cb, &sl);
|
---|
| 5972 |
|
---|
| 5973 | if (r == FAIL && *sl.sl_lang != NUL)
|
---|
| 5974 | {
|
---|
| 5975 | /* Try loading the ASCII version. */
|
---|
| 5976 | vim_snprintf((char *)fname_enc, sizeof(fname_enc) - 5,
|
---|
| 5977 | - "spell/%s.ascii.spl", lang);
|
---|
| 5978 | +#ifdef VMS
|
---|
| 5979 | + "spell/%s_ascii.spl",
|
---|
| 5980 | +#else
|
---|
| 5981 | + "spell/%s.ascii.spl",
|
---|
| 5982 | +#endif
|
---|
| 5983 | + lang);
|
---|
| 5984 | r = do_in_runtimepath(fname_enc, FALSE, spell_load_cb, &sl);
|
---|
| 5985 |
|
---|
| 5986 | #ifdef FEAT_AUTOCMD
|
---|
| 5987 | @@ -2496,7 +2512,12 @@
|
---|
| 5988 |
|
---|
| 5989 | if (r == FAIL)
|
---|
| 5990 | {
|
---|
| 5991 | - smsg((char_u *)_("Warning: Cannot find word list \"%s.%s.spl\" or \"%s.ascii.spl\""),
|
---|
| 5992 | + smsg((char_u *)
|
---|
| 5993 | +#ifdef VMS
|
---|
| 5994 | + _("Warning: Cannot find word list \"%s_%s.spl\" or \"%s_ascii.spl\""),
|
---|
| 5995 | +#else
|
---|
| 5996 | + _("Warning: Cannot find word list \"%s.%s.spl\" or \"%s.ascii.spl\""),
|
---|
| 5997 | +#endif
|
---|
| 5998 | lang, spell_enc(), lang);
|
---|
| 5999 | }
|
---|
| 6000 | else if (sl.sl_slang != NULL)
|
---|
| 6001 | @@ -2530,7 +2551,7 @@
|
---|
| 6002 | int_wordlist_spl(fname)
|
---|
| 6003 | char_u *fname;
|
---|
| 6004 | {
|
---|
| 6005 | - vim_snprintf((char *)fname, MAXPATHL, "%s.%s.spl",
|
---|
| 6006 | + vim_snprintf((char *)fname, MAXPATHL, SPL_FNAME_TMPL,
|
---|
| 6007 | int_wordlist, spell_enc());
|
---|
| 6008 | }
|
---|
| 6009 |
|
---|
| 6010 | @@ -2785,8 +2806,8 @@
|
---|
| 6011 | if (lp->sl_fname == NULL)
|
---|
| 6012 | goto endFAIL;
|
---|
| 6013 |
|
---|
| 6014 | - /* Check for .add.spl. */
|
---|
| 6015 | - lp->sl_add = strstr((char *)gettail(fname), ".add.") != NULL;
|
---|
| 6016 | + /* Check for .add.spl (_add.spl for VMS). */
|
---|
| 6017 | + lp->sl_add = strstr((char *)gettail(fname), SPL_FNAME_ADD) != NULL;
|
---|
| 6018 | }
|
---|
| 6019 | else
|
---|
| 6020 | lp = old_lp;
|
---|
| 6021 | @@ -4679,7 +4700,7 @@
|
---|
| 6022 | buf_T *buf;
|
---|
| 6023 | char_u fname[MAXPATHL];
|
---|
| 6024 |
|
---|
| 6025 | - /* Go through all buffers and handle 'spelllang'. */ //<VN>
|
---|
| 6026 | + /* Go through all buffers and handle 'spelllang'. <VN> */
|
---|
| 6027 | for (buf = firstbuf; buf != NULL; buf = buf->b_next)
|
---|
| 6028 | ga_clear(&buf->b_s.b_langp);
|
---|
| 6029 |
|
---|
| 6030 | @@ -4951,7 +4972,7 @@
|
---|
| 6031 | char_u *si_info; /* info text chars or NULL */
|
---|
| 6032 | int si_region_count; /* number of regions supported (1 when there
|
---|
| 6033 | are no regions) */
|
---|
| 6034 | - char_u si_region_name[16]; /* region names; used only if
|
---|
| 6035 | + char_u si_region_name[17]; /* region names; used only if
|
---|
| 6036 | * si_region_count > 1) */
|
---|
| 6037 |
|
---|
| 6038 | garray_T si_rep; /* list of fromto_T entries from REP lines */
|
---|
| 6039 | @@ -9109,8 +9130,8 @@
|
---|
| 6040 | /* For ":mkspell path/vim" output file is "path/vim.latin1.spl". */
|
---|
| 6041 | innames = &fnames[0];
|
---|
| 6042 | incount = 1;
|
---|
| 6043 | - vim_snprintf((char *)wfname, sizeof(wfname), "%s.%s.spl", fnames[0],
|
---|
| 6044 | - spin.si_ascii ? (char_u *)"ascii" : spell_enc());
|
---|
| 6045 | + vim_snprintf((char *)wfname, sizeof(wfname), SPL_FNAME_TMPL,
|
---|
| 6046 | + fnames[0], spin.si_ascii ? (char_u *)"ascii" : spell_enc());
|
---|
| 6047 | }
|
---|
| 6048 | else if (len > 4 && STRCMP(fnames[0] + len - 4, ".spl") == 0)
|
---|
| 6049 | {
|
---|
| 6050 | @@ -9119,15 +9140,15 @@
|
---|
| 6051 | }
|
---|
| 6052 | else
|
---|
| 6053 | /* Name should be language, make the file name from it. */
|
---|
| 6054 | - vim_snprintf((char *)wfname, sizeof(wfname), "%s.%s.spl", fnames[0],
|
---|
| 6055 | - spin.si_ascii ? (char_u *)"ascii" : spell_enc());
|
---|
| 6056 | + vim_snprintf((char *)wfname, sizeof(wfname), SPL_FNAME_TMPL,
|
---|
| 6057 | + fnames[0], spin.si_ascii ? (char_u *)"ascii" : spell_enc());
|
---|
| 6058 |
|
---|
| 6059 | /* Check for .ascii.spl. */
|
---|
| 6060 | - if (strstr((char *)gettail(wfname), ".ascii.") != NULL)
|
---|
| 6061 | + if (strstr((char *)gettail(wfname), SPL_FNAME_ASCII) != NULL)
|
---|
| 6062 | spin.si_ascii = TRUE;
|
---|
| 6063 |
|
---|
| 6064 | /* Check for .add.spl. */
|
---|
| 6065 | - if (strstr((char *)gettail(wfname), ".add.") != NULL)
|
---|
| 6066 | + if (strstr((char *)gettail(wfname), SPL_FNAME_ADD) != NULL)
|
---|
| 6067 | spin.si_add = TRUE;
|
---|
| 6068 | }
|
---|
| 6069 |
|
---|
| 6070 | @@ -9530,7 +9551,8 @@
|
---|
| 6071 | if (aspath)
|
---|
| 6072 | /* Use directory of an entry with path, e.g., for
|
---|
| 6073 | * "/dir/lg.utf-8.spl" use "/dir". */
|
---|
| 6074 | - vim_strncpy(buf, curbuf->b_s.b_p_spl, lstart - curbuf->b_s.b_p_spl - 1);
|
---|
| 6075 | + vim_strncpy(buf, curbuf->b_s.b_p_spl,
|
---|
| 6076 | + lstart - curbuf->b_s.b_p_spl - 1);
|
---|
| 6077 | else
|
---|
| 6078 | /* Copy the path from 'runtimepath' to buf[]. */
|
---|
| 6079 | copy_option_part(&rtp, buf, MAXPATHL, ",");
|
---|
| 6080 | @@ -9539,13 +9561,14 @@
|
---|
| 6081 | /* Use the first language name from 'spelllang' and the
|
---|
| 6082 | * encoding used in the first loaded .spl file. */
|
---|
| 6083 | if (aspath)
|
---|
| 6084 | - vim_strncpy(buf, curbuf->b_s.b_p_spl, lend - curbuf->b_s.b_p_spl);
|
---|
| 6085 | + vim_strncpy(buf, curbuf->b_s.b_p_spl,
|
---|
| 6086 | + lend - curbuf->b_s.b_p_spl);
|
---|
| 6087 | else
|
---|
| 6088 | {
|
---|
| 6089 | /* Create the "spell" directory if it doesn't exist yet. */
|
---|
| 6090 | l = (int)STRLEN(buf);
|
---|
| 6091 | vim_snprintf((char *)buf + l, MAXPATHL - l, "/spell");
|
---|
| 6092 | - if (!filewritable(buf) != 2)
|
---|
| 6093 | + if (filewritable(buf) != 2)
|
---|
| 6094 | vim_mkdir(buf, 0755);
|
---|
| 6095 |
|
---|
| 6096 | l = (int)STRLEN(buf);
|
---|
| 6097 | @@ -9837,10 +9860,7 @@
|
---|
| 6098 | {
|
---|
| 6099 | /* be quick for ASCII */
|
---|
| 6100 | if (wp->w_s->b_spell_ismw[*p])
|
---|
| 6101 | - {
|
---|
| 6102 | s = p + 1; /* skip a mid-word character */
|
---|
| 6103 | - l = MB_BYTE2LEN(*s);
|
---|
| 6104 | - }
|
---|
| 6105 | }
|
---|
| 6106 | else
|
---|
| 6107 | {
|
---|
| 6108 | @@ -9848,10 +9868,7 @@
|
---|
| 6109 | if (c < 256 ? wp->w_s->b_spell_ismw[c]
|
---|
| 6110 | : (wp->w_s->b_spell_ismw_mb != NULL
|
---|
| 6111 | && vim_strchr(wp->w_s->b_spell_ismw_mb, c) != NULL))
|
---|
| 6112 | - {
|
---|
| 6113 | s = p + l;
|
---|
| 6114 | - l = MB_BYTE2LEN(*s);
|
---|
| 6115 | - }
|
---|
| 6116 | }
|
---|
| 6117 |
|
---|
| 6118 | c = mb_ptr2char(s);
|
---|
| 6119 | @@ -13811,11 +13828,8 @@
|
---|
| 6120 | su->su_sfmaxscore = cleanup_suggestions(gap,
|
---|
| 6121 | su->su_sfmaxscore, SUG_CLEAN_COUNT(su));
|
---|
| 6122 | else
|
---|
| 6123 | - {
|
---|
| 6124 | - i = su->su_maxscore;
|
---|
| 6125 | su->su_maxscore = cleanup_suggestions(gap,
|
---|
| 6126 | su->su_maxscore, SUG_CLEAN_COUNT(su));
|
---|
| 6127 | - }
|
---|
| 6128 | }
|
---|
| 6129 | }
|
---|
| 6130 | }
|
---|
| 6131 | diff -Naur vim73.orig/src/structs.h vim73/src/structs.h
|
---|
| 6132 | --- vim73.orig/src/structs.h 2010-08-07 10:59:27.000000000 -0400
|
---|
| 6133 | +++ vim73/src/structs.h 2011-01-08 21:01:18.918658776 -0500
|
---|
| 6134 | @@ -979,9 +979,10 @@
|
---|
| 6135 | struct mapblock
|
---|
| 6136 | {
|
---|
| 6137 | mapblock_T *m_next; /* next mapblock in list */
|
---|
| 6138 | - char_u *m_keys; /* mapped from */
|
---|
| 6139 | + char_u *m_keys; /* mapped from, lhs */
|
---|
| 6140 | int m_keylen; /* strlen(m_keys) */
|
---|
| 6141 | - char_u *m_str; /* mapped to */
|
---|
| 6142 | + char_u *m_str; /* mapped to, rhs */
|
---|
| 6143 | + char_u *m_orig_str; /* rhs as entered by the user */
|
---|
| 6144 | int m_mode; /* valid mode */
|
---|
| 6145 | int m_noremap; /* if non-zero no re-mapping for m_str */
|
---|
| 6146 | char m_silent; /* <silent> used, don't echo commands */
|
---|
| 6147 | diff -Naur vim73.orig/src/syntax.c vim73/src/syntax.c
|
---|
| 6148 | --- vim73.orig/src/syntax.c 2010-08-08 09:17:03.000000000 -0400
|
---|
| 6149 | +++ vim73/src/syntax.c 2011-01-08 21:01:18.790655926 -0500
|
---|
| 6150 | @@ -7600,10 +7600,10 @@
|
---|
| 6151 | /*
|
---|
| 6152 | * Copy characters from arg[] to buf[], translating <> codes.
|
---|
| 6153 | */
|
---|
| 6154 | - for (p = arg, off = 0; off < 100 && *p; )
|
---|
| 6155 | + for (p = arg, off = 0; off < 100 - 6 && *p; )
|
---|
| 6156 | {
|
---|
| 6157 | len = trans_special(&p, buf + off, FALSE);
|
---|
| 6158 | - if (len) /* recognized special char */
|
---|
| 6159 | + if (len > 0) /* recognized special char */
|
---|
| 6160 | off += len;
|
---|
| 6161 | else /* copy as normal char */
|
---|
| 6162 | buf[off++] = *p++;
|
---|
| 6163 | diff -Naur vim73.orig/src/tag.c vim73/src/tag.c
|
---|
| 6164 | --- vim73.orig/src/tag.c 2010-08-10 03:25:22.000000000 -0400
|
---|
| 6165 | +++ vim73/src/tag.c 2011-01-08 21:01:19.386656778 -0500
|
---|
| 6166 | @@ -11,10 +11,6 @@
|
---|
| 6167 | * Code to handle tags and the tag stack
|
---|
| 6168 | */
|
---|
| 6169 |
|
---|
| 6170 | -#if defined(MSDOS) || defined(WIN16) || defined(WIN32) || defined(_WIN64)
|
---|
| 6171 | -# include "vimio.h" /* for lseek(), must be before vim.h */
|
---|
| 6172 | -#endif
|
---|
| 6173 | -
|
---|
| 6174 | #include "vim.h"
|
---|
| 6175 |
|
---|
| 6176 | /*
|
---|
| 6177 | @@ -3143,9 +3139,7 @@
|
---|
| 6178 | {
|
---|
| 6179 | win_split(postponed_split > 0 ? postponed_split : 0,
|
---|
| 6180 | postponed_split_flags);
|
---|
| 6181 | -# ifdef FEAT_SCROLLBIND
|
---|
| 6182 | - curwin->w_p_scb = FALSE;
|
---|
| 6183 | -# endif
|
---|
| 6184 | + RESET_BINDING(curwin);
|
---|
| 6185 | }
|
---|
| 6186 | #endif
|
---|
| 6187 |
|
---|
| 6188 | diff -Naur vim73.orig/src/term.c vim73/src/term.c
|
---|
| 6189 | --- vim73.orig/src/term.c 2010-07-25 09:30:31.000000000 -0400
|
---|
| 6190 | +++ vim73/src/term.c 2011-01-08 21:01:19.486656758 -0500
|
---|
| 6191 | @@ -3053,10 +3053,13 @@
|
---|
| 6192 | int old_Rows = Rows;
|
---|
| 6193 | int old_Columns = Columns;
|
---|
| 6194 |
|
---|
| 6195 | - (void)ui_get_shellsize();
|
---|
| 6196 | - check_shellsize();
|
---|
| 6197 | - if (old_Rows != Rows || old_Columns != Columns)
|
---|
| 6198 | - shell_resized();
|
---|
| 6199 | + if (!exiting)
|
---|
| 6200 | + {
|
---|
| 6201 | + (void)ui_get_shellsize();
|
---|
| 6202 | + check_shellsize();
|
---|
| 6203 | + if (old_Rows != Rows || old_Columns != Columns)
|
---|
| 6204 | + shell_resized();
|
---|
| 6205 | + }
|
---|
| 6206 | }
|
---|
| 6207 |
|
---|
| 6208 | /*
|
---|
| 6209 | @@ -3828,6 +3831,7 @@
|
---|
| 6210 | * Check from typebuf.tb_buf[typebuf.tb_off] to typebuf.tb_buf[typebuf.tb_off
|
---|
| 6211 | * + max_offset].
|
---|
| 6212 | * Return 0 for no match, -1 for partial match, > 0 for full match.
|
---|
| 6213 | + * Return KEYLEN_REMOVED when a key code was deleted.
|
---|
| 6214 | * With a match, the match is removed, the replacement code is inserted in
|
---|
| 6215 | * typebuf.tb_buf[] and the number of characters in typebuf.tb_buf[] is
|
---|
| 6216 | * returned.
|
---|
| 6217 | @@ -3845,6 +3849,7 @@
|
---|
| 6218 | int slen = 0; /* init for GCC */
|
---|
| 6219 | int modslen;
|
---|
| 6220 | int len;
|
---|
| 6221 | + int retval = 0;
|
---|
| 6222 | int offset;
|
---|
| 6223 | char_u key_name[2];
|
---|
| 6224 | int modifiers;
|
---|
| 6225 | @@ -4940,6 +4945,13 @@
|
---|
| 6226 | #endif
|
---|
| 6227 | string[new_slen++] = key_name[1];
|
---|
| 6228 | }
|
---|
| 6229 | + else if (new_slen == 0 && key_name[0] == KS_EXTRA
|
---|
| 6230 | + && key_name[1] == KE_IGNORE)
|
---|
| 6231 | + {
|
---|
| 6232 | + /* Do not put K_IGNORE into the buffer, do return KEYLEN_REMOVED
|
---|
| 6233 | + * to indicate what happened. */
|
---|
| 6234 | + retval = KEYLEN_REMOVED;
|
---|
| 6235 | + }
|
---|
| 6236 | else
|
---|
| 6237 | {
|
---|
| 6238 | string[new_slen++] = K_SPECIAL;
|
---|
| 6239 | @@ -4976,7 +4988,7 @@
|
---|
| 6240 | (size_t)(buflen - offset));
|
---|
| 6241 | mch_memmove(buf + offset, string, (size_t)new_slen);
|
---|
| 6242 | }
|
---|
| 6243 | - return (len + extra + offset);
|
---|
| 6244 | + return retval == 0 ? (len + extra + offset) : retval;
|
---|
| 6245 | }
|
---|
| 6246 |
|
---|
| 6247 | return 0; /* no match found */
|
---|
| 6248 | diff -Naur vim73.orig/src/testdir/Make_amiga.mak vim73/src/testdir/Make_amiga.mak
|
---|
| 6249 | --- vim73.orig/src/testdir/Make_amiga.mak 2010-08-04 10:34:34.000000000 -0400
|
---|
| 6250 | +++ vim73/src/testdir/Make_amiga.mak 2011-01-08 21:01:19.138657005 -0500
|
---|
| 6251 | @@ -27,7 +27,8 @@
|
---|
| 6252 | test56.out test57.out test58.out test59.out test60.out \
|
---|
| 6253 | test61.out test62.out test63.out test64.out test65.out \
|
---|
| 6254 | test66.out test67.out test68.out test69.out test70.out \
|
---|
| 6255 | - test71.out test72.out test73.out
|
---|
| 6256 | + test71.out test72.out test73.out test74.out test75.out \
|
---|
| 6257 | + test76.out
|
---|
| 6258 |
|
---|
| 6259 | .SUFFIXES: .in .out
|
---|
| 6260 |
|
---|
| 6261 | @@ -120,3 +121,6 @@
|
---|
| 6262 | test71.out: test71.in
|
---|
| 6263 | test72.out: test72.in
|
---|
| 6264 | test73.out: test73.in
|
---|
| 6265 | +test74.out: test74.in
|
---|
| 6266 | +test75.out: test75.in
|
---|
| 6267 | +test76.out: test76.in
|
---|
| 6268 | diff -Naur vim73.orig/src/testdir/Make_dos.mak vim73/src/testdir/Make_dos.mak
|
---|
| 6269 | --- vim73.orig/src/testdir/Make_dos.mak 2010-08-13 12:27:19.000000000 -0400
|
---|
| 6270 | +++ vim73/src/testdir/Make_dos.mak 2011-01-08 21:01:19.138657005 -0500
|
---|
| 6271 | @@ -27,7 +27,8 @@
|
---|
| 6272 | test30.out test31.out test32.out test33.out test34.out \
|
---|
| 6273 | test37.out test38.out test39.out test40.out test41.out \
|
---|
| 6274 | test42.out test52.out test65.out test66.out test67.out \
|
---|
| 6275 | - test68.out test69.out test71.out test72.out test73.out
|
---|
| 6276 | + test68.out test69.out test71.out test72.out test73.out \
|
---|
| 6277 | + test74.out test75.out test76.out
|
---|
| 6278 |
|
---|
| 6279 | SCRIPTS32 = test50.out test70.out
|
---|
| 6280 |
|
---|
| 6281 | diff -Naur vim73.orig/src/testdir/Make_ming.mak vim73/src/testdir/Make_ming.mak
|
---|
| 6282 | --- vim73.orig/src/testdir/Make_ming.mak 2010-08-04 10:34:47.000000000 -0400
|
---|
| 6283 | +++ vim73/src/testdir/Make_ming.mak 2011-01-08 21:01:19.138657005 -0500
|
---|
| 6284 | @@ -47,7 +47,8 @@
|
---|
| 6285 | test30.out test31.out test32.out test33.out test34.out \
|
---|
| 6286 | test37.out test38.out test39.out test40.out test41.out \
|
---|
| 6287 | test42.out test52.out test65.out test66.out test67.out \
|
---|
| 6288 | - test68.out test69.out test71.out test72.out test72.out
|
---|
| 6289 | + test68.out test69.out test71.out test72.out test73.out \
|
---|
| 6290 | + test74.out test75.out test76.out
|
---|
| 6291 |
|
---|
| 6292 | SCRIPTS32 = test50.out test70.out
|
---|
| 6293 |
|
---|
| 6294 | diff -Naur vim73.orig/src/testdir/Make_os2.mak vim73/src/testdir/Make_os2.mak
|
---|
| 6295 | --- vim73.orig/src/testdir/Make_os2.mak 2010-08-04 10:34:55.000000000 -0400
|
---|
| 6296 | +++ vim73/src/testdir/Make_os2.mak 2011-01-08 21:01:19.138657005 -0500
|
---|
| 6297 | @@ -27,7 +27,8 @@
|
---|
| 6298 | test56.out test57.out test58.out test59.out test60.out \
|
---|
| 6299 | test61.out test62.out test63.out test64.out test65.out \
|
---|
| 6300 | test66.out test67.out test68.out test69.out test70.out \
|
---|
| 6301 | - test71.out test72.out test73.out
|
---|
| 6302 | + test71.out test72.out test73.out test74.out test75.out \
|
---|
| 6303 | + test76.out
|
---|
| 6304 |
|
---|
| 6305 | .SUFFIXES: .in .out
|
---|
| 6306 |
|
---|
| 6307 | diff -Naur vim73.orig/src/testdir/Make_vms.mms vim73/src/testdir/Make_vms.mms
|
---|
| 6308 | --- vim73.orig/src/testdir/Make_vms.mms 2010-08-04 10:35:46.000000000 -0400
|
---|
| 6309 | +++ vim73/src/testdir/Make_vms.mms 2011-01-08 21:01:19.138657005 -0500
|
---|
| 6310 | @@ -4,7 +4,7 @@
|
---|
| 6311 | # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com>
|
---|
| 6312 | # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu>
|
---|
| 6313 | #
|
---|
| 6314 | -# Last change: 2010 Aug 04
|
---|
| 6315 | +# Last change: 2010 Nov 10
|
---|
| 6316 | #
|
---|
| 6317 | # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
|
---|
| 6318 | # Edit the lines in the Configuration section below to select.
|
---|
| 6319 | @@ -74,7 +74,7 @@
|
---|
| 6320 | test56.out test57.out test60.out \
|
---|
| 6321 | test61.out test62.out test63.out test64.out test65.out \
|
---|
| 6322 | test66.out test67.out test68.out test69.out \
|
---|
| 6323 | - test71.out test72.out
|
---|
| 6324 | + test71.out test72.out test74.out test75.out test76.out
|
---|
| 6325 |
|
---|
| 6326 | # Known problems:
|
---|
| 6327 | # Test 30: a problem around mac format - unknown reason
|
---|
| 6328 | diff -Naur vim73.orig/src/testdir/Makefile vim73/src/testdir/Makefile
|
---|
| 6329 | --- vim73.orig/src/testdir/Makefile 2010-08-15 08:56:30.000000000 -0400
|
---|
| 6330 | +++ vim73/src/testdir/Makefile 2011-01-08 21:01:19.138657005 -0500
|
---|
| 6331 | @@ -10,6 +10,7 @@
|
---|
| 6332 | # This will make testing about 10 times as slow.
|
---|
| 6333 | # VALGRIND = valgrind --tool=memcheck --leak-check=yes --num-callers=15 --log-file=valgrind.$*
|
---|
| 6334 |
|
---|
| 6335 | +
|
---|
| 6336 | SCRIPTS = test1.out test2.out test3.out test4.out test5.out test6.out \
|
---|
| 6337 | test7.out test8.out test9.out test10.out test11.out \
|
---|
| 6338 | test12.out test13.out test14.out test15.out test17.out \
|
---|
| 6339 | @@ -23,7 +24,8 @@
|
---|
| 6340 | test54.out test55.out test56.out test57.out test58.out \
|
---|
| 6341 | test59.out test60.out test61.out test62.out test63.out \
|
---|
| 6342 | test64.out test65.out test66.out test67.out test68.out \
|
---|
| 6343 | - test69.out test70.out test71.out test72.out test73.out
|
---|
| 6344 | + test69.out test70.out test71.out test72.out test73.out \
|
---|
| 6345 | + test74.out test75.out test76.out
|
---|
| 6346 |
|
---|
| 6347 | SCRIPTS_GUI = test16.out
|
---|
| 6348 |
|
---|
| 6349 | @@ -44,7 +46,7 @@
|
---|
| 6350 | $(SCRIPTS) $(SCRIPTS_GUI): $(VIMPROG)
|
---|
| 6351 |
|
---|
| 6352 | clean:
|
---|
| 6353 | - -rm -rf *.out *.failed *.rej *.orig test.log tiny.vim small.vim mbyte.vim mzscheme.vim test.ok X* valgrind.pid* viminfo
|
---|
| 6354 | + -rm -rf *.out *.failed *.rej *.orig test.log tiny.vim small.vim mbyte.vim mzscheme.vim test.ok X* valgrind.* viminfo
|
---|
| 6355 |
|
---|
| 6356 | test1.out: test1.in
|
---|
| 6357 | -rm -f $*.failed tiny.vim small.vim mbyte.vim mzscheme.vim test.ok X* viminfo
|
---|
| 6358 | diff -Naur vim73.orig/src/testdir/main.aap vim73/src/testdir/main.aap
|
---|
| 6359 | --- vim73.orig/src/testdir/main.aap 2010-07-30 16:03:23.000000000 -0400
|
---|
| 6360 | +++ vim73/src/testdir/main.aap 2011-01-08 21:01:18.878656504 -0500
|
---|
| 6361 | @@ -13,7 +13,7 @@
|
---|
| 6362 | test33.out test34.out test35.out test36.out test37.out
|
---|
| 6363 | test38.out test39.out test40.out test41.out test42.out
|
---|
| 6364 | test43.out test44.out test45.out test46.out test47.out
|
---|
| 6365 | - test48.out test49.out
|
---|
| 6366 | + test48.out test49.out test74.out
|
---|
| 6367 |
|
---|
| 6368 | ScriptsGUI = test16.out
|
---|
| 6369 |
|
---|
| 6370 | diff -Naur vim73.orig/src/testdir/test49.vim vim73/src/testdir/test49.vim
|
---|
| 6371 | --- vim73.orig/src/testdir/test49.vim 2010-05-15 07:04:10.000000000 -0400
|
---|
| 6372 | +++ vim73/src/testdir/test49.vim 2011-01-08 21:01:18.782656702 -0500
|
---|
| 6373 | @@ -1,6 +1,6 @@
|
---|
| 6374 | " Vim script language tests
|
---|
| 6375 | " Author: Servatius Brandt <Servatius.Brandt@fujitsu-siemens.com>
|
---|
| 6376 | -" Last Change: 2006 Apr 28
|
---|
| 6377 | +" Last Change: 2010 Sep 29
|
---|
| 6378 |
|
---|
| 6379 | "-------------------------------------------------------------------------------
|
---|
| 6380 | " Test environment {{{1
|
---|
| 6381 | @@ -8711,7 +8711,7 @@
|
---|
| 6382 | endif
|
---|
| 6383 | else
|
---|
| 6384 | if cmd == "let"
|
---|
| 6385 | - let match = MATCH(0, thrmsg, 'E106', "Unknown variable")
|
---|
| 6386 | + let match = MATCH(0, thrmsg, 'E121', "Undefined variable")
|
---|
| 6387 | elseif cmd == "unlet"
|
---|
| 6388 | let match = MATCH(0, thrmsg, 'E108', "No such variable")
|
---|
| 6389 | endif
|
---|
| 6390 | diff -Naur vim73.orig/src/testdir/test55.in vim73/src/testdir/test55.in
|
---|
| 6391 | --- vim73.orig/src/testdir/test55.in 2010-05-15 07:04:10.000000000 -0400
|
---|
| 6392 | +++ vim73/src/testdir/test55.in 2011-01-08 21:01:19.158657647 -0500
|
---|
| 6393 | @@ -342,7 +342,18 @@
|
---|
| 6394 | :$put =(d == d)
|
---|
| 6395 | :$put =(l != deepcopy(l))
|
---|
| 6396 | :$put =(d != deepcopy(d))
|
---|
| 6397 | +:"
|
---|
| 6398 | +:" compare complex recursively linked list and dict
|
---|
| 6399 | +:let l = []
|
---|
| 6400 | +:call add(l, l)
|
---|
| 6401 | +:let dict4 = {"l": l}
|
---|
| 6402 | +:call add(dict4.l, dict4)
|
---|
| 6403 | +:let lcopy = deepcopy(l)
|
---|
| 6404 | +:let dict4copy = deepcopy(dict4)
|
---|
| 6405 | +:$put =(l == lcopy)
|
---|
| 6406 | +:$put =(dict4 == dict4copy)
|
---|
| 6407 | :endfun
|
---|
| 6408 | +:"
|
---|
| 6409 | :call Test(1, 2, [3, 4], {5: 6}) " This may take a while
|
---|
| 6410 | :"
|
---|
| 6411 | :delfunc Test
|
---|
| 6412 | diff -Naur vim73.orig/src/testdir/test55.ok vim73/src/testdir/test55.ok
|
---|
| 6413 | --- vim73.orig/src/testdir/test55.ok 2010-05-15 07:04:10.000000000 -0400
|
---|
| 6414 | +++ vim73/src/testdir/test55.ok 2011-01-08 21:01:19.158657647 -0500
|
---|
| 6415 | @@ -109,3 +109,5 @@
|
---|
| 6416 | 1
|
---|
| 6417 | 0
|
---|
| 6418 | 0
|
---|
| 6419 | +1
|
---|
| 6420 | +1
|
---|
| 6421 | diff -Naur vim73.orig/src/testdir/test57.in vim73/src/testdir/test57.in
|
---|
| 6422 | --- vim73.orig/src/testdir/test57.in 2010-05-15 07:04:10.000000000 -0400
|
---|
| 6423 | +++ vim73/src/testdir/test57.in 2011-01-08 21:01:18.866656341 -0500
|
---|
| 6424 | @@ -53,15 +53,19 @@
|
---|
| 6425 | t02: numeric
|
---|
| 6426 | abc
|
---|
| 6427 | ab
|
---|
| 6428 | -a
|
---|
| 6429 | a321
|
---|
| 6430 | a123
|
---|
| 6431 | a122
|
---|
| 6432 | +a
|
---|
| 6433 | +x-22
|
---|
| 6434 | b321
|
---|
| 6435 | b123
|
---|
| 6436 | +
|
---|
| 6437 | c123d
|
---|
| 6438 | +-24
|
---|
| 6439 | 123b
|
---|
| 6440 | c321d
|
---|
| 6441 | +0
|
---|
| 6442 | b322b
|
---|
| 6443 | b321
|
---|
| 6444 | b321b
|
---|
| 6445 | diff -Naur vim73.orig/src/testdir/test57.ok vim73/src/testdir/test57.ok
|
---|
| 6446 | --- vim73.orig/src/testdir/test57.ok 2010-05-15 07:04:10.000000000 -0400
|
---|
| 6447 | +++ vim73/src/testdir/test57.ok 2011-01-08 21:01:18.866656341 -0500
|
---|
| 6448 | @@ -21,6 +21,10 @@
|
---|
| 6449 | a
|
---|
| 6450 |
|
---|
| 6451 |
|
---|
| 6452 | +
|
---|
| 6453 | +-24
|
---|
| 6454 | +x-22
|
---|
| 6455 | +0
|
---|
| 6456 | a122
|
---|
| 6457 | a123
|
---|
| 6458 | b123
|
---|
| 6459 | diff -Naur vim73.orig/src/testdir/test61.in vim73/src/testdir/test61.in
|
---|
| 6460 | --- vim73.orig/src/testdir/test61.in 2010-06-26 23:07:58.000000000 -0400
|
---|
| 6461 | +++ vim73/src/testdir/test61.in 2011-01-08 20:59:38.610657137 -0500
|
---|
| 6462 | @@ -4,6 +4,10 @@
|
---|
| 6463 | Also tests :earlier and :later.
|
---|
| 6464 |
|
---|
| 6465 | STARTTEST
|
---|
| 6466 | +:echo undotree().entries
|
---|
| 6467 | +ENDTEST
|
---|
| 6468 | +
|
---|
| 6469 | +STARTTEST
|
---|
| 6470 | :" Delete three characters and undo
|
---|
| 6471 | Gx:set ul=100
|
---|
| 6472 | x:set ul=100
|
---|
| 6473 | diff -Naur vim73.orig/src/testdir/test68.in vim73/src/testdir/test68.in
|
---|
| 6474 | --- vim73.orig/src/testdir/test68.in 2010-05-15 07:04:10.000000000 -0400
|
---|
| 6475 | +++ vim73/src/testdir/test68.in 2011-01-08 21:01:18.806655841 -0500
|
---|
| 6476 | @@ -51,6 +51,17 @@
|
---|
| 6477 | }
|
---|
| 6478 |
|
---|
| 6479 | STARTTEST
|
---|
| 6480 | +/^{/+2
|
---|
| 6481 | +:set tw& fo=a
|
---|
| 6482 | +I^^
|
---|
| 6483 | +ENDTEST
|
---|
| 6484 | +
|
---|
| 6485 | +{
|
---|
| 6486 | + 1aa
|
---|
| 6487 | + 2bb
|
---|
| 6488 | +}
|
---|
| 6489 | +
|
---|
| 6490 | +STARTTEST
|
---|
| 6491 | :g/^STARTTEST/.,/^ENDTEST/d
|
---|
| 6492 | :1;/^Results/,$wq! test.out
|
---|
| 6493 | ENDTEST
|
---|
| 6494 | diff -Naur vim73.orig/src/testdir/test68.ok vim73/src/testdir/test68.ok
|
---|
| 6495 | --- vim73.orig/src/testdir/test68.ok 2010-05-15 07:04:10.000000000 -0400
|
---|
| 6496 | +++ vim73/src/testdir/test68.ok 2011-01-08 21:01:18.806655841 -0500
|
---|
| 6497 | @@ -33,3 +33,6 @@
|
---|
| 6498 | #a b
|
---|
| 6499 | }
|
---|
| 6500 |
|
---|
| 6501 | +
|
---|
| 6502 | +{ 1aa ^^2bb }
|
---|
| 6503 | +
|
---|
| 6504 | diff -Naur vim73.orig/src/testdir/test74.in vim73/src/testdir/test74.in
|
---|
| 6505 | --- vim73.orig/src/testdir/test74.in 1969-12-31 19:00:00.000000000 -0500
|
---|
| 6506 | +++ vim73/src/testdir/test74.in 2011-01-08 21:01:18.878656504 -0500
|
---|
| 6507 | @@ -0,0 +1,36 @@
|
---|
| 6508 | +" Tests for storing global variables in the .viminfo file vim: set ft=vim:
|
---|
| 6509 | +
|
---|
| 6510 | +STARTTEST
|
---|
| 6511 | +:so small.vim
|
---|
| 6512 | +:" Do all test in a separate window to avoid E211 when we recursively
|
---|
| 6513 | +:" delete the Xfind directory during cleanup
|
---|
| 6514 | +:"
|
---|
| 6515 | +:" This will cause a few errors, do it silently.
|
---|
| 6516 | +:set visualbell
|
---|
| 6517 | +:set nocp viminfo+=!,nviminfo
|
---|
| 6518 | +:let MY_GLOBAL_DICT={'foo': 1, 'bar': 0, 'longvarible': 1000}
|
---|
| 6519 | +:" store a really long list, so line wrapping will occur in viminfo file
|
---|
| 6520 | +:let MY_GLOBAL_LIST=range(1,100)
|
---|
| 6521 | +:wv! Xviminfo
|
---|
| 6522 | +:unlet MY_GLOBAL_DICT
|
---|
| 6523 | +:unlet MY_GLOBAL_LIST
|
---|
| 6524 | +:rv! Xviminfo
|
---|
| 6525 | +:call delete('Xviminfo')
|
---|
| 6526 | +:if exists("MY_GLOBAL_DICT")
|
---|
| 6527 | +:redir >> test.out
|
---|
| 6528 | +:echo MY_GLOBAL_DICT
|
---|
| 6529 | +:redir end
|
---|
| 6530 | +:endif
|
---|
| 6531 | +:if exists("MY_GLOBAL_LIST")
|
---|
| 6532 | +:redir >> test.out
|
---|
| 6533 | +:echo MY_GLOBAL_LIST
|
---|
| 6534 | +:redir end
|
---|
| 6535 | +:endif
|
---|
| 6536 | +:redir >> test.out
|
---|
| 6537 | +:echo "foobar"
|
---|
| 6538 | +:redir end
|
---|
| 6539 | +:endif
|
---|
| 6540 | +:qa!
|
---|
| 6541 | +ENDTEST
|
---|
| 6542 | +
|
---|
| 6543 | +eof
|
---|
| 6544 | diff -Naur vim73.orig/src/testdir/test74.ok vim73/src/testdir/test74.ok
|
---|
| 6545 | --- vim73.orig/src/testdir/test74.ok 1969-12-31 19:00:00.000000000 -0500
|
---|
| 6546 | +++ vim73/src/testdir/test74.ok 2011-01-08 21:01:18.878656504 -0500
|
---|
| 6547 | @@ -0,0 +1,5 @@
|
---|
| 6548 | +
|
---|
| 6549 | +{'foo': 1, 'longvarible': 1000, 'bar': 0}
|
---|
| 6550 | +[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100]
|
---|
| 6551 | +
|
---|
| 6552 | +foobar
|
---|
| 6553 | diff -Naur vim73.orig/src/testdir/test75.in vim73/src/testdir/test75.in
|
---|
| 6554 | --- vim73.orig/src/testdir/test75.in 1969-12-31 19:00:00.000000000 -0500
|
---|
| 6555 | +++ vim73/src/testdir/test75.in 2011-01-08 21:01:18.918658776 -0500
|
---|
| 6556 | @@ -0,0 +1,16 @@
|
---|
| 6557 | +" Tests for functions.
|
---|
| 6558 | +
|
---|
| 6559 | +STARTTEST
|
---|
| 6560 | +:so small.vim
|
---|
| 6561 | +:" Test maparg() with a string result
|
---|
| 6562 | +:map foo<C-V> is<F4>foo
|
---|
| 6563 | +:vnoremap <script> <buffer> <expr> <silent> bar isbar
|
---|
| 6564 | +:call append('$', maparg('foo<C-V>'))
|
---|
| 6565 | +:call append('$', string(maparg('foo<C-V>', '', 0, 1)))
|
---|
| 6566 | +:call append('$', string(maparg('bar', '', 0, 1)))
|
---|
| 6567 | +:"
|
---|
| 6568 | +:/^eof/+1,$w! test.out
|
---|
| 6569 | +:qa!
|
---|
| 6570 | +ENDTEST
|
---|
| 6571 | +
|
---|
| 6572 | +eof
|
---|
| 6573 | diff -Naur vim73.orig/src/testdir/test75.ok vim73/src/testdir/test75.ok
|
---|
| 6574 | --- vim73.orig/src/testdir/test75.ok 1969-12-31 19:00:00.000000000 -0500
|
---|
| 6575 | +++ vim73/src/testdir/test75.ok 2011-01-08 21:01:18.918658776 -0500
|
---|
| 6576 | @@ -0,0 +1,3 @@
|
---|
| 6577 | +is<F4>foo
|
---|
| 6578 | +{'silent': 0, 'noremap': 0, 'lhs': 'foo<C-V>', 'mode': ' ', 'expr': 0, 'sid': 0, 'rhs': 'is<F4>foo', 'buffer': 0}
|
---|
| 6579 | +{'silent': 1, 'noremap': 1, 'lhs': 'bar', 'mode': 'v', 'expr': 1, 'sid': 0, 'rhs': 'isbar', 'buffer': 1}
|
---|
| 6580 | diff -Naur vim73.orig/src/testdir/test76.in vim73/src/testdir/test76.in
|
---|
| 6581 | --- vim73.orig/src/testdir/test76.in 1969-12-31 19:00:00.000000000 -0500
|
---|
| 6582 | +++ vim73/src/testdir/test76.in 2011-01-08 21:01:19.138657005 -0500
|
---|
| 6583 | @@ -0,0 +1,46 @@
|
---|
| 6584 | +Tests for completefunc/omnifunc. vim: set ft=vim :
|
---|
| 6585 | +
|
---|
| 6586 | +STARTTEST
|
---|
| 6587 | +:"Test that nothing happens if the 'completefunc' opens
|
---|
| 6588 | +:"a new window (no completion, no crash)
|
---|
| 6589 | +:so small.vim
|
---|
| 6590 | +:function! DummyCompleteOne(findstart, base)
|
---|
| 6591 | +: if a:findstart
|
---|
| 6592 | +: return 0
|
---|
| 6593 | +: else
|
---|
| 6594 | +: wincmd n
|
---|
| 6595 | +: return ['onedef', 'oneDEF']
|
---|
| 6596 | +: endif
|
---|
| 6597 | +:endfunction
|
---|
| 6598 | +:setlocal completefunc=DummyCompleteOne
|
---|
| 6599 | +/^one
|
---|
| 6600 | +A:q!
|
---|
| 6601 | +:function! DummyCompleteTwo(findstart, base)
|
---|
| 6602 | +: if a:findstart
|
---|
| 6603 | +: wincmd n
|
---|
| 6604 | +: return 0
|
---|
| 6605 | +: else
|
---|
| 6606 | +: return ['twodef', 'twoDEF']
|
---|
| 6607 | +: endif
|
---|
| 6608 | +:endfunction
|
---|
| 6609 | +:setlocal completefunc=DummyCompleteTwo
|
---|
| 6610 | +/^two
|
---|
| 6611 | +A:q!
|
---|
| 6612 | +:"Test that 'completefunc' works when it's OK.
|
---|
| 6613 | +:function! DummyCompleteThree(findstart, base)
|
---|
| 6614 | +: if a:findstart
|
---|
| 6615 | +: return 0
|
---|
| 6616 | +: else
|
---|
| 6617 | +: return ['threedef', 'threeDEF']
|
---|
| 6618 | +: endif
|
---|
| 6619 | +:endfunction
|
---|
| 6620 | +:setlocal completefunc=DummyCompleteThree
|
---|
| 6621 | +/^three
|
---|
| 6622 | +A:/^+++/,/^three/w! test.out
|
---|
| 6623 | +:qa!
|
---|
| 6624 | +ENDTEST
|
---|
| 6625 | +
|
---|
| 6626 | ++++
|
---|
| 6627 | +one
|
---|
| 6628 | +two
|
---|
| 6629 | +three
|
---|
| 6630 | diff -Naur vim73.orig/src/testdir/test76.ok vim73/src/testdir/test76.ok
|
---|
| 6631 | --- vim73.orig/src/testdir/test76.ok 1969-12-31 19:00:00.000000000 -0500
|
---|
| 6632 | +++ vim73/src/testdir/test76.ok 2011-01-08 21:01:19.142655736 -0500
|
---|
| 6633 | @@ -0,0 +1,4 @@
|
---|
| 6634 | ++++
|
---|
| 6635 | +
|
---|
| 6636 | +two
|
---|
| 6637 | +threeDEF
|
---|
| 6638 | diff -Naur vim73.orig/src/ui.c vim73/src/ui.c
|
---|
| 6639 | --- vim73.orig/src/ui.c 2010-08-08 09:17:30.000000000 -0400
|
---|
| 6640 | +++ vim73/src/ui.c 2011-01-08 21:01:18.766656221 -0500
|
---|
| 6641 | @@ -469,7 +469,7 @@
|
---|
| 6642 | */
|
---|
| 6643 | #ifdef FEAT_X11
|
---|
| 6644 | /* Always own the selection, we might have lost it without being
|
---|
| 6645 | - * notified. */
|
---|
| 6646 | + * notified, e.g. during a ":sh" command. */
|
---|
| 6647 | if (cbd->available)
|
---|
| 6648 | {
|
---|
| 6649 | int was_owned = cbd->owned;
|
---|
| 6650 | @@ -1944,10 +1944,9 @@
|
---|
| 6651 | */
|
---|
| 6652 |
|
---|
| 6653 | static Boolean clip_x11_convert_selection_cb __ARGS((Widget, Atom *, Atom *, Atom *, XtPointer *, long_u *, int *));
|
---|
| 6654 | -
|
---|
| 6655 | static void clip_x11_lose_ownership_cb __ARGS((Widget, Atom *));
|
---|
| 6656 | -
|
---|
| 6657 | static void clip_x11_timestamp_cb __ARGS((Widget w, XtPointer n, XEvent *event, Boolean *cont));
|
---|
| 6658 | +static void clip_x11_request_selection_cb __ARGS((Widget, XtPointer, Atom *, Atom *, XtPointer, long_u *, int *));
|
---|
| 6659 |
|
---|
| 6660 | /*
|
---|
| 6661 | * Property callback to get a timestamp for XtOwnSelection.
|
---|
| 6662 | @@ -1985,8 +1984,17 @@
|
---|
| 6663 | return;
|
---|
| 6664 |
|
---|
| 6665 | /* Get the selection, using the event timestamp. */
|
---|
| 6666 | - XtOwnSelection(w, xproperty->atom, xproperty->time,
|
---|
| 6667 | - clip_x11_convert_selection_cb, clip_x11_lose_ownership_cb, NULL);
|
---|
| 6668 | + if (XtOwnSelection(w, xproperty->atom, xproperty->time,
|
---|
| 6669 | + clip_x11_convert_selection_cb, clip_x11_lose_ownership_cb,
|
---|
| 6670 | + NULL) == OK)
|
---|
| 6671 | + {
|
---|
| 6672 | + /* Set the "owned" flag now, there may have been a call to
|
---|
| 6673 | + * lose_ownership_cb in between. */
|
---|
| 6674 | + if (xproperty->atom == clip_plus.sel_atom)
|
---|
| 6675 | + clip_plus.owned = TRUE;
|
---|
| 6676 | + else
|
---|
| 6677 | + clip_star.owned = TRUE;
|
---|
| 6678 | + }
|
---|
| 6679 | }
|
---|
| 6680 |
|
---|
| 6681 | void
|
---|
| 6682 | @@ -1997,8 +2005,6 @@
|
---|
| 6683 | /*(XtEventHandler)*/clip_x11_timestamp_cb, (XtPointer)NULL);
|
---|
| 6684 | }
|
---|
| 6685 |
|
---|
| 6686 | -static void clip_x11_request_selection_cb __ARGS((Widget, XtPointer, Atom *, Atom *, XtPointer, long_u *, int *));
|
---|
| 6687 | -
|
---|
| 6688 | static void
|
---|
| 6689 | clip_x11_request_selection_cb(w, success, sel_atom, type, value, length,
|
---|
| 6690 | format)
|
---|
| 6691 | @@ -2336,7 +2342,7 @@
|
---|
| 6692 |
|
---|
| 6693 | void
|
---|
| 6694 | clip_x11_lose_selection(myShell, cbd)
|
---|
| 6695 | - Widget myShell;
|
---|
| 6696 | + Widget myShell;
|
---|
| 6697 | VimClipboard *cbd;
|
---|
| 6698 | {
|
---|
| 6699 | XtDisownSelection(myShell, cbd->sel_atom, CurrentTime);
|
---|
| 6700 | @@ -2344,14 +2350,29 @@
|
---|
| 6701 |
|
---|
| 6702 | int
|
---|
| 6703 | clip_x11_own_selection(myShell, cbd)
|
---|
| 6704 | - Widget myShell;
|
---|
| 6705 | + Widget myShell;
|
---|
| 6706 | VimClipboard *cbd;
|
---|
| 6707 | {
|
---|
| 6708 | - /* Get the time by a zero-length append, clip_x11_timestamp_cb will be
|
---|
| 6709 | - * called with the current timestamp. */
|
---|
| 6710 | - if (!XChangeProperty(XtDisplay(myShell), XtWindow(myShell), cbd->sel_atom,
|
---|
| 6711 | - timestamp_atom, 32, PropModeAppend, NULL, 0))
|
---|
| 6712 | + /* When using the GUI we have proper timestamps, use the one of the last
|
---|
| 6713 | + * event. When in the console we don't get events (the terminal gets
|
---|
| 6714 | + * them), Get the time by a zero-length append, clip_x11_timestamp_cb will
|
---|
| 6715 | + * be called with the current timestamp. */
|
---|
| 6716 | +#ifdef FEAT_GUI
|
---|
| 6717 | + if (gui.in_use)
|
---|
| 6718 | + {
|
---|
| 6719 | + if (XtOwnSelection(myShell, cbd->sel_atom,
|
---|
| 6720 | + XtLastTimestampProcessed(XtDisplay(myShell)),
|
---|
| 6721 | + clip_x11_convert_selection_cb, clip_x11_lose_ownership_cb,
|
---|
| 6722 | + NULL) == False)
|
---|
| 6723 | return FAIL;
|
---|
| 6724 | + }
|
---|
| 6725 | + else
|
---|
| 6726 | +#endif
|
---|
| 6727 | + {
|
---|
| 6728 | + if (!XChangeProperty(XtDisplay(myShell), XtWindow(myShell),
|
---|
| 6729 | + cbd->sel_atom, timestamp_atom, 32, PropModeAppend, NULL, 0))
|
---|
| 6730 | + return FAIL;
|
---|
| 6731 | + }
|
---|
| 6732 | /* Flush is required in a terminal as nothing else is doing it. */
|
---|
| 6733 | XFlush(XtDisplay(myShell));
|
---|
| 6734 | return OK;
|
---|
| 6735 | diff -Naur vim73.orig/src/undo.c vim73/src/undo.c
|
---|
| 6736 | --- vim73.orig/src/undo.c 2010-08-07 06:48:15.000000000 -0400
|
---|
| 6737 | +++ vim73/src/undo.c 2011-01-08 21:01:19.386656778 -0500
|
---|
| 6738 | @@ -81,10 +81,6 @@
|
---|
| 6739 | #define UH_MAGIC 0x18dade /* value for uh_magic when in use */
|
---|
| 6740 | #define UE_MAGIC 0xabc123 /* value for ue_magic when in use */
|
---|
| 6741 |
|
---|
| 6742 | -#if defined(MSDOS) || defined(WIN16) || defined(WIN32) || defined(_WIN64)
|
---|
| 6743 | -# include "vimio.h" /* for vim_read(), must be before vim.h */
|
---|
| 6744 | -#endif
|
---|
| 6745 | -
|
---|
| 6746 | #include "vim.h"
|
---|
| 6747 |
|
---|
| 6748 | static void u_unch_branch __ARGS((u_header_T *uhp));
|
---|
| 6749 | @@ -1386,7 +1382,7 @@
|
---|
| 6750 | char_u mbuf[UF_START_MAGIC_LEN];
|
---|
| 6751 | int len;
|
---|
| 6752 |
|
---|
| 6753 | - len = vim_read(fd, mbuf, UF_START_MAGIC_LEN);
|
---|
| 6754 | + len = read_eintr(fd, mbuf, UF_START_MAGIC_LEN);
|
---|
| 6755 | close(fd);
|
---|
| 6756 | if (len < UF_START_MAGIC_LEN
|
---|
| 6757 | || memcmp(mbuf, UF_START_MAGIC, UF_START_MAGIC_LEN) != 0)
|
---|
| 6758 | @@ -1861,6 +1857,7 @@
|
---|
| 6759 | curbuf->b_u_seq_cur = seq_cur;
|
---|
| 6760 | curbuf->b_u_time_cur = seq_time;
|
---|
| 6761 | curbuf->b_u_save_nr_last = last_save_nr;
|
---|
| 6762 | + curbuf->b_u_save_nr_cur = last_save_nr;
|
---|
| 6763 |
|
---|
| 6764 | curbuf->b_u_synced = TRUE;
|
---|
| 6765 | vim_free(uhp_table);
|
---|
| 6766 | @@ -2794,7 +2791,7 @@
|
---|
| 6767 | uhp->uh_time);
|
---|
| 6768 | if (uhp->uh_save_nr > 0)
|
---|
| 6769 | {
|
---|
| 6770 | - while (STRLEN(IObuff) < 32)
|
---|
| 6771 | + while (STRLEN(IObuff) < 33)
|
---|
| 6772 | STRCAT(IObuff, " ");
|
---|
| 6773 | vim_snprintf_add((char *)IObuff, IOSIZE,
|
---|
| 6774 | " %3ld", uhp->uh_save_nr);
|
---|
| 6775 | @@ -2849,7 +2846,7 @@
|
---|
| 6776 | sort_strings((char_u **)ga.ga_data, ga.ga_len);
|
---|
| 6777 |
|
---|
| 6778 | msg_start();
|
---|
| 6779 | - msg_puts_attr((char_u *)_("number changes time saved"),
|
---|
| 6780 | + msg_puts_attr((char_u *)_("number changes when saved"),
|
---|
| 6781 | hl_attr(HLF_T));
|
---|
| 6782 | for (i = 0; i < ga.ga_len && !got_int; ++i)
|
---|
| 6783 | {
|
---|
| 6784 | @@ -2879,7 +2876,15 @@
|
---|
| 6785 | if (time(NULL) - tt >= 100)
|
---|
| 6786 | {
|
---|
| 6787 | curtime = localtime(&tt);
|
---|
| 6788 | - (void)strftime((char *)buf, buflen, "%H:%M:%S", curtime);
|
---|
| 6789 | + if (time(NULL) - tt < (60L * 60L * 12L))
|
---|
| 6790 | + /* within 12 hours */
|
---|
| 6791 | + (void)strftime((char *)buf, buflen, "%H:%M:%S", curtime);
|
---|
| 6792 | + else if (time(NULL) - tt < (60L * 60L * 24L * 180L))
|
---|
| 6793 | + /* within 6 months */
|
---|
| 6794 | + (void)strftime((char *)buf, buflen, "%m/%d %H:%M:%S", curtime);
|
---|
| 6795 | + else
|
---|
| 6796 | + /* long ago */
|
---|
| 6797 | + (void)strftime((char *)buf, buflen, "%y/%m/%d %H:%M:%S", curtime);
|
---|
| 6798 | }
|
---|
| 6799 | else
|
---|
| 6800 | #endif
|
---|
| 6801 | diff -Naur vim73.orig/src/version.c vim73/src/version.c
|
---|
| 6802 | --- vim73.orig/src/version.c 2010-08-01 09:45:48.000000000 -0400
|
---|
| 6803 | +++ vim73/src/version.c 2011-01-08 21:01:19.514657428 -0500
|
---|
| 6804 | @@ -715,6 +715,204 @@
|
---|
| 6805 | static int included_patches[] =
|
---|
| 6806 | { /* Add new patch number below this line */
|
---|
| 6807 | /**/
|
---|
| 6808 | + 99,
|
---|
| 6809 | +/**/
|
---|
| 6810 | + 98,
|
---|
| 6811 | +/**/
|
---|
| 6812 | + 97,
|
---|
| 6813 | +/**/
|
---|
| 6814 | + 96,
|
---|
| 6815 | +/**/
|
---|
| 6816 | + 95,
|
---|
| 6817 | +/**/
|
---|
| 6818 | + 94,
|
---|
| 6819 | +/**/
|
---|
| 6820 | + 93,
|
---|
| 6821 | +/**/
|
---|
| 6822 | + 92,
|
---|
| 6823 | +/**/
|
---|
| 6824 | + 91,
|
---|
| 6825 | +/**/
|
---|
| 6826 | + 90,
|
---|
| 6827 | +/**/
|
---|
| 6828 | + 89,
|
---|
| 6829 | +/**/
|
---|
| 6830 | + 88,
|
---|
| 6831 | +/**/
|
---|
| 6832 | + 87,
|
---|
| 6833 | +/**/
|
---|
| 6834 | + 86,
|
---|
| 6835 | +/**/
|
---|
| 6836 | + 85,
|
---|
| 6837 | +/**/
|
---|
| 6838 | + 84,
|
---|
| 6839 | +/**/
|
---|
| 6840 | + 83,
|
---|
| 6841 | +/**/
|
---|
| 6842 | + 82,
|
---|
| 6843 | +/**/
|
---|
| 6844 | + 81,
|
---|
| 6845 | +/**/
|
---|
| 6846 | + 80,
|
---|
| 6847 | +/**/
|
---|
| 6848 | + 79,
|
---|
| 6849 | +/**/
|
---|
| 6850 | + 78,
|
---|
| 6851 | +/**/
|
---|
| 6852 | + 77,
|
---|
| 6853 | +/**/
|
---|
| 6854 | + 76,
|
---|
| 6855 | +/**/
|
---|
| 6856 | + 75,
|
---|
| 6857 | +/**/
|
---|
| 6858 | + 74,
|
---|
| 6859 | +/**/
|
---|
| 6860 | + 73,
|
---|
| 6861 | +/**/
|
---|
| 6862 | + 72,
|
---|
| 6863 | +/**/
|
---|
| 6864 | + 71,
|
---|
| 6865 | +/**/
|
---|
| 6866 | + 70,
|
---|
| 6867 | +/**/
|
---|
| 6868 | + 69,
|
---|
| 6869 | +/**/
|
---|
| 6870 | + 68,
|
---|
| 6871 | +/**/
|
---|
| 6872 | + 67,
|
---|
| 6873 | +/**/
|
---|
| 6874 | + 66,
|
---|
| 6875 | +/**/
|
---|
| 6876 | + 65,
|
---|
| 6877 | +/**/
|
---|
| 6878 | + 64,
|
---|
| 6879 | +/**/
|
---|
| 6880 | + 63,
|
---|
| 6881 | +/**/
|
---|
| 6882 | + 62,
|
---|
| 6883 | +/**/
|
---|
| 6884 | + 61,
|
---|
| 6885 | +/**/
|
---|
| 6886 | + 60,
|
---|
| 6887 | +/**/
|
---|
| 6888 | + 59,
|
---|
| 6889 | +/**/
|
---|
| 6890 | + 58,
|
---|
| 6891 | +/**/
|
---|
| 6892 | + 57,
|
---|
| 6893 | +/**/
|
---|
| 6894 | + 56,
|
---|
| 6895 | +/**/
|
---|
| 6896 | + 55,
|
---|
| 6897 | +/**/
|
---|
| 6898 | + 54,
|
---|
| 6899 | +/**/
|
---|
| 6900 | + 53,
|
---|
| 6901 | +/**/
|
---|
| 6902 | + 52,
|
---|
| 6903 | +/**/
|
---|
| 6904 | + 51,
|
---|
| 6905 | +/**/
|
---|
| 6906 | + 50,
|
---|
| 6907 | +/**/
|
---|
| 6908 | + 49,
|
---|
| 6909 | +/**/
|
---|
| 6910 | + 48,
|
---|
| 6911 | +/**/
|
---|
| 6912 | + 47,
|
---|
| 6913 | +/**/
|
---|
| 6914 | + 46,
|
---|
| 6915 | +/**/
|
---|
| 6916 | + 45,
|
---|
| 6917 | +/**/
|
---|
| 6918 | + 44,
|
---|
| 6919 | +/**/
|
---|
| 6920 | + 43,
|
---|
| 6921 | +/**/
|
---|
| 6922 | + 42,
|
---|
| 6923 | +/**/
|
---|
| 6924 | + 41,
|
---|
| 6925 | +/**/
|
---|
| 6926 | + 40,
|
---|
| 6927 | +/**/
|
---|
| 6928 | + 39,
|
---|
| 6929 | +/**/
|
---|
| 6930 | + 38,
|
---|
| 6931 | +/**/
|
---|
| 6932 | + 37,
|
---|
| 6933 | +/**/
|
---|
| 6934 | + 36,
|
---|
| 6935 | +/**/
|
---|
| 6936 | + 35,
|
---|
| 6937 | +/**/
|
---|
| 6938 | + 34,
|
---|
| 6939 | +/**/
|
---|
| 6940 | + 33,
|
---|
| 6941 | +/**/
|
---|
| 6942 | + 32,
|
---|
| 6943 | +/**/
|
---|
| 6944 | + 31,
|
---|
| 6945 | +/**/
|
---|
| 6946 | + 30,
|
---|
| 6947 | +/**/
|
---|
| 6948 | + 29,
|
---|
| 6949 | +/**/
|
---|
| 6950 | + 28,
|
---|
| 6951 | +/**/
|
---|
| 6952 | + 27,
|
---|
| 6953 | +/**/
|
---|
| 6954 | + 26,
|
---|
| 6955 | +/**/
|
---|
| 6956 | + 25,
|
---|
| 6957 | +/**/
|
---|
| 6958 | + 24,
|
---|
| 6959 | +/**/
|
---|
| 6960 | + 23,
|
---|
| 6961 | +/**/
|
---|
| 6962 | + 22,
|
---|
| 6963 | +/**/
|
---|
| 6964 | + 21,
|
---|
| 6965 | +/**/
|
---|
| 6966 | + 20,
|
---|
| 6967 | +/**/
|
---|
| 6968 | + 19,
|
---|
| 6969 | +/**/
|
---|
| 6970 | + 18,
|
---|
| 6971 | +/**/
|
---|
| 6972 | + 17,
|
---|
| 6973 | +/**/
|
---|
| 6974 | + 16,
|
---|
| 6975 | +/**/
|
---|
| 6976 | + 15,
|
---|
| 6977 | +/**/
|
---|
| 6978 | + 14,
|
---|
| 6979 | +/**/
|
---|
| 6980 | + 13,
|
---|
| 6981 | +/**/
|
---|
| 6982 | + 12,
|
---|
| 6983 | +/**/
|
---|
| 6984 | + 11,
|
---|
| 6985 | +/**/
|
---|
| 6986 | + 10,
|
---|
| 6987 | +/**/
|
---|
| 6988 | + 9,
|
---|
| 6989 | +/**/
|
---|
| 6990 | + 8,
|
---|
| 6991 | +/**/
|
---|
| 6992 | + 7,
|
---|
| 6993 | +/**/
|
---|
| 6994 | + 6,
|
---|
| 6995 | +/**/
|
---|
| 6996 | + 5,
|
---|
| 6997 | +/**/
|
---|
| 6998 | + 4,
|
---|
| 6999 | +/**/
|
---|
| 7000 | + 3,
|
---|
| 7001 | +/**/
|
---|
| 7002 | + 2,
|
---|
| 7003 | +/**/
|
---|
| 7004 | + 1,
|
---|
| 7005 | +/**/
|
---|
| 7006 | 0
|
---|
| 7007 | };
|
---|
| 7008 |
|
---|
| 7009 | @@ -1262,9 +1460,9 @@
|
---|
| 7010 | if (highest_patch())
|
---|
| 7011 | {
|
---|
| 7012 | /* Check for 9.9x or 9.9xx, alpha/beta version */
|
---|
| 7013 | - if (isalpha((int)mediumVersion[3]))
|
---|
| 7014 | + if (isalpha((int)vers[3]))
|
---|
| 7015 | {
|
---|
| 7016 | - if (isalpha((int)mediumVersion[4]))
|
---|
| 7017 | + if (isalpha((int)vers[4]))
|
---|
| 7018 | sprintf((char *)vers + 5, ".%d%s", highest_patch(),
|
---|
| 7019 | mediumVersion + 5);
|
---|
| 7020 | else
|
---|
| 7021 | diff -Naur vim73.orig/src/vim.h vim73/src/vim.h
|
---|
| 7022 | --- vim73.orig/src/vim.h 2010-07-29 14:46:39.000000000 -0400
|
---|
| 7023 | +++ vim73/src/vim.h 2011-01-08 21:01:19.466658112 -0500
|
---|
| 7024 | @@ -27,6 +27,11 @@
|
---|
| 7025 | # endif
|
---|
| 7026 | #endif
|
---|
| 7027 |
|
---|
| 7028 | +#if defined(MSDOS) || defined(WIN16) || defined(WIN32) || defined(_WIN64) \
|
---|
| 7029 | + || defined(__EMX__)
|
---|
| 7030 | +# include "vimio.h"
|
---|
| 7031 | +#endif
|
---|
| 7032 | +
|
---|
| 7033 | /* ============ the header file puzzle (ca. 50-100 pieces) ========= */
|
---|
| 7034 |
|
---|
| 7035 | #ifdef HAVE_CONFIG_H /* GNU autoconf (or something else) was here */
|
---|
| 7036 | @@ -192,8 +197,8 @@
|
---|
| 7037 | #endif
|
---|
| 7038 |
|
---|
| 7039 | #ifdef NO_X11_INCLUDES
|
---|
| 7040 | - /* In os_mac_conv.c NO_X11_INCLUDES is defined to avoid X11 headers.
|
---|
| 7041 | - * Disable all X11 related things to avoid conflicts. */
|
---|
| 7042 | + /* In os_mac_conv.c and os_macosx.m NO_X11_INCLUDES is defined to avoid
|
---|
| 7043 | + * X11 headers. Disable all X11 related things to avoid conflicts. */
|
---|
| 7044 | # ifdef FEAT_X11
|
---|
| 7045 | # undef FEAT_X11
|
---|
| 7046 | # endif
|
---|
| 7047 | @@ -475,6 +480,11 @@
|
---|
| 7048 | # include <sys/stat.h>
|
---|
| 7049 | #endif
|
---|
| 7050 |
|
---|
| 7051 | +#if defined(HAVE_ERRNO_H) || defined(DJGPP) || defined(WIN16) \
|
---|
| 7052 | + || defined(WIN32) || defined(_WIN64) || defined(__EMX__)
|
---|
| 7053 | +# include <errno.h>
|
---|
| 7054 | +#endif
|
---|
| 7055 | +
|
---|
| 7056 | /*
|
---|
| 7057 | * Allow other (non-unix) systems to configure themselves now
|
---|
| 7058 | * These are also in os_unix.h, because osdef.sh needs them there.
|
---|
| 7059 | @@ -798,6 +808,7 @@
|
---|
| 7060 | #define WILD_KEEP_ALL 32
|
---|
| 7061 | #define WILD_SILENT 64
|
---|
| 7062 | #define WILD_ESCAPE 128
|
---|
| 7063 | +#define WILD_ICASE 256
|
---|
| 7064 |
|
---|
| 7065 | /* Flags for expand_wildcards() */
|
---|
| 7066 | #define EW_DIR 0x01 /* include directory names */
|
---|
| 7067 | @@ -808,6 +819,7 @@
|
---|
| 7068 | #define EW_SILENT 0x20 /* don't print "1 returned" from shell */
|
---|
| 7069 | #define EW_EXEC 0x40 /* executable files */
|
---|
| 7070 | #define EW_PATH 0x80 /* search in 'path' too */
|
---|
| 7071 | +#define EW_ICASE 0x100 /* ignore case */
|
---|
| 7072 | /* Note: mostly EW_NOTFOUND and EW_SILENT are mutually exclusive: EW_NOTFOUND
|
---|
| 7073 | * is used when executing commands and EW_SILENT for interactive expanding. */
|
---|
| 7074 |
|
---|
| 7075 | @@ -1640,6 +1652,11 @@
|
---|
| 7076 | # define USE_INPUT_BUF
|
---|
| 7077 | #endif
|
---|
| 7078 |
|
---|
| 7079 | +#ifndef EINTR
|
---|
| 7080 | +# define read_eintr(fd, buf, count) vim_read((fd), (buf), (count))
|
---|
| 7081 | +# define write_eintr(fd, buf, count) vim_write((fd), (buf), (count))
|
---|
| 7082 | +#endif
|
---|
| 7083 | +
|
---|
| 7084 | #ifdef MSWIN
|
---|
| 7085 | /* On MS-Windows the third argument isn't size_t. This matters for Win64,
|
---|
| 7086 | * where sizeof(size_t)==8, not 4 */
|
---|
| 7087 | @@ -1842,7 +1859,8 @@
|
---|
| 7088 | #define VV_OP 52
|
---|
| 7089 | #define VV_SEARCHFORWARD 53
|
---|
| 7090 | #define VV_OLDFILES 54
|
---|
| 7091 | -#define VV_LEN 55 /* number of v: vars */
|
---|
| 7092 | +#define VV_WINDOWID 55
|
---|
| 7093 | +#define VV_LEN 56 /* number of v: vars */
|
---|
| 7094 |
|
---|
| 7095 | #ifdef FEAT_CLIPBOARD
|
---|
| 7096 |
|
---|
| 7097 | @@ -2193,4 +2211,8 @@
|
---|
| 7098 | #define MSCR_LEFT -1
|
---|
| 7099 | #define MSCR_RIGHT -2
|
---|
| 7100 |
|
---|
| 7101 | +#define KEYLEN_PART_KEY -1 /* keylen value for incomplete key-code */
|
---|
| 7102 | +#define KEYLEN_PART_MAP -2 /* keylen value for incomplete mapping */
|
---|
| 7103 | +#define KEYLEN_REMOVED 9999 /* keylen value for removed sequence */
|
---|
| 7104 | +
|
---|
| 7105 | #endif /* VIM__H */
|
---|
| 7106 | diff -Naur vim73.orig/src/window.c vim73/src/window.c
|
---|
| 7107 | --- vim73.orig/src/window.c 2010-07-20 16:23:49.000000000 -0400
|
---|
| 7108 | +++ vim73/src/window.c 2011-01-08 21:01:19.514657428 -0500
|
---|
| 7109 | @@ -70,7 +70,8 @@
|
---|
| 7110 | #endif /* FEAT_WINDOWS */
|
---|
| 7111 |
|
---|
| 7112 | static win_T *win_alloc __ARGS((win_T *after, int hidden));
|
---|
| 7113 | -static void win_new_height __ARGS((win_T *, int));
|
---|
| 7114 | +static void set_fraction __ARGS((win_T *wp));
|
---|
| 7115 | +static void win_new_height __ARGS((win_T *wp, int height));
|
---|
| 7116 |
|
---|
| 7117 | #define URL_SLASH 1 /* path_is_url() has found "://" */
|
---|
| 7118 | #define URL_BACKSLASH 2 /* path_is_url() has found ":\\" */
|
---|
| 7119 | @@ -525,9 +526,7 @@
|
---|
| 7120 | setpcmark();
|
---|
| 7121 | if (win_split(0, 0) == OK)
|
---|
| 7122 | {
|
---|
| 7123 | -# ifdef FEAT_SCROLLBIND
|
---|
| 7124 | - curwin->w_p_scb = FALSE;
|
---|
| 7125 | -# endif
|
---|
| 7126 | + RESET_BINDING(curwin);
|
---|
| 7127 | (void)do_ecmd(0, ptr, NULL, NULL, ECMD_LASTL,
|
---|
| 7128 | ECMD_HIDE, NULL);
|
---|
| 7129 | if (nchar == 'F' && lnum >= 0)
|
---|
| 7130 | @@ -985,10 +984,17 @@
|
---|
| 7131 | else
|
---|
| 7132 | frame_append(curfrp, frp);
|
---|
| 7133 |
|
---|
| 7134 | + /* Set w_fraction now so that the cursor keeps the same relative
|
---|
| 7135 | + * vertical position. */
|
---|
| 7136 | + if (oldwin->w_height > 0)
|
---|
| 7137 | + set_fraction(oldwin);
|
---|
| 7138 | + wp->w_fraction = oldwin->w_fraction;
|
---|
| 7139 | +
|
---|
| 7140 | #ifdef FEAT_VERTSPLIT
|
---|
| 7141 | if (flags & WSP_VERT)
|
---|
| 7142 | {
|
---|
| 7143 | wp->w_p_scr = curwin->w_p_scr;
|
---|
| 7144 | +
|
---|
| 7145 | if (need_status)
|
---|
| 7146 | {
|
---|
| 7147 | win_new_height(oldwin, oldwin->w_height - 1);
|
---|
| 7148 | @@ -3277,9 +3283,7 @@
|
---|
| 7149 | if (aucmd_win != NULL)
|
---|
| 7150 | {
|
---|
| 7151 | win_init_some(aucmd_win, curwin);
|
---|
| 7152 | -# ifdef FEAT_SCROLLBIND
|
---|
| 7153 | - aucmd_win->w_p_scb = FALSE;
|
---|
| 7154 | -# endif
|
---|
| 7155 | + RESET_BINDING(aucmd_win);
|
---|
| 7156 | new_frame(aucmd_win);
|
---|
| 7157 | }
|
---|
| 7158 | }
|
---|
| 7159 | @@ -3320,10 +3324,8 @@
|
---|
| 7160 | /* First window in new tab page, initialize it from "oldwin". */
|
---|
| 7161 | win_init(curwin, oldwin, 0);
|
---|
| 7162 |
|
---|
| 7163 | -# ifdef FEAT_SCROLLBIND
|
---|
| 7164 | - /* We don't want scroll-binding in the first window. */
|
---|
| 7165 | - curwin->w_p_scb = FALSE;
|
---|
| 7166 | -# endif
|
---|
| 7167 | + /* We don't want cursor- and scroll-binding in the first window. */
|
---|
| 7168 | + RESET_BINDING(curwin);
|
---|
| 7169 | }
|
---|
| 7170 | #endif
|
---|
| 7171 |
|
---|
| 7172 | @@ -5459,6 +5461,19 @@
|
---|
| 7173 |
|
---|
| 7174 | #endif /* FEAT_WINDOWS */
|
---|
| 7175 |
|
---|
| 7176 | +#define FRACTION_MULT 16384L
|
---|
| 7177 | +
|
---|
| 7178 | +/*
|
---|
| 7179 | + * Set wp->w_fraction for the current w_wrow and w_height.
|
---|
| 7180 | + */
|
---|
| 7181 | + static void
|
---|
| 7182 | +set_fraction(wp)
|
---|
| 7183 | + win_T *wp;
|
---|
| 7184 | +{
|
---|
| 7185 | + wp->w_fraction = ((long)wp->w_wrow * FRACTION_MULT
|
---|
| 7186 | + + FRACTION_MULT / 2) / (long)wp->w_height;
|
---|
| 7187 | +}
|
---|
| 7188 | +
|
---|
| 7189 | /*
|
---|
| 7190 | * Set the height of a window.
|
---|
| 7191 | * This takes care of the things inside the window, not what happens to the
|
---|
| 7192 | @@ -5471,7 +5486,6 @@
|
---|
| 7193 | {
|
---|
| 7194 | linenr_T lnum;
|
---|
| 7195 | int sline, line_size;
|
---|
| 7196 | -#define FRACTION_MULT 16384L
|
---|
| 7197 |
|
---|
| 7198 | /* Don't want a negative height. Happens when splitting a tiny window.
|
---|
| 7199 | * Will equalize heights soon to fix it. */
|
---|
| 7200 | @@ -5481,8 +5495,7 @@
|
---|
| 7201 | return; /* nothing to do */
|
---|
| 7202 |
|
---|
| 7203 | if (wp->w_wrow != wp->w_prev_fraction_row && wp->w_height > 0)
|
---|
| 7204 | - wp->w_fraction = ((long)wp->w_wrow * FRACTION_MULT
|
---|
| 7205 | - + FRACTION_MULT / 2) / (long)wp->w_height;
|
---|
| 7206 | + set_fraction(wp);
|
---|
| 7207 |
|
---|
| 7208 | wp->w_height = height;
|
---|
| 7209 | wp->w_skipcol = 0;
|
---|
| 7210 | diff -Naur vim73.orig/src/workshop.c vim73/src/workshop.c
|
---|
| 7211 | --- vim73.orig/src/workshop.c 2010-08-08 09:18:24.000000000 -0400
|
---|
| 7212 | +++ vim73/src/workshop.c 2011-01-08 21:01:19.438656953 -0500
|
---|
| 7213 | @@ -16,7 +16,6 @@
|
---|
| 7214 | #include <sys/types.h>
|
---|
| 7215 | #include <netdb.h>
|
---|
| 7216 | #include <netinet/in.h>
|
---|
| 7217 | -#include <errno.h>
|
---|
| 7218 | #include <sys/socket.h>
|
---|
| 7219 | #ifdef HAVE_LIBGEN_H
|
---|
| 7220 | # include <libgen.h>
|
---|